[Ajuda] Sistema de Login Bug !!
#1

Tou a fazer um gamemode do 0 ai, nй fiz um sistema de registro bбsico.
Mas , se eu registrar agora, e sair do servidor e entrar de novo, eu nгo consigo passar dessa dialog:
pawn Код:
ShowPlayerDialog(playerid, LOGIN2, DIALOG_STYLE_MSGBOX,"- Login -", "Seja Bem Vindo ao Brasil Games Rpg\nClique na 'Seta' Para Logar-se/Registrar-se no Servidor", ">>>>", "");
Quando eu clico nela fecha,
e tabem se eu fechar o samp server pega, mas quando eu entro lб no servidor pede para eu registrar de novo.
sendo que ja ta criada a .ini do Player.
Help-me
pawn Код:
#include < a_samp >
#include < dini >

#define DIRETORIO        "/Contas/%s.ini"

#define sexoesc                      1
//---------------------------------------
#define REGISTRO                     1997
#define LOGIN                        1998
#define LOGIN2                       1999
//---------------------------------------
#define MAX_SENHA                    16
#define MIN_SENHA                    4
//--------------------------------------- Cores
#define Vermelho                    0xFF0000AA
#define Branco                      0xFFFFFFAA
#define newadm                      0x46BBAA00
#define Amarelo                     0xFFFF00FF
#define Verde                       0x00D700AA
#define Green                       0x16EB43FF
#define Red                         0xff0000ff
#define Laranja                     0xFF6600AA

enum pInfo
{
Senha[MAX_SENHA+1],
Logado,
LoginsFalsos
}

new vfile[128];

new pAdmin[MAX_PLAYERS];
new admin[MAX_PLAYERS]= 0;

new PlayerInfo[MAX_PLAYERS][pInfo];

new Grana[MAX_PLAYERS];

main(){}

public OnGameModeInit()
{
    print("***** Servidor Carregado! *****\n\n");
    // Nome Servidor.. Etc
    SendRconCommand("hostname [0.3d] Brasil Games [RPG v1.0]");
    SendRconCommand("mapname Brasil RPG");
    SetGameModeText("Brasil Games v1.0");
    UsePlayerPedAnims();
    return 1;
}

public OnPlayerConnect(playerid)
{
    pAdmin[playerid] = 0;
    return 1;
}

public OnPlayerDeath(playerid, killerid, reason)
{
    return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
new string[256];
if(dialogid == LOGIN2)
{
    if(response == 1)
    {
        new aname[MAX_PLAYER_NAME];
        GetPlayerName(playerid, aname, sizeof(aname));

        if(PlayerInfo[playerid][Logado] == 0)
        {
            if(!dini_Exists(vfile))
            {
                format(vfile, sizeof(vfile), "Bem Vindo %s\n\nConta: Nгo Registrada\nDigite uma senha e clique em\"Registrar\".", aname);
                ShowPlayerDialog(playerid, REGISTRO, DIALOG_STYLE_INPUT, "CONTA", vfile, "Registrar", "Sair");
            }
            if(dini_Exists(vfile))
            {
                format(vfile, sizeof(vfile), "Bem Vindo %s\n\nConta: Registrada\nDigite sua senha e clique em\"Logar\".", aname);
                ShowPlayerDialog(playerid, LOGIN, DIALOG_STYLE_INPUT, "CONTA", vfile, "Logar", "Sair");
            }
        }
    }
    else {
        new stringz[256];
        new aname[MAX_PLAYER_NAME];
        GetPlayerName(playerid, aname, MAX_PLAYER_NAME);
        format(stringz, sizeof(stringz), "* %s foi kickado automaticamente | Motivo: Nгo se registrou/logou.", aname);
        SendClientMessageToAll(-1,stringz);
        SetPlayerPos(playerid, 831.9581,-1102.1510,24.2969);
        GameTextForPlayer(playerid,"~r~kickado~w~!", 2500, 3);
        Kick(playerid);
    }
}

if(dialogid == REGISTRO)
{
    new aname[MAX_PLAYER_NAME];
    GetPlayerName(playerid, aname, sizeof(aname));
    format(vfile, sizeof(vfile), DIRETORIO, aname);
    if(response == 1)
    {
        if(strlen(inputtext) < MIN_SENHA || strlen(inputtext) > MAX_SENHA)
        {
            format(vfile, sizeof(vfile), "(ERRO) A senha deve ter entre %d e %d caracteres!", MIN_SENHA, MAX_SENHA);
            SendClientMessage(playerid, Vermelho, vfile);
            format(vfile, sizeof(vfile), "Senha muito grande ou pequena, %s!\nColoque sua senha e clique em \"Registrar\".", aname);
            ShowPlayerDialog(playerid, REGISTRO, DIALOG_STYLE_INPUT, "Registrando uma conta", vfile, "Registrar", "Sair");
            return 1;
        }
        dini_Create(vfile);
        dini_Set(vfile, "Senha", encrypt(inputtext));
        dini_Set(vfile, "Senha2", inputtext);
        dini_IntSet(vfile, "Skin", 0);
        dini_IntSet(vfile, "Profissao", 0);
        dini_IntSet(vfile, "ContaBancaria", 0);
        dini_IntSet(vfile, "SaldoBancario", 0);
        dini_IntSet(vfile, "Celular", 0);
        dini_IntSet(vfile, "HabTerrestre", 0);
        dini_IntSet(vfile, "HabAerea", 0);
        dini_IntSet(vfile, "HabNautica", 0);
        dini_Set(vfile, "Lembrete", "Nada");
        dini_IntSet(vfile,"Continuar",0);
        dini_Set(vfile, "Combustivel", "30");
        dini_IntSet(vfile, "Novato", 1);
        dini_IntSet(vfile,"Porte", 0);
        dini_IntSet(vfile,"Level", 0);
        dini_IntSet(vfile,"PlanoDeSaude", 0);
        dini_IntSet(vfile,"LevelAdm",0);
        dini_IntSet(vfile,"Multas",0);
        dini_IntSet(vfile,"PagouMultas",0);
        GivePlayerGrana(playerid,500);
        ShowPlayerDialog(playerid, sexoesc, DIALOG_STYLE_MSGBOX, "Qual seu sexo?", "Escolha Seu Sexo!", "Masculino", "Feminino");
        //SendClientMessage(playerid, 0x82C0FFAA, "(CONTA) Registrado com sucesso.");
        PlayerPlaySound(playerid, 1057, 0, 0, 0);
        PlayerInfo[playerid][Logado] = 1;
        new ano,mes,dia;
        getdate(ano, mes, dia);
        format(string, sizeof(string), " (%d/%d/%d)", dia,mes,ano);
        dini_Set(vfile, "Logou", string);
    }
    else {
        Kick(playerid);
    }
}

if(dialogid == LOGIN)
{
    new aname[MAX_PLAYER_NAME];
    GetPlayerName(playerid, aname, sizeof(aname));
    format(vfile, sizeof(vfile), DIRETORIO, aname);
    if(response == 1)
    {
        new senhaacc[256];
        senhaacc = dini_Get(vfile, "Senha");
        if(strcmp(encrypt(inputtext), senhaacc, true) == 0)
        {
            pAdmin[playerid] = dini_Int(vfile, "LevelAdm");
            SetSpawnInfo(playerid, 0, dini_Int(vfile, "Skin"), dini_Int(vfile, "CasaX"), dini_Int(vfile, "CasaY"), dini_Int(vfile, "CasaZ"), 354.1657, 0, 0, 0, 0, 0, 0);
            if(dini_Int(vfile,"Novato") == 2)
            {
                new ip[128];
                GetPlayerIp(playerid,ip,128);
                format(string, sizeof(string), "**********************************\nNick: %s - [ID: %d]\nIP: %s\n**********************************",aname,playerid,ip);
                ShowPlayerDialog(playerid, 0, DIALOG_STYLE_MSGBOX, "Informacoes",string, "Fechar", "");
            }
            if(pAdmin[playerid] > 0)
            {
                new AdminName[MAX_PLAYER_NAME];
                GetPlayerName(playerid, AdminName, sizeof(AdminName));
                format(string, sizeof(string), "~g~%s: ~w~Online", AdminName);
                for(new i=0; i<MAX_PLAYERS; i++)
                {
                    GameTextForPlayer(i, string , 3000, 1);
                }
            }
            PlayerInfo[playerid][Logado] = 1;
            GivePlayerGrana(playerid, dini_Int(vfile, "Dinheiro"));
            SpawnPlayer(playerid);
            PlayerPlaySound(playerid, 1057, 0, 0, 0);

        }
        else {
            PlayerInfo[playerid][LoginsFalsos]++;
            if(PlayerInfo[playerid][LoginsFalsos] >= 3)
            {
                format(vfile, sizeof(vfile), "* %s foi kickado automaticamente | Motivo: %d tentativas de login", aname, 3);
                SendClientMessageToAll(-1, vfile);
                SetPlayerPos(playerid, 831.9581,-1102.1510,24.2969);
                GameTextForPlayer(playerid,"~r~kickado~w~!", 2500, 3);
                Kick(playerid);
            }
            else {
                SendClientMessage(playerid, Vermelho,"(CONTA) Senha incorreta!");
                format(vfile, sizeof(vfile), "Senha incorreta, %s! Logue-se em sua conta.\n\nDigite sua senha e clique em \"Logar\".", aname);
                ShowPlayerDialog(playerid, LOGIN, DIALOG_STYLE_INPUT, "CONTA", vfile, "Logar", "Sair");
            }
        }
    }
    else {
        Kick(playerid);
    }
}

if(dialogid == sexoesc)
{
    if(response)
    {
        dini_Set(vfile, "Skin", "66");
        SetPlayerSkin(playerid, 66);
        dini_FloatSet(vfile,"CasaX",Float:2222.9563);
        dini_FloatSet(vfile,"CasaY",Float:-1178.8347);
        dini_FloatSet(vfile,"CasaZ",Float:25.7266);
        dini_IntSet(vfile, "Novato", 2);
        SetSpawnInfo(playerid, 0, dini_Int(vfile, "Skin"), dini_Int(vfile, "CasaX"), dini_Int(vfile, "CasaY"), dini_Int(vfile, "CasaZ"), 354.1657, 0, 0, 0, 0, 0, 0);
        SpawnPlayer(playerid);
    }
    else {
        dini_Set(vfile, "Skin", "93");
        SetPlayerSkin(playerid, 93);
        dini_FloatSet(vfile,"CasaX",Float:2222.9563);
        dini_FloatSet(vfile,"CasaY",Float:-1178.8347);
        dini_FloatSet(vfile,"CasaZ",Float:25.7266);
        dini_IntSet(vfile, "Novato", 2);
        SetSpawnInfo(playerid, 0, dini_Int(vfile, "Skin"), dini_Int(vfile, "CasaX"), dini_Int(vfile, "CasaY"), dini_Int(vfile, "CasaZ"), 354.1657, 0, 0, 0, 0, 0, 0);
        SpawnPlayer(playerid);
    }
    return 1;
}
return 1;
}

