• Another LUA Question: GM_Spawnvehicles in a gamemode
    8 replies, posted
would this work? [lua] /*--------------------------------------------------------- Name: CCSpawnVehicle Desc: Player attempts to spawn vehicle ---------------------------------------------------------*/ function CCSpawnVehicle( Player, command, arguments ) if ( arguments[1] == nil ) then return end if ( !gamemode.Call( "PlayerSpawnVehicle", Player ) ) then return end local vname = arguments[1] local VehicleList = list.Get( "Vehicles" ) local vehicle = VehicleList[ vname ] // Not a valid vehicle to be spawning.. if ( !vehicle ) then return end local tr = Player:GetEyeTraceNoCursor() local Ent = ents.Create( vehicle.Class ) if ( !ValidEntity( Ent ) ) then return end if ( vehicle.Model ) then Ent:SetModel( vehicle.Model ) end if ( vehicle.KeyValues ) then for k, v in pairs( vehicle.KeyValues ) do Ent:SetKeyValue( k, v ) end end // Rotate to face player (expected behaviour) local Angles = Player:GetAngles() Angles.pitch = 0 Angles.roll = 0 Angles.yaw = Angles.yaw + 180 Ent:SetAngles( Angles ) Ent:SetPos( tr.HitPos ) Ent:Spawn() Ent:Activate() undo.Create( "Vehicle" ) undo.SetPlayer( Player ) undo.AddEntity( Ent ) undo.SetCustomUndoText( "Undone "..vehicle.Name ) undo.Finish( "Vehicle ("..tostring( vehicle.Name )..")" ) Player:AddCleanup( "vehicles", Ent ) gamemode.Call( "PlayerSpawnedVehicle", Player, Ent ) end concommand.Add( "gm_spawnvehicle", CCSpawnVehicle ) [/lua] if not,what do you suggest?
First, yuck!! This code had all of it's tabs replaced by spaces, with some extra ones added seemingly for fun as well as faulty indentation. Otherwise, yes it would work if you remove [lua]if ( !gamemode.Call( "PlayerSpawnVehicle", Player ) ) then return end [/lua] because that hook won't be called outside of Sandbox. Unless you make your own that is. Depending of what you want to do you could also remove most of the code in there to leave only the vehicle spawning and setup. More details will lead to more help.
Thanks! Also,Is there a way to allow "undo"ing them?
its already added in the code... [PHP] undo.Create( "Vehicle" ) undo.SetPlayer( Player ) undo.AddEntity( Ent ) undo.SetCustomUndoText( "Undone "..vehicle.Name ) undo.Finish( "Vehicle ("..tostring( vehicle.Name )..")" ) Player:AddCleanup( "vehicles", Ent ) [/PHP]
Thank you for your help.
no problem :) EDIT: yes! my 300th post
[QUOTE=Dave_Parker;22321111]It's like that everywhere in the base code.[/QUOTE] It isn't, code like that would be unmaintainable. [url]http://luabin.foszor.com/code/gamemodes/sandbox/gamemode/commands.lua#710[/url] Click "Plain View" before copy and pasting next time.
Sorry, you need to Log In to post a reply to this thread.