public CheckData(id)
{
if(!gConnected) return
g_SqlTuple = SQL_MakeDbTuple("xxx","xxx","xxx","xxx")
AJDI[0] = id
new qCommand[512]
get_user_name(id, Nick[id], 31)
format(qCommand, 511, "SELECT `xx`, `xx` FROM `xx` WHERE `nick`='%s' ", Nick[id])
SQL_ThreadQuery(g_SqlTuple, "CheckHandler", qCommand)
}
public CheckHandler(FailState, Handle:Query, Errorcode, Error[], Data[], DataSize)
{
new id = AJDI[0]
if(FailState == TQUERY_CONNECT_FAILED)
{
log_amx("Nie mozna podlaczyc sie do bazy danych.")
return PLUGIN_CONTINUE
}
else if(FailState == TQUERY_QUERY_FAILED)
{
log_amx("Zapytanie anulowane [CheckData]")
return PLUGIN_CONTINUE
}
if(SQL_MoreResults(Query)) // A jednak coś znalazł ! Żeby nie robić kolejnej funkcji od razu odczytujemy.
{
xxx[id] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "xx")) // Ponieważ funkcja SQL_ReadResult wymaga ID pola, a my go nie mamy musimy posłużyć się funkcją SQL_FieldNameToNum.
xxx[id] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "xx"))
if(xxx[id] != 0)
set_task(0.1, "Dodaj", id)
}
return PLUGIN_CONTINUE
}
Mam problem z ID gracza, bo gdy wywołam CheckData(id) w Odrodzeniu, kiedy gracz się spawnuje, to wtedy w zmiennej AJDI[0] będzie szybko zmieniać się id w zależności ile jest graczy. Da się innym sposobem przesłać id gracza z CheckData do CheckHandler, niz przechowywanie w zmiennej globalnej? Mówię, jak tylko kilka razy się wywoła tą funkcje podrząd to kiszka i AJDI[0] będzie posiadać id osoby, która ostatnia wykonała funkcje CheckData(id)... Głupie to, nie da się inaczej?
Mój problem chyba rozwiązany:
SQL_ThreadQuery(g_SqlTuple, "CheckHandler", qCommand, Data, 1)
Takie coś powinno być a ja tego nie miałem. Teraz zmienie to AJDI na Data normalnie i powinno chulać, w CheckData(id) napiszę new Data[1] i Data[0] = id. Chyba będzie chodzić
Użytkownik sebuli edytował ten post 08.10.2011 19:02