Sprawdanie czy zmienna jest liczbą
sebacs2
03.01.2013
Witam chce sprawdzić czy dana wartość jest liczbą, i potrzebuje konsultacji
np. takie coś
No i dlaczego to nie działa, jak to zrobić aby chodziło poprawnie ?
np. takie coś
new monety = cod_get_user_coins(id);
if(is_str_num(monety))
{
// tak monety to liczba
}
else
{
//nie monety to nie liczba
}
No i dlaczego to nie działa, jak to zrobić aby chodziło poprawnie ?
Portek
03.01.2013
Pytanie podstawowe, po co sprawdzać coś co jest pewnikiem? Gdzie tu logika i jakakolwiek kwestia optymalizacji?
speedkill
03.01.2013
Tak jak Portek napisał, funkcja zwraca liczbę całkowitą. Więc jaki jest sens sprawdzania tego ?
http://amxx.pl/dokum...1394/is_str_num
Nie działa Ci to, ponieważ zmienna monety nie jest stringiem.
http://amxx.pl/dokum...1394/is_str_num
Sprawdza czy tekst składa się z samych cyfr (tworzy liczbę).
Nie działa Ci to, ponieważ zmienna monety nie jest stringiem.
Składnia: is_str_num(const sString[])
sebacs2
03.01.2013
Pytanie podstawowe, po co sprawdzać coś co jest pewnikiem? Gdzie tu logika i jakakolwiek kwestia optymalizacji?
Racja, lecz cod_get_user_coins(id); w moim przypadku, staje się liczba gdy dołączymy do gry, ale pewnie się zapytacie, to czym jest ?
Właśnie, że niczym i jak dodam do HUD "monety" , to HUD się coś buguje i HUD się nie pokazuje, pokaże się dopiero jak dołączymy do drużyny, a jak wejdziemy na serwer prosto na spectate to niestety nie zobaczymy tego hud, i chce to zastąpić, coś w rodzaju gdy zmienia "nie działa" to będzie pisało "Wczytuje dane"
Bo te hud składa się z wielu zmiennych i chce, żeby jedna zmienna nie rozwalała całego hud.
Ma ktoś jakiś pomysł ?
speedkill
03.01.2013
Po najmniejszej lini oporu sprawdzaj aktualny team gracza i wyświetlaj hud: http://amxx.pl/dokum...5/get_user_team
sebacs2
03.01.2013
Czy do naszych rozważań teoretycznych, takie coś by działało, czy da się to napisać prościej ? Optymalnej.
new monety = cod_get_user_coins(id); if(get_user_team(id) == 1 || get_user_team(id) == 3) { set_hudmessage(255, 255, (...) ShowSyncHudMsg(id, SyncHudObj2, "Zmiana 1 : %s^n Zmienna 2 :%i^nMonety : Dolacz do gry aby zobaczyc", Zmiana1, Zmiana2); } else { set_hudmessage(255, 255, (...) ShowSyncHudMsg(id, SyncHudObj2, "Zmiana 1 : %s^n Zmienna 2 :%i^nMonety : i%", Zmiana1, Zmiana2, monety); }
xenos
04.01.2013
get_user_team(id) == 1
To jest oznaczenie Teamu Terro więc tutaj mały błąd
dlatego najlepiej będzie pasować 3ka czyli spec jak napisałeś i unnasigned czyli osoby nie przydzielone
get_user_team(id) == 3 // spec get_user_team(id) == 0 // unnasigneda co do optymalizacji to jeżeli ma się wyświetlać w 1 miejscu na ekranie to nie ma potrzeby 2x wpisywać w kod set_hudmassage mała, ale jako taka oszczędność
new monety = cod_get_user_coins(id); set_hudmessage(255, 255, (...) if(get_user_team(id) == 0 || get_user_team(id) == 3) { ShowSyncHudMsg(id, SyncHudObj2, "Zmiana 1 : %s^n Zmienna 2 :%i^nMonety : Dolacz do gry aby zobaczyc", Zmiana1, Zmiana2); } else { ShowSyncHudMsg(id, SyncHudObj2, "Zmiana 1 : %s^n Zmienna 2 :%i^nMonety : i%", Zmiana1, Zmiana2, monety); }
Użytkownik xenos edytował ten post 04.01.2013 00:45
speedkill
04.01.2013
Zawsze można sprawdzić tak:
get_user_team(id) % 3
new monety = cod_get_user_coins(id); set_hudmessage(255, 255, (...) if(get_user_team(id) % 3){ ShowSyncHudMsg(id, SyncHudObj2, "Zmiana 1 : %s^n Zmienna 2 :%i^nMonety : i%", Zmiana1, Zmiana2, monety); } else{ ShowSyncHudMsg(id, SyncHudObj2, "Zmiana 1 : %s^n Zmienna 2 :%i^nMonety : Dolacz do gry aby zobaczyc", Zmiana1, Zmiana2); }
GwynBleidD
10.01.2013
możesz również ustawić, aby cod_get_user_coins zwracało jakąś określoną wartość, gdy monet nie da się odczytać, np -1, -999 itp...
sebacs2
13.01.2013
możesz rozwinąć wypowiedz ? GwynBleidD
Użytkownik sebacs2 edytował ten post 13.01.2013 00:37
Użytkownik sebacs2 edytował ten post 13.01.2013 00:37
speedkill
13.01.2013
Jak masz funkcję cod_get_user_coins(id) w niej dodaj warunek np. jeżeli monety gracza są >= 1, to zwróć ilość monet, w innym przypadku zwróć 0 lub -1. Następnie pobierasz ilość monet i warunkiem możesz sprawdzić co zwróciła funkcja cod_get_user_coins(id)
sebacs2
14.01.2013
Czyli o takie coś macie namyśli ?
Wybaczcie, że nie ma bbcode ale znikły mi magiczne guziczki </p>
Użytkownik benio101 edytował ten post 15.01.2013 11:02
Dodanie znacznika SMA
new monety = cod_get_user_coins(id);
set_hudmessage(255, 255, (...)
if(monety >= 1){
ShowSyncHudMsg(id, SyncHudObj2, "Zmiana 1 : %s^n Zmienna 2 :%i^nMonety : i%", Zmiana1, Zmiana2, monety);
}
else{
ShowSyncHudMsg(id, SyncHudObj2, "Zmiana 1 : %s^n Zmienna 2 :%i^nMonety : Wczytuje dane", Zmiana1, Zmiana2);
}
Wybaczcie, że nie ma bbcode ale znikły mi magiczne guziczki </p>
Użytkownik benio101 edytował ten post 15.01.2013 11:02
Dodanie znacznika SMA
sebul
15.01.2013
Skoro "cod_get_user_coins" zwraca liczbę całkowitą, to nie ma takiej opcji, żeby przez to bugował się hud... Więc szukaj problemu gdzie indziej, chociażby nie pisze się "i%" tylko "%i".