Portal SAMP
[Ajuda] spawn escolhido por cidade - Versão de Impressão

+- Portal SAMP (https://portalsamp.com)
+-- Fórum: SA-MP (https://portalsamp.com/forumdisplay.php?fid=5)
+--- Fórum: Área de suporte (https://portalsamp.com/forumdisplay.php?fid=6)
+--- Tópico: [Ajuda] spawn escolhido por cidade (/showthread.php?tid=2613)

Páginas: 1 2


spawn escolhido por cidade - fear - 30/07/2022

boa noite. estou com um problema o dialog esta aparecendo para escolher a opção de Los Santos ou San Fierro.. porém quando escolho opção 1 ou 2 ele não seleciona a cidade e não spawna o player..

CODIGO:

Código PHP:
    }
    if (
dialogid == LOGIN)
    {

        if(
response)
        {

            if(!
strlen(inputtext))
            {
                  new 
IP[128];
                
GetPlayerIp(playeridIPsizeof(IP));
                
format(Stringsizeof(String), "{FFFFFF}Bem vindo novamente! \n\nNick: {90EE90}%s\n\n{FFFFFF}IP: {90EE90}%s\n\n{FFFFFF}Digite sua senha:"Nome(playerid), IP);
                
ShowPlayerDialog(playeridLOGINDIALOG_STYLE_PASSWORD"{6495ED}# {FFFFFF}Login"String"Entrar""Sair");
                return 
1;
                }
                else
                {
                    
CarregarVariaveis(playerid);
                    
ShowPlayerDialog(playeridDIALOG_LOCALSPAWNDIALOG_STYLE_INPUT"{FFFFFF}Local Spawn""{FFFFFF}[1] Los Santos\n[2] San Fierro""Selecionar""Sair");
            }
            
format(StringRegistrosizeof(StringRegistro), "Contas/Contas/%s.ini"Nome(playerid));
            if(
strcmp(inputtextDOF2_GetString(StringRegistro"Senha"), true))
            {

                if(
ErrouSenha[playerid] == 4)
                {

                    
format(Stringsizeof(String), "{E84F33}CONTA: {FFFFFF}O jogador %s foi kickado {FF0000}Motivo: [Errou a senha]"Nome(playerid));
                    
MsgToAll(cortagString);
                    
zPKick(playerid);
                    return 
1;
                }
                
ShowPlayerDialog(playeridLOGINDIALOG_STYLE_PASSWORD"{6495ED}# {FFFFFF}Errou a senha!""{FFFFFF}Senha {FF0000}Errada!\n\n{FFFFFF}Digita sua senha:""Login""Sair");
                
ErrouSenha[playerid]++;
                return 
1;
            }
            else
            {

                new 
str[50];
                
format(str50"Contas/ADM/%s.ini"Nome(playerid));
                if(
DOF2_FileExists(str))
                {

                    if(
DOF2_IsSet(str"Level"))
                    {

                        
format(strsizeof(str), "Contas/ADM/%s.ini"Nome(playerid));
                        
ContaPlayer[playerid][Level] = DOF2_GetInt(str"Level");
                    }
                }
                
ContaPlayer[playerid][Dinheiro] = DOF2_GetInt(StringRegistro"Dinheiro");
                
ContaPlayer[playerid][Skin] = DOF2_GetInt(StringRegistro"Skin");
                
ContaPlayer[playerid][Score] = DOF2_GetInt(StringRegistro"Score");
                
ContaPlayer[playerid][TempoOn] = DOF2_GetInt(StringRegistro"TempoOn");
                
ContaPlayer[playerid][CanBeYoutuber] = DOF2_GetBool(StringRegistro"AuthorizationYT");
                
GivePlayerMoney(playeridContaPlayer[playerid][Dinheiro]);
                
SetPlayerScore(playeridContaPlayer[playerid][Score]);
                new 
StrIp[300];
                
GetPlayerIp(playeridStrIp300);
                
DOF2_SetString(StringRegistro"IP"StrIp);
                
DOF2_SaveFile();
                
ContaNova[playerid] = false;
                
Msg(playeridcortag"{E84F33}CONTA: {FFFFFF}Logado com suceeso!");
                
SetTimerEx("SPP"5000"i"playerid);
                
CarregarVariaveis(playerid);
                
CarregarVip(playerid);
                
TimerHora[playerid] = SetTimerEx("HoraP"60000 101"i"playerid); // 60000 * 60 seria multiplicar 1 minuto x 60 minutos = 1 hora
                
return 1;
            }
        }
        else
        {

            
format(Stringsizeof(String), "{E84F33}CONTA: {FF0000}Player %s Kickado Motivo:[Cancelou o Login]"Nome(playerid));
            
MsgToAll(cortagString);
            
Kick(playerid);
               return 
1;
        }
    }
    else if(
dialogid == DIALOG_LOCALSPAWN)
    {
            if(!
response) return Kick(playerid);
            if(
response)
            {
                if(
isnull(inputtext)) return ShowPlayerDialog(playeridDIALOG_LOCALSPAWNDIALOG_STYLE_INPUT"{FFFFFF}Local Spawn""{FFFFFF}[1] Los Santos\n[2] San Fierro""Selecionar""Sair");
                if(
strval(inputtext) == 1)
                {
                    
SetPlayerPos(playerid,1533.0656,-2436.6377,13.5547);
                    
SetPlayerFacingAngle(playerid202.8760);
                    
SetPlayerInterior(playerid,0);
                    
SpawnPlayer(playerid);
                }
                if(
strval(inputtext) == 2)
                {
                    
SetPlayerPos(playerid,-2258.3833,541.9443,34.8340);
                    
SetPlayerFacingAngle(playerid302.5973);
                    
SetPlayerInterior(playerid,0);
                    
SpawnPlayer(playerid);
                }
            }
            return 
1;
    } 



RE: spawn escolhido por cidade - Carlos Victor - 30/07/2022

Basicamente, você está dando spawn no jogador, isso faz com que ele sempre retorne no spawn definido na função SetSpawnInfo, então é só você remover a função SpawnPlayer do código e funcionará corretamente(eu testei).

Código PHP:
if(strval(inputtext) == 1)
{
    SetPlayerPos(playerid1533.0656,-2436.6377,13.5547);
    SetPlayerFacingAngle(playerid202.8760);
    SetPlayerInterior(playerid,0);                
}
if(
strval(inputtext) == 2)
{
    SetPlayerPos(playerid, -2258.3833,541.9443,34.8340);
    SetPlayerFacingAngle(playerid302.5973);
    SetPlayerInterior(playerid,0);


Recomendo também que procure maneiras de otimizar sua gamemode, use a função switch pra manipular as dialogs ou também listitem.


RE: spawn escolhido por cidade - fear - 30/07/2022

(30/07/2022 19:43)Carlos Victor Escreveu: Basicamente, você está dando spawn no jogador, isso faz com que ele sempre retorne no spawn definido na função SetSpawnInfo, então é só você remover a função SpawnPlayer do código e funcionará corretamente(eu testei).

Código PHP:
if(strval(inputtext) == 1)
{
    SetPlayerPos(playerid1533.0656,-2436.6377,13.5547);
    SetPlayerFacingAngle(playerid202.8760);
    SetPlayerInterior(playerid,0);                
}
if(
strval(inputtext) == 2)
{
    SetPlayerPos(playerid, -2258.3833,541.9443,34.8340);
    SetPlayerFacingAngle(playerid302.5973);
    SetPlayerInterior(playerid,0);


Recomendo também que procure maneiras de otimizar sua gamemode, use a função switch pra manipular as dialogs ou também listitem.
Estou usando um gm antigo mesmo pra aprender. mas do jeito que você falou ele não spawna na posição que usei no setplayerpos e sim nessa:
Código PHP:
    AddPlayerClass(293,2184.7532,-1784.6282,13.3661,4.2801,0,0,0,0,0,0); 



RE: spawn escolhido por cidade - Carlos Victor - 30/07/2022

(30/07/2022 19:49)fear Escreveu:
(30/07/2022 19:43)Carlos Victor Escreveu: Basicamente, você está dando spawn no jogador, isso faz com que ele sempre retorne no spawn definido na função SetSpawnInfo, então é só você remover a função SpawnPlayer do código e funcionará corretamente(eu testei).

Código PHP:
if(strval(inputtext) == 1)
{
    SetPlayerPos(playerid1533.0656,-2436.6377,13.5547);
    SetPlayerFacingAngle(playerid202.8760);
    SetPlayerInterior(playerid,0);                
}
if(
strval(inputtext) == 2)
{
    SetPlayerPos(playerid, -2258.3833,541.9443,34.8340);
    SetPlayerFacingAngle(playerid302.5973);
    SetPlayerInterior(playerid,0);


Recomendo também que procure maneiras de otimizar sua gamemode, use a função switch pra manipular as dialogs ou também listitem.
Estou usando um gm antigo mesmo pra aprender. mas do jeito que você falou ele não spawna na posição que usei no setplayerpos e sim nessa:
Código PHP:
    AddPlayerClass(293,2184.7532,-1784.6282,13.3661,4.2801,0,0,0,0,0,0); 

É porque justamente você está usando a função SpawnPlayer toda vez que ela é chamada re-spawna o jogador na posição que você define, provavelmente é na que você usa em AddPlayerClass.


RE: spawn escolhido por cidade - fear - 30/07/2022

(30/07/2022 21:03)Carlos Victor Escreveu:
(30/07/2022 19:49)fear Escreveu:
(30/07/2022 19:43)Carlos Victor Escreveu: Basicamente, você está dando spawn no jogador, isso faz com que ele sempre retorne no spawn definido na função SetSpawnInfo, então é só você remover a função SpawnPlayer do código e funcionará corretamente(eu testei).

Código PHP:
if(strval(inputtext) == 1)
{
    SetPlayerPos(playerid1533.0656,-2436.6377,13.5547);
    SetPlayerFacingAngle(playerid202.8760);
    SetPlayerInterior(playerid,0);                
}
if(
strval(inputtext) == 2)
{
    SetPlayerPos(playerid, -2258.3833,541.9443,34.8340);
    SetPlayerFacingAngle(playerid302.5973);
    SetPlayerInterior(playerid,0);


Recomendo também que procure maneiras de otimizar sua gamemode, use a função switch pra manipular as dialogs ou também listitem.
Estou usando um gm antigo mesmo pra aprender. mas do jeito que você falou ele não spawna na posição que usei no setplayerpos e sim nessa:
Código PHP:
    AddPlayerClass(293,2184.7532,-1784.6282,13.3661,4.2801,0,0,0,0,0,0); 

É porque justamente você está usando a função SpawnPlayer toda vez que ela é chamada re-spawna o jogador na posição que você define, provavelmente é na que você usa em AddPlayerClass.
Mas eu fiz como tu disse acima mano e mesmo assim não funcionou corretamente. Lê oque escrevi dnv.


RE: spawn escolhido por cidade - Carlos Victor - 30/07/2022

Oque provavelmente está acontecendo, é você pedindo pro jogador escolher o spawn antes de spawnar, ou dando spawn em um lugar padrão. Eu recomendo, vou colocar abaixo um exemplo de como você poderia fazer:
Código PHP:
new spawnLocation[MAX_PLAYERS];


public 
OnGameModeInit()
{
    
AddPlayerClass(00000000000);
    return 
1;
}

public 
OnPlayerSpawn(playerid)
{
    switch(
spawnLocation[playerid])
    {
        case 
1:
        {
            
//Los Santos
        
}
        case 
2:
        {
            
//Las Venturas
        
}
        case 
3:
        {
            
//San Fierro
        
}
    }
    return 
1;
}

public 
OnDialogResponse(playeriddialogidresponselistiteminputtext[])
{
    switch(
dialogid)
    {
        case 
DIALOG_LOCALSPAWN:
        {
            if(!
response
                return 
Kick(playerid);

            if(response)
            {
                if(isnull(inputtext)) 
                    return ShowPlayerDialog(playeridDIALOG_LOCALSPAWNDIALOG_STYLE_INPUT"{FFFFFF}Local Spawn""{FFFFFF}[1] Los Santos\n[2] San Fierro""Selecionar""Sair");

                if(strval(inputtext) == 1)
                {
                    
spawnLocation[playerid] = 1;
                    
SendClientMessage(playerid, -1"* Você decidiu spawnar em Los Santos.");
                }
                else if(
strval(inputtext) == 2)
                {
                    
spawnLocation[playerid] = 2;
                    
SendClientMessage(playerid, -1"* Você decidiu spawnar em Las Venturas.");
                }
                else if(
strval(inputtext) == 3)
                {
                    
spawnLocation[playerid] = 3;
                    
SendClientMessage(playerid, -1"* Você decidiu spawnar em San Fierro.");
                }
            }            
        }
    }
    return 
1;




RE: spawn escolhido por cidade - fear - 30/07/2022

(30/07/2022 22:03)Carlos Victor Escreveu: Oque provavelmente está acontecendo, é você pedindo pro jogador escolher o spawn antes de spawnar, ou dando spawn em um lugar padrão. Eu recomendo, vou colocar abaixo um exemplo de como você poderia fazer:
Código PHP:
new spawnLocation[MAX_PLAYERS];


public 
OnGameModeInit()
{
    
AddPlayerClass(00000000000);
    return 
1;
}

public 
OnPlayerSpawn(playerid)
{
    switch(
spawnLocation[playerid])
    {
        case 
1:
        {
            
//Los Santos
        
}
        case 
2:
        {
            
//Las Venturas
        
}
        case 
3:
        {
            
//San Fierro
        
}
    }
    return 
1;
}

public 
OnDialogResponse(playeriddialogidresponselistiteminputtext[])
{
    switch(
dialogid)
    {
        case 
DIALOG_LOCALSPAWN:
        {
            if(!
response
                return 
Kick(playerid);

            if(response)
            {
                if(isnull(inputtext)) 
                    return ShowPlayerDialog(playeridDIALOG_LOCALSPAWNDIALOG_STYLE_INPUT"{FFFFFF}Local Spawn""{FFFFFF}[1] Los Santos\n[2] San Fierro""Selecionar""Sair");

                if(strval(inputtext) == 1)
                {
                    
spawnLocation[playerid] = 1;
                    
SendClientMessage(playerid, -1"* Você decidiu spawnar em Los Santos.");
                }
                else if(
strval(inputtext) == 2)
                {
                    
spawnLocation[playerid] = 2;
                    
SendClientMessage(playerid, -1"* Você decidiu spawnar em Las Venturas.");
                }
                else if(
strval(inputtext) == 3)
                {
                    
spawnLocation[playerid] = 3;
                    
SendClientMessage(playerid, -1"* Você decidiu spawnar em San Fierro.");
                }
            }            
        }
    }
    return 
1;


Fiz desse jeito que você recomendo fico assim:

ONGAMEMODEINIT:
Código PHP:
AddPlayerClass(00000000000); 

ONPLAYERSPAWN:

Código PHP:
    switch(spawnLocation[playerid])
    {
        case 
1:
        {
            
SetPlayerPos(playerid,2500.5332,-1672.8907,13.0086);
            
//Los Santos
        
}
        case 
2:
        {
            
SetPlayerPos(playerid,1692.8406,1434.9109,10.3291);
            
//Las Venturas
        
}
        case 
3:
        {
            
SetPlayerPos(playerid,-2258.3833,541.9443,34.8340);
            
//San Fierro
        
}
    } 

ONDIALOG:

Código PHP:
switch(dialogid)
    {
        case 
DIALOG_LOCALSPAWN:
        {
            if(!
response)
                return 
Kick(playerid);

            if(
response)
            {
                if(
isnull(inputtext))
                    return 
ShowPlayerDialog(playeridDIALOG_LOCALSPAWNDIALOG_STYLE_INPUT"{FFFFFF}Local Spawn""{FFFFFF}[1] Los Santos\n[2] San Fierro""Selecionar""Sair");

                if(
strval(inputtext) == 1)
                {
                    
spawnLocation[playerid] = 1;
                    
SendClientMessage(playerid, -1"* Você decidiu spawnar em Los Santos.");
                }
                else if(
strval(inputtext) == 2)
                {
                    
spawnLocation[playerid] = 2;
                    
SendClientMessage(playerid, -1"* Você decidiu spawnar em Las Venturas.");
                }
                else if(
strval(inputtext) == 3)
                {
                    
spawnLocation[playerid] = 3;
                    
SendClientMessage(playerid, -1"* Você decidiu spawnar em San Fierro.");
                }
            }
        }
    } 

Porém depois que eu registro ou logo colocando a senha não aparece a dialog para escolher as três opção...


RE: spawn escolhido por cidade - Carlos Victor - 30/07/2022

Você precisa fazer com que o jogador escolha isso na hora do registro, pra quando ele der spawn, ser teleportado pra onde escolheu anteriormente.

Me chama no Discord, lá irei te respondar rapidamente.
Carlos Victor#6045


RE: spawn escolhido por cidade - xbruno1000x - 31/07/2022

Não vejo muito sentido em chamar uma dialog de inserir texto pro player digitar 1 ou 2. Por que não chamar uma dialog style list? O player vai selecionar na lista Los Santos ou San Fierro, sem complexidade.


RE: spawn escolhido por cidade - fear - 31/07/2022

(30/07/2022 23:35)Carlos Victor Escreveu: Você precisa fazer com que o jogador escolha isso na hora do registro, pra quando ele der spawn, ser teleportado pra onde escolheu anteriormente.

Me chama no Discord, lá irei te respondar rapidamente.
Carlos Victor#6045

te add no discord. agora consegui com que ele chama-se a dialog ele da a frase da cidade escolhida.. porém não spawna o player eu tenho que clicar em spawn ali embaixo ou usar shift pra spawnar na cidade.