pirateKing
01.05.2010, 12:42
Hallo
Ich mache gerade meinen ersten Gamemod, und der soll so aussehen:
Jedesmal wen du einen zombie tötest spawnen 2 neue, esseiden es gibt schon mehr als 60.
Die Zahl der kills wird mitgezählt und auf dem Hud ausgegeben.
Wenn der spieler stirbt wird die Killszahl wieder auf 0 gesetzt und die zombies getötet.
Es funktoniert ansich alles auser die sache mit dem ausgeben der Killzahl auf dem hud. Wenn ich es in der console ausgebe funktioniert es einwandfrei.
Also die Frage wie bekomme ich den wert einer Variable von der init.lua zu der cl_init.lua ?
Und dann weiss ich auch nicht wie ich die ganzen Zombies wieder entfernen kann wenn der spieler gestorben ist. Also wie geht das ?
Hier noch der Quelltext:
cl_init.lua:
[LUA]function hidehud(name)
for k, v in pairs{"CHudHealth", "CHudAmmo", "CHudSecondaryAmmo"} do
if name == v then return false end
end
end
hook.Add("HUDShouldDraw", "hidehud", hidehud)
function GM:HUDPaint()
self.BaseClass:HUDPaint()
surface.CreateFont("coolvetica",64,400,false,false,"douchebag")
surface.SetTextColor(255,255,255,255)
surface.SetTextPos(34,(ScrH()/2+ScrH()/4))
surface.SetFont("douchebag")
surface.DrawText(LocalPlayer():Health())
surface.CreateFont("coolvetica",64,400,false,false,"killanzeige")
surface.SetTextColor(255,255,255,255)
surface.SetTextPos(34,300)
surface.SetFont("killanzeige")
surface.DrawText("Kills: " .. tostring(kills))
end
[/LUA ]
init.lua:
[LUA ]
AddCSLuaFile( "cl_init.lua" )
AddCSLuaFile( "shared.lua" )
include( 'shared.lua' )
kills = 0
zombies = 0
// Serverside only stuff goes here
-----------------------------------------------------------
function GM:PlayerLoadout( pl )
pl:StripWeapons()
pl:Give( "Weapon_SMG1" )
end
-----------------------------------------------------------
function GM:PlayerInitialSpawn( pl )
-- Um bug zu beheben
self.BaseClass:PlayerInitialSpawn( pl )
if pl:IsAdmin() then
pl:PrintMessage( HUD_PRINTTALK, "Hallo Admin!" )
end
end
-----------------------------------------------------------
function GM:PlayerSpawn( pl )
-- wegen Bug
self.BaseClass:PlayerSpawn( pl )
kills = 0
zombies = 0
local npc1 = ents.Create("npc_zombie")
npc1:SetPos(Vector( math.random( -700, -500 ),math.random( 520, 740 ),-76))
npc1:Spawn()
npc1:Activate()
zombies = zombies + 1
-----------pl:SetGravity( 1 ) -- zwischen 1 und 0
-----------pl:SetMaxHealth( 120, true )
pl:SetWalkSpeed( 100 )
pl:SetRunSpeed( 100 )
end
function GM:OnNPCKilled(victim,killer,weapon)
zombies = zombies - 1
kills = kills + 1
print("Kills: "..tostring(kills))
local weaponDrop = ents.Create("Weapon_SMG1")
weaponDrop:SetPos(victim:GetPos()+Vector(0,0,120))
weaponDrop:Spawn()
weaponDrop:Activate()
if zombies < 60
then
local npc1 = ents.Create("npc_zombie")
npc1:SetPos(Vector( math.random( -700, -500 ),math.random( 520, 740 ),-76))
npc1:Spawn()
npc1:Activate()
local npc2 = ents.Create("npc_zombie")
npc2:SetPos(Vector( math.random( -1560, -1340 ),math.random( 840, 1060 ),-76))
npc2:Spawn()
npc2:Activate()
zombies = zombies + 2
end
end[/LUA ]
Ich habe google und eure suchmaschiene im Forum bemüht, doch nichts gefunden.
Vielen dank im Vorraus.
Ich mache gerade meinen ersten Gamemod, und der soll so aussehen:
Jedesmal wen du einen zombie tötest spawnen 2 neue, esseiden es gibt schon mehr als 60.
Die Zahl der kills wird mitgezählt und auf dem Hud ausgegeben.
Wenn der spieler stirbt wird die Killszahl wieder auf 0 gesetzt und die zombies getötet.
Es funktoniert ansich alles auser die sache mit dem ausgeben der Killzahl auf dem hud. Wenn ich es in der console ausgebe funktioniert es einwandfrei.
Also die Frage wie bekomme ich den wert einer Variable von der init.lua zu der cl_init.lua ?
Und dann weiss ich auch nicht wie ich die ganzen Zombies wieder entfernen kann wenn der spieler gestorben ist. Also wie geht das ?
Hier noch der Quelltext:
cl_init.lua:
[LUA]function hidehud(name)
for k, v in pairs{"CHudHealth", "CHudAmmo", "CHudSecondaryAmmo"} do
if name == v then return false end
end
end
hook.Add("HUDShouldDraw", "hidehud", hidehud)
function GM:HUDPaint()
self.BaseClass:HUDPaint()
surface.CreateFont("coolvetica",64,400,false,false,"douchebag")
surface.SetTextColor(255,255,255,255)
surface.SetTextPos(34,(ScrH()/2+ScrH()/4))
surface.SetFont("douchebag")
surface.DrawText(LocalPlayer():Health())
surface.CreateFont("coolvetica",64,400,false,false,"killanzeige")
surface.SetTextColor(255,255,255,255)
surface.SetTextPos(34,300)
surface.SetFont("killanzeige")
surface.DrawText("Kills: " .. tostring(kills))
end
[/LUA ]
init.lua:
[LUA ]
AddCSLuaFile( "cl_init.lua" )
AddCSLuaFile( "shared.lua" )
include( 'shared.lua' )
kills = 0
zombies = 0
// Serverside only stuff goes here
-----------------------------------------------------------
function GM:PlayerLoadout( pl )
pl:StripWeapons()
pl:Give( "Weapon_SMG1" )
end
-----------------------------------------------------------
function GM:PlayerInitialSpawn( pl )
-- Um bug zu beheben
self.BaseClass:PlayerInitialSpawn( pl )
if pl:IsAdmin() then
pl:PrintMessage( HUD_PRINTTALK, "Hallo Admin!" )
end
end
-----------------------------------------------------------
function GM:PlayerSpawn( pl )
-- wegen Bug
self.BaseClass:PlayerSpawn( pl )
kills = 0
zombies = 0
local npc1 = ents.Create("npc_zombie")
npc1:SetPos(Vector( math.random( -700, -500 ),math.random( 520, 740 ),-76))
npc1:Spawn()
npc1:Activate()
zombies = zombies + 1
-----------pl:SetGravity( 1 ) -- zwischen 1 und 0
-----------pl:SetMaxHealth( 120, true )
pl:SetWalkSpeed( 100 )
pl:SetRunSpeed( 100 )
end
function GM:OnNPCKilled(victim,killer,weapon)
zombies = zombies - 1
kills = kills + 1
print("Kills: "..tostring(kills))
local weaponDrop = ents.Create("Weapon_SMG1")
weaponDrop:SetPos(victim:GetPos()+Vector(0,0,120))
weaponDrop:Spawn()
weaponDrop:Activate()
if zombies < 60
then
local npc1 = ents.Create("npc_zombie")
npc1:SetPos(Vector( math.random( -700, -500 ),math.random( 520, 740 ),-76))
npc1:Spawn()
npc1:Activate()
local npc2 = ents.Create("npc_zombie")
npc2:SetPos(Vector( math.random( -1560, -1340 ),math.random( 840, 1060 ),-76))
npc2:Spawn()
npc2:Activate()
zombies = zombies + 2
end
end[/LUA ]
Ich habe google und eure suchmaschiene im Forum bemüht, doch nichts gefunden.
Vielen dank im Vorraus.