70 lines
2.5 KiB
Lua
70 lines
2.5 KiB
Lua
RegisterNetEvent('armor:addArmor')
|
|
AddEventHandler('armor:addArmor', function(amount)
|
|
local playerPed = PlayerPedId()
|
|
|
|
-- Überprüfung: Sitzt der Spieler in einem Fahrzeug? (Optional, aber empfohlen)
|
|
if IsPedInAnyVehicle(playerPed, false) then
|
|
exports.hex_4_hud:Notify("Fehler", "Du kannst keine Weste im Auto anziehen!", 5000, "error")
|
|
-- Falls du dem Spieler das Item zurückgeben willst, müsste man hier ein Event an den Server senden.
|
|
return
|
|
end
|
|
|
|
-- 1. Animation starten
|
|
-- Wir laden das Animations-Wörterbuch (Dict)
|
|
local animDict = "clothingtie" -- Ein passendes Dict für "Weste richten"
|
|
local animName = "try_tie_negative_a" -- Die spezifische Animation
|
|
|
|
RequestAnimDict(animDict)
|
|
-- Warten, bis das Wörterbuch geladen ist
|
|
while not HasAnimDictLoaded(animDict) do
|
|
Citizen.Wait(100)
|
|
end
|
|
|
|
-- Die Animation abspielen
|
|
-- Parameter: Ped, Dict, Name, Einblendzeit, Ausblendzeit, Dauer (-1 = unendlich), Flag, Startphase, IKKram
|
|
TaskPlayAnim(playerPed, animDict, animName, 8.0, 1.0, -1, 49, 0, false, false, false)
|
|
|
|
-- hex_4_hud Benachrichtigung: Startet das Anlegen
|
|
exports.hex_4_hud:Notify("Info", "Du ziehst die Weste an...", 3000, "info")
|
|
|
|
-- 2. Wartezeit (während die Animation läuft)
|
|
-- Hier warten wir 3 Sekunden (3000 Millisekunden)
|
|
Citizen.Wait(3000)
|
|
|
|
-- 3. Rüstung berechnen und setzen
|
|
local currentArmor = GetPedArmour(playerPed)
|
|
local newArmor = currentArmor + amount
|
|
|
|
-- Verhindert, dass man über 100 Rüstung kommt
|
|
if newArmor > 100 then
|
|
newArmor = 100
|
|
end
|
|
|
|
-- Rüstung setzen
|
|
SetPedArmour(playerPed, newArmor)
|
|
|
|
-- 4. Animation stoppen
|
|
ClearPedTasks(playerPed)
|
|
-- Optional: Das geladene Dict wieder entladen, um Speicher zu sparen
|
|
RemoveAnimDict(animDict)
|
|
|
|
-- hex_4_hud Benachrichtigung: Erfolg
|
|
exports.hex_4_hud:Notify("Ausrüstung", "Schutzweste erfolgreich angelegt", 5000, "success")
|
|
end)
|
|
|
|
|
|
Citizen.CreateThread(function()
|
|
while true do
|
|
Citizen.Wait(0)
|
|
|
|
local playerPed = PlayerPedId()
|
|
|
|
-- Wenn bewaffnet (Typ 4 = Fernkampfwaffen)
|
|
if IsPedArmed(playerPed, 4) then
|
|
-- Deaktiviert die Nahkampftasten
|
|
DisableControlAction(0, 140, true) -- R / Schlag leicht
|
|
DisableControlAction(0, 141, true) -- Q / Schlag schwer
|
|
DisableControlAction(0, 142, true) -- Linksklick / Schlag alternativ
|
|
end
|
|
end
|
|
end) |