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
301coreent_amb_campfire_sma
302coreent_amb_campfire_sma_base
303coreent_amb_campfire_sma_nosmoke
304coreent_amb_campfire_sma_under
305coreent_amb_campfire_smoke_distance
306coreent_amb_campfire_smoke_distance_dark
307coreent_amb_campfire_smoke_distance_gang
308coreent_amb_campfire_smoke_distance_trail
309coreent_amb_campfire_smolder
310coreent_amb_candle_flame
311coreent_amb_candle_flame_distance
312coreent_amb_candle_flame_lit
313coreent_amb_candle_flame_smoke
314coreent_amb_cave_poison
315coreent_amb_cave_poison_splash
316coreent_amb_cig_smoke
317coreent_amb_cig_smoke_linger
318coreent_amb_cig_smoke_linger_casino
319coreent_amb_cig_smoke_linger_lite
320coreent_amb_cliff_snowfall
321coreent_amb_cook_bubble
322coreent_amb_corpse_bleeding
323coreent_amb_door_snow_drifts
324coreent_amb_drain_splash
325coreent_amb_dust_motes
326coreent_amb_dust_motes_window
327coreent_amb_elec_crackle
328coreent_amb_exhaust_thick
329coreent_amb_exhaust_thin
330coreent_amb_falling_embers
331coreent_amb_falling_leaves_birch_l
332coreent_amb_falling_leaves_birch_s
333coreent_amb_falling_leaves_ficus_l
334coreent_amb_falling_leaves_ficus_s
335coreent_amb_falling_leaves_flower
336coreent_amb_falling_leaves_maple_l
337coreent_amb_falling_leaves_maple_s
338coreent_amb_falling_leaves_moss
339coreent_amb_falling_leaves_oak_l
340coreent_amb_falling_leaves_oak_s
341coreent_amb_falling_leaves_palm
342coreent_amb_falling_leaves_pine
343coreent_amb_falling_tree_leaves
344coreent_amb_fire_lit
345coreent_amb_fire_moon_still
346coreent_amb_fire_oil_field
347coreent_amb_fog_ring
348coreent_amb_fountain_double
349coreent_amb_fountain_mesh
350coreent_amb_fountain_mesh_bottom
351coreent_amb_fountain_nb_double
352coreent_amb_fountain_new_gar
353coreent_amb_fountain_spout
354coreent_amb_furnace_fire_lrg
355coreent_amb_furnace_heat_haze
356coreent_amb_generic_fire_area
357coreent_amb_generic_fire_area_spread
358coreent_amb_generic_fire_crawling
359coreent_amb_generic_fire_doorway
360coreent_amb_generic_fire_field
361coreent_amb_generic_fire_field_full
362coreent_amb_generic_fire_field_full_sma
363coreent_amb_generic_fire_field_nosmoke
364coreent_amb_generic_fire_field_smoke
365coreent_amb_generic_fire_fog
366coreent_amb_generic_fire_int_fog
367coreent_amb_generic_fire_line
368coreent_amb_generic_fire_mesh
369coreent_amb_generic_fire_mesh_no_smoke
370coreent_amb_generic_fire_mesh_v1
371coreent_amb_generic_fire_plume
372coreent_amb_generic_fire_rm_smoke
373coreent_amb_generic_fire_roof
374coreent_amb_generic_fire_roof_angle
375coreent_amb_generic_fire_smoke_plume
376coreent_amb_generic_fire_up
377coreent_amb_generic_fire_win
378coreent_amb_generic_fire_win_nosmoke
379coreent_amb_generic_roof_smoke_fog
380coreent_amb_generic_smolder_area
381coreent_amb_generic_smolder_area_nopre
382coreent_amb_generic_smolder_lrg
383coreent_amb_ghost_train_steam
384coreent_amb_gutter_drips
385coreent_amb_gutter_splash
386coreent_amb_hay_pile_debris
387coreent_amb_haybale_debris
388coreent_amb_haystack_debris
389coreent_amb_hog_blood
390coreent_amb_icicle_drip
391coreent_amb_insect_bee_swarm
392coreent_amb_insect_bees
393coreent_amb_insect_butterfly_swarm2
394coreent_amb_insect_butterfly_swarm3
395coreent_amb_insect_butterfly_swarm4
396coreent_amb_insect_butterfly_swarm5
397coreent_amb_insect_butterflys_swarm
398coreent_amb_insect_cockroaches
399coreent_amb_insect_cockroaches_int
400coreent_amb_insect_dragonfly_swarm