Po dodaniu nowej statystyki, usunięciu starej tabeli z bazy i restarcie serwera klasy działają normalnie aż do utworzenia się nowej tabeli, w której brakuje owej statystyki.
L 08/04/2014 - 22:17:19: [MySQL] Invalid column: -1 L 08/04/2014 - 22:17:19: [AMXX] Displaying debug trace (plugin "QTM_CodMod.amxx") L 08/04/2014 - 22:17:19: [AMXX] Run time error 10: native error (native "SQL_ReadResult") L 08/04/2014 - 22:17:19: [AMXX] [0] QTM_CodMod.sma::handleCacheDane (line 729)
public client_putinserver(id) { for(new i=0; i<MAX_ILOSC_KLAS; i++) { lvl_klasy_gracza[id][i] = 1; xp_klasy_gracza[id][i] = 0; int_klasy_gracza[id][i] = 0; zdr_klasy_gracza[id][i] = 0; wyt_klasy_gracza[id][i] = 0; kon_klasy_gracza[id][i] = 0; obr_klasy_gracza[id][i] = 0; } gracz_zdobyl_expa[id] = 0; wczytane_dane[id] = false; UsunUmiejetnosci(id); get_user_name(id, nazwa_gracza[id], 63); replace_all(nazwa_gracza[id], 63, "'", "\'"); replace_all(nazwa_gracza[id], 63, "`", "\`"); new data[1], szTemp[256]; data[0] = id; formatex(szTemp, 255, "SELECT * FROM `%s` WHERE name = '%s'", Tabela, nazwa_gracza[id]); SQL_ThreadQuery(hookSql, "handleCacheDane", szTemp, data, 1); UsunZadania(id); set_task(10.0, "PokazReklame", id+ZADANIE_POKAZ_REKLAME); } public handleCacheDane(failstate, Handle:query, error[], errnum, data[], size) { if(failstate != TQUERY_SUCCESS) { log_amx("<Query> Error: %s", error); return; } new id = data[0]; if(!is_user_connected(id) && !is_user_connecting(id)) return; new szClass[32], int; while(SQL_MoreResults(query)) { SQL_ReadResult(query, SQL_FieldNameToNum(query, "klasa"), szClass, 31); TrieGetCell(ClassName, szClass, int); lvl_klasy_gracza[id][int] = SQL_ReadResult(query, SQL_FieldNameToNum(query, "level")); xp_klasy_gracza[id][int] = SQL_ReadResult(query, SQL_FieldNameToNum(query, "xp")); int_klasy_gracza[id][int] = SQL_ReadResult(query, SQL_FieldNameToNum(query, "intelligence")); zdr_klasy_gracza[id][int] = SQL_ReadResult(query, SQL_FieldNameToNum(query, "health")); wyt_klasy_gracza[id][int] = SQL_ReadResult(query, SQL_FieldNameToNum(query, "strength")); kon_klasy_gracza[id][int] = SQL_ReadResult(query, SQL_FieldNameToNum(query, "stamina")); obr_klasy_gracza[id][int] = SQL_ReadResult(query, SQL_FieldNameToNum(query, "damage")); SQL_NextRow(query); } wczytane_dane[id] = true; if(is_user_alive(id) && !g_rozgrzewka) WybierzKlase(id); } public ZapiszDane(id, level) { if(!klasa_gracza[id] || !wczytane_dane[id]) return; new szTemp[1024]; formatex(szTemp, 1023, "UPDATE `%s` SET xp=(`xp` + %d), level=(`level` + %d), intelligence='%d', health='%d', strength='%d', stamina='%d', damage='%d WHERE name='%s' AND klasa='%s'", Tabela, gracz_zdobyl_expa[id], level, inteligencja_gracza[id], zdrowie_gracza[id], wytrzymalosc_gracza[id], kondycja_gracza[id], obrazenia_gracza[id], nazwa_gracza[id], nazwy_klas[klasa_gracza[id]]); doswiadczenie_gracza[id] += gracz_zdobyl_expa[id]; gracz_zdobyl_expa[id] = 0;//wyzeruj expa po dodaniu do bazy zeby nie dawalo 2x tyle expa typowi lvl_klasy_gracza[id][klasa_gracza[id]] = poziom_gracza[id]; xp_klasy_gracza[id][klasa_gracza[id]] = doswiadczenie_gracza[id]; int_klasy_gracza[id][klasa_gracza[id]] = inteligencja_gracza[id]; zdr_klasy_gracza[id][klasa_gracza[id]] = zdrowie_gracza[id]; wyt_klasy_gracza[id][klasa_gracza[id]] = wytrzymalosc_gracza[id]; kon_klasy_gracza[id][klasa_gracza[id]] = kondycja_gracza[id]; obr_klasy_gracza[id][klasa_gracza[id]] = obrazenia_gracza[id]; SQL_ThreadQuery(hookSql, "handleIgnore", szTemp); } public WczytajDane(id, klasa) { if(!klasa || !wczytane_dane[id]) return; gracz_zdobyl_expa[id] = 0; poziom_gracza[id] = max(1, lvl_klasy_gracza[id][klasa]); doswiadczenie_gracza[id] = xp_klasy_gracza[id][klasa]; inteligencja_gracza[id] = int_klasy_gracza[id][klasa]; zdrowie_gracza[id] = zdr_klasy_gracza[id][klasa]; wytrzymalosc_gracza[id] = wyt_klasy_gracza[id][klasa]; kondycja_gracza[id] = kon_klasy_gracza[id][klasa]; obrazenia_gracza[id] = obr_klasy_gracza[id][klasa]; punkty_gracza[id] = (poziom_gracza[id]-1)*2-inteligencja_gracza[id]-zdrowie_gracza[id]-wytrzymalosc_gracza[id]-kondycja_gracza[id]-obrazenia_gracza[id]; if(poziom_gracza[id] && !doswiadczenie_gracza[id]) { doswiadczenie_gracza[id] = 1; xp_klasy_gracza[id][klasa] = 1; new szTemp[512]; formatex(szTemp, 511, "INSERT INTO `%s` (`name`, `klasa`) VALUES ('%s', '%s')", Tabela, nazwa_gracza[id], nazwy_klas[klasa]); SQL_ThreadQuery(hookSql, "handleIgnore", szTemp); } }