Möchte man einen Ammo Counter erstellen, definieren wir folgende Funktion:
function ShowAmmoCounter()
local handStatus = Lara:GetHandStatus()
local weaponType = Lara:GetWeaponType()
local ammoMessage = DisplayString("Ammo: " .. Lara:GetAmmoCount(), 100, 300, Color(0,255,128))
if (Lara:GetAmmoCount() == -1) then
unlimited = true
else
unlimited = false
end
if not unlimited then
if handStatus == 4 and weaponType ~= 8 then
ShowString(ammoMessage)
else
HideString(ammoMessage)
end
end
end
Alles anzeigen
und binden diese dann in der "OnControlPhase" ein, damit diese für jedes Frame im Spiel aufgerufen wird:
Erklärung:
Wir speichern erst einmal den "Lara Hand Status" mit der Funktion Lara:GetHandStatus() in "handStatus" ab.
Zitat1=Busy(climbing,etc), 2=WeaponDraw, 3=WeaponUndraw, 4=WeaponInHand.
Wir wollen den Counter ja auch nur aufrufen, wenn Lara eine Waffe in der Hand hält - (4)
Außerdem speichern wir den Waffentyp (mit Lara:GetWeaponType()) in "weaponType" ab.
Zitat0=None, 1=Pistols, 2=Revolver, 3=Uzi, 4=Shotgun, 5=HK, 6=Crossbow, 7=Flare, 8=Torch, 9=GrenadeLauncher, 10=Harpoon, 11=RocketLauncher.
Denn wenn Lara den "Torch" (8) hält, soll der Ammo Counter auch nicht angezeigt werden.
Dann erstellen wir unsere "Message" die wir anzeigen wollen, via "DisplayString".
Die Werte 100 , 300 sind für die Ausrichtung zuständig, der erste Wert für x der zweite für y .
In der Referenz heisst es dazu:
- x int x-coordinate of top-left of string (or the center if DisplayStringOption.CENTER is given)
- y int y-coordinate of top-left of string (or the center if DisplayStringOption.CENTER is given)
Anschließend prüfen wir, ob Laras ausgewählte Waffe unlimitierte Ammo besitzt, dann zeigen wir es nicht an.
Wir speichern das Ergebnis in einer Bool Variable "unlimited".
Nur wenn "unlimited" false ist (Also Laras Waffe nicht unendlich Munition hat), soll die Anzeige dargestellt werden.
Außerdem prüfen wir noch das Ergebnis der ersten Abfrage Lara:GetHandStatus() in "handStatus" - auf "4", denn 4 bedeutet: 4=WeaponInHand.
Zusätzlich wird noch abgefragt ob Lara:GetWeaponType() in "weaponType" NICHT auf 8 ist, denn 8 ist der Torch. Das "Nicht" erreichen wir mit "~=".
Wenn beide Abfragen durchgelaufen sind, zeigen wir den String mit "ShowString()" an, ansonsten nicht.
Heisst: Sofern ENTWEDER Laras Waffe unendlich Munition hat oder wenn Lara nicht gerade die Waffe hält, wird der String wieder ausgeblendet.
Die Abfrage wird für jeden Frame ausgeführt, das haben wir sichergestellt, in dem wir unsere Funktion in OnControlPhase aufrufen.
Viel Erfolg beim Ausprobieren