RedM Natives

Particle FX (looped)

Notes from the author
		EXAMPLE. MAKE FIRE BREATH FROM PED HEAD:
------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------
		local new_ptfx_dictionary = "anm_fire_dancers"
		local new_ptfx_name = "ent_anim_fire_breathe_loop"

		local is_particle_effect_active = false
		local current_ptfx_dictionary = new_ptfx_dictionary
		local current_ptfx_name = new_ptfx_name

		local current_ptfx_handle_id = false

		local bone_index = 247   -- ["PH_Head"]  = {bone_index = 247, bone_id = 57278},

		local ptfx_offcet_x = 0.0
		local ptfx_offcet_y = 0.0
		local ptfx_offcet_z = 0.0
		local ptfx_rot_x = -90.0
		local ptfx_rot_y = 0.0
		local ptfx_rot_z = 0.0
		local ptfx_scale = 1.0
		local ptfx_axis_x = 0
		local ptfx_axis_y = 0
		local ptfx_axis_z = 0


		Citizen.CreateThread(function()
		   	while true do
		        Citizen.Wait(0)
		        if Citizen.InvokeNative(0x91AEF906BCA88877,0, 0x17BEC168) then   -- just pressed E
		        	if not is_particle_effect_active then
		        		current_ptfx_dictionary = new_ptfx_dictionary
						current_ptfx_name = new_ptfx_name
		        		if not Citizen.InvokeNative(0x65BB72F29138F5D6, GetHashKey(current_ptfx_dictionary)) then -- HasNamedPtfxAssetLoaded
		        			Citizen.InvokeNative(0xF2B2353BBC0D4E8F, GetHashKey(current_ptfx_dictionary))  -- RequestNamedPtfxAsset
		        			local counter = 0
		        			while not Citizen.InvokeNative(0x65BB72F29138F5D6, GetHashKey(current_ptfx_dictionary)) and counter <= 300 do  -- while not HasNamedPtfxAssetLoaded
		        				Citizen.Wait(0)
		        			end
		        		end
		    			if Citizen.InvokeNative(0x65BB72F29138F5D6, GetHashKey(current_ptfx_dictionary)) then  -- HasNamedPtfxAssetLoaded
		    				Citizen.InvokeNative(0xA10DB07FC234DD12, current_ptfx_dictionary) -- UseParticleFxAsset

		    				current_ptfx_handle_id = Citizen.InvokeNative(0x9C56621462FFE7A6,current_ptfx_name,PlayerPedId(),ptfx_offcet_x,ptfx_offcet_y,ptfx_offcet_z,ptfx_rot_x,ptfx_rot_y,ptfx_rot_z,bone_index,ptfx_scale,ptfx_axis_x,ptfx_axis_y,ptfx_axis_z) -- StartNetworkedParticleFxLoopedOnEntityBone
		    				--current_ptfx_handle_id =  Citizen.InvokeNative(0x8F90AB32E1944BDE,current_ptfx_name,PlayerPedId(),ptfx_offcet_x,ptfx_offcet_y,ptfx_offcet_z,ptfx_rot_x,ptfx_rot_y,ptfx_rot_z,ptfx_scale,ptfx_axis_x,ptfx_axis_y,ptfx_axis_z)    -- StartNetworkedParticleFxLoopedOnEntity
		    				is_particle_effect_active = true
						else
							print("cant load ptfx dictionary!")
		    			end
		        	else
		        		if current_ptfx_handle_id then
							if Citizen.InvokeNative(0x9DD5AFF561E88F2A, current_ptfx_handle_id) then   -- DoesParticleFxLoopedExist
								Citizen.InvokeNative(0x459598F579C98929, current_ptfx_handle_id, false)   -- RemoveParticleFx
							end
						end
						current_ptfx_handle_id = false
						is_particle_effect_active = false
		        	end
		        end
		    end
		end)

----------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------
 ptfx_assets_looped = {
 	[ptfx_dictionary] = {ptfx_name},
 }
