[FilterScript] jigRegister - Register/Login system (MySQL)
#1

Introduзгo:

Bem, neste meu primeiro dia de fуrum sa-mp, venho postar meu segundo release, novamente em MySQL, um sistema de registro, bem simples por sinal, salvando nome, senha, skin, dinheiro e score, espero que possa servir para alguйm.

Source:

pawn Code:
#include <a_samp>
#include <a_mysql>

enum {
    DIALOG_REGISTER,
    DIALOG_LOGIN
}

forward jig_OnPlayerConnect(playerid);
forward jig_OnPlayerLogin(playerid);

new
    jDB,
    jString[256],
    jName[MAX_PLAYERS][24],
    bool:jLogged[MAX_PLAYERS],
    jTries[MAX_PLAYERS]
;

public OnFilterScriptInit() {
    jDB = mysql_connect("localhost", "root", "jigRegister", "");
    if(mysql_ping(jDB) < 1)
        return SendRconCommand("unloadfs jigRegister");
       
    print("Connected!");
    mysql_function_query(jDB, "CREATE TABLE IF NOT EXISTS `jUsers` (`Name` VARCHAR(24) NOT NULL,`Password` VARCHAR(32) NOT NULL, `Skin` INT(11) NOT NULL DEFAULT '299',`Money` INT(11) NOT NULL DEFAULT '5000',`Score` INT(11) NOT NULL DEFAULT '0')", false, "", "");
       
    print("----------------------------------");
    print("            jRegister");
    print("       Register/Login System");
    print("     Copyright © 2012 Jigsaw`");
    print("----------------------------------");
    return 1;
}

public OnFilterScriptExit() {
    mysql_close(jDB);
    return 1;
}

public OnPlayerConnect(playerid) {
    jTries[playerid] = 0;
    GetPlayerName(playerid, jName[playerid], 24);
   
    mysql_format(jDB, jString, "SELECT * FROM `jUsers` WHERE `Name` = '%s'", jName[playerid]);
    mysql_function_query(jDB, jString, true, "jig_OnPlayerConnect", "i", playerid);
    return 1;
}

public jig_OnPlayerConnect(playerid) {
    new
        jRows,
        jFields
    ;
   
    cache_get_data(jRows, jFields, jDB);
    if(!jRows) {
        format(jString, sizeof(jString), "{FFFFFF}Olб {1E90FF}%s{FFFFFF}\nVocк ainda nгo й registrado no servidor.\nDigite uma senha para se registrar.", jName[playerid]);
        ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "{FFFFFF}Registro", jString, "Registrar", "Cancelar");
        return 1;
    }
    format(jString, sizeof(jString), "{FFFFFF}Olб denovo {1E90FF}%s{FFFFFF}\nDigite sua senha para fazer login no servidor.", jName[playerid]);
    ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "{FFFFFF}Login", jString, "Login", "Cancelar");
    return 1;
}

public OnPlayerDisconnect(playerid, reason) {
    #pragma unused reason
    if(jLogged[playerid]) {
        mysql_format(jDB, jString,
            "UPDATE `jUsers` SET `Skin` = %d, `Money` = %d, Score = %d WHERE `Name` = '%s'",
            GetPlayerSkin(playerid),
            GetPlayerMoney(playerid),
            GetPlayerScore(playerid),
            jName[playerid]
        );
        mysql_function_query(jDB, jString, false, "", "");
        jLogged[playerid] = false;
    }
    return 1;
}

public OnPlayerSpawn(playerid)
{
    return (jLogged[playerid]) ? (1) : (Kick(playerid));
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) {
    switch(dialogid) {
        case DIALOG_REGISTER: {
            if(!response)
                Kick(playerid);
               
            else {
                if(1 < strlen(inputtext) > 32) {
                    format(jString, sizeof(jString), "{FFFFFF}Olб {1E90FF}%s{FFFFFF}\nVocк ainda nгo й registrado no servidor.\nDigite uma senha para se registrar.\n\n{E31919}Erro: Sua senha deve conter entre 1 e 32 caracteres.", jName[playerid]);
                    ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "{FFFFFF}Registro", jString, "Registrar", "Cancelar");
                } else {
                    mysql_format(jDB, jString, "INSERT INTO `jUsers` (`Name`,`Password`) VALUES ('%s','%s')", jName[playerid], inputtext);
                    mysql_function_query(jDB, jString, false, "", "");
                   
                    format(jString, sizeof(jString), "{FFFFFF}Muito bem {1E90FF}%s{FFFFFF}\nConta registrada com sucesso.\nDigite sua senha para fazer login.", jName[playerid]);
                    ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "{FFFFFF}Login", jString, "Login", "Cancelar");
                }
            }
        }
        case DIALOG_LOGIN: {
            if(!response)
                Kick(playerid);
               
            else {
                mysql_format(jDB, jString, "SELECT * FROM `jUsers` WHERE `Name` = '%s' AND `Password` = '%s'", jName[playerid], inputtext);
                mysql_function_query(jDB, jString, true, "jig_OnPlayerLogin", "i", playerid);
            }
        }
    }
    return 1;
}

public jig_OnPlayerLogin(playerid) {
    new
        jRows,
        jFields
    ;
   
    cache_get_data(jRows, jFields, jDB);
    if(!jRows)
    {
        ++ jTries[playerid];
        if(jTries[playerid] == 5)
            return BanEx(playerid, "5 erros de senha");
           
        format(jString, sizeof(jString), "{FFFFFF}Senha incorreta {1E90FF}%s{FFFFFF}\nDigite sua verdadeira senha.\nChances: {E31919}%d", jName[playerid], (5 - jTries[playerid]));
        ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "{FFFFFF}Login", jString, "Login", "Cancelar");
        return 1;
    }
    jLogged[playerid] = true;
   
    cache_get_field_content(0, "Money", jString, jDB);
    ResetPlayerMoney(playerid); GivePlayerMoney(playerid, strval(jString));
   
    cache_get_field_content(0, "Score", jString, jDB);
    SetPlayerScore(playerid, strval(jString));
   
    cache_get_field_content(0, "Skin", jString, jDB);
   
    SetSpawnInfo(playerid, 0, strval(jString), 1568.2737, -1892.3541, 13.5595, 0.8003, 0, 0, 0, 0, 0, 0);
    SpawnPlayer(playerid);
    return 1;
}
Download: http://pastebin.com/LbEuDVz3

Espero que gostem, atй a prуxima.

Reply
#2

Bom, Parabйns.
Reply
#3

muito bom cara
Reply
#4

Alguem deve tomar a iniciativa de fazer uns tutoriais sobre MySQL

parabйns,otimo Trabalho xD
Reply
#5

Quote:
Originally Posted by 'Duallity
View Post
Alguem deve tomar a iniciativa de fazer uns tutoriais sobre MySQL
parabйns,otimo Trabalho xD
Falou tudo, й vdd, faltam tutoriais como esse por aqui..
Bom trabalho
Reply
#6

Quote:
Originally Posted by Edu33
View Post
Falou tudo, й vdd, faltam tutoriais como esse por aqui..
Bom trabalho
LoL!


@
Ficou legal ainda mas em MySqL =]
Reply
#7

Tenho uma dъvida, como posso botar um registro em php?
Reply
#8

Victor:
Olha meu tutorial de Skin que aprende fбcil fбcil.


o nome deve tar TROCAR SKIN PHP + MySQL
Reply
#9

Legal parabens


E tbm acho que alguem deve tomar iniciativa de tutos sobre MySQL
Reply
#10

Obrigado a todos
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)