Blokowanie ataku
Best Answer Asiap 27.06.2015 15:03
new Float:fTime = 60.0; //czas blokady strzelania set_pdata_float(id, 83, fTime);Go to the full post
Jcr
27.06.2015
Wie ktoś może, jak zrobić, że gdy gracz będzie miał: zmienna[id] = 1, to nie może strzelać?
np coś takiego
if(zmienna[id] == 1)
{
//kod blokujacy strzelanie
}
Nie może być to blokada typu: zmiana broni na nóż, wyrzucenie broni, ustawienie 0 ammo.
Najlepiej by było jakby blokowało +attack i +attack2, cos w tym stylu
Best Answer
Asiap
27.06.2015
new Float:fTime = 60.0; //czas blokady strzelania set_pdata_float(id, 83, fTime);
Jcr
27.06.2015
new Float:fTime = 60.0; //czas blokady strzelania set_pdata_float(id, 83, fTime);
A da się zrobić tak, żeby nie podawać czasu, tylko 1 komenda na włączenie 2ga na wyłączenie?
Linux'
27.06.2015
Zamiast strzalu lepiej zablokowac caly klawisz. Sprobuj w ten sposob:
register_forward(FM_CmdStart,"CmdStart"); public CmdStart(id, uc_handle, seed) { if(!is_user_connected(id) || !is_user_alive(id)) return PLUGIN_CONTINUE; if(ma_zmienna[id]) set_uc(uc_handle, UC_Buttons, get_uc(uc_handle, UC_Buttons) & ~IN_ATTACK); return PLUGIN_CONTINUE; }
Asiap
27.06.2015
A da się zrobić tak, żeby nie podawać czasu, tylko 1 komenda na włączenie 2ga na wyłączenie?
Wyłączanie:
set_pdata_float(id, 83, 0.0);
Asiap
27.06.2015
A da się zrobić tak, żeby nie podawać czasu, tylko 1 komenda na włączenie 2ga na wyłączenie?
Wyłączanie:
set_pdata_float(id, 83, 0.0);
Rivit
27.06.2015
register_forward(FM_CmdStart,"CmdStart");
public CmdStart(id, uc_handle, seed)
{
if(!is_user_connected(id) || !is_user_alive(id))
return PLUGIN_CONTINUE;
if(ma_zmienna[id])
set_uc(uc_handle, UC_Buttons, get_uc(uc_handle, UC_Buttons) & ~IN_ATTACK);
return PLUGIN_CONTINUE;
}
Nie żebym sie czepiał, ale nienawidzę jakis niedokładności/lekkich błędów:
- to forward z fakemety, używaj więc return FMRES_*
- sprawdz czy gracz jest zywy zamiast sprawdzac czy jest podlaczony i zywy (wsadź alive do warunku nr.2)
- czy po zmienieniu czegos nie powinnismy zwrocic FMRES_HANDLED?
#define FMRES_IGNORED 1 // Calls target function, returns normal value #define FMRES_HANDLED 2 // Tells metamod you did something, still calls target function and returns normal value #define FMRES_OVERRIDE 3 // Supposed to still call the target function but return your value instead // however this does not work properly with metamod; use supercede instead. #define FMRES_SUPERCEDE 4 // Block the target call, and use your return value (if applicable)
Ja bym użył kodu Asiap, zamiast hookować forward, który się wykonuje bardzo często...
Jcr
27.06.2015
Można zamknąć, użyłem funckji :
set_pdata_float(id, 83, 5.0); set_pdata_float(id, 83, 0.0);
Łatwiej, pewniej i szybciej