Ok Ive looked through other peoples codes and shit and some how can not work. I feel it has something to do with me using shared.lua but not sure.
Anyways, I followed this Chair thrower tutorial and got the code at the bottom.
I thought id see if i can customize it a bit. Let me add it so the player automatically gets the weapon on spawn.
So i use GM:PlayerSpawn
[lua]
function GM:PlayerSpawn( ply )
print( "The player \"" .. ply:GetName() .. "\" has respawned." )
end
[/lua]
I get an error, google, google, google, turns out I should use GAMEMODE:Playerspawn
I add that as a function to the bottom of the code bellow. No error, the game wont load unless i press "~" to override it. Function isnt working.
Next I add a hook to the if(CLIENT) section, right under language.add
No go, then I moved it to the if(SERVER) section because i found it was a Server hook, but still no go.
[lua]
hook.Add("PlayerSpawn", "spawnmessage", Spawn)
[/lua]
then the spawn function at the bottom
[lua]
function Spawn ( ply )
ply:PrintMessage( HUD_PRINTTALK, "Testing function first")
end
[/lua]
Ive almost given up, I hope one of you could help me out.
Original Full code (sooner or later I thought it was something in my code, so I just copied the finished tutorials source, and still same issues)
[lua]
if SERVER then // This is where the init.lua stuff goes.
//This makes sure clients download the file
AddCSLuaFile ("shared.lua")
//How heavy the SWep is
SWEP.Weight = 5
//Allow automatic switching to/from this weapon when weapons are picked up
SWEP.AutoSwitchTo = false
SWEP.AutoSwitchFrom = false
elseif CLIENT then // This is where the cl_init.lua stuff goes
//The name of the SWep, as appears in the weapons tab in the spawn menu(Q Menu)
SWEP.PrintName = "Chair throwing gun"
//Sets the position of the weapon in the switching menu
//(appears when you use the scroll wheel or keys 1-6 by default)
SWEP.Slot = 4
SWEP.SlotPos = 1
//Sets drawing the ammuntion levels for this weapon
SWEP.DrawAmmo = false
//Sets the drawing of the crosshair when this weapon is deployed
SWEP.DrawCrosshair = false
//Ensures a clean looking notification when a chair is undone. How it works:
//When you create an undo, you specify the ID:
// undo.Create("Some_Identity")
//By creating an associated language, we can make the undo notification look better:
// language.Add("Undone_Some_Identity", "Some message...")
language.Add("Undone_Thrown_SWEP_Entity","Undone Chair Bullet Entity")
end
SWEP.Author = "Not Ugleh"
SWEP.Contact = "im@ugleh.com"
SWEP.Purpose = "Shoots chairs"
SWEP.Instructions = ""
//The category that you SWep will be shown in, in the Spawn (Q) Menu
//(This can be anything, GMod will create the categories for you)
SWEP.Category = "OOGIE BOOGIE"
SWEP.Spawnable = true -- Whether regular players can see it
SWEP.AdminSpawnable = true -- Whether Admins/Super Admins can see it
SWEP.ViewModel = "models/weapons/v_RPG.mdl" -- This is the model used for clients to see in first person.
SWEP.WorldModel = "models/weapons/w_rocket_launcher.mdl" -- This is the model shown to all other clients and in third-person.
//This determins how big each clip/magazine for the gun is. You can
//set it to -1 to disable the ammo system, meaning primary ammo will
//not be displayed and will not be affected.
SWEP.Primary.ClipSize = -1
//This sets the number of rounds in the clip when you first get the gun. Again it can be set to -1.
SWEP.Primary.DefaultClip = -1
//Obvious. Determines whether the primary fire is automatic. This should be true/false
SWEP.Primary.Automatic = false
//Sets the ammunition type the gun uses, see below for a list of types.
SWEP.Primary.Ammo = "none"
SWEP.Secondary.ClipSize = -1
SWEP.Secondary.DefaultClip = -1
SWEP.Secondary.Automatic = false
SWEP.Secondary.Ammo = "none"
//When the script loads, the sound ''Metal.SawbladeStick'' will be precached,
//and a local variable with the sound name created.
local ShootSound = Sound("Metal.SawbladeStick")
function SWEP:Reload()
end
function SWEP:Think()
end
function SWEP:throw_attack (model_file)
//Get an eye trace. This basically draws an invisible line from
//the players eye. This SWep makes very little use of the trace, except to
//calculate the amount of force to apply to the object thrown.
local tr = self.Owner:GetEyeTrace()
//Play some noises/effects using the sound we precached earlier
self:EmitSound(ShootSound)
self.BaseClass.ShootEffects(self)
//We now exit if this function is not running serverside
if (!SERVER) then return end
//The next task is to create a physics prop based on the supplied model
local ent = ents.Create("prop_physics")
ent:SetModel(model_file)
//Set the initial position and angles of the object. This might need some fine tuning;
//but it seems to work for the models I have tried.
ent:SetPos(self.Owner:EyePos() + (self.Owner:GetAimVector() * 16))
ent:SetAngles(self.Owner:EyeAngles())
ent:Spawn()
//Now we need to get the physics object for our entity so we can apply a force to it
local phys = ent:GetPhysicsObject()
//Check if the physics object is valid. If not, remove the entity and stop the function
if !(phys && IsValid(phys)) then ent:Remove() return end
//Time to apply the force. My method for doing this was almost entirely empirical
//and it seems to work fairly intuitively with chairs.
phys:ApplyForceCenter(self.Owner:GetAimVector():GetNormalized() * math.pow(tr.HitPos:Length(), 3))
//Now for the important part of adding the spawned objects to the undo and cleanup lists.
cleanup.Add(self.Owner, "props", ent)
undo.Create ("Thrown_SWEP_Entity")
undo.AddEntity (ent)
undo.SetPlayer (self.Owner)
undo.Finish()
end
//Throw an office chair on primary attack
function SWEP:PrimaryAttack()
//Call the throw attack function, with the office chair model
self:throw_attack("models/props/cs_office/Chair_office.mdl")
end
//Throw a wooden chair on secondary attack
function SWEP:SecondaryAttack()
//Call the throw attack function, this time with the wooden chair model
self:throw_attack("models/props_c17/FurnitureChair001a.mdl")
end
[/lua]
Try adding this to your code
[lua]
if SERVER then
local function Spawn(ply)
ply:Give("weapon_class_name")
ply:ChatPrint(ply:Nick() .. ", you have been given the legendary chair launcher v9001")
end
end
[/lua]
[QUOTE=Loures;34988941]Try adding this to your code
[lua]
if SERVER then
local function Spawn(ply)
ply:Give("weapon_class_name")
ply:ChatPrint(ply:Nick() .. ", you have been given the legendary chair launcher v9001")
end
end
[/lua][/QUOTE]
or this :P
[lua]
//This goes in init.lua
hook.Add("PlayerSpawn", "Spawnhook", function(ply)
ply:Give("weapon_class_name")
ply:ChatPrint(ply:Nick() .. ", you have been given the legendary chair launcher v9001")
end)
hook.Add( "PlayerInitialSpawn", "PlyJoinServer", function(ply)//When the player first joins the server
ply:ChatPrint("Welcome"..ply:Nick()..", enjoy your stay!")
end
[/lua]
Ok so I added
[lua]
hook.Add("PlayerSpawn", "Spawnhook", function(ply)
ply:Give("weapon_class_name")
ply:ChatPrint(ply:Nick() .. ", you have been given the legendary chair launcher v9001")
end)
[/lua]
to the start of the IF SERVER.
I change the class name to the given class name I gave it, and it doesn't give it to them, but the chat still works.
I added this to the IF SERVER, then tried IF CLIENT, then tried out of both and still doesnt work:
[lua]SWEP.ClassName = "chairthrower"
[/lua]
Am i doing something wrong?
the classname is the name of the folder the SWEP files go in
[QUOTE=Banana Lord.;34992745]the classname is the name of the folder the SWEP files go in[/QUOTE]
See I googled SWEP.ClassName and could not find that. -.- Is it common sense or is there a site I should be visiting?
thanks
[QUOTE=Uglehs;34992778]See I googled SWEP.ClassName and could not find that. -.- Is it common sense or is there a site I should be visiting?
thanks[/QUOTE]
not that I know of sadly :(
[QUOTE=Uglehs;34992778]See I googled SWEP.ClassName and could not find that. -.- Is it common sense or is there a site I should be visiting?
thanks[/QUOTE]
I dont think you are understanding.
In your gamemode you should have :
Content/"Content"
Entities/weapons/"WEAPON FOLDERS"--------THIS IS WHERE THE WEAPON SHOULD BE
Gamemode/"Files for gamemode"
In Entities/weapons/chairswep/--name the folder chairswep go in your init.lua and change
[lua]
hook.Add("PlayerSpawn", "Spawnhook", function(ply)
ply:Give("weapon_class_name")
ply:ChatPrint(ply:Nick() .. ", you have been given the legendary chair launcher v9001")
end)
[/lua]
to
[lua]
hook.Add("PlayerSpawn", "Spawnhook", function(ply)
ply:Give("chairswep")--NAME OF THE FOLDER
ply:ChatPrint(ply:Nick() .. ", you have been given the legendary chair launcher v9001")
end)
[/lua]
Also when you join your gamemode kill yourself so you spawn again if you arn't doing initial spawn with teams --I think.
[QUOTE=brandonj4;34993147]I dont think you are understanding.
In your gamemode you should have :
Content/"Content"
Entities/weapons/"WEAPON FOLDERS"--------THIS IS WHERE THE WEAPON SHOULD BE
Gamemode/"Files for gamemode"
In Entities/weapons/chairswep/--name the folder chairswep go in your init.lua and change
[lua]
hook.Add("PlayerSpawn", "Spawnhook", function(ply)
ply:Give("weapon_class_name")
ply:ChatPrint(ply:Nick() .. ", you have been given the legendary chair launcher v9001")
end)
[/lua]
to
[lua]
hook.Add("PlayerSpawn", "Spawnhook", function(ply)
ply:Give("chairswep")--NAME OF THE FOLDER
ply:ChatPrint(ply:Nick() .. ", you have been given the legendary chair launcher v9001")
end)
[/lua]
Also when you join your gamemode kill yourself so you spawn again if you arn't doing initial spawn with teams --I think.[/QUOTE]
I never said I had the folder wrong. I have the folder right.
\garrysmod\garrysmod\addons\Chair Thrower\lua\weapons\weapon_chair_thrower\shared.lua
I just DIDNT know that the class name was the folder name. Everything atm is working out.
[QUOTE=Uglehs;34993385]I never said I had the folder wrong. I have the folder right.
\garrysmod\garrysmod\addons\Chair Thrower\lua\weapons\weapon_chair_thrower\shared.lua
I just DIDNT know that the class name was the folder name. Everything atm is working out.[/QUOTE]
Thats good that its working
Sorry, you need to Log In to post a reply to this thread.