1
0
Fork 0
forked from Simnation/Main
Main/resources/[phone]/roadphone/client/animation.lua

165 lines
3.9 KiB
Lua
Raw Normal View History

2025-08-09 11:32:44 +02:00
local phoneProp = 0
local propCreated = false
local currentStatus = 'out'
local lastDict = nil
local lastAnim = nil
local lastProp = nil
local ANIMS = {
['cellphone@'] = {
['out'] = {
['text'] = 'cellphone_call_to_text',
['call'] = 'cellphone_call_listen_base'
},
['text'] = {
['out'] = 'cellphone_text_out',
['text'] = 'cellphone_text_in',
['call'] = 'cellphone_text_to_call'
},
['call'] = {
['out'] = 'cellphone_call_out',
['text'] = 'cellphone_call_to_text',
['call'] = 'cellphone_text_to_call'
}
},
['anim@cellphone@in_car@ps'] = {
['out'] = {
['text'] = 'cellphone_text_in',
['call'] = 'cellphone_call_in'
},
['text'] = {
['out'] = 'cellphone_text_out',
['text'] = 'cellphone_text_in',
['call'] = 'cellphone_text_to_call'
},
['call'] = {
['out'] = 'cellphone_horizontal_exit',
['text'] = 'cellphone_call_to_text',
['call'] = 'cellphone_text_to_call'
}
}
}
function newPhoneProp(prop)
local phoneModel = selectPhoneProp(prop)
deletePhone()
if not propCreated then
RequestModel(phoneModel)
while not HasModelLoaded(phoneModel) do
Wait(1)
end
local playerPed = PlayerPedId()
phoneProp = CreateObject(phoneModel, 1.0, 1.0, 1.0, 1, 1, 0)
local bone = GetPedBoneIndex(playerPed, 28422)
AttachEntityToEntity(phoneProp, playerPed, bone, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 1, 0, 0, 2, 1)
propCreated = true
end
end
function deletePhone()
if phoneProp ~= 0 then
DeleteEntity(phoneProp)
phoneProp = 0
propCreated = false
end
end
--[[
out || text || Call ||
--]]
function PhonePlayAnim(status, freeze, force, prop)
if currentStatus == status and force ~= true then
return
end
local myPedId = PlayerPedId()
GiveWeaponToPed(myPedId, 0xA2719263, 0, 0, 1)
local freeze = freeze or false
local dict = "cellphone@"
if IsPedInAnyVehicle(myPedId, false) then
dict = "anim@cellphone@in_car@ps"
end
loadAnimDict(dict)
local anim = ANIMS[dict][currentStatus][status]
if currentStatus ~= 'out' then
StopAnimTask(myPedId, lastDict, lastAnim, 1.0)
end
local flag = 50
if freeze == true then
flag = 14
end
TaskPlayAnim(myPedId, dict, anim, 3.0, -1, -1, flag, 0, false, false, false)
if status ~= 'out' and currentStatus == 'out' then
Wait(380)
newPhoneProp(prop)
end
lastDict = dict
lastAnim = anim
currentStatus = status
if status == 'out' then
Wait(180)
deletePhone()
StopAnimTask(myPedId, lastDict, lastAnim, 1.0)
end
end
function PhonePlayOut()
PhonePlayAnim('out')
end
function PhonePlayText(prop)
PhonePlayAnim('text', false, false, prop)
end
function PhonePlayCall(freeze)
PhonePlayAnim('call', freeze, false, "phone")
end
function PhonePlayIn(prop)
if currentStatus == 'out' then
PhonePlayText(prop)
end
end
function loadAnimDict(dict)
RequestAnimDict(dict)
while not HasAnimDictLoaded(dict) do
Wait(1)
end
end
function getAnimationStatus()
return currentStatus
end
function selectPhoneProp(propname)
local phoneModel = "prop_phone_ing_03"
if Config.UsePhoneProps then
local phoneModels = {
["phone"] = "phonesilver",
["purple_phone"] = "phonepurple",
["green_phone"] = "phonegreen",
["blue_phone"] = "phonelightblue",
["red_phone"] = "phonered",
['black_phone'] = "phoneblack"
}
phoneModel = phoneModels[propname] or phoneModels[lastProp] or phoneModel
end
return phoneModel
end