Skip to main content

Render Targets

You can use drawSprite, drawRect, drawText, and drawScaleformMovie on certain props to draw to them in 3D real-time.

Note: You HAVE to set the drawing to use layer 4. Other layers do not work.

Limitations: Multiple objects that have the same render target name (tvscreen for example), will all display the exact same thing at once on the whole map. This means to display different things, you have to use different props.

Functions usable:

[isNamedRendertargetLinked](/ui-isnamedrendertargetlinked)

[isNamedRendertargetRegistered](/ui-isnamedrendertargetregistered)

[linkNamedRendertarget](/ui-linknamedrendertarget)

[registerNamedRendertarget](/ui-registernamedrendertarget)

[releaseNamedRendertarget](/ui-releasenamedrendertarget)

[getNamedRendertargetRenderId](/ui-getnamedrendertargetrenderid)

[setTextRenderId](/ui-settextrenderid)

Example script which spawns a large screen and draws to it.

``` //Load texture dictionary for example if(!mp.game.graphics.hasStreamedTextureDictLoaded("mpweaponsgang0"))

   mp.game.graphics.requestStreamedTextureDict("mpweaponsgang0", true);

while(!mp.game.graphics.hasStreamedTextureDictLoaded("mpweaponsgang0"))

   mp.game.wait(0);

//Create object for example function CreateModel(model, pos, rot) {

   if(!mp.game.streaming.hasModelLoaded(mp.game.joaat(model)))
       mp.game.streaming.requestModel(mp.game.joaat(model));
   while(!mp.game.streaming.hasModelLoaded(mp.game.joaat(model)))
       mp.game.wait(0);
   return mp.objects.new(mp.game.joaat(model), pos,
   \{
       rotation: rot,
       alpha: 255,
       dimension: mp.players.local.dimension
   \});

}

function CreateRenderTarget(name, model) {

   if(!mp.game.ui.isNamedRendertargetRegistered(name))
       mp.game.ui.registerNamedRendertarget(name, false); //Register render target
   if(!mp.game.ui.isNamedRendertargetLinked(mp.game.joaat(model)))
       mp.game.ui.linkNamedRendertarget(mp.game.joaat(model)); //Link it to all models
   if(mp.game.ui.isNamedRendertargetRegistered(name))
       return mp.game.ui.getNamedRendertargetRenderId(name); //Get the handle
   return -1;

}

function RenderThings(id) {

   mp.game.ui.setTextRenderId(id); //Set render ID of render target
   mp.game.graphics.set2dLayer(4); //Only layer 4 works
   
   mp.game.graphics.drawRect(0.5, 0.5, 1, 1, 255, 0, 0, 255); //Draw rect is always behind text/sprites
   
   mp.game.graphics.drawText("~r~Rage~w~MP", [0.5, 0.35], //Draw text is always the most top element
   \{ 
     font: 0, 
     color: [255, 255, 255, 255], 
     scale: [2.0, 2.0], 
     outline: true
   \});
   
   //Scaleforms work too although the majority have messed up scaling
   mp.game.graphics.drawScaleformMovie(scale, 0.5, 0.5, 1, 1, 255, 255,255, 255, 0);
   
   //Draw sprites. The layering for this is last drawn is the most top element
   mp.game.graphics.drawSprite("mpweaponsgang0", "w_ar_advancedrifle", 0.25, 0.5, 0.25, 0.25, 0, 255, 255, 255, 255);
   mp.game.graphics.drawSprite("mpweaponsgang0", "w_ex_grenadefrag", 0.25, 0.5, 0.25, 0.25, 0, 255, 255, 255, 255);
   
   mp.game.ui.setTextRenderId(1); //Do not forget to reset the render ID. 1 is always the default render target the game uses

}

var TargetsToRender = []; var scale = 0;

mp.keys.bind(69, false, () => //Button E {

   var pos = mp.players.local.position;
   pos.z += 1;
   
   scale = mp.game.graphics.requestScaleformMovie("cellphone_ifruit");
   while(!mp.game.graphics.hasScaleformMovieLoaded(scale))
       mp.game.wait(0);
   
   var x = CreateModel("xm_prop_x17dlc_monitor_wall_01a", pos, new mp.Vector3());
   pos.x += 10;
   var x = CreateModel("xm_prop_x17dlc_monitor_wall_01a", pos, new mp.Vector3());
   var id = CreateRenderTarget("prop_x17dlc_monitor_wall_01a", "xm_prop_x17dlc_monitor_wall_01a");
   if(id != -1)
       TargetsToRender.push(id);
   else
       mp.gui.chat.push("Could not create render target.");

});

mp.events.add("render", () => {

   for(var i = 0; i < TargetsToRender.length; i++)
   \{
       RenderThings(TargetsToRender[i]);
   \}

}); ```

