Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

[ROZWIĄZANE] Problem z odczytywaniem adresu IP gracza z bazy danych (SQL)


  • Zamknięty Temat jest zamknięty
3 odpowiedzi w tym temacie

#1 DEADP00L

    Profesjonalista

  • Użytkownik

Reputacja: 212
Profesjonalista

  • Postów:169
  • Steam:steam
  • Imię:Bart
  • Lokalizacja:United Kingdom
Offline

Napisano 22.10.2023 19:16

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:

 

03675b23f5e3a33509c1eb8e2b9b283d.png

 

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?

 


  • +
  • -
  • 0

#2 Robiin

    Godlike

  • Support Team

Reputacja: 1 107
Super Hero

  • Postów:2 052
  • Imię:Robert
  • Lokalizacja:Wrocław
Online

Napisano 22.10.2023 19:41


Kiedy tworze zmienną adres_ip[33]

 

Zamiast tego potrzebujesz dwuwymiarową tablicę: adres_ip[33][33] - jeden wymiar na id gracza, drugi na ip.

Wtedy to:


adres_ip[id] = SQL_ReadResult(Query, 3);

zamieniasz na to:

SQL_ReadResult(Query, 3, adres_ip[id], charsmax(adres_ip[]));

Aktualnie próbujesz zapisać ip jako int, co jest bezsensowne.


  • +
  • -
  • 1

Nie dołączam do żadnej sieci, nie pomagam z tworzeniem paczek, nie napisze pluginów za zero.


#3 DEADP00L

    Profesjonalista

  • Autor tematu
  • Użytkownik

Reputacja: 212
Profesjonalista

  • Postów:169
  • Steam:steam
  • Imię:Bart
  • Lokalizacja:United Kingdom
Offline

Napisano 22.10.2023 19:48

 


Kiedy tworze zmienną adres_ip[33]

 

Zamiast tego potrzebujesz dwuwymiarową tablicę: adres_ip[33][33] - jeden wymiar na id gracza, drugi na ip.

Wtedy to:

 

 


adres_ip[id] = SQL_ReadResult(Query, 3);

zamieniasz na to:

SQL_ReadResult(Query, 3, adres_ip[id], charsmax(adres_ip[]));

Aktualnie próbujesz zapisać ip jako int, co jest bezsensowne.

 

 

Podziękowal! Temat do zamkniecia.

 

Wczesniej robilem podobnie z tym, ze nie wiem skad mi sie to wzielo ale mialem dodane tam: SQL_ReadResult(Query, 3, adres_ip[id], charsmax(adres_ip[])-1);


  • +
  • -
  • 0

#4 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 555
Godlike

  • Postów:11 986
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 22.10.2023 21:10

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Pomoc udzielona

Jeśli się z tym nie zgadzasz, report.png raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.


Z pozdrowieniami,
Zespół AMXX.PL


  • +
  • -
  • 0




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych