Portal SAMP
[Ajuda] Morrer dentro da arena - 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] Morrer dentro da arena (/showthread.php?tid=5095)



Morrer dentro da arena - Blueface - 09/09/2025

Olá eu estou fazendo uma arena porem quando o player morre dentro desta arena ele vai para Grove Street e aparece aquela barra de spawn, aqui esta o código que eu fiz da arena



Código:
Dialog DIALOG_ARENAS(playerid, response, listitem, inputtext[])
{
    if(!response) return Dialog_Close(playerid);
    if(response)
    {
        switch(listitem)
        {
            case 0:
            {
                SetPlayerInterior(playerid, 3);
                new Spawn = random(sizeof(SpawnArenaM4));
                SetPlayerPos(playerid, SpawnArenaM4[Spawn][0], SpawnArenaM4[Spawn][1], SpawnArenaM4[Spawn][2]);
                SetPlayerFacingAngle(playerid, SpawnArenaM4[Spawn][3]);
                SetCameraBehindPlayer(playerid);
                ResetPlayerWeapons(playerid);
                GivePlayerWeapon(playerid, 31, 5000);
                SetPlayerHealth(playerid, 100);
                SetPlayerArmour(playerid, 100);
                Dialog_Close(playerid);
                ArenaM4[playerid] = true;
            }
        }
    }
    return 1;

hook OnPlayerSpawn(playerid)
{
    if(ArenaM4[playerid] == true)
    {
        new Spawn = random(sizeof(SpawnArenaM4));
        SetPlayerPos(playerid, SpawnArenaM4[Spawn][0], SpawnArenaM4[Spawn][1], SpawnArenaM4[Spawn][2]);
        SetPlayerFacingAngle(playerid, SpawnArenaM4[Spawn][3]);
        SetCameraBehindPlayer(playerid);
        ResetPlayerWeapons(playerid);
        GivePlayerWeapon(playerid, 31, 5000);
        SetPlayerHealth(playerid, 100);
        SetPlayerArmour(playerid, 100);
        return 1;
    }
    return 1;
}


esses são os códigos responsáveis pela arena


RE: Morrer dentro da arena - Aranha - 09/09/2025

Faz uma define para DIALOG_ARENAS e coloque seu codigo dentro da public OnDialogResponse


RE: Morrer dentro da arena - xbruno1000x - 09/09/2025

(09/09/2025 17:36)Aranha Escreveu: Faz uma define para DIALOG_ARENAS e coloque seu codigo dentro da public OnDialogResponse

A dialog não está incorreta, ele apenas parece estar usando o easyDialog. O problema dele está ocorrendo por conta do player estar voltando para a tela de seleção de classe ao morrer. 

Na OnGameModeInit você adiciona uma classe do tipo:
Código:
    AddPlayerClass(265,1958.3783,1343.1572,15.3746,270.1425,0,0,0,0,-1,-1);

e depois na OnPLayerRequestClass você faz algo como:
Código:
    if(Logged[playerid]) //Adapte sua variavel de logado para não skipar o login
    {
        SpawnPlayer(playerid);
        return true;
    }

Dessa forma deve chamar a OnPlayerSpawn e executar seu código


RE: Morrer dentro da arena - Blueface - 10/09/2025

(09/09/2025 20:00)xbruno1000x Escreveu:
(09/09/2025 17:36)Aranha Escreveu: Faz uma define para DIALOG_ARENAS e coloque seu codigo dentro da public OnDialogResponse

A dialog não está incorreta, ele apenas parece estar usando o easyDialog. O problema dele está ocorrendo por conta do player estar voltando para a tela de seleção de classe ao morrer. 

Na OnGameModeInit você adiciona uma classe do tipo:
Código:
    AddPlayerClass(265,1958.3783,1343.1572,15.3746,270.1425,0,0,0,0,-1,-1);

e depois na OnPLayerRequestClass você faz algo como:
Código:
    if(Logged[playerid]) //Adapte sua variavel de logado para não skipar o login
    {
        SpawnPlayer(playerid);
        return true;
    }

Dessa forma deve chamar a OnPlayerSpawn e executar seu código

tentei dessa forma e não foi vou tentar de outros jeitos


RE: Morrer dentro da arena - xbruno1000x - 10/09/2025

(10/09/2025 12:19)Blueface Escreveu: tentei dessa forma e não foi vou tentar de outros jeitos

Certamente está relacionado a requisição de classe.

Tente algo como:
Código:
public OnPlayerRequestClass(playerid, classid)
{
    // Este exemplo simples demonstra como spawnar cada jogador automaticamente com
    // a skin do CJ, que é o número 0. O jogador irá spawnar em Las Venturas, com
    // 36 munições de Sawnoff-Shotgun e 150 munições de Tec9.
    SetSpawnInfo( playerid, 0, 0, 1958.33, 1343.12, 15.36, 269.15, 26, 36, 28, 150, 0, 0 );
}


Doc:
https://open.mp/pt-BR/docs/scripting/functions/SetSpawnInfo