morir al caer de la torre
#1

hola como puedo hacer para que cuando que cuando x jugador escriba /comando lo teletransporte a x lugar con x auto, pero si ese mismo jugador se cae con el vehiculo(es una torre la posicion) vuelva a hacer spawn en el mismo x lugar (torre)
y que cuando ponga /salircomando lo teletransporte ala ultima posicion donde escribio el /comando
gracias y favor de dejar ejemplos
Reply
#2

Variables y funciones que obtengan las coordenadas del jugador.

pawn Код:
GetPlayerPos()
GetPlayerInterior()
GetPlayerVirtualWorld()
EDIT: їComo si se cae?
Reply
#3

si es decir la posicion es en una torre y el usuario no se podra bajar del auto y si lo tiran de la torre que se vuelva a hacer spawn en la misma torre
Reply
#4

Bueno, en el comando para ir a la torre usa una variable que identifique que estб en la torre, como:

pawn Код:
InTower[playerid]
o

pawn Код:
SetPVarInt(playerid, "InTower", 1);
Cuando muere, al momento del SPAWN, tienes que identificar si el jugador estб en la torre:

pawn Код:
if(GetPVarInt(playerid, "InTower") == 1)
Si lo estб, establece SetPlayerPos en la posiciуn de la torre y return.

Para obtener las coordenadas al utilizar el /comando:

pawn Код:
new Float: x, Float: y, Float: z,  i, vw;
GetPlayerPos(playerid, x, y, z);
vw = GetPlayerVirtualWorld(playerid);
i = GetPlayerInterior(playerid);
SetPVarFloat(playerid, "LastPosX", x);
SetPVarFloat(playerid, "LastPosY", y);
SetPVarFloat(playerid, "LastPosZ", z);
SetPVarInt(playerid, "LastInt", i);
SetPVarInt(playerid, "LastVW", vw);
Al /salircomando para que vuelva a su posiciуn:

pawn Код:
SetPlayerPos(playerid, GetPVarFloat(playerid, "LastPosX"), GetPVarFloat(playerid, "LastPosY"), GetPVarFloat(playerid, "LastPosZ"));
SetPlayerVirtualWorld(playerid, GetPVarInt(playerid, "LastVW"));
SetPlayerInterior(playerid, GetPVarInt(playerid, "LastInt"));
Reply
#5

la torre es un piso plano ? si es asн puedes crear un timer que compruebe la coordenada z, un timer por todos los players no 1 timer por persona, aquн tienes un cуdigo
pawn Код:
public OnGameModeInit()
{
    SetTimer("TimerTorre",1000,true);
    return 1;
}

public OnPlayerCommandText(playerid,cmdtext[])
{
    if(strcmp(cmdtext,"/torre",true) == 0)
    {
        new Float: x, Float: y, Float: z,  i, vw;
        GetPlayerPos(playerid, x, y, z);
        vw = GetPlayerVirtualWorld(playerid);
        i = GetPlayerInterior(playerid);
        SetPVarFloat(playerid, "LastPosX", x);
        SetPVarFloat(playerid, "LastPosY", y);
        SetPVarFloat(playerid, "LastPosZ", z);
        SetPVarInt(playerid, "LastInt", i);
        SetPVarInt(playerid, "LastVW", vw);
        EnTorre[playerid] = 1;
        SetPlayerPos(playerid,coordx,coordy,coordz);// Cambiar las coordenadas por las de la torre
        return 1;
    }
    if(strcmp(cmdtext,"/salirtorre",true) == 0)
    {
        SetPlayerPos(playerid, GetPVarFloat(playerid, "LastPosX"), GetPVarFloat(playerid, "LastPosY"),                      GetPVarFloat(playerid, "LastPosZ"));
        SetPlayerVirtualWorld(playerid, GetPVarInt(playerid, "LastVW"));
        SetPlayerInterior(playerid, GetPVarInt(playerid, "LastInt"));
        return 1;
    }
    return 0;
}

forward TimerTorre();
public TimerTorre()
{
    new Float:pos[3];
    for(new i,d=GetMaxPlayers();i<d;i++)
    {
        if(IsPlayerConnected(i) && EnTorre[i])
        {
            GetPlayerPos(i,pos[0],pos[1],pos[2]);
            if( pos[2] < PisoTorre)// Cambia "PisoTorre" por la coordenada z del piso de la torre
            {
                SetVehiclePos(GetPlayerVehicleID(i),coordx,coordy,coordz);// cambia el texto por las coordenadas de la torre

            }                    
 
        }
    }

}
Es un codigo "base" que le faltan cosas a tu gusto, bueno no tan base por que te lo di todo, aclaro que copie el codigo que dejo junkbuster para no escribirlo de nuevo, ademas que lo hiso muy bien
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)