public OnPlayerRequestSpawn(playerid)
{
    if(PlayerInfo[playerid][Logado] == 0)
    {
        if(!dini_Exists(vfile))
        {
            SendClientMessage(playerid, Vermelho, "(ERRO) Vocк precisa estar registrado para poder jogar.");
        }
        if(dini_Exists(vfile))
        {
            SendClientMessage(playerid, Vermelho, "(ERRO) Vocк precisa estar logado para poder jogar.");
        }
    }
    return 0;
}

public OnPlayerRequestClass(playerid, classid)
{
    ShowPlayerDialog(playerid, LOGIN2, DIALOG_STYLE_MSGBOX,"- Login -", "Seja Bem Vindo ao Brasil Games Rpg\nClique na 'Seta' Para Logar-se/Registrar-se no Servidor", ">>>>", "");
    SetPlayerCameraPos(playerid,-1600.5295,1311.7043,4.7351);
    SetPlayerCameraLookAt(playerid,-1598.7936,1313.6902,4.5667);
    SetPlayerPos(playerid, -1605.5529,1318.5687,4.8323);
    SetPlayerInterior(playerid,0);
    SetPlayerSkin(playerid, 23);
    return 1;
}

public OnPlayerSpawn(playerid)
{
    if(pAdmin[playerid]> 0) admin[playerid] = 1;
    dini_IntSet(vfile, "LevelAdm", pAdmin[playerid]);
    return 1;
}