1,176 rows
#dictionaryeffectNote
1001scr_net_beat_gator_huntersscr_net_beat_gator_blood_water
1002scr_net_beat_gator_huntersscr_net_beat_gator_splash
1003scr_odr1scr_od1_camp_smoke
1004scr_beat_treasure_hunterscr_event_glint
1005anm_mudent_anim_shaking_dust
1006anm_mudent_anim_shaking_gravel
1007scr_net_impromptu_racescr_net_imp_race_smoke
1008anm_fire_dancersent_anim_fire_breathe_loop
1009anm_fire_dancersent_anim_fire_dancer_belt
1010anm_fire_dancersent_anim_fire_dancer_trail
1011anm_gatorent_anim_gator_ambush
1012anm_gatorent_anim_gator_attack_ripple
1013anm_gatorent_anim_gator_blood
1014anm_gatorent_anim_gator_bubbles_underwater
1015anm_gatorent_anim_gator_grapple
1016anm_gatorent_anim_gator_ripples
1017anm_gatorent_anim_gator_splash
1018scr_fussar2scr_fus2_trap_rope_dust
1019scr_murderbeatscr_murder_bleeding
1020anm_shavingent_anim_ped_razor_fling
1021anm_shavingent_anim_ped_shave_brush
1022anm_shavingent_anim_ped_shave_face
1023scr_vignette_javier_5ent_amb_rainbow_lg
1024anm_impactsent_anim_steam_linger_smoke
1025anm_impactsent_anim_wheel_sand_mud
1026scr_odd_fellowsscr_river5_magician_smoke_loop
1027scr_native_son1scr_ntvs1_water_rush
1028scr_mob4scr_blood_pool_water_trail
1029scr_mob4scr_mob4_gator_ripple
1030scr_mob4scr_mob4_leg_blood
1031scr_braithwaites1ent_amb_cig_smoke_linger
1032scr_braithwaites1scr_brt1_bar_mg_liq_pour
1033scr_braithwaites1scr_brt1_bar_mg_liq_pour_splash
1034anm_indent_anim_ind_firework
1035anm_indent_anim_ind_firework_lights
1036anm_indent_anim_ind_firework_lights_bright
1037scr_impromptu_racescr_imp_race_smoke
1038anm_fireent_anim_campfire_dynamic
1039anm_fireent_anim_candle_flame
1040anm_fireent_anim_candle_smoke
1041anm_fireent_anim_fire_generic_win
1042anm_fireent_anim_fire_logs
1043anm_fireent_anim_fire_spread_generic
1044anm_fireent_anim_fire_tend_embers
1045anm_fireent_anim_generic_fire_smoke_plume
1046anm_fireent_anim_gua1_boat_fire
1047anm_fireent_anim_lantern_fire
1048anm_fireent_anim_lantern_fire_trn4
1049anm_fireent_anim_ped_fire
1050anm_fireent_anim_rslvc_burn_book
1051anm_fireent_anim_rslvc_burn_book_haze
1052anm_fireent_anim_sklr_lighter_flame
1053anm_fireent_anim_stove_fire
1054anm_fireent_anim_stove_heat_haze
1055scr_net_fire_smokeent_amb_generic_fire_field
1056scr_net_fire_smokeent_amb_generic_fire_field_nosmoke
1057scr_net_fire_smokeent_amb_generic_fire_field_smoke
1058scr_net_fire_smokeent_amb_generic_fire_smoke_plume
1059scr_net_fire_smokeent_amb_moo_crop_fire
1060scr_net_fire_smokeenv_embers
1061scr_net_fire_smokeenv_smoke
1062scr_net_fire_smokescr_brt2_firesmoke_field
1063scr_net_fire_smokescr_mp_collect_campfire_smoke
1064scr_net_fire_smokescr_mp_collect_pickup_highlight
1065scr_net_fire_smokescr_mp_item_pickup_highlight
1066scr_adv_hpscr_adv_hp_helmet_fire
1067anm_water_panningent_anim_water_panning
1068anm_water_panningent_anim_water_panning_bucket_drips
1069anm_water_panningent_anim_water_panning_bucket_pour
1070anm_water_panningent_anim_water_panning_nugget_drips
1071scr_short_updatescr_campfire_smoke_distance
1072scr_finale2scr_fin2_cleet_drag_dust
1073eagle_eyeeagle_eye_bait
1074eagle_eyeeagle_eye_clue
1075eagle_eyeeagle_eye_clue_animal_transform
1076eagle_eyeeagle_eye_entity
1077eagle_eyeeagle_eye_lootable_plant
1078eagle_eyeeagle_eye_trail
1079eagle_eyeeagle_eye_wind
1080eagle_eyeeagle_eye_wind_balloon
1081anm_nbdent_anim_nbd_guama_bow
1082anm_nbdent_anim_nbd_guama_bow_left
1083anm_nbdent_anim_nbd_guama_prop
1084anm_nbdent_anim_nbd_guama_steam
1085anm_nbdent_anim_nbd_guama_wash_left
1086anm_nbdent_anim_nbd_guama_wash_right
1087anm_human_sick_peeent_anim_human_puke
1088anm_human_sick_peeent_anim_peeing
1089scr_braithwaites2ent_amb_falling_embers
1090scr_braithwaites2ent_amb_generic_fire_field
1091scr_braithwaites2ent_amb_generic_fire_field_glow
1092scr_braithwaites2ent_amb_generic_fire_field_nosmoke
1093scr_braithwaites2ent_amb_generic_fire_field_smoke
1094scr_braithwaites2ent_amb_generic_fire_up
1095scr_braithwaites2env_embers
1096scr_braithwaites2scr_brt2_fire_roof
1097scr_braithwaites2scr_brt2_fire_win
1098scr_braithwaites2scr_brt2_firesmoke
1099scr_braithwaites2scr_brt2_firesmoke_barn
1100scr_braithwaites2scr_brt2_firesmoke_field