Sanmodder Posted January 6, 2019 Share Posted January 6, 2019 (edited) hello how to make a mod menu for gta san andreas you can admire the mod menu and trainers for gta 4 or gta v you would like to do such a mod menu and you do not know how I made an example base for you maybe not such a example because it has a configuration file You will be checking out exactly and you will understand I will tell you about the benefits very stable, unfortunately, it's true Modern It has ini file where you can set start key colors of panels the size of the panels positions on the screen increasing options and reducing 2 selectable dial options spacing of panels and text better to let the viewer know what the script is Now I will tell you what you have to do because this is a mod menu for self-assembly you must write what options you will have 0ADF: add_dynamic_GXT_entry "item1" text "...... here ........" / / items and create some commands, but that's your idea the command is up from line 0321 to line 0401 in the editor I advise you for not experimenting because the script will eat you but this is just info for novices maybe you want to correct me or advise me I'm waiting for your comment awesome designs must have licensesthat the author and his projects should be respectedban, publishing without my signatureban, use in samp and mtaProhibition, conversion to android and publishingunless only with my signaturea ban on selling a scripta ban, bragging on youtube unless only with my signatureIf you accept licenses, enjoyif not, so you do not accept my rulesit means that you do not respect me and my workgoodbye //source //recomended use on cleo 4.3.20.0 {$CLEO .cs} //-------------MAIN--------------- thread "mod_menu" 0ADF: add_dynamic_GXT_entry "ite1" text "dv hax v1.2" //logo 0ADF: add_dynamic_GXT_entry "ite2" text "~1~/~1~" //items info 0ADF: add_dynamic_GXT_entry "item1" text "add gxt" //items info 0ADF: add_dynamic_GXT_entry "item2" text "add gxt" //items info 0ADF: add_dynamic_GXT_entry "item3" text "add gxt" //items info 0ADF: add_dynamic_GXT_entry "item4" text "add gxt" //items info 0ADF: add_dynamic_GXT_entry "item5" text "add gxt" //items info 0ADF: add_dynamic_GXT_entry "item6" text "add gxt" //items info 0ADF: add_dynamic_GXT_entry "item7" text "add gxt" //items info 0ADF: add_dynamic_GXT_entry "item8" text "add gxt" //items info 0ADF: add_dynamic_GXT_entry "item9" text "add gxt" //items info 0ADF: add_dynamic_GXT_entry "itema" text "add gxt" //items info 0ADF: add_dynamic_GXT_entry "itemb" text "add gxt" //items info 0ADF: add_dynamic_GXT_entry "itemc" text "add gxt" //items info 0ADF: add_dynamic_GXT_entry "itemd" text "add gxt" //items info 0ADF: add_dynamic_GXT_entry "iteme" text "add gxt" //items info 0ADF: add_dynamic_GXT_entry "itemf" text "add gxt" //items info 0ADF: add_dynamic_GXT_entry "item10" text "add gxt" //items info 0ADF: add_dynamic_GXT_entry "item11" text "add gxt" //items info 0ADF: add_dynamic_GXT_entry "item12" text "add gxt" //items info 0ADF: add_dynamic_GXT_entry "item13" text "add gxt" //items info const count = 1@ max_items = 2@ rect_size_y = 3@ spacing = 4@ grsy = 5@ pos_x = 6@ gmi = 7@ gpsx = 8@ g_rs = 9@ gpsxa = 10@ pos_y = 11@ rect_size_x = 12@ sel_type = 13@ items = 14@ cath = 18@ gpos_y = 19@ vin_r = 21@ vin_g = 22@ vin_b = 23@ vin_a = 24@ sel_r = 25@ sel_g = 26@ sel_b = 27@ start_key = 30@ counter3 = 31@ counter2 = 0@ grsx = 16@ end var max_items:int count:int end if 0AAB: file_exists "cleo\MENU_CONFIG.ini" then 0AF0: start_key = get_int_from_ini_file "cleo\MENU_CONFIG.ini" section "config" key "start key" 0AF2: pos_x = read_float_from_ini_file "cleo\MENU_CONFIG.ini" section "config" key "posx start" 0AF2: pos_y = read_float_from_ini_file "cleo\MENU_CONFIG.ini" section "config" key "PosY start" 0AF2: rect_size_x = read_float_from_ini_file "cleo\MENU_CONFIG.ini" section "config" key "menu size" 0AF0: max_items = get_int_from_ini_file "cleo\MENU_CONFIG.ini" section "config" key "max items" 0AF2: spacing = get_int_from_ini_file "cleo\MENU_CONFIG.ini" section "config" key "spacing" 0AF0: sel_type = get_int_from_ini_file "cleo\MENU_CONFIG.ini" section "config" key "selector type" 0AF0: vin_r = get_int_from_ini_file "cleo\MENU_CONFIG.ini" section "config" key "vincr" 0AF0: vin_g = get_int_from_ini_file "cleo\MENU_CONFIG.ini" section "config" key "vincg" 0AF0: vin_b = get_int_from_ini_file "cleo\MENU_CONFIG.ini" section "config" key "vincb" 0AF0: vin_a = get_int_from_ini_file "cleo\MENU_CONFIG.ini" section "config" key "vinca" 0AF0: sel_r = get_int_from_ini_file "cleo\MENU_CONFIG.ini" section "config" key "selr" 0AF0: sel_g = get_int_from_ini_file "cleo\MENU_CONFIG.ini" section "config" key "selg" 0AF0: sel_b = get_int_from_ini_file "cleo\MENU_CONFIG.ini" section "config" key "selb" goto @heck_config else 0acd: "cant load menu config file" 10000 while 8AAB: file_exists "cleo\MENU_CONFIG.ini" wait 0 end end :start repeat wait 0 until if 0ab0: start_key player.CanMove(0) = false items = 1 //first items 29@ = 1 //flash state while true wait 0 0087: 20@ = pos_y for count = 0 to max_items step 1 if count == 0 then 03F0: enable_text_draw 0 //void (calculation rect pos_y end size_y) 0093: gmi = integer max_items to_float 0087: rect_size_y = gmi 006b: rect_size_y *= spacing rect_size_y += 40.0 0087: grsy = rect_size_y grsy /= 2.0 0087: gpos_y = pos_y 005b: gpos_y += grsy //void (calculation rect pos_x and size_x) 0087: grsx = rect_size_x // (float) grsx /= 10.0 grsx *= 10.0 0087: gpsx = grsx // (float) gpsx /= 2.0 005b: gpsx += pos_x //---------------------------------------- 0087: gpsxa = gpsx // size --> h gpsxa /= 2.0 // h / 2.0 gpsxa *= 0.9 gpsxa -= 2.0 0087: 15@ = gpsxa 15@ /= 90.0 // h / 2.0 0087: 17@ = 20@ 17@ += 10.0 033F: set_text_draw_letter_size 15@ 1.0 060D: draw_text_shadow 1 0 0 0 200 0349: set_text_draw_font 3 0343: set_text_draw_linewidth 500.0 033E: set_draw_text_position gpsxa 17@ "ite1" //void (draw a window) 038E: draw_box_position gpsx gpos_y rect_size_x rect_size_y vin_r vin_g vin_b vin_a //---------------------------------------------------- //void (draw the right frame bar) + items info 0087: g_rs = rect_size_x // size --> h g_rs /= 2.0 // h / 2.0 0087: gpsxa = gpsx 005b: gpsxa += g_rs // t + h 038E: draw_box_position gpsxa gpos_y size 1.5 rect_size_y RGBA sel_r sel_g sel_b vin_a 0087: gmi = gpsxa // size --> h gmi -= 40.0 0087: g_rs = rect_size_y g_rs /= 2.0 // h / 2.0 0087: 17@ = gpos_y 005b: 17@ += g_rs // t + h 17@ -= 10.0 033F: set_text_draw_letter_size 0.4 0.5 060D: draw_text_shadow 1 0 0 0 200 //0349: set_text_draw_font 3 0343: set_text_draw_linewidth 500.0 045b: draw_text_1number gmi 17@ GXT 'ite2' number items max_items //void (draw the left frame bar) 0087: g_rs = rect_size_x // posx --> t g_rs /= 2.0 // h / 2.0 0087: gpsxa = gpsx 0063: gpsxa -= g_rs // t - h 038E: draw_box_position gpsxa gpos_y size 1.5 rect_size_y RGBA sel_r sel_g sel_b vin_a //void (draw the up frame bar) 0087: g_rs = rect_size_y g_rs /= 2.0 // h / 2.0 0087: gpsxa = gpos_y 0063: gpsxa -= g_rs // t + h 038E: draw_box_position gpsx gpsxa size rect_size_x 1.5 RGBA sel_r sel_g sel_b vin_a //void (draw the down frame bar) 0087: g_rs = rect_size_y g_rs /= 2.0 // h / 2.0 0087: gpsxa = gpos_y 005b: gpsxa += g_rs // t + h 038E: draw_box_position gpsx gpsxa size rect_size_x 1.5 RGBA sel_r sel_g sel_b vin_a end if count > 0 then //void (selector func) 0340: set_text_draw_RGBA 255 255 255 180 if sel_type == 1 //(selector type 1) then if 003b: count == items then 0340: set_text_draw_RGBA sel_r sel_g sel_b 28@ end else if sel_type == 2 //(selector type 2) then 0087: 17@ = 20@ 005b: 17@ += spacing 17@ += 24.0 if 003b: count == items then 038E: draw_box_position gpsx 17@ size rect_size_x spacing RGBA sel_r sel_g sel_b 28@ end end end //void (draw items func) 005b: 20@ += spacing 0087: 17@ = 20@ 17@ += 20.0 0087: gpsxa = pos_x gpsxa += 4.0 0AD3: [email protected] = format "item%X" count //string = format (hex items) count items 033F: set_text_draw_letter_size 0.3 0.9 060D: draw_text_shadow 1 0 0 0 200 0349: set_text_draw_font 3 0343: set_text_draw_linewidth 500.0 033E: set_draw_text_position gpsxa 17@ [email protected] end 005b: gpos_y += spacing end 03F0: enable_text_draw 0 //void scrolling dpad down if and 0ab0: 40 cath == false then cath = true if 001d: items > max_items then items = 1 else items++ end else //void scrolling dpad up if and 0ab0: 38 cath == false then cath = true if 1 > items then 0085: items = max_items else items-- end end end //void scrolling fast dpad down if 0ab0: 40 then if 001d: items > max_items then items = 1 ELSE if counter2 >= 8 then counter3 += 1 if counter3 >= 3 then counter3 = 1 items++ 018C: play_sound 1135 at 0.0 0.0 0.0 end end END else //void scrolling fast dpad up if 0ab0: 38 then if 1 > items then 0085: items = max_items else if counter2 >= 8 then counter3 += 1 if counter3 >= 3 then counter3 = 1 items-- 018C: play_sound 1135 at 0.0 0.0 0.0 end end end end end //void key counters if OR 0ab0: 40 0ab0: 38 then if 8 >= counter2 then counter2 += 1 end else if or 8ab0: 40 8ab0: 38 then if counter2 > 1 then counter2 -= 1 end end end //void scroll pulse func if 29@ == 1 then 28@ -= 2 if 28@ < 10 then 29@ = 2 end else if 29@ == 2 then 28@ += 1 if 28@ >= 80 then 29@ = 1 end end end //void key catch stats unlock block if and 80E1: player 0 pressed_key 16 8ab0: 38 8ab0: 40 then cath = false end //void exit menu if 00E1: player 0 pressed_key 15 then Player.CanMove(0) = true 03F0: enable_text_draw 0 goto @start end //void func case if and 00E1: player 0 pressed_key 16 //accept key cath == false then cath = true 0AC6: count = label @AC_items offset count += 0 //0x0 active items write 0A8C: write_memory count size 4 value items virtual_protect 0 0AB1: call_scm_func @ITEMS 0 end end :items 0AC6: count = label @AC_items offset count += 0 //0x0 active items read 0A8d: items count 4 0 if items == 1 then 0ACD: "TEST" 1000 4@ = 0.0 end if items == 2 then end if items == 3 then end if items == 4 then end if items == 5 then end if items == 6 then end if items == 7 then end if items == 8 then end if items == 9 then end if items == 10 then end if items == 11 then end if items == 12 then end if items == 13 then end if items == 14 then end if items == 15 then end if items == 16 then end if items == 17 then end if items == 18 then end if items == 19 then end if items == 20 then end 0AB2: ret 0 end_thread :AC_items HEX 00 00 00 00 //0x0 active items END :heck_config if and start_key >= 0 127 >= start_key jf @next if pos_x > 0.0 jf @next if pos_y > 0.0 jf @next if rect_size_x > 0.0 jf @next if and max_items >= 1 20 >= max_items jf @next if spacing > 0.0 jf @next if or sel_type == 1 sel_type == 2 jf @next if and vin_r >= 0 255 >= vin_r jf @next if and vin_g >= 0 255 >= vin_g jf @next if and vin_b >= 0 255 >= vin_b jf @next if and vin_a >= 0 255 >= vin_a jf @next if and sel_r >= 0 255 >= sel_r jf @next if and sel_g >= 0 255 >= sel_g jf @next if and sel_b >= 0 255 >= sel_b jf @next goto @start //start mod menu :next //show error for 0@ = 0 to 20 step 1 wait 500 0acd: "in the file there is a bug fix error to run the menu" 100 end end_thread create an ini file and paste it #--------------------------------- # menu config file by dv hack # #--------------------------------- # menu setings [config] start key = 77 #[integer] posx start = 14.0 #[float] PosY start = 80.0 #[float] menu size = 140.0 #[float] max items = 20 #[integer] spacing = 10.0 #[float] selector type = 2 #[integer 1 illuminated text 2 traditional selector] # menu customize color panel rgba all value [int] 0 to 255 vincr = 0 #[integer] r -->window vincg = 0 #[integer] g -->window vincb = 0 #[integer] b -->window vinca = 150 #[integer] a -->window selr = 200 #[integer] r -->scroller selg = 100 #[integer] g -->scroller selb = 0 #[integer] b -->scroller photo real Edited January 6, 2019 by Sanmodder fix Title Davve95 1 Link to comment Share on other sites More sharing options...
DerrinDrck Posted January 6, 2019 Share Posted January 6, 2019 Awesome mod! Sanmodder 1 Link to comment Share on other sites More sharing options...
Sanmodder Posted January 6, 2019 Author Share Posted January 6, 2019 21 minutes ago, DerrinDrck said: Awesome mod! thanks bro if you do not know something write in the comments Do you like such mods? Take a look at my workshophttps://gtaforums.com/topic/909664-sanmodder-workshop/ there is a mass of different mods Link to comment Share on other sites More sharing options...
Kucing.Bertelur Posted January 9, 2019 Share Posted January 9, 2019 {$CLEO .csi} jump @Const 0000: :_ZN15CTouchInterface14m_vecCachedPosE hex "_ZN15CTouchInterface14m_vecCachedPosE" 00 end :_Z18OS_ScreenGetInchesv hex "_Z18OS_ScreenGetInchesv" 00 end :_Z17OS_ScreenGetWidthv hex "_Z17OS_ScreenGetWidthv" 00 end :_Z18OS_ScreenGetHeightv hex "_Z18OS_ScreenGetHeightv" 00 end :Const const 0GetAddr = [email protected] PositionBix_X = [email protected] PositionBix_Y = [email protected] SizeBox_X = [email protected] SizeBox_Y = [email protected] GetSCRWidth_ = [email protected] GetSCRHeight_ = [email protected] end :Menu while true wait 0 gosub @Mutex gosub @BOX gosub @Text_DrawSCR if 0043: [email protected] == 5.0 then // jump @Spawn end if 0043: [email protected] == 6.0 then // jump @codePerintah1 end if 0043: [email protected] == 7.0 then // jump @codePerintah2 end if 0043: [email protected] == 8.0 then // jump @codePerintah3 end :End 0DDD: [email protected] = get_mutex_var 0x51 if [email protected] == 0 jf @Menu 0DDC: set_mutex_var 0 to 0 0792: disembark_instantly_actor $3 Camera.Restore_WithJumpCut() camera.Restore() end_Thread :TouchScreen 0DD0: [email protected] = get_label_addr @_Z17OS_ScreenGetWidthv 0DD1: [email protected] = get_func_addr_by_cstr_name [email protected] 0DD2: context_call_func [email protected] 0DD4: [email protected] = context_get_reg 0 0093: int_to_float+ [email protected] [email protected] 0087: [email protected] = [email protected] // (float) 0073: [email protected] /= [email protected] // (float) 0DD0: [email protected] = get_label_addr @_ZN15CTouchInterface14m_vecCachedPosE 0DD1: [email protected] = get_func_addr_by_cstr_name [email protected] 0DD8: [email protected] = read_mem_addr [email protected] size 4 fix_ib 0 [email protected] /= 2.3 006B: [email protected] *= [email protected] // (float) if and 0031: [email protected] >= 117.0 0033: 330.0 >= [email protected] then [email protected] += 4 0DD8: [email protected] = read_mem_addr [email protected] size 4 fix_ib 0 end Return :Text_DrawSCR gosub @Text 033E: set_draw_text_position [email protected] 137.0 GXT "ITEM0" // Push gosub @Text 033E: set_draw_text_position [email protected] 176.0 GXT "ITEM1" // Push gosub @Text 033E: set_draw_text_position [email protected] 219.0 GXT "ITEM2" // Push gosub @Text 033E: set_draw_text_position [email protected] 262.0 GXT "ITEM3" // Push return :Text 03F0: enable_text_draw 1 0342: set_text_draw_centered 1 0343: set_text_draw_linewidth 640.0 033F: set_text_draw_letter_size 3.3 2.0 return :Mutex if not actor.Dead($3) then 0DDC: set_mutex_var 0 to 1 0159: camera_on_ped $3 mode 4 switchstyle 1 0812: AS_actor $3 perform_animation "IDLE_HBHB" IFP "PED" 1.0 0 0 0 1 time -1 end Return :BOX if not actor.Driving($3) then 0DD0: [email protected] = get_label_addr @_Z18OS_ScreenGetInchesv 0DD1: [email protected] = get_func_addr_by_cstr_name [email protected] 0DD0: [email protected] = get_label_addr @_Z17OS_ScreenGetWidthv 0DD1: [email protected] = get_func_addr_by_cstr_name [email protected] 0DD0: [email protected] = get_label_addr @_Z18OS_ScreenGetHeightv 0DD1: [email protected] = get_func_addr_by_cstr_name [email protected] end 0DD2: context_call_func [email protected] 0DD4: [email protected] = context_get_reg 0 0DD2: context_call_func [email protected] 0DD4: [email protected] = context_get_reg 0 0DD2: context_call_func [email protected] 0DD4: [email protected] = context_get_reg 0 0093: int_to_float+ [email protected] [email protected] 0093: int_to_float+ [email protected] [email protected] 0087: [email protected] = [email protected] // (float) 0087: [email protected] = [email protected] // (float) [email protected] = 640.0 // ScreenX [email protected] = 448.0 0073: [email protected] /= [email protected] // (float) [email protected] += 220.0 0073: [email protected] /= [email protected] // (float) [email protected] += 87.0 [email protected] *= 85.0 038E: draw_box_position [email protected] [email protected] size [email protected] 60.0 RGBA 0 0 0 255 [email protected] += 140.0 038E: draw_box_position [email protected] [email protected] size [email protected] 219.0 RGBA 0 0 0 100 [email protected] -= 150.0 [email protected] -= 79.0 03F0: enable_text_draw 1 0343: set_text_draw_linewidth 640.0 0341: set_text_draw_align_justify 0 0349: set_text_draw_font 3 033F: set_text_draw_letter_size 2.3 2.55 0340: set_text_draw_RGBA 180 180 180 255 0345: enable_text_draw_background 0 033E: set_draw_text_position [email protected] [email protected] GXT "WMA" 0DD0: [email protected] = get_label_addr @_ZN15CTouchInterface14m_vecCachedPosE 0DD1: [email protected] = get_func_addr_by_cstr_name [email protected] Gosub @TouchScreen 0087: [email protected] = [email protected] // (float) 0092: float_to_int+ [email protected] [email protected] [email protected] /= 40 0093: int_to_float+ [email protected] [email protected] if 0033: 5.0 >= [email protected] then [email protected] = 5.0 end if 0031: [email protected] >= 8.0 then [email protected] = 8.0 end if 0043: [email protected] == 5.0 then [email protected] = 137.0 end if 0043: [email protected] == 6.0 then [email protected] = 176.0 end if 0043: [email protected] == 7.0 then [email protected] = 219.0 end if 0043: [email protected] == 8.0 then [email protected] = 262.0 end [email protected] += 80.0 038E: draw_box_position [email protected] [email protected] size [email protected] 40.0 RGBA 255 255 255 155 return this menu like GTA V for Android.. sorry bad english :v Link to comment Share on other sites More sharing options...
Lorca767676 Posted October 22, 2021 Share Posted October 22, 2021 Sir please can you help me .. theres so many skins that I need from this peds.img .. but I think it is locked .. https://www.mediafire.com/file/7plk97aaced93j2/Peds_img.zip/file Please sir help me to get the skins please please . Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now