PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : SWep: DosenWelder und so



peacemaker
10.07.2009, 18:05
Aloha.
Ich hab ne kleine DosenSpawner Swep geschrieben,Die mit Linksklick ne Dose and nem Prop Weldet. Mit rechtsklick spawnt die einfach so.
Aber das ist ja nebensache.^^
Als erstes hab ich versucht es mit ner Toolgun zu machen das ich aber nicht Schaffte.
So. Was ich nun machen will ist Kompliziert, dass weiss ich gut ^^
Ich möchte das automatisch nen Trail auf die Dosen gemacht wird.
Klappt auch relativ gut.
Mit ner "if" sollte dann überprüft werden ob die Concommand "Can_Trail" 1 ist.
Wenn dann soll halt nen Trail miterstellt werden.
Nur wenn ich als Standart 0 hab und ich in die console ne 1 mache, ändert es sich nicht. Wenn ich aber 1 als Standart hab, schon.
Wie Schaffe ich das?
Ich hab es mit
function GetClientInfo( property )
local mode = self:GetMode()
return self:GetOwner():GetInfo("Can_Trail")
end
Versucht. Ein Codesnippet aus gmod.com
aber das gibt nur Lua Fehler.

Hier mal meine Epische shared.lua


//Contact and SpawnSettings.. blabla
SWEP.Author = "Flo / Peacemaker"
SWEP.Contact = "Garrysmod.de - User peacemaker"
SWEP.Instructions = "Rightclick to Spawn a Can / Leftclick To Spawn and Wekd a Can to a Prop"
SWEP.Spawnable = "True"
SWEP.AdminSpawnable = "True"
local Can_Trail = CreateClientConVar("Can_Trail",10,true,true)
local myint = Can_Trail:GetInt()
function GetClientInfo( property )
local mode = self:GetMode()
return self:GetOwner():GetInfo("Can_Trail")
end
//Model Setting or somethin'
SWEP.ViewModel = "models/weapons/v_pistol.mdl"
SWEP.WorldModel = "models/weapons/w_pistol.mdl"
// Primary Settings. Like Garrys-Manhack gun.
SWEP.Primary.Clipsize = "-1"
SWEP.Primary.DefaultClip= "-1"
SWEP.Primary.Automatic = false
SWEP.Primary.Ammo = "none"
// Secondary. Like Garrys-Manhack gun.
SWEP.Secondary.Clipsize = "-1"
SWEP.Secondary.DefaultClip= "-1"
SWEP.Secondary.Automatic = false
SWEP.Secondary.Ammo = "none"
//Primary Attack
function SWEP:PrimaryAttack(tr)

local tr = self.Owner:GetEyeTrace()

if (!SERVER) then return end
Msg (myint)
//Spawn the Can. Yay
local ent = ents.Create ("prop_physics")
ent:SetModel ("models/props_junk/PopCan01a.mdl")
ent:SetPos( tr.HitPos + self.Owner:GetAimVector() * -3 )
ent:SetAngles( tr.HitNormal:Angle() )
ent:Spawn()
//Weld the Can. Yay Again!
local weld = constraint.Weld( tr.Entity, ent, tr.PhysicsBone, 0, 0 )
// Let's Undo It. Again the 3rd. Time
undo.Create( "OMFG CAN!" )
undo.AddEntity( weld )
undo.AddEntity( ent )
undo.SetPlayer( self.Owner )
undo.Finish()
if (myint == 1) then
local trail = util.SpriteTrail(ent, 0, Color(255,0,0), false, 15, 1, 4, 1/(15+1)*0.5, "trails/plasma.vmt")
else
return false
end
end
function SWEP:SecondaryAttack()

local tr = self.Owner:GetEyeTrace()


if (!SERVER) then return end

//Spawn the Can. Yay
local ent = ents.Create ("prop_physics")
ent:SetModel ("models/props_junk/PopCan01a.mdl")
ent:SetPos( tr.HitPos + self.Owner:GetAimVector() * -3 )
ent:SetAngles( tr.HitNormal:Angle() )
ent:Spawn()
// Let's Undo It. Again the 3rd. Time
undo.Create( "OMFG CAN!" )
undo.AddEntity( ent )
undo.SetPlayer( self.Owner )
undo.Finish()
end
//Kill other Keys. OBEY
function SWEP:Think()
end

function SWEP:Reload()
end



Bitte Helft mir :D

WeltEnSTurm
10.07.2009, 18:18
SWEP.Author = "Flo / Peacemaker"
SWEP.Contact = "Garrysmod.de - User peacemaker"
SWEP.Instructions = "Rightclick to Spawn a Can / Leftclick To Spawn and Wekd a Can to a Prop"
SWEP.Spawnable = "True"
SWEP.AdminSpawnable = "True"

local Can_Trail = CreateClientConVar("Can_Trail",1,false,true)

SWEP.ViewModel = "models/weapons/v_pistol.mdl"
SWEP.WorldModel = "models/weapons/w_pistol.mdl"

SWEP.Primary.Clipsize = "-1"
SWEP.Primary.DefaultClip= "-1"
SWEP.Primary.Automatic = false
SWEP.Primary.Ammo = "none"

