Witam, oto pierwszy temat z serii pozbycie się CurWeapon. A więc, postanowiłem usunąć z swojego silnika event CurWeapon i zastąpić go kanapką (optymalizacja). Niby zmiana prędkości/speeda gracza w hamsandwich działa, lecz mam pewien bug, który mam nadzieję, jakoś uda się naprawić.
Sypne kodem, aby nie było wróżenia z fusów.
Do zmiany/resetowania prędkości/speeda gracza użyłem:
RegisterHam(get_player_resetmaxspeed_func(), "player", "CS_Player_ResetMaxSpeed_Post", 1);
Next:
Ham:get_player_resetmaxspeed_func(){ #if defined Ham_CS_Player_ResetMaxSpeed return IsHamValid(Ham_CS_Player_ResetMaxSpeed)?Ham_CS_Player_ResetMaxSpeed:Ham_Item_PreFrame; #else return Ham_Item_PreFrame; #endif }
Next:
public CS_Player_ResetMaxSpeed_Post(id) { if(!is_user_alive(id)) return; UstawSzybkosc(id); }
Next:
public PoczatekRundy() { freezetime = false; for(new id=0;id<=32;id++) { if(!is_user_alive(id)) continue; Display_Fade(id, 1<<9, 1<<9, 1<<12, 0, 255, 70, 100); set_task(0.1, "UstawSzybkosc", id+ZADANIE_USTAW_SZYBKOSC); switch(get_user_team(id)) { case 1: client_cmd(id, "spk QTM_CodMod/start2"); case 2: client_cmd(id, "spk QTM_CodMod/start"); } } }
Next:
public UstawSzybkosc(id) { id -= id>32? ZADANIE_USTAW_SZYBKOSC: 0; if(klasa_gracza[id] && !freezetime) set_pev(id, pev_maxspeed, szybkosc_gracza[id]); }
To jest cały kod związany z prędkością gracza.
Wyżej wspomniałem, iż owa opcja posiada pewien bug, a więc jeżeli gracz dołączy do teamu i wybierze jakąś klasę to automatycznie ustawia mu się szybkość z sv_maxspeed. Jeżeli serwer ma sv_maxspeed "9999" to serwer ustawi mu taką samą prędkość jaką ma w cvarze. Ten bug jest raczej tylko raz (gdy gracz dołączy do teamu i wybierze klase), chcę dodać, iż owy bug ustaje jak się zmieni bronie np. z slota 1 na slot 2, gracz zrespi się na nowo jak zginie itd. to posiadamy już normalną prędkość taką jaką powinniśmy mieć.
Teraz nasuwa się pytanie, jak usunąć ten bug?
Pozdrawiam.