[TuT] MySQL log/reg sistem

Započeo SANY_xD
27. Jul 2013. Zaključano
6,999
pregleda
13
postova
Stefan Samper
4
Shot Caller
27. Jul 2013.
Cao, predstavljam vam tutorijal pod nazivom MySQL log/reg sistem !
Da pocnemo:
Otvorite pawno, kliknete new i nastimate sve kako vi ocete...
Prvi korak je ispod
#include 

dodati
#include 

Drugi korak je definirati bazu podataka

#define MYSQL_HOST "localhost"
#define MYSQL_USER "root"
#define MYSQL_DB "sany"
#define MYSQL_PW ""

Ispod toga dodajte :
new Query, konekcija;

Ovo stavite ispod includeove...
Prilagodite svom mysql spajanju
pod:
OnGameModeInIt

dodajte
DBSpoji();
mysql_debug(1);
konekcija = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_DB, MYSQL_PW);

Dodajemo sljedeci Enum
enum pInfo()
{
pAdmin,
pNovac,
pLevel,
pUbistva,
pSmrti
}
new PlayerInfo;

Dodajemo forwardove
forward OnQueryFinish(gQuery[]);
forward ProvjeraIgraca(playerid);
forward LogirajKorisnika(playerid, sifra);

pod:
OnGameModeExit

stavite
mysql_close();

pod:
OnPlayerConnect

stavite:
mysql_format(konekcija, Query, "SELECT * FROM `korisnici` WHERE `ImeKorisnika` = '%e'", RPIme(playerid));
mysql_function_query(konekcija, Query, false, "ProvjeraIgraca", "d", playerid);

pod:
OnPlayerDisconnect

stavite:
mysql_format(konekcija, Query, "UPDATE `korisnici` SET `Novac` = %d, `Level` = %d, `Admin` = %d, `Ubistva` = %d, `Smrti` = %d", GetPlayerMoney(playerid), GetPlayerScore(playerid), PlayerInfo, PlayerInfo, PlayerInfo);
    mysql_function_query(konekcija, Query, false, "OnQueryFinish", "s", Query);

pod:
OnPlayerDeath

stavite:
PlayerInfo ++;
PlayerInfo ++;

ovo stavite na dno moda
public OnQueryFinish(gQuery[])
{
print("Query se uspjesno izvrsio");
return 1;
}

pod
OnDialogResponse

dodajte
	switch(dialogid)
{
    case 0:
    {
        if(!response) return Kick(playerid);
        mysql_format(konekcija, Query, " SELECT * FROM `korisnici` WHERE ImeKorisnika = '%e' AND Sifra = md5('%e')", RPIme(playerid), inputtext);
        mysql_function_query(konekcija, Query, false, "LogirajKorisnika", "ds", playerid, inputtext);
}
case 1:
{
    new IP;
    GetPlayerIp(playerid, IP, sizeof(IP));
    if(!response) return Kick(playerid);
    mysql_format(konekcija, Query, "INSERT INTO `korisnici` (ImeKorisnika, Sifra, Novac, Level, Admin, Ubistva, Smrti, IP) VALUES('%e', md5('%e'), 5000, 1, 0, 0, 0, '%e')", RPIme(playerid), inputtext, IP);
            mysql_function_query(konekcija, Query, false, "OnQueryFinish", "s", Query);
}
}
if(dialogid == 2)
{
    if(!response) return Kick(playerid);
    if(response)
    {
        SpawnPlayer(playerid);
    }
}
if(dialogid == 3)
{
    new string;
if(!response) return Kick(playerid);
    if(response)
    {
        format(string, sizeof(string), "Login %s  !\nPokusaj ponovo da se logiras!!", RPIme(playerid));
    ShowPlayerDialog(playerid, 0, DIALOG_STYLE_PASSWORD, "Prijava", string, "Prijavi se", "Odustani");
    }
}

