Zrobiłem zapis lvl i exp do zombie moda w taki sposób:
#include <amxmodx>
#include <amxmisc>
#include <zombie_plague_xp>
#include <sqlx>
#define playerlvl(%1) zp_get_user_level(%1)
#define playerxp(%1) zp_get_user_xp(%1)
new Handle:gTuple;
public plugin_init()
{
register_plugin("[ZP] Save Level/XP", "1.0", "DAMIAN");
set_task(0.1, "SQL_init");
}
public SQL_init()
{
gTuple = SQL_MakeDbTuple("sql.pukawka.pl", "root", "unknown", "zombie12_exp");
}
public client_putinserver(id)
{
CheckData(id);
}
public client_disconnect(id)
{
SaveData(id);
}
public SaveData(id)
{
new szName[64], qCommand[512];
get_user_name(id, szName, charsmax(szName));
format(qCommand, charsmax(qCommand), "INSERT INTO zombie12_exp (`poziom`, `exp`) VALUES (%d, %d) ON DUPLICATE KEY UPDATE (`poziom`, `exp`) VALUES (%d, %d) WHERE `nick`=^"%s^"", playerlvl(id), playerxp(id), playerlvl(id), playerxp(id), szName);
SQL_ThreadQuery(gTuple, "SaveData_Handle", qCommand);
}
public SaveData_Handle(FailState, Handle:Query, Error[], Errorcode, Data[], DataSize, QueryTime)
{
if(Errorcode)
log_amx("Blad w zapytaniu: %s [SaveData]", Error);
switch(FailState)
{
case TQUERY_CONNECT_FAILED:
{
log_amx("Nie mozna polaczyc sie z baza danych. [SaveData]");
return PLUGIN_CONTINUE;
}
case TQUERY_QUERY_FAILED:
{
log_amx("Zapytanie anulowane. [SaveData]");
return PLUGIN_CONTINUE;
}
}
return PLUGIN_CONTINUE;
}
public CheckData(id)
{
new szName[64], qCommand[512], Data[1];
Data[0] = id;
get_user_name(id, szName, charsmax(szName));
format(qCommand, charsmax(qCommand), "SELECT * FROM zombie12_exp WHERE `nick`=^"%s^"", szName);
SQL_ThreadQuery(gTuple, "CheckData_Handle", qCommand, Data, 1);
}
public CheckData_Handle(FailState, Handle:Query, Error[], Errorcode, Data[], DataSize, QueryTime)
{
new id = Data[0];
if(Errorcode)
log_amx("Blad w zapytaniu: %s [CheckData]", Error);
switch(FailState)
{
case TQUERY_CONNECT_FAILED:
{
log_amx("Nie mozna polaczyc sie z baza danych. [CheckData]");
return PLUGIN_CONTINUE;
}
case TQUERY_QUERY_FAILED:
{
log_amx("Zapytanie anulowane. [CheckData]");
return PLUGIN_CONTINUE;
}
}
if(!SQL_MoreResults(Query))
return PLUGIN_CONTINUE;
else
{
new poziom, exp;
poziom = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "poziom"));
exp = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "exp"));
zp_set_user_level(id, poziom);
zp_set_user_xp(id, exp);
}
return PLUGIN_CONTINUE;
}
Po wrzuceniu tego na serwer gdy wchodzi gracz w konsoli wyświetla się błąd:
L 08/23/2017 - 22:49:58: [zp_save_level.amxx] Blad w zapytaniu: Table 'zombie12_exp.zombie12_exp' doesn't exist [CheckData] L 08/23/2017 - 22:49:58: [zp_save_level.amxx] Zapytanie anulowane. [CheckData]
W czym jest problem ?
ps. Jeśli chodzi o dane sql które podałem wyżej to jest zamieniłem tzn nie podałem prawdziwych (user, password, ...)


Dodatki SourceMod












