PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : lua "ATTACK" Problem



RP-01
21.06.2008, 13:55
Also ich habe folgendes Problem:

Ich bin an einer Waffe am Arbeiten die als Primärattacke entweder CombineBalls Oder Laser schießen soll.Die materials hab ich und den code das ich auf use den "PrimaryAttackMode" wechsekn kann, bloß ich weiß nicht wie ich das in Primary Attack reinbringen soll das das auch geschossen und gewechseln werden kann! Es wäre nett wenn mir einer einen tipp geben könnte oder sogar das was ich reinschreiben muss hier rein posten könnte.

Danke im Vorraus!

Edit by Pac: *Links die niemand braucht removed!*

Pac_187
21.06.2008, 23:02
Wenn du hier Hilfe möchtest,
dann solltest du uns schon deinen Code zeigen
damit wir sehen können was du bis jetzt hast
und wie du es gemacht hast!

RP-01
21.06.2008, 23:10
ok...hier ist er:


if (SERVER) then
AddCSLuaFile("shared.lua")
SWEP.Weight = 5
SWEP.AutoSwitchTo = True
SWEP.AutoSwitchFrom = True
end

if (CLIENT) then
SWEP.PrintName = "FusionNuke"
SWEP.DrawAmmo = True
SWEP.DrawCrosshair = True
SWEP.ViewModelFOV = False
SWEP.ViewModelFlip = False
end

SWEP.Author = "[JEM]TheReignOfTheDesserted"
SWEP.Contact = "[email protected]"
SWEP.Purpose = "I will the world may cry!"
SWEP.Instructions = ""
SWEP.Spawnable = True
SWEP.AdminSpawnable = True
SWEP.Slot = 5
SWEP.SlotPos = 3
SWEP.ViewModel = "models/weapons/v_rpg.mdl"
SWEP.WorldModel = "models/weapons/w_rocket_launcher.mdl"
util.PrecacheModel(SWEP.ViewModel)
util.PrecacheModel(SWEP.WorldModel)
SWEP.Primary.ReloadSound = "sounds/weapons/reload1.wav"
SWEP.Primary.ReloadTime = 1.1
SWEP.Primary.ClipSize = 10
SWEP.Primary.DefaultClip = 10000
SWEP.Primary.Automatic = True
SWEP.Primary.Ammo = "smg1"
SWEP.Primary.Recoil = 0.1
SWEP.Primary.Damage = 999999999999
SWEP.Primary.NumShots = 5
SWEP.Primary.Cone = 0
SWEP.Primary.Delay = 2
SWEP.Primary.Sound = "sounds/weapons/fire2.wav"
SWEP.Secondary.ClipSize = 10
SWEP.Secondary.DefaultClip = 10000
SWEP.Secondary.Automatic = True
SWEP.Secondary.Ammo = "smg1"
SWEP.Secondary.Recoil = 0.1
SWEP.Secondary.Damage = -1
SWEP.Secondary.NumShots = 1
SWEP.Secondary.Cone = 0
SWEP.Secondary.Delay = 2
SWEP.Secondary.Sound = "sounds/weapons/exp2.wav"
SWEP.Secondary.ReloadSound = "sounds/weapons/reload1.wav"
SWEP.Secondary.ReloadTime = 1.1

function SWEP:Initialize()

if ( SERVER ) then

self:SetWeaponHoldType( self.HoldType )

end

function SWEP:Reload()

self.Weapon:SetNetworkedBool( "Scoped", false )
if (SERVER) then self.Owner:SetFOV(90,.3) end
self.Weapon:DefaultReload(ACT_VM_RELOAD)
self.Weapon:EmitSound(self.Primary.ReloadSound)

self.Weapon:SetNextPrimaryFire( CurTime() + self.Primary.ReloadTime )


function SWEP:Think()

if self.Owner:KeyPressed( IN_USE ) then
if (self.Use + 1.1 > CurTime()) then return end
self.Use = CurTime()
if self.Mode = 1 then
self.Mode = 0
self.Weapon:SendWeaponAnim( ACT_VM_RELOAD) // View model animation
self.Weapon:SetNextPrimaryFire( CurTime() + self.Primary.ReloadTime )
self.Owner:PrintMessage(HUD_PRINTCENTER, "CombineBall")
else
self.Mode = 1
self.Weapon:SendWeaponAnim( ACT_VM_RELOAD) // View model animation
self.Weapon:SetNextPrimaryFire( CurTime() + self.Primary.ReloadTime )
self.Owner:PrintMessage(HUD_PRINTCENTER, "Laser")

end


function SWEP:PrimaryAttack()

end


function SWEP:SecondaryAttack()

if self.Weapon:Clip1() < 1 then
return end

