Witam!
Tak wygląda funkcja zapisu danych:
public sql_save(id)
{
if (gTablesLoaded[id] == 1)
{
if ( gIntermission )
{
sql_save_nonthreaded(id);
return;
}
new tempSaveKeyID[63], tempSaveKeyIP[63];
copy(tempSaveKeyID, charsmax(tempSaveKeyID), gSaveKeyID[id]);
replace_all(tempSaveKeyID, charsmax(tempSaveKeyID), "'", "\'" );
copy(tempSaveKeyIP, charsmax(tempSaveKeyIP), gSaveKeyIP[id]);
replace_all(tempSaveKeyIP, charsmax(tempSaveKeyIP), "'", "\'" );
formatex(g_Cache, charsmax(g_Cache), "UPDATE zp_user_weapons SET player_selection=%i, weapon_first=%i, weapon_second=%i, player_ip=^"%s^" WHERE player_id=^"%s^"", typ_wybierania[id] == 1 ? 0 : typ_wybierania[id], typ_wybierania[id] == 0 ? -1 : first_selection[id], typ_wybierania[id] == 0 ? -1 : second_selection[id], tempSaveKeyIP, tempSaveKeyID);
SQL_ThreadQuery(g_SqlTuple, "QueryHandle", g_Cache);
}
}
Wszystko dziala poprawanie:

I teraz kiedy probuje odczytac adres IP danego gracza i porownac go z adresem podczas laczenia sie z serwerem to juz mam problemy z tym.
Funkcja sprawdzania/odczytu danych z bazy SQL:
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)) {
typ_wybierania[id] = 0;
first_selection[id] = 0;
second_selection[id] = 0;
new tempSaveKeyID[63];
copy(tempSaveKeyID, charsmax(tempSaveKeyID), gSaveKeyID[id]);
replace_all(tempSaveKeyID, charsmax(tempSaveKeyID), "'", "\'" );
formatex(g_Cache, charsmax(g_Cache), "INSERT INTO zp_user_weapons VALUES('%s', '0', '0', '0', '0')", tempSaveKeyID);
SQL_ThreadQuery(g_SqlTuple, "QueryHandle", g_Cache);
}
else
{
new tempSaveKeyIP[63];
copy(tempSaveKeyIP, charsmax(tempSaveKeyIP), gSaveKeyIP[id]);
replace_all(tempSaveKeyIP, charsmax(tempSaveKeyIP), "'", "\'" );
typ_wybierania[id] = SQL_ReadResult(Query, 0);
first_selection[id] = SQL_ReadResult(Query, 1);
second_selection[id] = SQL_ReadResult(Query, 2);
}
gTablesLoaded[id]++;
}
I w moim przypadku adres IP będzie: SQL_ReadResult(Query, 3);
Kiedy tworze zmienną adres_ip[33]
i próbuję ustawić to w ten sposób:
adres_ip[id] = SQL_ReadResult(Query, 3);
A następnie chcę odczytać ten adres IP robiąc to używajac kodu ponizej:
public PokazIP(id)
{
new tempSaveKeyIP[63]//, tempSaveKeyOldIP[63]
copy(tempSaveKeyIP, charsmax(tempSaveKeyIP), gSaveKeyIP[id]);
replace_all(tempSaveKeyIP, charsmax(tempSaveKeyIP), "'", "\'" );
//copy(tempSaveKeyOldIP, charsmax(tempSaveKeyOldIP), gSavedKeyIP[id][64]);
//replace_all(tempSaveKeyOldIP, charsmax(tempSaveKeyOldIP), "'", "\'" );
client_print(id, print_chat, "Twoje IP: %s, a w bazie widnieje jako %s", tempSaveKeyIP, dane)
}
To wyswietla mi tylko info:
"widnieje jako 185" reszty adresu IP nie widac, tylko pierwsze trzy cyfry to kropki.
Jakie pomysly, co zle robie?


Dodatki SourceMod



Temat jest zamknięty











