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.
|
Łączenie z baza danych.
#1
Napisano 18.06.2012 21:28
Posiadam w pliku źródłowym to co poniżej i nie wiem gdzie wpisać dane czy poniżej czy gdzieś w plik
new Host[] = ""
new User[] = ""
new Pass[] = ""
new Db[] = ""
#2
Napisano 18.06.2012 21:31
new Host[] = "Host"
If you can dream it, you can do it.
#3
Napisano 18.06.2012 21:33
#4
Napisano 18.06.2012 21:45
Wywala w konsoli błąd:
L 06/27/2011 - 11:40:15: [AMXX] Plugin says: Can't connect to MySQL server on '192.168.101.53' (110)
L 06/27/2011 - 11:40:15: [AMXX] Displaying debug trace (plugin "plugin.amxx")
L 06/27/2011 - 11:40:15: [AMXX] Run time error 1: forced exit
L 06/27/2011 - 11:40:15: [AMXX] [0] plugin.sma::MySql_Init (line 1848)
Linijka w sma:
set_fail_state(g_Error)
public MySql_Init() { // we tell the API that this is the information we want to connect to, // just not yet. basically it's like storing it in global variables g_SqlTuple = SQL_MakeDbTuple(Host,User,Pass,Db) // ok, we're ready to connect new ErrorCode,Handle:SqlConnection = SQL_Connect(g_SqlTuple,ErrorCode,g_Error,charsmax(g_Error)) if(SqlConnection == Empty_Handle) // stop the plugin with an error message set_fail_state(g_Error) new Handle:Queries // we must now prepare some random queries Queries = SQL_PrepareQuery(SqlConnection,"CREATE TABLE IF NOT EXISTS cod (nick varchar(32),klasa varchar(32), doswiadczenie INT(11), poziom INT(5), inteligencja INT(5), zdrowie INT(5), wytrzymalosc INT(5), kondycja INT(5))") if(!SQL_Execute(Queries)) { // if there were any problems SQL_QueryError(Queries,g_Error,charsmax(g_Error)) set_fail_state(g_Error) } // close the handle SQL_FreeHandle(Queries) // you free everything with SQL_FreeHandle SQL_FreeHandle(SqlConnection) }
Użytkownik MenTo(S) edytował ten post 18.06.2012 21:46
#5
Napisano 18.06.2012 21:57
[color=#FFFFFF][font=monospace][size=3][background=rgb(0, 0, 0)]L 06/27/2011 - 11:40:15: [AMXX] Plugin says: Can't connect to MySQL server on '192.168.101.53' (110)[/background][/size][/font][/color]
Nie można połączyć się z bazą danych.
#6
Napisano 18.06.2012 22:10
L 06/27/2011 - 12:03:22: [MySQL] Invalid database handle: 0 L 06/27/2011 - 12:03:22: [AMXX] Displaying debug trace (plugin "plugin.amxx") L 06/27/2011 - 12:03:22: [AMXX] Run time error 10: native error (native "SQL_PrepareQuery") L 06/27/2011 - 12:03:22: [AMXX] [0] plugin.sma::MySql_Init (line 1848) L 06/27/2011 - 12:04:12: [MySQL] Invalid info tuple handle: 1 L 06/27/2011 - 12:04:12: [AMXX] Displaying debug trace (plugin "plugin.amxx") L 06/27/2011 - 12:04:12: [AMXX] Run time error 10: native error (native "SQL_ThreadQuery") L 06/27/2011 - 12:04:12: [AMXX] [0] plugin.sma::WczytajDane (line 1872) L 06/27/2011 - 12:04:12: [AMXX] [1] plugin.sma::Wybierzfrakcje_Handle (line 1251) L 06/27/2011 - 12:04:13: [MySQL] Invalid info tuple handle: 1 L 06/27/2011 - 12:04:13: [AMXX] Displaying debug trace (plugin "plugin.amxx") L 06/27/2011 - 12:04:13: [AMXX] Run time error 10: native error (native "SQL_ThreadQuery") L 06/27/2011 - 12:04:13: [AMXX] [0] plugin.sma::register_client (line 1896) L 06/27/2011 - 12:04:20: [MySQL] Invalid info tuple handle: 1 L 06/27/2011 - 12:04:20: [AMXX] Displaying debug trace (plugin "plugin.amxx") L 06/27/2011 - 12:04:20: [AMXX] Run time error 10: native error (native "SQL_ThreadQuery") L 06/27/2011 - 12:04:20: [AMXX] [0] plugin.sma::ZapiszDane (line 1862) L 06/27/2011 - 12:04:20: [AMXX] [1] plugin.sma::client_disconnect (line 1075) L 06/27/2011 - 12:04:34: [MySQL] Invalid info tuple handle: 1 L 06/27/2011 - 12:04:34: [AMXX] Displaying debug trace (plugin "plugin.amxx") L 06/27/2011 - 12:04:34: [AMXX] Run time error 10: native error (native "SQL_ThreadQuery") L 06/27/2011 - 12:04:34: [AMXX] [0] plugin.sma::register_client (line 1896)
Zaraz podam kod do nich:
public MySql_Init() { // we tell the API that this is the information we want to connect to, // just not yet. basically it's like storing it in global variables g_SqlTuple = SQL_MakeDbTuple(Host,User,Pass,Db) // ok, we're ready to connect new ErrorCode,Handle:SqlConnection = SQL_Connect(g_SqlTuple,ErrorCode,g_Error,charsmax(g_Error)) new Handle:Queries Queries = SQL_PrepareQuery(SqlConnection,"CREATE TABLE IF NOT EXISTS cod (nick varchar(32),klasa varchar(32), doswiadczenie INT(11), poziom INT(5), inteligencja INT(5), zdrowie INT(5), wytrzymalosc INT(5), kondycja INT(5))") // close the handle SQL_FreeHandle(Queries) // you free everything with SQL_FreeHandle SQL_FreeHandle(SqlConnection) }
Queries = SQL_PrepareQuery(SqlConnection,"CREATE TABLE IF NOT EXISTS cod (nick varchar(32),klasa varchar(32), doswiadczenie INT(11), poziom INT(5), inteligencja INT(5), zdrowie INT(5), wytrzymalosc INT(5), kondycja INT(5))")
public WczytajDane(id, klasa) { new szTemp[512]; new Data[1]; format(szTemp,charsmax(szTemp),"SELECT * FROM `cod` WHERE (`nick` = '%s' AND `klasa` = '%s')", nazwa_gracza[id], klasa_gracza[id]); SQL_ThreadQuery(g_SqlTuple,"register_client",szTemp, Data, 1); }
SQL_ThreadQuery(g_SqlTuple,"register_client",szTemp, Data, 1);
public Wybierzfrakcje_Handle(id, menu2, item) { if(item == MENU_EXIT) { menu_destroy(menu2); return PLUGIN_CONTINUE; } item++; frakcja_gracza[id] = item; new menu = menu_create("Wybierz klase:", "WybierzKlase_Handle"); new klasa[50]; for(new i=1; i<sizeof nazwy_klas; i++) { if(nalezy_do[i] == item) { WczytajDane(id, i); format(klasa, 49, "%s \yPoziom: %i", nazwy_klas[i], poziom_gracza[id]); menu_additem(menu, klasa); } } WczytajDane(id, klasa_gracza[id]); menu_setprop(menu, MPROP_EXITNAME, "Wyjdz"); menu_setprop(menu, MPROP_BACKNAME, "Poprzednia strona"); menu_setprop(menu, MPROP_NEXTNAME, "Nastepna strona"); menu_display(id, menu); client_cmd(id, "spk QTM_CodMod/select"); #if defined BOTY if(is_user_bot(id)) WybierzKlase_Handle(id, menu, random(sizeof nazwy_klas-1)); #endif return PLUGIN_CONTINUE; }
WczytajDane(id, i);
public register_client(FailState,Handle:Query,Error[],Errcode,Data[],DataSize) { 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); } new id; id = Data[0]; if(SQL_NumResults(Query) < 1) { new szTemp[512]; // now we will insturt the values into our table. format(szTemp,charsmax(szTemp),"INSERT INTO `cod` ( `nick` , `klasa`, `doswiadczenie`, `poziom`, `inteligencja`, `wytrzymalosc`, `kondycja`, `zdrowie`)VALUES ('%s','%s', '0', '0', '0', '0', '0', '0');", nazwa_gracza[id], klasa_gracza[id]); SQL_ThreadQuery(g_SqlTuple,"IgnoreHandle",szTemp); } else { // if there are results found doswiadczenie_gracza[id] = SQL_ReadResult(Query,SQL_FieldNameToNum(Query,"doswiadczenie")) poziom_gracza[id] = SQL_ReadResult(Query,SQL_FieldNameToNum(Query,"poziom")) if(poziom_gracza[id]==0) poziom_gracza[id]=1 inteligencja_gracza[id] = SQL_ReadResult(Query,SQL_FieldNameToNum(Query,"inteligencja")) zdrowie_gracza[id] = SQL_ReadResult(Query,SQL_FieldNameToNum(Query,"zdrowie")) wytrzymalosc_gracza[id] = SQL_ReadResult(Query,SQL_FieldNameToNum(Query,"wytrzymalosc")) kondycja_gracza[id] = SQL_ReadResult(Query,SQL_FieldNameToNum(Query,"kondycja")) punkty_gracza[id] = (poziom_gracza[id]-1)*2-inteligencja_gracza[id]-zdrowie_gracza[id]-wytrzymalosc_gracza[id]-kondycja_gracza[id]; SQL_ReadResult(Query,SQL_FieldNameToNum(Query,"nick"), klasa_gracza[id], 31) } return PLUGIN_HANDLED; }
SQL_ThreadQuery(g_SqlTuple,"IgnoreHandle",szTemp);
public ZapiszDane(id) { new szTemp[512]; format(szTemp,charsmax(szTemp),"UPDATE `cod` SET `klasa` = '%d', `nick` = '%s', `doswiadczenie` = '%i', `poziom` = '%i', `inteligencja` = '%i', `zdrowie` = '%i', `wytrzymalosc` = '%i', `kondycja` = '%i';",klasa_gracza[id], nazwa_gracza[id], doswiadczenie_gracza[id], poziom_gracza[id], inteligencja_gracza[id], zdrowie_gracza[id], wytrzymalosc_gracza[id], kondycja_gracza[id]); SQL_ThreadQuery(g_SqlTuple,"IgnoreHandle",szTemp); SQL_FreeHandle(g_SqlTuple); }
SQL_ThreadQuery(g_SqlTuple,"IgnoreHandle",szTemp);
public client_disconnect(id) { UsunTask(id); ZapiszDane(id); UsunPrzedmiot(id); SaveAktQuest(id, ePlayerQuestType[id]); ResetQuest(id); }
ZapiszDane(id);
Użytkownik MenTo(S) edytował ten post 18.06.2012 22:11
#7 Gość_21977_*
Napisano 18.06.2012 22:34
Ten temat został zamknięty przez moderatora.
Powód: Temat zamknięty na prośbę użytkownika.
Z pozdrowieniami,
Zespół AMXX.PL
Użytkownicy przeglądający ten temat: 0
0 użytkowników, 0 gości, 0 anonimowych