SA-MP Forums Archive
vehicle deleter - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Scripting Help (https://sampforum.blast.hk/forumdisplay.php?fid=12)
+--- Thread: vehicle deleter (/showthread.php?tid=472100)



vehicle deleter - kbalor - 26.10.2013

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.


Re: vehicle deleter - Dolby - 26.10.2013

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);



Re: vehicle deleter - kbalor - 26.10.2013

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);
}



Re: vehicle deleter - Dolby - 26.10.2013

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

#Edit: Solved.