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
 | 
