L 01/07/2015 - 03:52:35: Start of error session. L 01/07/2015 - 03:52:35: Info (map "de_dust2x2") (file "addons/amxmodx/logs/error_20150107.log") L 01/07/2015 - 03:52:56: [FUN] Invalid player 10 L 01/07/2015 - 03:52:56: [AMXX] Displaying debug trace (plugin "QTM_CodMod.amxx") L 01/07/2015 - 03:52:56: [AMXX] Run time error 10: native error (native "set_user_gravity") L 01/07/2015 - 03:52:56: [AMXX] [0] float.inc::operator*(Float:,_:) (line 108) L 01/07/2015 - 03:52:56: [AMXX] [1] QTM_CodMod.sma::Odrodzenie (line 345)
Zacznę od funkcji publicznej Odrodzenie.
public Odrodzenie(id) { set_user_gravity(id, 1.0-(grawitacja_gracza[id]*0.0004411764));//ta liczba po przecinku to wspolczynnik zmiany grawitacji if(!task_exists(id+ZADANIE_POKAZ_INFORMACJE)) set_task(0.1, "PokazInformacje", id+ZADANIE_POKAZ_INFORMACJE, _, _, "b"); if(nowa_klasa_gracza[id]) UstawNowaKlase(id); if(!klasa_gracza[id]) { WybierzKlase(id); return PLUGIN_CONTINUE; } DajBronie(id); ZastosujAtrybuty(id); if(poziom_gracza[id] < min_lvl) { client_print(id,print_chat,"[Cs-wakacje.p] Wykrylem duze problemy z balansem lvli na serwerze"); client_print(id,print_chat,"[Cs-wakacje.p] W ramach tego dostales %i LVL na start",min_lvl); UstawDoswiadczenie(id,PobierzDoswiadczeniePoziomu(min_lvl)+1); poziom_gracza[id] = min_lvl; SprawdzPoziom(id); } if(punkty_gracza[id] > 0) PrzydzielPunkty(id); return PLUGIN_CONTINUE; }
Jedyny natyw z biblioteki fun to jest właśnie set_user_gravity. Teraz(pisząc ten temat) wpadłem na zastosowanie warunku:
if(is_user_alive(id) && !is_user_bot(id) && !is_user_hltv(id)) { set_user_gravity(id, 1.0-(grawitacja_gracza[id]*0.0004411764));//ta liczba po przecinku to wspolczynnik zmiany grawitacji }
Chyba powinno to rozwiązać problem z invalid player, tak?
Przejdźmy dalej- co dokładnie oznacza ten błąd:
float.inc::operator*(Float:,_:)
Wywala go w linii :
new limitzdrowie = 500;
Nie wiem co za błąd tu widzi... Czy może jednak to jest problem związany z mnożeniem przez 0 w set_user_gravity? Jeżeli tak to można by to naprawić takim kodem:
if(is_user_alive(id) && !is_user_bot(id) && !is_user_hltv(id)) { set_user_gravity(id, 1.0-(float(grawitacja_gracza[id]+1)*0.0004411764));//ta liczba po przecinku to wspolczynnik zmiany grawitacji }
Tu najbardziej mnie będzie dręczyła niedokładność w liczbie zmiennoprzecinkowej. ..
Nie chcę eksperymentować tego, co wyżej napisałem bezpośrednio na serwerze, żeby czegoś więcej nie schrzanić.
Załączam kod całego pluginu.
Z góry dzięki za pomoc
QTM_CodMod.sma 48,79 KB 35 Ilość pobrań
QTM_CodMod.amxx
Użytkownik pro100wHS edytował ten post 07.01.2015 13:55