Mam taki kod:
Spoiler
public sql_init()
{
new szHost[32], szUser[32], szPass[32], szDB[32];
get_pcvar_string(pPcvarDBHost, szHost, 31);
get_pcvar_string(pPcvarDBUser, szUser, 31);
get_pcvar_string(pPcvarDBPassword, szPass, 31);
get_pcvar_string(pPcvarDBBase, szDB, 31);
g_SqlTuple = SQL_MakeDbTuple(szHost, szUser, szPass, szDB);
SQL_ThreadQuery(g_SqlTuple, "TableHandle", "CREATE TABLE IF NOT EXISTS gildie_gracze (nazwa_gracza VARCHAR(35), nazwa_gildii VARCHAR(35), PRIMARY KEY (nazwa_gracza))");
}
public get_save_key(id)
{
if ( !is_dedicated_server() && id == 1 ) {
copy(gSaveKey[id], charsmax(gSaveKey[]), "loopback");
}
else
{
get_user_name(id, gSaveKey[id], charsmax(gSaveKey[]));
}
sql_load(id);
}
public sql_load(id)
{
new index[1];
index[0] = id;
new tempSaveKey[63];
copy(tempSaveKey, charsmax(tempSaveKey), gSaveKey[id]);
replace_all(tempSaveKey, charsmax(tempSaveKey), "'", "\'" );
formatex(g_Cache, charsmax(g_Cache), "SELECT nazwa_gildii FROM gildie_gracze WHERE nazwa_gracza='%s'", tempSaveKey);
SQL_ThreadQuery(g_SqlTuple, "SelectHandle", g_Cache, index, 1);
}
public TableHandle(FailState, Handle:Query, Error[], Errcode, Data[], DataSize)
{
if ( FailState )
{
if ( FailState == TQUERY_CONNECT_FAILED )
{
log_amx("Table - Could not connect to SQL database. [%d] %s", Errcode, Error);
}
else if ( FailState == TQUERY_QUERY_FAILED )
{
log_amx("Table Query failed. [%d] %s", Errcode, Error);
}
SQLenabled = false;
return;
}
SQLenabled = true;
}
public QueryHandle(FailState, Handle:Query, Error[], Errcode,Data[], DataSize)
{
if ( FailState )
{
if ( FailState == TQUERY_CONNECT_FAILED )
{
log_amx("Save - Could not connect to SQL database. [%d] %s", Errcode, Error);
}
else if ( FailState == TQUERY_QUERY_FAILED )
{
log_amx("Save Query failed. [%d] %s", Errcode, Error);
}
return;
}
}
public SelectHandle(FailState, Handle:Query, Error[], Errcode, Data[], DataSize)
{
if ( FailState )
{
if ( FailState == TQUERY_CONNECT_FAILED )
{
log_amx("Load - Could not connect to SQL database. [%d] %s", Errcode, Error);
}
else if ( FailState == TQUERY_QUERY_FAILED )
{
log_amx("Load Query failed. [%d] %s", Errcode, Error);
}
return;
}
new id = Data[0];
if ( !SQL_NumResults(Query) )
{
new tempSaveKey[63];
copy(tempSaveKey, charsmax(tempSaveKey), gSaveKey[id]);
replace_all(tempSaveKey, charsmax(tempSaveKey), "'", "\'" );
formatex(g_Cache, charsmax(g_Cache), "INSERT INTO gildie_gracze VALUES('%s', '%s')", tempSaveKey, nazwa_gildii[id]);
SQL_ThreadQuery(g_SqlTuple, "QueryHandle", g_Cache);
}
else
{
SQL_ReadResult(Query,SQL_FieldNameToNum(Query,"nazwa_gildii"), nazwa_gildii[id], 127);
}
gTablesLoaded[id]++;
}
public sql_save(id)
{
if ( gTablesLoaded[id] == 1 )
{
if ( gIntermission )
{
sql_save_nonthreaded(id);
return;
}
new tempSaveKey[63];
copy(tempSaveKey, charsmax(tempSaveKey), gSaveKey[id]);
replace_all(tempSaveKey, charsmax(tempSaveKey), "'", "\'" );
formatex(g_Cache, charsmax(g_Cache), "UPDATE gildie_gracze SET nazwa_gildii=^"%s^" WHERE nazwa_gracza=^"%s^"", nazwa_gildii[id], tempSaveKey);
SQL_ThreadQuery(g_SqlTuple, "QueryHandle", g_Cache);
}
}
sql_save_nonthreaded(id)
{
new Errcode, Error[128], Handle:SqlConnection;
SqlConnection = SQL_Connect(g_SqlTuple, Errcode, Error, charsmax(Error));
if ( !SqlConnection )
{
log_amx("Save - Could not connect to SQL database. [%d] %s", Errcode, Error);
SQL_FreeHandle(SqlConnection);
return;
}
new tempSaveKey[63];
copy(tempSaveKey, charsmax(tempSaveKey), gSaveKey[id]);
replace_all(tempSaveKey, charsmax(tempSaveKey), "'", "\'" );
new Handle:Query;
Query = SQL_PrepareQuery(SqlConnection, "UPDATE gildie_gracze SET nazwa_gildii=%s WHERE nazwa_gracza=^"%s^"", nazwa_gildii[id], tempSaveKey);
if ( !SQL_Execute(Query) )
{
Errcode = SQL_QueryError(Query, Error, charsmax(Error));
log_amx("Save Query failed. [%d] %s", Errcode, Error);
SQL_FreeHandle(Query);
SQL_FreeHandle(SqlConnection);
return;
}
SQL_FreeHandle(Query);
SQL_FreeHandle(SqlConnection);
}Jak mogę zrobić do niego aby wczytywało dwie tabele?
Fajnie by było jakby ktoś nakierował mnie, dzięki.


Dodatki SourceMod














