xdyoloswaggins Posted July 30, 2017 Share Posted July 30, 2017 Hey there, I have that question: In some menus ex. Matrix Menu I saw this vehicle preview (Screenshot: https://prnt.sc/g25qhy).I need to know if this is a sprite or a external picture. If this is a sprite how are they called, does someone has a list of this? Thanks in future! Link to comment Share on other sites More sharing options...
ikt Posted July 31, 2017 Share Posted July 31, 2017 (edited) They are sprites and their textures are in \Grand Theft Auto V\update\update.rpf\x64\patch\data\cdimages\scaleform_web.rpf\ I don't know their dictionary names though, so if somebody could shed some light onto this, that'd be nice. Edited July 31, 2017 by ikt Link to comment Share on other sites More sharing options...
alloc8or Posted July 31, 2017 Share Posted July 31, 2017 Almost a year old but better than nothing. // name, display name, texture dict, website URL{ "811", "pfister811", "lgm_dlc_executive1", "WWW_LEGENDARYMOTORSPORT_NET_S_CAR_D_DETAILS82" },{ "Annihilator", "annihl", "elt_default", "WWW_ELITASTRAVEL_COM_S_DETAILS16" },{ "Armored Boxville", "boxville5", "candc_importexport", "WWW_WARSTOCK_D_CACHE_D_AND_D_CARRY_COM_S_DETAILS50" },{ "Avarus", "avarus", "sssa_dlc_biker", "WWW_SOUTHERNSANANDREASSUPERAUTOS_COM_S_CARDETAILS140" },{ "Bagger", "bagger", "sssa_dlc_biker", "WWW_SOUTHERNSANANDREASSUPERAUTOS_COM_S_CARDETAILS135" },{ "Baller LE", "baller3", "lgm_dlc_apartments", "WWW_LEGENDARYMOTORSPORT_NET_S_CAR_D_DETAILS71" },{ "Baller LE LWB", "baller4", "lgm_dlc_apartments", "WWW_LEGENDARYMOTORSPORT_NET_S_CAR_D_DETAILS72" },{ "Banshee 900R", "banshee2", "lsc_jan2016", "WWW_BENNYSORIGINALMOTORWORKS_COM_S_DETAILS27" },{ "Bestia GTS", "bestiagts", "lgm_dlc_executive1", "WWW_LEGENDARYMOTORSPORT_NET_S_CAR_D_DETAILS77" },{ "Blazer Aqua", "blazer5", "candc_importexport", "WWW_WARSTOCK_D_CACHE_D_AND_D_CARRY_COM_S_DETAILS49" },{ "Boxville", "boxville4", "candc_default", "WWW_WARSTOCK_D_CACHE_D_AND_D_CARRY_COM_S_DETAILS31" },{ "Brawler", "brawler", "lgm_dlc_luxe", "WWW_LEGENDARYMOTORSPORT_NET_S_CAR_D_DETAILS55" },{ "Brickade", "brickade", "candc_executive1", "WWW_WARSTOCK_D_CACHE_D_AND_D_CARRY_COM_S_DETAILS45" },{ "Buccaneer", "buccaneer2", "lsc_default", "WWW_BENNYSORIGINALMOTORWORKS_COM_S_DETAILS20" },{ "Burger Shot Stallion", "stalion2", "sssa_dlc_mp_to_sp", "WWW_SOUTHERNSANANDREASSUPERAUTOS_COM_S_CARDETAILS112" },{ "Carbon RS", "carbon", "lgm_default", "WWW_LEGENDARYMOTORSPORT_NET_S_CAR_D_DETAILS32" },{ "Cargobob", "cargobob", "candc_default", "WWW_WARSTOCK_D_CACHE_D_AND_D_CARRY_COM_S_DETAILS7" },{ "Cargobob Jetsam", "cargobob2", "candc_executive1", "WWW_WARSTOCK_D_CACHE_D_AND_D_CARRY_COM_S_DETAILS44" },{ "Casco", "casco", "lgm_dlc_heist", "WWW_LEGENDARYMOTORSPORT_NET_S_CAR_D_DETAILS53" },{ "Chimera", "chimera", "sssa_dlc_biker", "WWW_SOUTHERNSANANDREASSUPERAUTOS_COM_S_CARDETAILS143" },{ "Chino", "chino2", "lsc_default", "WWW_BENNYSORIGINALMOTORWORKS_COM_S_DETAILS15" },{ "Cognoscenti", "cognosc", "lgm_dlc_apartments", "WWW_LEGENDARYMOTORSPORT_NET_S_CAR_D_DETAILS67" },{ "Cognoscenti 55", "cog55", "lgm_dlc_apartments", "WWW_LEGENDARYMOTORSPORT_NET_S_CAR_D_DETAILS66" },{ "Comet Retro Custom", "comet3", "lsc_dlc_import_export", "WWW_BENNYSORIGINALMOTORWORKS_COM_S_DETAILS35" },{ "Coquette BlackFin", "coquette3", "lgm_dlc_luxe", "WWW_LEGENDARYMOTORSPORT_NET_S_CAR_D_DETAILS58" },{ "Daemon Custom", "daemon2", "sssa_dlc_biker", "WWW_SOUTHERNSANANDREASSUPERAUTOS_COM_S_CARDETAILS144" },{ "Defiler", "defiler", "sssa_dlc_biker", "WWW_SOUTHERNSANANDREASSUPERAUTOS_COM_S_CARDETAILS139" },{ "Diabolus", "diablous2", "lsc_dlc_import_export", "WWW_BENNYSORIGINALMOTORWORKS_COM_S_DETAILS32" },{ "Dingi (4-Seater)", "dinghy3", "dock_default", "WWW_DOCKTEASE_COM_S_DETAILS11" },{ "Dodo", "dodo", "elt_default", "WWW_ELITASTRAVEL_COM_S_DETAILS23" },{ "Dubsta 6x6", "dubsta3", "candc_default", "WWW_WARSTOCK_D_CACHE_D_AND_D_CARRY_COM_S_DETAILS29" },{ "Duke O'Death", "dukes2", "candc_default", "WWW_WARSTOCK_D_CACHE_D_AND_D_CARRY_COM_S_DETAILS42" },{ "Elegy Retro Custom", "elegy", "lsc_dlc_import_export", "WWW_BENNYSORIGINALMOTORWORKS_COM_S_DETAILS34" },{ "Elegy RH8", "elegy2", "lgm_default", "WWW_LEGENDARYMOTORSPORT_NET_S_CAR_D_DETAILS29" },{ "Esskey", "esskey", "sssa_dlc_biker", "WWW_SOUTHERNSANANDREASSUPERAUTOS_COM_S_CARDETAILS137" },{ "Faction", "faction2", "lsc_default", "WWW_BENNYSORIGINALMOTORWORKS_COM_S_DETAILS19" },{ "Faction Custom Donk", "faction3", "lsc_lowrider2", "WWW_BENNYSORIGINALMOTORWORKS_COM_S_DETAILS29" },{ "Faggio Mod", "faggio3", "sssa_dlc_biker", "WWW_SOUTHERNSANANDREASSUPERAUTOS_COM_S_CARDETAILS153" },{ "Faggio Sport", "faggion", "sssa_dlc_biker", "WWW_SOUTHERNSANANDREASSUPERAUTOS_COM_S_CARDETAILS154" },{ "FCR", "fcr2", "lsc_dlc_import_export", "WWW_BENNYSORIGINALMOTORWORKS_COM_S_DETAILS33" },{ "FMJ", "fmj", "lgm_dlc_executive1", "WWW_LEGENDARYMOTORSPORT_NET_S_CAR_D_DETAILS76" },{ "Fr\xE4nken Stange", "btype2", "sssa_dlc_halloween", "WWW_SOUTHERNSANANDREASSUPERAUTOS_COM_S_CARDETAILS120" },{ "Gang Burrito", "gburrito2", "sssa_dlc_heist", "WWW_SOUTHERNSANANDREASSUPERAUTOS_COM_S_CARDETAILS105" },{ "Guardian", "guardian", "sssa_dlc_heist", "WWW_SOUTHERNSANANDREASSUPERAUTOS_COM_S_CARDETAILS106" },{ "Hakuchou Drag", "hakuchou2", "lgm_dlc_biker", "WWW_LEGENDARYMOTORSPORT_NET_S_CAR_D_DETAILS90" },{ "Hotknife", "hotknife", "lgm_default", "WWW_LEGENDARYMOTORSPORT_NET_S_CAR_D_DETAILS31" },{ "Hydra", "hydra", "candc_default", "WWW_WARSTOCK_D_CACHE_D_AND_D_CARRY_COM_S_DETAILS33" },{ "Insurgent", "insurgent2", "candc_default", "WWW_WARSTOCK_D_CACHE_D_AND_D_CARRY_COM_S_DETAILS35" },{ "Insurgent Pickup", "insurgent", "candc_default", "WWW_WARSTOCK_D_CACHE_D_AND_D_CARRY_COM_S_DETAILS34" },{ "Itali GTB", "italigtb2", "lsc_dlc_import_export", "WWW_BENNYSORIGINALMOTORWORKS_COM_S_DETAILS30" },{ "Khamelion", "khamel", "lgm_default", "WWW_LEGENDARYMOTORSPORT_NET_S_CAR_D_DETAILS30" },{ "Kraken", "sub2", "dock_default", "WWW_DOCKTEASE_COM_S_DETAILS17" },{ "Kuruma", "kuruma", "sssa_dlc_heist", "WWW_SOUTHERNSANANDREASSUPERAUTOS_COM_S_CARDETAILS107" },{ "Kuruma (Armored)", "kuruma2", "sssa_dlc_heist", "WWW_SOUTHERNSANANDREASSUPERAUTOS_COM_S_CARDETAILS108" },{ "Lectro", "lectro", "lgm_dlc_heist", "WWW_LEGENDARYMOTORSPORT_NET_S_CAR_D_DETAILS54" },{ "Lurcher", "lurcher", "sssa_dlc_halloween", "WWW_SOUTHERNSANANDREASSUPERAUTOS_COM_S_CARDETAILS121" },{ "Mamba", "mamba", "lgm_dlc_apartments", "WWW_LEGENDARYMOTORSPORT_NET_S_CAR_D_DETAILS68" },{ "Mammatus", "mammatus", "elt_default", "WWW_ELITASTRAVEL_COM_S_DETAILS17" },{ "Manchez", "manchez", "sssa_dlc_biker", "WWW_SOUTHERNSANANDREASSUPERAUTOS_COM_S_CARDETAILS149" },{ "Minivan Custom", "minivan2", "lsc_lowrider2", "WWW_BENNYSORIGINALMOTORWORKS_COM_S_DETAILS18" },{ "Moonbeam", "moonbeam2", "lsc_default", "WWW_BENNYSORIGINALMOTORWORKS_COM_S_DETAILS17" },{ "Mule", "mule3", "candc_default", "WWW_WARSTOCK_D_CACHE_D_AND_D_CARRY_COM_S_DETAILS36" },{ "Nero", "nero2", "lsc_dlc_import_export", "WWW_BENNYSORIGINALMOTORWORKS_COM_S_DETAILS31" },{ "Nightblade", "nightblade", "sssa_dlc_biker", "WWW_SOUTHERNSANANDREASSUPERAUTOS_COM_S_CARDETAILS138" },{ "Nightshade", "niteshad", "lgm_dlc_apartments", "WWW_LEGENDARYMOTORSPORT_NET_S_CAR_D_DETAILS69" },{ "Nimbus", "nimbus", "elt_dlc_executive1", "WWW_ELITASTRAVEL_COM_S_DETAILS31" },{ "Osiris", "osiris", "lgm_dlc_luxe", "WWW_LEGENDARYMOTORSPORT_NET_S_CAR_D_DETAILS60" },{ "Penetrator", "penetrator", "lgm_dlc_importexport", "WWW_LEGENDARYMOTORSPORT_NET_S_CAR_D_DETAILS91" },{ "Phantom Wedge", "phantom2", "candc_importexport", "WWW_WARSTOCK_D_CACHE_D_AND_D_CARRY_COM_S_DETAILS47" },{ "Pisswasser Dominator", "dominator2", "sssa_dlc_mp_to_sp", "WWW_SOUTHERNSANANDREASSUPERAUTOS_COM_S_CARDETAILS113" },{ "Primo", "primo2", "lsc_default", "WWW_BENNYSORIGINALMOTORWORKS_COM_S_DETAILS16" },{ "Prison Bus", "pbus", "candc_default", "WWW_WARSTOCK_D_CACHE_D_AND_D_CARRY_COM_S_DETAILS40" },{ "Ramp Buggy", "dune5", "candc_importexport", "WWW_WARSTOCK_D_CACHE_D_AND_D_CARRY_COM_S_DETAILS46" },{ "Raptor", "raptor", "lgm_dlc_biker", "WWW_LEGENDARYMOTORSPORT_NET_S_CAR_D_DETAILS89" },{ "Rat Bike", "ratbike", "sssa_dlc_biker", "WWW_SOUTHERNSANANDREASSUPERAUTOS_COM_S_CARDETAILS145" },{ "Reaper", "reaper", "lgm_dlc_executive1", "WWW_LEGENDARYMOTORSPORT_NET_S_CAR_D_DETAILS83" },{ "Redwood Gauntlet", "gauntlet2", "sssa_dlc_mp_to_sp", "WWW_SOUTHERNSANANDREASSUPERAUTOS_COM_S_CARDETAILS114" },{ "Rhino", "rhino", "candc_default", "WWW_WARSTOCK_D_CACHE_D_AND_D_CARRY_COM_S_DETAILS3" },{ "Rocket Voltic", "voltic2", "candc_importexport", "WWW_WARSTOCK_D_CACHE_D_AND_D_CARRY_COM_S_DETAILS53" },{ "Roosevelt", "roosevelt", "lgm_dlc_valentines", "WWW_LEGENDARYMOTORSPORT_NET_S_CAR_D_DETAILS38" },{ "Roosevelt Valor", "roosevelt2", "lgm_dlc_valentines2", "WWW_LEGENDARYMOTORSPORT_NET_S_CAR_D_DETAILS75" },{ "Ruiner 2000", "ruiner2", "candc_importexport", "WWW_WARSTOCK_D_CACHE_D_AND_D_CARRY_COM_S_DETAILS52" },{ "Rumpo Custom", "rumpo3", "sssa_dlc_executive_1", "WWW_SOUTHERNSANANDREASSUPERAUTOS_COM_S_CARDETAILS123" },{ "Sabre Turbo Custom", "sabregt2", "lsc_lowrider2", "WWW_BENNYSORIGINALMOTORWORKS_COM_S_DETAILS24" },{ "Sanctus", "sanctus", "sssa_dlc_biker", "WWW_SOUTHERNSANANDREASSUPERAUTOS_COM_S_CARDETAILS148" },{ "Savage", "savage", "candc_default", "WWW_WARSTOCK_D_CACHE_D_AND_D_CARRY_COM_S_DETAILS37" },{ "Schafter LWB", "schafter4", "lgm_dlc_apartments", "WWW_LEGENDARYMOTORSPORT_NET_S_CAR_D_DETAILS74" },{ "Schafter V12", "schafter3", "lgm_dlc_apartments", "WWW_LEGENDARYMOTORSPORT_NET_S_CAR_D_DETAILS73" },{ "Seven-70", "seven70", "lgm_dlc_executive1", "WWW_LEGENDARYMOTORSPORT_NET_S_CAR_D_DETAILS81" },{ "Shotaro", "shotaro", "lgm_dlc_biker", "WWW_LEGENDARYMOTORSPORT_NET_S_CAR_D_DETAILS88" },{ "Slamvan Custom", "slamvan3", "lsc_lowrider2", "WWW_BENNYSORIGINALMOTORWORKS_COM_S_DETAILS28" },{ "Sovereign", "sovereign", "sssa_dlc_independence", "WWW_SOUTHERNSANANDREASSUPERAUTOS_COM_S_CARDETAILS91" },{ "Specter Custom", "specter2", "lsc_dlc_import_export", "WWW_BENNYSORIGINALMOTORWORKS_COM_S_DETAILS36" },{ "Sprunk Buffalo", "buffalo3", "sssa_dlc_mp_to_sp", "WWW_SOUTHERNSANANDREASSUPERAUTOS_COM_S_CARDETAILS115" },{ "Stinger", "stinger", "lgm_default", "WWW_LEGENDARYMOTORSPORT_NET_S_CAR_D_DETAILS4" },{ "Stinger Convertible", "stinger_tless", "lgm_dlc_business2", "WWW_LEGENDARYMOTORSPORT_NET_S_CAR_D_DETAILS47" },{ "Stinger GT", "stingerg", "lgm_default", "WWW_LEGENDARYMOTORSPORT_NET_S_CAR_D_DETAILS27" },{ "Street Blazer", "blazer4", "sssa_dlc_biker", "WWW_SOUTHERNSANANDREASSUPERAUTOS_COM_S_CARDETAILS147" },{ "Sultan RS", "sultan2", "lsc_jan2016", "WWW_BENNYSORIGINALMOTORWORKS_COM_S_DETAILS26" },{ "SuperVolito", "svolito", "elt_dlc_apartments", "WWW_ELITASTRAVEL_COM_S_DETAILS28" },{ "SuperVolito Carbon", "svolito2", "elt_dlc_apartments", "WWW_ELITASTRAVEL_COM_S_DETAILS29" },{ "T20", "t20", "lgm_dlc_luxe", "WWW_LEGENDARYMOTORSPORT_NET_S_CAR_D_DETAILS62" },{ "Tampa", "tampa", "sssa_dlc_christmas_3", "WWW_SOUTHERNSANANDREASSUPERAUTOS_COM_S_CARDETAILS122" },{ "Technical", "technical", "candc_default", "WWW_WARSTOCK_D_CACHE_D_AND_D_CARRY_COM_S_DETAILS38" },{ "Technical Aqua", "technical2", "candc_importexport", "WWW_WARSTOCK_D_CACHE_D_AND_D_CARRY_COM_S_DETAILS48" },{ "Tempesta", "tempesta", "lgm_dlc_importexport", "WWW_LEGENDARYMOTORSPORT_NET_S_CAR_D_DETAILS92" },{ "The Liberator", "monster", "candc_default", "WWW_WARSTOCK_D_CACHE_D_AND_D_CARRY_COM_S_DETAILS30" },{ "Thrust", "thrust", "lgm_dlc_business2", "WWW_LEGENDARYMOTORSPORT_NET_S_CAR_D_DETAILS49" },{ "Titan", "titan", "elt_default", "WWW_ELITASTRAVEL_COM_S_DETAILS18" },{ "Tornado Custom", "tornado5", "lsc_lowrider2", "WWW_BENNYSORIGINALMOTORWORKS_COM_S_DETAILS23" },{ "Tornado Rat Rod", "tornado6", "sssa_dlc_biker", "WWW_SOUTHERNSANANDREASSUPERAUTOS_COM_S_CARDETAILS150" },{ "Toro", "toro", "dock_default", "WWW_DOCKTEASE_COM_S_DETAILS14" },{ "Tug", "tug", "dock_dlc_executive1", "WWW_DOCKTEASE_COM_S_DETAILS29" },{ "Turrreted Limo", "limo2", "candc_apartments", "WWW_WARSTOCK_D_CACHE_D_AND_D_CARRY_COM_S_DETAILS43" },{ "Valkyrie", "valkyrie", "candc_default", "WWW_WARSTOCK_D_CACHE_D_AND_D_CARRY_COM_S_DETAILS32" },{ "Velum", "velum", "elt_default", "WWW_ELITASTRAVEL_COM_S_DETAILS19" },{ "Velum (5-Seater)", "velum2", "elt_default", "WWW_ELITASTRAVEL_COM_S_DETAILS25" },{ "Verlierer", "verlier", "lgm_dlc_apartments", "WWW_LEGENDARYMOTORSPORT_NET_S_CAR_D_DETAILS70" },{ "Vindicator", "vindicator", "lgm_dlc_luxe", "WWW_LEGENDARYMOTORSPORT_NET_S_CAR_D_DETAILS63" },{ "Virgo Classic", "virgo2", "lsc_lowrider2", "WWW_BENNYSORIGINALMOTORWORKS_COM_S_DETAILS22" },{ "Volatus", "volatus", "elt_dlc_executive1", "WWW_ELITASTRAVEL_COM_S_DETAILS30" },{ "Voodoo", "voodoo", "lsc_default", "WWW_BENNYSORIGINALMOTORWORKS_COM_S_DETAILS21" },{ "Vortex", "vortex", "sssa_dlc_biker", "WWW_SOUTHERNSANANDREASSUPERAUTOS_COM_S_CARDETAILS146" },{ "Wastelander", "wastlndr", "candc_importexport", "WWW_WARSTOCK_D_CACHE_D_AND_D_CARRY_COM_S_DETAILS51" },{ "Windsor Drop", "windsor2", "lgm_dlc_executive1", "WWW_LEGENDARYMOTORSPORT_NET_S_CAR_D_DETAILS79" },{ "Wolfsbane", "wolfsbane", "sssa_dlc_biker", "WWW_SOUTHERNSANANDREASSUPERAUTOS_COM_S_CARDETAILS152" },{ "X80 Proto", "prototipo", "lgm_dlc_executive1", "WWW_LEGENDARYMOTORSPORT_NET_S_CAR_D_DETAILS80" },{ "XLS", "xls", "lgm_dlc_executive1", "WWW_LEGENDARYMOTORSPORT_NET_S_CAR_D_DETAILS78" },{ "Yacht", "yacht_model_0_0", "dock_dlc_model", "WWW_DOCKTEASE_COM_S_YACHT" },{ "Youga Classic", "youga2", "sssa_dlc_biker", "WWW_SOUTHERNSANANDREASSUPERAUTOS_COM_S_CARDETAILS151" },{ "Zombie Bobber", "zombiea", "sssa_dlc_biker", "WWW_SOUTHERNSANANDREASSUPERAUTOS_COM_S_CARDETAILS141" },{ "Zombie Chopper", "zombieb", "sssa_dlc_biker", "WWW_SOUTHERNSANANDREASSUPERAUTOS_COM_S_CARDETAILS142" } ikt and ins1de 2 Link to comment Share on other sites More sharing options...
ikt Posted August 1, 2017 Share Posted August 1, 2017 Ah, thanks! I suppose it's not possible to find these dictionaries programmatically, right? Link to comment Share on other sites More sharing options...
alloc8or Posted August 1, 2017 Share Posted August 1, 2017 (edited) Ah, thanks! I suppose it's not possible to find these dictionaries programmatically, right? Not sure. It might be possible by getting all dictionaries from fwTxdStore and then comparing the texture hashes which are the display name hashes in most cases. Edited August 1, 2017 by Unknown_Modder Link to comment Share on other sites More sharing options...
alloc8or Posted August 1, 2017 Share Posted August 1, 2017 Ah, thanks! I suppose it's not possible to find these dictionaries programmatically, right? Not sure. It might be possible by getting all dictionaries from fwTxdStore and then comparing the texture hashes which are the display name hashes in most cases. Ok so I looked into it and it's quite easy to get the dictionaries and textures. BUT, you'll have to load them into memory first (REQUEST_STREAMED_TEXTURE_DICT). Link to comment Share on other sites More sharing options...
ikt Posted August 1, 2017 Share Posted August 1, 2017 (edited) Did you also generate that list with that method? Edited August 1, 2017 by ikt Link to comment Share on other sites More sharing options...
alloc8or Posted August 1, 2017 Share Posted August 1, 2017 Did you also generate that list with that method? https://pastebin.com/3Ytn2p5w ikt 1 Link to comment Share on other sites More sharing options...
TheMuggles Posted August 1, 2017 Share Posted August 1, 2017 (edited) static struct { LPCSTR vehiclePreviewDict; char* vehicleName;} VehiclePreviews[267] = { { "lgm_default", "adder" }, { "lgm_default", "banshee" }, { "lgm_default", "carboniz" }, { "lgm_default", "carbon" }, { "lgm_default", "cheetah" }, { "lgm_default", "cogcarbi" }, { "lgm_default", "comet2" }, { "lgm_default", "coquette" }, { "lgm_default", "elegy2" }, { "lgm_default", "entityxf" }, { "lgm_default", "exmplar" }, { "lgm_default", "feltzer" }, { "lgm_default", "hotknife" }, { "lgm_default", "infernus" }, { "lgm_default", "jb700" }, { "lgm_default", "khamel" }, { "lgm_default", "monroe" }, { "lgm_default", "ninef" }, { "lgm_default", "ninef2" }, { "lgm_default", "rapidgt" }, { "lgm_default", "rapidgt2" }, { "lgm_default", "stinger" }, { "lgm_default", "stingerg" }, { "lgm_default", "superd" }, { "lgm_default", "surano_convertable" }, { "lgm_default", "vacca" }, { "lgm_default", "voltic_tless" }, { "lgm_default", "ztype" }, { "lgm_dlc_apartments", "baller3_web_vehicle_regular_b" }, { "lgm_dlc_apartments", "baller4_web_vehicle_regular_b" }, { "lgm_dlc_apartments", "voltic_tless" }, { "lgm_dlc_apartments", "cog55_web_vehicle_regular_b" }, { "lgm_dlc_apartments", "cognosc_web_vehicle_regular_b" }, { "lgm_dlc_apartments", "mamba" }, { "lgm_dlc_apartments", "niteshad" }, { "lgm_dlc_apartments", "schafter3_web_vehicle_regular_b" }, { "lgm_dlc_apartments", "schafter4_web_vehicle_regular_b" }, { "lgm_dlc_apartments", "verlier" }, { "lgm_dlc_biker", "hakuchou2" }, { "lgm_dlc_biker", "raptor" }, { "lgm_dlc_biker", "shotaro" }, { "lgm_dlc_business", "alpha" }, { "lgm_dlc_business", "jester" }, { "lgm_dlc_business", "turismor" }, { "lgm_dlc_business2", "banshee_tless" }, { "lgm_dlc_business2", "coquette_tless" }, { "lgm_dlc_business2", "huntley" }, { "lgm_dlc_business2", "massacro" }, { "lgm_dlc_business2", "stinger_tless" }, { "lgm_dlc_business2", "thrust" }, { "lgm_dlc_business2", "voltic_htop" }, { "lgm_dlc_business2", "zentorno" }, { "lgm_dlc_executive1", "bestiagts" }, { "lgm_dlc_executive1", "fmj" }, { "lgm_dlc_executive1", "pfister811" }, { "lgm_dlc_executive1", "prototipo" }, { "lgm_dlc_executive1", "reaper" }, { "lgm_dlc_executive1", "seven70" }, { "lgm_dlc_executive1", "windsor2" }, { "lgm_dlc_executive1", "xls_web_vehicle_regular_b" }, { "lgm_dlc_heist", "casco" }, { "lgm_dlc_heist", "lectro" }, { "lgm_dlc_importexport", "penetrator" }, { "lgm_dlc_importexport", "tempesta" }, { "lgm_dlc_lts_creator", "furore" }, { "lgm_dlc_luxe", "brawler" }, { "lgm_dlc_luxe", "chino" }, { "lgm_dlc_luxe", "coquette3" }, { "lgm_dlc_luxe", "feltzer3" }, { "lgm_dlc_luxe", "osiris" }, { "lgm_dlc_luxe", "t20" }, { "lgm_dlc_luxe", "vindicator" }, { "lgm_dlc_luxe", "virgo" }, { "lgm_dlc_luxe", "windsor_windsor_lgm_1_b" }, { "lgm_dlc_pilot", "coquette2" }, { "lgm_dlc_pilot", "coquette2_tless" }, { "lgm_dlc_specialraces", "gp1" }, { "lgm_dlc_specialraces", "infernus2" }, { "lgm_dlc_specialraces", "ruston" }, { "lgm_dlc_specialraces", "turismo2" }, { "lgm_dlc_stunt", "le7b_lms_le7b_livery_1_b" }, { "lgm_dlc_stunt", "lynx_lms_lynx_livery_2_b" }, { "lgm_dlc_stunt", "sheava_lms_sheava_livery_2_b" }, { "lgm_dlc_stunt", "tyrus_lms_tyrus_livery_1_b" }, { "lgm_dlc_valentines", "roosevelt" }, { "lgm_dlc_valentines2", "roosevelt2" }, { "lsc_default", "buccaneer2" }, { "lsc_default", "chino2" }, { "lsc_default", "faction2" }, { "lsc_default", "moonbeam2" }, { "lsc_default", "primo2" }, { "lsc_default", "voodoo" }, { "lsc_dlc_import_export", "comet3" }, { "lsc_dlc_import_export", "diablous2" }, { "lsc_dlc_import_export", "elegy" }, { "lsc_dlc_import_export", "fcr2" }, { "lsc_dlc_import_export", "italiagtb2" }, { "lsc_dlc_import_export", "nero2" }, { "lsc_dlc_import_export", "specter2" }, { "lsc_jan2016", "banshee2" }, { "lsc_jan2016", "sultan2" }, { "lsc_lowrider2", "faction3" }, { "lsc_lowrider2", "minivan2" }, { "lsc_lowrider2", "sabregt2" }, { "lsc_lowrider2", "slamvan3" }, { "lsc_lowrider2", "tornado5" }, { "lsc_lowrider2", "virgo2" }, { "sssa_default", "akuma" }, { "sssa_default", "baller2" }, { "sssa_default", "banshee" }, { "sssa_default", "bati" }, { "sssa_default", "bati2_sss_cerveza_b" }, { "sssa_default", "bfinject" }, { "sssa_default", "bifta" }, { "sssa_default", "bison" }, { "sssa_default", "blazer" }, { "sssa_default", "bodhi" }, { "sssa_default", "cavcade" }, { "sssa_default", "comet2" }, { "sssa_default", "dilettan" }, { "sssa_default", "double" }, { "sssa_default", "dune" }, { "sssa_default", "exemplar" }, { "sssa_default", "faggio" }, { "sssa_default", "felon" }, { "sssa_default", "felon2" }, { "sssa_default", "feltzer" }, { "sssa_default", "fugitive" }, { "sssa_default", "gauntlet" }, { "sssa_default", "hexer" }, { "sssa_default", "infernus" }, { "sssa_default", "issi2" }, { "sssa_default", "kalahari" }, { "sssa_default", "ninef" }, { "sssa_default", "oracle" }, { "sssa_default", "paradise_sss_logger_b" }, { "sssa_default", "pcj" }, { "sssa_default", "rebel" }, { "sssa_default", "rocoto" }, { "sssa_default", "ruffian" }, { "sssa_default", "sadler" }, { "sssa_default", "sanchez_sss_atomic_b" }, { "sssa_default", "sanchez2" }, { "sssa_default", "sandkin2" }, { "sssa_default", "sandking" }, { "sssa_default", "schwarze" }, { "sssa_default", "superd" }, { "sssa_default", "surano" }, { "sssa_default", "vacca" }, { "sssa_default", "vader" }, { "sssa_default", "vigero" }, { "sssa_default", "zion" }, { "sssa_default", "zion2" }, { "sssa_dlc_biker", "avarus" }, { "sssa_dlc_biker", "bagger" }, { "sssa_dlc_biker", "blazer4" }, { "sssa_dlc_biker", "chimera" }, { "sssa_dlc_biker", "daemon2" }, { "sssa_dlc_biker", "defiler" }, { "sssa_dlc_biker", "esskey" }, { "sssa_dlc_biker", "faggio3" }, { "sssa_dlc_biker", "faggion" }, { "sssa_dlc_biker", "manchez" }, { "sssa_dlc_biker", "nightblade" }, { "sssa_dlc_biker", "ratbike" }, { "sssa_dlc_biker", "sanctus" }, { "sssa_dlc_biker", "tornado6" }, { "sssa_dlc_biker", "vortex" }, { "sssa_dlc_biker", "woflsbane" }, { "sssa_dlc_biker", "youga2" }, { "sssa_dlc_biker", "zombiea" }, { "sssa_dlc_biker", "zombieb" }, { "sssa_dlc_business", "asea" }, { "sssa_dlc_business", "astrope" }, { "sssa_dlc_business", "bobcatxl" }, { "sssa_dlc_business", "cavcade2" }, { "sssa_dlc_business", "granger" }, { "sssa_dlc_business", "ingot" }, { "sssa_dlc_business", "intruder" }, { "sssa_dlc_business", "minivan" }, { "sssa_dlc_business", "premier" }, { "sssa_dlc_business", "radi" }, { "sssa_dlc_business", "rancherx" }, { "sssa_dlc_business", "stanier" }, { "sssa_dlc_business", "stratum" }, { "sssa_dlc_business", "washingt" }, { "sssa_dlc_business2", "dominato" }, { "sssa_dlc_business2", "f620" }, { "sssa_dlc_business2", "fusilade" }, { "sssa_dlc_business2", "penumbra" }, { "sssa_dlc_business2", "sentinel" }, { "sssa_dlc_business2", "sentinel_convertable" }, { "sssa_dlc_christmas_2", "jester2" }, { "sssa_dlc_christmas_2", "massacro2" }, { "sssa_dlc_christmas_2", "rloader2" }, { "sssa_dlc_christmas_2", "slamvan" }, { "sssa_dlc_christmas_3", "tampa" }, { "sssa_dlc_executive_1", "rumpo3" }, { "sssa_dlc_halloween", "btype2_sss_death_b" }, { "sssa_dlc_halloween", "lurcher_sss_hangman_b" }, { "sssa_dlc_heist", "blade" }, { "sssa_dlc_heist", "enduro" }, { "sssa_dlc_heist", "gburrito2" }, { "sssa_dlc_heist", "gresley" }, { "sssa_dlc_heist", "guardian" }, { "sssa_dlc_heist", "innovation" }, { "sssa_dlc_heist", "jackal" }, { "sssa_dlc_heist", "kuruma" }, { "sssa_dlc_heist", "kuruma2" }, { "sssa_dlc_heist", "landstalker" }, { "sssa_dlc_heist", "nemesis" }, { "sssa_dlc_heist", "oracle1" }, { "sssa_dlc_heist", "rumpo" }, { "sssa_dlc_heist", "schafter2" }, { "sssa_dlc_heist", "seminole" }, { "sssa_dlc_heist", "surge" }, { "sssa_dlc_hipster", "blade" }, { "sssa_dlc_hipster", "blazer3" }, { "sssa_dlc_hipster", "buffalo" }, { "sssa_dlc_hipster", "buffalo2" }, { "sssa_dlc_hipster", "glendale" }, { "sssa_dlc_hipster", "panto" }, { "sssa_dlc_hipster", "picador" }, { "sssa_dlc_hipster", "pigalle" }, { "sssa_dlc_hipster", "primo" }, { "sssa_dlc_hipster", "rebel2" }, { "sssa_dlc_hipster", "regina" }, { "sssa_dlc_hipster", "rhapsody" }, { "sssa_dlc_hipster", "surfer" }, { "sssa_dlc_hipster", "tailgater" }, { "sssa_dlc_hipster", "warrener" }, { "sssa_dlc_hipster", "youga" }, { "sssa_dlc_independence", "sovereign" }, { "sssa_dlc_lts_creator", "hakuchou" }, { "sssa_dlc_lts_creator", "innovation" }, { "sssa_dlc_lts_creator", "kalahari_topless" }, { "sssa_dlc_mp_to_sp", "blista2" }, { "sssa_dlc_mp_to_sp", "buffalo3" }, { "sssa_dlc_mp_to_sp", "dominator2" }, { "sssa_dlc_mp_to_sp", "dukes" }, { "sssa_dlc_mp_to_sp", "gauntlet2" }, { "sssa_dlc_mp_to_sp", "stalion2" }, { "sssa_dlc_mp_to_sp", "stallion" }, { "sssa_dlc_stunt", "bf400_sss_bf400_livery_1_b" }, { "sssa_dlc_stunt", "brioso_sss_brioso_livery_1_b" }, { "sssa_dlc_stunt", "cliffhanger_sss_cliffhanger_livery_1_b" }, { "sssa_dlc_stunt", "contender" }, { "sssa_dlc_stunt", "gargoyle_sss_gargoyle_livery_1_b" }, { "sssa_dlc_stunt", "omnis_sss_omnis_livery_1_b" }, { "sssa_dlc_stunt", "rallytruck_sss_dune_livery_1_b" }, { "sssa_dlc_stunt", "tampa2_sss_tampa2_livery_1_b" }, { "sssa_dlc_stunt", "trophy_sss_trophy_livery_1_b" }, { "sssa_dlc_stunt", "trophy2_sss_trophy2_livery_1_b" }, { "sssa_dlc_stunt", "tropos_sss_tropos_livery_1_b" }, { "sssa_dlc_valentines", "rloader" }, { "candc_gunrunning", "apc" }, { "candc_gunrunning", "ardent" }, { "candc_gunrunning", "dune3" }, { "candc_gunrunning", "halftrack" }, { "candc_gunrunning", "nightshark" }, { "candc_gunrunning", "oppressor" }, { "candc_gunrunning", "tampa3" }, { "candc_gunrunning", "trsmall2" }, { "lgm_dlc_gunrunning", "cheetah2" }, { "lgm_dlc_gunrunning", "torero" }, { "lgm_dlc_gunrunning", "vagner" }, { "lgm_dlc_gunrunning", "xa21" },}; Edited August 1, 2017 by TheMuggles Link to comment Share on other sites More sharing options...
alloc8or Posted August 1, 2017 Share Posted August 1, 2017 Why did you post that now? Your list isn't complete and also wrong (plus it is really bad C++). The correct way is by getting everything at run-time. Link to comment Share on other sites More sharing options...
TheMuggles Posted August 2, 2017 Share Posted August 2, 2017 Why did you post that now? Your list isn't complete and also wrong (plus it is really bad C++). The correct way is by getting everything at run-time. Sorry for contributing, I'll try to avoid it next time I have something that someone could find useful Link to comment Share on other sites More sharing options...
alloc8or Posted August 2, 2017 Share Posted August 2, 2017 Why did you post that now? Your list isn't complete and also wrong (plus it is really bad C++). The correct way is by getting everything at run-time. Sorry for contributing, I'll try to avoid it next time I have something that someone could find useful What I meant to say was didn't you see my first post (the list)? You could have combined them so the list would be complete.Didn't want to sound rude but that would help more than a list that randomly misses entries. Anyway, getting everything at run-time is the best way, I can post the code if anyone needs it. Link to comment Share on other sites More sharing options...
ikt Posted August 2, 2017 Share Posted August 2, 2017 Why did you post that now? Your list isn't complete and also wrong (plus it is really bad C++). The correct way is by getting everything at run-time. Sorry for contributing, I'll try to avoid it next time I have something that someone could find useful What I meant to say was didn't you see my first post (the list)? You could have combined them so the list would be complete.Didn't want to sound rude but that would help more than a list that randomly misses entries. Anyway, getting everything at run-time is the best way, I can post the code if anyone needs it. That'd be nice, I'd have no idea how to get that. Link to comment Share on other sites More sharing options...
alloc8or Posted August 2, 2017 Share Posted August 2, 2017 (edited) Alright, here's my code: // add these to rageclass grcTexture{public: void* VTable; // 0x0000 char _0x0008[0x20]; // 0x0008 char* name; // 0x0028 char _0x0030[0x14]; // 0x0030 uint32_t unk_0x0044; // 0x0044 char _0x0048[0x8]; // 0x0048 uint16_t resolutionX; // 0x0050 uint16_t resolutionY; // 0x0052 char _0x0054[0xC]; // 0x0054 grcTexture* previous; // 0x0060 grcTexture* next; // 0x0068 char _0x0070[0x20]; // 0x0070};class pgDictionary{public: char _0x0000[0x30]; // 0x0000 grcTexture** textures; // 0x0030 uint16_t textureCount; // 0x0038}; uint64_t g_fwTxdStore;uint32_t g_txdCollectionItemSize;void some_init_func(){ uint64_t patternAddr = Pattern::Scan("48 8D 0D ?? ?? ?? ?? E8 ?? ?? ?? ?? 8B 45 EC"); g_fwTxdStore = patternAddr + *(int*)(patternAddr + 3) + 7; patternAddr = Pattern::Scan("48 03 0D ?? ?? ?? ?? 48 85 D1 75 04 44 89 4D F0"); g_txdCollectionItemSize = *(uint32_t*)((patternAddr + *(int*)(patternAddr + 3) + 7) + 0x14);}std::vector<std::string> get_textures_from_txd(Hash txdHash){ std::vector<std::string> vecTextures; if (g_fwTxdStore && g_fwTxdStore != 7) { uint64_t txds = *(uint64_t*)(g_fwTxdStore + 0x70); if (txds) { uint16_t size = *(uint16_t*)(g_fwTxdStore + 0x82); for (uint16_t i = txdHash % (size - 1); i < size - 1; i++) { Hash hash = *(Hash*)(txds + i * 8); if (hash != txdHash) continue; uint16_t index = *(uint16_t*)(txds + i * 8 + 4); if (index == -1) break; uint64_t pgDictionaryCollection = *(uint64_t*)(g_fwTxdStore + 0x38); if (pgDictionaryCollection) { rage::pgDictionary* dictionary = *(rage::pgDictionary**)(pgDictionaryCollection + index * g_txdCollectionItemSize); if (dictionary) { rage::grcTexture** textures = dictionary->textures; if (textures) { uint16_t count = dictionary->textureCount; for (uint16_t j = 0; j < count; j++) { if (textures[j] == nullptr) continue; vecTextures.push_back(textures[j]->name); } } } } } } } return vecTextures;}Example output when looping through the website dictionaries: https://pastebin.com/0drY9mN9Make sure the dictionary is loaded into memory! Edited August 4, 2017 by Unknown_Modder uNiverselEgacy, ikt and NModds 3 Link to comment Share on other sites More sharing options...
RhafaelZoom Posted May 13, 2018 Share Posted May 13, 2018 static struct { LPCSTR vehiclePreviewDict; char* vehicleName;} VehiclePreviews[267] = { { "lgm_default", "adder" }, { "lgm_default", "banshee" }, { "lgm_default", "carboniz" }, { "lgm_default", "carbon" }, { "lgm_default", "cheetah" }, { "lgm_default", "cogcarbi" }, { "lgm_default", "comet2" }, { "lgm_default", "coquette" }, { "lgm_default", "elegy2" }, { "lgm_default", "entityxf" }, { "lgm_default", "exmplar" }, { "lgm_default", "feltzer" }, { "lgm_default", "hotknife" }, { "lgm_default", "infernus" }, { "lgm_default", "jb700" }, { "lgm_default", "khamel" }, { "lgm_default", "monroe" }, { "lgm_default", "ninef" }, { "lgm_default", "ninef2" }, { "lgm_default", "rapidgt" }, { "lgm_default", "rapidgt2" }, { "lgm_default", "stinger" }, { "lgm_default", "stingerg" }, { "lgm_default", "superd" }, { "lgm_default", "surano_convertable" }, { "lgm_default", "vacca" }, { "lgm_default", "voltic_tless" }, { "lgm_default", "ztype" }, { "lgm_dlc_apartments", "baller3_web_vehicle_regular_b" }, { "lgm_dlc_apartments", "baller4_web_vehicle_regular_b" }, { "lgm_dlc_apartments", "voltic_tless" }, { "lgm_dlc_apartments", "cog55_web_vehicle_regular_b" }, { "lgm_dlc_apartments", "cognosc_web_vehicle_regular_b" }, { "lgm_dlc_apartments", "mamba" }, { "lgm_dlc_apartments", "niteshad" }, { "lgm_dlc_apartments", "schafter3_web_vehicle_regular_b" }, { "lgm_dlc_apartments", "schafter4_web_vehicle_regular_b" }, { "lgm_dlc_apartments", "verlier" }, { "lgm_dlc_biker", "hakuchou2" }, { "lgm_dlc_biker", "raptor" }, { "lgm_dlc_biker", "shotaro" }, { "lgm_dlc_business", "alpha" }, { "lgm_dlc_business", "jester" }, { "lgm_dlc_business", "turismor" }, { "lgm_dlc_business2", "banshee_tless" }, { "lgm_dlc_business2", "coquette_tless" }, { "lgm_dlc_business2", "huntley" }, { "lgm_dlc_business2", "massacro" }, { "lgm_dlc_business2", "stinger_tless" }, { "lgm_dlc_business2", "thrust" }, { "lgm_dlc_business2", "voltic_htop" }, { "lgm_dlc_business2", "zentorno" }, { "lgm_dlc_executive1", "bestiagts" }, { "lgm_dlc_executive1", "fmj" }, { "lgm_dlc_executive1", "pfister811" }, { "lgm_dlc_executive1", "prototipo" }, { "lgm_dlc_executive1", "reaper" }, { "lgm_dlc_executive1", "seven70" }, { "lgm_dlc_executive1", "windsor2" }, { "lgm_dlc_executive1", "xls_web_vehicle_regular_b" }, { "lgm_dlc_heist", "casco" }, { "lgm_dlc_heist", "lectro" }, { "lgm_dlc_importexport", "penetrator" }, { "lgm_dlc_importexport", "tempesta" }, { "lgm_dlc_lts_creator", "furore" }, { "lgm_dlc_luxe", "brawler" }, { "lgm_dlc_luxe", "chino" }, { "lgm_dlc_luxe", "coquette3" }, { "lgm_dlc_luxe", "feltzer3" }, { "lgm_dlc_luxe", "osiris" }, { "lgm_dlc_luxe", "t20" }, { "lgm_dlc_luxe", "vindicator" }, { "lgm_dlc_luxe", "virgo" }, { "lgm_dlc_luxe", "windsor_windsor_lgm_1_b" }, { "lgm_dlc_pilot", "coquette2" }, { "lgm_dlc_pilot", "coquette2_tless" }, { "lgm_dlc_specialraces", "gp1" }, { "lgm_dlc_specialraces", "infernus2" }, { "lgm_dlc_specialraces", "ruston" }, { "lgm_dlc_specialraces", "turismo2" }, { "lgm_dlc_stunt", "le7b_lms_le7b_livery_1_b" }, { "lgm_dlc_stunt", "lynx_lms_lynx_livery_2_b" }, { "lgm_dlc_stunt", "sheava_lms_sheava_livery_2_b" }, { "lgm_dlc_stunt", "tyrus_lms_tyrus_livery_1_b" }, { "lgm_dlc_valentines", "roosevelt" }, { "lgm_dlc_valentines2", "roosevelt2" }, { "lsc_default", "buccaneer2" }, { "lsc_default", "chino2" }, { "lsc_default", "faction2" }, { "lsc_default", "moonbeam2" }, { "lsc_default", "primo2" }, { "lsc_default", "voodoo" }, { "lsc_dlc_import_export", "comet3" }, { "lsc_dlc_import_export", "diablous2" }, { "lsc_dlc_import_export", "elegy" }, { "lsc_dlc_import_export", "fcr2" }, { "lsc_dlc_import_export", "italiagtb2" }, { "lsc_dlc_import_export", "nero2" }, { "lsc_dlc_import_export", "specter2" }, { "lsc_jan2016", "banshee2" }, { "lsc_jan2016", "sultan2" }, { "lsc_lowrider2", "faction3" }, { "lsc_lowrider2", "minivan2" }, { "lsc_lowrider2", "sabregt2" }, { "lsc_lowrider2", "slamvan3" }, { "lsc_lowrider2", "tornado5" }, { "lsc_lowrider2", "virgo2" }, { "sssa_default", "akuma" }, { "sssa_default", "baller2" }, { "sssa_default", "banshee" }, { "sssa_default", "bati" }, { "sssa_default", "bati2_sss_cerveza_b" }, { "sssa_default", "bfinject" }, { "sssa_default", "bifta" }, { "sssa_default", "bison" }, { "sssa_default", "blazer" }, { "sssa_default", "bodhi" }, { "sssa_default", "cavcade" }, { "sssa_default", "comet2" }, { "sssa_default", "dilettan" }, { "sssa_default", "double" }, { "sssa_default", "dune" }, { "sssa_default", "exemplar" }, { "sssa_default", "faggio" }, { "sssa_default", "felon" }, { "sssa_default", "felon2" }, { "sssa_default", "feltzer" }, { "sssa_default", "fugitive" }, { "sssa_default", "gauntlet" }, { "sssa_default", "hexer" }, { "sssa_default", "infernus" }, { "sssa_default", "issi2" }, { "sssa_default", "kalahari" }, { "sssa_default", "ninef" }, { "sssa_default", "oracle" }, { "sssa_default", "paradise_sss_logger_b" }, { "sssa_default", "pcj" }, { "sssa_default", "rebel" }, { "sssa_default", "rocoto" }, { "sssa_default", "ruffian" }, { "sssa_default", "sadler" }, { "sssa_default", "sanchez_sss_atomic_b" }, { "sssa_default", "sanchez2" }, { "sssa_default", "sandkin2" }, { "sssa_default", "sandking" }, { "sssa_default", "schwarze" }, { "sssa_default", "superd" }, { "sssa_default", "surano" }, { "sssa_default", "vacca" }, { "sssa_default", "vader" }, { "sssa_default", "vigero" }, { "sssa_default", "zion" }, { "sssa_default", "zion2" }, { "sssa_dlc_biker", "avarus" }, { "sssa_dlc_biker", "bagger" }, { "sssa_dlc_biker", "blazer4" }, { "sssa_dlc_biker", "chimera" }, { "sssa_dlc_biker", "daemon2" }, { "sssa_dlc_biker", "defiler" }, { "sssa_dlc_biker", "esskey" }, { "sssa_dlc_biker", "faggio3" }, { "sssa_dlc_biker", "faggion" }, { "sssa_dlc_biker", "manchez" }, { "sssa_dlc_biker", "nightblade" }, { "sssa_dlc_biker", "ratbike" }, { "sssa_dlc_biker", "sanctus" }, { "sssa_dlc_biker", "tornado6" }, { "sssa_dlc_biker", "vortex" }, { "sssa_dlc_biker", "woflsbane" }, { "sssa_dlc_biker", "youga2" }, { "sssa_dlc_biker", "zombiea" }, { "sssa_dlc_biker", "zombieb" }, { "sssa_dlc_business", "asea" }, { "sssa_dlc_business", "astrope" }, { "sssa_dlc_business", "bobcatxl" }, { "sssa_dlc_business", "cavcade2" }, { "sssa_dlc_business", "granger" }, { "sssa_dlc_business", "ingot" }, { "sssa_dlc_business", "intruder" }, { "sssa_dlc_business", "minivan" }, { "sssa_dlc_business", "premier" }, { "sssa_dlc_business", "radi" }, { "sssa_dlc_business", "rancherx" }, { "sssa_dlc_business", "stanier" }, { "sssa_dlc_business", "stratum" }, { "sssa_dlc_business", "washingt" }, { "sssa_dlc_business2", "dominato" }, { "sssa_dlc_business2", "f620" }, { "sssa_dlc_business2", "fusilade" }, { "sssa_dlc_business2", "penumbra" }, { "sssa_dlc_business2", "sentinel" }, { "sssa_dlc_business2", "sentinel_convertable" }, { "sssa_dlc_christmas_2", "jester2" }, { "sssa_dlc_christmas_2", "massacro2" }, { "sssa_dlc_christmas_2", "rloader2" }, { "sssa_dlc_christmas_2", "slamvan" }, { "sssa_dlc_christmas_3", "tampa" }, { "sssa_dlc_executive_1", "rumpo3" }, { "sssa_dlc_halloween", "btype2_sss_death_b" }, { "sssa_dlc_halloween", "lurcher_sss_hangman_b" }, { "sssa_dlc_heist", "blade" }, { "sssa_dlc_heist", "enduro" }, { "sssa_dlc_heist", "gburrito2" }, { "sssa_dlc_heist", "gresley" }, { "sssa_dlc_heist", "guardian" }, { "sssa_dlc_heist", "innovation" }, { "sssa_dlc_heist", "jackal" }, { "sssa_dlc_heist", "kuruma" }, { "sssa_dlc_heist", "kuruma2" }, { "sssa_dlc_heist", "landstalker" }, { "sssa_dlc_heist", "nemesis" }, { "sssa_dlc_heist", "oracle1" }, { "sssa_dlc_heist", "rumpo" }, { "sssa_dlc_heist", "schafter2" }, { "sssa_dlc_heist", "seminole" }, { "sssa_dlc_heist", "surge" }, { "sssa_dlc_hipster", "blade" }, { "sssa_dlc_hipster", "blazer3" }, { "sssa_dlc_hipster", "buffalo" }, { "sssa_dlc_hipster", "buffalo2" }, { "sssa_dlc_hipster", "glendale" }, { "sssa_dlc_hipster", "panto" }, { "sssa_dlc_hipster", "picador" }, { "sssa_dlc_hipster", "pigalle" }, { "sssa_dlc_hipster", "primo" }, { "sssa_dlc_hipster", "rebel2" }, { "sssa_dlc_hipster", "regina" }, { "sssa_dlc_hipster", "rhapsody" }, { "sssa_dlc_hipster", "surfer" }, { "sssa_dlc_hipster", "tailgater" }, { "sssa_dlc_hipster", "warrener" }, { "sssa_dlc_hipster", "youga" }, { "sssa_dlc_independence", "sovereign" }, { "sssa_dlc_lts_creator", "hakuchou" }, { "sssa_dlc_lts_creator", "innovation" }, { "sssa_dlc_lts_creator", "kalahari_topless" }, { "sssa_dlc_mp_to_sp", "blista2" }, { "sssa_dlc_mp_to_sp", "buffalo3" }, { "sssa_dlc_mp_to_sp", "dominator2" }, { "sssa_dlc_mp_to_sp", "dukes" }, { "sssa_dlc_mp_to_sp", "gauntlet2" }, { "sssa_dlc_mp_to_sp", "stalion2" }, { "sssa_dlc_mp_to_sp", "stallion" }, { "sssa_dlc_stunt", "bf400_sss_bf400_livery_1_b" }, { "sssa_dlc_stunt", "brioso_sss_brioso_livery_1_b" }, { "sssa_dlc_stunt", "cliffhanger_sss_cliffhanger_livery_1_b" }, { "sssa_dlc_stunt", "contender" }, { "sssa_dlc_stunt", "gargoyle_sss_gargoyle_livery_1_b" }, { "sssa_dlc_stunt", "omnis_sss_omnis_livery_1_b" }, { "sssa_dlc_stunt", "rallytruck_sss_dune_livery_1_b" }, { "sssa_dlc_stunt", "tampa2_sss_tampa2_livery_1_b" }, { "sssa_dlc_stunt", "trophy_sss_trophy_livery_1_b" }, { "sssa_dlc_stunt", "trophy2_sss_trophy2_livery_1_b" }, { "sssa_dlc_stunt", "tropos_sss_tropos_livery_1_b" }, { "sssa_dlc_valentines", "rloader" }, { "candc_gunrunning", "apc" }, { "candc_gunrunning", "ardent" }, { "candc_gunrunning", "dune3" }, { "candc_gunrunning", "halftrack" }, { "candc_gunrunning", "nightshark" }, { "candc_gunrunning", "oppressor" }, { "candc_gunrunning", "tampa3" }, { "candc_gunrunning", "trsmall2" }, { "lgm_dlc_gunrunning", "cheetah2" }, { "lgm_dlc_gunrunning", "torero" }, { "lgm_dlc_gunrunning", "vagner" }, { "lgm_dlc_gunrunning", "xa21" },}; how do i use this code in ps3 sprx? Link to comment Share on other sites More sharing options...
uNiverselEgacy Posted May 22, 2018 Share Posted May 22, 2018 Alright, here's my code: // add these to rageclass grcTexture{public: void* VTable; // 0x0000 char _0x0008[0x20]; // 0x0008 char* name; // 0x0028 char _0x0030[0x14]; // 0x0030 uint32_t unk_0x0044; // 0x0044 char _0x0048[0x8]; // 0x0048 uint16_t resolutionX; // 0x0050 uint16_t resolutionY; // 0x0052 char _0x0054[0xC]; // 0x0054 grcTexture* previous; // 0x0060 grcTexture* next; // 0x0068 char _0x0070[0x20]; // 0x0070};class pgDictionary{public: char _0x0000[0x30]; // 0x0000 grcTexture** textures; // 0x0030 uint16_t textureCount; // 0x0038}; uint64_t g_fwTxdStore;uint32_t g_txdCollectionItemSize;void some_init_func(){ uint64_t patternAddr = Pattern::Scan("48 8D 0D ?? ?? ?? ?? E8 ?? ?? ?? ?? 8B 45 EC"); g_fwTxdStore = patternAddr + *(int*)(patternAddr + 3) + 7; patternAddr = Pattern::Scan("48 03 0D ?? ?? ?? ?? 48 85 D1 75 04 44 89 4D F0"); g_txdCollectionItemSize = *(uint32_t*)((patternAddr + *(int*)(patternAddr + 3) + 7) + 0x14);}std::vector<std::string> get_textures_from_txd(Hash txdHash){ std::vector<std::string> vecTextures; if (g_fwTxdStore && g_fwTxdStore != 7) { uint64_t txds = *(uint64_t*)(g_fwTxdStore + 0x70); if (txds) { uint16_t size = *(uint16_t*)(g_fwTxdStore + 0x82); for (uint16_t i = txdHash % (size - 1); i < size - 1; i++) { Hash hash = *(Hash*)(txds + i * 8); if (hash != txdHash) continue; uint16_t index = *(uint16_t*)(txds + i * 8 + 4); if (index == -1) break; uint64_t pgDictionaryCollection = *(uint64_t*)(g_fwTxdStore + 0x38); if (pgDictionaryCollection) { rage::pgDictionary* dictionary = *(rage::pgDictionary**)(pgDictionaryCollection + index * g_txdCollectionItemSize); if (dictionary) { rage::grcTexture** textures = dictionary->textures; if (textures) { uint16_t count = dictionary->textureCount; for (uint16_t j = 0; j < count; j++) { if (textures[j] == nullptr) continue; vecTextures.push_back(textures[j]->name); } } } } } } } return vecTextures;}Example output when looping through the website dictionaries: https://pastebin.com/0drY9mN9Make sure the dictionary is loaded into memory! It seems that they've changed it in 1.43. Now the "hashmap internal index" is four bytes long instead of two if I understand it correctly. Should be a fairly simple modification though. I was wondering if there's a way to also find out all the dictionaries so I don't have to hard code it and make changes to it when a new dlc comes out. Link to comment Share on other sites More sharing options...
CrAzY_-7865 Posted June 1, 2018 Share Posted June 1, 2018 On 5/13/2018 at 7:13 PM, RhafaelZoom said: On 8/1/2017 at 10:11 PM, TheMuggles said: static struct { LPCSTR vehiclePreviewDict; char* vehicleName;} VehiclePreviews[267] = { { "lgm_default", "adder" }, { "lgm_default", "banshee" }, { "lgm_default", "carboniz" }, { "lgm_default", "carbon" }, { "lgm_default", "cheetah" }, { "lgm_default", "cogcarbi" }, { "lgm_default", "comet2" }, { "lgm_default", "coquette" }, { "lgm_default", "elegy2" }, { "lgm_default", "entityxf" }, { "lgm_default", "exmplar" }, { "lgm_default", "feltzer" }, { "lgm_default", "hotknife" }, { "lgm_default", "infernus" }, { "lgm_default", "jb700" }, { "lgm_default", "khamel" }, { "lgm_default", "monroe" }, { "lgm_default", "ninef" }, { "lgm_default", "ninef2" }, { "lgm_default", "rapidgt" }, { "lgm_default", "rapidgt2" }, { "lgm_default", "stinger" }, { "lgm_default", "stingerg" }, { "lgm_default", "superd" }, { "lgm_default", "surano_convertable" }, { "lgm_default", "vacca" }, { "lgm_default", "voltic_tless" }, { "lgm_default", "ztype" }, { "lgm_dlc_apartments", "baller3_web_vehicle_regular_b" }, { "lgm_dlc_apartments", "baller4_web_vehicle_regular_b" }, { "lgm_dlc_apartments", "voltic_tless" }, { "lgm_dlc_apartments", "cog55_web_vehicle_regular_b" }, { "lgm_dlc_apartments", "cognosc_web_vehicle_regular_b" }, { "lgm_dlc_apartments", "mamba" }, { "lgm_dlc_apartments", "niteshad" }, { "lgm_dlc_apartments", "schafter3_web_vehicle_regular_b" }, { "lgm_dlc_apartments", "schafter4_web_vehicle_regular_b" }, { "lgm_dlc_apartments", "verlier" }, { "lgm_dlc_biker", "hakuchou2" }, { "lgm_dlc_biker", "raptor" }, { "lgm_dlc_biker", "shotaro" }, { "lgm_dlc_business", "alpha" }, { "lgm_dlc_business", "jester" }, { "lgm_dlc_business", "turismor" }, { "lgm_dlc_business2", "banshee_tless" }, { "lgm_dlc_business2", "coquette_tless" }, { "lgm_dlc_business2", "huntley" }, { "lgm_dlc_business2", "massacro" }, { "lgm_dlc_business2", "stinger_tless" }, { "lgm_dlc_business2", "thrust" }, { "lgm_dlc_business2", "voltic_htop" }, { "lgm_dlc_business2", "zentorno" }, { "lgm_dlc_executive1", "bestiagts" }, { "lgm_dlc_executive1", "fmj" }, { "lgm_dlc_executive1", "pfister811" }, { "lgm_dlc_executive1", "prototipo" }, { "lgm_dlc_executive1", "reaper" }, { "lgm_dlc_executive1", "seven70" }, { "lgm_dlc_executive1", "windsor2" }, { "lgm_dlc_executive1", "xls_web_vehicle_regular_b" }, { "lgm_dlc_heist", "casco" }, { "lgm_dlc_heist", "lectro" }, { "lgm_dlc_importexport", "penetrator" }, { "lgm_dlc_importexport", "tempesta" }, { "lgm_dlc_lts_creator", "furore" }, { "lgm_dlc_luxe", "brawler" }, { "lgm_dlc_luxe", "chino" }, { "lgm_dlc_luxe", "coquette3" }, { "lgm_dlc_luxe", "feltzer3" }, { "lgm_dlc_luxe", "osiris" }, { "lgm_dlc_luxe", "t20" }, { "lgm_dlc_luxe", "vindicator" }, { "lgm_dlc_luxe", "virgo" }, { "lgm_dlc_luxe", "windsor_windsor_lgm_1_b" }, { "lgm_dlc_pilot", "coquette2" }, { "lgm_dlc_pilot", "coquette2_tless" }, { "lgm_dlc_specialraces", "gp1" }, { "lgm_dlc_specialraces", "infernus2" }, { "lgm_dlc_specialraces", "ruston" }, { "lgm_dlc_specialraces", "turismo2" }, { "lgm_dlc_stunt", "le7b_lms_le7b_livery_1_b" }, { "lgm_dlc_stunt", "lynx_lms_lynx_livery_2_b" }, { "lgm_dlc_stunt", "sheava_lms_sheava_livery_2_b" }, { "lgm_dlc_stunt", "tyrus_lms_tyrus_livery_1_b" }, { "lgm_dlc_valentines", "roosevelt" }, { "lgm_dlc_valentines2", "roosevelt2" }, { "lsc_default", "buccaneer2" }, { "lsc_default", "chino2" }, { "lsc_default", "faction2" }, { "lsc_default", "moonbeam2" }, { "lsc_default", "primo2" }, { "lsc_default", "voodoo" }, { "lsc_dlc_import_export", "comet3" }, { "lsc_dlc_import_export", "diablous2" }, { "lsc_dlc_import_export", "elegy" }, { "lsc_dlc_import_export", "fcr2" }, { "lsc_dlc_import_export", "italiagtb2" }, { "lsc_dlc_import_export", "nero2" }, { "lsc_dlc_import_export", "specter2" }, { "lsc_jan2016", "banshee2" }, { "lsc_jan2016", "sultan2" }, { "lsc_lowrider2", "faction3" }, { "lsc_lowrider2", "minivan2" }, { "lsc_lowrider2", "sabregt2" }, { "lsc_lowrider2", "slamvan3" }, { "lsc_lowrider2", "tornado5" }, { "lsc_lowrider2", "virgo2" }, { "sssa_default", "akuma" }, { "sssa_default", "baller2" }, { "sssa_default", "banshee" }, { "sssa_default", "bati" }, { "sssa_default", "bati2_sss_cerveza_b" }, { "sssa_default", "bfinject" }, { "sssa_default", "bifta" }, { "sssa_default", "bison" }, { "sssa_default", "blazer" }, { "sssa_default", "bodhi" }, { "sssa_default", "cavcade" }, { "sssa_default", "comet2" }, { "sssa_default", "dilettan" }, { "sssa_default", "double" }, { "sssa_default", "dune" }, { "sssa_default", "exemplar" }, { "sssa_default", "faggio" }, { "sssa_default", "felon" }, { "sssa_default", "felon2" }, { "sssa_default", "feltzer" }, { "sssa_default", "fugitive" }, { "sssa_default", "gauntlet" }, { "sssa_default", "hexer" }, { "sssa_default", "infernus" }, { "sssa_default", "issi2" }, { "sssa_default", "kalahari" }, { "sssa_default", "ninef" }, { "sssa_default", "oracle" }, { "sssa_default", "paradise_sss_logger_b" }, { "sssa_default", "pcj" }, { "sssa_default", "rebel" }, { "sssa_default", "rocoto" }, { "sssa_default", "ruffian" }, { "sssa_default", "sadler" }, { "sssa_default", "sanchez_sss_atomic_b" }, { "sssa_default", "sanchez2" }, { "sssa_default", "sandkin2" }, { "sssa_default", "sandking" }, { "sssa_default", "schwarze" }, { "sssa_default", "superd" }, { "sssa_default", "surano" }, { "sssa_default", "vacca" }, { "sssa_default", "vader" }, { "sssa_default", "vigero" }, { "sssa_default", "zion" }, { "sssa_default", "zion2" }, { "sssa_dlc_biker", "avarus" }, { "sssa_dlc_biker", "bagger" }, { "sssa_dlc_biker", "blazer4" }, { "sssa_dlc_biker", "chimera" }, { "sssa_dlc_biker", "daemon2" }, { "sssa_dlc_biker", "defiler" }, { "sssa_dlc_biker", "esskey" }, { "sssa_dlc_biker", "faggio3" }, { "sssa_dlc_biker", "faggion" }, { "sssa_dlc_biker", "manchez" }, { "sssa_dlc_biker", "nightblade" }, { "sssa_dlc_biker", "ratbike" }, { "sssa_dlc_biker", "sanctus" }, { "sssa_dlc_biker", "tornado6" }, { "sssa_dlc_biker", "vortex" }, { "sssa_dlc_biker", "woflsbane" }, { "sssa_dlc_biker", "youga2" }, { "sssa_dlc_biker", "zombiea" }, { "sssa_dlc_biker", "zombieb" }, { "sssa_dlc_business", "asea" }, { "sssa_dlc_business", "astrope" }, { "sssa_dlc_business", "bobcatxl" }, { "sssa_dlc_business", "cavcade2" }, { "sssa_dlc_business", "granger" }, { "sssa_dlc_business", "ingot" }, { "sssa_dlc_business", "intruder" }, { "sssa_dlc_business", "minivan" }, { "sssa_dlc_business", "premier" }, { "sssa_dlc_business", "radi" }, { "sssa_dlc_business", "rancherx" }, { "sssa_dlc_business", "stanier" }, { "sssa_dlc_business", "stratum" }, { "sssa_dlc_business", "washingt" }, { "sssa_dlc_business2", "dominato" }, { "sssa_dlc_business2", "f620" }, { "sssa_dlc_business2", "fusilade" }, { "sssa_dlc_business2", "penumbra" }, { "sssa_dlc_business2", "sentinel" }, { "sssa_dlc_business2", "sentinel_convertable" }, { "sssa_dlc_christmas_2", "jester2" }, { "sssa_dlc_christmas_2", "massacro2" }, { "sssa_dlc_christmas_2", "rloader2" }, { "sssa_dlc_christmas_2", "slamvan" }, { "sssa_dlc_christmas_3", "tampa" }, { "sssa_dlc_executive_1", "rumpo3" }, { "sssa_dlc_halloween", "btype2_sss_death_b" }, { "sssa_dlc_halloween", "lurcher_sss_hangman_b" }, { "sssa_dlc_heist", "blade" }, { "sssa_dlc_heist", "enduro" }, { "sssa_dlc_heist", "gburrito2" }, { "sssa_dlc_heist", "gresley" }, { "sssa_dlc_heist", "guardian" }, { "sssa_dlc_heist", "innovation" }, { "sssa_dlc_heist", "jackal" }, { "sssa_dlc_heist", "kuruma" }, { "sssa_dlc_heist", "kuruma2" }, { "sssa_dlc_heist", "landstalker" }, { "sssa_dlc_heist", "nemesis" }, { "sssa_dlc_heist", "oracle1" }, { "sssa_dlc_heist", "rumpo" }, { "sssa_dlc_heist", "schafter2" }, { "sssa_dlc_heist", "seminole" }, { "sssa_dlc_heist", "surge" }, { "sssa_dlc_hipster", "blade" }, { "sssa_dlc_hipster", "blazer3" }, { "sssa_dlc_hipster", "buffalo" }, { "sssa_dlc_hipster", "buffalo2" }, { "sssa_dlc_hipster", "glendale" }, { "sssa_dlc_hipster", "panto" }, { "sssa_dlc_hipster", "picador" }, { "sssa_dlc_hipster", "pigalle" }, { "sssa_dlc_hipster", "primo" }, { "sssa_dlc_hipster", "rebel2" }, { "sssa_dlc_hipster", "regina" }, { "sssa_dlc_hipster", "rhapsody" }, { "sssa_dlc_hipster", "surfer" }, { "sssa_dlc_hipster", "tailgater" }, { "sssa_dlc_hipster", "warrener" }, { "sssa_dlc_hipster", "youga" }, { "sssa_dlc_independence", "sovereign" }, { "sssa_dlc_lts_creator", "hakuchou" }, { "sssa_dlc_lts_creator", "innovation" }, { "sssa_dlc_lts_creator", "kalahari_topless" }, { "sssa_dlc_mp_to_sp", "blista2" }, { "sssa_dlc_mp_to_sp", "buffalo3" }, { "sssa_dlc_mp_to_sp", "dominator2" }, { "sssa_dlc_mp_to_sp", "dukes" }, { "sssa_dlc_mp_to_sp", "gauntlet2" }, { "sssa_dlc_mp_to_sp", "stalion2" }, { "sssa_dlc_mp_to_sp", "stallion" }, { "sssa_dlc_stunt", "bf400_sss_bf400_livery_1_b" }, { "sssa_dlc_stunt", "brioso_sss_brioso_livery_1_b" }, { "sssa_dlc_stunt", "cliffhanger_sss_cliffhanger_livery_1_b" }, { "sssa_dlc_stunt", "contender" }, { "sssa_dlc_stunt", "gargoyle_sss_gargoyle_livery_1_b" }, { "sssa_dlc_stunt", "omnis_sss_omnis_livery_1_b" }, { "sssa_dlc_stunt", "rallytruck_sss_dune_livery_1_b" }, { "sssa_dlc_stunt", "tampa2_sss_tampa2_livery_1_b" }, { "sssa_dlc_stunt", "trophy_sss_trophy_livery_1_b" }, { "sssa_dlc_stunt", "trophy2_sss_trophy2_livery_1_b" }, { "sssa_dlc_stunt", "tropos_sss_tropos_livery_1_b" }, { "sssa_dlc_valentines", "rloader" }, { "candc_gunrunning", "apc" }, { "candc_gunrunning", "ardent" }, { "candc_gunrunning", "dune3" }, { "candc_gunrunning", "halftrack" }, { "candc_gunrunning", "nightshark" }, { "candc_gunrunning", "oppressor" }, { "candc_gunrunning", "tampa3" }, { "candc_gunrunning", "trsmall2" }, { "lgm_dlc_gunrunning", "cheetah2" }, { "lgm_dlc_gunrunning", "torero" }, { "lgm_dlc_gunrunning", "vagner" }, { "lgm_dlc_gunrunning", "xa21" },}; how do i use this code in ps3 sprx? Easy. Need call: GRAPHICS::DRAW_SPRITE(vehiclePreviewDict, vehicleName, 0.80, 0.80, 0.30, 0.50, 0.50, 255, 255, 255, 155); //for spawn this preview when scrolling vehicle section: void Spawn_Vehicle(char* Option, char* Name_Vehicle, bool Show_Preview){ if (currentOption == optionCount){ if (Show_Preview){ GRAPHICS::DRAW_SPRITE(vehiclePreviewDict, Name_Vehicle, 0.80, 0.80, 0.30, 0.50, 0.50, 255, 255, 255, 155); } } } this is just an example to get a clear idea. RhafaelZoom 1 Link to comment Share on other sites More sharing options...
RhafaelZoom Posted June 16, 2018 Share Posted June 16, 2018 On 6/1/2018 at 6:57 PM, CrAzY_-7865 said: Easy. Need call: GRAPHICS::DRAW_SPRITE(vehiclePreviewDict, vehicleName, 0.80, 0.80, 0.30, 0.50, 0.50, 255, 255, 255, 155); //for spawn this preview when scrolling vehicle section: void Spawn_Vehicle(char* Option, char* Name_Vehicle, bool Show_Preview){ if (currentOption == optionCount){ if (Show_Preview){ GRAPHICS::DRAW_SPRITE(vehiclePreviewDict, Name_Vehicle, 0.80, 0.80, 0.30, 0.50, 0.50, 255, 255, 255, 155); } } } this is just an example to get a clear idea. Thank you, you gave me the idea ;) CrAzY_-7865 1 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