vehicle deleter
#1

Hi I have a vehicle spawn system. Now I want to add something different as the title say.

Because without vehicle deleter people could possibly flood the server with vehicles and it would cost lag and high memory usage. So Anyone know how to script a vehicle deleter? Let say if a player spawn a vehicle and he left the vehicle, after 3 minutes automatically delete that vehicle.

EDIT: I would like to apply this vehicle deleter to my vehicle spawner system.
Reply
#2

You can use this:
pawn Код:
//Top of script:
new _Timer[MAX_VEHICLES];

public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
     if(_Timer[vehicleid]) KillTimer(_Timer[vehicleid]);
     return 1;
}
public OnPlayerExitVehicle(playerid, vehicleid)
{
     _Timer[vehicleid] = SetTimerEx("@VehicleUnused", (60000 * 3), false, "d",vehicleid);
     return 1;
}
forward @VehicleUnused(vehicleid);
public @VehicleUnused(vehicleid)
     return DestroyVehicle(vehicleid);
Or you can use OnPlayerStateChange(it's more recommendable)

pawn Код:
//Top of script:
new _Timer[MAX_VEHICLES];
new _vehicleid[MAX_PLAYERS][MAX_VEHICLES];

public OnPlayerStateChange(playerid, newstate, oldstate)
{
    if(newstate == PLAYER_STATE_DRIVER) {
        _vehicleid[playerid] = GetPlayerVehicleID(playerid);
        if(_Timer[_vehicleid[playerid]]) KillTimer(_Timer[_vehicleid[playerid]]);
    }
    if(oldstate == PLAYER_STATE_DRIVER) {
         _Timer[_vehicleid[playerid]] = SetTimerEx("@VehicleUnused", (60000 * 3), false, "d",_vehicleid[playerid]);
    }
    return 1;
}
forward @VehicleUnused(vehicleid);
public @VehicleUnused(vehicleid)
     return DestroyVehicle(vehicleid);
Reply
#3

Quote:
Originally Posted by Dolby
Посмотреть сообщение
You can use this:
pawn Код:
//Top of script:
new _Timer[MAX_VEHICLES];

public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
     if(_Timer[vehicleid]) KillTimer(_Timer[vehicleid]);
     return 1;
}
public OnPlayerExitVehicle(playerid, vehicleid)
{
     _Timer[vehicleid] = SetTimerEx("@VehicleUnused", (60000 * 3), false, "d",vehicleid);
     return 1;
}
forward @VehicleUnused(vehicleid);
public @VehicleUnused(vehicleid)
     return DestroyVehicle(vehicleid);
