PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Gamemode: Server to Client % alle npcs entfernen



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.

isch
01.05.2010, 12:52
Da du anscheinend nicht mal weißt wie man ein Forum benutzt wird es mit dem Gamemode sicher auch nichts. Bitte editiere deinen ersten Post und schreib den Code der Lua Files zwischen die Lua-Tags.

Beispiel:


[LUA]Dein Lua Code[/LUA ]

Joker
01.05.2010, 13:32
Also die Frage wie bekomme ich den wert einer Variable von der init.lua zu der cl_init.lua ?
http://wiki.garrysmod.com/?title=Networking_Variables


Und dann weiss ich auch nicht wie ich die ganzen Zombies wieder entfernen kann wenn der spieler gestorben ist. Also wie geht das ?
http://wiki.garrysmod.com/?title=Ents.FindByClass

pirateKing
01.05.2010, 15:22
Viele vielen dank Joker!
Habs eingebaut und es funktioniert.
Super forum hier!