Ta modyfikacja blokuje całkowicie użycie komend/klawiszy:
[Edytowane w silniku] C / useperk / radio3
[Edytowane dla każdej klasy osobno] E / +use
Edycja w silniku:
1.Otwieramy nasz silnik (QTM_CodMod.sma)
2. Szukamy
register_clcmd("useperk", "UzyjPerku");
register_clcmd("radio3", "UzyjPerku");i zamieniamy na
register_clcmd("useperk", "cmdSprawdz");
register_clcmd("radio3", "cmdSprawdz");
3. Szukamy
public UzyjPerku(id)
{
if(!is_user_alive(id))
return PLUGIN_HANDLED;
new forward_handle = CreateOneForward(pluginy_perkow[perk_gracza[id]], "cod_perk_used", FP_CELL);
ExecuteForward(forward_handle, id, id);
DestroyForward(forward_handle);
return PLUGIN_HANDLED;
}
usuwamy i w to miejsce wklejamy to:
public cmdSprawdz(id){
new Float:vfOrigin[3];
new name [32];
get_user_name(id, name, 31);
pev(id, pev_origin, vfOrigin);
if(czyDuzoMiejsca(vfOrigin, 135.0))
UzyjPerku(id);
else
client_print(id, print_chat, "Nie uzywamy tego w malych pomieszczeniach!");
}
czyDuzoMiejsca(const Float:vfPunkt[3], Float:odleglosc){
new Float:vfStart[3], Float:vfEnd[3];
vfStart[0] = vfEnd[0] = vfPunkt[0];
vfStart[1] = vfEnd[1] = vfPunkt[1];
vfStart[2] = vfEnd[2] = vfPunkt[2];
//1
vfStart[0] += odleglosc;
vfEnd[0] -= odleglosc;
if(engfunc( EngFunc_PointContents, vfStart ) != CONTENTS_EMPTY
&& engfunc( EngFunc_PointContents, vfEnd ) != CONTENTS_EMPTY)
return 0;
//2
vfStart[0] -= odleglosc;
vfEnd[0] += odleglosc;
vfStart[1] += odleglosc;
vfEnd[1] -= odleglosc;
if(engfunc( EngFunc_PointContents, vfStart ) != CONTENTS_EMPTY
&& engfunc( EngFunc_PointContents, vfEnd ) != CONTENTS_EMPTY)
return 0;
return 1;
}
public UzyjPerku(id)
{
if(!is_user_alive(id))
return PLUGIN_HANDLED;
new forward_handle = CreateOneForward(pluginy_perkow[perk_gracza[id]], "cod_perk_used", FP_CELL);
ExecuteForward(forward_handle, id, id);
DestroyForward(forward_handle);
return PLUGIN_HANDLED;
}
Edycja dla każdej klasy osobno
1. Otwieramy sma naszej klasy (dla przykładu saper)
2. Za #include <hamsandwich> dopisujemy:
#include <amxmisc> #include <fakemeta>
3. Zamieniamy (tylko nazwe) public cod_class_skill_used(id) na :
public stawianie(id)
4. Przed naszym aktualnym public ( public stawianie(id) ) dodajemy:
public cod_class_skill_used(id)
{
new Float:vfOrigin[3];
new name [32];
get_user_name(id, name, 31);
pev(id, pev_origin, vfOrigin);
if(czyDuzoMiejsca(vfOrigin, 135.0))
stawianie(id);
else
client_print(id, print_chat, "Nie uzywamy tego w malych pomieszczeniach!");
}
czyDuzoMiejsca(const Float:vfPunkt[3], Float:odleglosc){
new Float:vfStart[3], Float:vfEnd[3];
vfStart[0] = vfEnd[0] = vfPunkt[0];
vfStart[1] = vfEnd[1] = vfPunkt[1];
vfStart[2] = vfEnd[2] = vfPunkt[2];
//1
vfStart[0] += odleglosc;
vfEnd[0] -= odleglosc;
if(engfunc( EngFunc_PointContents, vfStart ) != CONTENTS_EMPTY
&& engfunc( EngFunc_PointContents, vfEnd ) != CONTENTS_EMPTY)
return 0;
//2
vfStart[0] -= odleglosc;
vfEnd[0] += odleglosc;
vfStart[1] += odleglosc;
vfEnd[1] -= odleglosc;
if(engfunc( EngFunc_PointContents, vfStart ) != CONTENTS_EMPTY
&& engfunc( EngFunc_PointContents, vfEnd ) != CONTENTS_EMPTY)
return 0;
return 1;
}
Gotowego sapera daje w załączniku
Zabraniam kopiowania poradnika na inne strony bez mojej wiedzy
Załączone pliki
Użytkownik MAthiasssMAt edytował ten post 29.01.2012 11:18


Dodatki SourceMod





codclass_saper.amxx










