PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : SEnt: Schriftzug auf Entities



kycro
12.02.2009, 10:32
Hallo, ich möchte wollte gerne einen Schriftzug auf meinen Entities haben,
der nur sichtbar ist, wenn man auf das Entity schaut. Also nicht:

AddWorldTip( self.Entity:EntIndex(), "text hier drin", 0.5, self.Entity:GetPos(), self.Entity )

weil das sieht man auch über hundert meter durch wände durch am Bildschirmrand. Wenn ihr etwas mit "DarkRP" anfangen könnt, ich meine einen Schriftzug wie dort auf den Moneyprintern oder auf den Waffen Shipments.

Und danke fürs helfen, learning by doing klappt auch nicht immer 100%ig

don-banane
12.02.2009, 11:13
function DrawText()
local tr = LocalPlayer():GetEyeTrace()
local pos = tr.Entity:GetPos()
pos.z = pos.z + 8
pos = pos:ToScreen()
if tr.Entity:GetClass() == "dein_entity" then
draw.SimpleText("Dein Text", "TargetID", pos.x, pos.y, Color(255,255,255,255),1,1)
end
end
hook.Add("HUDPaint", "DrawText", DrawText)

TargetID ist die Schriftart (die wird auch in DarkRP verwendet), du kannst aber auch andere nehmen und color ist in der üblichen RGBa form ;)

kycro
12.02.2009, 11:14
Kommt das in die "init.lua" oder die "cl_init.lua" ?

Und dnake für den Code

WeltEnSTurm
12.02.2009, 11:44
Kommt das in die "init.lua" oder die "cl_init.lua" ?

Und dnake für den Code

cl_init.
der server braucht das nicht sehn, sondern der client :V

kycro
12.02.2009, 11:53
Ich habe den code eingefügt, aber er will nicht so wie ich will. Hier ist die gesamte "cl_init.lua"
include("shared.lua")

function ENT:Initialize()
end

function DrawText()
local tr = LocalPlayer():GetEyeTrace()
local pos = tr.Entity:GetPos()
pos.z = pos.z + 8
pos = pos:ToScreen()
if tr.Entity:GetClass() == "weed_factury" then
draw.SimpleText("Marijuana Factury", "TargetID", pos.x, pos.y, Color(255,255,255,255),1,1)
end
end
hook.Add("HUDPaint", "DrawText", DrawText)

function ENT:Draw()
self.Entity:DrawModel()
end

function ENT:Think()
end

WeltEnSTurm
12.02.2009, 12:47
Irgendwas muss die funktion auch aufrufen.

Pac_187
12.02.2009, 12:49
Ich würde den "hook" nicht ins Entity packen sondern in eine extra Datei, diese dann unter:

lua/autorun/client/

speichern.

kycro
13.02.2009, 13:25
Also ich hab jetz eine extra file in /lua/autorun/client/

hook.Add("Ent.Draw", "DrawText", DrawText)

Und mein cl_init vom Entity

include("shared.lua")

function ENT:Initialize()
end

function ENT:Draw()
self.Entity:DrawModel()
end

function ENT:Think()
end

function DrawText()
local tr = LocalPlayer():GetEyeTrace()
local pos = tr.Entity:GetPos()
pos.z = pos.z + 8
pos = pos:ToScreen()
if tr.Entity:GetClass() == "weed_factory" then -- Weed Factory, das Entity
draw.SimpleText("Marijoana Factory", "TargetID", pos.x, pos.y, Color(255,255,255,255),1,1) -- Marijoana Factory, der Text
end

und es schreibt trotzdem keinen Text, wo hab ich meinen Fehler?

WeltEnSTurm
13.02.2009, 14:28
Vielleicht ENT:DrawText()? kA :P

don-banane
13.02.2009, 14:48
Ich würde auch die DrawText Funktion die extra Datei machen.

kycro
13.02.2009, 15:09
wenn ich die auch in ne extra datei packe dann könnte ich da ja auch mehrere

if blablabla then blablabla

reinhängen, um mehrere Entities mit einer Funktion zu beschriften.
Oder gäbe es da Probleme?

don-banane
13.02.2009, 15:33
Oder gäbe es da Probleme?

Nein, mach es ruhig so ;)

kycro
13.02.2009, 16:25
K, habe es fertig, so siehts aus:

function DrawText()
local tr = LocalPlayer():GetEyeTrace()
local pos = tr.Entity:GetPos()
pos.z = pos.z + 8
pos = pos:ToScreen()

if tr.Entity:GetClass() == "weed_factory" then
draw.SimpleText("Marijuana Factory", "TargetID", pos.x + 1, pos.y + 1, Color(0,0,0,200),1)
draw.SimpleText("Marijuana Factory", "TargetID", pos.x, pos.y, Color(255,255,255,200),1)

if tr.Entity:GetClass() == "water_factory" then
draw.SimpleText("Water Factory", "TargetID", pos.x + 1, pos.y + 1, Color(0,0,0,200),1)
draw.SimpleText("Water Factory", "TargetID", pos.x, pos.y, Color(255,255,255,200),1)
end
end
end

hook.Add("HUDPaint", "DrawText", DrawText)

Ps: Kommen noch ein paar Entities rein, das werden viele end`s werden^^

PPs: Mods ich glaube meine Frage ist beantwortet ihr könnt schließen:D