Forwardy
Pittero
14.03.2011
register_forward(FM_CmdStart, "CmdStart")
register_forward(FM_Voice_SetClientListening, "fw_SetClientListening");
register_forward(FM_SetClientKeyValue, "fw_SetClientKeyValue")
register_forward(FM_EmitSound, "EmitSound")
Czy te forwardy moga obciazac serwer az tak mocno ze beda lagi ?
Jak powinno sie konczyc dany forward ?
return FMRES_SUPERCEDE czy return FMRES_IGNORED ?
dzięki za odpowiedz.
R3X
14.03.2011
same forwardy to nie wszystko, ważne co w nich robisz i jak często się wykonują; nawet je uporządkowałeś po częstotliwości wykonywania tzn najmniej kod powinno być w CmdStart, za to w emit sound możesz robić co chcesz; najgorszy jest pod tym względem addtofullpack
jak tylko słuchasz to ignored, jak chcesz blokować/zmieniać to supercede czy handled
jak tylko słuchasz to ignored, jak chcesz blokować/zmieniać to supercede czy handled
Pittero
14.03.2011
public CmdStart(id, uc_handle)
{
if(!is_user_connected(id) || !is_user_alive(id))
{
return FMRES_IGNORED;
}
if(deagle_duel[id])
{
cs_set_user_bpammo(id, CSW_DEAGLE, 1)
}
return FMRES_IGNORED;
}
Taki zapis jest poprawny ?
R3X
14.03.2011
jak najbardziej poprawny, ale wątpię by o to Ci chodziło; cmdstart jest prawie jak prethink, kilkadziesiąt razy na sekudnę
Pittero
14.03.2011
I to moze lagowac serwa...jak najbardziej poprawny, ale wątpię by o to Ci chodziło; cmdstart jest prawie jak prethink, kilkadziesiąt razy na sekudnę
A reszta forwardow jak sie wykonuje ?
Czym mozna zastapic cmdstart ? Jesli chce uzyc tego do pojedynkow czyli do dgla ma ustawiac 1 naboj
Pittero
14.03.2011
CurWeapon sie wlacza jak zmieniamy bron, a hamsandwich to nie mam pojecia jak uzycCurWeapon albo z HamSandwich któryś z itemw (deploy?)
R3X
14.03.2011
czyli nie masz też pojęcia jak użyć CurWeapon
sry musiałem
Half-Life 1 Game Events - AlliedModders Wiki
ClipAmmo
złap
sry musiałem
Half-Life 1 Game Events - AlliedModders Wiki
ClipAmmo
złap
register_event("CurWeapon", "eventCurWeapon", "be", "1=1");
public eventCurWeapon(id){ if(read_data(3)) return; //daj pocisk/przeladuj }
Pittero
14.03.2011
R3X, a poprawnie jest:
1.
czy 2.
1.
public CurWeapon(id)
{
if(!is_user_alive(id) || !is_user_connected(id))
{
return PLUGIN_HANDLED;
}
}
czy 2.
public CurWeapon(id)
{
if(!is_user_alive(id) || !is_user_connected(id))
{
return FMRES_IGNORED;
}
}
R3X
14.03.2011
są poprawne, bo zwrócona wartość nie ma znaczenia:
amxconst.inc
fakemeta_const.inc
wartości nie są takie same, a jako message/event to przetwarzane jest przez Core, czyli PLUGIN_* by pasowało
FMRES_* dotyczy forwardów fakemety
Nie ma sensu sprawdzać czy gracz jest żywy i podłączony w 1 ifie : jeśli jest żywy to musi być podłączony
amxconst.inc
#define PLUGIN_CONTINUE 0 /* Results returned by public functions */
fakemeta_const.inc
#define FMRES_IGNORED 1 // Calls target function, returns normal value
wartości nie są takie same, a jako message/event to przetwarzane jest przez Core, czyli PLUGIN_* by pasowało
FMRES_* dotyczy forwardów fakemety
Nie ma sensu sprawdzać czy gracz jest żywy i podłączony w 1 ifie : jeśli jest żywy to musi być podłączony
Pittero
14.03.2011
JEszcze mam jendo pytanie
Ktore read_data odpowiada za sprawdzenie czy gracz wystrzelil naboj w CurWeapon ?
Ktore read_data odpowiada za sprawdzenie czy gracz wystrzelil naboj w CurWeapon ?
Pittero
14.03.2011
Czy jak raz strzelilczy wystrzelił? tzn czy ma pusty magazynek tak? to read_data(3) == 0 wtedy
DarkGL
14.03.2011
#define MAX 32 public CurWeapon(id) { static iPlayerWeapon[MAX+1],iPlayerAmmo[MAX+1]; new wid = read_data(2) // Id broni new ammo = read_data(3) // liczba naboi w magazynku if(iPlayerWeapon[id] != wid){ iPlayerWeapon[id] = wid; iPlayerAmmo[id] = ammo; } else if(iPlayerAmmo[id] > ammo){ //strzelilem } iPlayerAmmo[id] = ammo; }
Pittero
15.03.2011
A co oznacza parametr "be" w curweapon oraz "1=1"
moglby ktos napisac mi przyklady uzycia eventu na:
1. Sprawdzenie broni jaka ma grac "w reku" aktualnie
2. Pobranie momentu przeladowania.
3. Wykonanie akcji jesli bron to noz, a drugi na to jesli bron inna niz noz.
4. Jak zablokowac uzywanie broni z tzw automatow ktore daja bron po wcisnieciu buttonu?
moglby ktos napisac mi przyklady uzycia eventu na:
1. Sprawdzenie broni jaka ma grac "w reku" aktualnie
2. Pobranie momentu przeladowania.
3. Wykonanie akcji jesli bron to noz, a drugi na to jesli bron inna niz noz.
4. Jak zablokowac uzywanie broni z tzw automatow ktore daja bron po wcisnieciu buttonu?