Zrobiłem sobie funkcje testową która ma za zadanie wypisać zapytanie jakie jest wysyłane do bazy danych. Oto ona:
public WypiszZapytanie()
{
new name[48]
for(new id = 1; id <= g_maxplayers; id++)
{
if(!is_user_connected(id) || !klasa_gracza[id])
continue;
get_user_name(id, name, 47);
replace_all(name, 47, "'", "\'");
giLen += formatex(ZapiszExp[giLen], giMax-giLen," ('%s',%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d),",
name,klasa_gracza[id],poziom_gracza[id],doswiadczenie_gracza[id],inteligencja_gracza[id],zdrowie_gracza[id],wytrzymalosc_gracza[id],kondycja_gracza[id],grawitacja_gracza[id],niewidzialnosc_gracza[id],celneoko_gracza[id],moc_gracza1[id],moc_gracza2[id],moc_gracza3[id],quest_dzienny[id][0],klasa_pro[id],monety[id],honor[id],s_aw[id],s_apw[id],s_pas[id],quest_gracza[id],ile_juz[id],ile_wykonano[id],quest_dzienny[id][1],quest_dzienny[id][2])
name = ""
}
new DlugoscStringa = strlen(ZapiszExp)
replace(ZapiszExp[DlugoscStringa-1], DlugoscStringa, ZapiszExp[DlugoscStringa-1], "")
giLen += formatex(ZapiszExp[giLen], giMax-giLen," ON DUPLICATE KEY UPDATE `lvl`=VALUES(`lvl`), `exp`=VALUES(`exp`), `int`=VALUES(`int`), `zdr`=VALUES(`zdr`), `wyt`=VALUES(`wyt`), `kon`=VALUES(`kon`), `gra`=VALUES(`gra`), `nie`=VALUES(`nie`), `cel`=VALUES(`cel`), `moc1`=VALUES(`moc1`), `moc2`=VALUES(`moc2`), `moc3`=VALUES(`moc3`), `m_dzien`=VALUES(`m_dzien`), `pro`=VALUES(`pro`), ")
giLen += formatex(ZapiszExp[giLen], giMax-giLen,"`zlo`=VALUES(`zlo`), `hon`=VALUES(`hon`), `s_aw`=VALUES(`s_aw`), `s_apw`=VALUES(`s_apw`), `s_pas`=VALUES(`s_pas`), `q_gracza`=VALUES(`q_gracza`), `ile_juz`=VALUES(`ile_juz`), `ile_wyk`=VALUES(`ile_wyk`), `ile_qd1`=VALUES(`ile_qd1`), `ile_qd2`=VALUES(`ile_qd2`)")
log_to_file("test_zapis.log", "%s", ZapiszExp);
ZapiszExp = ""
giLen=0, giMax=sizeof(ZapiszExp) - 1
giLen += formatex(ZapiszExp[giLen], giMax-giLen,"INSERT INTO `cod_tablet` (`nick`,`klasa`,`lvl`,`exp`,`int`,`zdr`,`wyt`,`kon`,`gra`,`nie`,`cel`,`moc1`,`moc2`,`moc3`,`m_dzien`,`pro`,`zlo`,`hon`,`s_aw`,`s_apw`,`s_pas`,`q_gracza`,`ile_juz`,`ile_wyk`,`ile_qd1`,`ile_qd2`) VALUES")
return PLUGIN_CONTINUE;
}
Pokombinowałem trochę i udałosię usunąć ten przecinek, ale powstał kolejny problem.
Nie dodaje kolejnych linijek po użyciu funkcji replace tj.
giLen += formatex(ZapiszExp[giLen], giMax-giLen," ON DUPLICATE KEY UPDATE `lvl`=VALUES(`lvl`), `exp`=VALUES(`exp`), `int`=VALUES(`int`), `zdr`=VALUES(`zdr`), `wyt`=VALUES(`wyt`), `kon`=VALUES(`kon`), `gra`=VALUES(`gra`), `nie`=VALUES(`nie`), `cel`=VALUES(`cel`), `moc1`=VALUES(`moc1`), `moc2`=VALUES(`moc2`), `moc3`=VALUES(`moc3`), `m_dzien`=VALUES(`m_dzien`), `pro`=VALUES(`pro`), ")
giLen += formatex(ZapiszExp[giLen], giMax-giLen,"`zlo`=VALUES(`zlo`), `hon`=VALUES(`hon`), `s_aw`=VALUES(`s_aw`), `s_apw`=VALUES(`s_apw`), `s_pas`=VALUES(`s_pas`), `q_gracza`=VALUES(`q_gracza`), `ile_juz`=VALUES(`ile_juz`), `ile_wyk`=VALUES(`ile_wyk`), `ile_qd1`=VALUES(`ile_qd1`), `ile_qd2`=VALUES(`ile_qd2`)")
I zapytanie wygląda tak:
INSERT INTO `cod_tablet` (`nick`,`klasa`,`lvl`,`exp`,`int`,`zdr`,`wyt`,`kon`,`gra`,`nie`,`cel`,`moc1`,`moc2`,`moc3`,`m_dzien`,`pro`,`zlo`,`hon`,`s_aw`,`s_apw`,`s_pas`,`q_gracza`,`ile_juz`,`ile_wyk`,`ile_qd1`,`ile_qd2`) VALUES ('Sniper Elite',2,2,120,0,2,0,0,0,0,0,0,0,0,-1,0,0,0,0,0,1,-1,0,0,0,0)
Wiesz może czemu?