Amint lesz kedvem, idõm és türlemem, kiadom a sajátom Tongue ( Mert sztem az összes publikált közül az a legjobb/legegyszerûbb )[/quote]Légyszíves akkor siess , mert már nagyon kéne a mysql Egyébként én is csak beraktam a server mappába
Amint lesz kedvem, idõm és türlemem, kiadom a sajátom Tongue ( Mert sztem az összes publikált közül az a legjobb/legegyszerûbb )Légyszíves akkor siess , mert már nagyon kéne a mysql Egyébként én is csak beraktam a server mappába [/quote]Na megvan! Már csak tesztelnem kell, hogy megy-e és holnap kiadom.
Amint lesz kedvem, idõm és türlemem, kiadom a sajátom Tongue ( Mert sztem az összes publikált közül az a legjobb/legegyszerûbb )
#include <a_samp>#include <a_mysql> // http://forum.sa-mp.com/showthread.php?t=56564#include <sscanf2> // http://forum.sa-mp.com/showthread.php?t=120356#include <zcmd>new year,month,day,hour,minute,second;// Stringeket egyszer hozom csak létre, hogy kevesebb meriát fogyassztjon.new query[128],line[128],//i_str[128],tmp[128],name[24],ip[16];// MySQL regisztrációs rendszer By kurta999/* mysql_query Egy megadott \'parancs\' elküldése mysql_store_result Ez akkor kell, hogy ha ezeket használjuk: SELECT, INSERT INTO mysql_free_result(); Ez a store_result után kell, \'szabad eltérés\' xDmysql_num_rows SQL sorok száma mysql_fetch_row A kiválasztott sort beleírjuk egy megadott karakterláncba, egy megadott elválasztóval, alapból ez: |*/// MySQL beállítások, alapból ezek azok a wamp-nál, csak a tábla nevét módosítsd arra, amilyen néven létrehoztad, nekem itt a \'samp\'#define MYSQL_HOST \"localhost\"#define MYSQL_USER \"root\"#define MYSQL_PASS \"\"#define MYSQL_DB \"samp\"#define COLOR_GREY 0x375FFFFF#define COLOR_GREEN 0x33FF33AA#define COLOR_RED 0xFF0000AA#define COLOR_YELLOW 0xFF9900AA#define COLOR_WHITE 0xFFFFFFAA#define COLOR_BLUE 0x33CCFFAA #define COLOR_LIGHTBLUE 0x33CCFFAA#define COLOR_BASIC 0x0066FFAA#define COLOR_SYSTEM 0xEFEFF7AA#define COLOR_LIGHTBLUE 0x33CCFFAA#define COLOR_PINK 0xFF66FFAApublic OnFilterScriptInit(){ // MySQLprint(\"MySQL Kapcsolódás erre a címre \" MYSQL_HOST \" \" MYSQL_USER \" nevû felhasználóval. Adatbázis neve: \" MYSQL_DB \".\");mysql_debug(1);mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_DB, MYSQL_PASS);if(mysql_ping() != 1){ print(\"MySQL Kapcsolódás sikertelen! (\" MYSQL_HOST \")\"); print(\"MySQL Újrakapcsolódás! (\" MYSQL_HOST \")\"); mysql_reconnect();return 1;}print(\"MySQL Kapcsolódás elfogadva!\" MYSQL_HOST \"\");print(\"MySQL Adatbázis \" MYSQL_DB \" kiválasztva!\"); return 1;}public OnFilterScriptExit(){mysql_close(); return 1;}public OnPlayerConnect(playerid){ SetPVarInt(playerid, \"LoggedIn\", 0); SetPVarInt(playerid, \"RegID\", -1); // Automatikus bejelentkezés if(!IsPlayerNPC(playerid)){new MyRegID;GetPlayerIp(playerid, ip, sizeof(ip)); // Autologinformat(query, sizeof(query), \"SELECT * FROM `players` WHERE `name` = \'%s\' AND `ip` = \'%s\'\", pName(playerid), ip);mysql_query(query);mysql_store_result();if(mysql_num_rows() != 0) // Ha a sor nem üres{ mysql_fetch_row(line); mysql_free_result(); sscanf(line, \"p<|>{ds[24]s[20]s[30]s[30]}d\", MyRegID); SetPVarInt(playerid, \"RegID\", MyRegID); LoginPlayer(playerid, line); SendClientMessage(playerid, COLOR_GREEN, \"Automatikusan bejelentkeztél.\");}} return 1;}public OnPlayerDisconnect(playerid, reason){if(GetPVarInt(playerid, \"LoggedIn\")){SavePlayer(playerid); } return 1;}public OnPlayerRequestClass(playerid, classid){ if(!GetPVarInt(playerid, \"LoggedIn\")) // Ha nincs bejelentkezve, ez a lekérés ide nagyon fontos mert minden gobnyomásnál felmutatná a skiválasztóban. {format(query, sizeof(query), \"SELECT * FROM `players` WHERE `name` = \'%s\'\", pName(playerid)); // Kiválasztjuk, a játékos nevétmysql_query(query);mysql_store_result();if(mysql_num_rows() != 0) // Ha a sorok száma nem 0 ( nem üres ){ LoginDialog(playerid); // Akkor login}else // Ellentétben{ RegisterDialog(playerid); // Register}mysql_free_result(); } return 1;}public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]){ new Pass[32], MyRegID; if(dialogid == 1) { if(response) { if(GetPVarInt(playerid, \"LoggedIn\")) { SendClientMessage(playerid, COLOR_RED, \"Már be vagy jelentkezve.\"); return 1; } if(!strlen(inputtext[0])) { SendClientMessage(playerid, COLOR_RED, \"Nem írtál be semilyen jelszót!\"); LoginDialog(playerid); return 1; } format(query, sizeof(query), \"SELECT * FROM `players` WHERE `name` = \'%s\'\", pName(playerid)); mysql_query(query); mysql_store_result(); mysql_fetch_row(line); mysql_free_result(); sscanf(line, \"p<|>d{s[24]s[20]}s[30]{s[30]s[30]d}\", MyRegID, Pass); SetPVarInt(playerid, \"RegID\", MyRegID); if(!strcmp(inputtext, Pass)) { LoginPlayer(playerid, Pass); } else { SendClientMessage(playerid, COLOR_RED, \"HIBA: Rossz jelszó.\"); return 1; } // Az IP-t beállítjuk a jelenlegi IP-re, hogy az autologin menjen. A GetPlayerIp OnPlayerDisconnect-nél nem mûködik ( szarsággal tér vissza ) GetPlayerIp(playerid, ip, sizeof(ip)); format(query, sizeof(query), \"UPDATE `players` SET `ip` = \'%s\' WHERE `reg_id` = %d\", ip, GetPVarInt(playerid, \"RegID\")); mysql_query(query); SendClientMessage(playerid, COLOR_GREEN, \"Sikeresen bejelentkeztél.\"); }else{ LoginDialog(playerid);} } if(dialogid == 2) { if(response) { if(!strlen(inputtext[0])) { SendClientMessage(playerid, COLOR_RED, \"Nem írtál be semilyen jelszót!\"); RegisterDialog(playerid); return 1; } if(strlen(inputtext) < 3 || strlen(inputtext) > 20) { SendClientMessage(playerid, COLOR_RED, \"Rossz jelszó hosszúság! 3 - 20\"); RegisterDialog(playerid); return 1; } format(query, sizeof(query), \"SELECT `reg_id` FROM `players` WHERE `name` = \'%s\'\", pName(playerid)); mysql_query(query); mysql_store_result(); if(mysql_num_rows() != 0) { return 1; } mysql_free_result(); getdate(year, month, day); gettime(hour, minute, second); GetPlayerIp(playerid, ip, sizeof(ip)); mysql_real_escape_string(inputtext, tmp); // Ez arra van, hogy ha speciális karatereket tartalmaz, akk azt átcsinálja az SQL-nek érthetõre // A jeszavak nincsenek titkosítva... format(query, sizeof(query), \"INSERT INTO `players`(reg_id, name, ip, pass, reg_date) VALUES(0, \'%s\', \'%s\', \'%s\', %d.%d.%d/%d.%d.%d)\", pName(playerid), ip, tmp, year, month, day, hour, minute, second); mysql_query(query); SetPVarInt(playerid, \"RegID\", mysql_insert_id()); // Játékos Regisztrációs ID-jét beállítuk arra, ameik sorba írtunk elõbb ( INSERT INTO ) SendClientFormatMessage(playerid, COLOR_GREEN, \"Sikeresen regisztráltál! A jelszavad: %s. Regisztráció ID: %d\", tmp, GetPVarInt(playerid, \"RegID\")); SendClientMessage(playerid, COLOR_PINK, \"Ennyi lenne a MySQL regisztáció \");}else{ RegisterDialog(playerid);}return 1; }return 1;}// Statisztika felmutatóCMD:stats(playerid){ SendClientFormatMessage(playerid, COLOR_GREEN, \"Név: %s, ID: %d, RegID: %d, Pénz: %d\", pName(playerid), playerid, GetPVarInt(playerid, \"RegID\"), GetPlayerMoney(playerid));return 1;}stock LoginDialog(playerid){ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, \"Bejelentkezés\",\"Üdvözöllek a \\n\\nMySQL teszt szerveren, \\n\\n Te már regisztálva vagy. Lentre írd be a jelszavad\", \"Bejelentkezés\", \"Mégse\");return 1;}stock RegisterDialog(playerid){ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, \"Regisztráció\",\"Üdvözöllek a \\n\\nMySQL teszt szerveren, \\n\\n Itt még nem regisztráltál. Lentre írd be a jelszavad\", \"Regisztáció\", \"Mégse\");return 1;}/* Bejelentkezés */stock LoginPlayer(playerid, result_line[]){new PVarSet[1][MAX_PLAYERS]; // Direkt raktam rá MAX_PLAYERS értéket, mert nekem aznélkül keveredett...sscanf(result_line, \"p<|>{ds[24]s[20]s[30]s[30]s[30]}d\", PVarSet[0][playerid]);GivePlayerMoney(playerid, PVarSet[0][playerid]); SetPVarInt(playerid, \"LoggedIn\", 1);return 1;}SavePlayer(playerid){ if(!GetPVarInt(playerid, \"LoggedIn\")) return 0; // Ha nincs bejelentkezve, akk nem mentjuk, ezt ajánlatos itthagyni...if(!IsPlayerNPC(playerid)) {getdate(year, month, day);gettime(hour, minute, second);format(query, sizeof(query), \"UPDATE `players` SET `laston` = \'%s\', `money` = %d WHERE `reg_id` = %d\",year, month, day, hour, minute, second, GetPlayerMoney(playerid),GetPVarInt(playerid, \"RegID\") ); mysql_query(query); }return 1;}stock pName(playerid){GetPlayerName(playerid, name, sizeof(name));return name;}/*CREATE TABLE IF NOT EXISTS `players` ( `reg_id` smallint(7) NOT NULL auto_increment, `name` varchar(24) NOT NULL, `ip` varchar(20) NOT NULL, `pass` varchar(20) NOT NULL, `reg_date` varchar(24) NOT NULL, `laston` varchar(24) NOT NULL, `money` int(20) NOT NULL default \'50000\', PRIMARY KEY (`reg_id`), KEY `name` (`name`)) ENGINE=MyISAM DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC;*/stock SendClientFormatMessage(playerid, color, const msg[], {Float,_}:...){new len = strlen(msg),d=0,posArg = 3;new dest[512];for(new i=0;i<len;i++){ if(msg == \'%\') { switch (msg[i+1]) { case \'s\': { new pos,arg,tmppos; new str[128]; while(getarg(posArg,pos)!=\'\\0\') { arg=getarg(posArg,pos++); str[tmppos]=arg; tmppos++; } strins(dest,str,d,strlen(str)); d+=strlen(str); posArg++; i++; } case \'i\', \'d\': { new str[128]; format(str,sizeof(str),\"%d\",getarg(posArg)); strins(dest,str,d,strlen(str)); d+=strlen(str); posArg++; i++; } case \'f\': { new str[128]; format(str,sizeof(str),\"%f\",getarg(posArg)); strins(dest,str,d,strlen(str)); d+=strlen(str); posArg++; i++; } case \'.\': { new len2 = msg[i+2]; if(len2 == 0) { dest[d] = msg; d++; } else { new str[32],formatting[5]; formatting[0] = \'%\'; formatting[1] = \'.\'; formatting[2] = len2; formatting[3] = \'f\'; format(str,sizeof(str),formatting,getarg(posArg)); strins(dest,str,d,len2); d+=len; posArg++; i+= 2; } } default: { dest[d] = msg; d++; } }}else{ dest[d] = msg; d++;}}return SendClientMessage(playerid,color,dest);}stock SendClientFormatMessageToAll(color, const msg[], {Float,_}:...){new len = strlen(msg),d=0,posArg = 2;new dest[128];for(new i=0;i<len;i++){ if(msg == \'%\') { switch (msg[i+1]) { case \'s\': { new pos,arg,tmppos; new str[128]; while(getarg(posArg,pos)!=\'\\0\') { arg=getarg(posArg,pos++); str[tmppos]=arg; tmppos++; } strins(dest,str,d,strlen(str)); d+=strlen(str); posArg++; i++; } case \'i\', \'d\': { new str[128]; format(str,sizeof(str),\"%d\",getarg(posArg)); strins(dest,str,d,strlen(str)); d+=strlen(str); posArg++; i++; } case \'f\': { new str[128]; format(str,sizeof(str),\"%f\",getarg(posArg)); strins(dest,str,d,strlen(str)); d+=strlen(str); posArg++; i++; } case \'.\': { new len2 = msg[i+2]; if(len2 == 0) { dest[d] = msg; d++; } else { new str[32],formatting[5]; formatting[0] = \'%\'; formatting[1] = \'.\'; formatting[2] = len2; formatting[3] = \'f\'; format(str,sizeof(str),formatting,getarg(posArg)); strins(dest,str,d,len2); d+=len; posArg++; i+= 2; } } default: { dest[d] = msg; d++; } }}else{ dest[d] = msg; d++;}}return SendClientMessageToAll(color,dest);}#define SendClientMessageToAll SendClientFormatMessageToAll
CREATE TABLE IF NOT EXISTS `players` ( `reg_id` smallint(7) NOT NULL auto_increment, `name` varchar(24) NOT NULL, `ip` varchar(20) NOT NULL, `pass` varchar(20) NOT NULL, `reg_date` varchar(24) NOT NULL, `laston` varchar(24) NOT NULL, `money` int(20) NOT NULL default \'50000\', PRIMARY KEY (`reg_id`), KEY `name` (`name`)) ENGINE=MyISAM DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC;
echo Executing Server Config...lanmode 0rcon_password tesztmaxplayers 500port 7777hostname Teszt !gamemode0 barefilterscripts mysqlplugins mysqlannounce 1query 1weburl www.sa-mp.commaxnpc 0onfoot_rate 40incar_rate 40weapon_rate 40stream_distance 300.0stream_rate 1000
----------Loaded log file: \"server_log.txt\".----------SA-MP Dedicated Server----------------------v0.3b R2, (C)2005-2010 SA-MP Team[14:33:25] [14:33:25] Server Plugins[14:33:25] --------------[14:33:25] Loading plugin: mysql[14:33:26] > MySQL plugin R4-2 successfully loaded.[14:33:26] Loaded.[14:33:26] Loading plugin: sscanf2[14:33:26] Failed.[14:33:26] Loaded 1 plugins.[14:33:26] [14:33:26] Filter Scripts[14:33:26] ---------------[14:33:26] Loading filter script \'mysql.amx\'...[14:33:26] Loaded 1 filter scripts.[14:33:26] ----------------------------------[14:33:26] Bare Script[14:33:26] ----------------------------------[14:33:26] Number of vehicle models: 0[14:33:28] --- Server Shutting Down.[14:33:28] > MySQL plugin unloaded.