na dno dodajte ove stockove
stock RPIme(playerid)
{
new Ime;
GetPlayerName(playerid, Ime, MAX_PLAYER_NAME);
return Ime;
}
stock DBSpoji()
{
if(mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_DB, MYSQL_PW)) print("| SaNyAC | Spajanje sa MySQL bazom je uspesno!");
else print("| SaNyAC | Spajanje sa MySQL bazom nije uspelo...");
}

Dodajte ove publice na dno
public OnQueryError(errorid, error[], callback[], query[], connectionHandle)
{
printf("EID: %d | Error: %s | Query: %s", errorid, error, query);
return 1;
}
public LogirajKorisnika(playerid, sifra)
{
new string;
mysql_store_result();
if(mysql_num_rows(konekcija) == 1)
{
    if(mysql_retrieve_row())
    {
        mysql_fetch_field_row(string, "Admin"); PlayerInfo = strval(string);
        mysql_fetch_field_row(string, "Level"); PlayerInfo = strval(string);
        mysql_fetch_field_row(string, "Novac"); PlayerInfo = strval(string);
        mysql_fetch_field_row(string, "Ubistva"); PlayerInfo = strval(string);
        mysql_fetch_field_row(string, "Smrti"); PlayerInfo = strval(string);
        ShowPlayerDialog(playerid, 2, DIALOG_STYLE_MSGBOX, "Logiran", "Uspjesno ste prijavljeni!", "Uredu", "Izlaz");
    }
}
else
{
    ShowPlayerDialog(playerid, 3, DIALOG_STYLE_MSGBOX, "Kriva sifra", "Vasa sifra je netacna!", "Uredu", "Izlaz");
}
mysql_free_result();
return 1;
}
public ProvjeraIgraca(playerid)
{
new string;
mysql_store_result();
if(mysql_num_rows(konekcija) != 0)
{
    format(string, sizeof(string), "Dobrodosao nazad %s  !\n Molim vas da se prijavite!!", RPIme(playerid));
    ShowPlayerDialog(playerid, 0, DIALOG_STYLE_PASSWORD, "Prijava", string, "Prijavi se", "Odustani");
}
else
{
    format(string, sizeof(string), "Dobrodosao %s na ovaj server !\n Upisite sifru da se registrujete!!", RPIme(playerid));
    ShowPlayerDialog(playerid, 1, DIALOG_STYLE_PASSWORD, "Registracija", string, "Registracija", "Odustani");
}
mysql_free_result();
return 1;
}


NAPOMENA: Morate imati MYSQL plugin i include , neda mi se sad trazit link !
Morate napravit novu databazu pod imenom "sany"
Tablica koju cete import:

http://www.mediafire.com/?b5kkil2bl26lc39

OBJASNJENJE:
#include ----------> dodajemo da cemo koristit include mysql
#define MYSQL_HOST "localhost"
#define MYSQL_USER "root"
#define MYSQL_DB "sany"
#define MYSQL_PW ""
---------> Definisemo databazu na koju se server konektuje]
new Query, konekcija; 
----------> definiramo Query i konekcija
mysql_debug(1);
------------> dodajemo da ce se koristit mysql_debug
konekcija = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_DB, MYSQL_PW); 
-----------> spajamo se sa databazom
enum pInfo()
{
pAdmin,
pNovac,
pLevel,
pUbistva,
pSmrti
}
new PlayerInfo;
-------------> definiramo pAdmin, pNovac, pLevel, pUbistva, pSmrti
mysql_close(); 
----------> gasimo mysql
mysql_format(konekcija, Query, "SELECT * FROM `korisnici` WHERE `ImeKorisnika` = '%e'", RPIme(playerid));
mysql_function_query(konekcija, Query, false, "ProvjeraIgraca", "d", playerid);
stavljamo ucitavanje korisnickovog accounta
mysql_format(konekcija, Query, "UPDATE `korisnici` SET `Novac` = %d, `Level` = %d, `Admin` = %d, `Ubistva` = %d, `Smrti` = %d", GetPlayerMoney(playerid), GetPlayerScore(playerid), PlayerInfo, PlayerInfo, PlayerInfo);
    mysql_function_query(konekcija, Query, false, "OnQueryFinish", "s", Query);
