Hello!
A téma nevet azért fogalmaztam ilyenre hátha valaki aki ért is hozzá ide téved
, a lényeg az hogy van egy pontrendszer aminek a pontjait MYSQL -be mentem, ezzel nincs is probléma sikerült megcsinálnom, nah de most ha a játékos felmegy a szerverre lekéri a pontját és törli a mysql mezőből a pont értékből, ez is oké ha lecsatlakozik vissza tölti az adott pontját ez is oké, nah de most csináltam hozzá egy olyat hogy manuálisan is lehessen menteni a pontokat, csak van egy probléma ha manuálisan mentem /mentes parancsal megcsináltam úgy hogy lekéri a mysql pont mező értéket ( pl.: felmegyek a szerverre játszok gondolom lemegyek elmentem manuálisan /mentes , ahh még maradok egy kicsit ) és ugye akkor beleírta a mysql a pontját a mentést számítva, nah de mi van akkor ha utána nem ment lelépésnél, olyankor lép életbe a client_disconnect itt is megcsináltam ugyan azt mintha a játékos parancsal mentene , és itt a bibi nem írja hozzá a pontot ha nem csak ( pl.: mentésnél 150 pont mentes után 250 (nem menti el manuálisan) ) és a lecsatlakozáskor a mysql -nek azt az értéket adja hogy 150 hol ott ugye 250 kellene, és nem értem hogy parancsra miért működik a hozzáadás de ha lecsatlakozik akkor csak a mezőben lévő értéket rakja vissza. Nem mysql segítség kell szerintem csak nem jövök rá mi a bibi.
A mentés így néz ki:
public kezi_mentes( id )
{
get_user_name(id, name, charsmax(name))
ell(id);
if(letezik[id] == 1)
{
new data[1]
data[0] = id
formatex(query2, charsmax(query2), "SELECT `pont` FROM `pontok` WHERE name = ^"%s^";", name)
SQL_ThreadQuery(g_SqlTuple, "QuerySelectData_l", query2, data, 1)
}
else
{
formatex(sqlmentes, charsmax(sqlmentes), "INSERT INTO `pontok`(`name`, `pont`) VALUES (^"%s^",^"%d^");", name, get_hm_pont(id))
SQL_ThreadQuery(g_SqlTuple, "QuerySetData", sqlmentes)
return PLUGIN_CONTINUE
}
}
public QuerySelectData_l(FailState, Handle:Query, error[], errorcode, data[], datasize, Float:fQueueTime)
{
if(FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED)
{
log_amx("%s", error)
return
}
else
{
new id = data[0];
new p_pont3 = SQL_FieldNameToNum(Query, "pont")
get_user_name(id, name, charsmax(name))
while(SQL_MoreResults(Query))
{
p_pont4[id] = SQL_ReadResult(Query, p_pont3)
set_hm_pont(id,get_hm_pont(id)+p_pont4[id])
formatex(sqldisconnect, charsmax(sqldisconnect), "UPDATE `pontok` SET `pont`=^"%d^" WHERE name=^"%s^";", get_hm_pont(id), name)
SQL_ThreadQuery(g_SqlTuple, "QuerySetData", sqldisconnect)
set_hm_pont(id,get_hm_pont(id)-get_hm_pont(id))
SQL_NextRow(Query)
}
}
}
Ez sikeresen működik is parancsból, de ha a player lecsatlakozik akkor már nem :/
Kicsit hosszú lett remélem valaki tud segíteni