27.11.2011, 16:28
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

Gracias desde ya
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;
}
#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;
}