--------> dodajemo cuvanje korisnickog accounta
PlayerInfo ++;
PlayerInfo ++;
----------> dodajemo da kad igrac koji je ubio dodaje mu se ubistvo, takodje isto kao i za smrti
switch(dialogid)
{
    case 0:
    {
        if(!response) return Kick(playerid);
        mysql_format(konekcija, Query, " SELECT * FROM `korisnici` WHERE ImeKorisnika = '%e' AND Sifra = md5('%e')", RPIme(playerid), inputtext);
        mysql_function_query(konekcija, Query, false, "LogirajKorisnika", "ds", playerid, inputtext);
}
case 1:
{
    new IP;
    GetPlayerIp(playerid, IP, sizeof(IP));
    if(!response) return Kick(playerid);
    mysql_format(konekcija, Query, "INSERT INTO `korisnici` (ImeKorisnika, Sifra, Novac, Level, Admin, Ubistva, Smrti, IP) VALUES('%e', md5('%e'), 5000, 1, 0, 0, 0, '%e')", RPIme(playerid), inputtext, IP);
            mysql_function_query(konekcija, Query, false, "OnQueryFinish", "s", Query);
}
}
if(dialogid == 2)
{
    if(!response) return Kick(playerid);
    if(response)
    {
        SpawnPlayer(playerid);
    }
}
if(dialogid == 3)
{
    new string;
if(!response) return Kick(playerid);
    if(response)
    {
        format(string, sizeof(string), "Login %s  !\nPokusaj ponovo da se logiras!!", RPIme(playerid));
    ShowPlayerDialog(playerid, 0, DIALOG_STYLE_PASSWORD, "Prijava", string, "Prijavi se", "Odustani");
    }
}
------------> dodajemo dialoge za login, register, pogresnu sifru i pravilnu sifru
stock RPIme(playerid)
{
new Ime;
GetPlayerName(playerid, Ime, MAX_PLAYER_NAME);
return Ime;
}
------------> definisemo RPIme
stock DBSpoji()
{
if(mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_DB, MYSQL_PW)) print("| SaNyAC | Spajanje sa MySQL bazom je uspesno!");
else print("| SaNyAC | Spajanje sa MySQL bazom nije uspelo...");
}
---------> ako se baza spojila ili ako nije se spojila da ispise
public LogirajKorisnika(playerid, sifra)
{
new string;
mysql_store_result();
if(mysql_num_rows(konekcija) == 1)
{
    if(mysql_retrieve_row())
    {
        mysql_fetch_field_row(string, "Admin"); PlayerInfo = strval(string);
        mysql_fetch_field_row(string, "Level"); PlayerInfo = strval(string);
        mysql_fetch_field_row(string, "Novac"); PlayerInfo = strval(string);
        mysql_fetch_field_row(string, "Ubistva"); PlayerInfo = strval(string);
        mysql_fetch_field_row(string, "Smrti"); PlayerInfo = strval(string);
        ShowPlayerDialog(playerid, 2, DIALOG_STYLE_MSGBOX, "Logiran", "Uspjesno ste prijavljeni!", "Uredu", "Izlaz");
    }
}
else
{
    ShowPlayerDialog(playerid, 3, DIALOG_STYLE_MSGBOX, "Kriva sifra", "Vasa sifra je netacna!", "Uredu", "Izlaz");
}
mysql_free_result();
return 1;
}
----------> Dodajemo sta da se uradi kad se igrac logira
public ProvjeraIgraca(playerid)
{
new string;
mysql_store_result();
if(mysql_num_rows(konekcija) != 0)
{
    format(string, sizeof(string), "Dobrodosao nazad %s  !\n Molim vas da se prijavite!!", RPIme(playerid));
    ShowPlayerDialog(playerid, 0, DIALOG_STYLE_PASSWORD, "Prijava", string, "Prijavi se", "Odustani");
}
else
{
    format(string, sizeof(string), "Dobrodosao %s na ovaj server !\n Upisite sifru da se registrujete!!", RPIme(playerid));
    ShowPlayerDialog(playerid, 1, DIALOG_STYLE_PASSWORD, "Registracija", string, "Registracija", "Odustani");
}
mysql_free_result();
return 1;
}
---------> provjerava dali je igrac registrovan ili nije registrovan
Johnâ„¢
5
Godfather
27. Jul 2013.
Apsolutno ništa nisi objasnio nego si samo rekao: stavi ovo ovdje, ovo ondje i to je to - to nije tutorial. I ako ćeš već raditi tutorial o mySQL-u, koristi najnoviju verziju mySQL-a.
Stefan Samper
4
Shot Caller
27. Jul 2013.
Znam, ovo mi je prvi TuT, neam vremena sad da pisem objasnjenja dodat cu sutra
koristim:
* MySQL plugin R7
* Copyright (c) 2008-2011, BlueG
Johnâ„¢
5
Godfather
27. Jul 2013.
|~SaNy~| wrote on July 27, 2013, 9:17 pm:
Znam, ovo mi je prvi TuT, neam vremena sad da pisem objasnjenja dodat cu sutra


