←  Problemy

AMXX.pl: Support AMX Mod X i SourceMod

»

Błąd zapytania SQL

  • +
  • -
DarkLink - zdjęcie DarkLink 06.03.2015

Witam, kilka dni temu zacząłem się uczyć pisania pluginów, no i napotkałem problem przy sql, a dokładniej łączy mnie z bazą danych, ale nie mogę zwrócić żadnych wyników, a zwracany błąd to "HamFilter" i nie wiem o co dokładniej chodzi :/ Mam dosyć spore doświadczenie w pisaniu kodów, a przynajmniej rozumiem co i jak :D ale w PAWN'ie nigdy nie pisałem.

Oto kod:

#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <engine>
#include <fakemeta>
#include <fun>
#include <hamsandwich>
#include <sqlx>

#define PLUGIN "Mysql"
#define VERSION "1.0"
#define AUTHOR "DarkLink"

new Handle:gTuple;

public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	register_clcmd("say test","CheckData",ADMIN_KICK,"Testuje polaczenie")
	gTuple = SQL_MakeDbTuple("host","uzytkownik","haslo","baza")
}

public CheckData(id){

new Data[1]
Data[0] = id;
new qCommand[512], szName[32]
get_user_name(id, szName, charsmax(szName))
format(qCommand, sizeof qCommand-1, "SELECT * FROM `jml_cs_curskin` WHERE `nick` = '%s'", szName)
SQL_ThreadQuery(gTuple, "CheckHandler", qCommand, Data, 1)
}

public CheckHandler(FailState, Handle:Query, Errorcode, Error[], Data[], DataSize)
{
new id = Data[0]
if(Errorcode)
log_amx("Blad w zapytaniu: %s [CheckData]", Error)

if(FailState == TQUERY_CONNECT_FAILED)
{
log_amx("Nie mozna podlaczyc sie do bazy danych.")
return PLUGIN_CONTINUE
}
else if(FailState == TQUERY_QUERY_FAILED)
{
log_amx("Zapytanie anulowane [CheckData]")
return PLUGIN_CONTINUE
}

if(!SQL_MoreResults(Query))
log_amx("Brak danych!")
else
{
new zwrot[1];
zwrot[0] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "userid"));
client_print(id,print_chat,zwrot[0])
}

return PLUGIN_CONTINUE
}

Natomiast zwracana wartość po wpisaniu w konsoli "say test" lub w say'u "test" to:

 

L 03/06/2015 - 17:16:50: [testsql.amxx] Blad w zapytaniu: HamFilter [CheckData]

Prosiłbym o pomoc :)

 

//Edit:

Zmieniając linijki od 53. do 55. na:

new szText[128];
SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "userid"), szText, 127);
console_print(id,"Tekst: %s", szText)

Wyświetla mi

 

Tekst: 986

Czyli to co chciałem, ale nadal wyrzuca ten błąd w zapytaniu: HamFilter, nie wie ktoś o co chodzi?


Użytkownik DarkLink edytował ten post 06.03.2015 17:48
Odpowiedz

  • +
  • -
Biometr - zdjęcie Biometr 24.03.2015

#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <engine>
#include <fakemeta>
#include <fun>
#include <hamsandwich>
#include <sqlx>

Po co ładujesz wszystko, zostaw tylko to czego używasz a problem zniknie.

 

Odpowiedz

  • +
  • -
GwynBleidD - zdjęcie GwynBleidD 25.03.2015

@ Biometr taa, jak ręką odjął normalnie... Moduły absolutnie nie wpływają na to, jak plugin działa (no chyba, że któryś celowo modyfikuje jego działanie lub jest uszkodzony, a to nie ten przypadek). A widać są potrzebne (we fragmencie pluginu, który nie został zamieszczony?).
 
@ DarkLink, problem znajduje się tu:
 
public CheckHandler(FailState, Handle:Query, Errorcode, Error[], Data[], DataSize)
Masz zamienioną kolejność parametrów, powinno być:
 
public CheckHandler(FailState, Handle:Query, Error[], Errorcode, Data[], DataSize)
Przez tą zamianę kompletne zamieszanie się dzieje w kodzie.

Napisz skąd wytrzasnąłeś tą kolejność parametrów, bo przydałoby się ją zmienić u źródła, nie pierwszy raz widzę tego babola więc sądzę, że gdzieś w necie ten babol wisi...
sebul (25.03.2015 15:33):
Bardzo prawdopodobne, że gdzieś u nas jest ten babol ^ ^
GwynBleidD (25.03.2015 22:24):
Dlatego poprosiłem o źródło, bo jak boga kocham sam kiedyś na to trafiłem :)
GwynBleidD (25.03.2015 22:32):
http://amxx.pl/topic...ię-je/?p=144797 znalazłem i poprawiłem, dziękuję bardzo :)
Odpowiedz