L 09/12/2016 - 10:01:44: [AMXX] Displaying debug trace (plugin "silnik.amxx")
L 09/12/2016 - 10:01:44: [AMXX] Run time error 4: index out of bounds
L 09/12/2016 - 10:01:44: [AMXX] [0] silnik.sma::showgildia (line 15559)
L 09/12/2016 - 10:01:44: [AMXX] [1] silnik.sma::gildia_menu (line 15867)
L 09/12/2016 - 15:21:12: Start of error session.
L 09/12/2016 - 15:21:12: Info (map "de_inferno") (file "addons/amxmodx/logs/error_20160912.log")
L 09/12/2016 - 15:21:12: [AMXX] Displaying debug trace (plugin "silnik.amxx")
L 09/12/2016 - 15:21:12: [AMXX] Run time error 4: index out of bounds
L 09/12/2016 - 15:21:12: [AMXX] [0] silnik.sma::write_hud (line 3383)
L 09/12/2016 - 15:21:12: [AMXX] [1] silnik.sma::UpdateHUD (line 3424)
funkcja showgildia:
{
new tempstring[2048];
new motd[2048];
if(is_user_connected(id) && is_user_alive(id))
{
formatex(motd,charsmax(motd),"<html><body bgcolor=^"#000000^"><font size=^"2^" face=^"verdana^" color=^"FF0000^"><center><strong>Statystyki Gildi: %s</strong><br>", nazwa_gildi[id]);
add(motd,charsmax(motd),"(Aktualizowane co Mape)<br><br>");
formatex(tempstring,charsmax(tempstring),"Lvl %i/14<br>",gildia_lvl[id]);
add(motd,charsmax(motd),tempstring);
formatex(tempstring,charsmax(tempstring),"EXP %i/%i<br>",gildia_exp[id],GildiaXP[gildia_lvl[id]]);
add(motd,charsmax(motd),tempstring);
formatex(tempstring,charsmax(tempstring),"Kamienie %i<br>",g_kam[id]);
add(motd,charsmax(motd),tempstring);
formatex(tempstring,charsmax(tempstring),"Zalozyciel %s <br><br>",nazwa_zalozycial[id]);
add(motd,charsmax(motd),tempstring);
formatex(tempstring,charsmax(tempstring),"<b>Czlonkowie (%i/%i)</b><br>",ilosc_czlonkow[id],gildia_lvl[id]+2);
add(motd,charsmax(motd),tempstring);
new iPos , szKey[ 32 ] , szVal[ 64 ] , iTimeStamp;
new ala[32],key[128],nazwa1[128],l = 0
new iVaultHandle = nvault_util_open("nickgil")
new iCount = nvault_util_count (iVaultHandle)
for ( new iCurrent = 1 ; iCurrent <= iCount ; iCurrent++ )
{
iPos = nvault_util_read( iVaultHandle , iPos , szKey , charsmax( szKey ) , szVal , charsmax( szVal ) , iTimeStamp );
parse(szVal, ala, 31);
copy(nazwa1, 31, ala);
if(!equal(nazwa_gildi[id],nazwa1))
continue;
formatex(key, 127, "%s",szKey);
key[strlen(key)-4] = 0;
new vaultkey[64],vaultdata[256]
format(vaultkey,63,"%s-GIL",key)
nvault_get(g_wplaty,vaultkey,vaultdata,255);
new ng[32],ile
parse(vaultdata,ng , 31)
ile = str_to_num(ng);
l++
formatex(tempstring,charsmax(tempstring),"%i. %s |WPLATA| %i <br>",l,key,ile);
add(motd,charsmax(motd),tempstring);
}
formatex(tempstring,charsmax(tempstring),"<b>Statystyki</b><br>",ilosc_czlonkow[id],gildia_lvl[id]+2);
add(motd,charsmax(motd),tempstring);
if(g_dmg[id])
{
formatex(tempstring,charsmax(tempstring),"Atak + %i<br>",g_dmg[id]);
add(motd,charsmax(motd),tempstring);
}
if(g_def[id])
{
formatex(tempstring,charsmax(tempstring),"Obrona + %i<br>",g_def[id]);
add(motd,charsmax(motd),tempstring);
}
if(g_spid[id])
{
formatex(tempstring,charsmax(tempstring),"Szybkosc + %i<br>",g_spid[id]);
add(motd,charsmax(motd),tempstring);
}
if(g_hp[id])
{
formatex(tempstring,charsmax(tempstring),"Zycie + %i<br>",g_hp[id]);
add(motd,charsmax(motd),tempstring);
}
/*if(g_woj[id])
{
formatex(tempstring,charsmax(tempstring),"Drop butelek %i<br>",g_drop[id]);
add(motd,charsmax(motd),tempstring)
}*/
if(g_drop[id])
{
formatex(tempstring,charsmax(tempstring),"Dwukrotny EXP za Fraga (gildia)<br>");
add(motd,charsmax(motd),tempstring)
}
add(motd,charsmax(motd),"</center></font></body></html>");
show_motd(id,motd,"Legion: Statystyki");
}
}
funkcja gildia_menu:
{
if(item == MENU_EXIT)
{
menu_destroy(menu);
otwarte_menu[id] = false
return PLUGIN_HANDLED;
}
switch(tryb[id])
{
case 0:
{
switch(item)
{
case 0:
{
zrob_gildie(id)
}
case 1:
{
show_motd(id,"infogildia.txt")
gildie(id)
}
}
}
case 1:
{
switch(item)
{
case 0:
{
gildia_wybierz(id)
}
case 1:
{
wczytaj_gildia(id)
showgildia(id)
}
case 2:
{
wczytaj_gildia(id)
client_cmd(id, "messagemode wprowadz_ilosc_expa");
ColorChat(id,GREEN,"[%s]^x01Twoj exp wynosi %i.",nazwa_gildi[id],player_xp[id]-1)
}
case 3:
{
wczytaj_gildia(id)
client_cmd(id, "messagemode wprowadz_kamien");
ColorChat(id,GREEN,"[%s]^x01Posiadasz %i kamieni",nazwa_gildi[id],player_kamien[id])
}
case 4:
{
odejdz_gildia(id)
}
case 5:
{
rozdaj_skill(id)
}
case 6:
{
rozwiaz_gildie_menu(id)
}
case 7:
{
show_motd(id,"infogildia.txt")
gildie(id)
}
}
}
case 2:
{
switch(item)
{
case 0:
{
wczytaj_gildia(id)
showgildia(id)
}
case 1:
{
wczytaj_gildia(id)
client_cmd(id, "messagemode wprowadz_ilosc_expa");
ColorChat(id,GREEN,"[%s]^x01Twoj exp wynosi %i.",nazwa_gildi[id],player_xp[id]-1)
}
case 2:
{
wczytaj_gildia(id)
client_cmd(id, "messagemode wprowadz_kamien");
ColorChat(id,GREEN,"[%s]^x01Posiadasz %i kamieni",nazwa_gildi[id],player_kamien[id])
}
case 3:
{
odejdz_gildia(id)
}
case 4:
{
show_motd(id,"infogildia.txt")
gildie(id)
}
}
}
}
menu_destroy(menu);
otwarte_menu[id] = false
return PLUGIN_HANDLED;
}
funkcja write_hud:
{
if (player_lvl[id] == 0)
player_lvl[id] = 1
new tpstring[1024]
new Float:xp_now
new Float:xp_need
new Float:perc
if (last_update_xp[id] == player_xp[id])
{
perc = last_update_perc[id]
}
else
{
//Calculate percentage of xp required to level
if (player_lvl[id] == 1)
{
xp_now = float(player_xp[id])
xp_need = float(LevelXP[player_lvl[id]])
perc = xp_now*100.0/xp_need
}
else
{
xp_now = float(player_xp[id])-float( LevelXP[player_lvl[id]-1])
xp_need = float(LevelXP[player_lvl[id]])-float(LevelXP[player_lvl[id]-1])
perc = xp_now*100.0/xp_need
}
}
last_update_xp[id] = player_xp[id]
last_update_perc[id] = perc
new hapek = get_user_health(id);
set_hudmessage(0, 255, 255, 0.02, 0.02, 0, 6.0, 1.0);
if(c_longjump[id] != 1)
{
show_hudmessage(id, "Klasa: %s^nLvl: %i (%0.0f%s)^nItem: %s[%i]^nGildia: %s^nArtefakt:%s^nMana: %i^nKamienie: %i^nDiamenty %i^n%s^nZakup EXP/Premium: Cs-Creativ.pl/sklep", Race[player_class[id]],player_lvl[id],perc,"%",player_item_name[id],item_durability[id],nazwa_gildi[id],artefakt_info[player_artefakt[id]],mana_gracza[id],player_kamien[id],player_diax[id],nazwa_forum);
}
else
{
show_hudmessage(id, "Klasa: %s^nLvl: %i (%0.0f%s)^nSkoki: %i/%i^nItem: %s[%i]^nGildia: %s^nArtefakt: %s^nMana: %i^nKamienie: %i^nDiamenty: %i^n%s^nZakup EXP/Premium: Cs-Creativ.pl/sklep", Race[player_class[id]],player_lvl[id],perc, "%",JumpsLeft[id], JumpsMax[id],player_item_name[id],item_durability[id],nazwa_gildi[id],artefakt_info[player_artefakt[id]],mana_gracza[id],player_kamien[id],player_diax[id],nazwa_forum);
}
format(tpstring,1023,"HP: %i ",hapek)
message_begin(MSG_ONE,gmsgStatusText,{0,0,0}, id)
write_byte(0)
write_string(tpstring)
message_end()
}
funkcja UpdateHUD:
public UpdateHUD()
{
//Update HUD for each player
for (new id=0; id < 32; id++)
{
//If user is not connected, don't do anything
if (!is_user_connected(id))
continue
if (otwarte_menu[id])
continue
if (is_user_alive(id)) write_hud(id)
else
{
//Show info about the player we're looking at
new index,bodypart
get_user_aiming(id,index,bodypart)
if(index >= 0 && index < MAX && is_user_connected(index) && is_user_alive(index))
{
new pname[32]
get_user_name(index,pname,31)
new Msg[512]
set_hudmessage(0, 255, 255, 0.73, 0.68, 0, 6.0, 3.0)
format(Msg,511,"Nick: %s^nPoziom: %i^nKlasa: %s^nPrzedmiot: %s[%i]^nGildia: %s^nArtefakt: %s^nMana: %i^nKamienie: %i^nDiamenty: %i^nInteligencja: %i^nSila: %i^nZrecznosc: %i^nZwinnosc: %i^nAdrenalina: %i^nZaradnosc: %i^nMentalnosc: %i^nGrawitacja: %i",
pname,player_lvl[index],Race[player_class[index]],player_item_name[index],item_durability[index],nazwa_gildi[index],artefakt_info[player_artefakt[index]],mana_gracza[index],player_kamien[index],player_diax[index],player_intelligence[index],player_strength[index],player_agility[index],player_dextery[index],player_dama[index],player_kas[index],player_men[index],player_grw[index])
show_hudmessage(id, Msg)
}
}
}
}
linia 3383
xp_need = float(LevelXP[player_lvl[id]])-float(LevelXP[player_lvl[id]-1])
linia 3424
if (is_user_alive(id)) write_hud(id)
linia 15559
formatex(tempstring,charsmax(tempstring),"EXP %i/%i<br>",gildia_exp[id],GildiaXP[gildia_lvl[id]]);
linia 15867
showgildia(id)
Jakieś sugestie jak te errory poprawić? Cały czas bawiłem się tym , zmieniałem formatex na menu i próbowałem wiele innych sposobów i cały czas się pulta -,-