#include <a_samp>#include <mysql>#include <zcmd>#include <sscanf>//regisztracio,bejelentkezes#define MAX_PROBAK 3 //maximum ennyiszer próbálkozhat a bejelentkezéssel#define JELSZO_MAX_HOSSZ 64//mysql kapcsolat adatai#define HOST \"127.0.0.1\" //mysql szerver ip#define FELHASZNALO \"root\" //felhasználónév mysql-en#define JELSZO \"\" //jelszó mysql-en#define ADATBAZIS \"samp\" //adatbázis név#define COLOR_RED 0xFF0000AAnew MySQL:kapcsolat;//jatekos adataienum info{ belepve}new pinfo[MAX_PLAYERS][info];forward bejelentkezes(playerid);public OnFilterScriptInit(){kapcsolat = mysql_init(LOG_ONLY_ERRORS, 1); //a hibák logolásának beállításamysql_connect(HOST, FELHASZNALO, JELSZO, ADATBAZIS, kapcsolat); //lapcsolat létesítése //mysql tábla létrehozása, ha nem létezikmysql_query(\"CREATE TABLE IF NOT EXISTS jatekosok (id TINYINT(1) NOT NULL AUTO_INCREMENT primary key,nev varchar(30),jelszo varchar(32));\",-1,-1,kapcsolat);return 1;}CMD:reg(playerid,params[]){//ezt a 3-at gondolom érted... if(pinfo[playerid][belepve] == 1) return SendClientMessage(playerid,COLOR_RED,\"Már be vagy jelentkezve.\");if(!strlen(params)) return SendClientMessage(playerid,COLOR_RED,\"/reg [jelszó]\");if(strlen(params) > JELSZO_MAX_HOSSZ) return SendClientMessage(playerid,COLOR_RED,\"A jelszó túl hosszú!\");new nev[MAX_PLAYER_NAME],str[128],esc[2][128];GetPlayerName(playerid,nev,sizeof(nev));//a beírt jelszót és a nevét a biztonság kedvéért áthelyezzük egy tömbbe (nem kötelezõ, de ezzel meg lehet akadályozni a mysql injection-t)mysql_real_escape_string(nev,esc[0],kapcsolat);mysql_real_escape_string(params,esc[1],kapcsolat); //kiválasztjuk azt a cellát a \"nev\" sorból, ahol a cella tartalma egyenlõ a játékos nevévelformat(str,sizeof(str),\"SELECT nev FROM jatekosok WHERE nev = \'%s\'\",esc[0]);mysql_query(str,-1,-1,kapcsolat);//eltároljuk az eredménytmysql_store_result();//ha nem talált ilyen cellátif(mysql_num_rows() == 0){ //beillesztjük a táblába a játékos adatait format(str,sizeof(str),\"INSERT INTO jatekosok (nev,jelszo) VALUES(\'%s\',\'%s\');\",esc[0],esc[1]); mysql_query(str,-1,-1,kapcsolat); SendClientMessage(playerid,COLOR_RED,\"Sikeres regisztráció. Automatikusan be lettél léptetve.\"); bejelentkezes(playerid); //bejelentkeztetjük}else //ha viszint talált{ SendClientMessage(playerid,COLOR_RED,\"Ez a név már regisztrálva van!\");}mysql_free_result(); //töröljük az eltárolt eredménytreturn 1;}CMD:login(playerid,params[]){//ez a 2 érthetõ gondolomif(pinfo[playerid][belepve] == 1) return SendClientMessage(playerid,COLOR_RED,\"Már be vagy jelentkezve.\");if(!strlen(params)) return SendClientMessage(playerid,COLOR_RED,\"/login [jelszó]\");new nev[MAX_PLAYER_NAME],str[128],esc[2][128]; //esc[0] = név, esc[1] = jelszóGetPlayerName(playerid,nev,sizeof(nev));//mint a regisztrációnál...mysql_real_escape_string(nev,esc[0],kapcsolat);mysql_real_escape_string(params,esc[1],kapcsolat);//ez is ugyan úgyformat(str,sizeof(str),\"SELECT nev FROM jatekosok WHERE nev = \'%s\'\",esc[0]);mysql_query(str,-1,-1,kapcsolat);mysql_store_result(); //még mindig//ha talált ilyen cellátif(mysql_num_rows() != 0){ mysql_free_result(); //kijelölünk egy cellát a \"jelszo\" sorból ahol a jelszó megegyezik a beírttal, és a név isformat(str,sizeof(str),\"SELECT jelszo FROM jatekosok WHERE jelszo = \'%s\' AND nev = \'%s\'\",esc[1],esc[0]);mysql_query(str,-1,-1,kapcsolat);mysql_store_result();//ha talált ilyen cellátif(mysql_num_rows() != 0){ SendClientMessage(playerid,COLOR_RED,\"Sikeres bejelentkezes\"); bejelentkezes(playerid); } else //ha nemt alált (tehát rossz a jelszó) { SendClientMessage(playerid,COLOR_RED,\"Hibás jelszó\"); SetPVarInt(playerid,\"probak\",GetPVarInt(playerid,\"probak\") + 1); if(GetPVarInt(playerid,\"probak\") == MAX_PROBAK) { Kick(playerid); } }}else{ SendClientMessage(playerid,COLOR_RED,\"Nincs ilyen név regisztrálva\");}mysql_free_result();return 1;}public bejelentkezes(playerid){ //ide jöhetnek a cuccok amit bejelentkezésnél akarsz (adminszint kiolvasás stb...) pinfo[playerid][belepve] = 1; return 1;}public OnPlayerDisconnect(playerid){pinfo[playerid][belepve] = 0;}
#include <a_samp>#include <mysql>#include <zcmd>#include <sscanf>//regisztracio,bejelentkezes#define MAX_PROBAK 3 //maximum ennyiszer próbálkozhat a bejelentkezéssel#define JELSZO_MAX_HOSSZ 64//mysql kapcsolat adatai#define HOST \"127.0.0.1\" #define FELHASZNALO \"root\"#define JELSZO \"\"#define ADATBAZIS \"samp\"#define COLOR_RED 0xFF0000AAnew MySQL:kapcsolat;new str[128];//jatekos adataienum info{ belepve, alvl, halalok, olesek}new pinfo[MAX_PLAYERS][info];forward bejelentkezes(playerid,nev[]);public OnFilterScriptInit(){print(\"\\n----------------------------------\");print(\" MySQL teszt by DaVe\");print(\"----------------------------------\\n\");kapcsolat = mysql_init(LOG_ONLY_ERRORS, 1); mysql_connect(HOST, FELHASZNALO, JELSZO, ADATBAZIS, kapcsolat); mysql_query(\"CREATE TABLE IF NOT EXISTS jatekosok (id TINYINT(1) NOT NULL AUTO_INCREMENT primary key,nev varchar(30),jelszo varchar(32),alvl TINYINT(1),penz MEDIUMINT(1),halalok TINYINT(1), olesek TINYINT(1));\",-1,-1,kapcsolat);return 1;}CMD:reg(playerid,params[]){ if(pinfo[playerid][belepve] == 1) return SendClientMessage(playerid,COLOR_RED,\"Már be vagy jelentkezve.\");if(!strlen(params)) return SendClientMessage(playerid,COLOR_RED,\"/reg [jelszó]\");if(strlen(params) > JELSZO_MAX_HOSSZ) return SendClientMessage(playerid,COLOR_RED,\"A jelszó túl hosszú!\");new nev[MAX_PLAYER_NAME],esc[2][128];GetPlayerName(playerid,nev,sizeof(nev));mysql_real_escape_string(nev,esc[0],kapcsolat);mysql_real_escape_string(params,esc[1],kapcsolat);format(str,sizeof(str),\"SELECT nev FROM jatekosok WHERE nev = \'%s\'\",esc[0]);mysql_query(str,-1,-1,kapcsolat);mysql_store_result();if(mysql_num_rows() == 0){ format(str,sizeof(str),\"INSERT INTO jatekosok (nev,jelszo,alvl,penz) VALUES(\'%s\',\'%s\',1,%d);\",esc[0],esc[1],GetPlayerMoney(playerid)); mysql_query(str,-1,-1,kapcsolat); SendClientMessage(playerid,COLOR_RED,\"Sikeres regisztráció. Automatikusan be lettél léptetve.\"); bejelentkezes(playerid,nev);}else{ SendClientMessage(playerid,COLOR_RED,\"Ez a név már regisztrálva van!\");}mysql_free_result();return 1;}CMD:login(playerid,params[]){if(pinfo[playerid][belepve] == 1) return SendClientMessage(playerid,COLOR_RED,\"Már be vagy jelentkezve.\");if(!strlen(params)) return SendClientMessage(playerid,COLOR_RED,\"/login [jelszó]\");new nev[MAX_PLAYER_NAME],esc[2][128]; //esc[0] = név, esc[1] = jelszóGetPlayerName(playerid,nev,sizeof(nev));mysql_real_escape_string(nev,esc[0],kapcsolat);mysql_real_escape_string(params,esc[1],kapcsolat);format(str,sizeof(str),\"SELECT nev FROM jatekosok WHERE nev = \'%s\'\",esc[0]);mysql_query(str,-1,-1,kapcsolat);mysql_store_result();if(mysql_num_rows() != 0){ mysql_free_result();format(str,sizeof(str),\"SELECT jelszo FROM jatekosok WHERE jelszo = \'%s\'\",esc[1]);mysql_query(str,-1,-1,kapcsolat);mysql_store_result();if(mysql_num_rows() != 0){ SendClientMessage(playerid,COLOR_RED,\"Sikeres bejelentkezes\"); bejelentkezes(playerid,nev); } else { SendClientMessage(playerid,COLOR_RED,\"Hibás jelszó\"); SetPVarInt(playerid,\"probak\",GetPVarInt(playerid,\"probak\") + 1); if(GetPVarInt(playerid,\"probak\") == MAX_PROBAK) { Kick(playerid); } }}else{ SendClientMessage(playerid,COLOR_RED,\"Nincs ilyen név regisztrálva\");}mysql_free_result();return 1;}public bejelentkezes(playerid,nev[]){ format(str,sizeof(str),\"SELECT alvl FROM jatekosok WHERE nev = \'%s\'\",nev); mysql_query(str,-1,-1,kapcsolat); mysql_store_result(); pinfo[playerid][alvl] = mysql_fetch_int(kapcsolat); mysql_free_result(); format(str,sizeof(str),\"SELECT penz FROM jatekosok WHERE nev = \'%s\'\",nev); mysql_query(str,-1,-1,kapcsolat); mysql_store_result(); SetPlayerMoney(playerid,mysql_fetch_int(kapcsolat)); mysql_free_result(); format(str,sizeof(str),\"SELECT olesek FROM jatekosok WHERE nev = \'%s\'\",nev); mysql_query(str,-1,-1,kapcsolat); mysql_store_result(); pinfo[playerid][olesek] = mysql_fetch_int(kapcsolat); mysql_free_result(); format(str,sizeof(str),\"SELECT halalok FROM jatekosok WHERE nev = \'%s\'\",nev); mysql_query(str,-1,-1,kapcsolat); mysql_store_result(); pinfo[playerid][halalok] = mysql_fetch_int(kapcsolat); mysql_free_result(); pinfo[playerid][belepve] = 1; return 1;}public OnPlayerDeath(playerid,killerid,reason){pinfo[playerid][halalok]++;pinfo[killerid][olesek]++;} public OnPlayerDisconnect(playerid){if(pinfo[playerid][belepve] == 1){new nev[MAX_PLAYER_NAME];GetPlayerName(playerid,nev,sizeof(nev));format(str,sizeof(str),\"UPDATE jatekosok SET penz=%d WHERE nev=\'%s\'\",GetPlayerMoney(playerid),nev);mysql_query(str,-1,-1,kapcsolat);format(str,sizeof(str),\"UPDATE jatekosok SET olesek=%d WHERE nev=\'%s\'\",pinfo[playerid][olesek],nev);mysql_query(str,-1,-1,kapcsolat);format(str,sizeof(str),\"UPDATE jatekosok SET halalok=%d WHERE nev=\'%s\'\",pinfo[playerid][halalok],nev);mysql_query(str,-1,-1,kapcsolat);pinfo[playerid][belepve] = 0;}}stock SetPlayerMoney(playerid, money){ ResetPlayerMoney(playerid); GivePlayerMoney(playerid, money);}