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 socket


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

#1 Hiko

    Wszechpomocny

  • Użytkownik

Reputacja: 35
Życzliwy

  • Postów:307
Offline

Napisano 28.09.2024 21:25

Cześć mam taki kod na sprawdzanie sms ale nie ważne co wpisze zawsze pokazuje 0 mimo ze jak wklepie kod do przegladarki pokazuje -2 :D

public Doladowanie_Konta(id) {
	new kod_sms[32];
	read_args(kod_sms, charsmax(kod_sms)); // Odczytaj kod SMS wpisany przez gracza
	remove_quotes(kod_sms);
	// Sprawdzenie poprawności kodu SMS
	if (!strlen(kod_sms)) {
		client_print(id, print_chat, "[SMS] Nie wpisano kodu.");
		return PLUGIN_CONTINUE;
	}
	
	// Utworzenie danych do zapytania GET
	new szQuery[512];
	formatex(szQuery, charsmax(szQuery), "?UserId=8215&Code=%s", kod_sms);
	// Wywołanie funkcji sprawdzającej kod SMS
	Sprawdzenie_SMS(szQuery);
	return PLUGIN_CONTINUE;
}

// Funkcja do sprawdzenia kodu SMS
public Sprawdzenie_SMS(kod_sms[]) {
	new error = 0;
	new constring[512];
	
	g_sckweb = socket_open(strona_skryptu, 80, SOCKET_TCP, error);
	if (g_sckweb > 0) {
		formatex(constring, 511, "GET %s%s HTTP/1.1^nHost:%s^n^n", kod, kod_sms, strona_skryptu);
		server_print( "Zapytanie: %s%s%s", strona_skryptu,kod,kod_sms); // Debug: Wyświetlenie zapytania
		socket_send(g_sckweb, constring, strlen(constring));
		set_task(1.0, "SocketAnswer",.flags = "b");
		} else {
		switch (error) {
			case 1: { server_print("Error creating socket"); }
			case 2: { server_print("Error resolving remote hostname"); }
			case 3: { server_print("Error connecting socket"); }
			default: { server_print("Nieznany błąd podczas nawiązywania połączenia."); }
		}
		return PLUGIN_CONTINUE;
	}
	return PLUGIN_CONTINUE;
}
public SocketAnswer(){
	if(socket_change(g_sckweb)){ 
		new g_Data[1024],odp;
		socket_recv(g_sckweb, g_Data, charsmax(g_Data));
		
		
		odp = str_to_num(g_Data);
		
		client_print(0, print_center,"%i",odp);
		socket_close(g_sckweb);
		
		if(task_exists()){
			remove_task();
		}
	}
}

ma ktoś pomysł co robie zle ?


  • +
  • -
  • 0

POMAGAM NA ILE TYLKO POTRAFIĘ !

 

 


#2 Hiko

    Wszechpomocny

  • Autor tematu
  • Użytkownik

Reputacja: 35
Życzliwy

  • Postów:307
Offline

Napisano 28.09.2024 21:56

socket mi zwraca : 

HTTP/1.1 200 OK
Server: nginx
Date: Sat, 28 Sep 2024 20:54:26 GMT
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Vary: Accept-Encoding

5
-2.00
0

jak przechwycic te -2.00


  • +
  • -
  • 0

POMAGAM NA ILE TYLKO POTRAFIĘ !

 

 


#3 Robiin

    Godlike

  • Support Team

Reputacja: 1 111
Super Hero

  • Postów:2 067
  • Imię:Robert
  • Lokalizacja:Wrocław
Offline

Napisano 29.09.2024 15:41

W SocketAnswer zmienna g_Data zawiera dokładnie to co napisałeś tutaj:


HTTP/1.1 200 OK
Server: nginx
Date: Sat, 28 Sep 2024 20:54:26 GMT
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Vary: Accept-Encoding

5
-2.00
0

prawda?

