Witajcie, to znowu ja i kolejny problem,
jeden problem pomógł mi rozwiązać FD_GODPL, lecz jest jeszcze drugi problem nad którym się męczę i nie potrafię nic wykminić.
Problem jest następujący:
Po uderzeniu paralizatorem gracza TT - zamraża go i tworzy na nim poświatę niebieską przez 10 sek. (gitara tak ma być) lecz w trakcie trwania tych 10 sekund nie wiem jak zablokować graczowi "sparaliżowanemu" wszystkie akcje, typu uderzenie, obrót kamery, podskoki, kucanie. Jak go po prostu unieruchomić na te 10 sekund.
Oto kod:
#include <amxmodx> #include <fakemeta> #include <fun> #include <hamsandwich> new g_iMaxPlayers; #define IsPlayer(%1) (1 <= %1 <= g_iMaxPlayers) new g_iCzas[33]; new Paraliz; #define SetParaliz(%1) (Paraliz |= (1<<(%1-1))) #define CheckParaliz(%1) (Paraliz & (1<<(%1-1))) #define RemoveParaliz(%1) (Paraliz &= ~(1<<(%1-1))) public plugin_init() { register_plugin("Paralizator", "1.0.0", "Eferen"); RegisterHam(Ham_TakeDamage, "player", "fwTakeDamage"); RegisterHam(Ham_Item_Deploy, "weapon_knife", "Item_Deploy", 1); RegisterHam(Ham_Killed, "player", "Death", 1); register_event("CurWeapon", "CurWeapon_event", "be", "1=1"); g_iMaxPlayers = get_maxplayers(); } public CurWeapon_event(id) { if(CheckParaliz(id)) set_user_maxspeed(id, 0.1); } public Death(id, killer, shouldgib) { if(task_exists(id)) { RemoveParaliz(id); remove_task(id); } } public plugin_precache() { precache_model("models/v_paralizator.mdl"); precache_model("models/v_paralizator2.mdl"); } public Item_Deploy(wpn) { static iOwner; iOwner = pev(wpn, pev_owner); if(!IsPlayer(iOwner)) return HAM_IGNORED; if(get_user_team(iOwner) == 2) { set_pev(iOwner, pev_viewmodel2, "models/v_paralizator.mdl"); set_pev(iOwner, pev_weaponmodel2, "models/v_paralizator2.mdl"); } return HAM_IGNORED } public client_disconnect(id) RemoveParaliz(id); public fwTakeDamage(this, idinflictor, idattacker, Float:damage, damagebits) { if(is_user_alive(idattacker) && get_user_team(idattacker) == 2) { new wid = get_user_weapon(idattacker); // Id broni if(wid == CSW_KNIFE && !CheckParaliz(this) && is_user_alive(this) && get_user_team(this) == 1) { set_hudmessage(255, 0, 0, -1.0, -1.0, 0, 6.0, 7.0); show_hudmessage(idattacker, "Sparalizowales gracza^nMasz 10 sekund na przeszukanie go!"); g_iCzas[this] = 10; set_task(1.0, "zamroz", this, _, _, "a", 10); set_user_maxspeed(this, 0.1); set_user_rendering(this, kRenderFxGlowShell, 0, 0, 255, kRenderGlow, 60) SetParaliz(this); return HAM_SUPERCEDE } } return HAM_IGNORED; } public zamroz(this) { set_hudmessage(255, 0, 0, -1.0, -1.0, 0, 6.0, 7.0); show_hudmessage(this, "Zostales sparalizowany^nPozostalo Ci jeszcze: %d sekund", g_iCzas[this]); --g_iCzas[this] if(g_iCzas[this] <= 0) { remove_task(this); set_user_maxspeed(this, 0.0); set_user_rendering(this, kRenderFxNone, 0, 0, 0, kRenderNormal); RemoveParaliz(this); } }
Z góry dziękuję, za pomocną odpowiedź daje +