06.02.2013, 05:06
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;
}