-
Entity Spawnen aber wie? :D
Hallo,
Ich möchte mit Derma ein kleines Menü erstellen und dort soll man Tische und Stühle spawnen können!
Da hätten wir eine Furniture_Spawn.lua
Code:
local DermaPanel = vgui.Create( "DFrame" )
DermaPanel:SetPos( 50,150 )
DermaPanel:SetSize( 700, 500 )
DermaPanel:SetTitle( "Spawn Furnitures" )
DermaPanel:SetVisible( true )
DermaPanel:SetDraggable( true )
DermaPanel:ShowCloseButton( true )
DermaPanel:MakePopup()
local DermaButton = vgui.Create( "DButton" )
DermaButton:SetParent( DermaPanel )
DermaButton:SetText( "Table" )
DermaButton:SetPos( 25, 50 )
DermaButton:SetSize( 150, 50 )
DermaButton.DoClick = function ()
SpawnTable()
end
und die cl_init.lua
Code:
include ("cl_hud.lua")
include ("Furniture_spawn.lua")
function SpawnTable()
local table = ents.Create("prop_physics")
table:SetModel("models/props_c17/FurnitureTable002a.mdl")
table:SetPos(tr.HitPos)
table:Spawn()
end
InGame geht direkt das Menü auf (ändere ich noch) und es kommt ein Panel mit einem Button namens "Table", bis dorthin keine errors!
Wenn ich auf den Button klicke spawnt bei den cooridnaten ~(0 0 64) ein Tisch durch den man durchlaufen kann und nicht zerstören.
Folgendes steht in der Console:
Zitat:
Zitat von Console
SantoRP/gamemode/cl_init.lua:8: attempt to index global 'tr' (a nil value)
Was habe ich übersehn, bzw. vergessen oder geht es auch leichter?
Thanks schonmal...
mfG Santo
-
AW: Entity Spawnen aber wie? :D
Zitat:
Zitat von
Santo
Code:
table:SetPos(tr.HitPos)
Er weiß nicht was "tr" ist.
Ich kenn mich leider nicht besonders mit Lua aus, aber du musst tr schon Definieren.
-
AW: Entity Spawnen aber wie? :D
-
AW: Entity Spawnen aber wie? :D
Code:
include ("cl_hud.lua")
include ("Furniture_spawn.lua")
local tr = self.Owner:GetEyeTrace()
function SpawnTable()
local table = ents.Create("prop_physics")
table:SetModel("models/props_c17/FurnitureTable002a.mdl")
table:SetPos(tr.HitPos)
table:Spawn()
end
Füg mal die Zeile ein.
-
AW: Entity Spawnen aber wie? :D
Das ist der Spawncode eines normalen Entity.
-
AW: Entity Spawnen aber wie? :D
Aber nur wenn du ein SENT erstellst!
-----
Desweiteren solltest du das Prop auf der Server Seite erstellen.
Mach einfach folgendes bei der DoClick Funktion:
Das sollte funktionieren.
-
AW: Entity Spawnen aber wie? :D
Also muss ich das derma in cl_init und die function in init stecken oder wie? :gmod:
-
AW: Entity Spawnen aber wie? :D
Wahrscheinlich.
cl_init ist darstellung/grafik, init das script
-
AW: Entity Spawnen aber wie? :D
Zitat:
Zitat von
WeltEnSTurm
Wahrscheinlich.
cl_init ist darstellung/grafik, init das script
Das stimmt nur bedingt.
In der cl_init.lua sind die Sachen für den Client (Derma, HUD usw) und in der init.lua sind Sachen für den Server (Entities Spawnen usw)
-
AW: Entity Spawnen aber wie? :D
Zitat:
Zitat von Console
SantoRP\gamemode\init.lua:1: attempt to index global 'self' (a nil value)
-
AW: Entity Spawnen aber wie? :D
Du müsstest hier schon deinen jetzigen Code reinstellen.
Wir haben keine Glaskugel oder jeglichen Zugriff auf deinen PC ;)
-
AW: Entity Spawnen aber wie? :D
Zitat:
Zitat von
Pac_187
Du müsstest hier schon deinen jetzigen Code reinstellen.
Wir haben keine Glaskugel oder jeglichen Zugriff auf deinen PC ;)
Ich hab diesen Fehler auch ständig. Ist self etwa falsch?
Muss man das auch Definieren?
-
AW: Entity Spawnen aber wie? :D
Ohne Code können wir nicht wissen was Falsch ist...
Edit: Ups sorry ich hab mir die vorige Seite angeschaut und vergessen die Posts auf der nächsten Seite zu lesen.
-
AW: Entity Spawnen aber wie? :D
Zitat:
Zitat von
Pac_187
Du müsstest hier schon deinen jetzigen Code reinstellen.
Wir haben keine Glaskugel oder jeglichen Zugriff auf deinen PC ;)
LOL nicht? :roll:
cl_furniture_spawn.lua
Code:
include ("init.lua")
local DermaPanel = vgui.Create( "DFrame" )
DermaPanel:SetPos( 50,150 )
DermaPanel:SetSize( 700, 500 )
DermaPanel:SetTitle( "Spawn Furnitures" )
DermaPanel:SetVisible( true )
DermaPanel:SetDraggable( true )
DermaPanel:ShowCloseButton( true )
DermaPanel:MakePopup()
local DermaButton = vgui.Create( "DButton" )
DermaButton:SetParent( DermaPanel )
DermaButton:SetText( "Table" )
DermaButton:SetPos( 25, 50 )
DermaButton:SetSize( 150, 50 )
DermaButton.DoClick = function ()
SpawnTable()
end
init.lua
Code:
local tr = self.Owner:GetEyeTrace()
function SpawnTable()
local table = ents.Create("prop_physics")
table:SetModel("models/props_c17/FurnitureTable002a.mdl")
table:SetPos(tr.HitPos)
table:Spawn()
end
-
AW: Entity Spawnen aber wie? :D
Also irgendwie hast meine Lösung noch nicht zu Herzen genommen oder?
Guckst du!
-
AW: Entity Spawnen aber wie? :D
Zitat:
Zitat von
Pac_187
Also irgendwie hast meine Lösung noch nicht zu Herzen genommen oder?
Guckst du!
Dann sagt er mir
Zitat:
Zitat von Console
SantoRP\gamemode\cl_furniture_spawn.lua:16: attempt to call global 'LocaPlayer' (a nil value)
-
AW: Entity Spawnen aber wie? :D
Ich habe doch gesagt du sollst das ganze aufn Server ausführen!
-
AW: Entity Spawnen aber wie? :D
Zitat:
Zitat von Console
SantoRP\gamemode\cl_furniture_spawn.lua:16: attempt to call global 'LocaPlayer' (a nil value)
Hah! Typischer Anfängerfehler, da weiß wohl jemand nicht wirklich was ein Client und was ein Server ist, gel?
Wird Zeit ein Client vs. Server Tutorial zu schreiben...
Und immer schön auf Pac hören...
-
AW: Entity Spawnen aber wie? :D
Zitat:
Zitat von
Pac_187
Also irgendwie hast meine Lösung noch nicht zu Herzen genommen oder?
Guckst du!
Heißt es nicht "LocalPlayer" ?
-
AW: Entity Spawnen aber wie? :D
Zitat:
Zitat von
A.I.
Heißt es nicht "LocalPlayer" ?
Das auch noch :gmod:
-
AW: Entity Spawnen aber wie? :D
Also nochmal ganz von vorne in die init.lua soll jetzt
Code:
function SpawnFirstTable()
local tr = LocalPlayer:GetEyeTrace()
local Table = ents.Create( "prop_physics" )
Table:SetModel ("models/props_c17/FurnitureTable002a.mdl" )
Table:SetPos( tr.HitPos )
Table:Spawn()
end
und in die client seitige lua:
Code:
include ("init.lua")
local DermaPanel = vgui.Create( "DFrame" )
DermaPanel:SetPos( 50,150 )
DermaPanel:SetSize( 700, 500 )
DermaPanel:SetTitle( "Spawn Furnitures" )
DermaPanel:SetVisible( true )
DermaPanel:SetDraggable( true )
DermaPanel:ShowCloseButton( true )
DermaPanel:MakePopup()
local DermaButton = vgui.Create( "DButton" )
DermaButton:SetParent( DermaPanel )
DermaButton:SetText( "Table" )
DermaButton:SetPos( 25, 50 )
DermaButton:SetSize( 150, 50 )
DermaButton.DoClick = function ()
SpawnFirstTable()
end
Dann kommt nämlich
Zitat:
Zitat von Console
SantoRP\gamemode\init.lua:2: attempt to index global 'LocalPlayer' (a function value)D
-
AW: Entity Spawnen aber wie? :D
Zitat:
Zitat von
A.I.
Heißt es nicht "LocalPlayer" ?
Ok das war jetzt mein Fehler... Sorry.
----
@ Santo:
Pack alles in die init.lua
Und es heißt LocalPlayer()
MIT den Klammern!
Also auch:
LocalPlayer():GetEyeTrace()
-
AW: Entity Spawnen aber wie? :D
Gut THANKS... aber nun ist es weder ein physisches prop noch hat es ein collisions model :gmod:
-
AW: Entity Spawnen aber wie? :D
Wenn er das in die init.lua packt kann das nicht funktionieren, weil
1. LocalPlayer() Clientside ist
2. Derma auch Clientside ist
Das Derma gehört in eine Datei die Clientside ist und die Spawn Funktion in eine Datei die Serverside ist.
Dann musst du bei der Spawnfunktion noch ein concommand hinzufügen, und dann das vom Client aus aufrufen.
Serverside
Clientside
-
AW: Entity Spawnen aber wie? :D
@SMILIE: Ich weis, aber erstmal soll es funktionieren ;)
Dann mach noch bei der Funktion folgendes:
Dann sollte es funktionieren ;)
-
AW: Entity Spawnen aber wie? :D
Bei der Version von Smilie kommt bei mir irgendwie
unknowncommand "spawnTable"
und bei der von Pac
Spawnt der Tisch irgendwo und hat wieder keine physic und nichts :S
sorry wenn ich es verbock :S
-
AW: Entity Spawnen aber wie? :D
Sorry war mein Fehler!
Ich hab geglaubt die Funktion heist spawnTable nicht SpawnFirstTable das ist das Problem.
Ich habs jetzt ausgebessert sollte nun funktionieren.
-
AW: Entity Spawnen aber wie? :D
Wo hast du denn die Datei drin abgelegt?
-
AW: Entity Spawnen aber wie? :D
Zitat:
Zitat von
SMILIE
Sorry war mein Fehler!
Ich hab geglaubt die Funktion heist spawnTable nicht SpawnFirstTable das ist das Problem.
Ich habs jetzt ausgebessert sollte nun funktionieren.
Also damit ich was lerne:
Hast du nicht eine funktion gemacht die SpawnFirstTable heißt um dann einen consolenbefehl zu machen der spawnTable heißt UM DANN diese mit der client seitigen lua abzurufen? :S
-
AW: Entity Spawnen aber wie? :D
Zitat:
Zitat von
Santo
Also damit ich was lerne:
Hast du nicht eine funktion gemacht die SpawnFirstTable heißt um dann einen consolenbefehl zu machen der spawnTable heißt UM DANN diese mit der client seitigen lua abzurufen? :S
Ja genau das hab ich gemacht.
So weit ich weis geht das nicht anders durch das Client/Server
-
AW: Entity Spawnen aber wie? :D
So ist es ;)
Hier kannst du noch ein sehr gutes Tutorial von Scarecrow/Comodofox finden!
Dort ist es in etwa genau so gemacht,
nur das halt kein Entity gespawnt wird,
sondern dem Spieler 10 Lebenspunkte hinzugefügt werden.
-
AW: Entity Spawnen aber wie? :D
Zitat:
Zitat von
SMILIE
Ja genau das hab ich gemacht.
So weit ich weis geht das nicht anders durch das Client/Server
Ja aber dann seh ich kein fehler?
-
AW: Entity Spawnen aber wie? :D
Der Fehler ist beim concommand.Add("spawnTable", spawnTable); und nicht concommand.Add("spawnTable", spawnFirstTable);
Die Funktion heist nämlcih SpawnFirstTable deshalb hat es nicht funktioniert.
Gehts jetzt?
-
AW: Entity Spawnen aber wie? :D
Zitat:
Zitat von
SMILIE
Der Fehler ist beim concommand.Add("spawnTable", spawnTable); und nicht concommand.Add("spawnTable", spawnFirstTable);
Die Funktion heist nämlcih SpawnFirstTable deshalb hat es nicht funktioniert.
Gehts jetzt?
Ähm ... nein aber... es ist doch:
concommand.Add("CONSOLENBEFEHL", FUNKTIONSNAME) oder? weil dann wäre
concommand.Add("spawnTable", spawnFirstTable) doch richtig? :D
zitiere:
Code:
function SpawnFirstTable(ply, cmd, args)
Funktion heißt somit "SpawnFirstTable"
JAWOLL und mit SpawnFirstTable gehts nun auch...keine Ahnung warum es vorher nicht ging!
Zu guter letzt:
wie ignoriere ich bei "wohin der tisch gespawnt wird" die maus im derma und verwende das crosshair? =D
Weil nun spawne ich mit klicken auf die schaltfläche und dort wo die schlatfläche war spawnt dann der tisch :D
-
AW: Entity Spawnen aber wie? :D
Vielleicht funktioniert das: http://wiki.garrysmod.com/wiki/?title=Util.TraceLine
Das Code Stück dort unten mein ich.
-
AW: Entity Spawnen aber wie? :D
Zitat:
Zitat von
SMILIE
Zitat plz xD
-
AW: Entity Spawnen aber wie? :D
-
AW: Entity Spawnen aber wie? :D
das wäre dann server?
wenn ja dann:
SantoRP/gamemode/init.lua:2: attempt to index global 'self' (a nil value)
-
AW: Entity Spawnen aber wie? :D
Fixed!
self.Owner wird nur in einer SWEP/SENT genutzt!
-
AW: Entity Spawnen aber wie? :D
Holy **** es geht!
Für alle die wissen wollen wie:
Client:
Server: