Blokada noża
Andrzejek
10.05.2013
Witam czy dobrze zablokowałem? Bo wywala mi błąd: ED_Alloc: no free edicts
Bo chodziło żeby nóż zniknął, żeby gracz nie miał widocznej kosy
register_forward(FM_CmdStart, "CmdStart");
public CmdStart(id, uc_handle, seed) { if(is_user_alive(id) && is_user_connected(id)) { if(get_user_team(id) == 1) { engclient_cmd(id, "weapon_knife"); if(get_user_weapon(id) == CSW_KNIFE) { strip_user_weapons(id); return FMRES_IGNORED; } else if(get_user_weapon(id) != CSW_KNIFE) { strip_user_weapons(id); return FMRES_IGNORED; } } return FMRES_IGNORED; } return FMRES_HANDLED; }
GwynBleidD
10.05.2013
Absolutnie źle. Wywalasz graczowi wszystkie bronie zamiast "blokować" nóż. Jaki sens mają te ify właściwie? skoro i tak wykonuje się ten sam kod?
sebul
10.05.2013
Andrzejek
10.05.2013
Sebul a powiedz jak byś ty zastosował? Jak byś zablokował ? Oraz np. dla ct też dać że mogą uzyć tylko awp?
K!113r
10.05.2013
Przy zmianie broni na inną niż awp przełącz mu broń na awp, a najlepiej też wywal mu tą broń inną (lub go rozbierz i daj mu awp ).
Andrzejek
10.05.2013
No ok, to mniej wieciej wiem o co chodzi, tylko mi chodzi o to co miał na myśli sebul, jak by on to wykonał tą blokadę nie używając FM_CmdStart
radim
10.05.2013
Np. za pomocą client_prethink ? Są pluginy z blokadą HE, po prostu wyciągnij kod, warunek na nóż i tyle roboty ; ))
Użytkownik radim edytował ten post 10.05.2013 17:07
G[o]Q
11.05.2013
K!113r
11.05.2013
Gość_21977_* 13.05.2013
"Lepiej zapobiegać, niż leczyć".
Jeśli chcesz zablokować nóż, to możesz użyć bezpośrednio hamowego Ham_AddPlayerItem.
#include <amxmodx> #include <hamsandwich> public plugin_init() { register_plugin("Knife block", "1.0", "benio101"); RegisterHam(Ham_AddPlayerItem, "player", "player_get_item"); } public player_get_item(id, item){ if(ExecuteHam(Ham_Item_ItemSlot, item)==3){ SetHamReturnInteger(0); return HAM_SUPERCEDE; } return HAM_IGNORED; }
W ten sposób gracz, pomimo posiadania noża, nie będzie mógł go wyjąć.
Nie, nie jest to jego wyrzucanie, ani beznadziejna zmiana broni na poprzednią, etc.
Event jest blokowany, przez co nie wywoływane są żadne inne zbędne operacje.
Ostatecznie, nóź nie zostanie wyciągnięty nawet, jeśli nie pozostanie żadna inna broń.
Dalej, możesz dodać wyjątek, identyfikator gracza masz gotowy (id), wystarczy to odpowiednio filtrować.