[AYUDA]Con coches
#1

Hola, bueno querнa saber como hago para que un coche no pueda salir de una zona si alguien va in lo intenta sacar que no salga pero que lo pueda usar en esa zona


Gracias desde ya
Reply
#2

Usб la funciуn IsVehicleInArea

pawn Код:
stock IsVehicleInArea(vehicleid, Float:minx, Float:maxx, Float:miny, Float:maxy)
{
    new Float:x, Float:y, Float:z;
    GetVehiclePos(vehicleid, x, y, z);
    if(x > minx && x < maxx && y > miny && y < maxy) return 1;
    return 0;
}
Si no estб en el area usб SetPlayerPos con un timer que le valla sumando o restando de a 1 ( depende quй coordenada sobrepasa ) hasta que estй en el area.
Reply
#3

Si pero me das un ejemplo de como creo el auto con ese stock
Reply
#4

Lo creas normal... CreateVehicle o AddStaticVehicle. Despuйs usб esa funciуn y SetPlayerPos. No necesitas ninguna funciуn mбs ( si mi memoria no falla con eso ya te alcanza )
Reply
#5

pawn Код:
#include <streamer>

new A_Vehiculos[MAX_VEHICLES][2];

public OnGameModeInit()
{
    for(new i; i < MAX_VEHICLES; i++) A_Vehiculos[i][0] = -1, A_Vehiculos[i][1] = -1;
    SetTimer("ActualizarAutos", 2000, true);
    //CrearAreaDeAuto(CreateVehicle(blah, blah...), minx, maxx, miny, maxy);
    return 1;
}

stock CrearAreaDeAuto(vehicleid, Float:minx, Float:maxx, Float:miny, Float:maxy)
{
    A_Vehiculos[vehicleid][0] = CreateDynamicRectangle(minx, miny, maxx, maxy);
    return 1;
}

stock EliminarAreaDeAuto(vehicleid)
{
    DestroyDynamicArea(A_Vehiculos[vehicleid][0]);
    A_Vehiculos[vehicleid][0] = -1;
    return 1;
}

forward ActualizarAutos();
public ActualizarAutos()
{
    for(new i; i < MAX_VEHICLES; i++)
    {
        if(A_Vehiculos[i][0] == -1) continue;
        new Float:x1, Float:x2, Float:y1, Float:y2, Float:x, Float:y, Float:z;
        GetVehiclePos(i, x, y, z);
        Streamer_GetFloatData(STREAMER_TYPE_AREA, A_Vehiculos[i][0], E_STREAMER_MAX_X, x1);
        Streamer_GetFloatData(STREAMER_TYPE_AREA, A_Vehiculos[i][0], E_STREAMER_MAX_Y, y1);
        Streamer_GetFloatData(STREAMER_TYPE_AREA, A_Vehiculos[i][0], E_STREAMER_MIN_X, x2);
        Streamer_GetFloatData(STREAMER_TYPE_AREA, A_Vehiculos[i][0], E_STREAMER_MIN_Y, y2);
        if(A_Vehiculos[i][1] == -1)
        {
            if(x < x2 || x > x1 || y < y2 || y > y1) SetVehicleToRespawn(i);
        }
        else
        {
            if(x < x2) SetVehiclePos(i, x2, y, z), SetVehicleVelocity(i, 0.0, 0.0, 0.0), GameTextForPlayer(A_Vehiculos[i][0], "~r~MANTEN EL VEHICULO EN EL AREA DESIGNADA!", 5000, 3);
            if(x > x1) SetVehiclePos(i, x1, y, z), SetVehicleVelocity(i, 0.0, 0.0, 0.0), GameTextForPlayer(A_Vehiculos[i][0], "~r~MANTEN EL VEHICULO EN EL AREA DESIGNADA!", 5000, 3);
            if(y < y2) SetVehiclePos(i, y2, y, z), SetVehicleVelocity(i, 0.0, 0.0, 0.0), GameTextForPlayer(A_Vehiculos[i][0], "~r~MANTEN EL VEHICULO EN EL AREA DESIGNADA!", 5000, 3);
            if(y > y1) SetVehiclePos(i, y1, y, z), SetVehicleVelocity(i, 0.0, 0.0, 0.0), GameTextForPlayer(A_Vehiculos[i][0], "~r~MANTEN EL VEHICULO EN EL AREA DESIGNADA!", 5000, 3);
        }
    }
    return 1;
}

public OnPlayerStateChange(playerid, newstate, oldstate)
{
    if(newstate == PLAYER_STATE_DRIVER)
    {
        SetPVarInt(playerid, "UltimoVehiculo", GetPlayerVehicleID(playerid));
        A_Vehiculos[GetPlayerVehicleID(playerid)][0] = playerid;
    }
    if(oldstate == PLAYER_STATE_DRIVER)
    {
        A_Vehiculos[GetPVarInt(playerid, "UltimoVehiculo")][0] = -1;
        DeletePVar(playerid, "UltimoVehiculo");
    }
    return 1;
}
Algo asн? No lo he probado, pero deberнa funcionar bien
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)