SWEP.Secondary.Clipsize = "-1"
SWEP.Secondary.DefaultClip= "-1"
SWEP.Secondary.Automatic = false
SWEP.Secondary.Ammo = "none"

function SWEP:PrimaryAttack(tr)
local tr = self.Owner:GetEyeTrace()
if (!SERVER) then return end
local ent = ents.Create ("prop_physics")
ent:SetModel ("models/props_junk/PopCan01a.mdl")
ent:SetPos( tr.HitPos + self.Owner:GetAimVector() * -3 )
ent:SetAngles( tr.HitNormal:Angle() )
ent:Spawn()
local weld = constraint.Weld( tr.Entity, ent, tr.PhysicsBone, 0, 0 )
undo.Create( "OMFG CAN!" )
undo.AddEntity( weld )
undo.AddEntity( ent )
undo.SetPlayer( self.Owner )
undo.Finish()
if (Can_Trail:GetInt() == 1) then
local trail = util.SpriteTrail(ent, 0, Color(255,0,0), false, 15, 1, 4, 1/(15+1)*0.5, "trails/plasma.vmt")
else
return false
end
end

function SWEP:SecondaryAttack()
local tr = self.Owner:GetEyeTrace()
if (!SERVER) then return end
local ent = ents.Create ("prop_physics")
ent:SetModel ("models/props_junk/PopCan01a.mdl")
ent:SetPos( tr.HitPos + self.Owner:GetAimVector() * -3 )
ent:SetAngles( tr.HitNormal:Angle() )
ent:Spawn()
undo.Create( "OMFG CAN!" )
undo.AddEntity( ent )
undo.SetPlayer( self.Owner )
undo.Finish()
end

function SWEP:Think()
end

function SWEP:Reload()
end

Dummerchen. Während das script geladen wird macht er ne neue convar, das ist schonmal gut. Aber gleich in der nächsten Zeile rufst du den Wert ab, und speicherst den in einer Variable die du später verwendest, das heißt sie ist immer gleich.

peacemaker
10.07.2009, 18:37
Dummerchen.
:(



Während das script geladen wird macht er ne neue convar, das ist schonmal gut. Aber gleich in der nächsten Zeile rufst du den Wert ab, und speicherst den in einer Variable die du später verwendest, das heißt sie ist immer gleich.
Danke! Es geht :D
Achja. Gibt es eine Methode ohne der Toolgun sowas wie ein Colorpicker zu bauen und in einer Convar zu speichern?

Pij
10.07.2009, 19:04
Bedenke, dass das mit Colour erst was wird, wenn du dem Prop o.Ä. vorher mit dem Colour Tool 'ne Farbe verpasst, ansonsten hat nichts eine Farbe.

peacemaker
10.07.2009, 19:06
Bedenke, dass das mit Colour erst was wird, wenn du dem Prop o.Ä. vorher mit dem Colour Tool 'ne Farbe verpasst, ansonsten hat nichts eine Farbe.

Also.. Ich mein eigentlich. Die Trailfarbe verändern. Deswegen iwie ein Colorpicker vllt Derma oder so? der dann Iwie Hex Dezimalien dann inner convar speichert?

BennyG
10.07.2009, 19:11
Meh.
Ich hab zwar keinen Plan was du mit nen Derma Panel willst ohne Toolgun, da man schließlich ja den Mauszeiger braucht um das Color Panel zu benutzen, aber diesen Code benutze ich um ein Color Panel zu erstellen.


local ColorVGui = vgui.Create("CtrlColor")
ColorVGui:SetPos(260,70)
ColorVGui:SetWide(180)
ColorVGui:SetConVarR( "color_can_trail_r") // Die dazugehörigen Client Convars natürlich am Anfang des Scriptes definieren
ColorVGui:SetConVarG( "color_can_trail_g" )
ColorVGui:SetConVarB( "color_can_trail_b" )
ColorVGui:SetConVarA( "color_can_trail_a" )

peacemaker
10.07.2009, 19:13
Ola'
Mein Problem ist ja, dass ich es ja eigentlich mit ner Toolgun haben will.
Nur ich schaff es einfach nicht.
Danke erstmal für den Code
Ich Poste einfach ganz Dreißt mal meine "Wannabe Toolgun"
TOOL.Category = "Construction"
TOOL.Name = "#Can Spawner"
TOOL.Command = nil
TOOL.ConfigName = ""


if CLIENT then
language.Add( "Tool_can_name", "Teh C4n Spwnr" )
language.Add( "Tool_can_desc", "Made by Peacemaker" )
language.Add( "Tool_can_0", "Leftclick-Spawn and Weld a Can to a Prop./.Rightclick Just Spawn a fkn' Can" )
language.Add( "Undone_can", "Undone Can" )
end

function TOOL:LeftClick(tr)
if (!tr.Entity) then return false end
if (!tr.Entity:IsValid() ) then return false end
if (tr.Entity:IsPlayer()) then return false end
if (tr.Entity:IsWorld()) then return false end

if ( CLIENT ) then return true end
ent = ents.Create("prop_physics")
ent.Entity:SetModel("models/props_junk/PopCan01a.mdl")
ent:SetPos( ent.HitPos + self.Owner:GetAimVector() * -3 )
ent:SetAngles( ent.HitNormal:Angle() )
ent.Entity:Spawn()
return true
end