Portal SAMP
[Ajuda] OnPlayerDeath - 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] OnPlayerDeath (/showthread.php?tid=273)



OnPlayerDeath - [MV]LeleziN.Dr - 04/11/2020

Bom eu fiz um sistema para quando o player morrer aparecer um objeto (Caixão) na posição dele, mais quando o player está morre não aparece nenhum objeto no local, o que pode ta dando errado?

Código:
forward CriaObjetoP(Float:X, Float:Y, Float:Z);

#define Objeto_Pessoas1     2896
#define Maximo_Objetos 1

OnGameModeInit
for(new A = 0; A < Maximo_Objetos; A ++)
{
ObjetosP[A] = CreateObject(Objeto_Pessoas1, 0.0, 0.0, -9999, 0.0, 0.0, 0.0);
}

OnPlayerDeath
new Float:X, Float:Y, Float:Z;
GetPlayerPos(playerid, X, Y, Z);
ObjetosP[ObjetosP_Atual] =  CreateObject(Objeto_Pessoas1, X, Y, Z, 0.0, 0.0, 96.0);
ObjetosP_Atual ++;
SetTimerEx("CriaObjetoP",3000, false, "fff", X, Y, Z);

public CriaObjetoP(Float:X, Float:Y, Float:Z)
{
    if(EventoEmAndamento == 0)
    {
        if(ObjetosP_Atual >= (Maximo_Objetos - 1)) ObjetosP_Atual = -1;
        ObjetosP_Atual ++;
        DestroyObject(ObjetosP[ObjetosP_Atual]);
        new OR = (random(2 - 1) + 1);
        if(OR == 1) ObjetosP[ObjetosP_Atual] = CreateObject(Objeto_Pessoas1, X, Y, (Z - 0.5), 0.0, 0.0, 0.0);
        else if(OR == 2) ObjetosP[ObjetosP_Atual] = CreateObject(Objeto_Pessoas1, X, Y, (Z - 0.5), 0.0, 0.0, 0.0);
    }
    for(new I = 0; I < MAX_PLAYERS; I ++)
    {
            new S[128];
            if(EventoEmAndamento == 0) format(S, sizeof(S), "* Um pedestre morreu e um entulho foi disponibilizado! Distância: %.2f metros", GetDistanceToPoint(I, X, Y, Z));
            else format(S, sizeof(S), "* Um pedestre morreu e um entulho NÃO foi disponibilizado por um evento estar em andamento!");
            SendClientMessage(I, COR_MARA1, S);
        }
    }
    return 1;
}

Podem mim ajuda pfvr a soluciona esse bug

                                                                    > Servidor em Construção <
                                             • TSVR Brasil RPG 
                                                         - Em breve -


RE: OnPlayerDeath - Hazard - 04/11/2020

tem que pegar a posição do player

Código:
OnPlayerDeath(playerid, killerid, reason) {
new Float:Pos[3];
GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
ObjetosP[A] = CreateObject(Objeto_Pessoas1, Pos[0], Pos[1], Pos[2], 0.0, 0.0, 0.0);
}



RE: OnPlayerDeath - [MV]LeleziN.Dr - 04/11/2020

Não deu certo tbm não


RE: OnPlayerDeath - Leonardo Clark ~ - 04/11/2020

Eu não entendi o pq vc está criando os objetos em OnGameModeInit e na função CriarObjetoP depois de 3 segundos, sendo que é criado na hora na linha de cima do timer em OnPlayerDeath, de qualquer forma, eu fiz um aqui, ve se funciona

Código:
#define Objeto_Pessoas1     2896
#define Maximo_Objetos 1

new ObjetosP[MAX_PLAYERS];

public OnPlayerDeath(playerid, killerid, reason)
{
    if(EventoEmAndamento == 0)
    {
        new Float:pos[3];

        GetPlayerPos(playerid, pos[0], pos[1], pos[2]);
        ObjetosP[playerid] =  CreateObject(Objeto_Pessoas1, pos[0], pos[1], pos[2], 0.0, 0.0, 96.0);

        for(new I = 0; I < MAX_PLAYERS; I ++)
        {
                new S[128];
                format(S, sizeof(S), "* Um pedestre morreu e um entulho foi disponibilizado! Distância: %.2f metros", GetDistanceToPoint(I, X, Y, Z));
                SendClientMessage(I, COR_MARA1, S);
            }
        }
    } 
    else
        format(S, sizeof(S), "* Um pedestre morreu e um entulho NÃO foi disponibilizado por um evento estar em andamento!");

    return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
    DestroyObject(ObjetosP[playerid]);

    return 1;
}



RE: OnPlayerDeath - [MV]LeleziN.Dr - 06/11/2020

Tbm não deu certo

É alguma coisa q ta empedindo do objeto aparecer na posição do player quando morto

Estou fazendo esse sistema para integra na profissão de Agente Funerário


RE: OnPlayerDeath - HenriqueAra1 - 06/11/2020

Tenta criar uma bool e spawnar o jogador(pegando a posição antes) e fazer uma verificação dentro da OnPlayerSpawn, sempre uso assim e não da erro.


RE: OnPlayerDeath - [MV]LeleziN.Dr - 07/11/2020

Bom Fiz outro aqui de forma diferente e deu certo, quando a pessoa morre aparece o objeto no local, obrigado a todos que mim ajudaram.

+Rep


                                                                    > Servidor em Construção <
                                             • TSVR Brasil RPG 
                                                         - Em breve -