public OnPlayerDisconnect(playerid)
{
    dini_IntSet(vfile, "LevelAdm", pAdmin[playerid]);
    new grana;
    grana = GetPlayerGrana(playerid);
    dini_IntSet(vfile, "Dinheiro", grana);
    return 1;
}

stock pNome(playerid)
{
    new name[24];
    GetPlayerName(playerid, name, 24);
    return name;
}

public OnGameModeExit()
{
    print("***** Servidor Descarregado! *****\n\n");
    return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
new cmd[256],idx;
new tmp[256];
new aname[MAX_PLAYER_NAME];
new pname[MAX_PLAYER_NAME];
new string[256];
cmd = strtok(cmdtext, idx);
if(!strcmp(cmd,"/setadmin", true))
{
    GetPlayerName(playerid, aname, MAX_PLAYER_NAME);
    if(IsPlayerAdmin(playerid))
    {
        new plid, leveladm;
        tmp = strtok(cmdtext, idx);
        if(!strlen(tmp))
        {
            SendClientMessage(playerid, -1, "(INFO) Digite: /setadmin [id] [Level]");
            return 1;
        }
        plid = strval(tmp);
        tmp = strtok(cmdtext, idx);
        if(!strlen(tmp))
        {
            SendClientMessage(playerid, -1, "(INFO) Digite: /setadmin [id] [Level]");
            return 1;
        }
        leveladm = strval(tmp);
        if(leveladm >= 7)
        {
            SendClientMessage(playerid, -1, "(INFO) Niveis permitidos: 0 a 6.");
            return 1;
        }
        if(IsPlayerConnected(plid))
        {
            if(leveladm >= 1)
            {
                pAdmin[plid] = leveladm;
                dini_IntSet(vfile, "LevelAdm",leveladm);
                format(string, sizeof(string), "(INFO) Vocк foi promovido a Admin Level %d por : %s!", leveladm,aname);
                SendClientMessage(plid,-1, string);
                if(leveladm > 1)
                {
                //-
                }
            }
            if(leveladm == 0)
            {
                pAdmin[plid] = 0;
                dini_IntSet(vfile, "LevelAdm",0);
                format(string, sizeof(string), "(x) %s , retirou seu admin!",aname);
                SendClientMessage(plid,-1, string);
            }
        }
        else {
            SendClientMessage(playerid, -1, "(INFO) Jogador nгo conectado.");
        }
    }
    else {
        SendClientMessage(playerid, -1, "(INFO) Vocк nгo й um Administrador RCON.");
    }
    return 1;
}
if(!strcmp(cmdtext, "/admins", true))
{
    SendClientMessage(playerid,0x00FF40AA, "** Administradores Conectados **");
    new count=0;
    for(new i=0; i<MAX_PLAYERS; i++)
    {
        if(IsPlayerConnected(i))
        {
            if(admin[i])
            {
                new str[256];
                GetPlayerName(i, pname, 24);
                if(pAdmin[i] == 1)
                {
                    format(str,sizeof(str),"%s -> [Sub-Moderador]", pname);
                }
                if(pAdmin[i] == 2)
                {
                    format(str,sizeof(str),"%s -> [Moderador]", pname);
                }
                if(pAdmin[i] == 3)
                {
                    format(str,sizeof(str),"%s -> [Administrador]", pname);
                }
                if(pAdmin[i] == 4)
                {
                    format(str,sizeof(str),"%s -> [Administrador Master]", pname);
                }
                if(pAdmin[i] == 5)
                {
                    format(str,sizeof(str),"%s -> [Sub-Dono]", pname);
                }
                if(pAdmin[i] == 6)
                {
                    format(str,sizeof(str),"%s -> [Poderoso Chefгo]", pname);
                }
                SendClientMessage(playerid, 0x0080FFAA, str);
                count++;
            }
        }
    }
    /*if(count == 0)
    {
    SendClientMessage(playerid, Vermelho, "(ERRO) Nгo hб administradores online no momento");
    }*/

    return 1;
}

if(strcmp("/creditos", cmdtext, true, 10) == 0)
{
    SendClientMessage(playerid,Amarelo,"==================[ Creditos ]==================");
    SendClientMessage(playerid,-1,"~> GameMode Feito do 0 Por: #######");
    SendClientMessage(playerid,Amarelo,"==================[ Creditos ]==================");
    return 1;
}

if(strcmp(cmd,"/gmx",true) == 0)
{
    for(new i=0; i<MAX_PLAYERS; i++)
    {
        if(pAdmin[playerid] == 4 || pAdmin[playerid] == 5 || pAdmin[playerid] == 6)
        {
            if(IsPlayerConnected(i))
            {
                format(string, sizeof(string), "(GMX) O Servidor estб Sendo Reiniciado !! Aguarde..", pname);
                SendClientMessageToAll(Amarelo, string);
                format(string,sizeof(string),"gmx");
                SendRconCommand(string);
            }
        }
        else
        {
            SendClientMessage(playerid,Vermelho,"(x) Vocк nгo pode usar este comando!");
        }
        return 1;
    }
}

return 0;
}

