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


Dodatki SourceMod



Temat jest zamknięty


my_sql.amxx






