1. TRLevel
  2. Forum
    1. Unresolved Threads
    2. Articles
  3. Members
    1. Recent Activities
    2. Users Online
    3. Team
    4. Trophy
    5. Search Members
  4. Tutorials
  5. Levels
  6. Downloads
  7. Adventskalender
    1. Kalender 2025
    2. Kalender 2024
    3. Kalender 2023
    4. Kalender 2022
    5. Kalender 2021
    6. Kalender 2020
    7. Kalender 2019
    8. Kalender 2018
    9. Kalender 2017
  8. Osterkalender
    1. Osterkalender 2025
    2. Osterkalender 2024
    3. Osterkalender 2023
    4. Osterkalender 2022
    5. Osterkalender 2021
    6. Osterkalender 2020
    7. Osterkalender 2019
    8. Osterkalender 2018
    9. Osterkalender 2017
    10. Osterkalender 2016
  9. Mediathek
    1. Albums
    2. Video channels
  • Login
  • Register
  • Search
Tutorials
  • Everywhere
  • Articles
  • Pages
  • Forum
  • Tutorials
  • Files
  • Images
  • Videos
  • More Options
  1. TRLevel.de
  2. Lexicon

Lua Scripting Ammo Counter

  • l.m.
  • November 24, 2022 at 1:52 PM
  • September 16, 2024 at 4:00 PM
  • 2,026 times viewed

WICHTIG

Diese Tutorials sind beim schreiben immer mit der aktuellsten TEN/TE Version erstellt worden.
Leider kann sich von Version zu Version des Tomb Editor oder der Tomb Engine immer etwas am Code ändern. Daher können manche Teile der Tutorials veraltet sein, bzw. nicht mehr funtkionieren.
Wenn euch hier etwas auffällt, teilt uns dies BITTE mit. Damit man sich das Tutorial ansehen und überarbeiten kann. Dazu bitte einfach ein Thema im "TRLevel Forum" eröffnen.

  • Möchte man einen Ammo Counter erstellen, definieren wir folgende Funktion:

    Code
    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
    Display More

    und binden diese dann in der globalen LevelFuncs "OnLoop" ein, damit diese für jedes Frame im Spiel aufgerufen wird:

    (vormals "OnControlPhase")

    Code
    LevelFuncs.OnLoop = function()
        ShowAmmoCounter()
    end

    Erklärung:

    Wir speichern erst einmal den "Lara Hand Status" mit der Funktion Lara:GetHandStatus() in "handStatus" ab.

    Quote

    1=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.

    Quote

    0=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 :)

    • Ammo
    • Lua Scripting

Share

  • Previous entry Alle Moveables/Statics eines Slots auswählen - LUA
  • Next entry Ammo Counter 2.0
  • Changelog
  • PDF

Categories

  1. Archiv 8
    1. Tomb Editor_Alt 2
    2. TRNG_Alt 4
  2. Bauen 239
    1. Tomb Editor (TE) 107
      1. Tipps und Tricks 19
      2. SoundTool 5
      3. TombIDE 6
      4. WadTool 11
      5. NodeEditor 2
    2. Tomb Engine (TEN) 72
      1. Tipps und Tricks 17
      2. Lua Scripting 35
    3. TRNG Engine 194
      1. Scripting 4
      2. NG Center 20
      3. Allgemein 7
      4. Neue TRNG Script Befehle 66
      5. Neue TRNG Trigger 66
      6. Neue TRNG OCB Werte 9
      7. TRNG Plugins 6
      8. Tipps und Tricks 5
      9. TRNG Engine Praktische Beispiele 8
    4. NGLE (Next Generation Level Editor) 12
    5. Tomb Raider Level Editor 86
      1. Licht 4
      2. Geometrie 8
      3. Levelbau 110
      4. Tipps und Tricks 12
      5. Script 3
      6. Sounds 2
      7. Texturen 2
      8. OCB 4
      9. Sonstiges 3
      10. Dxtre3D 1
  3. Tools 21
    1. Metasequoia 5
      1. Metasequoia 3.x 2
      2. Metasequoia 4.x 3
    2. StrPix und WADMerger 4
      1. StrPix 2
      2. WADMerger 2
    3. FLEP 9
    4. Tools 2
    5. TREP 7
      1. Flipeffect Editor 1
      2. Custom Patches 2
    6. TRViewer 1
    7. Blender 0
  4. Allgemeine Tipps und Tricks 3
  5. Level Editor Lexikon 107
    1. Tomb Editor 1
    2. Tools 3
      1. TREP/FLEP 3
      2. WADMerger 0
      3. Strpix 0
    3. NGLE/LE 97
    4. Allgemein 6
      1. WAD Slots 5
    5. NGEngine 0
  1. Privacy Policy
  2. Contact
  3. Legal Notice
Lexicon 7.1.17, developed by www.viecode.com
Powered by WoltLab Suite™ 6.1.18
TRLevel.de in the WSC-Connect App on Google Play
TRLevel.de in the WSC-Connect App on the App Store
Download