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.
|

jak to napisać ? MySQL + AMXX
#1
Napisano 19.05.2011 17:59
Mógłby ktoś powiedzieć jak zrobić, że jak ktoś wpisze say /add to wtedy dodaje nowy rekord do MySQL z jego nickiem ?
#2
Napisano 19.05.2011 19:08
mam rację, że nie i chcesz gotowca?
#3
Napisano 19.05.2011 19:09
#4
Napisano 19.05.2011 19:14
w takim razie ten temat wyczerpuje asynchroniczne wykonywanie zapytań,
złap komendę add
register_clcmd("say /add", "cmdAdd");
public cmdAdd(id){ new szName[32]; get_user_name(id, szName, 31); dodajNickDoBazy(id, szName); }
dodajNickDoBazy powinno wywołać SQL_ThreadQuery z INSERTem
zanim insert to musisz mieć tabelę, więc w ten sam sposób w plugin_cfg powiedzmy zrób CREATE`y
#5
Napisano 19.05.2011 20:42
chciałbym żeby ktoś zrobił, że jak ktoś wpisze say /add to wykona się zapytanie
insert into config set keyname='NICK_GRACZA', val='yes'
#6
Napisano 19.05.2011 21:54
#include <amxmodx> #include <amxmisc> #include <sqlx> #define PLUGIN "SQL Test" #define VERSION "1.0" #define AUTHOR "R3X" new Handle:gTuple; new gszQuery[512]; new const giMax = sizeof(gszQuery); stock SQL_PrepareString(const szQuery[], szOutPut[], size){ copy(szOutPut, size, szQuery); replace_all(szOutPut, size, "'", "\'"); replace_all(szOutPut,size, "`", "\`"); } public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR); register_clcmd("say /add", "cmdAdd"); } public plugin_cfg(){ gTuple = SQL_MakeDbTuple("localhost", "root", "root", "test"); if(gTuple == Empty_Handle){ set_fail_state("Cant create connection tuple"); } new iErr, szError[32]; new Handle:link = SQL_Connect(gTuple, iErr, szError, 31); if(link == Empty_Handle){ log_amx("Error (%d): %s", iErr, szError); set_fail_state("Cant connect to database"); } new Handle:query; query = SQL_PrepareQuery(link, "CREATE TABLE IF NOT EXISTS `config`( \ cid INT(11) UNSIGNED AUTO_INCREMENT,\ keyname VARCHAR(32) NOT NULL, \ val VARCHAR(32) NOT NULL, \ PRIMARY KEY(cid) \ )"); SQL_Execute(query); SQL_FreeHandle(query); SQL_FreeHandle(link); } public cmdAdd(id){ new szName[64]; get_user_name(id, szName, 31); SQL_PrepareString(szName, szName, 63) new data[1]; data[0] = id; formatex(gszQuery, giMax, "INSERT INTO `config` SET keyname='%s', val='yes'", szName); SQL_ThreadQuery(gTuple, "handleInsertNick", gszQuery, data, sizeof(data)); } public handleInsertNick(failstate, Handle:query, error[], errnum, data[], size){ if(failstate != TQUERY_SUCCESS){ log_amx("SQL Insert error: %s",error); return; } client_print(data[0], print_chat, "Dodano!"); }
#7
Napisano 20.05.2011 14:04


#8
Napisano 20.05.2011 14:25


#9
Napisano 20.05.2011 15:19
Oto mój kod w załączniku ale nie działa
Załączone pliki
Użytkownik shoter09 edytował ten post 20.05.2011 15:20
#10
Napisano 20.05.2011 15:37
Poczytaj tutoriale i dokumentację naszą czy też oryginalną. Dużo informacji jest też dostępnych w plikach .inc amxxa. Nie jestem Ci w stanie w tym momencie pomóc, wyjdzie ma to, że sam napiszę cały Twój plugin.
#11
Napisano 20.05.2011 15:40
#12
Napisano 20.05.2011 15:42
#13
Napisano 20.05.2011 15:55
Kod w załączniku powiedźcie co jest źle

i jeszcze jak zrobić, że jak wpisze /t to pokazuje się w say "Dodano czas", a jak /m to "Dodano mape" ?
Załączone pliki
Użytkownik shoter09 edytował ten post 20.05.2011 22:21
Użytkownicy przeglądający ten temat: 1
0 użytkowników, 1 gości, 0 anonimowych