[Ajuda] Pular "SPAWN"
#1

Criei um sistema de login em DOF2, Ele estб funcionado por enquanto sem nenhum erro. Estou tentando quando logar no servidor pular aquela parada de "<<" "SPAWN" ">>". Se alguйm puder me ajudar nisso agradeзo

Codes

PHP код:
#define DIALOG_REGISTRO 1
#define DIALOG_LOGIN 2
new Float:PosX[MAX_PLAYERS],
    
Float:PosY[MAX_PLAYERS],
    
Float:PosZ[MAX_PLAYERS],
    
Float:PosA[MAX_PLAYERS],
    
pSkin[MAX_PLAYERS],
    
pScore[MAX_PLAYERS],
    
pInterior[MAX_PLAYERS],
    
pVirtualWorld[MAX_PLAYERS],
    
pDinheiro[MAX_PLAYERS]; 
PHP код:
public OnPlayerConnect(playerid)
{
    new 
arquivo[50],name[MAX_PLAYER_NAME];
    
GetPlayerName(playeridnamesizeof(name));
    
format(arquivosizeof(arquivo), "Contas/n%sInfos.ini"name);
    if(
DOF2_FileExists(arquivo)){
    
ShowPlayerDialog(playeridDIALOG_LOGINDIALOG_STYLE_PASSWORD"Login""Logue\nLogue""Confirmar""Sair");
    }else{
    
ShowPlayerDialog(playeridDIALOG_REGISTRODIALOG_STYLE_INPUT"Registro""Registre\nRegistre""Confirmar""Sair");
    }
    return 
1;

PHP код:
public OnPlayerDisconnect(playeridreason)
{
    new 
arquivo[50],name[MAX_PLAYER_NAME];
    
GetPlayerName(playeridnamesizeof(name));
    
format(arquivosizeof(arquivo), "Contas/n%sInfos.ini"name);
    
GetPlayerPos(playeridPosX[playerid],PosY[playerid],PosZ[playerid]);
    
GetPlayerFacingAngle(playeridPosA[playerid]);
    
DOF2_SetInt(arquivo"Dinheiro"GetPlayerMoney(playerid));
    
DOF2_SetFloat(arquivo"PosX"PosX[playerid]);
    
DOF2_SetFloat(arquivo"PosY"PosY[playerid]);
    
DOF2_SetFloat(arquivo"PosZ"PosZ[playerid]);
    
DOF2_SetFloat(arquivo"PosA"PosA[playerid]);
    
DOF2_SetInt(arquivo"Skin"GetPlayerSkin(playerid));
    
DOF2_SetInt(arquivo"Score"GetPlayerScore(playerid));
    
DOF2_SetInt(arquivo"Interior"GetPlayerInterior(playerid));
    
DOF2_SetInt(arquivo"VirtualWorld"GetPlayerVirtualWorld(playerid));
    
DOF2_SetInt(arquivo"Dinheiro",GetPlayerMoney(playerid));
    
DOF2_SaveFile();
    return 
1;

PHP код:
public OnPlayerSpawn(playerid)
{
    new 
arquivo[50],name[MAX_PLAYER_NAME];
    
GetPlayerName(playeridnamesizeof(name));
    
format(arquivosizeof(arquivo), "Contas/n%sInfos.ini"name);
    
PosX[playerid] = DOF2_GetFloat(arquivo"PosX");
    
PosY[playerid] = DOF2_GetFloat(arquivo"PosY");
    
PosZ[playerid] = DOF2_GetFloat(arquivo"PosZ");
    
PosA[playerid] = DOF2_GetFloat(arquivo"PosA");
    
pInterior[playerid] = DOF2_GetInt(arquivo"Interior");
    
pScore[playerid] =  DOF2_GetInt(arquivo"Score");
    
pSkin[playerid] = DOF2_GetInt(arquivo"Skin");
    
pVirtualWorld[playerid] = DOF2_GetInt(arquivo"VirtualWorld");
    
pDinheiro[playerid] = DOF2_GetInt(arquivo"Dinheiro");
    
SetPlayerPos(playeridPosX[playerid],PosY[playerid],PosZ[playerid]);
    
SetPlayerFacingAngle(playeridPosA[playerid]);
    
SetPlayerInterior(playeridpInterior[playerid]);
    
SetPlayerScore(playeridpScore[playerid]);
    
SetPlayerSkin(playeridpSkin[playerid]);
    
SetPlayerVirtualWorld(playerid pVirtualWorld[playerid]);
    
GivePlayerMoney(playeridpDinheiro[playerid]);
    return 
1;

PHP код:
public OnDialogResponse(playeriddialogidresponselistiteminputtext[])
{
    new 
arquivo[50],name[MAX_PLAYER_NAME];
    
GetPlayerName(playeridnamesizeof(name));
    
format(arquivosizeof(arquivo), "Contas/n%sInfos.ini"name);
    
// ==
    
if(dialogid == DIALOG_REGISTRO){
    if(
strlen(inputtext) < 4){
    
SendClientMessage(playerid, -1"Senha pequena");
    
ShowPlayerDialog(playeridDIALOG_REGISTRODIALOG_STYLE_INPUT"Registro""Registre\nRegistre""Confirmar""Sair");
    }else{
    
DOF2_CreateFile(arquivo);
    
DOF2_SetString(arquivo"Senha"inputtext);
    
DOF2_SetInt(arquivo"Dinheiro"1000);
    
DOF2_SetFloat(arquivo"PosX"1139.4064);
    
DOF2_SetFloat(arquivo"PosY", -1761.9249);
    
DOF2_SetFloat(arquivo"PosZ"13.5955);
    
DOF2_SetFloat(arquivo"PosA"4.5833);
    
DOF2_SaveFile();
    
SendClientMessage(playerid, -1"Conta criada");
    
SpawnPlayer(playerid);
    
GivePlayerMoney(playeridDOF2_GetInt(arquivo"Dinheiro"));
    }
    }
    if(!
response){
    
Kick(playerid);
    return 
1;
    }
    
// ==
    
if(dialogid == DIALOG_LOGIN){
    if(!
response){
    
Kick(playerid);
    return 
1;
    }
    if(
strcmp(inputtextDOF2_GetString(arquivo"Senha"), true) == 0){
    
SpawnPlayer(playerid);
    }else{
    
SendClientMessage(playerid, -1"Senha errada");
    
ShowPlayerDialog(playeridDIALOG_LOGINDIALOG_STYLE_INPUT"Login""Logue\nLogue""Confirmar""Sair");
    return 
1;
    }
    }
    return 
1;

AGRADEЗO MUITO DКS DE JБ
Reply
#2

PHP код:
TogglePlayerSpectating(playeridtrue); //quando logar no servidor 
TogglePlayerSpectating(playeridfalse); //quando spawnar 
Reply
#3

Sу um pequeno detalhe: Na OnPlayerDisconnect vocк precisa colocar uma checagem para verificar se o player estava logando quando desconectou.

Exemplo para vocк entender: Se eu errar a senha eu vou levar kick, certo ? Entгo, daн vai salvar minha ъltima posiзгo na tela de login.
Reply
#4

Quote:
Originally Posted by XandyMello
Посмотреть сообщение
Sу um pequeno detalhe: Na OnPlayerDisconnect vocк precisa colocar uma checagem para verificar se o player estava logando quando desconectou.

Exemplo para vocк entender: Se eu errar a senha eu vou levar kick, certo ? Entгo, daн vai salvar minha ъltima posiзгo na tela de login.
Jб tinha percebido isso, vlw men.
Reply
#5

Foi sу eu procurar que eu achei um bug...

Coloquei quando errar 3 vezes o player ser kickado. Mas alйm de nгo esta kickando , quando eu fico errando muito , depois de um tempo eu logo mesmo SEM colocar senha :/

Code

PHP код:
    if(dialogid == DIALOG_LOGIN){
    if(!
response){
    
Kick(playerid);
    return 
1;
    }
    if(
strcmp(inputtextDOF2_GetString(arquivo"Senha"), true) == 0){
    
pLogado[playerid] = true;
    
SetSpawnInfo(playerid0pSkin[playerid], PosX[playerid],PosY[playerid],PosZ[playerid],PosA[playerid], 0000);
    
SpawnPlayer(playerid);
    
TogglePlayerSpectating(playeridfalse);
    }else{
    
pLogado[playerid] = false;
    
TogglePlayerSpectating(playeridtrue);
    
SendClientMessage(playerid0xFF0000AA"|SERVER|Senha errada.");
    
Erro[playerid]++;
    
ShowPlayerDialog(playeridDIALOG_LOGINDIALOG_STYLE_INPUT"Login""Vocк jб tem uma conta registrada em nosso banco de dados.\nDigite sua senha abaixo para entrar no servidor.""Confirmar""Sair");
    return 
1;
    }
    if(
Erro[playerid] == 3){
    
pLogado[playerid] = false;
    
SendClientMessage(playerid0xFF0000AA"|SERVER|Vocк exedeu seu limite de tentativas.");
    
Kick(playerid);
    return 
1;
    } 
Agradeзo se alguйm me ajudar
Reply
#6

public OnPlayerRequestClass(playerid, classid) return SpawnPlayer(playerid);
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)