Ako sad nisi imao vremena, zašto si onda objavljivao tutorial kad si mogao sutra kad to sve središ? Ne bi ništa izgubio.

|~SaNy~| wrote on July 27, 2013, 9:17 pm:
koristim:
* MySQL plugin R7
* Copyright (c) 2008-2011, BlueG


To je već poprlično stara verzija, trenutno najnoviji je R31.
Pasa
4
Enforcer
27. Jul 2013.
Ništa nije objašnjeno tako da 0/5
Stefan Samper
4
Shot Caller
27. Jul 2013.
Dodao sam objasnjenje...
Blaeks_Biofor
5
Forum Don
28. Jul 2013.
imas gresaka, a i tutorijal podrazumeva objasnjenje svake linije, ali neka ostane tu, pa ti popravi kada budes mogao, i ako budes mogao
Champa22
5
Underboss
29. Jul 2013.
Blaeks wrote on July 28, 2013, 2:19 am:
imas gresaka, a i tutorijal podrazumeva objasnjenje svake linije, ali neka ostane tu, pa ti popravi kada budes mogao, i ako budes mogao
magarac
4
Shot Caller
10. Avg. 2013.
zasto ja imam u skripti   
#define SQL_HOST "localhost" //WAMP host, ako je externi, promjenite ovo
#define SQL_USER "root" //WAMP User
#define SQL_PASS "" //WAMP PW(default - nema PWa)
#define SQL_DB "sa-mp" //Databazu koju ste kreirali(kasnije u koracima)

a ovjde je #define MYSQL a meni SQL
Stefan Samper
4
Shot Caller
10. Avg. 2013.
Jao pa to ti je isto sra*nje, samo sto si ti drukcije definirao a ja drukcije -.-
Bugi
5
Crime Lord
10. Avg. 2013.
Slazem se sa Paradoxom, da nije preterano objasnjeno za objasnjenje imas 1/10 a za trud koji je bitniji pohvala
BC | Bobo
2
Wheel Man
25. Jul 2014.
tutorijal je ukraden od Sistem32 on je napravio taj tutorijal samo si izmjenuo neke sitnice i to je to! 0 objasnjeno!
aleluja
5
Godfather
25. Jul 2014.
BC | Bobo wrote on July 25, 2014, 11:13 am:
tutorijal je ukraden od Sistem32 on je napravio taj tutorijal samo si izmjenuo neke sitnice i to je to! 0 objasnjeno!


refrešao si temu skoro godinu dana, molio bih te da pročitaš pravila foruma i svih podforuma , lock.

Morate biti prijavljeni da biste odgovorili na ovu temu.

Prijava

© 2026 SmartShark. All rights reserved.

Powered by Momentum|v2026.3.001 Alpha