Witam, mam taki problem ze sprawdzaniem poziomu, dawno już nie pisałem w pawnie, wiec nie wiem co zrobiłem źle, mam taki kod
public Death() { new id = read_data(2); new attacker = read_data(1); if(!is_user_alive(attacker) || !is_user_connected(attacker)) return PLUGIN_CONTINUE; if(get_user_team(id) != get_user_team(attacker)) { zabojstwa_gracza[attacker]++; } SprawdzPoziom(attacker); return PLUGIN_CONTINUE; } public SprawdzPoziom(id) { if(poziom_gracza[id] < 20) { while(zabojstwa_gracza[id] >= zabojstwa_poziomu[poziom_gracza[id]]) { poziom_gracza[id]++; } } }
Prosto kod, po zabójstwie sprawdza poziom gracza....
new const nazwy_poziomu[][] = {"Brak", "nazwa 1", "nazwa 2", "nazwa 3", "nazwa 4", "nazwa 5", "nazwa 6", "nazwa 7", "nazwa 8", "nazwa 9", "nazwa 10", "nazwa 11", "nazwa 12", "nazwa 13", "nazwa 14", "nazwa 15", "nazwa 16", "nazwa 17", "nazwa 18", "nazwa 19", "nazwa 20" } new const zabojstwa_poziomu[] = { 0, 5, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160, 170, 180 }
Tabele z nazwami poziomów i ile trzeba zdobyć do nastepnego poziomu...
public Pokaz(id) { id -= ZADANIE_POKAZ; set_task(0.1, "Pokaz", id+ZADANIE_POKAZ); if(is_user_connected(id) && is_user_alive(id)) { new szText[428], szName[64]; get_user_name(id, szName, sizeof szName - 1); format(szText, sizeof szText - 1, "N: %s | Z: %i / %i", nazwy_poziomu[poziom_gracza[id]], zabojstwa_gracza[id], zabojstwa_poziomu[poziom_gracza[id]]); message_begin(MSG_ONE, get_user_msgid("StatusText"), {0,0,0}, id); write_byte(0); write_string(szText); message_end(); return PLUGIN_CONTINUE; } return PLUGIN_CONTINUE; }
Oraz pokazywanie wiadomości...
Noi problem polega na tym że przed wbiciem ostatniego poziomu mam 179 zabójstw, gdy zabijam 180, nic sie nie zmienia i serwer zaczyna sypać logami, a nazwa poziomu się nie zmienia a ilość zabójstw zostaje 179
[AMXX] [0] plugin.sma::Pokaz (line 114) [AMXX] Displaying debug trace (plugin "plugin.amxx")
line 114 to
write_string(szText);
CO zrobiłem źle??