Jeśli tak, to próbujesz zrobić str_to_num z tekstu, nie z wartości, których oczekujesz (5, -2, 0). Zrób loga w stylu

log_amx("Raw data: %s", g_Data);

i zobacz co tam masz dokładnie. Jeśli będzie tam całą odpowiedź (czyli string zawierający server, date, content-type itd), to musisz sobie je ręcznie parsować (np. znajduj linijkę z napisem "vary" i wtedy wiesz, że wszystko poniżej do dane, czy coś takiego [nie wiem jak się poprawnie parsuje takie rzeczy w amxxie]).


  • +
  • -
  • 0

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


#4 Boski Z Polski

    Profesjonalista

  • Użytkownik

Reputacja: 69
Pomocny

  • Postów:195
  • Steam:steam
  • Imię:Olgierd
  • Lokalizacja:Leszno
Online

Napisano 29.09.2024 16:04

1.
Możesz użyć funkcji strfind lub contain do wyszukiwania określonych danych w output, z tego co widzę to piszesz sklepsms także możesz sobie założyć jakieś tam wybrane dane do szukania
Przykładowo, outputy dla cssetti:

-3	Pole UserId lub Code nie zostało podane
-2	Pole UserId lub Code zawiera niedozwoloną wartość
-1	Użytkownik o podanym UserId nie został znaleziony
0	Podany kod SMS jest nieprawidłowy
> 0	Podany kod SMS jest prawidłowy, konto zostało zasilone, a kod wykorzystany. Zwrócona wartość to kwota doładowania (TopUpAmount)

2. 
Warto zastanowić się nad wykorzystaniem bibliotek oraz pluginów metamoda przystosowanych do tego typu zadań, przykładowo poczytaj sobie o gripie.   


  • +
  • -
  • 0

#5 Hiko

    Wszechpomocny

  • Autor tematu
  • Użytkownik

Reputacja: 35
Życzliwy

  • Postów:307
Offline

Napisano 30.09.2024 15:30

W SocketAnswer zmienna g_Data zawiera dokładnie to co napisałeś tutaj:

HTTP/1.1 200 OK
Server: nginx
Date: Sat, 28 Sep 2024 20:54:26 GMT
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Vary: Accept-Encoding

5
-2.00
0
prawda?
Jeśli tak, to próbujesz zrobić str_to_num z tekstu, nie z wartości, których oczekujesz (5, -2, 0). Zrób loga w stylu
log_amx("Raw data: %s", g_Data);
i zobacz co tam masz dokładnie. Jeśli będzie tam całą odpowiedź (czyli string zawierający server, date, content-type itd), to musisz sobie je ręcznie parsować (np. znajduj linijkę z napisem "vary" i wtedy wiesz, że wszystko poniżej do dane, czy coś takiego [nie wiem jak się poprawnie parsuje takie rzeczy w amxxie]).

g_Data wlasnie daje mi odpowiedź z serwera co wysłałem a jak przemienię to na liczby przez str_to_num to wychwytuje mi zawsze 0 z cssetti API a jak widać przy g_Data powinno być-2.0
  • +
  • -
  • 0

POMAGAM NA ILE TYLKO POTRAFIĘ !

 

 


#6 Hiko

    Wszechpomocny

  • Autor tematu
  • Użytkownik

Reputacja: 35
Życzliwy

  • Postów:307
Offline

Napisano 30.09.2024 16:49

Poradziłem sobie , dzięki wam użyłem strfind , potem parse i udało sie wywołać co chciałem ! :D


  • +
  • -
  • 0

POMAGAM NA ILE TYLKO POTRAFIĘ !

 

 


#7 dasiek

    Nie wiem, nie znam się, nie orientuję się, zarobiony jestem.

  • Junior Admin

Reputacja: 2 079
Godlike

  • Postów:5 710
  • Imię:Adaś
  • Lokalizacja:No teraz trochę dalej od WWy
Offline

Napisano 01.10.2024 07:20

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