![Example of drawRect and drawText](/img/wiki/Rendertarget_1.PNG) ![Fullscreen drawRect and drawText](/img/wiki/Rendertarget_2.PNG) ![Reacts to object alpha properly](/img/wiki/Rendertarget_3.PNG) ![cinscreen example](/img/wiki/Rendertarget_4.PNG) ![drawSprite, drawRect, and drawText](/img/wiki/Rendertarget_5.PNG) ![drawSprite, drawRect, and drawScaleformMovie](/img/wiki/Rendertarget_6.PNG)

Render Target NameProp Name
tvscreendes_tvsmash_start
tvscreendes_tvsmash_root
tvscreendes_tvsmash_end
tvscreenprop_cs_tv_stand
tvscreenprop_flatscreen_overlay
tvscreenprop_laptop_lester2
tvscreenprop_monitor_02
tvscreenprop_trev_tv_01
tvscreenprop_tv_02
tvscreenprop_tv_03_overlay
tvscreenprop_tv_06
tvscreenprop_tv_flat_01
tvscreenprop_tv_flat_01_screen
tvscreenprop_tv_flat_02b
tvscreenprop_tv_flat_03
tvscreenprop_tv_flat_03b
tvscreenprop_tv_flat_michael
tvscreenprop_monitor_w_large
tvscreenprop_tv_03
tvscreenprop_tv_flat_02
tvscreenhei_prop_hst_laptop
tvscreenhei_bank_heist_laptop
tvscreenhei_heist_str_avunitl_03
tvscreenhei_heist_str_avunits_01
tvscreenhei_heist_str_avunitl_01
prop_x17dlc_monitor_wall_01axm_prop_x17dlc_monitor_wall_01a
cinscreenprop_big_cin_screen
taxiprop_taxi_meter_1
taxiprop_taxi_meter_2
rev_phoneprop_cs_trev_overlay
npcphoneprop_phone_cs_frank
npcphoneprop_phone_proto
big_dispprop_huge_display_01
big_dispprop_huge_display_02
planningprop_muster_wboard_01
planningprop_muster_wboard_02
planninghei_prop_hei_muster_01
prop_battle_touchscreen_rtba_prop_battle_hacker_screen
prop_x17_p_01xm_prop_x17_sec_panel_01
slow_textbkr_prop_slow_down
prop_clubhouse_laptop_01abkr_prop_clubhouse_laptop_01a
prop_clubhouse_laptop_square_01abkr_prop_clubhouse_laptop_01b
big_disp2prop_projector_overlay
pbus_screenba_prop_battle_pbus_screen
club_computerba_prop_battle_club_computer_01
club_computer_02ba_prop_battle_club_computer_02
laptop_djba_prop_club_laptop_dj
laptop_dj_02ba_prop_club_laptop_dj_02
bikerlogobkr_prop_biker_scriptrt_logo
bikertablebkr_prop_biker_scriptrt_table
bikerwallbkr_prop_biker_scriptrt_wall
clubname_blackboard_01abkr_prop_clubhouse_blackboard_01a
memorial_wall_active_01bkr_prop_rt_memorial_active_01
memorial_wall_active_02bkr_prop_rt_memorial_active_02
memorial_wall_active_03bkr_prop_rt_memorial_active_03
memorial_wall_presidentbkr_prop_rt_memorial_president
memorial_wall_vice_presidentbkr_prop_rt_memorial_vice_pres
clubhouse_plan_01abkr_prop_rt_clubhouse_plan_01a
clubhouse_tablebkr_prop_rt_clubhouse_table
clubhouse_wallbkr_prop_rt_clubhouse_wall
smug_monitor_01xm_prop_x17_computer_01
smug_monitor_01sm_prop_smug_monitor_01
tv_flat_01xm_prop_x17_tv_flat_01
tv_flat_01sm_prop_smug_tv_flat_01
monitor_02prop_x17_computer_02
tvstand_screenxm_prop_x17_tv_stand_01a
prop_x17_8scrn_01xm_prop_x17_screens_02a_01
prop_x17_8scrn_02xm_prop_x17_screens_02a_02
prop_x17_8scrn_03xm_prop_x17_screens_02a_03
prop_x17_8scrn_04xm_prop_x17_screens_02a_04
prop_x17_8scrn_05xm_prop_x17_screens_02a_05
prop_x17_8scrn_06xm_prop_x17_screens_02a_06
prop_x17_8scrn_07xm_prop_x17_screens_02a_07
prop_x17_8scrn_08xm_prop_x17_screens_02a_08
prop_x17_tv_ceil_scn_01xm_prop_x17_tv_ceiling_scn_01
prop_x17_tv_ceil_scn_02xm_prop_x17_tv_ceiling_scn_02
prop_x17_tv_scrn_01xm_prop_x17_tv_scrn_01
prop_x17_tv_scrn_02xm_prop_x17_tv_scrn_02
prop_x17_tv_scrn_03xm_prop_x17_tv_scrn_03
prop_x17_tv_scrn_04xm_prop_x17_tv_scrn_04
prop_x17_tv_scrn_05xm_prop_x17_tv_scrn_05
prop_x17_tv_scrn_06xm_prop_x17_tv_scrn_06
prop_x17_tv_scrn_07xm_prop_x17_tv_scrn_07
prop_x17_tv_scrn_08xm_prop_x17_tv_scrn_08
prop_x17_tv_scrn_09xm_prop_x17_tv_scrn_09
prop_x17_tv_scrn_10xm_prop_x17_tv_scrn_10
prop_x17_tv_scrn_11xm_prop_x17_tv_scrn_11
prop_x17_tv_scrn_12xm_prop_x17_tv_scrn_12
prop_x17_tv_scrn_13xm_prop_x17_tv_scrn_13
prop_x17_tv_scrn_14xm_prop_x17_tv_scrn_14
prop_x17_tv_scrn_15xm_prop_x17_tv_scrn_15
prop_x17_tv_scrn_16xm_prop_x17_tv_scrn_16
prop_x17_tv_scrn_17xm_prop_x17_tv_scrn_17
prop_x17_tv_scrn_18xm_prop_x17_tv_scrn_18
prop_x17_tv_scrn_19xm_prop_x17_tv_scrn_19
prop_x17_tv_ceiling_01xm_screen_1
ex_tvscreenex_prop_ex_tv_flat_01
prop_ex_computer_screenex_prop_monitor_01_ex
prop_ex_office_textex_prop_ex_office_text
gr_bunker_laptop_01agr_prop_gr_laptop_01a
bunker_laptop_sq_01agr_prop_gr_laptop_01b
gr_trailer_monitor_01gr_prop_gr_trailer_monitor_01
gr_trailer_monitor_02gr_prop_gr_trailer_monitor_02
gr_trailer_monitor_03gr_prop_gr_trailer_monitor_03
gr_trailertv_01gr_prop_gr_trailer_tv
gr_trailertv_02gr_prop_gr_trailer_tv_02
heist_brdhei_prop_dlc_heist_board
tablethei_prop_dlc_tablet
hei_monhei_prop_hei_monitor_overlay
blimp_textsr_mp_spec_races_blimp_sign
id_textprop_police_id_text
id_text_02prop_police_id_text_02
crew_emblem_basexm_prop_base_crew_emblem
orbital_tablexm_prop_orbital_cannon_table
prop_impexp_lappy_01aimp_prop_impexp_lappy_01a
port_textapa_prop_ap_port_text
starb_textapa_prop_ap_starb_text
stern_textapa_prop_ap_stern_text
digiscannerweapon_digiscanner