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?


 Forum
 
Forum
 Użytkownicy
 
Użytkownicy
 Kalendarz
 
Kalendarz
 Dodatki SourceMod
 
Dodatki SourceMod



 
	 Temat jest zamknięty
 Temat jest zamknięty![[ROZWIĄZANE] Problem z odczytywaniem adresu IP gracza z bazy danych (SQL): post #1](https://amxx.pl/public/style_images/tctc91_luminous/icon_share.png) 
					



 
				
				 
				
				








