07.03.2012, 15:51
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:
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
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", ">>>>", "");
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;