self.Weapon:SetNextPrimaryFire( CurTime() + self.Primary.Delay )
self.Weapon:SendWeaponAnim(ACT_VM_PRIMARYATTACK)

self:TakeSecondaryAmmo(1)

local PlayerPos = self.Owner:GetShootPos()
local PlayerAng = self.Owner:GetAimVector()

local trace = {}
trace.start = PlayerPos + PlayerAng*16
trace.endpos = PlayerPos + PlayerAng*65536
trace.filter = {self.Owner}
local hitpos = util.TraceLine(trace).HitPos

trace.start = hitpos + Vector(0,0,2048)
trace.endpos = trace.start + Vector(0,0,6144)
local traceRes = util.TraceLine(trace)
local spawnpos

if traceRes.Hit then
spawnpos = traceRes.HitPos - Vector(0,0,64)
else
spawnpos = hitpos + Vector(0,0,8192)

end

self.Rocket = ents.Create("sent_nuke_missile")
self.Rocket:SetVar("owner",self.Owner)
self.Rocket:SetPos(spawnpos)
self.Rocket:SetAngles(Vector(90,0,0))
self.Rocket:Spawn()
self.Rocket:Activate()
self.RocketPhysObj = self.Rocket:GetPhysicsObject()

self.Rocket:EmitSound(sndMissileFire)

end

function SWEP:Holster()

end


function SWEP:Deploy()

end


function SWEP:DrawHUD()

end

end


mal so neben bei die secondary attack klappt und dann kommen in der konsole 2 Meldungen:unexsepted near "=" und unexsepted "end" near "I"

was heißt das eigentlich wenn in der Console steht "end" expected (to close "function" at line 125) near "l"

Scarecrow
22.06.2008, 17:34
In der Console stehen neben den Unexcepted-Fehlern auch immer Zeilenangaben. Die wären jetzt echt nützlich ;)

Wegen den Attacks: Du könntest es ja so machen, dass bei einem Druck auf Reload eine Variable auf 1 oder 0 gesetzt wird (Modus-Switch/Flip-Flop) und beim Primary Attack je nach Modus das Eine oder das Andere passiert.

RP-01
22.06.2008, 18:39
das hab ich ja auf e gemacht....ich weiß bloß ncht wie ich die materials da rein "verlinke"
ach ja da steht was von zeile 125 aber das steht da bei fehlern immer

Scarecrow
22.06.2008, 18:48
Was genau meinst du mit Materials verlinken?

RP-01
22.06.2008, 19:28
ich einen combineball und einen laser und das will ich so machen das ich das schießen kann

Scarecrow
22.06.2008, 19:39
Hmm, also das musst du schon selbst programmieren ;)

PS: Nimm dir ein Beispiel an dem Laserpointer von Garry, der schon dabei ist.

RP-01
22.06.2008, 19:43
ok bloß das problem dabei ist das ich das script davon nicht finde

achso ich mein jetzt das mir jemand dabei hilft den Grundcode zumachen nicht jetzt reinschreiben wie das heißt und so bzw. nur das skelett ohne das sonst iergendwas von dem radius der explosion bis zum namen des materials trinnsteht

BennyG
23.06.2008, 10:58
Junge,nun hör auf darum zu betteln das man dir alles Scriptet und du es dann nur editierst.

