Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const constVehicleLife = 10; // Seconds
- const constVehicleMaxOccupants = 8;
- _Vehicle <- {};
- /* class */
- class CVehicle {
- instance = null;
- lastUsed = null;
- creationTime = null;
- constructor( veh )
- {
- if ( typeof(veh) != "instance" ) return;
- this.instance = veh;
- this.creationTime = ::time();
- }
- };
- /* end of classes */
- /* functions */
- function getPreviouslySpawnedVehicle( player ) {
- /* eject any occupeant inside the vehicle */
- for( local i = 1; i <= constVehicleMaxOccupants; i++ )
- {
- local Occupant = _Vehicle.rawget( player.ID ).instance.GetOccupant( i );
- if ( Occupant != null )
- {
- Occupant.Eject();
- MessagePlayer( "The vehicle belongs to someone else, use /vehicle to spawn your own vehicle.", Occupant );
- }
- }
- _Vehicle.rawget( player.ID ).instance.Pos = player.Pos;
- player.Vehicle = _Vehicle.rawget( player.ID ).instance;
- }
- function removePreviouslySpawnedVehicle( player ) {
- /* eject any occupeant inside the vehicle */
- for( local i = 1; i <= constVehicleMaxOccupants; i++ )
- {
- local Occupant = _Vehicle.rawget( player.ID ).instance.GetOccupant( i );
- if ( Occupant != null )
- {
- Occupant.Eject();
- MessagePlayer( "The vehicle belongs to someone else, use /vehicle to spawn your own vehicle.", Occupant );
- }
- }
- _Vehicle.rawget( player.ID ).instance.Remove();
- _Vehicle.rawdelete( player.ID );
- }
- function processVehicles() {
- foreach( idx, veh in _Vehicles )
- {
- if ( ( time() - veh.lastUsed ) < constVehicleLife ) continue;
- if ( veh.instance.Driver != null ) continue;
- veh.instance.Remove();
- _Vehicle.rawdelete( idx );
- }
- }
- /* events processor */
- function processVehicleCommands( player, cmd, text )
- {
- switch( cmd )
- {
- case "car":
- case "veh":
- if ( player.Vehicle ) return MessagePlayer( "You must not be in a vehicle in order to use this command.", player );
- if ( _Vehicle.rawin( player.ID ) && ( time() - _Vehicle.rawget( player.ID ).creationTime ) >= constVehicleLife )
- {
- getPreviouslySpawnedVehicle( player );
- return MessagePlayer( "You can spawn new vehicle in "+( time() - _Vehicle.rawget( player.ID ).creationTime )+" seconds, bringing previously spawned vehicle.", player);
- }
- if ( !text ) return MessagePlayer( "/vehicle [130-236]", player );
- if ( !IsNum( text ) ) return MessagePlayer( "/vehicle [130-236]", player );
- local model = text.tointeger();
- if ( model < 130 || model > 236 ) return MessagePlayer("/vehicle [130-236]", player);
- if ( restrictedVehicle( model ) ) return MessagePlayer( "You can't spawn this vehicle", player );
- if ( _Vehicle.rawin( player.ID ) && _Vehicle.rawget( player.ID ).instance.Model == model )
- {
- getPreviouslySpawnedVehicle( player );
- return MessagePlayer( "The model is same as the previously spawned vehicle, bringing previously spawned vehicle.", player);
- }
- if ( _Vehicle.rawin( player.ID ) ) removePreviouslySpawnedVehicle( player );
- local veh = CreateVehicle( model, player.Pos, player.Angle, -1, -1 ); /* vehicle creation */
- _Vehicle.rawset( player.ID, CVehicle( veh ) );
- player.Vehicle = veh;
- return MessagePlayer("Vehicle Spawned: " + GetVehicleNameFromModel( model ), player );
- break;
- }
- }
- function processPlayerExitVehicle( player, vehicle )
- {
- foreach( veh in _Vehicle )
- {
- if ( veh.instance.ID != vehicle.ID ) continue;
- _Vehicle.rawget( player.ID ).lastUsed = time();
- }
- }
- function onPlayerPart( player, reason )
- {
- if ( !_Vehicle.rawin( player.ID ) ) return;
- removePreviouslySpawnedVehicle( player );
- }
Add Comment
Please, Sign In to add comment