Or you can use OnPlayerStateChange(it's more recommendable)

pawn Код:
//Top of script:
new _Timer[MAX_VEHICLES];
new _vehicleid[MAX_PLAYERS][MAX_VEHICLES];

public OnPlayerStateChange(playerid, newstate, oldstate)
{
    if(newstate == PLAYER_STATE_DRIVER) {
        _vehicleid[playerid] = GetPlayerVehicleID(playerid);
        if(_Timer[_vehicleid[playerid]]) KillTimer(_Timer[_vehicleid[playerid]]);
    }
    if(oldstate == PLAYER_STATE_DRIVER) {
         _Timer[_vehicleid[playerid]] = SetTimerEx("@VehicleUnused", (60000 * 3), false, "d",_vehicleid[playerid]);
    }
    return 1;
}
forward @VehicleUnused(vehicleid);
public @VehicleUnused(vehicleid)
     return DestroyVehicle(vehicleid);
Thanks for the reply but It doesnt get deleted. May because it has something to do with this or a conflict? Can you please fix it for me?

Код:
#define VehicleSpawnerLimit 1
Код:
forward VehicleSpawner(playerid,model);
forward VehicleDeleter(vehicleid);
forward VehicleSpawnerLimiter(playerid);
Код:
	}
	if(dialogid== Dialog_Vehicle)
    {
        if ( response==1 )
        {
            if(listitem==0)ShowPlayerDialog( playerid, Dialog_Airplanes, 2, "{82CAFF}Airplanes:", "{82CAFF}Andromada\n{82CAFF}AT-400\n{82CAFF}Beagle\n{82CAFF}Cropduster\n{82CAFF}Dodo\n{82CAFF}Nevada\n{82CAFF}Rustler\n{82CAFF}Shamal\n{82CAFF}Skimmer\n{82CAFF}Stuntplane", "Spawn", "Back" );
            if(listitem==1)ShowPlayerDialog( playerid, Dialog_Helicopters, 2, "{336699}Helicopters:", "{336699}Cargobob\n{336699}Leviathan\n{336699}Maverick\n{336699}News Maverick\n{336699}Police Maverick\n{336699}Raindance\n{336699}Seasparrow\n{336699}Sparrow", "Spawn", "Back" );
            if(listitem==2)ShowPlayerDialog( playerid, Dialog_Bike_Vehicle, 2, "{FF3333}Bikes:", "{FF3333}BF-400\n{FF3333}Bike\n{FF3333}BMX\n{FF3333}Faggio\n{FF3333}FCR-900\n{FF3333}Freeway\n{FF3333}Mountain Bike\n{FF3333}NRG-500\n{FF3333}PCJ-600\n{FF3333}Pizzaboy\n{FF3333}Quad\n{FF3333}Sanchez\n{FF3333}Wayfarer", "Spawn", "Back" );
            if(listitem==3)ShowPlayerDialog( playerid, Dialog_Convertable_Vehicle, 2, "{FFFF66}Convertibles:", "{FFFF66}Comet\n{FFFF66}Feltzer\n{FFFF66}Stallion\n{FFFF66}Windsor", "Spawn", "Back" );
            if(listitem==4)ShowPlayerDialog( playerid, Dialog_Industry_Vehicle, 2, "{993366}Industrial:", "{993366}Benson\n{993366}Bobcat\n{993366}Burrito\n{993366}Boxville\n{993366}Boxburg\n{993366}Cement Truck\n{993366}DFT-30\n{993366}Flatbed\n{993366}Linerunner\n{993366}Mule\n{993366}Newsvan\n{993366}Packer\n{993366}Petrol Tanker\n{993366}Pony\n{993366}Roadtrain\n{993366}Sadler\n{993366}Topfun\n{993366}Tractor\n{993366}Trashmaster\n{993366}Utility Van\n{993366}Walton", "Spawn", "Back" );
            if(listitem==5)ShowPlayerDialog( playerid, Dialog_LowRyder_Vehicle, 2, "{FFDAB9}Lowriders:", "{FFDAB9}Blade\n{FFDAB9}Broadway\n{FFDAB9}Remington\n{FFDAB9}Savanna\n{FFDAB9}Slamvan\n{FFDAB9}Tahoma\n{FFDAB9}Tornado\n{FFDAB9}Voodoo", "Spawn", "Back" );
            if(listitem==6)ShowPlayerDialog( playerid, Dialog_Off-Road_Vehicle, 2, "{CCFFFF}Off Road:", "{CCFFFF}Bandito\n{CCFFFF}BF Injection\n{CCFFFF}Dune\n{CCFFFF}Huntley\n{CCFFFF}Landstalker\n{CCFFFF}Mesa\n{CCFFFF}Monster\n{CCFFFF}Monster A\n{CCFFFF}Monster B\n{CCFFFF}Patriot\n{CCFFFF}Rancher A\n{CCFFFF}Rancher B\n{CCFFFF}Sandking", "Spawn", "Back" );
            if(listitem==7)ShowPlayerDialog( playerid, Dialog_Public_Service_Vehicle, 2, "{00CC33}Public Service:", "{00CC33}Ambulance\n{00CC33}Barracks\n{00CC33}Bus\n{00CC33}Cabbie\n{00CC33}Coach\n{00CC33}Cop Bike (HPV-1000)\n{00CC33}Enforcer\n{00CC33}FBI Rancher\n{00CC33}FBI Truck\n{00CC33}Firetruck\n{00CC33}Firetruck LA\n{00CC33}Police Car (LSPD)\n{00CC33}Police Car (LVPD)\n{00CC33}Police Car (SFPD)\n{00CC33}Ranger\n{00CC33}S.W.A.T\n{00CC33}Taxi", "Spawn", "Back" );
            if(listitem==8)ShowPlayerDialog( playerid, Dialog_Saloon_Vehicle, 2, "{999933}Saloons:", "{999933}Admiral\n{999933}Blood Banger\n{999933}Bravura\n{999933}Buccaneer\n{999933}Clover\n{999933}Elegant\n{999933}Elegy\n{999933}Emperor\n{999933}Esperanto\n{999933}Fortune\n{999933}Glendale\n{999933}Hermes\n{999933}Majestic\n{999933}Manana\n{999933}Nebula\n{999933}Oceanic\n{999933}Picador\n{999933}Stafford\n{999933}Sultan\n{999933}Virgo\n{999933}Willard\n{999933}Washington", "Spawn", "Back" );
            if(listitem==9)ShowPlayerDialog( playerid, Dialog_Sport_Vehicle, 2, "{99CCFF}Sport Vehicles:", "{99CCFF}Alpha\n{99CCFF}Banshee\n{99CCFF}Blista Compact\n{99CCFF}Buffalo\n{99CCFF}Bullet\n{99CCFF}Cheetah\n{99CCFF}Club\n{99CCFF}Euros\n{99CCFF}Flash\n{99CCFF}Hotring\n{99CCFF}Hotring A\n{99CCFF}Hotring B\n{99CCFF}Infernus\n{99CCFF}Jester\n{99CCFF}Phoenix\n{99CCFF}Sabre\n{99CCFF}Super GT\n{99CCFF}Turismo\n{99CCFF}Uranus\n{99CCFF}ZR-350", "Spawn", "Back" );
            if(listitem==10)ShowPlayerDialog( playerid, Dialog_Station_Vehicle, 2, "{ffffff}Station Wagons:", "{ffffff}Moonbeam\n{ffffff}Perenniel\n{ffffff}Regina\n{ffffff}Solair\n{ffffff}Stratum", "Spawn", "Back" );
            if(listitem==11)ShowPlayerDialog( playerid, Dialog_Boats_Vehicle, 2, "{990066}Boats:", "{990066}Coastguard\n{990066}Dinghy\n{990066}Jetmax\n{990066}Launch\n{990066}Marquis\n{990066}Predator\n{990066}Reefer\n{990066}Speeder\n{990066}Squallo\n{990066}Tropic", "Spawn", "Back" );
            if(listitem==12)ShowPlayerDialog( playerid, Dialog_Trailers_Vehicle, 2, "{FF9900}Trailers:", "{FF9900}Article\n{FF9900}Article 2\n{FF9900}Article 3\n{FF9900}Baggage A\n{FF9900}Baggage B\n{FF9900}Farm Trailer\n{FF9900}Petrol Trailer\n{FF9900}Stairs Trailer\n{FF9900}Utility Trailer", "Spawn", "Back" );
            if(listitem==13)ShowPlayerDialog( playerid, Dialog_Unique_Vehicle, 2, "{999999}Unique Vehicles:", "{999999}Baggage\n{999999}Caddy\n{999999}Camper\n{999999}Camper A\n{999999}Combine Harvester\n{999999}Dozer\n{999999}Dumper\n{999999}Forklift\n{999999}Hotknife\n{999999}Hustler\n{999999}Hotdog\n{999999}Kart\n{999999}Mower\n{999999}Mr Whoopee\n{999999}Romero\n{999999}Securicar\n{999999}Stretch\n{999999}Sweeper\n{999999}Towtruck\n{999999}Tug\n{999999}Vortex", "Spawn", "Back" );
            if(listitem==14)ShowPlayerDialog( playerid, Dialog_Rc_Vehicle, 2, "{006666}RC Vehicles:", "{006666}RC Bandit\n{006666}RC Baron\n{006666}RC Raider\n{006666}RC Goblin\n{006666}RC Tiger\n{006666}RC Cam", "Spawn", "Back" );
        }
    }
    if(dialogid== Dialog_Airplanes){
        if ( response ){
            VehicleSpawner(playerid,Airplanes[ listitem ]);
        }else ShowVehicleDialog(playerid);
    }
    if(dialogid== Dialog_Helicopters){
        if ( response ){
            VehicleSpawner(playerid,Helicopters[ listitem ]);
        }else ShowVehicleDialog(playerid);
    }
    if(dialogid== Dialog_Bike_Vehicle){
        if ( response ){
            VehicleSpawner(playerid,Bikes[ listitem ]);
        }else ShowVehicleDialog(playerid);
    }
    if(dialogid== Dialog_Convertable_Vehicle){
        if ( response ){
            VehicleSpawner(playerid,Convertibles[ listitem ]);
        }else ShowVehicleDialog(playerid);
    }
    if(dialogid== Dialog_Industry_Vehicle){
        if ( response ){
            VehicleSpawner(playerid,Industrials[ listitem ]);
        }else ShowVehicleDialog(playerid);
    }
    if(dialogid== Dialog_LowRyder_Vehicle){
        if ( response ){
            VehicleSpawner(playerid,Lowriders[ listitem ]);
        }else ShowVehicleDialog(playerid);
    }
    if(dialogid== Dialog_Off-Road_Vehicle){
        if ( response ){
            VehicleSpawner(playerid,Offroad[ listitem ]);
        }else ShowVehicleDialog(playerid);
    }
    if(dialogid== Dialog_Public_Service_Vehicle){
        if ( response ){
            VehicleSpawner(playerid,Pulic_Services[ listitem ]);
        }else ShowVehicleDialog(playerid);
    }
    if(dialogid== Dialog_Saloon_Vehicle){
        if ( response ){
            VehicleSpawner(playerid,Saloons[ listitem ]);
        }else ShowVehicleDialog(playerid);
    }
    if(dialogid== Dialog_Sport_Vehicle){
        if ( response ){
            VehicleSpawner(playerid,Sport[ listitem ]);
        }else ShowVehicleDialog(playerid);
    }
    if(dialogid== Dialog_Station_Vehicle){
        if ( response ){
            VehicleSpawner(playerid,Station[ listitem ]);
        }else ShowVehicleDialog(playerid);
    }
    if(dialogid== Dialog_Boats_Vehicle){
        if ( response ){
            VehicleSpawner(playerid,Boats[ listitem ]);
        }else ShowVehicleDialog(playerid);
    }
    if(dialogid== Dialog_Trailers_Vehicle){
        if ( response ){
            VehicleSpawner(playerid,Trailers[ listitem ]);
        }else ShowVehicleDialog(playerid);
    }
    if(dialogid== Dialog_Unique_Vehicle){
        if ( response ){
            VehicleSpawner(playerid,Unique[ listitem ]);
        }else ShowVehicleDialog(playerid);
    }
    if(dialogid== Dialog_Rc_Vehicle){
        if ( response ){
            VehicleSpawner(playerid,RC_Vehicles[ listitem ]);
        }else ShowVehicleDialog(playerid);
    }
