EnemyHP Counter für alle anvisierten Gegner
Hier mal 2 Varianten, um einen Enemy HP Counter für alle anvisierten Gegner zu erstellen. Lara visiert mit ihren Waffen einen Gegner an, dann erscheint eine Textanzeige mit dem Lua Namen des Gegners und der momentanen HP. Zieht sie die Waffen ein, verschwindet die Anzeige, visiert sie einen anderen Gegner an, erscheint dessen HP Anzeige.
Anmerkung:
Den Lua Namen des Gegners kann man ändern, indem man mit der rechten Maustaste auf den Gegner klickt und "Rename Object" auswählt.
Vielen Dank an dieser Stelle an DaviDM vom "TombEngine Discord Server". Er hat diese Funktionen für uns erstellt und erlaubt, sie hier zu posten.
1 Variante zum Setzen in .OnControlPhase
local enemyHP = DisplayString('', 0, 0, Color(255, 255, 0), false)
enemyHP:SetPosition(PercentToScreen(1.8, 0.1))
LevelFuncs.OnControlPhase = function()
if Lara:GetTarget() ~= nil then
enemyHP:SetKey(Lara:GetTarget():GetName() .. ' HP: ' .. Lara:GetTarget():GetHP())
ShowString(enemyHP)
else
HideString(enemyHP)
end
end
Display More
Hier setzen wir die ersten beiden Positionen vor die .ON Funktionen und den Codeblock selber in die "LevelFuncs.OnControlPhase" Funktion.
Der Code sagt im kurzen folgendes aus.
1. Erstelle in der Variable "enemyHP" einen Text String in der Farbe gelb, und mit folgender Textposition (oben links etwas nach unten versetzt), der noch nicht angezeigt wird.
2. Wenn Lara einen Gegner anvisiert, dann ist "Lara:GetTarget()" nicht 0 und dann wird in die Textvariable "enemyHP" der "Lua Name" des Gegners und sein derzeitiger HP Wert gesetzt und der Text angezeigt ansonsten verschwindet der Text wieder.
2 Variante etwas mehr aufgesplittet zum besseren Verständnis
local enemyStringHP = DisplayString('', 0, 0, Color(255, 255, 0), false)
enemyStringHP:SetPosition(PercentToScreen(1.8, 0.1))
LevelFuncs.OnControlPhase = function()
if Lara:GetTarget() ~= nil then
local enemy = Lara:GetTarget()
local enemyName = enemy:GetName()
local enemyHP = enemy:GetHP()
enemyStringHP:SetKey(enemyName .. ' HP: ' .. enemyHP)
ShowString(enemyStringHP)
else
HideString(enemyStringHP)
end
end
Display More
Diese Variante ist etwas mehr aufgesplittet zum besseren Verständnis.
Hier setzen wir ebenfalls die ersten beiden Positionen vor die .ON Funktionen und den Codeblock selber in die "LevelFuncs.OnControlPhase" Funktion.
Hier wird der anvisierte Gegner in die Variable "enemy" gesetzt.
Dann wird in der Variabel "enemyName" der Name des anvisierten Gegners gesetzt. In die Variabel "enemyHP" wird der aktuelle HP Wert des anvisierten Gegners gesetzt.
In "enemyStringHP" wird dann der Lua Name und die aktuelle HP angezeigt.
Ansonsten gilt wie oben, wenn Lara einen Gegner anvisiert und somit "Lara:GetTarget() nicht 0 ist, dann zeige Text an, ansonsten wird der Text nicht angezeigt.
3 Variante ohne Setzen in .OnControlPhase
local enemyStringHP = DisplayString('', 0, 0, Color(255, 255, 0), false)
enemyStringHP:SetPosition(PercentToScreen(1.8, 0.1))
LevelFuncs.ShowHpEnemy = function()
if Lara:GetTarget() ~= nil then
local enemy = Lara:GetTarget()
local enemyName = enemy:GetName()
local enemyHP = enemy:GetHP()
enemyStringHP:SetKey(enemyName .. ' HP: ' .. enemyHP)
ShowString(enemyStringHP)
else
HideString(enemyStringHP)
end
end
AddCallback(TEN.Logic.CallbackPoint.POSTCONTROLPHASE, LevelFuncs.ShowHpEnemy)
Display More
Diese Variante kann man ganz normal unterhalb der .ON Funktionen in seine Lua Level Datei schreiben. Die Funktion "AddCallback" ist dafür da, dass man Teile nicht mehr nach ".OnControlPhase" auslagern muss. Auch die beiden ersten Code Zeilen mit "local enemyStringHP" und "enemyStringHP" muss nicht mehr nach oben gesetzt werden.
Im Spiel sehen alle Varianten gleich aus: