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 +


Dodatki SourceMod













