[Duda]Sistema de muerte
#1

Bien, tengo un problema con un sistema de muerte. El mismo en si funciona excelente el tema es con el cmd /volver el cual no posiciona al jugador en la posiciуn deseada (en la cual muriу). Yo realizй una funciуn para detectar cuando un jugador tenнa menos de 10 de vida y bueno la misma toma la posiciуn del jugador en ese momento y la guarda en una variable. Pero cuando usa el comando /volver este mismo no vuelve a su posiciуn ni realiza las animaciones que le fuerzo a hacer. Tampoco se le aplica el TogglePlayerControllable cosa que intentй pero no funcionу. Aquн dejo el code
pawn Код:
#include <a_samp>
#include <zcmd>

new pMuerto[MAX_PLAYERS];
new Float:x,Float:y,Float:z, Float:HP, Float:posx[MAX_PLAYERS], Float:posy[MAX_PLAYERS], Float:posz[MAX_PLAYERS];

forward CheckHP(playerid);
public OnGameModeInit()
{
    CheckHP();
    return 1;
}
public CheckHP(playerid)
{
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
        if(IsPlayerConnected(i))
        {
            if(GetPlayerHealth(i, HP) == 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 10)
            {
                GetPlayerPos(i, x,y,z);
                posx[i] = x;
                posy[i] = y;
                posz[i] = z;
            }
        }
    }
    SetTimerEx("CheckHP", 1000, false, "i");
    return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
    pMuerto[playerid] = 1;
    SetPlayerInterior(playerid, 18);
    SetPlayerPos(playerid, 100,100,600);
    SetPlayerCameraPos(playerid, 100, 100, 600);
    SetPlayerCameraLookAt(playerid, 120,120, 600);
    TogglePlayerControllable(playerid, 0);
    SetPlayerVirtualWorld(playerid, 10);
    SendClientMessage(playerid, -1, " * {1900FF}Oh no has {FF0000} muerto {1900FF}. Utiliza {FFFFFF}/morir {1900FF}para spawnear (Tardarбs 3 minutos) ");
    SendClientMessage(playerid, -1, " * {1900FF} у {FFFFFF}/volver {1900FF}para regresar al lugar donde moriste");
    return 1;
}
zcmd(morir, playerid, params[])
{
    if(pMuerto[playerid] == 1)
    {
        SetTimerEx("Death", 180000, false, "i", ".");
        SendClientMessage(playerid, -1, " * {1900FF} Has muerto ahora deberбs esperar 3 minutos para spawnear. ");
    } else SendClientMessage(playerid, -1, "{A6A6A6} No estбs muerto -.-!");
    return 1;
}
zcmd(volver, playerid, params[])
{
    if(pMuerto[playerid] == 1)
    {
        SetPlayerPos(playerid, 0,0, 10);
        //SetPlayerPos(playerid, posx[playerid], posy[playerid], posz[playerid]);
        SetPlayerInterior(playerid, 0);
        SetPlayerVirtualWorld(playerid, 0);
        SetCameraBehindPlayer(playerid);
        pMuerto[playerid] = 0;
        ApplyAnimation(playerid, "CRACK", "crckdeth2", 4, 0, 0, 0, 1, 0,0);
        SetTimerEx("Back", 180000, false, "i");
        TogglePlayerControllable(playerid, 0);
        SendClientMessage(playerid, -1, " * {1900FF} Has regresado de tu estado de muerte. Ahora estarбs por un tiempo tirado en el suelo...");
        SetPlayerHealth(playerid, 50);
    } else SendClientMessage(playerid, -1, "{A6A6A6} No estбs muerto -.-!");
    return 1;
}
forward Death(playerid);
public Death(playerid)
{
    pMuerto[playerid] = 0;
    TogglePlayerControllable(playerid, 1);
    SetCameraBehindPlayer(playerid);
    //SpawnPlayer(playerid);
    //Su lнnea/callback del spawn
    return 1;
}
forward Back(playerid);
public Back(playerid)
{
    TogglePlayerControllable(playerid, 1);
    ClearAnimations(playerid);
    //SpawnPlayer(playerid);
    //Su lнnea/callback del spawn
    return 1;
}
Reply
#2

Arriba de todo:
pawn Код:
new Float: Posmuriox, Float: Posmurioy, Float: Posmurioz;
en onplayerdeath:

pawn Код:
GetPlayerPos(playerid, Posmuriox, Posmurioy, Posmurioz);
en el comando volver:

pawn Код:
SetPlayerPos(playerid, Posmuriox, Posmurioy, Posmurioz);
Y con eso deberнa funcionar.
Reply
#3

Eso lo habнa hecho en un principio y como no funcionу (no sй porquй) hice la funciуn para detectar la vida.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)