# Particle FX (looped)

Reference list from femga/rdr3_discoveries — category **graphics**. Source: https://github.com/femga/rdr3_discoveries/blob/477aaaccadb7f0c042286611d9939009636cff12/graphics/ptfx/ptfx_assets_looped.lua

```
		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},
 }
```

1176 rows in 1 table(s): `ptfx_assets_looped` (dictionary, effect).

Search rows: https://natives.borderlinerp.com/api/v1/reference/search?q=…&doc=graphics%2Fptfx%2Fptfx_assets_looped

| dictionary | effect | note |
| --- | --- | --- |
| anm_climbing | ent_anim_climbing_debris |  |
| anm_climbing | ent_anim_debris_falling |  |
| scr_net_player_signal | scr_net_player_signal |  |
| des_alchemist | ent_amb_alchemist_post_cloud_smk |  |
| anm_crafting | ent_anim_bottle_pour_medicine |  |
| anm_crafting | ent_anim_cauldron_drugs |  |
| anm_crafting | ent_anim_craft_pestle_grind |  |
| anm_odr | ent_anim_odr_knife_meat |  |
| scr_mob2 | scr_mob2_fog_cem |  |
| scr_beat_train_tracks | scr_beat_train_sparks |  |
| scr_native1 | scr_native1_campfire_smoke |  |
| scr_campfires | ent_amb_campfire_smoke_distance |  |
| scr_campfires | ent_amb_campfire_smoke_distance_gang |  |
| cut_rdopn | cs_rdopn_faucet_pour |  |
| anm_water | ent_amb_water_drips_edge |  |
| anm_water | ent_anim_bottle_pour_water |  |
| anm_water | ent_anim_bottle_pour_whisky |  |
| anm_water | ent_anim_bubble_stream |  |
| anm_water | ent_anim_bubble_stream_ped |  |
| anm_water | ent_anim_mob5_face_drips |  |
| anm_water | ent_anim_moonshine_pour_shot |  |
| anm_water | ent_anim_ntv3_steam_leak |  |
| anm_water | ent_anim_oil_drips |  |
| anm_water | ent_anim_ped_finger_drips |  |
| anm_water | ent_anim_ped_ind3_water_drips |  |
| anm_water | ent_anim_ped_water_drips |  |
| anm_water | ent_anim_ped_water_wade_ripples |  |
| anm_water | ent_anim_sht_steam |  |
| anm_water | ent_anim_sht_steam_thick |  |
| anm_water | ent_anim_steam_horseboat_ripple |  |
| anm_water | ent_anim_steam_horseboat_splash |  |
| anm_water | ent_anim_water_bucket_drips |  |
| anm_water | ent_anim_water_bucket_fill |  |
| anm_water | ent_anim_water_gold_pan_loop |  |
| anm_water | ent_anim_water_kettle_splash_looped |  |
| anm_water | ent_anim_water_pan_submerge |  |
| anm_water | ent_anim_water_pump_pour |  |
| anm_water | ent_anim_water_shakeoff |  |
| anm_water | ent_anim_water_torture |  |
| anm_water | ent_anim_water_washing |  |
| anm_water | ent_anim_whiskey_pour_shot |  |
| scr_poisoned_well | scr_poisoned_well_fog_anim |  |
| anm_fin | ent_anim_fin_dislodged_gravel |  |
| anm_fin | ent_anim_fin_tackle_dust |  |
| anm_fin | ent_anim_fin_tackle_gravel |  |
| anm_fin | ent_anim_train_roll_dust |  |
| scr_mg_bathing | scr_mg_bathing_foam_forearm |  |
| scr_mg_bathing | scr_mg_bathing_foam_head |  |
| scr_mg_bathing | scr_mg_bathing_foam_torso |  |
| scr_mg_bathing | scr_mg_bathing_foam_upperarm |  |
| scr_mg_bathing | scr_mg_bathing_tub_steam |  |
| scr_winter1 | scr_winter1_barn_snow |  |
| scr_winter1 | scr_winter1_cabin_fire |  |
| scr_winter1 | scr_winter1_cabin_fire_roof |  |
| scr_winter1 | scr_winter1_cabin_fire_roof_fall |  |
| scr_winter1 | scr_winter1_cloud_density_anim |  |
| scr_winter1 | scr_winter1_fog_cover |  |
| scr_guama1 | scr_guama1_ship_leaking |  |
| scr_net_dust | scr_flow_camp_mp |  |
| scr_fme_spawn_effects | scr_animal_poop_flies |  |
| cut_utopia2 | cs_utopia2_water_drips |  |
| cut_utopia2 | cs_utopia2_water_splash_loop |  |
| scr_hideout_shadybelle | scr_hideout_sb_fuse |  |
| anm_dishwash | ent_anim_dish_wash_arm_wade |  |
| anm_dishwash | ent_anim_dish_wash_bowl_drips |  |
| anm_dishwash | ent_anim_dish_wash_plate_drips |  |
| anm_dishwash | ent_anim_dish_wash_splashes |  |
| anm_dishwash | ent_anim_dish_wash_spoon_drips |  |
| scr_net_target_races | scr_net_target_fire_ring_mp |  |
| scr_net_pony_express | scr_net_race_smoke |  |
| scr_generic | ent_amb_insect_fly_swarm |  |
| scr_generic | env_smoke |  |
| scr_generic | scr_event_glint |  |
| scr_generic | scr_gen_shiny_bling |  |
| scr_marston | ent_amb_milk_bubbles |  |
| scr_marston | scr_mg_milking |  |
| scr_net_camp | eagle_eye_clue_animal_transform |  |
| scr_net_camp | scr_net_animal_ghost |  |
| scr_net_camp | scr_net_animal_ghost_boar |  |
| scr_net_camp | scr_net_animal_ghost_head |  |
| scr_net_camp | scr_net_animal_ghost_limb |  |
| scr_net_camp | scr_net_animal_ghost_sma |  |
| scr_net_camp | scr_net_spirit_animal_fade |  |
| scr_hideout_ironcloud | scr_ironcloud_fire_extinguish |  |
| scr_hideout_ironcloud | scr_ironcloud_fire_object |  |
| des_moon1 | ent_anm_generic_fire_field |  |
| des_moon1 | ent_ray_moon1_roof_fire |  |
| des_mob3 | ent_ray_mob3_smoke_post |  |
| des_mob3 | ent_ray_mob3_smoke_trail |  |
| des_mob3 | ent_ray_mob3_trolley_sparks |  |
| des_mob3 | scr_mob3_proj_dynamite_trail |  |
| scr_net_moon5 | scr_net_moon2_still_fire |  |
| scr_net_moon5 | scr_net_moon5_player_smoke |  |
| scr_discoverables | ent_amb_steam_geyser |  |
| scr_discoverables | ent_amb_witch_cauldron_bubble |  |
| scr_discoverables | ent_amb_witch_cauldron_steam |  |
| scr_discoverables | scr_disc_meteor_shower |  |
| scr_discoverables | scr_disc_whispering_trees |  |
| scr_sadie2 | scr_sad2_liq_pour |  |
| scr_player_camp | ent_amb_campfire_dynamic |  |
| scr_agnesdowd_ghost | scr_ped_ghost_haze_stage1 |  |
| scr_proc_homerobberies | scr_homerob_chez_barn_fire |  |
| anm_wnt | ent_anim_door_snow_drifts |  |
| anm_wnt | ent_anim_lantern_fire_win1 |  |
| anm_wnt | ent_anim_train_sparks |  |
| anm_wnt | ent_anim_winter1_fireplace_start |  |
| anm_work | ent_anim_bale_debris_trail |  |
| anm_work | ent_anim_brush_drip_trail |  |
| anm_work | ent_anim_brush_dust |  |
| anm_work | ent_anim_bucket_fill_splash |  |
| anm_work | ent_anim_constant_sparks |  |
| anm_work | ent_anim_cotton_dump_loop |  |
| anm_work | ent_anim_cottonbale_leak |  |
| anm_work | ent_anim_feed_looping |  |
| anm_work | ent_anim_hay_pitchfork_lift |  |
| anm_work | ent_anim_hay_pitchfork_lift_fork_hay |  |
| anm_work | ent_anim_saw_wood |  |
| anm_work | ent_anim_scrape_ground_debris |  |
| anm_work | ent_anim_steam_horsegelding |  |
| anm_work | ent_anim_table_wipe |  |
| anm_work | ent_anim_water_cloth_squeeze |  |
| anm_work | ent_anim_work_rake |  |
| scr_beat_burning_bodies | scr_beat_burning_body_fire |  |
| scr_beat_burning_bodies | scr_beat_burning_body_smk |  |
| scr_beat_burning_bodies | scr_beat_burning_body_smk_start |  |
| scr_mudtown5 | proj_dynamite_trail |  |
| scr_native3 | scr_natv3_fire_oil_field |  |
| scr_native3 | scr_natv3_fire_oil_plume |  |
| scr_native3 | scr_natv3_generic_fire |  |
| scr_mob3 | scr_mob3_proj_dynamite_trail |  |
| scr_crackpot | scr_crackpot_rc_sparks |  |
| scr_crackpot | scr_crackpot_sink_bubbles |  |
| scr_crackpot | scr_crackpot_tesla_coil |  |
| scr_crackpot | scr_crackpot_torpedo_spray |  |
| anm_foodprep | ent_anim_bbq |  |
| anm_foodprep | ent_anim_fly_swarm |  |
| anm_foodprep | ent_anim_food_seasoning_shake |  |
| anm_foodprep | ent_anim_food_seasoning_shake_into_hand |  |
| anm_foodprep | ent_anim_food_seasoning_sprinkle |  |
| anm_foodprep | ent_anim_foodprep_bits |  |
| anm_foodprep | ent_anim_gut_blood_drain |  |
| anm_foodprep | ent_anim_gut_blood_saw |  |
| anm_foodprep | ent_anim_gut_dried_meat_saw |  |
| anm_foodprep | ent_anim_ladle_drip_trail |  |
| anm_foodprep | ent_anim_ladle_drips |  |
| anm_foodprep | ent_anim_ladle_food_pour |  |
| anm_foodprep | ent_anim_ladle_steam |  |
| anm_foodprep | ent_anim_ladle_steam_int |  |
| anm_foodprep | ent_anim_milk_pour |  |
| anm_foodprep | ent_anim_pan_steam |  |
| anm_foodprep | ent_anim_plate_steam |  |
| scr_std1 | scr_nbd1_bankwall_fire_linger |  |
| scr_std1 | scr_nbd1_bankwall_smolder |  |
| scr_std1 | scr_nbd1_exp_bankwall_fall_dust |  |
| scr_std1 | scr_nbd1_exp_bankwall_linger |  |
| scr_std1 | scr_nbd1_smoke_01 |  |
| scr_std1 | scr_nbd1_smoke_02 |  |
| scr_std1 | scr_nbd1_smoke_chimney |  |
| scr_std1 | scr_nbd1_smoke_chimney_rect |  |
| scr_std1 | scr_nbd1_smoke_chimney_split |  |
| scr_std1 | scr_nbd1_smoke_pipe_main |  |
| scr_std1 | scr_nbd1_smoke_pipe_sub |  |
| des_utopia1 | ent_ray_utopia1_debtrail |  |
| anm_coffee | ent_anim_coffee_drips |  |
| anm_coffee | ent_anim_coffee_steam |  |
| anm_coffee | ent_anim_coffee_steam_cold |  |
| anm_coffee | ent_anim_liquid_drips |  |
| scr_beat_gator_hunters | scr_beat_gator_blood_water |  |
| scr_beat_gator_hunters | scr_beat_gator_splash |  |
| scr_gang2 | scr_gang2_air_balloon_smoke |  |
| cut_rrtl | cs_rrtl_electric_arcs |  |
| cut_rrtl | cs_rrtl_lightning |  |
| cut_rrtl | cs_rrtl_smoulder_smoke |  |
| scr_metal_detector | scr_mp_metal_detector_sparks |  |
| scr_net_gangbounty | scr_net_gangbounty_smoke |  |
| scr_bou1 | scr_bou1_climb_dust_loop |  |
| scr_bou1 | scr_bou1_ped_water_splash |  |
| scr_smuggler1 | scr_smug_fog |  |
| anm_rmllr | ent_amb_insect_fly_swarm |  |
| anm_rmllr | ent_anim_dusty_interior |  |
| scr_beat_bloated_corpse | scr_beat_corpse_water_bubble |  |
| scr_winter2 | scr_blood_drips |  |
| scr_winter2 | scr_winter2_smoke |  |
| scr_beat_campfire_ambush | scr_campfire_ambush_fire_extinguish |  |
| anm_animals | ent_anim_animal_foot_dust |  |
| anm_animals | ent_anim_animal_water_drink |  |
| anm_animals | ent_anim_animal_water_drink_drips |  |
| anm_animals | ent_anim_bear_dig_dirt_looped |  |
| anm_animals | ent_anim_beaver_eat_tree_splinters |  |
| anm_animals | ent_anim_bird_water_drink |  |
| anm_animals | ent_anim_bird_water_drink_drips |  |
| anm_animals | ent_anim_boar_spray |  |
| anm_animals | ent_anim_buffalo_fight_dust |  |
| anm_animals | ent_anim_buffalo_roll_dust |  |
| anm_animals | ent_anim_dog_peeing |  |
| anm_animals | ent_anim_dog_poo |  |
| anm_animals | ent_anim_dog_roll_dust |  |
| anm_animals | ent_anim_dog_water_drink |  |
| anm_animals | ent_anim_drink_drip_trail |  |
| anm_animals | ent_anim_fish_breath_bubbles |  |

…first 200 of 1176 rows. Use the API for the rest.