Код:
public VehicleSpawnerLimiter(){
    new i;
    for(i=0;i<=MAX_PLAYERS;i++){
        if(VehicleSpawn[i]>0){
            VehicleSpawn[i]--;
        }
    }
}
Код:
VehicleSpawner(playerid,model)
{
    if(VehicleSpawn[playerid]==0)
    {
        new vehicleid;
        new Float:x, Float:y, Float:z, Float:a;
        if(GetPlayerVehicleID(playerid) != 0)
        {
            GetVehiclePos(GetPlayerVehicleID(playerid), x, y, z);
            GetVehicleZAngle(GetPlayerVehicleID(playerid), a);
            for(new i; i < MAX_PLAYERVEHICLES; i++)
            {
            	if(PlayerVehicle[playerid][i] == GetPlayerVehicleID(playerid))
            	{
					PlayerVehicle[playerid][i] = 0;
					break;
				}
            }
			DestroyVehicle(GetPlayerVehicleID(playerid));
        }
        else
        {
            GetPlayerPos(playerid, x, y, z);
            GetPlayerFacingAngle(playerid, a);
        }
        new interior = GetPlayerInterior(playerid);
  		if(interior != 0) return SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}>>You can't spawn a vehicle in interior");
        vehicleid = CreateVehicle(model, x, y, z, a, -1, -1, -1);
        SetVehiclePos(vehicleid, x, y, z);
        SetVehicleZAngle(vehicleid, a);
        SetVehicleVirtualWorld(vehicleid, GetPlayerVirtualWorld(playerid));
        LinkVehicleToInterior(vehicleid, GetPlayerInterior(playerid));
        PutPlayerInVehicle(playerid, vehicleid, 0);
        SetVehicleHealth(vehicleid,  1000.0);
        for(new i = 0; i < MAX_PLAYERVEHICLES; i++)
        {
            if(Turn[playerid] == MAX_PLAYERVEHICLES)
            {
                VehicleDeleter(PlayerVehicle[playerid][0]);
                for(new c; c < MAX_PLAYERVEHICLES - 1; c++) PlayerVehicle[playerid][c] = PlayerVehicle[playerid][c + 1];
                PlayerVehicle[playerid][MAX_PLAYERVEHICLES - 1] = 0;
                Turn[playerid]--;
            }
            if(!PlayerVehicle[playerid][i])
            {
                PlayerVehicle[playerid][i] = vehicleid;
                Turn[playerid]++;
                break;
            }
        }
    }
	return 1;
}
Код:
public VehicleSpawnerLimiter(){
    new i;
    for(i=0;i<=MAX_PLAYERS;i++){
        if(VehicleSpawn[i]>0){
            VehicleSpawn[i]--;
        }
    }
}

VehicleDeleter(vehicleid)
{
    for(new i=0;i<MAX_PLAYERS;i++)
    {
        new Float:X,Float:Y,Float:Z;
        if(IsPlayerInVehicle(i, vehicleid))
        {
        RemovePlayerFromVehicle(i);
        GetPlayerPos(i,X,Y,Z);
        SetPlayerPos(i,X,Y+3,Z);
        }
        SetVehicleParamsForPlayer(vehicleid,i,0,1);
    }
    SetTimerEx("VehRes", 60000, 0, "d", vehicleid);
}
Reply
#4

it shouldn't has conflicts, make sure you have inserted correctly in script.

#Edit: Solved.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)