←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

[ROZWIĄZANE] Zamrożenie gracza, brak akcji

Zablokowany

  • +
  • -
EferenTM - zdjęcie EferenTM 27.12.2013

Witam, 

mam kod paralizatora napisanego przeze mnie, który działa świetnie, lecz jest jeden problem.

Po uderzeniu paralizatorem gracza zamraża go (nie może się ruszać) lecz może atakować,

Chciałbym się dowiedzieć jaką funkcją mógłbym uniemożliwić graczowi wykonywanie akcji uderz,strzel itp.

 

Oto kawałek kodu:

if(wid == CSW_KNIFE && !CheckParaliz(this) && is_user_alive(this) && get_user_team(this) == 1)
		{
			set_hudmessage(0, 0, 255, 0.02, 0.23, 0, 6.0, 7.0);
			show_hudmessage(idattacker, "[Sparalizowales: %s]^n[Masz 10 sekund na przeszukanie go]", username);	
			g_iCzas[this] = 10;
			set_task(1.0, "Freeze", 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 Freeze(this)
{
	set_hudmessage(0, 0, 255, 0.02, 0.23, 0, 6.0, 7.0);
	show_hudmessage(this, "[Zostales sparalizowany]^n[Pozostalo: %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);
	}
}

Pomóżcie, dajcie wskazówkę, nawet w dokumentacji nie mogłem znaleźć odpowiedniej funkcji.

Pozdrawiam Eferen.

Odpowiedz

  • +
  • -
0-0-0 - zdjęcie 0-0-0 27.12.2013

Dodajesz na samej górze:
 
new pValue;
#define OFFSET_LINUX_WEAPONS 4
 
#define m_flNextPrimaryAttack 46
#define m_flNextSecondaryAttack 47
Do plugin init dodajesz:
new const szWpnEntNames[][] = { "", "weapon_p228", "", "weapon_scout", "weapon_hegrenade", "weapon_xm1014", "weapon_c4", "weapon_mac10",
	"weapon_aug", "weapon_smokegrenade", "weapon_elite", "weapon_fiveseven", "weapon_ump45", "weapon_sg550",
	"weapon_galil", "weapon_famas", "weapon_usp", "weapon_glock18", "weapon_awp", "weapon_mp5navy", "weapon_m249",
	"weapon_m3", "weapon_m4a1", "weapon_tmp", "weapon_g3sg1", "weapon_flashbang", "weapon_deagle", "weapon_sg552",
	"weapon_ak47", "weapon_knife", "weapon_p90" }

	for(new i = 0;i<sizeof szWpnEntNames;i++)	if(szWpnEntNames[i][0])	RegisterHam(Ham_Item_Deploy,szWpnEntNames[i],"fwPrimary")
Tworzysz nowy public:
public fwPrimary(id){
if(pValue == 1)	set_pdata_float(id, m_flNextPrimaryAttack, 99999.0, OFFSET_LINUX_WEAPONS)
	if(pValue == 1)	set_pdata_float(id, m_flNextSecondaryAttack, 99999.0, OFFSET_LINUX_WEAPONS)
}
Zmieniasz kawałek kodu co podałeś na:
if(wid == CSW_KNIFE && !CheckParaliz(this) && is_user_alive(this) && get_user_team(this) == 1)
		{
			set_hudmessage(0, 0, 255, 0.02, 0.23, 0, 6.0, 7.0);
			show_hudmessage(idattacker, "[Sparalizowales: %s]^n[Masz 10 sekund na przeszukanie go]", username);	
			g_iCzas[this] = 10;
			set_task(1.0, "Freeze", this, _, _, "a", 10);
			set_user_maxspeed(this, 0.1);
			set_user_rendering(this, kRenderFxGlowShell, 0, 0, 255, kRenderGlow, 60)
			SetParaliz(this);
                        pValue == 1
			return HAM_SUPERCEDE
		}
	}
	return HAM_IGNORED;
}
public Freeze(this)
{
	set_hudmessage(0, 0, 255, 0.02, 0.23, 0, 6.0, 7.0);
	show_hudmessage(this, "[Zostales sparalizowany]^n[Pozostalo: %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);
                pValue == 0
	}
}

Użytkownik Zerko edytował ten post 27.12.2013 16:40
Odpowiedz

  • +
  • -
EferenTM - zdjęcie EferenTM 27.12.2013

Działa dzięki wielkie, można już zamknąć.

Odpowiedz

  • +
  • -
sebul - zdjęcie sebul 27.12.2013

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Pomoc udzielona

Jeśli się z tym nie zgadzasz, report.png raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.


Z pozdrowieniami,
Zespół AMXX.PL
Odpowiedz
Zablokowany