[ROZWIĄZANE] Pozbycie się CurWeapon #1 - S...
WeBsteR
27.08.2015
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.
Linux'
27.08.2015
WeBsteR
27.08.2015
Dodaj do tego ustawianie predkosci podczas odrodzenia i usun wtedy ustawianie z poczatku rundy bo to bedzie zbedne.
Nadal zostaje ten 1 bug, iż gracz np. dołączył w połowie rundy i wybrał klase, a jak wybrał klase to automatycznie ma speeda takiego jak jest ustawione np. sv_maxspeed "9999", przez co chodzi jak na speedhacku, reszta jest luks i działa jak należy.
^Szeregowy^ 27.08.2015
to ma być tylko w danej klasie czy wszystkich ?
edit zle przeczytałem użyj przypisania speed zaraz po respawnie
Edited by ^Szeregowy^, 27.08.2015 22:53.
Asiap
28.08.2015
uzyj przy spawnie
ExecuteHamB(get_player_resetmaxspeed_func(), id);
wtedy ustawi szybkosc z handlera CS_Player_ResetMaxSpeed_Post
Edited by Asiap, 28.08.2015 07:09.
Rivit
28.08.2015
Dopisz żeby nie usuwać całego curweapon bo nie będzie działać restrykcja broni,
Co do bugu to w UstawSzybkosc warunek, że jeżeli gracz nie ma klasy to ustawić mu standardowa szybkosc (patrz #define w silniku cod)
WeBsteR
28.08.2015
Dopisz żeby nie usuwać całego curweapon bo nie będzie działać restrykcja broni,
Tak ja o tym wiem, lecz to co podałem wyżej nie jest poradnikiem, zrobię osobny temat - poradnik na ten temat i tam wszystko opiszę co gdzie i jak (przy okazji odrobię sobie starego warna ) Poza tym zaraz zabieram się aby restrykcja broni, wykonywała się w Ham_Item_Deploy przez co CurWeapon będzie totalnie usunięte.
Udało mi się usunąć bug związany z prędkością, wystarczyło zrobić to co koledzy napisali wyżej + w poblicu ZastosujAtrybuty zrobić sprawdzenie, czy jest freezetime, jeżeli nie ma to ustawić set_pev od prędkosci.
Wszystko już działa jak należy, nie ma bugów, dziękuje za zainteresowanie tematem.
#Zamek.
radim
03.09.2015
Ten temat został zamknięty przez moderatora.
Powód: Pomoc udzielona
Jeśli się z tym nie zgadzasz, raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.
Z pozdrowieniami,
Zespół AMXX.PL