stock GetName(playerid)
{
    new Name[24];
    GetPlayerName(playerid,Name,24);
    return Name;
}


stock strrest(const string[], &index)
{
    new length = strlen(string);
    while ((index < length) && (string[index] <= ' '))
    {
        index++;
    }
    new offset = index;
    new result[128];
    while ((index < length) && ((index - offset) < (sizeof(result) - 1)))
    {
        result[index - offset] = string[index];
        index++;
    }
    result[index - offset] = EOS;
    return result;
}

stock GetPlayerArea(playerid)
{
    new str[130];
    format(str,sizeof(str),"%s",Zones[GetPlayerZone(playerid)][zone_name]);
    return str;
}

stock PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z)
{
    new Float:oldposx, Float:oldposy, Float:oldposz;
    new Float:tempposx, Float:tempposy, Float:tempposz;
    GetPlayerPos(playerid, oldposx, oldposy, oldposz);
    tempposx = (oldposx -x);
    tempposy = (oldposy -y);
    tempposz = (oldposz -z);
    if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
    {
        return 1;
    }
    return 0;
}

encrypt(pass[])
{
    static charset[] = "qwertyaQWERTYUIOPZXCVBNMLKJHGFDSAsdfghzxcvbnuiopjklm1324657809_";
    static css = 63;
    new target[MAX_SENHA + 1];
    new j = strlen(pass);
    new sum = j;
    new tmpp = 0;
    new i;
    new modw;
    for (i = 0; i < MAX_SENHA || i < j; i++)
    {
        modw = i % MAX_SENHA;
        tmpp = (i >= j) ? charset[(7 * i) % css] : pass[i];
        sum = (sum + chrfind(tmpp, charset) + 1)        % css;
        target[modw] = charset[(sum + target[modw]) % css];
    }
    target[MAX_SENHA] = '\0';
    return target;
}

stock chrfind(needle, haystack[], start = 0)
{
while(haystack[start])
{
if(haystack[start++] == needle)
{
return start-1;
}
}
return -1;
}

stock IsPlayerInPlace(playerid,Float:XMin,Float:YMin,Float:XMax,Float:YMax )
{
    new RetValue = 0;
    new Float:X,Float:Y,Float:Z;
    GetPlayerPos(playerid,X,Y,Z );

    if( X >= XMin && Y >= YMin && X < XMax && Y < YMax )
    {
        RetValue = 1;
    }
    return RetValue;
}

stock GivePlayerGrana(playerid, ammount)return Grana[playerid] += ammount;
stock GetPlayerGrana(playerid)return Grana[playerid];
stock ResetPlayerGrana(playerid)return Grana[playerid] = 0;
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)