164 lines
		
	
	
	
		
			4 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			164 lines
		
	
	
	
		
			4 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
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
 |