Es gibt genügend Seiten wo man Lua(Auch in relation zu Garrysmod) lernen kann.
Schau doch mal hier,
Sehr gutes Anfänger Tutorial (http://garrysmod.de/forum/showthread.php?t=4602)(Dort hab ich es auch gelernt[Zumindest die Grundlagen von Lua])

Alle Garrysmod Funtkionen und Hooks,sehr nützlich! (http://garrysmod.de/forum/showthread.php?t=12939)

Hier sind auch Tutorials,wenn auch die Seite längst nicht komplett ist! (http://garrysmod.de/wiki/index.php/LUA)

Du kriegst im Leben nicht alles hinterhergeworfen.
Wenn du Lua überhaupt grundsätzlich verstehst,durch den Aufbau mit Funktionen,Hooks,If-Else Abfragen etc. kannst du sowas mit leichtigkeit bewältigen.

Kleiner Hinweis:

Was du hier veruchst sollte man mit Render.DrawBeam (http://wiki.garrysmod.com/wiki/?title=Render.DrawBeam) schaffen

Beispiel


local Laser = Material("WTF/COOKIES") -- Wtf ,Benny likes cookies!

function GM:HUDPaint()
render.SetMaterial( Laser )
render.DrawBeam( LocalPlayer():GetShootPos(), LocalPlayer():GetAimVector()*100, 5, 0, 0, Color( 255, 255, 255, 255 ) )
end


Auf den ServerSide Part müsstes du mit util.TraceLine (http://wiki.garrysmod.com/wiki/?title=Util.TraceLine) und Player.Kill (http://wiki.garrysmod.com/wiki/?title=Player.Kill)
arbeiten


Ich hoffe das hilft dir ;)

RP-01
23.06.2008, 21:34
danke ich denke jetz klappts

RP-01
30.06.2008, 23:09
DAS HIER IST NUR UM ES SICH MAL ANZUSCHAUEN:
if (SERVER) then
AddCSLuaFile("shared.lua")
SWEP.Weight = 5
SWEP.AutoSwitchTo = True
SWEP.AutoSwitchFrom = True
end

if (CLIENT) then
SWEP.PrintName = "FusionNuke"
SWEP.DrawAmmo = True
SWEP.DrawCrosshair = True
SWEP.ViewModelFOV = False
SWEP.ViewModelFlip = False
end

SWEP.Author = "[JEM]TheReignOfTheDesserted"
SWEP.Contact = "[email protected]"
SWEP.Purpose = "I will the world may cry!"
SWEP.Instructions = ""
SWEP.Spawnable = True
SWEP.AdminSpawnable = True
SWEP.Slot = 5
SWEP.SlotPos = 3
SWEP.ViewModel = "models/weapons/v_rpg.mdl"
SWEP.WorldModel = "models/weapons/w_rocket_launcher.mdl"
util.PrecacheModel(SWEP.ViewModel)
util.PrecacheModel(SWEP.WorldModel)
SWEP.Primary.ReloadSound = "sounds/weapons/reload1.wav"
SWEP.Primary.ReloadTime = 1.1
SWEP.Primary.ClipSize = 10
SWEP.Primary.DefaultClip = 10000
SWEP.Primary.Automatic = True
SWEP.Primary.Ammo = "smg1"
SWEP.Primary.Recoil = 0.1
SWEP.Primary.Damage = 999999999999
SWEP.Primary.NumShots = 5
SWEP.Primary.Cone = 0
SWEP.Primary.Delay = 2
SWEP.Primary.Sound = "sounds/weapons/fire2.wav"
SWEP.Secondary.ClipSize = 10
SWEP.Secondary.DefaultClip = 10000
SWEP.Secondary.Automatic = True
SWEP.Secondary.Ammo = "smg1"
SWEP.Secondary.Recoil = 0.1
SWEP.Secondary.Damage = -1
SWEP.Secondary.NumShots = 1
SWEP.Secondary.Cone = 0
SWEP.Secondary.Delay = 2
SWEP.Secondary.Sound = "sounds/weapons/exp2.wav"
SWEP.Secondary.ReloadSound = "sounds/weapons/reload1.wav"
SWEP.Secondary.ReloadTime = 1.1

function SWEP:Initialize()

if ( SERVER ) then

self:SetWeaponHoldType( self.HoldType )
end

function SWEP:Reload()

self.Weapon:SetNetworkedBool( "Scoped", false )
if (SERVER) then self.Owner:SetFOV(90,.3) end
self.Weapon:DefaultReload(ACT_VM_RELOAD)
self.Weapon:EmitSound(self.Primary.ReloadSound)

self.Weapon:SetNextPrimaryFire( CurTime() + self.Primary.ReloadTime )


function SWEP:Think()

if self.Owner:KeyPressed( IN_USE ) then
if (self.Use + 1.1 > CurTime()) then return end
self.Use = CurTime()
if self.Mode == 1 then
self.Mode = 0
self.Weapon:SendWeaponAnim( ACT_VM_RELOAD) // View model animation
self.Weapon:SetNextPrimaryFire( CurTime() + self.Primary.ReloadTime )
self.Owner:PrintMessage(HUD_PRINTCENTER, "CombineBall")
else
self.Mode = 1
self.Weapon:SendWeaponAnim( ACT_VM_RELOAD) // View model animation
self.Weapon:SetNextPrimaryFire( CurTime() + self.Primary.ReloadTime )
self.Owner:PrintMessage(HUD_PRINTCENTER, "Laser")

end


function SWEP:PrimaryAttack()

local Laser = Material( "comball/laser" )

function ENT:Draw()

self.Entity:DrawModel()

local Vector1 = self.Entity:LocalToWorld( Vector( 0, 0, -200 ) )
local Vector2 = self.Entity:LocalToWorld( Vector( 0, 0, 200 ) )

render.SetMaterial( Laser )
render.DrawBeam( Vector1, Vector2, 5, 0, 0, Color( 255, 255, 255, 255 ) )

end


function SWEP:SecondaryAttack()

if self.Weapon:Clip1() < 1 then
return end

self.Weapon:SetNextPrimaryFire( CurTime() + self.Primary.Delay )
self.Weapon:SendWeaponAnim(ACT_VM_PRIMARYATTACK)

self:TakeSecondaryAmmo(1)

local PlayerPos = self.Owner:GetShootPos()
local PlayerAng = self.Owner:GetAimVector()

local trace = {}
trace.start = PlayerPos + PlayerAng*16
trace.endpos = PlayerPos + PlayerAng*65536
trace.filter = {self.Owner}
local hitpos = util.TraceLine(trace).HitPos

trace.start = hitpos + Vector(0,0,2048)
trace.endpos = trace.start + Vector(0,0,6144)
local traceRes = util.TraceLine(trace)
local spawnpos

if traceRes.Hit then
spawnpos = traceRes.HitPos - Vector(0,0,64)
else
spawnpos = hitpos + Vector(0,0,8192)

end

self.Rocket = ents.Create("sent_nuke_missile")
self.Rocket:SetVar("owner",self.Owner)
self.Rocket:SetPos(spawnpos)
self.Rocket:SetAngles(Vector(90,0,0))
self.Rocket:Spawn()
self.Rocket:Activate()
self.RocketPhysObj = self.Rocket:GetPhysicsObject()

self.Rocket:EmitSound(sndMissileFire)

end

function SWEP:Holster()

end


function SWEP:Deploy()

end


function SWEP:DrawHUD()

end

end

RP-01
01.07.2008, 14:03
So hab ein neues problem die Waffe klappt so weit,kann bloß nicht wechseln da dort eine Fehlermeldung kommt das in Zeile 75 ein "then" zu viel ist mach ich es weg steht da das es immernoch zu viel ist obwohl in Zeile 75 keins mehr ist...was machen?

Scarecrow
01.07.2008, 22:34
Zeile 75, falscher Operator!

= Zuweisungsoperator
== Vergleichsoperator

Passiert mir auch manchmal, aber mittlerweile achte ich gut darauf :gmod:

RP-01
04.07.2008, 09:59
so simpel°° nur noch en = hat gefehlt!

das wollte ich hier mal erwähnen:
ich hab vor kurzem von einem Programm für g-mod gehört mit dem man effekte machen kann! Hat auser mir nochjemand was davon gehört?

BennyG
04.07.2008, 10:42
Das ist kein Programm und es ist nicht für GMod gemacht,ich denke du meinst den Particle Effect Editor.

Ich bin mir sicher,dass du sie eh nicht ins Spiel eingebunden kriegst,aber starte mal Garrysmod mit "-tools"(Ohne die "") als StartParameter.

RP-01
04.07.2008, 13:25
danke!
Ich mein einen anderen editor der wirklich NUR für g-mod ist....mit dem man auch andere editieren kann!

Scarecrow
04.07.2008, 14:15
Selbst wenn es sowas gäbe, es ist für'n Arsch! Von Hand machen lohnt sich immer.

BennyG
04.07.2008, 14:25
Also ich kenn auch kein anderen und den den ich meine ist sehr gut.

Damit lassen sich sehr gute Effekte machen(Alles was du in Episode 2 an Effekten siehst ist damit gemacht)

RP-01
04.07.2008, 19:43
cool wo gibts den dann?

A.I.
04.07.2008, 20:17
cool wo gibts den dann?

Im Gmod. :roll:

BennyG
04.07.2008, 20:31
Wie schon gesagt,du startest eins der OrangeBox Engine Games(Gmod zählt auch dazu)
mit -tools als StartParameter(Auf E. Launch Parameters)

RP-01
04.07.2008, 20:31
ok,probier es.......hat ein problem festgestellt muss geschlossen werden....so downloade cih mir g-mod neu

commander2040
05.07.2008, 14:01
Also waddehaddedugemacht? Neu installieren bringt nix... da es nur die .cfg s neu downloadet! Und du sein sicher dass du hast rchtig eingegeben haben?

XD...

RP-01
16.07.2008, 13:12
das mach ihc nur das der patch raus ist

RP-01
28.07.2008, 20:20
So ich habe folgendes Problem mit meiner Waffe:
Sie schießt....aber nicht das was sie soll, keine combineballs laser un atomraketen!

nein sie schießt smg Schüsse....kann mir nicht erklären wieso!

Ich mach die Waffe jetz mal in en Anhang,bitte downloaded sie euch und testet un guckt euch mal alles an dann könnt ihr mir villeicht ein Tipp geben was falsch ist!

Schonmal Danke im Vorraus

Pac_187
29.07.2008, 05:57
So viele Fehler wie da drin sind kann man gar nicht aufzählen...

Ich kann es nur noch einmal erwähnen:

Fang mit etwas einfachen an bzw. lerne überhaupt erstmal die Grundkenntnisse!

Du wiest ja nicht mal wann eine Funktion zu Ende ist und wann nicht.

RP-01
30.07.2008, 00:35
nahja was solls..dann dauerts halt noch en bisschen