Advertisement
xXNiKkI_DownXx

Trigger Events

Jun 22nd, 2017 (edited)
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. union ScriptArg {unsigned int ui;float f;int i; char *str;};
  2. namespace SCRIPT {
  3.     static void TRIGGER_SCRIPT_EVENT(int always1, ScriptArg *argsStruct, int argsStructCount, int playerbitset) { invoke<Void>(0x54763B35, always1, argsStruct, argsStructCount, playerbitset); } // 0x54763B35
  4. };
  5. namespace PlayerMods {
  6. namespace eventCreator {
  7. void callScriptEvent(ScriptArg *args,int argsCount,unsigned int playerBits) {
  8.     SCRIPT::TRIGGER_SCRIPT_EVENT(1,args,argsCount,playerBits);
  9. }
  10. };
  11. };
  12.  
  13. void kickPlayerNonHost(int player) {
  14.     //0x00D003DFB4+10*0x4 = args
  15.     unsigned int playerBit = (1<<player);
  16.     //0x2 0x7 0x35     and 0xA was me so idk...
  17.     ScriptArg args[3] = {0x2,player,0x35};//0x35 is the speccial one I guess
  18.  
  19.     //first arg is always 1
  20.     //last arg is always the bit thing
  21.     //second arg meh
  22.     //third arg is the size of the data
  23.     SCRIPT::TRIGGER_SCRIPT_EVENT(1,args,3,playerBit);
  24. }
  25.  
  26.  
  27.  
  28. opd_s _0x012C8D60_t = {0x0012C8D60,TOC};
  29. unsigned int (*_0x0012C8D60)(unsigned int r3, unsigned int senderData, unsigned int recieverData, unsigned int r6, unsigned int r7, unsigned int r8, unsigned int r9) = (unsigned int(*)(unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int))&_0x012C8D60_t;
  30.  
  31. //bool jobProtection = true;
  32. bool moneyProtection = true;
  33. bool teleportProtectionEnabled = true;
  34. char scriptEventDialogText[100];
  35. unsigned int scriptEventDetour(unsigned int r3, unsigned int senderData, unsigned int recieverData, unsigned int r6, unsigned int r7, unsigned int r8, unsigned int r9) {
  36.     int addressOfArgs = r3+10*0x4;
  37.     char *senderName = (char*)(*(int*)(senderData+0x78)+0x10);
  38.     //if (*(int*)addressOfArgs == 166) {
  39.         //this is the one I want to research cuz of func_6272("CnCTG_IN_BF", 2147483647, 1);
  40.         //snprintf$(scriptEventDialogText,sizeof(scriptEventDialogText),"%s tried to kick you!",senderName);
  41.         //printf("0x%X 0x%X 0x%X 0x%X 0x%X 0x%X 0x%X 0x%X 0x%X 0x%X 0x%X 0x%X 0x%X 0x%X 0x%X 0x%X 0x%X 0x%X 0x%X 0x%X 0x%X 0x%X (next is 1337) 0x%X\n",*(int*)(addressOfArgs+0x4*0),*(int*)(addressOfArgs+0x4*1),*(int*)(addressOfArgs+0x4*2),*(int*)(addressOfArgs+0x4*3),*(int*)(addressOfArgs+0x4*4),*(int*)(addressOfArgs+0x4*5),*(int*)(addressOfArgs+0x4*6),*(int*)(addressOfArgs+0x4*7),*(int*)(addressOfArgs+0x4*8),*(int*)(addressOfArgs+0x4*9),*(int*)(addressOfArgs+0x4*10),*(int*)(addressOfArgs+0x4*11),*(int*)(addressOfArgs+0x4*12),*(int*)(addressOfArgs+0x4*13),*(int*)(addressOfArgs+0x4*14),*(int*)(addressOfArgs+0x4*15),*(int*)(addressOfArgs+0x4*16),*(int*)(addressOfArgs+0x4*17),*(int*)(addressOfArgs+0x4*18),*(int*)(addressOfArgs+0x4*19),*(int*)(addressOfArgs+0x4*20),*(int*)(addressOfArgs+0x4*21),*(int*)(addressOfArgs+0x4*22),1337);
  42.         //return 0;
  43.         //*(int*)addressOfArgs = 0;
  44.     //}
  45.     if (*(int*)addressOfArgs == 0x2/* && *(int*)(addressOfArgs+0x4) == PLAYER::PLAYER_ID()*/ && *(int*)(addressOfArgs+0x8) == 0x35) {
  46.         //this is kick player
  47.         snprintf$(scriptEventDialogText,sizeof(scriptEventDialogText),"%s tried to kick you!",senderName);
  48.         print2(scriptEventDialogText,5000);
  49.         //return 0;
  50.         *(int*)addressOfArgs = 0;
  51.     }
  52.     if (*(int*)addressOfArgs == 0x2/* && *(int*)(addressOfArgs+0x4) == PLAYER::PLAYER_ID()*/ && *(int*)(addressOfArgs+0x8) == 0x34) {
  53.         //this is fake leave
  54.         snprintf$(scriptEventDialogText,sizeof(scriptEventDialogText),"%s tried to make you fake leave!",senderName);
  55.         print2(scriptEventDialogText,5000);
  56.         //return 0;
  57.         *(int*)addressOfArgs = 0;
  58.     }
  59.     if (*(int*)addressOfArgs == 0x2/* && *(int*)(addressOfArgs+0x4) == PLAYER::PLAYER_ID()*/ && *(int*)(addressOfArgs+0x8) == 0x2e) {
  60.         //this is fake leave
  61.         snprintf$(scriptEventDialogText,sizeof(scriptEventDialogText),"%s tried to reset your view!",senderName);
  62.         print2(scriptEventDialogText,5000);
  63.         //return 0;
  64.         *(int*)addressOfArgs = 0;
  65.     }
  66.     if (*(int*)addressOfArgs == 0xD8) {
  67.         //this is give rp
  68.         snprintf$(scriptEventDialogText,sizeof(scriptEventDialogText),"%s tried to give you %i rp!",senderName,*(int*)(addressOfArgs+0x8));
  69.         print2(scriptEventDialogText,5000);
  70.         //*(int*)(addressOfArgs+0x8) = 0;//rp amount
  71.         *(int*)addressOfArgs = 0;
  72.         //return 0;
  73.     }
  74.     /*if (*(int*)addressOfArgs == 0x9A) {
  75.         //this is job circle
  76.         if (jobProtection) {
  77.             snprintf$(scriptEventDialogText,sizeof(scriptEventDialogText),"%s tried to make you go into a job with job protection enabled! This may be a false alarm.",senderName);
  78.             print2(scriptEventDialogText,5000);
  79.             //try doing *(int*)addressOfArgs = 0 instead
  80.             //return 0;
  81.             *(int*)addressOfArgs = 0;
  82.         }
  83.     }*/
  84.     //not needed anymore because bypassed
  85.     if (*(int*)addressOfArgs == 0xDA) {
  86.         //this is money
  87.         if (moneyProtection) {
  88.             //Write_Global(262145+4812,0);//set the amount to zero instead of returning
  89.             snprintf$(scriptEventDialogText,sizeof(scriptEventDialogText),"%s tried to give you money with money protection enabled!",senderName);
  90.             print2(scriptEventDialogText,2000);
  91.             //return 0;
  92.             *(int*)addressOfArgs = 0;
  93.         } else {
  94.             //Write_Global(262145+4812,20000);
  95.         }
  96.     }
  97.     if (*(int*)addressOfArgs == 0x16C) {
  98.         //this is apartment
  99.         snprintf$(scriptEventDialogText,sizeof(scriptEventDialogText),"%s tried to force you into their apartment!",senderName);
  100.         print2(scriptEventDialogText,5000);
  101.         //return 0;
  102.         *(int*)addressOfArgs = 0;
  103.     }
  104.     if (*(int*)addressOfArgs == 0x3) {
  105.         if (*(int*)(addressOfArgs+0x8) == 0x37 || *(int*)(addressOfArgs+0x8) == 0x36 || *(int*)(addressOfArgs+0x8) == 0x35) {
  106.             //this is job
  107.             snprintf$(scriptEventDialogText,sizeof(scriptEventDialogText),"%s tried to force you to join a job!",senderName);
  108.             print2(scriptEventDialogText,5000);
  109.             //return 0;
  110.             *(int*)addressOfArgs = 0;
  111.         }
  112.     }
  113.     return _0x0012C8D60(r3,senderData,recieverData,r6,r7,r8,r9);
  114. }
  115. void setupScriptEventDetour() {//call this on game start to set it up
  116.     *(int*)(0x1C6BD80) = *(int*)( /*this returns the opd struct address Function*/(int)&scriptEventDetour );//same
  117.     *(int*)((0x1C6BD80+0x4)) = *(int*)( /*this returns the opd struct address TOC*/(int)&scriptEventDetour+0x4 );
  118. }
  119. void resetPlayerView(int player) {
  120.     ScriptArg args[3];
  121.     args[0].i = 0x2;
  122.     args[1].i = player;
  123.     args[2].i = 0x2e;//46
  124.     unsigned int bits = (1<<player);
  125.     PlayerMods::eventCreator::callScriptEvent(args,3,bits);
  126. }
  127.  
  128. bool resetViewBoolLoop[18];
  129. void resetPlayerViewLoop() {
  130.     for (int i = 0; i < 16; i++)
  131.         if (resetViewBoolLoop[i])
  132.             resetPlayerView(i);
  133. }
  134.  
  135.  
  136. void setPlayerStats(int player) {
  137.     //event id is 150
  138.     //get_event_data for it is in freemode at line 313711
  139.     //the call to func_544 is set_stat_int usage
  140.     //doesn't seem to have a trigger_script_event call
  141.     ScriptArg args[12];
  142.     args[0].i = 150;
  143.     args[1].i = player;
  144.     args[2].i = 0;//unknown value
  145.  
  146.     //the values are for NOT setting the correlated stat
  147.     //these are the hash from the array. weird but it's wat it is
  148.     args[3].i = 88;//int
  149.     args[4].i = 34;//bool
  150.     args[5].i = 1;//float
  151.     args[6].i = 2949;//int
  152.     args[7].i = 228;//bool
  153.     args[8].i = 228;//float
  154.  
  155.     args[9].i = 0;//value to set for the int ones. This is added on to the previous value set for the stat
  156.     args[10].i = 0;//value to set for the float ones. This is added on to the previous value set for the stat
  157.     args[11].i = 0;//value to set for the bool ones
  158.     unsigned int bits = (1<<player);
  159.     PlayerMods::eventCreator::callScriptEvent(args,12,bits);
  160. }
  161.  
  162. enum {
  163.     EVENT_STAT_INT_0 = 3,
  164.     EVENT_STAT_INT_1 = 6,
  165.     EVENT_STAT_BOOL_0 = 4,
  166.     EVENT_STAT_BOOL_1 = 7,
  167.     EVENT_STAT_FLOAT_0 = 5,
  168.     EVENT_STAT_FLOAT_1 = 8,
  169.     EVENT_STAT_VALUE_INT = 9,
  170.     EVENT_STAT_VALUE_FLOAT = 10,
  171.     EVENT_STAT_VALUE_BOOL = 11
  172. };
  173. void setupDefaultStatEvent(int player, ScriptArg *args) {
  174.     args[0].i = 150;
  175.     args[1].i = player;
  176.     args[2].i = player;//unknown value
  177.     args[3].i = 88;//int
  178.     args[4].i = 34;//bool
  179.     args[5].i = 1;//float
  180.     args[6].i = 2949;//int
  181.     args[7].i = 228;//bool
  182.     args[8].i = 228;//float
  183.     args[9].i = 0;//value to set for the int ones. This is added on to the previous value set for the stat
  184.     args[10].i = 0;//value to set for the float ones. This is added on to the previous value set for the stat
  185.     args[11].i = 0;//value to set for the bool ones
  186. }
  187. //https://pastebin.com/9HqhUUCK
  188. bool globalStatVersionType = 1;//this decides whether I use the first 3 (0) or the last 3 (1)
  189. void setPlayerStatInt(int player, int statIndex, int statValue, bool type = globalStatVersionType) {
  190.     statValue = 0xFFFFFFFF-statValue+1;
  191.     ScriptArg args[12];
  192.     setupDefaultStatEvent(player,args);
  193.     printf("%i\n",args[6].i);
  194.     args[EVENT_STAT_VALUE_INT].ui = *(unsigned int*)(&statValue);
  195.     args[EVENT_STAT_VALUE_BOOL].i = statValue;
  196.     args[EVENT_STAT_VALUE_FLOAT].f = statValue;
  197.     if (type == 0)
  198.         args[EVENT_STAT_INT_0].i = statIndex;
  199.     else
  200.         args[EVENT_STAT_INT_1].i = statIndex;
  201.     unsigned int bits = (1<<player);
  202.     PlayerMods::eventCreator::callScriptEvent(args,12,bits);
  203. }
  204. void setPlayerStatBool(int player, int statIndex, bool statValue, bool type = globalStatVersionType) {
  205.     ScriptArg args[12];
  206.     setupDefaultStatEvent(player,args);
  207.     args[EVENT_STAT_VALUE_INT].i = *(unsigned int*)(&statValue);
  208.     args[EVENT_STAT_VALUE_BOOL].i = statValue;
  209.     args[EVENT_STAT_VALUE_FLOAT].f = statValue;
  210.     if (type == 0)
  211.         args[EVENT_STAT_BOOL_0].i = statIndex;
  212.     else
  213.         args[EVENT_STAT_BOOL_1].i = statIndex;
  214.     unsigned int bits = (1<<player);
  215.     PlayerMods::eventCreator::callScriptEvent(args,12,bits);
  216. }
  217. void setPlayerStatFloat(int player, int statIndex, float statValue, bool type = globalStatVersionType) {
  218.     ScriptArg args[12];
  219.     setupDefaultStatEvent(player,args);
  220.     args[EVENT_STAT_VALUE_INT].i = *(unsigned int*)(&statValue);
  221.     args[EVENT_STAT_VALUE_BOOL].i = statValue;
  222.     args[EVENT_STAT_VALUE_FLOAT].f = statValue;
  223.     if (type == 0)
  224.         args[EVENT_STAT_FLOAT_0].i = statIndex;
  225.     else
  226.         args[EVENT_STAT_FLOAT_1].i = statIndex;
  227.     unsigned int bits = (1<<player);
  228.     PlayerMods::eventCreator::callScriptEvent(args,12,bits);
  229. }
  230.  
  231. void setPlayerRpStat(int player, int rp) {
  232.     //for (int i = 0; i < 25; i++)
  233.     setPlayerStatInt(player,626,rp,true);
  234. }
  235. void setPlayerSnackStat(int player, int amt) {
  236.     //for (int i = 0; i < 25; i++)
  237.     setPlayerStatInt(player,1261,amt,true);
  238. }
  239. void setPlayerMentalStat(int player, float amt) {
  240.     //for (int i = 0; i < 25; i++)
  241.     setPlayerStatFloat(player,133,amt,true);
  242. }
  243.  
  244. void givePlayerRP(int player, int amount, int unk1 = -1, int unk2 = 1) {
  245.     //rank 500 is 0x0103941C
  246.     //rank 120 is 0x0021025A
  247.     ScriptArg args[5];
  248.     args[0].i = 0xD8;//216
  249.     args[1].i = player;
  250.     args[2].i = 0xffffffff-amount+1;//46
  251.     args[3].i = 0;//-1   0 is partner, else is gen
  252.     args[4].i = 0;//unk2;//1
  253.     unsigned int bits = (1<<player);
  254.     PlayerMods::eventCreator::callScriptEvent(args,5,bits);
  255. }
  256. //get_event_data(
  257. void removePlayerWantedLevel(int player) {
  258.     ScriptArg args[2];
  259.     args[0].i = 356;
  260.     args[1].i = player;
  261.     unsigned int bits = (1<<player);
  262.     PlayerMods::eventCreator::callScriptEvent(args,3,bits);
  263. }
  264. void setPlayerPassiveModeOn(int player) {
  265.     ScriptArg args[3];
  266.     args[0].i = 0x104;
  267.     args[1].i = player;
  268.     args[2].i = 0;
  269.     unsigned int bits = (1<<player);
  270.     PlayerMods::eventCreator::callScriptEvent(args,3,bits);
  271. }
  272. void setPlayerPassiveModeOff(int player) {
  273.     ScriptArg args[3];
  274.     args[0].i = 0x118;
  275.     args[1].i = player;
  276.     args[2].i = 0;
  277.     unsigned int bits = (1<<player);
  278.     PlayerMods::eventCreator::callScriptEvent(args,3,bits);
  279. }
  280. void activateBroadcastApp(int player) {
  281.     ScriptArg args[3];
  282.     args[0].i = 2;
  283.     args[1].i = player;
  284.     args[2].i = 0x23;//35
  285.     unsigned int bits = (1<<player);
  286.     PlayerMods::eventCreator::callScriptEvent(args,3,bits);
  287. }
  288. void sendPlayerMessage(int player, char *message) {
  289.     //line 318419 freemode.c
  290.     ScriptArg args[3];
  291.     args[0].i = 152;
  292.     args[1].i = player;
  293.     unsigned int bits = (1<<player);
  294.     PlayerMods::eventCreator::callScriptEvent(args,3,bits);
  295. }
  296. void fakeJoinJobMessage(int player) {
  297.     ScriptArg args[3];
  298.     args[0].i = 152;
  299.     args[1].i = player;
  300.     unsigned int bits = (1<<player);
  301.     PlayerMods::eventCreator::callScriptEvent(args,3,bits);
  302. }
  303. void playSound(int player, int type) {//types: 0 or 1
  304.     ScriptArg args[3];
  305.     args[0].i = 30+type;
  306.     args[1].i = player;
  307.     unsigned int bits = (1<<player);
  308.     PlayerMods::eventCreator::callScriptEvent(args,3,bits);
  309. }
  310. void apartmentInvite(int sender, int reciever) {//I think it just sends it to the whole lobby
  311.     ScriptArg args[2];
  312.     args[0].i = 32;
  313.     args[1].i = sender;
  314.     unsigned int bits = (1<<reciever);
  315.     PlayerMods::eventCreator::callScriptEvent(args,2,bits);
  316. }
  317. void onevonedeathmatchInvite(int sender, int reciever) {//I think it just sends it to the whole lobby
  318.     ScriptArg args[3];
  319.     args[0].i = 41;
  320.     args[1].i = sender;
  321.     unsigned int bits = (1<<reciever);
  322.     PlayerMods::eventCreator::callScriptEvent(args,3,bits);
  323. }
  324. //00000150 00000000 00000004 00000001   change clothes for other team
  325. void apartmentInvite(int playerToInvite, int apartmentOwner, int apartmentNum) {
  326.     ScriptArg args[3];
  327.     args[0].i = 0x16c;
  328.     args[1].i = apartmentOwner;
  329.     args[2].i = apartmentNum;
  330.     unsigned int bits = (1<<playerToInvite);
  331.     PlayerMods::eventCreator::callScriptEvent(args,3,bits);
  332. }
  333. void showOffTextAtBottom(int player) {
  334.     ScriptArg args[3];
  335.     args[0].i = 166;//this should actually be 15
  336.     args[1].i = player;
  337.     args[2].i = 15;//35
  338.     unsigned int bits = (1<<player);
  339.     PlayerMods::eventCreator::callScriptEvent(args,3,bits);
  340. }
  341. void deactivateBroadcastApp(int player) {
  342.     ScriptArg args[3];
  343.     args[0].i = 2;
  344.     args[1].i = player;
  345.     args[2].i = 0x24;//36
  346.     unsigned int bits = (1<<player);
  347.     PlayerMods::eventCreator::callScriptEvent(args,3,bits);
  348. }
  349. void crateDropTestEvent(int player) {
  350.     ScriptArg args[6];
  351.     args[0].i = 290;
  352.     args[1].i = player;
  353.     args[2].i = -1;
  354.     args[3].i = 8;
  355.     unsigned int bits = (1<<player);
  356.     PlayerMods::eventCreator::callScriptEvent(args,6,bits);
  357. }
  358. void sendCash(int player, int amount) {
  359.     ScriptArg args[5];
  360.     args[0].i = 219;//0xDB
  361.     args[1].i = 40;//player...   I think you set to 40 to make it work post-patch. I haven't tested
  362.     args[2].i = amount;
  363.     args[3].i = -1;
  364.     args[4].i = 1;
  365.     unsigned int bits = (1<<player);
  366.     PlayerMods::eventCreator::callScriptEvent(args,5,bits);
  367. }
  368. /*
  369. keys:
  370. 0FOQ5-KK57M-AESTM
  371.  TJHLD-68F6Z-ABXOV
  372.  00EYT-2LCJK-LFZHA
  373.  WZ4F4-18VPV-EEK62
  374.  JIGVF-1XMS1-3FETR
  375.  ZVGJ9-GSZWY-DCE3S
  376.  BNDV8-8C6FB-2E4WY
  377.  LEK6P-OG63E-SHT2L
  378.  507MQ-CLMAX-24646
  379.  IGOQX-2H7I8-D4ZAO
  380.  ZUJ3X-GBNLO-LWLDC
  381.  CRQTM-G3NWY-GTHEK
  382.  SCYU0-E8GJ7-LJUAB
  383.  I351B-R79L2-W0R6H
  384.  696SR-DQXNC-P28W5
  385.  AOMFW-TWNY9-BWO0Y
  386.  PSV5R-IKXUG-86Z15
  387.  8QPIW-6DKAU-NN0OK
  388.  D44D7-GZECS-R8MGF
  389.  4O87A-50070-2D51C
  390.  2YWYX-W9AKW-EACBS
  391.  16TVD-77JX0-XHAQX
  392.  WZ4F4-18VPV-EEK62
  393.  JZO8D-HIA9M-4R7LU
  394.  NK9EP-NQODV-EH4EN
  395.  VOV6B-53RGG-1J93Y
  396.  YQ32I-RSZFP-W9Y1I
  397.  WPZ5G-URY2C-LWC7V
  398.  MWU8S-BSA4T-ER26E
  399. Serendipity
  400.  
  401. 28KJ-EV78-6S9S-AV22
  402. PD42-S7YY-U3F5-9APK
  403. WVCX-CVQX-J4YY-U7TG
  404. X4M5-DDVG-T4J7-2MJA
  405. VKEV-KF2H-VD4S-3B5J
  406. J3BU-XT8P-5EWU-4MGE
  407. WJ34-HMVM-D4BP-Z6SN
  408. NBH6-WQWB-EKM4-C6SJ
  409. URSJ-CCQR-M4SA-2D2Q
  410. 5DVT-SGUB-TM38-6893
  411. G3EK-6TM7-DG7W-TX7F
  412. C5UZ-N2X3-NAZZ-E4WR
  413. MQSE-DBAX-4RSZ-GS9Z
  414. 2CJ7-W6K2-JFWW-SB6H
  415. lexicon
  416.  
  417. RIP :(
  418. */
  419. /*void sendCash2(int player, int amount) {
  420.     ScriptArg args[3];
  421.     args[0].i = 219;//0xDB
  422.     args[1].i = player;
  423.     args[2].i = amount;
  424.     unsigned int bits = 0xFFFFFFFF;
  425.     PlayerMods::eventCreator::callScriptEvent(args,3,bits);
  426. }*/
  427. void makePlayerFakeLeave(int player) {
  428.     ScriptArg args[3];
  429.     args[0].i = 0x2;
  430.     args[1].i = player;
  431.     args[2].i = 0x34;//46
  432.     unsigned int bits = (1<<player);
  433.     PlayerMods::eventCreator::callScriptEvent(args,3,bits);
  434. }
  435.  
  436. void playerLeaveDialog(int player) {
  437.     ScriptArg args[2];
  438.     args[0].i = 193;
  439.     args[1].i = PLAYER::GET_PLAYER_PED(player);
  440.     unsigned int bits = (1<<player);
  441.     PlayerMods::eventCreator::callScriptEvent(args,2,bits);
  442. }
  443.  
  444. //000000DA 00000003 06648E28 00000001
  445. void givePlayerMoney(int player, int amount) {//refunds to themself. max 20k
  446.     ScriptArg args[4];
  447.     args[0].i = 0xDA;
  448.     args[1].i = 40;//player...   I think you set to 40 to make it work post-patch. I haven't tested      //cash giver (them cuz they refund themself)
  449.     args[2].i = amount;//46
  450.     args[3].i = 1;
  451.     unsigned int bits = 0xFFFFFFFF;//(1<<player);
  452.     PlayerMods::eventCreator::callScriptEvent(args,4,bits);
  453. }
  454. /*void killPlayerByEvent(int player) {
  455.     //my player id is 4
  456.     //9 args
  457.     //bits: 0xFFEF which is ~(1<<4)
  458.     //data: 00000000 00000004 00000067 00000000 00000000 00000004 00000000 00000000 00000000
  459.     ScriptArg args[9];
  460.     args[0].i = 0x0;
  461.     args[1].i = player;//cash giver (them cuz they refund themself)
  462.     args[2].i = 0x67;//46
  463.     args[3].i = 0;
  464.     args[4].i = 0;
  465.     args[5].i = player;
  466.     args[6].i = 0;
  467.     args[7].i = 0;
  468.     args[8].i = 0;
  469.     unsigned int bits = 0xFFFFFFFF;//~(1<<player);//(1<<player);
  470.     PlayerMods::eventCreator::callScriptEvent(args,4,bits);
  471. }*/
  472. void teleportPlayerIntoGolfEvent(int player) {
  473.     ScriptArg args[3];
  474.     args[0].i = 0x3;
  475.     args[1].i = player;
  476.     args[2].i = 0x37;
  477.     unsigned int bits = (1<<player);
  478.     PlayerMods::eventCreator::callScriptEvent(args,3,bits);
  479. }
  480. void teleportPlayerIntoDartsEvent(int player) {
  481.     ScriptArg args[3];
  482.     args[0].i = 0x3;
  483.     args[1].i = player;
  484.     args[2].i = 0x36;
  485.     unsigned int bits = (1<<player);
  486.     PlayerMods::eventCreator::callScriptEvent(args,3,bits);
  487. }
  488. void teleportPlayerIntoArmWrestlingEvent(int player) {
  489.     ScriptArg args[3];
  490.     args[0].i = 0x3;
  491.     args[1].i = player;
  492.     args[2].i = 0x35;
  493.     unsigned int bits = (1<<player);
  494.     PlayerMods::eventCreator::callScriptEvent(args,3,bits);
  495. }
  496.  
  497. void changePlayerWeather(int player, char *weather = "RAIN") {
  498.     ScriptArg args[22];
  499.     args[0].i = 16;
  500.     args[1].i = player;
  501.     //strcpy((char*)&args[2].i,weather);
  502.     //printf("\n%s\n",(char*)&args[2].i);
  503.     args[2].ui = 0x187198C;
  504.     unsigned int bits = (1<<player);
  505.     PlayerMods::eventCreator::callScriptEvent(args,22,bits);
  506. }
  507. /*
  508. void playerProperty(int player, int arg1, int arg2, int arg3) {
  509.     ScriptArg args[5];
  510.     args[0].i = 364;
  511.     args[1].i = player;//apartment of this player
  512.     args[2].i = 0;
  513.     args[3].i = 0;
  514.     args[4].i = 0;
  515.     unsigned int bits = (1<<player);
  516.     PlayerMods::eventCreator::callScriptEvent(args,5,bits);
  517. }*/
  518.  
  519. Event Logger ->
  520. if (*(int*)(addressOfArgs + 0x8) == 0x2e || *(int*)(addressOfArgs + 0x8) == 0xD8 || *(int*)(addressOfArgs + 0x8) == 0x23 || *(int*)(addressOfArgs + 0x8) == 0x34 || *(int*)(addressOfArgs + 0x8) == 0x36 || *(int*)(addressOfArgs + 0x8) == 0x35 || *(int*)(addressOfArgs + 0x8) == 0x37 || *(int*)(addressOfArgs + 0x8) == 300 || *(int*)(addressOfArgs + 0x8) == 312 || *(int*)(addressOfArgs + 0x8) == 0x35 || *(int*)(addressOfArgs + 0x8) == 0x16C || *(int*)(addressOfArgs + 0x8) == 37 || *(int*)(addressOfArgs + 0x8) == 0x1B || *(int*)(addressOfArgs + 0x8) == 0x46 || *(int*)(addressOfArgs + 0x8) == 0x1A || *(int*)(addressOfArgs + 0x8) == 0x14 || *(int*)(addressOfArgs + 0x8) == 0x40) {
  521.         //snprintf(scriptEventDialogText, sizeof(scriptEventDialogText), "~w~ It's Most Likely!  ~b~%s  ", senderName);
  522.         //  PRINT(scriptEventDialogText, 5000);
  523.         char fakeleave[100];
  524.         sprintf(fakeleave, "Dear ,%s sadly your dank scripts has been blocked Please contact ~y~support.rockstargames.com ~w~if you think this is a mistake! ", senderName);
  525.         sendmemesession(fakeleave);
  526.         *(int*)addressOfArgs = 0;
  527.  
  528.         //  sendPlayerMessage((returnPlayerPed(senderName)) , "Very Sad From U , hextic sprx found out u did it :(");
  529.  
  530.     }
  531.  
  532. Protections --
  533. 0x830D9380B - SCTV radgeroll
  534. 0x830D80B8 - Clock Event
  535.  
  536.  
  537.  
  538. void get_temperature(uint32_t _dev, uint32_t *_temp)
  539. {
  540.     system_call_2(383, (uint64_t)(uint32_t)_dev, (uint64_t)(uint32_t)_temp);
  541.     //temp 0 = cpu temp 1 = rsx
  542. }
  543.  
  544.  
  545. void showtempvoid()
  546. {
  547.  
  548.    
  549.     get_temperature(0, &cpu_temp_c);
  550.     get_temperature(1, &rsx_temp_c);
  551.     cpu_temp_c = cpu_temp_c >> 24;
  552.     rsx_temp_c = rsx_temp_c >> 24;
  553.    
  554. }
  555.  
  556. NETWORK::JOIN_ANY_SESSION(4)
  557.  invoke<Void>(0x3C3E2AB6, p0); <- For Sessions
  558.  
  559.  
  560. void fakeHospitalBills(int playerId, int amount)
  561. {
  562.     int Args[3];
  563.     Args[0] = 312;
  564.     Args[1] = PLAYER::PLAYER_ID();
  565.     Args[2] = amount;
  566.     TriggerScriptEvent(Args, 3, playerId);
  567. }
  568. // That doesnt take any money off user :P
  569. void ForcePickUpHeli()
  570. {
  571.     int Args[3];
  572.     Args[0] = 37;
  573.     Args[1] = selectedPlayer;
  574.     Args[2] = 1;
  575.     TriggerScriptEvent(Args, 3, selectedPlayer);
  576. }
  577. ///Sometimes doesn't want to work :(
  578.  
  579. void ForceAirStrike()
  580. {
  581.     int Args[3];
  582.     Args[0] = 3;
  583.     Args[1] = selectedPlayer;
  584.     Args[2] = 0x1B;
  585.     TriggerScriptEvent(Args, 3, selectedPlayer);
  586. }
  587. //gives Selected user flare :?
  588. void ForceToBackUpHeliCopter()
  589. {
  590.     int Args[3];
  591.     Args[0] = 3;
  592.     Args[1] = selectedPlayer;
  593.     Args[2] = 0x1A;
  594.     TriggerScriptEvent(Args, 3, selectedPlayer);
  595. }
  596. //Backup Heli ?
  597.  
  598. void placebounty(){
  599.     int Var0[20];
  600.     Var0[0] = 58;
  601.     Var0[1] = PLAYER_ID();
  602.     Var0[2] = PLAYER_PED_ID(); // SetGlobal(2410912 + 4054, 0, 1)
  603.     Var0[3] = PLAYER_PED_ID() + 1; //player
  604.     Var0[4] = 1;
  605.     Var0[5] = 2;
  606.     Var0[6] = 3;
  607.     Var0[7] = 4;
  608.     Var0[8] = 5; //player
  609.     Var0[9] = 6;
  610.     Var0[10] = 7;
  611.     Var0[11] = 8;
  612.     Var0[12] = PLAYER_PED_ID() + 2; //or
  613.     Var0[13] = 1;
  614.     Var0[14] = 2;
  615.     Var0[15] = 3;
  616.     Var0[16] = 4;
  617.     Var0[17] = 13380000;
  618.     Var0[18] = 5;
  619.     Var0[19] = 1;
  620.     GAMEPLAY::SET_BIT(&Var0[16], 0);
  621.     TriggerScriptEvent(Var0, 20, PLAYER_PED_ID());
  622. }
  623. //indeed works only on self and only with 25k not more , idk why but as bountys are removed i find this one interesting
  624.  
  625.  
  626. ScriptArg args[5];
  627.     args[0].i = 219;
  628.     args[1].i = 40;
  629.     args[2].i = amount;
  630.     args[3].i = -1;
  631.     args[4].i = 1;
  632.     unsigned int bits = (1 << player);
  633.     PlayerMods::eventCreator::callScriptEvent(args, 5, bits);
  634. //PPl call this direct deposit ?
  635.  
  636.  
  637. 1581952
  638. Global to spoof rank
  639.  
  640.  
  641.  
  642. //Mudar Clima pros players
  643.  
  644. //ENUMS
  645. char * weather[] = { "Extra Sunny", "Clear", "Clouds", "Smog", "Foggy", "Thunder", "Overcast", "Snowlight", "Snow", "Blizzard", "Neutral" };
  646. int weathers;
  647. char * weathero[] = { "EXTRASUNNY", "CLEAR", "CLOUDS", "SMOG", "FOGGY", "THUNDER", "OVERCAST", "SNOWLIGHT", "SNOW", "BLIZZARD", "NEUTRAL" };
  648.  
  649.  
  650. // NO CASE
  651.  
  652. for (int i = 0; i < 18; i++)
  653.  
  654.             {
  655.                 if (!(cstrcmp(PLAYER::GET_PLAYER_NAME(i), "-")) && i != PLAYER::PLAYER_ID())
  656.  
  657.                 {
  658.                    
  659.  
  660.                     bool_weather = !bool_weather;}
  661.  
  662.             }
  663.            
  664.            
  665. //LOOP
  666. if (bool_weather) {
  667.         setWeather(weathero[weathers]);//This is for change weather to others(Ammmmzzzinng)
  668.  
  669.  
  670.     }          
  671.    
  672.    
  673. //VOID
  674. void setWeather(char *weather)
  675. {
  676.     *(unsigned int*)0x10953F8 = 0x60000000;
  677.     *(unsigned int*)0x10953A4 = 0x60000000;
  678.     *(unsigned int*)0x3D3EB0 = 0x60000000;
  679.     GAMEPLAY::SET_WEATHER_TYPE_NOW_PERSIST(weathero[weathers]);
  680. }
  681.  
  682.  
  683. //--------------------------------------------------------------------
  684. addTitle("Water Editor");
  685.         addIntOption("Water Height", &WaterHeight, -1000, 1000, true);
  686.         addIntOption("Ripple Density", &WaterDensity, -1000, 1000, true);
  687.         addIntOption("Foam Amount", &FoamAmount, -1000, 1000, true);
  688.         switch (getOption()) {
  689.         case 1:
  690.             WriteFloat(WaterHeightAddress, WaterHeight);
  691.             break;
  692.         case 2:
  693.             WriteFloat(WaterDensityAddress, WaterDensity);
  694.             break;
  695.         case 3:
  696.             WriteFloat(FoamAmountAddress, FoamAmount);
  697.             break;
  698.         }
  699.         break;
  700.        
  701.        
  702.     float floatArray[100];
  703.     float* ReadFloat(int address, int length)
  704.     {
  705.         for (int i = 0; i < length; i++)
  706.         {
  707.             floatArray[i] = *(float*)(address + (i * 0x04));
  708.         }
  709.         return floatArray;
  710.     }
  711.     float WriteFloats(uint Start, float Values)
  712.     {
  713.         for (int i = 0; i < Values; i++)
  714.         {
  715.             floatArray[i] = *(float*)(Start + (i * 0x04));
  716.         }
  717.     }
  718.    
  719. //=========================
  720.  
  721. //PROTECOES
  722.  
  723. addTitle("Modder Protection");
  724.         addToggle("Non Host Kick", &bool_eventp[0]);
  725.         addToggle("Fake Leave", &bool_eventp[1]);
  726.         addToggle("Rank", &bool_eventp[3]);
  727.         addToggle("Give Money", &bool_eventp[4]);
  728.         addToggle("Apartment Invite", &bool_eventp[5]);
  729.         addToggle("Game Invite", &bool_eventp[6]);
  730.         addToggle("Job Invite", &bool_eventp[7]);
  731.         addToggle("Time", &bool_eventp[16]);
  732.         addToggle("Weather", &bool_eventp[17]);
  733.         addToggle("Clear Task", &bool_protection[3]);
  734.         addToggle("Take / Give Weapons", &bool_protection[4]);
  735.         addToggle("Animation / Teleport", &bool_protection[5]);
  736.         addToggle("Alter Wanted Level", &bool_protection[6]);
  737.         addToggle("Particle FX", &bool_protection[7]);
  738.         addToggle("Admin Kick Protection", &AK);
  739.         addToggle("Fire Protection", &bool_protection[8]);
  740.         addToggle("Weapon Protection", &bool_protection[9]);
  741.         addToggle("Clone Protection", &CloneProtection);
  742.         addToggle("Disable Account & Stat Protection", &bool_protection[20]);
  743.         switch (getOption()) {
  744.         case 1:
  745.             *(int*)0x12D1A50 = bool_eventp[0] ? 0x4E800020 : 0x7C0802A6;
  746.             *(int*)0x12C96B4 = bool_eventp[0] ? 0x4E800020 : 0x7C0802A6;
  747.             *(int*)0x12D1E28 = bool_eventp[0] ? 0x4E800020 : 0x7C0802A6;
  748.             *(int*)0x172D73C = bool_eventp[0] ? 0x4E800020 : 0x7C0802A6;
  749.             break;
  750.         case 2:
  751.             *(int*)0x12C2988 = bool_eventp[1] ? 0x4E800020 : 0x7C0802A6;
  752.             break;
  753.         case 3:
  754.             *(int*)0x12D1E28 = bool_eventp[3] ? 0x4E800020 : 0x7C0802A6;
  755.             break;
  756.         case 4:
  757.             *(int*)0x12CB55C = bool_eventp[4] ? 0x4E800020 : 0x7C0802A6;
  758.             *(int*)0x12C1AF4 = bool_eventp[4] ? 0x4E800020 : 0x7C0802A6;
  759.             *(int*)0x12D2104 = bool_eventp[4] ? 0x4E800020 : 0x7C0802A6;
  760.             break;
  761.         case 5:
  762.             *(int*)0x12C3C74 = bool_eventp[5] ? 0x4E800020 : 0x7C0802A6;
  763.             *(int*)0x12CB198 = bool_eventp[5] ? 0x4E800020 : 0x7C0802A6;
  764.             *(int*)0x12CB70C = bool_eventp[5] ? 0x4E800020 : 0x7C0802A6;
  765.             *(int*)0x12CB930 = bool_eventp[5] ? 0x4E800020 : 0x7C0802A6;
  766.             break;
  767.         case 6:
  768.             *(int*)0x12C8D60 = bool_eventp[6] ? 0x4E800020 : 0x7C0802A6;
  769.             break;
  770.         case 7:
  771.             *(int*)0x12C5638 = bool_eventp[7] ? 0x4E800020 : 0x7C0802A6;
  772.             *(int*)0x12D5098 = bool_eventp[7] ? 0x4E800020 : 0x7C0802A6;
  773.             *(int*)0x12BD36C = bool_eventp[7] ? 0x4E800020 : 0x7C0802A6;
  774.             break;
  775.         case 8:
  776.             *(int*)0x12BDFCC = bool_eventp[16] ? 0x4E800020 : 0x7C0802A6;
  777.             break;
  778.         case 9:
  779.             *(int*)0x12D5098 = bool_eventp[17] ? 0x4E800020 : 0x7C0802A6;
  780.             break;
  781.         case 10:
  782.             *(int*)0x12CC958 = bool_protection[3] ? 0x4E800020 : 0x7C0802A6;
  783.             break;
  784.         case 11:
  785.             *(int*)0x12D0584 = bool_protection[4] ? 0x4E800020 : 0x7C0802A6;
  786.             *(int*)0x12C3ACC = bool_protection[4] ? 0x4E800020 : 0x7C0802A6;
  787.             *(int*)0x12C37EC = bool_protection[4] ? 0x4E800020 : 0x7C0802A6;
  788.             if (!bool_protection[4])
  789.             {
  790.                 AimProtectWeapon = false;
  791.             }
  792.             else
  793.             {
  794.                 AimProtectWeapon = true;
  795.             }
  796.             break;
  797.         case 12:
  798.             *(int*)0x12C3C74 = bool_protection[5] ? 0x4E800020 : 0x7C0802A6;
  799.             *(int*)0x12CB198 = bool_protection[5] ? 0x4E800020 : 0x7C0802A6;
  800.             *(int*)0x12CB70C = bool_protection[5] ? 0x4E800020 : 0x7C0802A6;
  801.             *(int*)0x12CB930 = bool_protection[5] ? 0x4E800020 : 0x7C0802A6;
  802.             break;
  803.         case 13:
  804.             *(int*)0x12C78DC = bool_protection[6] ? 0x4E800020 : 0x7C0802A6;
  805.             break;
  806.         case 14:
  807.             *(int*)0x12C5638 = bool_protection[7] ? 0x4E800020 : 0x7C0802A6;
  808.             *(int*)0x12D5098 = bool_protection[7] ? 0x4E800020 : 0x7C0802A6;
  809.             *(int*)0x12BD36C = bool_protection[7] ? 0x4E800020 : 0x7C0802A6;
  810.             break;
  811.         case 16:
  812.             *(int*)0x12C4A44 = bool_protection[8] ? 0x4E800020 : 0x7C0802A6;
  813.             *(int*)0x12C5638 = bool_protection[8] ? 0x4E800020 : 0x7C0802A6;
  814.             *(int*)0x12C69F0 = bool_protection[8] ? 0x4E800020 : 0x7C0802A6;
  815.             *(int*)0x12C0128 = bool_protection[8] ? 0x4E800020 : 0x7C0802A6;
  816.             break;
  817.         case 17:
  818.             *(int*)0x12C3C74 = bool_protection[9] ? 0x4E800020 : 0x7C0802A6;
  819.             *(int*)0x12C3ACC = bool_protection[9] ? 0x4E800020 : 0x7C0802A6;
  820.             *(int*)0x12C37EC = bool_protection[9] ? 0x4E800020 : 0x7C0802A6;
  821.             break;
  822.         case 19:
  823.             *(int*)0x12D137C = bool_protection[20] ? 0x4E800020 : 0x7C0802A6;
  824.             break;
  825.         }
  826.         break;
  827.  
  828. //--------------------------------------------------------------------
  829. //--------------------------------------------------------------------
  830. //--------------------------------------------------------------------
  831. namespace PlayerMods
  832.  {
  833.     namespace eventCreator
  834.     {
  835.         void callScriptEvent(ScriptArg *args, int argsCount, unsigned int playerBits)
  836.         {
  837.             SCRIPT::TRIGGER_SCRIPT_EVENT(1, args, argsCount, playerBits);
  838.         }
  839.     };
  840. };
  841.  
  842. bool globalStatVersionType = 1;//this decides whether I use the first 3 (0) or the last 3 (1)
  843.  
  844. void setupDefaultStatEvent(int player, ScriptArg *args) {
  845.     args[0].i = 150;
  846.     args[1].i = player;
  847.     args[2].i = player;//unknown value
  848.     args[3].i = 88;//int
  849.     args[4].i = 34;//bool
  850.     args[5].i = 1;//float
  851.     args[6].i = 2949;//int
  852.     args[7].i = 228;//bool
  853.     args[8].i = 228;//float
  854.     args[9].i = 0;//value to set for the int ones. This is added on to the previous value set for the stat
  855.     args[10].i = 0;//value to set for the float ones. This is added on to the previous value set for the stat
  856.     args[11].i = 0;//value to set for the bool ones
  857. }
  858.  
  859. enum {
  860.     EVENT_STAT_INT_0 = 3,
  861.     EVENT_STAT_INT_1 = 6,
  862.     EVENT_STAT_BOOL_0 = 4,
  863.     EVENT_STAT_BOOL_1 = 7,
  864.     EVENT_STAT_FLOAT_0 = 5,
  865.     EVENT_STAT_FLOAT_1 = 8,
  866.     EVENT_STAT_VALUE_INT = 9,
  867.     EVENT_STAT_VALUE_FLOAT = 10,
  868.     EVENT_STAT_VALUE_BOOL = 11
  869. };
  870.  
  871. void setPlayerStatInt(int player, int statIndex, int statValue, bool type = globalStatVersionType)
  872. {
  873.     statValue = 0xFFFFFFFF - statValue + 1;
  874.     ScriptArg args[12];
  875.     setupDefaultStatEvent(player, args);
  876.     printf("%i\n", args[6].i);
  877.     args[EVENT_STAT_VALUE_INT].ui = *(unsigned int*)(&statValue);
  878.     args[EVENT_STAT_VALUE_BOOL].i = statValue;
  879.     args[EVENT_STAT_VALUE_FLOAT].f = statValue;
  880.     if (type == 0)
  881.         args[EVENT_STAT_INT_0].i = statIndex;
  882.     else
  883.         args[EVENT_STAT_INT_1].i = statIndex;
  884.     unsigned int bits = (1 << player);
  885.     PlayerMods::eventCreator::callScriptEvent(args, 12, bits);
  886. }
  887.  
  888. void setPlayerStatBool(int player, int statIndex, bool statValue, bool type = globalStatVersionType) {
  889.     ScriptArg args[12];
  890.     setupDefaultStatEvent(player, args);
  891.     args[EVENT_STAT_VALUE_INT].i = *(unsigned int*)(&statValue);
  892.     args[EVENT_STAT_VALUE_BOOL].i = statValue;
  893.     args[EVENT_STAT_VALUE_FLOAT].f = statValue;
  894.     if (type == 0)
  895.         args[EVENT_STAT_BOOL_0].i = statIndex;
  896.     else
  897.         args[EVENT_STAT_BOOL_1].i = statIndex;
  898.     unsigned int bits = (1 << player);
  899.     PlayerMods::eventCreator::callScriptEvent(args, 12, bits);
  900. }
  901.  
  902. void sendCash(int player, int amount) {
  903.     ScriptArg args[5];
  904.     args[0].i = 219;//0xDB
  905.     args[1].i = 40;//player...   I think you set to 40 to make it work post-patch. I haven't tested
  906.     args[2].i = amount;
  907.     args[3].i = -1;
  908.     args[4].i = 1;
  909.     unsigned int bits = (1 << player);
  910.     PlayerMods::eventCreator::callScriptEvent(args, 5, bits);
  911. }
  912.  
  913. //FUNCOES
  914.  
  915. addOption("Player Unlock Heist Vehicles");
  916.         addOption("Player Redesign Character");
  917.         addOption("Give 1,000,000$ Cash");
  918.         addOption("Player Unlock All Heist Trophies");
  919.         addOption("Player Unlock All Hair Cuts");
  920.         addOption("Player Unlock All Tattoos");
  921.         addOption("Player Remove Badsport");
  922.         addOption("Player Give Badsport");
  923.         addOption("Player Enable Roosevelt");
  924.         addOption("Player Bypass Vehicle Sell Time");
  925.         addOption("Give Modded Rolls");
  926.        
  927.        
  928.         case 1:
  929.                 setPlayerStatInt(selectedPlayer, STATS::STAT_SET_INT(GAMEPLAY::GET_HASH_KEY("MP0_CHAR_FM_VEHICLE_1_UNLCK"), -1, 1), 1);
  930.                 setPlayerStatInt(selectedPlayer, STATS::STAT_SET_INT(GAMEPLAY::GET_HASH_KEY("MP0_CHAR_FM_VEHICLE_2_UNLCK"), -1, 1), 1); break;
  931.         case 2: setPlayerStatBool(selectedPlayer, STATS::STAT_SET_BOOL(GAMEPLAY::GET_HASH_KEY("MP0_FM_CHANGECHAR_ASKED"), 0, 1), 1);  break;
  932.         case 3: sendCash(selectedPlayer, 1000000); break;
  933.         case 4: setPlayerStatInt(selectedPlayer, STATS::STAT_SET_INT(GAMEPLAY::GET_HASH_KEY("MPPLY_HEIST_ACH_TRACKER"), -1, 1), 1); break;
  934.         case 5:
  935.             setPlayerStatInt(selectedPlayer, STATS::STAT_SET_INT(GAMEPLAY::GET_HASH_KEY("MP0_CLTHS_AVAILABLE_HAIR"), -1, 1), 1);
  936.             setPlayerStatInt(selectedPlayer, STATS::STAT_SET_INT(GAMEPLAY::GET_HASH_KEY("MP0_CLTHS_AVAILABLE_HAIR_1"), -1, 1), 1);
  937.             setPlayerStatInt(selectedPlayer, STATS::STAT_SET_INT(GAMEPLAY::GET_HASH_KEY("MP0_CLTHS_AVAILABLE_HAIR_2"), -1, 1), 1);
  938.             setPlayerStatInt(selectedPlayer, STATS::STAT_SET_INT(GAMEPLAY::GET_HASH_KEY("MP0_CLTHS_AVAILABLE_HAIR_3"), -1, 1), 1);
  939.             setPlayerStatInt(selectedPlayer, STATS::STAT_SET_INT(GAMEPLAY::GET_HASH_KEY("MP0_CLTHS_AVAILABLE_HAIR_4"), -1, 1), 1);
  940.             setPlayerStatInt(selectedPlayer, STATS::STAT_SET_INT(GAMEPLAY::GET_HASH_KEY("MP0_CLTHS_AVAILABLE_HAIR_5"), -1, 1), 1);
  941.             setPlayerStatInt(selectedPlayer, STATS::STAT_SET_INT(GAMEPLAY::GET_HASH_KEY("MP0_CLTHS_AVAILABLE_HAIR_6"), -1, 1), 1);
  942.             setPlayerStatInt(selectedPlayer, STATS::STAT_SET_INT(GAMEPLAY::GET_HASH_KEY("MP0_CLTHS_AVAILABLE_HAIR_7"), -1, 1), 1); break;
  943.         case 6:
  944.             setPlayerStatInt(selectedPlayer, STATS::STAT_SET_INT(GAMEPLAY::GET_HASH_KEY("MP0_AWD_FM_DM_WINS"), 50, 1), 1);
  945.             setPlayerStatInt(selectedPlayer, STATS::STAT_SET_INT(GAMEPLAY::GET_HASH_KEY("MP0_AWD_FM_TDM_MVP"), 50, 1), 1);
  946.             setPlayerStatInt(selectedPlayer, STATS::STAT_SET_INT(GAMEPLAY::GET_HASH_KEY("MP0_AWD_FM_DM_TOTALKILLS"), 500, 1), 1);
  947.             setPlayerStatInt(selectedPlayer, STATS::STAT_SET_BOOL(GAMEPLAY::GET_HASH_KEY("MP0_AWD_FMATTGANGHQ"), 1, 1), 1);
  948.             setPlayerStatInt(selectedPlayer, STATS::STAT_SET_INT(GAMEPLAY::GET_HASH_KEY("MP0_AWD_FMBBETWIN"), 50000, 1), 1);
  949.             setPlayerStatInt(selectedPlayer, STATS::STAT_SET_INT(GAMEPLAY::GET_HASH_KEY("MP0_AWD_FMWINEVERYGAMEMODE"), 1, 1), 1);
  950.             setPlayerStatInt(selectedPlayer, STATS::STAT_SET_INT(GAMEPLAY::GET_HASH_KEY("MP0_AWD_FMRACEWORLDRECHOLDER"), 1, 1), 1);
  951.             setPlayerStatInt(selectedPlayer, STATS::STAT_SET_INT(GAMEPLAY::GET_HASH_KEY("MP0_AWD_FMFULLYMODDEDCAR"), 1, 1), 1);
  952.             setPlayerStatInt(selectedPlayer, STATS::STAT_SET_INT(GAMEPLAY::GET_HASH_KEY("MP0_AWD_FMMOSTKILLSSURVIVE"), 1, 1), 1);
  953.             setPlayerStatInt(selectedPlayer, STATS::STAT_SET_INT(GAMEPLAY::GET_HASH_KEY("MP0_AWD_FMKILL3ANDWINGTARACE"), 1, 1), 1);
  954.             setPlayerStatInt(selectedPlayer, STATS::STAT_SET_INT(GAMEPLAY::GET_HASH_KEY("MP0_AWD_FMKILLSTREAKSDM"), 1, 1), 1);
  955.             setPlayerStatInt(selectedPlayer, STATS::STAT_SET_INT(GAMEPLAY::GET_HASH_KEY("MP0_AWD_FMKILLBOUNTY"), 25, 1), 1);
  956.             setPlayerStatInt(selectedPlayer, STATS::STAT_SET_INT(GAMEPLAY::GET_HASH_KEY("MP0_AWD_LAPDANCES"), 25, 1), 1);
  957.             setPlayerStatInt(selectedPlayer, STATS::STAT_SET_INT(GAMEPLAY::GET_HASH_KEY("MP0_AWD_CAR_BOMBS_ENEMY_KILLS"), 25, 1), 1);
  958.             setPlayerStatInt(selectedPlayer, STATS::STAT_SET_INT(GAMEPLAY::GET_HASH_KEY("MP0_AWD_SECURITY_CARS_ROBBED"), 25, 1), 1);
  959.             setPlayerStatInt(selectedPlayer, STATS::STAT_SET_INT(GAMEPLAY::GET_HASH_KEY("MP0_AWD_HOLD_UP_SHOPS"), 20, 1), 1);
  960.             setPlayerStatInt(selectedPlayer, STATS::STAT_SET_INT(GAMEPLAY::GET_HASH_KEY("MP0_AWD_FMREVENGEKILLSDM"), 50, 1), 1);
  961.             setPlayerStatInt(selectedPlayer, STATS::STAT_SET_INT(GAMEPLAY::GET_HASH_KEY("MP0_AWD_RACES_WON"), 50, 1), 1);
  962.             setPlayerStatInt(selectedPlayer, STATS::STAT_SET_INT(GAMEPLAY::GET_HASH_KEY("MP0_PLAYER_HEADSHOTS"), 500, 1), 1);
  963.             setPlayerStatInt(selectedPlayer, STATS::STAT_SET_INT(GAMEPLAY::GET_HASH_KEY("MP0_DB_PLAYER_KILLS"), 1000, 1), 1); break;
  964.         case 7:
  965.             setPlayerStatInt(selectedPlayer, STATS::STAT_SET_INT(GAMEPLAY::GET_HASH_KEY("MP0_BAD_SPORT_BITSET"), 0, 0), 1);
  966.             setPlayerStatInt(selectedPlayer, STATS::STAT_SET_INT(GAMEPLAY::GET_HASH_KEY("MP0_MPPLY_WAS_I_BAD_SPORT"), 0, 0), 1);
  967.             setPlayerStatInt(selectedPlayer, STATS::STAT_SET_INT(GAMEPLAY::GET_HASH_KEY("MP0_MPPLY_OVERALL_BADSPORT"), 0, 0), 1);
  968.             setPlayerStatInt(selectedPlayer, STATS::STAT_SET_INT(GAMEPLAY::GET_HASH_KEY("MP0_MPPLY_CHAR_IS_BADSPORT"), 0, 0), 1);
  969.             setPlayerStatInt(selectedPlayer, STATS::STAT_SET_INT(GAMEPLAY::GET_HASH_KEY("MP0_MPPLY_BECAME_BADSPORT_NUM"), 0, 0), 1);
  970.             setPlayerStatInt(selectedPlayer, STATS::STAT_SET_INT(GAMEPLAY::GET_HASH_KEY("MP0_MPPLY_DESTROYED_PVEHICLES"), 0, 0), 1); break;
  971.         case 8:
  972.             setPlayerStatInt(selectedPlayer, STATS::STAT_SET_INT(GAMEPLAY::GET_HASH_KEY("MP0_BAD_SPORT_BITSET"), 1, 1), 1);
  973.             setPlayerStatInt(selectedPlayer, STATS::STAT_SET_INT(GAMEPLAY::GET_HASH_KEY("MP0_MPPLY_WAS_I_BAD_SPORT"), 1, 1), 1);
  974.             setPlayerStatInt(selectedPlayer, STATS::STAT_SET_INT(GAMEPLAY::GET_HASH_KEY("MP0_MPPLY_OVERALL_BADSPORT"), 1, 1), 1);
  975.             setPlayerStatInt(selectedPlayer, STATS::STAT_SET_INT(GAMEPLAY::GET_HASH_KEY("MP0_MPPLY_CHAR_IS_BADSPORT"), 1, 1), 1);
  976.             setPlayerStatInt(selectedPlayer, STATS::STAT_SET_INT(GAMEPLAY::GET_HASH_KEY("MP0_MPPLY_BECAME_BADSPORT_NUM"), 1, 1), 1);
  977.             setPlayerStatInt(selectedPlayer, STATS::STAT_SET_INT(GAMEPLAY::GET_HASH_KEY("MP0_MPPLY_DESTROYED_PVEHICLES"), 1, 1), 1); break;
  978.         case 9: setPlayerStatInt(selectedPlayer, STATS::STAT_SET_INT(GAMEPLAY::GET_HASH_KEY("MPPLY_VEHICLE_ID_ADMIN_WEB"), 117401876, 1), 1); break;
  979.         case 10: setPlayerStatInt(selectedPlayer, STATS::STAT_SET_INT(GAMEPLAY::GET_HASH_KEY("MPPLY_VEHICLE_SELL_TIME"), 0, 1), 1); break;
  980.         case 11: setPlayerStatInt(selectedPlayer, STATS::STAT_SET_INT(GAMEPLAY::GET_HASH_KEY("MP0_SHOOTING_ABILITY"), 1000, true), 1); break;
  981.         }
  982.  
  983. //=========================================================
  984. //=========================================================
  985. //=========================================================
  986. // Funcoes trolagem players
  987.  
  988. addOption("Non Host KICK");//case 1
  989.         addOption("De-Rank(SPAM)");//case 2
  990.         addOption("Set Passive on");//case 3
  991.         addOption("Set Passive Off");//case 4
  992.         addOption("Fake Leave");//case 5
  993.         addOption("Force Into Golf");//case 6
  994.         addOption("Reset View");//case 7
  995.         addOption("Remove Wanted Level");//case 4
  996.        
  997.         case 1: kickPlayerNonHost(selectedPlayer); break;
  998.        case 2: givePlayerRP(selectedPlayer, -200000); break;
  999.        case 3: setPlayerPassiveModeOn(selectedPlayer); break;
  1000.        case 4: setPlayerPassiveModeOff(selectedPlayer); break;
  1001.        case 5: makePlayerFakeLeave(selectedPlayer); break;
  1002.        case 6: teleportPlayerIntoGolfEvent(selectedPlayer); break;
  1003.        case 7: resetPlayerView(selectedPlayer); break;
  1004.        
  1005.        
  1006.        
  1007. namespace PlayerMods
  1008.  {
  1009.     namespace eventCreator
  1010.     {
  1011.         void callScriptEvent(ScriptArg *args, int argsCount, unsigned int playerBits)
  1012.         {
  1013.             SCRIPT::TRIGGER_SCRIPT_EVENT(1, args, argsCount, playerBits);
  1014.         }
  1015.     };
  1016. };
  1017.  
  1018. void removePlayerWantedLevel(int player) {
  1019.     ScriptArg args[2];
  1020.     args[0].i = 356;
  1021.     args[1].i = player;
  1022.     unsigned int bits = (1 << player);
  1023.     PlayerMods::eventCreator::callScriptEvent(args, 3, bits);
  1024. }
  1025.        
  1026.        void resetPlayerView(int player) {
  1027.     ScriptArg args[3];
  1028.     args[0].i = 0x2;
  1029.     args[1].i = player;
  1030.     args[2].i = 0x2e;//46
  1031.     unsigned int bits = (1 << player);
  1032.     PlayerMods::eventCreator::callScriptEvent(args, 3, bits);
  1033. }
  1034.  
  1035.        void teleportPlayerIntoGolfEvent(int player) {//Basicallly Forced
  1036.     ScriptArg args[3];
  1037.     args[0].i = 0x3;
  1038.     args[1].i = player;
  1039.     args[2].i = 0x37;
  1040.     unsigned int bits = (1 << player);
  1041.     PlayerMods::eventCreator::callScriptEvent(args, 3, bits);
  1042. }
  1043.        
  1044.        void kickPlayerNonHost(int player) {//NON HOSt KICK HECK YEAH
  1045.     //0x00D003DFB4+10*0x4 = args
  1046.     unsigned int playerBit = (1 << player);
  1047.     //0x2 0x7 0x35     and 0xA was me so idk...
  1048.     ScriptArg args[3] = { 0x2, player, 0x35 };//0x35 is the speccial one I guess
  1049.  
  1050.     //first arg is always 1
  1051.     //last arg is always the bit thing
  1052.     //second arg meh
  1053.     //third arg is the size of the data
  1054.     SCRIPT::TRIGGER_SCRIPT_EVENT(1, args, 3, playerBit);
  1055. }
  1056.  
  1057. void givePlayerRP(int player, int amount, int unk1 = -1, int unk2 = 1)
  1058. {
  1059.     ScriptArg args[5];
  1060.     args[0].i = 0xD8;//216
  1061.     args[1].i = player;
  1062.     args[2].i = 0xffffffff - amount + 1;//46
  1063.     args[3].i = 0;//-1   0 is partner, else is gen
  1064.     args[4].i = 0;//unk2;//1
  1065.     unsigned int bits = (1 << player);
  1066.     PlayerMods::eventCreator::callScriptEvent(args, 5, bits);
  1067. }
  1068.  
  1069. void setPlayerPassiveModeOn(int player) {
  1070.     ScriptArg args[3];
  1071.     args[0].i = 0x104;
  1072.     args[1].i = player;
  1073.     args[2].i = 0;
  1074.     unsigned int bits = (1 << player);
  1075.     PlayerMods::eventCreator::callScriptEvent(args, 3, bits);
  1076. }
  1077. void setPlayerPassiveModeOff(int player) {
  1078.     ScriptArg args[3];
  1079.     args[0].i = 0x118;
  1080.     args[1].i = player;
  1081.     args[2].i = 0;
  1082.     unsigned int bits = (1 << player);
  1083.     PlayerMods::eventCreator::callScriptEvent(args, 3, bits);
  1084. }
  1085.  
  1086. void makePlayerFakeLeave(int player)
  1087. {
  1088.     ScriptArg args[3];
  1089.     args[0].i = 0x2;
  1090.     args[1].i = player;
  1091.     args[2].i = 0x34;//46
  1092.     unsigned int bits = (1 << player);
  1093.     PlayerMods::eventCreator::callScriptEvent(args, 3, bits);
  1094. }
  1095.  
  1096.  
  1097.  
  1098. //------------------
  1099. int int_NetworkOptions[60];
  1100.  
  1101. case 10://FORCAR O TUTORIAL
  1102.                 int Args1[4];
  1103.                 Args1[0] = 3;//0x3
  1104.                 Args1[1] = int_NetworkOptions[0];
  1105.                 Args1[2] = 20;
  1106.                 Args1[3] = -1;
  1107.                 SCRIPT::TriggerScriptEvent(Args1, 4, int_NetworkOptions[0]);
  1108.                
  1109. //-----------------
  1110.  
  1111. //ADD DINHEIRO NO BANCO
  1112.  
  1113. int Args6[5];
  1114.                 Args6[0] = 219;//0xDB  
  1115.                 Args6[1] = 40;
  1116.                 Args6[2] = 100000000000;
  1117.                 Args6[3] = -1;
  1118.                 Args6[4] = 1;
  1119.                 SCRIPT::TriggerScriptEvent(Args6, 5, selectedPlayer);
  1120.  
  1121. //--------------------------------------------------------------
  1122. //--------------------------------------------------------------
  1123. //--------------------------------------------------------------
  1124. //--------------------NOVOS AVISOS DE MODDERS-------------------
  1125. //--------------------------------------------------------------
  1126. //--------------------------------------------------------------
  1127.  
  1128. //Protecoes
  1129.  
  1130.  
  1131. bool moneyProtection = true;
  1132. bool nonhostkickprotection = true;
  1133. bool fakeleavelobbyprotection = true;
  1134. bool resetviewprotection = true;
  1135. bool joinjobprotection = true;
  1136. bool blockappart = true;
  1137.  
  1138. bool removewantedprot = false;
  1139. bool passiveodeeeoff = false;
  1140. bool passiveodeeeon = false;
  1141. bool activateBroadcastAppprot = false;
  1142. bool messageprotection = false;
  1143. bool sondprot1 = false;
  1144. bool sondprot0 = false;
  1145. bool deactivateBroadcastAppprot = false;
  1146. bool onevonedeathmatchInviteprot = false;
  1147. bool tpArm = false;
  1148. bool tpdart = false;
  1149. bool whaterrrr = false;
  1150. bool tpgolf = false;
  1151.  
  1152.  
  1153.  
  1154. char scriptEventDialogText[100];
  1155. unsigned int scriptEventDetour(unsigned int r3, unsigned int senderData, unsigned int recieverData, unsigned int r6, unsigned int r7, unsigned int r8, unsigned int r9) {
  1156.     int addressOfArgs = r3 + 10 * 0x4;
  1157.     char *senderName = (char*)(*(int*)(senderData + 0x78) + 0x10);
  1158.  
  1159.         if (*(int*)addressOfArgs == 0x2 && *(int*)(addressOfArgs + 0x8) == 0x35)
  1160.             if (nonhostkickprotection)
  1161.             {
  1162.             snprintf(scriptEventDialogText, sizeof(scriptEventDialogText), "%s Tried To Kick U ~r~[ NONHOST KICK ]!", senderName);
  1163.         PRINT(scriptEventDialogText, 5000);
  1164.         *(int*)addressOfArgs = 0;
  1165.     }
  1166.    
  1167.     if (*(int*)addressOfArgs == 0x2/* && *(int*)(addressOfArgs+0x4) == PLAYER::PLAYER_ID()*/ && *(int*)(addressOfArgs + 0x8) == 0x34)
  1168.         {
  1169.             if (fakeleavelobbyprotection)
  1170.             {
  1171.         snprintf(scriptEventDialogText, sizeof(scriptEventDialogText), "%s Tried To Make U Fake Leave Lobby!", senderName);
  1172.         PRINT(scriptEventDialogText, 5000);
  1173.         *(int*)addressOfArgs = 0;
  1174.         }
  1175.     }
  1176.        
  1177.     if (*(int*)addressOfArgs == 0x2/* && *(int*)(addressOfArgs+0x4) == PLAYER::PLAYER_ID()*/ && *(int*)(addressOfArgs + 0x8) == 0x2e) {
  1178.         if (resetviewprotection)
  1179.         {
  1180.         snprintf(scriptEventDialogText, sizeof(scriptEventDialogText), "%s Tried To Reset Your View!", senderName);
  1181.         PRINT(scriptEventDialogText, 5000);
  1182.         *(int*)addressOfArgs = 0;}
  1183.     }
  1184.  
  1185.     if (*(int*)addressOfArgs == 0xD8)
  1186.     {
  1187.         if (antigiverp)
  1188.         {
  1189.         snprintf(scriptEventDialogText, sizeof(scriptEventDialogText), "%s Tried To Give/Remove %i RP!", senderName, *(int*)(addressOfArgs + 0x8));
  1190.         PRINT(scriptEventDialogText, 5000);
  1191.         *(int*)addressOfArgs = 0;
  1192.         }
  1193.     }
  1194.    
  1195.     if (*(int*)addressOfArgs == 0xDB)
  1196.     {
  1197.         if (moneyProtection)
  1198.         {
  1199.             snprintf(scriptEventDialogText, sizeof(scriptEventDialogText), "%s Tried To Give/Remove Money!", senderName);
  1200.             PRINT(scriptEventDialogText, 2000);
  1201.             *(int*)addressOfArgs = 0;
  1202.         }
  1203.         else
  1204.        
  1205. {
  1206.        
  1207.         }
  1208.     }
  1209.    
  1210.         if (*(int*)addressOfArgs == 0x23) {
  1211.             if (activateBroadcastAppprot) {
  1212.             snprintf(scriptEventDialogText, sizeof(scriptEventDialogText), "%s Tried To Activate Broadcast App!", senderName);
  1213.             PRINT(scriptEventDialogText, 2000);
  1214.             *(int*)addressOfArgs = 0;
  1215.         }
  1216.         else {
  1217.  
  1218.         }
  1219.     }
  1220.    
  1221.    
  1222.         if (*(int*)addressOfArgs == 0x98) {
  1223.             if (messageprotection)
  1224.             {
  1225.             snprintf(scriptEventDialogText, sizeof(scriptEventDialogText), "%s Tried Fake Join Job Message!", senderName);
  1226.             PRINT(scriptEventDialogText, 5000);
  1227.             *(int*)addressOfArgs = 0;
  1228.         }
  1229.     }
  1230.         if (*(int*)addressOfArgs == 0x29) {
  1231.             if (onevonedeathmatchInviteprot)
  1232.             {
  1233.             snprintf(scriptEventDialogText, sizeof(scriptEventDialogText), "%s Tried One Vone DeathMatch Invite!", senderName);
  1234.             PRINT(scriptEventDialogText, 5000);
  1235.             *(int*)addressOfArgs = 0;
  1236.         }
  1237.     }
  1238.         if (*(int*)addressOfArgs == 0x24) {
  1239.             if (deactivateBroadcastAppprot)
  1240.             {
  1241.             snprintf(scriptEventDialogText, sizeof(scriptEventDialogText), "%s  Tried To Desactivate Broadcast App!", senderName);
  1242.             PRINT(scriptEventDialogText, 5000);
  1243.             *(int*)addressOfArgs = 0;
  1244.         }
  1245.     }
  1246.         if (*(int*)addressOfArgs == 0x1E) {
  1247.             if (sondprot0)
  1248.             {
  1249.             snprintf(scriptEventDialogText, sizeof(scriptEventDialogText), "%s Tried Play Sound Type 0!", senderName);
  1250.             PRINT(scriptEventDialogText, 5000);
  1251.             *(int*)addressOfArgs = 0;
  1252.         }
  1253.     }
  1254.         if (*(int*)addressOfArgs == 0x1F) {
  1255.             if (sondprot1)
  1256.             {
  1257.             snprintf(scriptEventDialogText, sizeof(scriptEventDialogText), "%s Tried Play Sound Type !", senderName);
  1258.             PRINT(scriptEventDialogText, 5000);
  1259.             *(int*)addressOfArgs = 0;
  1260.         }
  1261.     }
  1262.    
  1263.         if (*(int*)addressOfArgs == 0x164) {
  1264.             if (removewantedprot)
  1265.             {
  1266.             snprintf(scriptEventDialogText, sizeof(scriptEventDialogText), "%s Tried Remove U Level!", senderName);
  1267.             PRINT(scriptEventDialogText, 5000);
  1268.             *(int*)addressOfArgs = 0;
  1269.         }
  1270.     }
  1271.    
  1272.         if (*(int*)addressOfArgs == 0x104) {
  1273.             if (passiveodeeeon)
  1274.             {
  1275.             snprintf(scriptEventDialogText, sizeof(scriptEventDialogText), "%s Tried Set U In Passive Mode ON!", senderName);
  1276.             PRINT(scriptEventDialogText, 5000);
  1277.             *(int*)addressOfArgs = 0;
  1278.         }
  1279.     }
  1280.    
  1281.         if (*(int*)addressOfArgs == 0x118) {
  1282.             if (passiveodeeeoff)
  1283.             {
  1284.             snprintf(scriptEventDialogText, sizeof(scriptEventDialogText), "%s Tried Set U In Passive Mode OFF!", senderName);
  1285.             PRINT(scriptEventDialogText, 5000);
  1286.             *(int*)addressOfArgs = 0;
  1287.         }
  1288.     }
  1289.    
  1290.  
  1291.    
  1292.         if (*(int*)addressOfArgs == 0x37) {
  1293.             if (tpgolf)
  1294.             {
  1295.             snprintf(scriptEventDialogText, sizeof(scriptEventDialogText), "%s Tried Teleport Into Golf Event!", senderName);
  1296.             PRINT(scriptEventDialogText, 5000);
  1297.             *(int*)addressOfArgs = 0;
  1298.         }
  1299.     }
  1300.    
  1301.         if (*(int*)addressOfArgs == 0x35) {
  1302.             if (tpArm)
  1303.             {
  1304.             snprintf(scriptEventDialogText, sizeof(scriptEventDialogText), "%s Tried Teleport Into Arm Wrestling Event!", senderName);
  1305.             PRINT(scriptEventDialogText, 5000);
  1306.             *(int*)addressOfArgs = 0;
  1307.         }
  1308.     }
  1309.  
  1310.         if (*(int*)addressOfArgs == 0x36) {
  1311.             if (tpdart)
  1312.             {
  1313.             snprintf(scriptEventDialogText, sizeof(scriptEventDialogText), "%s Tried Teleport Into Darts Event!", senderName);
  1314.             PRINT(scriptEventDialogText, 5000);
  1315.             *(int*)addressOfArgs = 0;
  1316.         }
  1317.     }
  1318.  
  1319.         if (*(int*)addressOfArgs == 0x187198C) {
  1320.             if (whaterrrr)
  1321.             {
  1322.             snprintf(scriptEventDialogText, sizeof(scriptEventDialogText), "%s Tried Change Weather!", senderName);
  1323.             PRINT(scriptEventDialogText, 5000);
  1324.             *(int*)addressOfArgs = 0;
  1325.         }
  1326.     }
  1327.  
  1328.     if (*(int*)addressOfArgs == 0x16C) {
  1329.         if (blockappart)
  1330.         {
  1331.         snprintf(scriptEventDialogText, sizeof(scriptEventDialogText), "%s Tried to force you into their apartment!", senderName);
  1332.         PRINT(scriptEventDialogText, 5000);
  1333.         *(int*)addressOfArgs = 0;
  1334.         }
  1335.     }
  1336.        
  1337.     if (*(int*)addressOfArgs == 0x3)
  1338.     {
  1339.         if (joinjobprotection)
  1340.         {
  1341.         if (*(int*)(addressOfArgs + 0x8) == 0x37 || *(int*)(addressOfArgs + 0x8) == 0x36 || *(int*)(addressOfArgs + 0x8) == 0x35)
  1342.         {
  1343.        
  1344.             snprintf(scriptEventDialogText, sizeof(scriptEventDialogText), "%s Tried to force you to join a job!", senderName);
  1345.             PRINT(scriptEventDialogText, 5000);
  1346.             *(int*)addressOfArgs = 0;
  1347.         }
  1348.         }
  1349.     }
  1350.     return _0x0012C8D60(r3, senderData, recieverData, r6, r7, r8, r9);
  1351. }
  1352.  
  1353. void setupScriptEventDetour() {
  1354.     *(int*)(0x1C6BD80) = *(int*)((int)&scriptEventDetour);
  1355.     *(int*)((0x1C6BD80 + 0x4)) = *(int*)( (int)&scriptEventDetour + 0x4);
  1356. }
  1357.  
  1358. //-------------------------------------------------------------------------------
  1359.  
  1360. //Suspencao Carros
  1361.  
  1362. bool bool_VehicleOptions[50];
  1363. int int_VehicleOptions[50];
  1364. float float_VehicleOptions[20];
  1365. int GPMA_stub[2] = { 0xA552E0, 0x1C85330 };
  1366.  
  1367. void vehicle_SetSuspensionHeight(float height)
  1368. {
  1369.     if (PED::IS_PED_IN_ANY_VEHICLE(PLAYER::PLAYER_PED_ID(), 0))
  1370.     {
  1371.         int veh = PED::GET_VEHICLE_PED_IS_IN(PLAYER::PLAYER_PED_ID(), 0);
  1372.         int address = get_ent_address(veh);
  1373.         *(float*)(address + 0xCEC) = height;
  1374.     }
  1375. }
  1376.  
  1377. //----------------------
  1378.  
  1379. int GET_VEHICLE_ADD(int Index)
  1380. {
  1381.     int Tmp = *(int*)(0x208D1B8);
  1382.     return *(int*)(Tmp + (Index * 0x04)) + 0x04;
  1383. }
  1384. void SET_HANDLING_MOD(int Index, int Mod, float Value)
  1385. {
  1386.     int Address = GET_VEHICLE_ADD(Index) + Mod;
  1387.     *(float*)(Address) = Value;
  1388. }
  1389.  
  1390.  
  1391. enum Handling
  1392. {
  1393.     Mass = 0x04,
  1394. InitialDragCoeff = 0x08,
  1395. vecCentreOfMass1 = 0x0C,
  1396. vecCentreOfMass2 = 0x10,
  1397. vecCentreOfMass3 = 0x14,
  1398. vecInertiaMultiplier1 = 0x1C,
  1399. vecInertiaMultiplier2 = 0x20,
  1400. vecInertiaMultiplier3 = 0x24,
  1401. PercentSubmerged = 0x2C,
  1402. DriveInertia = 0x40,
  1403. ClutchRateUpShift = 0x44,
  1404. ClutchRateDownShift = 0x48,
  1405. InitialDriveForce = 0x4C,
  1406. BrakeForce = 0x58,
  1407. AntiRollBarForce = 0xC8,
  1408. HandBrakeForce = 0x68,
  1409. TractionCurveMax = 0x74,
  1410. TractionCurveMin = 0x7C,
  1411. TractionSpringDMax = 0x8C,
  1412. LSpeedTracLossMult = 0x94,
  1413. CamberStiffnesss = 0xA4,
  1414. SuspensionForce = 0xA8,
  1415. SuspensionUpperLimit = 0xB4,
  1416. SuspensionLowerLimit = 0xB8,
  1417. SuspensionRaise = 0xBC,
  1418. RollCHeightFront = 0xD4,
  1419. RollCHeightRear = 0xD8,
  1420. SeatOffsetDistX = 0xF4,
  1421. SeatOffsetDistY = 0xF8,
  1422. SeatOffsetDistZ = 0xFC,
  1423. Velocity = 0x50,
  1424.  
  1425. CollisionDamageMult = 0xDC,
  1426. WeaponDamageMult = 0xE0,
  1427. DeformDamageMult = 0xE4,
  1428. EngineDamageMult = 0xE8,
  1429. PetrolTankVolume = 0xEC,
  1430. OilVolume = 0xF0,
  1431. MonetaryValue = 0x100,
  1432. strModelFlags = 0x104,
  1433. strHandlingFlags = 0x108,
  1434. strDamageFlags = 0x10C,
  1435.  
  1436. //Plane / Helicopter
  1437. Thrust = 0x140,
  1438. ThrustFallOff = 0x144,
  1439. ThrustVectoring = 0x148,
  1440. YawMult = 0x14C,
  1441. YawStabilise = 0x150,
  1442. SideSlipMult = 0x154,
  1443. RollMult = 0x158,
  1444. RollStabilise = 0x15C,
  1445. PitchMult = 0x160,
  1446. PitchStabilise = 0x164,
  1447. FormLiftMult = 0x168,
  1448. AttackLiftMult = 0x16C,
  1449. AttackDiveMult = 0x170,
  1450. GearDownDragV = 0x174,
  1451. GearDownLiftMult = 0x178,
  1452. WindMult = 0x17C,
  1453. MoveRes = 0x180,
  1454. vecTurnRes1 = 0x18C,
  1455. vecTurnRes2 = 0x190,
  1456. vecTurnRes3 = 0x194,
  1457. vecSpeedRes1 = 0x19C,
  1458. vecSpeedRes2 = 0x1A0,
  1459. vecSpeedRes3 = 0x1A4,
  1460. GearDoorFrontOpen = 0x1AC,
  1461. GearDoorRearOpen = 0x1B0,
  1462. GearDoorRearOpen2 = 0x1B4,
  1463. GearDoorRearMOpen = 0x1B8,
  1464. TurublenceMagMax = 0x1BC,
  1465. TurublenceForceMulti = 0x1C0,
  1466. TurubRollTorqueMulti = 0x1C4,
  1467. TurubPitchTorqueMulti = 0x1C8,
  1468. BodyDamageMult = 0x1CC,
  1469. InputSensitivity = 0x1D0,
  1470. OnGroundSpeedPeak = 0x1D4,
  1471. OnGroundSpeedCap = 0x1D8,
  1472. EngineOffGlideMulti = 0x1DC,
  1473.  
  1474. //Bikes
  1475. LeanFwdCOMMult = 0x140,
  1476. LeanFwdForceMult = 0x144,
  1477. LeanBakCOMMult = 0x148,
  1478. LeanBakForceMult = 0x14C,
  1479. DesLeanReturnFrac = 0x15C,
  1480. StickLeanMult = 0x160,
  1481. BrakingStabilityMult = 0x164,
  1482. InAirSteerMult = 0x168,
  1483. WheelieBalancePoint = 0x16C,
  1484. StoppieBalancePoint = 0x170,
  1485. WheelieSteerMult = 0x174,
  1486. RearBalanceMult = 0x178,
  1487. FrontBalanceMult = 0x17C,
  1488. BikeFrictionMult = 0x180,
  1489. BikeWheelFrictionMult = 0x184,
  1490. BikeLeanAngle = 0x188,
  1491. BikeSteerAngle = 0x18C,
  1492. JumpForce = 0x190,
  1493. };
  1494.  
  1495. addIntOption("BMX Jump Editor", &int_VehicleOptions[37], 0, 100, true);
  1496.         addIntOption("BMX Lean Forward Multiplier", &int_VehicleOptions[38], 0, 100, true);
  1497.         addIntOption("BMX Lean Backward Multiplier", &int_VehicleOptions[39], 0, 100, true);
  1498.         addIntOption("BMX Lean Forward Force", &int_VehicleOptions[40], 0, 100, true);
  1499.         addIntOption("BMX Lean Backward Force", &int_VehicleOptions[41], 0, 100, true);
  1500.         addIntOption("BMX In-Air Steer Multiplier", &int_VehicleOptions[42], 0, 100, true);
  1501.        
  1502.        
  1503.         case 1: SET_HANDLING_MOD(189, JumpForce, int_VehicleOptions[37]); break;
  1504.         case 2: SET_HANDLING_MOD(189, LeanFwdCOMMult, int_VehicleOptions[38]); break;
  1505.         case 3: SET_HANDLING_MOD(189, LeanBakCOMMult, int_VehicleOptions[39]); break;
  1506.         case 4: SET_HANDLING_MOD(189, LeanFwdForceMult, int_VehicleOptions[40]); break;
  1507.         case 5: SET_HANDLING_MOD(189, LeanBakForceMult, int_VehicleOptions[41]); break;
  1508.         case 6: SET_HANDLING_MOD(189, InAirSteerMult, int_VehicleOptions[42]); break;
  1509.  
  1510. //PLAYER HEIGTH
  1511.  
  1512. addFloatSwap("Player Height", &variavelFloatUsada, -10, 10, boolUsada, 0.1);
  1513.  
  1514.  
  1515. int GPMA_stub[2] = { 0xA552E0, 0x1C85330 };
  1516. int(*get_ent_address)(int peid) = (int(*)(int))&GPMA_stub;
  1517.  
  1518. //loop
  1519. if (boolUsada) {
  1520.         if (ENTITY::DOES_ENTITY_EXIST(PLAYER::PLAYER_PED_ID())){
  1521.             *(float*)(*(int*)(get_ent_address(PLAYER::PLAYER_PED_ID()) + 48) + 40) = variavelFloatUsada;
  1522.         }
  1523.     }
  1524.  
  1525.  
  1526.  
  1527.  
  1528.  
  1529.  
  1530.  
  1531.  
  1532.  
  1533.  
  1534.  
  1535.  
  1536.  
  1537.  
  1538.  
  1539. //static BOOL GET_PED_LAST_WEAPON_IMPACT_COORD(Ped ped, Vector3* coords) { return invoke<BOOL>(0x9B266079, ped, coords); } // 0x9B266079
  1540.  
  1541.  
  1542. static BOOL(*GET_PED_LAST_WEAPON_IMPACT_COORD)(Ped ped, int coordsfreeMem) = (BOOL(*)(Ped, int))&__GET_PED_LAST_WEAPON_IMPACT_COORD_t;
  1543.  
  1544. static BOOL GET_PED_LAST_WEAPON_IMPACT_COORD_MODIFYED(Ped ped, float coords[4]) {
  1545.     Vector3 in;
  1546.     ResetArgs();
  1547.     PushArg(ped);
  1548.     PushArg(&in);
  1549.     CallHash(0x9B266079, NativeArg);
  1550.     return GetResult<BOOL>();
  1551.     std::copy(GetDataResult<float*>(0), GetDataResult<float*>(0) + 4, coords);
  1552. } //  0x9B266079
  1553.  
  1554. template <typename R>
  1555. R GetDataResult(uint8_t index)
  1556. {
  1557.     R* Result;
  1558.     Result = (R*)NativeArg + 0x10 * (index + 4); //0x10030000
  1559.     return *(R*)Result;
  1560. }
  1561.  
  1562. static BOOL GET_PED_LAST_WEAPON_IMPACT_COORD_MODIFYED(Ped ped, Vector3 &coords) {
  1563.     float tmp[100]; ResetArgs(); PushArg(ped); PushArg(0x10030000);
  1564.     for (int i = 0; i < 3; i++)
  1565.         tmp[i] = *(float*)(0x10030000 + (i * 0x04));
  1566.     Vector3 vOut = FloatToVector(tmp[0], tmp[1], tmp[2]);
  1567.     coords = vOut;
  1568.     CallHash(0x9B266079, NativeArg);
  1569.     return GetResult<BOOL>();
  1570.  
  1571. } //  0x9B266079
  1572.  
  1573. static BOOL(*GET_PED_LAST_WEAPON_IMPACT_COORD)(Ped ped, int coordsfreeMem) = (BOOL(*)(Ped, int))&__GET_PED_LAST_WEAPON_IMPACT_COORD_t;
  1574.  
  1575.  
  1576. int hitsomething = 0, entityHandle = 0; Vector3 endCoords, surfaceNormal;
  1577. int getRaycastHandle(int type)
  1578. {
  1579.     /*Vector3 camrot = GET_GAMEPLAY_CAM_ROT(2);
  1580.     Vector3 campos = GET_GAMEPLAY_CAM_COORD();
  1581.     Vector3 selfvec = GET_ENTITY_FORWARD_VECTOR(PLAYER_PED_ID());
  1582.     Vector3 multiplied = { RotationToDirection(camrot).x * 1000.0f, RotationToDirection(camrot).y * 1000.0f, RotationToDirection(camrot).z * 1000.0f };
  1583.     int ray = _CAST_RAY_POINT_TO_POINT(campos.x + selfvec.x, campos.y + selfvec.y, campos.z + selfvec.z, campos.x + multiplied.x * 5000, campos.y + multiplied.y * 5000, campos.z + multiplied.z * 5000, type, 0, 7);
  1584.     return ray;*/
  1585.     Vector3 camPos = GET_GAMEPLAY_CAM_COORD();
  1586.     Vector3 camRot = GET_GAMEPLAY_CAM_ROT(2);
  1587.     float retz = camRot.z * 0.0174532924F;
  1588.     float retx = camRot.x * 0.0174532924F;
  1589.     float absx = ABSF(COS(retx));
  1590.     Vector3 camStuff = { SIN(retz) * absx * -1, COS(retz) * absx, SIN(retx) };
  1591.     return _CAST_RAY_POINT_TO_POINT(camPos.x, camPos.y, camPos.z, camPos.x + camStuff.x * 1000, camPos.y + camStuff.y * 1000, camPos.z + camStuff.z * 1000, type, 0, 7);
  1592. }
  1593.  
  1594. unsigned int *getGlobalPtr(int globalId)
  1595. {
  1596.     unsigned int **arr = (unsigned int **)(0x1E70370);
  1597.     return &arr[(globalId >> 18) & 0x3F][globalId & 0x3FFFF];
  1598.  
  1599.     //return (unsigned int *)(*(DWORD *)(0x000000 + 8i64 * ((globalId >> 18) & 0x3F) + moduleHandle) //reversed
  1600.     //  + 8i64 * (globalId & 0x3FFFF));
  1601. }
  1602.  
  1603.  
  1604.             //SetGlobal(1325955, 1662, 1337);
  1605.            
  1606.             *getGlobalPtr(OFF_THE_RADAR_TIME) = 1337; //DEADC0DE time
  1607.  
  1608.             //262145 wanted lvl
  1609.             //SetGlobal(2394218, 55, GET_NETWORK_TIME());
  1610.            
  1611.             //SetGlobal(2387908, 169, 1);
  1612.             //SetGlobal(2387908 + 223, 169, 1);
  1613.             //SetGlobal(2387908[PLAYER_ID() * 223], 169, 1);
  1614.  
  1615.             //SetGlobal(2390201, 171, 1);
  1616.             //SetGlobal(2390201 + 223, 171, 1);
  1617.             //SetGlobal2390201[PLAYER_ID() * 223], 171, 1);
  1618.  
  1619.             /*SetGlobal(2387908, 169, 1);
  1620.  
  1621.             SetGlobal(2390201, 171, 1);
  1622.  
  1623.             SetGlobal(2387908 + 223, 169, 1);
  1624.  
  1625.             SetGlobal(2387908 + PLAYER_ID() * 223, 169, 1);
  1626.  
  1627.             SetGlobal(2387908 + PLAYER_ID() + 223, 169, 1);
  1628.  
  1629.             SetGlobal(2387908 + PLAYER_ID(), 169, 1);*/
  1630.  
  1631.  
  1632. void btnOffRadar_Click(object sender, EventArgs e)
  1633. {
  1634.     if (ScriptGlobals.Read(2390201 + (uint)(NativeFuncs.player_id() * 223) + 170) == 0)
  1635.     {
  1636.         ScriptGlobals.Write(2390201 + (uint)(NativeFuncs.player_id() * 223) + 170, 1);
  1637.         ScriptGlobals.Write(2394218 + 55, 2147483647);
  1638.     }
  1639.     else
  1640.         ScriptGlobals.Write(2390201 + (uint)(NativeFuncs.player_id() * 223) + 170, 0);
  1641. }
  1642.  
  1643.  
  1644. if (featureTest)
  1645.     {
  1646.         Vector3 closestcoords = GET_ENTITY_COORDS(PLAYER_PED_ID(), FALSE);
  1647.         getNearEntities(PLAYER_PED_ID(), 1, 1, 7, 2, NULL);
  1648.  
  1649. for (int i = 0; 0 < sizeof(); i++)
  1650. {
  1651. }
  1652.         EntitiesNearBy[i] = GET_ENTITY_ATTACHED_TO(PLAYER_PED_ID());
  1653.         EntitiesNearBy[i] = GET_CLOSEST_VEHICLE(closestcoords.x, closestcoords.y, closestcoords.z, 10.0f, 0, CARS_N_MOTOCYCLES_2);
  1654.         EntitiesNearBy[i] = GET_RANDOM_PED_AT_COORD(closestcoords.x, closestcoords.y, closestcoords.z, 10.0f, 10.0f, 10.0, -1);
  1655.         if (DOES_ENTITY_EXIST(EntitiesNearBy[i]))
  1656.         {
  1657.             if (!NETWORK_HAS_CONTROL_OF_ENTITY(EntitiesNearBy[i]))
  1658.                 NETWORK_REQUEST_CONTROL_OF_ENTITY(EntitiesNearBy[i]);
  1659.             else
  1660.             {
  1661.                 DETACH_ENTITY(EntitiesNearBy[i], 1, 1);
  1662.                 SET_ENTITY_AS_MISSION_ENTITY(EntitiesNearBy[i], 1, 1);
  1663.                 DELETE_ENTITY(&EntitiesNearBy[i]);
  1664.             }
  1665.         }
  1666.    
  1667.  
  1668.  
  1669. int funcaddr = 0x139ECB0;//0x13321EC;
  1670. ((void(*)(int, unsigned int, int, int, int, int, int, int, int))&funcaddr)(0x40022280, 0x1004004C, 1, 0, 0, 0, 0x540, 0x4ec, 0x59);
  1671.  
  1672.  
  1673. GetClosestVehicle
  1674. __int64 __fastcall sub_4549C8(__int64 a1, float a2, unsigned int a3, unsigned int a4)
  1675. {
  1676.   signed int v4; // ebx@1
  1677.   unsigned int v5; // er14@1
  1678.   __int64 v6; // rdi@1
  1679.   signed int v7; // ebp@1
  1680.   float v8; // xmm6_4@1
  1681.   int v9; // eax@2
  1682.   unsigned int v10; // xmm1_4@3
  1683.   unsigned int v11; // xmm2_4@3
  1684.   float v12; // xmm6_4@3
  1685.   __int64 v13; // rcx@3
  1686.   unsigned int v14; // edi@3
  1687.   __int64 v15; // r9@4
  1688.   int v16; // eax@5
  1689.   __int64 v17; // rax@6
  1690.   __int64 v18; // rsi@9
  1691.   __m128 v19; // xmm2@12
  1692.   __m128i v20; // xmm2@12
  1693.   float v21; // xmm7_4@12
  1694.   int v22; // eax@13
  1695.   int v24; // [sp+20h] [bp-58h]@2
  1696.   __m128 v25; // [sp+30h] [bp-48h]@3
  1697.   int v26; // [sp+90h] [bp+18h]@1
  1698.  
  1699.   v4 = 0;
  1700.   v5 = a4;
  1701.   v6 = a1;
  1702.   v7 = 0;
  1703.   v8 = a2;
  1704.   v26 = (v26 | 0xFFFFFFF) & 0xFFFFFFF;
  1705.   if ( !a3
  1706.     || (v24 = 0xFFFF,
  1707.         sub_14079692C(a3, &v24),
  1708.         LOWORD(v26) = v24,
  1709.         v9 = v26 | 0xFFF0000,
  1710.         _bittestandreset((unsigned int *)&v9, 0x1Cu),
  1711.         v26 = v9,
  1712.         (unsigned __int16)v9 != 0xFFFF) )
  1713.   {
  1714.     v10 = *(_DWORD *)(v6 + 8);
  1715.     v11 = *(_DWORD *)(v6 + 16);
  1716.     v12 = v8 * v8;
  1717.     v13 = *(_QWORD *)VehiclePool;
  1718.     v25.m128_i32[0] = *(_DWORD *)v6;
  1719.     *(unsigned __int64 *)((char *)&v25.m128_u64[0] + 4) = __PAIR__(v11, v10);
  1720.     v14 = *(_DWORD *)(v13 + 8);
  1721.     if ( v14 )
  1722.     {
  1723.       do
  1724.       {
  1725.         --v14;
  1726.         v15 = *(_QWORD *)VehiclePool;
  1727.         if ( (signed int)v14 < *(_DWORD *)(*(_QWORD *)VehiclePool + 8i64)
  1728.           && (v16 = *(_DWORD *)(*(_QWORD *)(v15 + 48) + 4 * ((unsigned __int64)v14 >> 5)),
  1729.               _bittest((const unsigned int *)&v16, v14 & 0x1F)) )
  1730.           v17 = *(_QWORD *)v15 + v14 * *(_QWORD *)(v15 + 24);
  1731.         else
  1732.           v17 = 0i64;
  1733.         if ( v17 )
  1734.           v18 = *(_QWORD *)v17;
  1735.         else
  1736.           v18 = 0i64;
  1737.         if ( v18 )
  1738.         {
  1739.           v19 = _mm_sub_ps(*(__m128 *)(v18 + 144), v25);
  1740.           v20 = (__m128i)_mm_mul_ps(v19, v19);
  1741.           LODWORD(v21) = (unsigned __int128)_mm_add_ps(
  1742.                                               _mm_add_ps(
  1743.                                                 (__m128)_mm_shuffle_epi32(v20, 0),
  1744.                                                 (__m128)_mm_shuffle_epi32(v20, 85)),
  1745.                                               (__m128)_mm_shuffle_epi32(v20, -86));
  1746.           if ( v21 < v12 )
  1747.           {
  1748.             v22 = sub_140796DD8(&v26);
  1749.             if ( (unsigned __int8)sub_13FF39C34(v18, (unsigned int)v22, v5) )
  1750.             {
  1751.               v7 = sub_13FC7F104(v18);
  1752.               v12 = v21;
  1753.             }
  1754.           }
  1755.         }
  1756.       }
  1757.       while ( v14 );
  1758.       if ( v7 )
  1759.         sub_13FC728D0(v7);
  1760.     }
  1761.     v4 = v7;
  1762.   }
  1763.   return (unsigned int)v4;
  1764. }
  1765. __int64 __fastcall get_entity_type(int a1)
  1766. {
  1767.     __int64 result; // rax@1
  1768.     signed int v2; // ecx@1
  1769.     char v3;
  1770.  
  1771.     result = GetAddressOfEntity(a1);
  1772.     v2 = 0;
  1773.     if (result)
  1774.     {
  1775.         v3 = *(_BYTE *)(result + 40);
  1776.         if (v3 == 4)
  1777.         {
  1778.             result = 1i64;
  1779.         }
  1780.         else if (v3 == 3)
  1781.         {
  1782.             result = 2i64;
  1783.         }
  1784.         else
  1785.         {
  1786.             if (v3 == 5)
  1787.                 v2 = 3;
  1788.             result = (unsigned int)v2;
  1789.         }
  1790.     }
  1791.     return result;
  1792. }
  1793.  
  1794. char __fastcall is_model_a_vehicle(__int64 a1)
  1795. {
  1796.     char v1; // bl@1
  1797.     __int64 v2; // rax@1
  1798.     int v4; // [sp+38h] [bp+10h]@1
  1799.    
  1800.     v1 = 0;
  1801.     v4 = 0xFFFF;
  1802.     LODWORD(v2) = sub_7FF601C276A4(a1, &v4);
  1803.     if (v2)
  1804.     {
  1805.         v1 = 0;
  1806.         if ((*(_BYTE *)(v2 + 157) & 0x1F) == 5)
  1807.             v1 = 1;
  1808.     }
  1809.     return v1;
  1810. }
  1811.  
  1812. int64 PLAYER_ID()
  1813. {
  1814.     int64 v0; // rax@2
  1815.     __int64 result; // rax@2
  1816.    
  1817.     if (byte_7FF602DDAB4E)
  1818.     {
  1819.         LODWORD(v0) = sub_7FF60170275C(off_7FF602370AA0);
  1820.         result = *(_BYTE *)(v0 + 45);
  1821.     }
  1822.     else
  1823.     {
  1824.         result = 0i64;
  1825.     }
  1826.     return result;
  1827. }
  1828.  
  1829.  
  1830.  
  1831. // GTA5_dump_Static_1604.1_1.46
  1832. int __fastcall sub_14113F31C(__int64 a1, __int64 a2)
  1833. {
  1834.   __int64 v2; // rdi@1
  1835.   char v3; // bl@1
  1836.   __int64 v4; // rax@1
  1837.   __int64 v5; // r8@1
  1838.   __int64 v6; // r9@1
  1839.   __int64 v7; // rax@1
  1840.  
  1841.   v2 = a1;
  1842.   v3 = a2;
  1843.   LOBYTE(a2) = 1;
  1844.   sub_1416036D8(qword_14286B510, a2);
  1845.   LODWORD(v4) = sub_141568DC4(qword_142DF38C0);
  1846.   v6 = v4;
  1847.   v7 = 0i64;
  1848.   if ( v6 )
  1849.   {
  1850.     LOBYTE(v5) = v3;
  1851.     LODWORD(v7) = sub_141128C60(v6, *(_WORD *)(*(_QWORD *)(v2 + 208) + 10i64), v5);
  1852.   }
  1853.   return sub_141613B54(qword_14286B510, v7);
  1854. }
  1855.  
  1856.  
  1857. void __fastcall sub_14113F31C(__int64 a1, __int64 a2)
  1858. {
  1859.   __int64 v2; // rdi@1
  1860.   char v3; // bl@1
  1861.   _DWORD *v4; // r9@1
  1862.   __int64 v5; // rax@1
  1863.  
  1864.   v2 = a1;
  1865.   v3 = a2;
  1866.   LOBYTE(a2) = 1;
  1867.   sub_1416036D8(qword_14286B510, a2);
  1868.   v4 = sub_141568DC4(qword_142DF38C0);
  1869.   v5 = 0i64;
  1870.   if ( v4 )
  1871.     v5 = sub_141128C60((__int64)v4, *(_WORD *)(*(_QWORD *)(v2 + 208) + 10i64), v3);
  1872.   sub_141613B54(qword_14286B510, v5);
  1873. }
  1874.  
  1875.  
  1876.  
  1877.  
  1878.  
  1879. template<typename T>
  1880. T Invoke(unsigned int a_uiNativeHash, unsigned int a_uiArgCount, ...)
  1881. {
  1882.     T* Result;
  1883.  
  1884.     va_list l_VaList;
  1885.     unsigned int l_uiIndex;
  1886.     unsigned int l_uiReadCount = 0;
  1887.  
  1888.     va_start(l_VaList, a_uiArgCount);
  1889.     for (l_uiIndex = 0; l_uiIndex < 16; l_uiIndex++)
  1890.     {
  1891.         if (l_uiIndex < a_uiArgCount)
  1892.             g_pArgs[l_uiIndex] = va_arg(l_VaList, unsigned int);
  1893.         else
  1894.             g_pArgs[l_uiIndex] = 0;
  1895.     }
  1896.     va_end(l_VaList);
  1897.  
  1898.     //DbgPrint("Calling: 0x%08X\n", a_uiNativeHash);
  1899.  
  1900.     if (a_uiNativeHash != PLAYER_ID_HASH)
  1901.         ((void(*)(struct NativeArg*))GetNativeFunction(a_uiNativeHash))(&g_NativeArg);
  1902.     else
  1903.         Original_Player_ID(&g_NativeArg);
  1904.  
  1905.     Result = (T*)&g_pArgs[l_uiReadCount];
  1906.  
  1907.     l_uiReadCount += sizeof(T);
  1908.     if ((sizeof(T) % 4) != 0)
  1909.         l_uiReadCount += 4 - (sizeof(T) % 4);
  1910.  
  1911.     return *(T*)Result;
  1912. }
  1913.  
  1914. void draw_menu(int a_iPosition, int a_iMenuItemCount, char ** a_pcMenu, char* a_pcTitle)
  1915. {
  1916.         GRAPHICS::DRAW_RECT(0.90f, 0.2f, 0.15f, 0.05f, 0xFF, 0, 0, 0x90);
  1917.        
  1918.         GRAPHICS::DRAW_RECT(0.90f, 0.225f + ((0.035f* (a_iMenuItemCount > 16 ? 16 : a_iMenuItemCount))/2), 0.15f, 0.035f* (a_iMenuItemCount > 16 ? 16 : a_iMenuItemCount), 0xFF, 0, 0, 0x30);
  1919.         //GRAPHICS::DRAW_RECT(0.90f, 0.50f, 0.15f, 0.55f, 0xFF, 0, 0, 0x30);
  1920.         PrintToScreen(a_pcTitle, 0.90f, 0.18f, 255, 255, 255, 255, 0.8f, 0.8f, 1, 1);
  1921.  
  1922.         if (a_iMenuItemCount < 16)
  1923.         {
  1924.                 GRAPHICS::DRAW_RECT(0.90f, 0.2425f + (float).035f*(a_iPosition), 0.15f, 0.035f, 0xFF, 0, 0, 0x80);
  1925.                 for (int l_iIndex = 0; l_iIndex < a_iMenuItemCount; l_iIndex++)
  1926.                 {                      
  1927.                         PrintToScreen(a_pcMenu[l_iIndex], 0.90f, (0.2225f + (l_iIndex * .035f)), 255, 255, 255, 255, 0.4f, 0.4f, 1, 0);
  1928.                 }
  1929.         }
  1930.         else
  1931.         {
  1932.                 if (a_iPosition < 7)
  1933.                 {
  1934.                         GRAPHICS::DRAW_RECT(0.90f, 0.2425f + (float).035f*(a_iPosition), 0.15f, 0.035f, 0xFF, 0, 0, 0x80);
  1935.                         for (int l_iIndex = 0; l_iIndex < 16; l_iIndex++)
  1936.                         {      
  1937.                                 PrintToScreen(a_pcMenu[l_iIndex], 0.90f, (0.2225f + (l_iIndex * .035f)), 255, 255, 255, 255, 0.4f, 0.4f, 1, 0);
  1938.                         }
  1939.                 }
  1940.                 else
  1941.                 {
  1942.                         if (a_iPosition < a_iMenuItemCount - 8)
  1943.                         {
  1944.                                 GRAPHICS::DRAW_RECT(0.90f, 0.2425f + (float).035f*(7), 0.15f, 0.035f, 0xFF, 0, 0, 0x80);
  1945.                                 int l_iDrawIndex = 0;
  1946.                                 for (int l_iIndex = a_iPosition - 7; l_iIndex < a_iPosition + 9; l_iIndex++)
  1947.                                 {
  1948.                                         PrintToScreen(a_pcMenu[l_iIndex], 0.90f, (0.2225f + (l_iDrawIndex* .035f)), 255, 255, 255, 255, 0.4f, 0.4f, 1, 0);
  1949.                                         l_iDrawIndex++;
  1950.                                 }
  1951.                         }
  1952.                         else
  1953.                         {
  1954.                                 GRAPHICS::DRAW_RECT(0.90f, 0.2425f + (float).035f*(16 - (a_iMenuItemCount - a_iPosition)), 0.15f, 0.035f, 0xFF, 0, 0, 0x80);
  1955.                                 int l_iDrawIndex = 0;
  1956.                                 for (int l_iIndex = a_iMenuItemCount - 16; l_iIndex < a_iMenuItemCount; l_iIndex++)
  1957.                                 {
  1958.                                         PrintToScreen(a_pcMenu[l_iIndex], 0.90f, (0.2225f + (l_iDrawIndex* .035f)), 255, 255, 255, 255, 0.4f, 0.4f, 1, 0);
  1959.                                         l_iDrawIndex++;
  1960.                                 }
  1961.                         }
  1962.                 }
  1963.         }
  1964. }
  1965.  
  1966. void PrintToScreen(char *str, float x, float y, int r, int g, int b, int a, float scaleX, float scaleY, int centerText, int font)
  1967. {
  1968.         UI::SET_TEXT_FONT(font);
  1969.         UI::SET_TEXT_COLOUR(r, g, b, a);
  1970.         UI::SET_TEXT_SCALE(scaleX, scaleY);
  1971.         UI::SET_TEXT_OUTLINE();
  1972.         UI::SET_TEXT_CENTRE(centerText);
  1973.         UI::_SET_TEXT_ENTRY("STRING");
  1974.         UI::_ADD_TEXT_COMPONENT_STRING(str);
  1975.         UI::_DRAW_TEXT(x, y);
  1976. }
  1977.  
  1978. void HeistHUD(char* text)
  1979. {
  1980.  
  1981. }
  1982. void InfoMessage(char* text)
  1983. {
  1984.  
  1985. }
  1986.  
  1987. void MPMESSAGE(char* msg, char* desc)
  1988. {
  1989.     featureBigMPMessge = true;
  1990.     BigMPMessagemgs = msg;
  1991.     BigMPMessagedesc = desc;
  1992.     PLAY_SOUND_FRONTEND(-1, "RACE_PLACED", "HUD_AWARDS");
  1993. }
  1994.  
  1995. if (featureBigMPMessge)
  1996.     {
  1997.         if (!HAS_SCALEFORM_MOVIE_LOADED(SFBigMPMessage))
  1998.             SFBigMPMessage = REQUEST_SCALEFORM_MOVIE("MP_BIG_MESSAGE_FREEMODE");
  1999.         else
  2000.         {
  2001.             if (GET_GAME_TIMER() > featureTimeMPMessage) {
  2002.                 featureTimeMPMessage = GET_GAME_TIMER() + 20;
  2003.                 _PUSH_SCALEFORM_MOVIE_FUNCTION(SFBigMPMessage, "SHOW_SHARD_CREW_RANKUP_MP_MESSAGE"); //SHOW_SHARD_CENTERED_TOP_MP_MESSAGE
  2004.                 set_text_component(BigMPMessagemgs);
  2005.                 set_text_component(BigMPMessagedesc);
  2006.                 _POP_SCALEFORM_MOVIE_FUNCTION_VOID();
  2007.                 DRAW_SCALEFORM_MOVIE_FULLSCREEN(SFBigMPMessage, 255, 255, 255, 255);
  2008.                 if (_BigMPMessagetime == 40) {
  2009.                     _PUSH_SCALEFORM_MOVIE_FUNCTION(SFBigMPMessage, "TRANSITION_UP");
  2010.                     _POP_SCALEFORM_MOVIE_FUNCTION_VOID();
  2011.                     SET_SCALEFORM_MOVIE_AS_NO_LONGER_NEEDED(&SFBigMPMessage);
  2012.                     featureBigMPMessge = false;
  2013.                     _BigMPMessagetime = 0;
  2014.                 }
  2015.                 else
  2016.                     _BigMPMessagetime++;
  2017.             }
  2018.         }
  2019.     }
  2020.  
  2021. case 5: MPMESSAGE("ROULETTE", "coding like a rockstar"); break;
  2022.  
  2023.  
  2024.  
  2025. bool _scaleformFadeTimerEnabled = 0;
  2026.     int SFBMPM;
  2027.     DWORD _scaleformFadeTimerWaiter = 0;
  2028.     if (_scaleformFadeTimerEnabled)
  2029.     {
  2030.         if (!HAS_SCALEFORM_MOVIE_LOADED(SFBMPM))
  2031.             SFBMPM = REQUEST_SCALEFORM_MOVIE("MP_BIG_MESSAGE_FREEMODE");
  2032.         else
  2033.         {
  2034.  
  2035.             _scaleformFadeTimerWaiter = GET_GAME_TIMER() + 2000;
  2036.             _PUSH_SCALEFORM_MOVIE_FUNCTION(SFBMPM, "SHOW_SHARD_CREW_RANKUP_MP_MESSAGE" /*titleStr, msgStr, rankNumber, emblemTXD, emblemTXN, alpha*/); //SHOW_SHARD_CENTERED_TOP_MP_MESSAGE
  2037.             _BEGIN_TEXT_COMPONENT("STRING");
  2038.             ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME("TheRouletteBoi");
  2039.             _END_TEXT_COMPONENT();
  2040.             _BEGIN_TEXT_COMPONENT("STRING");
  2041.             ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME("ROULETTE");
  2042.             _END_TEXT_COMPONENT();
  2043.             _POP_SCALEFORM_MOVIE_FUNCTION_VOID();
  2044.             DRAW_SCALEFORM_MOVIE_FULLSCREEN(SFBMPM, 255, 255, 255, 255);
  2045.             if (GET_GAME_TIMER() > _scaleformFadeTimerWaiter)
  2046.             {
  2047.                 _PUSH_SCALEFORM_MOVIE_FUNCTION(SFBMPM, "TRANSITION_UP");
  2048.                 _PUSH_SCALEFORM_MOVIE_FUNCTION_PARAMETER_INT(0.2000000/*duration*/);
  2049.                 _POP_SCALEFORM_MOVIE_FUNCTION_VOID();
  2050.                 SET_SCALEFORM_MOVIE_AS_NO_LONGER_NEEDED(&SFBMPM);
  2051.                 _scaleformFadeTimerEnabled = false;
  2052.             }
  2053.         }
  2054.     }
  2055.  
  2056.  
  2057.  
  2058. case 11: SET_WARNING_MESSAGE("Panic Mode is enabled.", 3, "Press square and triange to disable Panic Mode.", false, -1, 0, 0, true);
  2059. //Panic Mode is enabled.
  2060. //While this is enabled, most malicous action taken against you by a malicious cheater, such as object attachment and cash attempts, will fail to execute. Please note: this does not prevent a malicous cheater from framing you. For security reasons, you wil not be able to move, visually witness any activity, or utilize the Pause Menu while this mode is active.
  2061. //Press square and triange to disable Panic Mode.
  2062. //http://steamcommunity.com/id/clarexobearrx3/screenshots/
  2063. break;
  2064.  
  2065.  
  2066. Vector3 rot_to_direction(Vector3* rot)
  2067. {
  2068.     float radiansZ = rot->z * 0.0174532924f;
  2069.     float radiansX = rot->x * 0.0174532924f;
  2070.     float num = ABSF((float)COS((double)radiansX));
  2071.     Vector3 dir;
  2072.     dir.x = (float)((double)((float)(-(float)SIN((double)radiansZ))) * (double)num);
  2073.     dir.y = (float)((double)((float)COS((double)radiansZ)) * (double)num);
  2074.     dir.z = (float)SIN((double)radiansX);
  2075.     return dir;
  2076. }
  2077.  
  2078. Vector3 add(Vector3* vectorA, Vector3* vectorB)
  2079. {
  2080.     Vector3 result;
  2081.     result.x = vectorA->x;
  2082.     result.y = vectorA->y;
  2083.     result.z = vectorA->z;
  2084.  
  2085.     result.x += vectorB->x;
  2086.     result.y += vectorB->y;
  2087.     result.z += vectorB->z;
  2088.  
  2089.     return result;
  2090. }
  2091. Vector3 multiply(Vector3* vector, float x)
  2092. {
  2093.     Vector3 result;
  2094.     result.x = vector->x;
  2095.     result.y = vector->y;
  2096.     result.z = vector->z;
  2097.  
  2098.     result.x *= x;
  2099.     result.y *= x;
  2100.     result.z *= x;
  2101.  
  2102.     return result;
  2103. }
  2104. float get_distance(Vector3* pointA, Vector3* pointB)
  2105. {
  2106.     float a_x = pointA->x;
  2107.     float a_y = pointA->y;
  2108.     float a_z = pointA->z;
  2109.  
  2110.     float b_x = pointB->x;
  2111.     float b_y = pointB->y;
  2112.     float b_z = pointB->z;
  2113.  
  2114.     double x_ba = (double)(b_x - a_x);
  2115.     double y_ba = (double)(b_y - a_y);
  2116.     double z_ba = (double)(b_z - a_z);
  2117.  
  2118.     double y_2 = y_ba * y_ba;
  2119.     double x_2 = x_ba * x_ba;
  2120.     double sum_2 = y_2 + x_2;
  2121.  
  2122.     return (float)sqrt(sum_2 + z_ba);
  2123. }
  2124.  
  2125. float get_vector_length(Vector3* vector)
  2126. {
  2127.     double x = (double)vector->x;
  2128.     double y = (double)vector->y;
  2129.     double z = (double)vector->z;
  2130.  
  2131.     return (float)sqrt(x * x + y * y + z * z);
  2132. }
  2133.  
  2134.  
  2135.  
  2136.  
  2137. void UpdateBusySpinner()
  2138.     {
  2139.         /*func_83(P);
  2140.         if (_0xF6015178("SHOW_WARNING_MESSAGE"))
  2141.         {
  2142.             _PUSH_SCALEFORM_MOVIE_FUNCTION_PARAMETER_BOOL(uParam0);
  2143.             _PUSH_SCALEFORM_MOVIE_FUNCTION_PARAMETER_INT(uParam1);
  2144.             _PUSH_SCALEFORM_MOVIE_FUNCTION_PARAMETER_INT(uParam2);
  2145.  
  2146.             _BEGIN_TEXT_COMPONENT("STRING");
  2147.             ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME("Loading, Please wait.");
  2148.             _END_TEXT_COMPONENT();
  2149.  
  2150.  
  2151.             _BEGIN_TEXT_COMPONENT("STRING");
  2152.             ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME("LOADING DONE!");
  2153.             _END_TEXT_COMPONENT();
  2154.  
  2155.  
  2156.             _PUSH_SCALEFORM_MOVIE_FUNCTION_PARAMETER_INT(uParam5);
  2157.             _PUSH_SCALEFORM_MOVIE_FUNCTION_PARAMETER_STRING(uParam6);
  2158.             _PUSH_SCALEFORM_MOVIE_FUNCTION_PARAMETER_STRING(uParam7);
  2159.             _POP_SCALEFORM_MOVIE_FUNCTION_VOID();
  2160.         }*/
  2161.  
  2162.         if (!HAS_SCALEFORM_MOVIE_LOADED(SFMBS))
  2163.             SFMBS = REQUEST_SCALEFORM_MOVIE("busy_spinner");
  2164.         else
  2165.         {
  2166.             _PUSH_SCALEFORM_MOVIE_FUNCTION(SFMBS, "CLEAR_ALL");
  2167.             _POP_SCALEFORM_MOVIE_FUNCTION_VOID();
  2168.             _PUSH_SCALEFORM_MOVIE_FUNCTION(SFMBS, "SET_DATA_SLOT"); //  CREATE_CONTAINER
  2169.             _PUSH_SCALEFORM_MOVIE_FUNCTION_PARAMETER_INT(0);
  2170.             _PUSH_SCALEFORM_MOVIE_FUNCTION_PARAMETER_INT(LOADING_HALF_CIRCLE_RIGHT);
  2171.             _BEGIN_TEXT_COMPONENT("STRING");
  2172.             ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME("Loading, Please wait.");
  2173.             _END_TEXT_COMPONENT();
  2174.             _POP_SCALEFORM_MOVIE_FUNCTION_VOID();
  2175.             _PUSH_SCALEFORM_MOVIE_FUNCTION(SFMBS, "DRAW_INSTRUCTIONAL_BUTTONS");
  2176.             _PUSH_SCALEFORM_MOVIE_FUNCTION_PARAMETER_INT(-1);
  2177.             _POP_SCALEFORM_MOVIE_FUNCTION_VOID();
  2178.         }
  2179.  
  2180.  
  2181.         /*if (!HAS_SCALEFORM_MOVIE_LOADED(SFMBS))
  2182.             SFMBS = REQUEST_SCALEFORM_MOVIE("CUSTOM_WARNING_SCREEN");
  2183.         else
  2184.         {
  2185.             //"BANNED FOR EVER."
  2186.             //"BITCH YOU'VE BEEN BANNED."
  2187.             _PUSH_SCALEFORM_MOVIE_FUNCTION(SFMBS, "SHOW_CUSTOM_WARNING_SCREEN");
  2188.             _POP_SCALEFORM_MOVIE_FUNCTION_VOID();
  2189.         }*/
  2190.        
  2191.  
  2192.         DRAW_SCALEFORM_MOVIE_FULLSCREEN(SFMBS, 255, 255, 255, 255);
  2193.     }
  2194.  
  2195.  
  2196. /*
  2197.         WT_HEALTH //health
  2198.         PS_SPEC_AB //special
  2199.         LOB_CAT_9 //wanted levels
  2200.         FMMC_NONE; //unavailable
  2201.         FACE_HAIR; //Hair
  2202.         FACE_BRD; //Beard
  2203.         HLTH_REGEN2; //max health
  2204.         LOB_CAT_9; //wanted levels
  2205.         PIM_DHIGH0; off
  2206.         PIM_DHIGH1; //on
  2207.         MOD_MNU;
  2208.         CELL_221; //enter number
  2209.         HTX_ENTER; //enter
  2210.         CM_SPECTATE spectate player (beta)
  2211.         CM_SHOW_GAMER_CARD show profile
  2212.         CMOD_MOD_22_D increase downforce.
  2213.         cell_19 Players
  2214.         cell_18 Map
  2215.         cell_32 Qucik Save //for recovery menu
  2216.         cell_35 Player List
  2217.         CELL_MP_1001 invite to party
  2218.         CELL_MP_1005 Player
  2219.         CELL_MP_1007 View Profile
  2220.         PM_MP_OPTIONS Options
  2221.         PM_FRESES Join Friends
  2222.         PM_CRESES Join Crew Members
  2223.         PM_PLYRS Players
  2224.         PM_SWAP_CHAR Swap Character
  2225.         PM_FIND_SESS Find new Session
  2226. UGC_FL_UNEX The Rockstar game services are unavailable right now. Please try again later.
  2227. PM_MY_PLIST My Playlists
  2228. PM_R_PLIST Rockstar Playlists
  2229. PM_R_V_PLIST Rockstar Verified playlist
  2230. PM_DLOAD_PLIST My Bookmarked Playlists
  2231. PM_AVAIL_CHALL Challenges
  2232. PM_MULTI x
  2233. PM_CH_NM_AL Please choose a valid title for your Challenge.
  2234. PM_CLMN_WRNT1 No Playlists
  2235. PM_CREWS Crews
  2236. PM_INF_AJ2T1 Bookmarked
  2237. PM_INF_LEAT Leave
  2238. PM_FIND_SESS Find New Session
  2239. PM_INF_CHCT Choose Character
  2240. PM_INF_PGOT Play GTA Online
  2241. PM_INF_CRWT Crews
  2242. PM_INF_AWDT Awards
  2243. PM_INF_WEPT Weapons
  2244. PM_INF_UNLT Unlocks
  2245. PM_INF_PLLT Playlists
  2246. PM_INF_PLLT00 R* Tournaments
  2247. PM_INF_PLLT0 My Playlists
  2248. PM_CLMN_WRNT5 No Challenges
  2249. BM_INV_SENT Inviting Players
  2250. BM_NO_INV No invites sent
  2251. PIM_TINVE Inventory
  2252. PIM_THELP Brief
  2253. PIM_TOBJ Objective
  2254. PM_INVO_FM Invite Only Session
  2255. PM_GO Go
  2256. PM_NCREW_FM Crew Session
  2257. PM_CREW_FM Closed Crew Session
  2258. PM_FRIEND_FM Closed Friend Session
  2259. PM_SOLO_FM Solo Session
  2260. PM_ON On
  2261. PM_OFF Off
  2262. PM_SHUFFLE Shuffle Playlist
  2263. HUD_INVPROG Joining session in progress.
  2264. R2P_MENU_TINV PLAYER LIST
  2265. BLIP_0 Destination
  2266. BLIP_1 Destination
  2267. BLIP_2 Destination
  2268. BLIP_3 Police
  2269. BLIP_4 Objective
  2270. BLIP_5 Objective
  2271. BLIP_6 Player
  2272. BLIP_7 North
  2273. BLIP_8 Waypoint
  2274. HUD_LOADMAIN rockstart game sercives are temportily unavailable
  2275. HUD_KICKRES Kick from session for beeing idle too long
  2276. HUD_KICKRES1 You were kicked from this GTA Online session by others players
  2277. HUD_KICKRES2 you have been classed as a cheater
  2278. //CM_JOIN_GAME Accept Game Invite
  2279.         //CM_JIP_GAME Join Game
  2280.         //CM_JIP_GAME_DIS Join Game (Disabled)
  2281.         //CM_SPECTATE Spectate Player (BETA)
  2282.         //CM_SPECTATE_DISABLED Spectate Player (Disabled by Player)
  2283.         //CM_JOIN_PARTY Join Party
  2284.         //CM_SEND_FRIEND_INVITE Send Friend Request
  2285.         //CM_SEND_CREW_INVITE Invite to
  2286.         //CM_SEND_PARTY_INVITE Send Party Invite
  2287.         //CM_KICK_PARTY Kick from Party
  2288.         //CM_SEND_GAME_INVITE Send Game Invite
  2289.         //CM_SEND_GAME_INVITE_DIS  Send Game Invite (Disabled)
  2290.         //CM_KICK_DIS Kick (Disabled)
  2291.         //CM_UNKICK Unkick
  2292.         //CM_REPORT Report
  2293.         //CM_REPORT_DIS Report (Disabled)
  2294.         //CM_COMMEND Commend
  2295.         //CM_COMMEND_DIS Commend (Disabled)
  2296.         //CM_MUTE Toggle Mute
  2297.         //CM_SHOW_GAMER_CARD Show Profile
  2298.         //CM_ADD_A_FRIEND Add A Friend
  2299.         //CM_GAMER_REVIEW Player Review
  2300.         //IB_JOINCREW Join Crew
  2301.         //HUD_INPUT53 Back
  2302.         //CC_PM_OPT OPTIONS
  2303.         //CC_PM_DET DETAILS
  2304.         //PM_SCR_CCY YOU
  2305.         //CRW_MINE My Crews
  2306.         //CRW_ROCKSTAR Suggested Crews
  2307.         //CRW_FRIENDS Friends' Crews
  2308.         //CRW_INVITES Invitations
  2309.         //CRW_REQUESTS Requests
  2310.         //CRW_LEADERBOARDS Leaderboard
  2311.         //FM_COR_KICKOC You have been kicked from the Job. You are no loger on call.
  2312.         //HUD_ENDKICK You were kicked from the session.
  2313.         //HUD_ENDADMINKICK You Have been removed from this session by a Rockstar Games administrator.
  2314.         //HUD_KICKROCK The session you were spectating is being assessed by Rockstar with a view to broadcasting that as an Online TV Channel.
  2315.         //HUD_ROSBANNED You have been banned from Grand Theft Auto Online.
  2316.         //HUD_CONNPROB alert
  2317.         //HUD_QURETSP Return to Grand Theft Auto V.
  2318.         //HUD_KICKCREWMSG You were kicked from your Crew.  Global_1315377
  2319.         //MP_PROP_PUR_KICK2 You no longer have access tp the property as the owner has left the game.
  2320.         //MP_PROP_PUR_KICK0 You no longer have access to the property as you have traded it in.
  2321.         //MP_PROP_PUR_KICK1 You no loger have access to the property as the owner has traded it.
  2322.         //FM_COR_KICKA You have been kicked from the Activity
  2323.         //FM_COR_KICK You have been kicked from the Job.
  2324.         //PLYKICKED was voted from the game.           
  2325. //SCTV_FEED0 Show Feed
  2326.                 //SCTV_FEED1 Show List
  2327.                 //SCTV_HELI_OFF Online TV Heli Off
  2328.                 //SCTV_HELI_ON  Online TV Heli On
  2329.                 //SCTV_TS_CTFG GTA - fighting for transport
  2330.                 //SCTV_TS_CTFR Raid - protecting their base of operations
  2331.                 //SCTV_TS_CTFC Contend - bringing it back to base
  2332.                 //SCTV_TS_CTFH Hold - holding on for dear life
  2333.                 //SCTV_TS_LTS2 Two Team LTS - in a two team enter one leaves situation
  2334.                 //SCTV_TS_LTS3 Three Team LTS - in a three way.. battle for survival
  2335.                 //SCTV_TS_LTS4 four Team LTS - unlikely to survive a four team fight
  2336.                 //SCTV_T_LTS LTS
  2337.                 //SCTV_T_VS versus
  2338.                 //SCLB_MIS_NN Mission
  2339.                 //SCTV_SSYOU has stopped spectating you.
  2340.                 //SCTV_SYOU is spectating you.
  2341.                 //DSV_TPLYS destroy the ~r~target vehicle.
  2342.                 //PTD_TPLYSH took down the Smuggler Helicopter.
  2343.                 //SCLB_PROFILE View Profile
  2344.                 //SCLB_NO_ROS The Rockstar game services are unavailable right now. Please try again later.
  2345.                 //SCLB_SIGN_OUT You have signed out of PlayStation Network and will be unable to view leaderboard data.
  2346.                 //SCLB_NOT_ONL Sign in to Playstation Network to view leaderboards data.
  2347.                 //FMMC_COR_SCLB5 Driver
  2348.                 //FMMC_COR_SCLB6 Co-Driver
  2349.                 //SCLB_C_RANK POSITION
  2350.                 //SCLB_RCE_NN Race
  2351. SCLB_GLOBAL GLOBAL
  2352. SCLB_FRIENDS FRIENDS
  2353. SCLB_CREW CREW
  2354. SHOP_CONTENT_1 beach bum
  2355. SHOP_CONTENT_2 business update
  2356. SHOP_CONTENT_3 festive
  2357. SHOP_CONTENT_4 valentine's
  2358. SHOP_CONTENT_5 high life update
  2359. SHOP_CONTENT_6 "im not a hipster"
  2360. SHOP_CONTENT_6b "im not a hipster" update
  2361. SHOP_CONTENT_7 heists
  2362. SHOP_CONTENT_8 independence day
  2363. SHOP_CONTENT_9 san andreas flight school
  2364. SHOP_CONTENT_10 last team standing
  2365. SHOP_CONTENT_12 ill-gotten gains update part 1
  2366. SHOP_CONTENT_13 video edditor
  2367. SHOP_CONTENT_14 ill-gotten gains update part 2
  2368. PIM_INVAT Invite to Apartment has been send to .
  2369. PIM_HINVAP Invite this player to your apartment.
  2370. PIM_HINVA Invite players to your Apartment.
  2371. PIM_INVAP Invite to Apartment.
  2372. PIM_TINVE Inventory
  2373. PIM_HHEIS Choose to Spectate other members of your Heist Crew.
  2374. PIM_HHEIB Your Heist Crew cannot currently be spectated.
  2375. PIM_HINVE Your Inventory contains carried oteams such as cash and clothing Accessories.
  2376. PIM_HPASIY Confirm turning on Passive Mode.
  2377. PIM_HPASIN Confrim turning off Passive Mode.
  2378. PIM_HHLPL Make your blip flash to other players for a short time.
  2379. PIM_HHLPR Make the selected player's blip flash to you for a short time.'
  2380. PIM_HPGS A list of all the players in your session.
  2381. PIM_HLJCE Cash earned from the last Job.
  2382. PIM_HHEISP Select to spectate this player.
  2383. PIM_TCHT Chat
  2384. PIM_TAPV Vehicle Access.
  2385. 0x1BA5E3C4 Rockstar wants to know what you
  2386. 0xB9C144DB Unable to Join. The session you have tried to join is using content created by another player. An inactive profile only has permissions for Rockstar content.
  2387. 0x41818A76 Your Sony Entertainment Network account has chat restrictions enabled, only Rockstar content will be available and voice chat is disabled.
  2388. 0x2A199171 Cheater classification release date ~1~/~1~/~1~.
  2389. 0x093ADE5F Rockstar Dev SCTV
  2390. 0x0BD9B728 You have been removed from this session by a Rockstar Games administrator.
  2391. 0x28DBEF47 Rockstar Game Services have corrected your GTA Dollars by -$~1~.
  2392. 0xCF6AEAC0 Rockstar Games SCADMIN Version
  2393. TICK_PH_INV joined job.
  2394. TICK_PH_INVA joined activity.
  2395. TICK_BC_ON has active their Broadcast app.
  2396. TICK_BC_OFF has deactivated their Broadcast app.
  2397. TICK_HEAD NULL
  2398. TICK_DIED died.
  2399. PIM_EMVTK kicked you from thier Personal Vehicle.
  2400. TICK_BC_ON has activated thier Brodcast app.
  2401. TICK_BC_OFF has deactivated thier Brodcast app.
  2402. PLYVEH_INS_DES1 Your insured Personal Vehicle has been destroyed The player who destroyed it has paid $ towards the clain premium.
  2403. PLYVEH_INS_DES has detroyed your insured Personal Vehicle They have paid $ towards the claim premium.
  2404. TICK_PH_INV joined Job.
  2405. 0xA1519D54 Return to Grand Theft Auto V
  2406. 0x478FDC87 GTA Online
  2407. 0x56F3BD49 Grand Theft Auto Online
  2408. 0x5E96ECC Are you sure you want to quit this session?
  2409. 0x14610888 Progress will be automatically saved.
  2410. 0x73A36AB4 Playing story
  2411. 0x83BA9913 Prologue
  2412. 0xABB00DEB Grand Theft Auto V  
  2413. 0x6F927644 Bay City Ave
  2414. 0xFBD41663 Alert
  2415. 0xAB11B305 Quit
  2416. 0xC3881591 No
  2417. 0xC4A4A05C Yes
  2418.  
  2419.  
  2420.         */
  2421.  
  2422. COMMEND_SPAM_TIMEOUT_DISABLED = 0x6133E077
  2423. COMMEND_SPAM_TIMEOUT = 0xA76D3517
  2424. MPPLY_LAST_COMMEND_RESTORE = 0x181F07A6
  2425. MPPLY_LAST_COMMEND_PENALTY = 0x8CF94EB4
  2426. MPPLY_COMMEND_STRENGTH = 0xADA7E7D3
  2427. REPORT_SPAM_TIMEOUT_DISABLED = 0x33406312
  2428. REPORT_SPAM_TIMEOUT = 0x332F884E
  2429. MPPLY_LAST_REPORT_RESTORE = 0x211774A4
  2430. MPPLY_LAST_REPORT_PENALTY = 0xB87499EA
  2431. MPPLY_REPORT_STRENGTH = 0x850CF917
  2432. COMMEND_TIMEOUT_DISABLED = 0x73DC7AA3
  2433. COMMEND_TIMEOUT = 0xABE83C3B
  2434. REPORT_TIMEOUT_DISABLED = 0x7266E8B2
  2435. REPORT_TIMEOUT = 0xA13B434D
  2436. CL_SEND_FRIEND_REQUEST = 0xAFEA09C6
  2437. KICK_TIMEOUT = 0xB2111FE4
  2438. KICK_TIMEOUT_DISABLED = 0xD892E535
  2439. IDLEKICK_KICK = 0x949C8AAD
  2440. ENABLE_KICK = 0xE2E1805E
  2441. KICK_VOTES_NEEDED_RATIO = 0xEED6D618
  2442. BADSPORT_THRESHOLD = 0x4C507C3D
  2443. BADSPORT_THRESHOLD_NOTCHEATER = 0x727F6777
  2444. IDLEKICK_WARNING1 = 0xB3A4D684
  2445. IDLEKICK_WARNING2 = 0xC16F7219
  2446. IDLEKICK_WARNING3 = 0xE009AF49
  2447. COMMENDREPORT_MAX_STRENGTH = 0xF227F666
  2448. MP_GLOBAL = 0x38CEB237, 953070135
  2449. BASE_GLOBALS = 0xB5EE873, 190769267
  2450. CONTENT_MODIFIER_ = 0xE8895D8A, 3901316490
  2451. MP_FM_RACES = 0xC32348A0, 3273869472
  2452. MP_FM_RACES_CAR = 0x3D76C61B, 1031194139
  2453. MP_FM_RACES_SEA = 0xCC580A3A, 3428321850
  2454. MP_FM_RACES_AIR = 0xF4175CBB, 4095171771
  2455. MP_FM_BASEJUMP = 0x30C5F8C6, 818280646
  2456. MP_FM_RACES_CYCLE = 0xEA4446C2, 3930343106
  2457. MP_FM_RACES_BIKE = 0xC795D7FC, 3348486140
  2458. MP_FM_MISSIONS = 0x202DE323, 539878179
  2459. MP_FM_CONTACT = 0xBDD1A4F5, 3184633077
  2460. MP_FM_RANDOM = 0xAD9BAC56, 2912660566
  2461. MP_FM_VERSUS = 0x56A36BC3, 1453550531
  2462. MP_FM_LTS = 0xFCDE7FF3, 4242440179
  2463. MP_FM_CAPTURE = 0xF508B799, 4110989209
  2464. MP_FM_DM = 0x7030EBCC, 1882254284
  2465. MP_FM_SURVIVAL = 0x2217A8F1, 571975921
  2466. MP_FM_GANG_ATTACK = 0x67F82C09, 1744317449
  2467. MP_CNC = 0x53599429, 1398379561
  2468. MP_CNC_TEAM_COP = 0xEE611088, 3999338632
  2469. MP_CNC_TEAM_VAGOS = 0xBB04D34F, 3137655631
  2470. MP_CNC_TEAM_LOST = 0x3AEFBEA0, 988790432
  2471. MP_FM = 0x43FE68BD, 1140746429
  2472. DISABLE_SCTV_GTAO_TV = 0xB715B652, 3071653458
  2473. DISABLE_SCTV_FRIENDS_SPECTATE = 0x74AFE8F8, 1957685496
  2474. DisableSpectate = 0xCAB5C6A2, 3400910498
  2475. DisableSpectate = 0x2A5A6D1F, 710569247
  2476. mpply_crew_0_id = 0x1838E2E9, 406381289
  2477. mpply_crew_1_id = 0x6388AA41, 1669900865
  2478. mpply_crew_2_id = 0x33A7D8B, 54164875
  2479. mpply_crew_3_id = 0xCDC93A60, 3452516960
  2480. mpply_crew_4_id = 0xA202D7E4, 2718095332
  2481. mpply_crew_local_xp_0 = 0xA9C0CB15, 2847984405
  2482. mpply_crew_local_xp_1 = 0x9C0D2FAE, 2618109870
  2483. mpply_crew_local_xp_2 = 0x4C579040, 1280806976
  2484. mpply_crew_local_xp_3 = 0xBEA1F4D7, 3198285015
  2485. mpply_crew_local_xp_4 = 0x70E5595B, 1894078811
  2486. mpply_became_cheater_num = 0xA2A859D5, 2728942037
  2487. mpply_friendly = 0xDAFB10F9, 3673886969
  2488. mpply_offensive_language = 0x3CDB43E2, 1021002722
  2489. mpply_griefing = 0x9C6A0C42, 2624195650
  2490. mpply_helpful = 0x893E1390, 2302546832
  2491. mpply_offensive_ugc = 0xF3DE4879, 4091431033
  2492. mpply_offensive_tagplate = 0xE8FB6DD5, 3908791765
  2493. mpply_exploits = 0x9F79BA0B, 2675554827
  2494. mpply_game_exploits = 0xCBFD04A4, 3422356644
  2495. mpply_vc_hate = 0xE7072CD, 242250445
  2496. mpply_vc_annoyingme = 0x62EB8C5A, 1659604058
  2497.  
  2498.  
  2499. //badsport and some cheat stuff hashes. need to be bruteforced
  2500. 0x6D7F0859
  2501. 0xBC707798
  2502. 0xC71E28C5
  2503.  
  2504.  
  2505.  
  2506.  
  2507. //vehicle weapons code:
  2508. Vector3 Global_1312302_8; //coords from 1
  2509.     Vector3 Global_1312302_11; //coords from 2
  2510.  
  2511.     Vector3 Global_1312302_2; //coords to 1
  2512.     Vector3 Global_1312302_5; //coords to 2
  2513.  
  2514.     Vector3 Global_1312295_2; //spike coords
  2515.     int Global_1312295_5; //spike pickup
  2516.  
  2517.     void func_3000()
  2518.     {
  2519.         int iVar0;
  2520.         Vector3 Var1;
  2521.         Vector3 Var2;
  2522.         float fVar3;
  2523.         float uVar4;
  2524.         Vector3 vVar5;
  2525.         Vector3 vVar6;
  2526.         float uVar7;
  2527.         Vector3 vVar8;
  2528.         Vector3 vVar9;
  2529.  
  2530.  
  2531.         if (IS_PLAYER_PLAYING(PLAYER_ID()))
  2532.         {
  2533.             if (IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID(), 0))
  2534.             {
  2535.                 _DISABLE_INPUT_GROUP(2);
  2536.                 iVar0 = GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID(), 0);
  2537.                 GET_MODEL_DIMENSIONS(GET_ENTITY_MODEL(iVar0), &Var1, &Var2);
  2538.                 if (IS_CONTROL_JUST_PRESSED(2, INPUT_SCRIPT_LS) || IS_CONTROL_PRESSED(2, INPUT_SCRIPT_LS))
  2539.                 {
  2540.                     if (IS_CONTROL_PRESSED(2, INPUT_SCRIPT_RS))
  2541.                     {
  2542.                         Global_1312302_8 = GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(iVar0, (Var1.x - 0.2f), (Var1.y - 0.5f), 0.0f);
  2543.                         Global_1312302_11 = GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(iVar0, (Var2.x + 0.2f), (Var1.y - 0.5f), 0.0f);
  2544.                         if (!IS_ENTITY_IN_AIR(iVar0))
  2545.                         {
  2546.                             _GET_GROUND_Z_COORD_WITH_OFFSETS(Global_1312302_8.x, Global_1312302_8.y, Global_1312302_8.z, &uVar4, &vVar5);
  2547.                             vVar6 = func_363(vVar5, Subtract(func_765(Global_1312302_11), Global_1312302_8));
  2548.                             Global_1312302_2 = Subtract(Global_1312302_8, Modulate(vVar6, NewVector3(300.0f, 300.0f, 300.0f)));
  2549.                             Global_1312302_5 = Subtract(Global_1312302_11, Modulate(vVar6, NewVector3(300.0f, 300.0f, 300.0f)));
  2550.                         }
  2551.                         else
  2552.                         {
  2553.                             Global_1312302_2 = func_3001(Global_1312302_8, iVar0, -300.0f);
  2554.                             Global_1312302_5 = func_3001(Global_1312302_11, iVar0, -300.0f);
  2555.                         }
  2556.                     }
  2557.                     else
  2558.                     {
  2559.                         Global_1312302_8 = GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(iVar0, (Var1.x - 0.2f), (Var2.y + 0.5f), 0.0f);
  2560.                         Global_1312302_11 = GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(iVar0, (Var2.x + 0.2f), (Var2.y + 0.5f), 0.0f);
  2561.                         if (!IS_ENTITY_IN_AIR(iVar0))
  2562.                         {
  2563.                             _GET_GROUND_Z_COORD_WITH_OFFSETS(Global_1312302_8.x, Global_1312302_8.y, Global_1312302_8.z, &uVar7, &vVar8);
  2564.                             vVar9 = func_363(vVar8, Subtract(func_765(Global_1312302_11), Global_1312302_8));
  2565.                             Global_1312302_2 = Addition(Global_1312302_8, Modulate(vVar9, NewVector3(300.0f, 300.0f, 300.0f)));
  2566.                             Global_1312302_5 = Addition(Global_1312302_11, Modulate(vVar9, NewVector3(300.0f, 300.0f, 300.0f)));
  2567.  
  2568.                         }
  2569.                         else
  2570.                         {
  2571.                             Global_1312302_2 = func_3001(Global_1312302_8, iVar0, 1133903872);
  2572.                             Global_1312302_5 = func_3001(Global_1312302_11, iVar0, 1133903872);
  2573.                         }
  2574.                     }
  2575.                     if ((GET_ENTITY_SPEED(iVar0) * GET_ENTITY_SPEED(iVar0)) > 400.0f)
  2576.                     {
  2577.                         fVar3 = ((GET_ENTITY_SPEED(iVar0) * GET_ENTITY_SPEED(iVar0)) + 100.0f);
  2578.                     }
  2579.                     else
  2580.                     {
  2581.                         fVar3 = 400.0f;
  2582.                     }
  2583.                     if (!func_987(Global_1312302_8, Global_1312302_2))
  2584.                     {
  2585.                         _SHOOT_SINGLE_VEHICLE_BULLET_BETWEEN_COORDS(
  2586.                             Global_1312302_8.x, Global_1312302_8.y, Global_1312302_8.z,
  2587.                             Global_1312302_2.x, Global_1312302_2.y, Global_1312302_2.z,
  2588.                             250, 1, GET_HASH_KEY("weapon_vehicle_rocket"), PLAYER_PED_ID(), 1, 1, fVar3, iVar0, 0);
  2589.                     }
  2590.                     if (!func_987(Global_1312302_11, Global_1312302_5))
  2591.                     {
  2592.                         _SHOOT_SINGLE_VEHICLE_BULLET_BETWEEN_COORDS(
  2593.                             Global_1312302_11.x, Global_1312302_11.y, Global_1312302_11.z,
  2594.                             Global_1312302_5.x, Global_1312302_5.y, Global_1312302_5.z,
  2595.                             250, 1, GET_HASH_KEY("weapon_vehicle_rocket"), PLAYER_PED_ID(), 1, 1, fVar3, iVar0, 0);
  2596.                     }
  2597.  
  2598.                     //DISABLE_CONTROL_ACTION(0, INPUT_VEH_HORN);
  2599.                 }
  2600.             }
  2601.         }
  2602.     }
  2603.  
  2604.     void func_3005()
  2605.     {
  2606.         int iVar0;
  2607.         Vector3 Var1, uVar2;
  2608.  
  2609.         if (IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID(), 0))
  2610.         {
  2611.             DISABLE_CONTROL_ACTION(0, 79);
  2612.             iVar0 = GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID(), 0);
  2613.             GET_MODEL_DIMENSIONS(GET_ENTITY_MODEL(iVar0), &Var1, &uVar2);
  2614.             if (IS_CONTROL_JUST_PRESSED(2, 200))
  2615.             {
  2616.                 Global_1312295_2 = GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(iVar0, 0.0f, (Var1.y - 1.0f), 0.0f);
  2617.             }
  2618.         }
  2619.     }
  2620.     void func_3003()
  2621.     {
  2622.         func_3005();
  2623.         if (!DOES_ENTITY_EXIST(Global_1312295_5))
  2624.         {
  2625.             Global_1312295_5 = CREATE_AMBIENT_PICKUP(GET_HASH_KEY("pickup_vehicle_custom_script"),
  2626.                 Global_1312295_2.x, Global_1312295_2.y, Global_1312295_2.z,
  2627.                 0, 2, GET_HASH_KEY("prop_tyre_spike_01"), 1, 0);
  2628.             _HIGHLIGHT_PLACEMENT_COORDS(Global_1312295_2.x, Global_1312295_2.y, Global_1312295_2.z, 0);
  2629.             PLAY_SOUND_FROM_ENTITY(-1, "SPIKES", Global_1312295_5, "MP_RACE_SPIKES_SOUNDSET", 1, 50);
  2630.         }
  2631.         else if (DOES_ENTITY_EXIST(Global_1312295_5))
  2632.         {
  2633.             DELETE_OBJECT(&(Global_1312295_5));
  2634.         }
  2635.     }
  2636.  
  2637. //loop:
  2638. if (featureWeaponVehRockets)
  2639. {
  2640.     if (!IS_PAUSE_MENU_ACTIVE())
  2641.     {
  2642.         func_3003();
  2643.         func_3000();
  2644.     }
  2645.  
  2646.  
  2647.  
  2648.  
  2649.  
  2650. if (!DOES_PARTICLE_FX_LOOPED_EXIST(particalmH))
  2651.                 {
  2652.                     printf("asset: %s, name: %s \n", result.asset, result.name);
  2653.                     _SET_PTFX_ASSET_NEXT_CALL(result.asset);
  2654.                     particalmH = _START_PARTICLE_FX_LOOPED_ON_ENTITY_BONE_2(result.name, PLAYER_PED_ID(),
  2655.                         0.0, 0.0, 0.0, 0.0, 0.0, 0.0, SKEL_L_Finger01, 1.0f, 0, 0, 0);
  2656.  
  2657.                     _SET_PTFX_ASSET_NEXT_CALL(result.asset);
  2658.                     particalmH = _START_PARTICLE_FX_LOOPED_ON_ENTITY_BONE_2(result.name, PLAYER_PED_ID(),
  2659.                         0.0, 0.0, 0.0, 0.0, 0.0, 0.0, SKEL_R_Finger01, 1.0f, 0, 0, 0);
  2660.  
  2661.                     SET_PARTICLE_FX_LOOPED_COLOUR(particalmH, titlebox.R / 255.0f, titlebox.G / 255.0f, titlebox.B / 255.0f, 0);
  2662.  
  2663.                 }
  2664.                 if (DOES_PARTICLE_FX_LOOPED_EXIST(particalmH))
  2665.                 {  
  2666.                     //STOP_PARTICLE_FX_LOOPED(particalmH, 1);
  2667.                     REMOVE_PARTICLE_FX(particalmH, 1);
  2668.                 }
  2669.  
  2670.  
  2671.  
  2672.  
  2673. int myAtoi(char* str) {
  2674.     int length = strlen(str);
  2675.     int counter = 0;
  2676.     int signcounter = 0;
  2677.     unsigned int result = 0;
  2678.     int result2 = 0;
  2679.     bool negative = false;
  2680.     char *temp = (char*)malloc(sizeof(char));
  2681.     for (int i = 0; i < length; i++)
  2682.     {
  2683.         if (counter == 0 && (str[i] != 0x20 && str[i] != 0x2B && str[i] != 0x2D) && (str[i] < 0x30 || str[i] > 0x39))
  2684.             break;
  2685.  
  2686.         else if (((counter > 0 || signcounter > 0) || (i > 0 && signcounter == 0 && str[i] != 0x20 && str[i] != 0x2B && str[i] != 0x2D)) && (str[i] < 0x30 || str[i] > 0x39))
  2687.             break;;
  2688.  
  2689.  
  2690.         if (str[i] >= 0x30 && str[i] <= 0x39)
  2691.         {
  2692.             if (counter > 0)
  2693.                 temp = (char*)_realloc(temp, (counter + 1) * sizeof(char));
  2694.  
  2695.             temp[counter] = str[i];
  2696.             counter++;
  2697.         }
  2698.         else if (str[i] == 0x2D)
  2699.         {
  2700.             negative = !negative;
  2701.             signcounter++;
  2702.         }
  2703.         else if (str[i] == 0x2B)
  2704.             signcounter++;
  2705.  
  2706.         if (signcounter > 1)
  2707.             return 0;
  2708.  
  2709.         //length--;
  2710.     }
  2711.  
  2712.     if (counter == 0)
  2713.         return 0;
  2714.     else if (counter > 10 && !negative)
  2715.         return INT_MAX;
  2716.     else if (counter > 10 && negative)
  2717.         return INT_MIN;
  2718.  
  2719.  
  2720.     for (int i = 0; i < counter; i++)
  2721.     {
  2722.         result += (temp[i] - 0x30) * ipow(10, counter - 1 - i);
  2723.  
  2724.     }
  2725.  
  2726.     if (result > 2147483647 && !negative)
  2727.         result2 = INT_MAX;
  2728.  
  2729.     else if (result > 2147483648 && negative)
  2730.         result2 = INT_MIN;
  2731.  
  2732.     else if (negative)
  2733.         result2 = -result;
  2734.     else
  2735.         result2 = result;
  2736.  
  2737.     return result2;
  2738. }
  2739.  
  2740.  
  2741.  
  2742.  
  2743.  
  2744. if (onPress && NETWORK_IS_PLAYER_ACTIVE((Player)Menu::currentop - 1))
  2745.         {
  2746.             if (featureIsNetworkList)
  2747.             {
  2748.                 iSelectedPlayer = (Player)Menu::currentop - 1;
  2749.                 if (SUB::NETWORK_PLAYERS_OPTIONS != -1) Menu::SetSub_delayed = SUB::NETWORK_PLAYERS_OPTIONS;
  2750.             }
  2751.             else
  2752.             {
  2753.                 Player playerIter = GET_PLAYER_PED(Menu::currentop - 1);
  2754.                 if (RequestControlOfEnt(iSelectedPed)) { }
  2755.                 switch (networkListActions)
  2756.                 {
  2757.                 case 0: switch (featureAttachPedToPlayer) {
  2758.                     case 0: ATTACH_ENTITY_TO_ENTITY(iSelectedPed, playerIter, -1, 0, 0.2, 0, 0, 0, 0, 1, 1, 0, 1, 2, 1); break;
  2759.                     case 1: ATTACH_ENTITY_TO_ENTITY(iSelectedPed, playerIter, -1, 0, -0.3, 0, 0, 0, 0, 1, 1, 0, 1, 2, 1); break;
  2760.                     case 2: ATTACH_ENTITY_TO_ENTITY(iSelectedPed, playerIter, -1, 0, 0.5, 0, 0, 0, 180, 1, 1, 0, 1, 2, 1); break;
  2761.                     case 3: ATTACH_ENTITY_TO_ENTITY(iSelectedPed, playerIter, -1, 0, 0.3, 0.8, 0, 0, 180, 1, 1, 0, 1, 2, 1); break;
  2762.                     case 4: ATTACH_ENTITY_TO_ENTITY(iSelectedPed, playerIter, -1, 0, 0.3, 0.7, 86.0, 0, 180, 1, 1, 0, 1, 2, 1); break;
  2763.                     case 5: ATTACH_ENTITY_TO_ENTITY(iSelectedPed, playerIter, -1, 0.0, 0.3, -0.3, 13, 180, 0.0, 1, 1, 0, 1, 2, 1); break;
  2764.                     case 6: ATTACH_ENTITY_TO_ENTITY(iSelectedPed, playerIter, -1, 0.2, 0.3, 0.9, 0.0, 0.0, -120.0, 1, 1, 0, 1, 2, 1); break;
  2765.                     case 7: ATTACH_ENTITY_TO_ENTITY(iSelectedPed, playerIter, -1, -0.09, -0.01, -0.3, 13.02, 84.0, 96.0, 1, 1, 0, 1, 2, 1); break;
  2766.                     case 8: ATTACH_ENTITY_TO_ENTITY(iSelectedPed, playerIter, -1, 0.11, 0.48, 1.13, -179.98, 100.0, -91.0, 1, 1, 0, 1, 2, 1); break;
  2767.                     case 9: ATTACH_ENTITY_TO_ENTITY(iSelectedPed, playerIter, -1, -0.02, 0.32, 0.69, -51.98, -14.0999, 180.0, 1, 1, 0, 1, 2, 1); break;
  2768.                     case 10: ATTACH_ENTITY_TO_ENTITY(iSelectedPed, playerIter, 0, 0.13, 0.56, -0.46, 0.0, 0.0, 84.0, 1, 1, 0, 1, 2, 1); break;
  2769.                     case 11: ATTACH_ENTITY_TO_ENTITY(iSelectedPed, playerIter, 0, -0.09, -0.07, -0.15, -7.0, -87.0, -90.0, 1, 1, 0, 1, 2, 1); break;
  2770.                     case 12: ATTACH_ENTITY_TO_ENTITY(iSelectedPed, playerIter, 0, 0.15, 0.14, 0.93, -168.0003, 73.0, -282.0, 1, 1, 0, 1, 2, 1); break;
  2771.                     case 13: ATTACH_ENTITY_TO_ENTITY(iSelectedPed, playerIter, 0, -0.11, 0.08, -0.29, 10.0, 92.0, -288.0, 1, 1, 0, 1, 2, 1); break;
  2772.                     case 14: ATTACH_ENTITY_TO_ENTITY(iSelectedPed, playerIter, 0, -0.09, 0.57, 0.55, 10.0, -305.0, 270.0, 1, 1, 0, 1, 2, 1); break;
  2773.                     case 15: ATTACH_ENTITY_TO_ENTITY(iSelectedPed, playerIter, 0, 0.0, 0.63, 0.73, 0.0, 0.0, 0.0, 1, 1, 0, 1, 2, 1); break;
  2774.                     }  break;
  2775.                 case 1: TASK_COMBAT_PED(iSelectedPed, playerIter, 0, 16); break;
  2776.                 case 2: break;
  2777.                 case 3: for (int i = 0; i < 15; i++) { if (RequestControlOfEnt(s_ped[i])) TASK_COMBAT_PED(s_ped[i], playerIter, 0, 16);
  2778.                     } break;
  2779.                 case 4: for (int i = 0; i < 15; i++) { if (RequestControlOfEnt(s_ped[i]))
  2780.                     ATTACH_ENTITY_TO_ENTITY(s_ped[i], playerIter, GET_RANDOM_INT_IN_RANGE(0, 0xfcd9), GET_RANDOM_FLOAT_IN_RANGE(0, 3), GET_RANDOM_FLOAT_IN_RANGE(0, 3), GET_RANDOM_FLOAT_IN_RANGE(0, 3), 0, 0, 0, 1, 1, 1, 1, 2, 1);
  2781.                     }break;
  2782.                 case 5: entityObjectOps = playerIter; if (IS_PED_IN_ANY_VEHICLE(entityObjectOps, 1)) { entityObjectOps = GET_VEHICLE_PED_IS_IN(entityObjectOps, 1); } break;
  2783.                 case 6: whichBone = 1; featureAttToSomething = 3; netPlayerAttachment =  playerIter; ATTACH_ENTITY_TO_ENTITY(entityObjectOps, netPlayerAttachment, -1, featureAttX, featureAttY, featureAttZ, featureAttPitch, featureAttRoll, featureAttYaw, 1, 1, 1, 1, 2, 1); if (SUB::ATTACHMENTOPTIONS != -1) Menu::SetSub_delayed = SUB::ATTACHMENTOPTIONS; break;
  2784.                 case 7: Vector3 tmp = GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(playerIter, 0.0, 1.3, 0.0); networkSynchronisedScene(tmp.x, tmp.y, tmp.z, 0.0, 0.0, 0.0, GET_PLAYER_PED(iSelectedPlayer), "move_m@generic", "idle", 1); break;
  2785.                 case 8: bLoadFile = 1; fileLoadI = 4; break;
  2786.                 case 9: PlaceBounty(PLAYER_ID(), Menu::currentop - 1, featureBountyValue); break;
  2787.                 }
  2788.             }
  2789.  
  2790.             return; // Either use return; to exit to the switch if you don't have code below that you want executed.
  2791.         }
  2792.        
  2793.        
  2794.        
  2795.        
  2796.        
  2797.        
  2798.         enum miscToggleActions {
  2799.     MT_UNLIMITEDAMMO,
  2800.     MT_LONG_LOCKON_RANGE,
  2801.     MT_PLAYERSLIST_VEH_HANDLE,
  2802.     MT_COPY_MODEL,
  2803.     MT_CHAT_BYPASS,
  2804.     MT_NITROUS_FX,
  2805.     MT_ATTACH_VISE_VERSA,
  2806. };
  2807.        
  2808.         switch (miscAction)
  2809.                 {
  2810.                 case 0: GiveAllWeapons(iSelectedPlayer, 1); ShowNotification("Gave Unlimited Ammo Weapons"); break;
  2811.                 case 1: featureHiddenLockonRange = !featureHiddenLockonRange; ShowNotification(featureHiddenLockonRange ? (char*)"Long Lockon Range ~g~ ON" : (char*)"Long Lockon Range ~r~ OFF"); break;
  2812.                 case 2: featureIsNetworkList = 0; networkListActions = 5; if (SUB::NETWORK_PLAYERS != -1) Menu::SetSub_delayed = SUB::NETWORK_PLAYERS; break;
  2813.                 case 3: featureCopyCopyModel = !featureCopyCopyModel; ShowNotification(featureCopyCopyModel ? (char*)"Copy Model ~g~ ON" : (char*)"Copy Model ~r~ OFF"); break;
  2814.                 case 4: featureChatBypass = !featureChatBypass; ShowNotification(featureChatBypass ? (char*)"Chat Bypass ~g~ ON" : (char*)"Chat Bypass ~r~ OFF"); break;
  2815.                 case 5: featureBoostNoCamFX = !featureBoostNoCamFX; ShowNotification(featureBoostNoCamFX ? (char*)"Cam FX ~g~ ON" : (char*)"Cam FX ~r~ OFF"); break;
  2816.                 case 6: featureAttachViseVersa = !featureAttachViseVersa; ShowNotification(featureAttachViseVersa ? (char*)"Attach Vise Versa ~g~ ON" : (char*)"Attach Vise Versa ~r~ OFF");  break;
  2817.                 }
  2818.  
  2819.                
  2820.                
  2821.                
  2822.                
  2823.                
  2824.        
  2825.        
  2826.         void AddToggleM(char *text, miscToggleActions miscAction, bool isToggle = false, bool &pState = null, bool &option_code_bool = null, char *desc = NULL)
  2827.     {
  2828.         AddOption(text, null, nullFunc, -1, NULL, desc);
  2829.         if (isToggle)
  2830.         {
  2831.             if (!pState) OptionStatus(0);
  2832.             else if (pState) OptionStatus(1);
  2833.         }
  2834.         if (Menu::printingop == Menu::currentop)
  2835.         {
  2836.             if (IsOptionPressed()) { if (isToggle) { pState = !pState; } else if (&option_code_bool != &null) { option_code_bool = true; } }
  2837.             toggleInstruction = 1;
  2838.             if (IsOptionSJPressed())
  2839.             {
  2840.                 switch (miscAction)
  2841.                 {
  2842.                 case 0: GiveAllWeapons(iSelectedPlayer, 1); ShowNotification("Gave Unlimited Ammo Weapons"); break;
  2843.                 case 1: featureHiddenLockonRange = !featureHiddenLockonRange; ShowNotification(featureHiddenLockonRange ? (char*)"Long Lockon Range ~g~ ON" : (char*)"Long Lockon Range ~r~ OFF"); break;
  2844.                 case 2: featureIsNetworkList = 0; networkListActions = 5; if (SUB::NETWORK_PLAYERS != -1) Menu::SetSub_delayed = SUB::NETWORK_PLAYERS; break;
  2845.                 case 3: featureCopyCopyModel = !featureCopyCopyModel; ShowNotification(featureCopyCopyModel ? (char*)"Copy Model ~g~ ON" : (char*)"Copy Model ~r~ OFF"); break;
  2846.                 case 4: featureChatBypass = !featureChatBypass; ShowNotification(featureChatBypass ? (char*)"Chat Bypass ~g~ ON" : (char*)"Chat Bypass ~r~ OFF"); break;
  2847.                 case 5: featureBoostNoCamFX = !featureBoostNoCamFX; ShowNotification(featureBoostNoCamFX ? (char*)"Cam FX ~g~ ON" : (char*)"Cam FX ~r~ OFF"); break;
  2848.                 case 6: featureAttachViseVersa = !featureAttachViseVersa; ShowNotification(featureAttachViseVersa ? (char*)"Attach Vise Versa ~g~ ON" : (char*)"Attach Vise Versa ~r~ OFF");  break;
  2849.                 }
  2850.             }
  2851.         }
  2852.     }
  2853.  
  2854.  
  2855.  
  2856.  
  2857.  
  2858.  
  2859. if (CFileExists(GET_CONFIG_PATH))
  2860.     {
  2861.         file = CReadFile(GET_CONFIG_PATH, &file_size);
  2862.  
  2863.         featureDisplayInfo = GetPrivateProfileBool(APP_HAX_VALUES, "dispInfo", "0", file, file_size);
  2864.         featureWorldPause = GetPrivateProfileBool(APP_HAX_VALUES, "pauseClock", "0", file, file_size);
  2865.         //clockhour = GetPrivateProfileInt(APP_HAX_VALUES, "clockTime", GET_CLOCK_HOURS(), file, file_size);
  2866.         weatherTypeIndex = GetPrivateProfileInt(APP_HAX_VALUES, "weather", 4, file, file_size);
  2867.         GetPrivateProfileString(APP_HAX_VALUES, "nameChange", "DEFAULT", nameChangeEx, 24, file, file_size); if (strcmp("DEFAULT", nameChangeEx)) { psnchangeName = nameChangeEx; featurePSNChangeI = 1; }
  2868.  
  2869.         spoofRankValue = GetPrivateProfileInt(APP_HAX_VALUES, "spoofRankValue", 53, file, file_size);
  2870.         spoofWalletValue = GetPrivateProfileInt(APP_HAX_VALUES, "spoofWalletValue", 0, file, file_size);
  2871.         spoofKillsValue = GetPrivateProfileInt(APP_HAX_VALUES, "spoofKillsValue", 75, file, file_size);
  2872.         spoofDeathsValue = GetPrivateProfileInt(APP_HAX_VALUES, "spoofDeathValue", 100, file, file_size);
  2873.  
  2874.         featureInvincibility = GetPrivateProfileBool(APP_HAX_VALUES, "pInvincible", "0", file, file_size);
  2875.         featureSuperJump = GetPrivateProfileBool(APP_HAX_VALUES, "pSupJump", "0", file, file_size);
  2876.         featureSuperRun = GetPrivateProfileBool(APP_HAX_VALUES, "pSupRun", "0", file, file_size);
  2877.         featureNeverWanted = GetPrivateProfileBool(APP_HAX_VALUES, "pNoWant", "0", file, file_size);
  2878.         featurSonicRun = GetPrivateProfileBool(APP_HAX_VALUES, "pSanicRun", "0", file, file_size);
  2879.  
  2880.         featureWeaponNoReload = GetPrivateProfileBool(APP_HAX_VALUES, "wInfAmmo", "0", file, file_size);
  2881.  
  2882.         featureVehicleInvincibility = GetPrivateProfileBool(APP_HAX_VALUES, "veInvincible", "0", file, file_size);
  2883.         featureAutoRepair = GetPrivateProfileBool(APP_HAX_VALUES, "veAutoFix", "0", file, file_size);
  2884.         featureNitrous = GetPrivateProfileBool(APP_HAX_VALUES, "veHornBoost", "0", file, file_size);
  2885.  
  2886.         featureVehWarpInSpawned = GetPrivateProfileBool(APP_HAX_VALUES, "veSpawnInVehic", "0", file, file_size);
  2887.         featurePreUpgraded = GetPrivateProfileBool(APP_HAX_VALUES, "veSpawnPreMax", "0", file, file_size);
  2888.         featureInvincibleVehicleOnSpawn = GetPrivateProfileBool(APP_HAX_VALUES, "veSpawnInvincible", "0", file, file_size);
  2889.         featureAddBlipToSpawnVeh = GetPrivateProfileBool(APP_HAX_VALUES, "veSpawnWBlip", "0", file, file_size);
  2890.         featureVehicleSpawnerDeletePrevious = GetPrivateProfileBool(APP_HAX_VALUES, "veSpawnDeletePre", "0", file, file_size);
  2891.         featureVehicleSpawnerWitUpgrades = GetPrivateProfileBool(APP_HAX_VALUES, "veSpawnWMods", "0", file, file_size);
  2892.         GetPrivateProfileString(APP_HAX_VALUES, "veSpawnPlateTxt", "Semjases", plateTxt, 14, file, file_size); vehicleSpawnerPlateText = plateTxt;
  2893.         featureVehicleSpawnerPlateType = GetPrivateProfileInt(APP_HAX_VALUES, "veSpawnPlateType", 1, file, file_size);
  2894.         featureVehicleSpawnerPriamyColor = GetPrivateProfileInt(APP_HAX_VALUES, "veSpawnPrimColo", 145, file, file_size);
  2895.         featureVehicleSpawnerSecondaryColor = GetPrivateProfileInt(APP_HAX_VALUES, "veSpawnSecondColo", 10, file, file_size);
  2896.         featureVehicleSpawnerPearlescentColor = GetPrivateProfileInt(APP_HAX_VALUES, "veSpawnPearl", 38, file, file_size);
  2897.         featureVehicleSpawnerWheelColor = GetPrivateProfileInt(APP_HAX_VALUES, "veSpawnWheelCol", 145, file, file_size);
  2898.         GetPrivateProfileString(APP_HAX_VALUES, "veSpawnCustPrimary", "#320642", r_vehprim, 14, file, file_size); rgb = HexToRGB(r_vehprim); vehSpawnCustomP.R = rgb.R, vehSpawnCustomP.G = rgb.G, vehSpawnCustomP.B = rgb.B;
  2899.         GetPrivateProfileString(APP_HAX_VALUES, "veSpawnCustSecondary", "#23292E", r_vehsec, 14, file, file_size); rgb = HexToRGB(r_vehsec); vehSpawnCustomS.R = rgb.R, vehSpawnCustomS.G = rgb.G, vehSpawnCustomS.B = rgb.B;
  2900.         featureVehicleSpawnerWheelType = GetPrivateProfileInt(APP_HAX_VALUES, "veSpawnWheelType", 7, file, file_size);
  2901.         featureVehicleSpawnerWheelIndex = GetPrivateProfileInt(APP_HAX_VALUES, "veSpawnWheelIndex", 8, file, file_size);
  2902.  
  2903.         featureShowChat = GetPrivateProfileBool(APP_HAX_VALUES, "neChat", "1", file, file_size);
  2904.         featureAllClientsESP = GetPrivateProfileBool(APP_HAX_VALUES, "neESP", "0", file, file_size);
  2905.         featureAllESPType = GetPrivateProfileInt(APP_HAX_VALUES, "neESPType", 2, file, file_size);
  2906.  
  2907.         featureProtectionCTask = GetPrivateProfileBool(APP_HAX_VALUES, "disTask", "0", file, file_size);
  2908.         featureProtectionNaughty = GetPrivateProfileBool(APP_HAX_VALUES, "expRemWp", "0", file, file_size);
  2909.         featureProtectionTask = GetPrivateProfileBool(APP_HAX_VALUES, "tasks", "0", file, file_size);
  2910.         featureProtectionPTFX = GetPrivateProfileBool(APP_HAX_VALUES, "fxProtx", "0", file, file_size);
  2911.         featureProtectionVehicleControl = GetPrivateProfileBool(APP_HAX_VALUES, "veContr", "0", file, file_size);
  2912.         featureProtectionWantedLvl = GetPrivateProfileBool(APP_HAX_VALUES, "Wantedlvl", "0", file, file_size);
  2913.         featureProtectionScriptedGame = GetPrivateProfileBool(APP_HAX_VALUES, "nonHostKick", "0", file, file_size);
  2914.         featureProtectionSound = GetPrivateProfileBool(APP_HAX_VALUES, "sounds", "0", file, file_size);
  2915.         featureProtectionClones = GetPrivateProfileBool(APP_HAX_VALUES, "clones", "0", file, file_size);
  2916.         featureProtectionFreeze = GetPrivateProfileBool(APP_HAX_VALUES, "freezeProtx", "0", file, file_size);
  2917.         featureProtectionAttach = GetPrivateProfileBool(APP_HAX_VALUES, "attachment", "0", file, file_size);
  2918.         featureProtectionFPS = GetPrivateProfileBool(APP_HAX_VALUES, "fpsProtx", "0", file, file_size);
  2919.  
  2920.         loop_RainbowBoxes = GetPrivateProfileBool(APP_COLOURS, "rainbow_mode", "0", file, file_size);
  2921.         GetPrivateProfileString(APP_COLOURS, "mTitletext", "#FFFFFF", mTitletext, 14, file, file_size); rgb = HexToRGB(mTitletext); maintitletext.R = rgb.R, maintitletext.G = rgb.G, maintitletext.B = rgb.B;
  2922.         GetPrivateProfileString(APP_COLOURS, "mTitlebox", "#7800B4", mTitlebox, 14, file, file_size); rgb = HexToRGB(mTitlebox); maintitlebox.R = rgb.R, maintitlebox.G = rgb.G, maintitlebox.B = rgb.B;
  2923.         GetPrivateProfileString(APP_COLOURS, "titlebox", "#A020F0", r_titlebox, 14, file, file_size); rgb = HexToRGB(r_titlebox); titlebox.R = rgb.R, titlebox.G = rgb.G, titlebox.B = rgb.B;
  2924.         GetPrivateProfileString(APP_COLOURS, "BG", "#141414", r_BG, 14, file, file_size); rgb = HexToRGB(r_BG); BG.R = rgb.R, BG.G = rgb.G, BG.B = rgb.B;
  2925.         GetPrivateProfileString(APP_COLOURS, "titletext", "#FFFFFF", r_titletext, 14, file, file_size); rgb = HexToRGB(r_titletext); titletext.R = rgb.R, titletext.G = rgb.G, titletext.B = rgb.B;
  2926.         GetPrivateProfileString(APP_COLOURS, "optiText", "#FFFFFF", r_optiontext, 14, file, file_size); rgb = HexToRGB(r_optiontext);optiontext.R = rgb.R, optiontext.G = rgb.G, optiontext.B = rgb.B;
  2927.         GetPrivateProfileString(APP_COLOURS, "selText", "#FF66FF", r_selectedtext, 14, file, file_size); rgb = HexToRGB(r_selectedtext); selectedtext.R = rgb.R, selectedtext.G = rgb.G, selectedtext.B = rgb.B;
  2928.         GetPrivateProfileString(APP_COLOURS, "selBox", "#FFFFFF", r_selectionhi, 14, file, file_size); rgb = HexToRGB(r_selectionhi); selectionhi.R = rgb.R, selectionhi.G = rgb.G, selectionhi.B = rgb.B;
  2929.  
  2930.         open_button_1 = GetPrivateProfileInt(APP_SETTINGS, "bind1", 201, file, file_size);
  2931.         open_button_2 = GetPrivateProfileInt(APP_SETTINGS, "bind2", 204, file, file_size);
  2932.         GetPrivateProfileString(APP_SETTINGS, "menuPosX", "0.69299", menux, 14, file, file_size); menuPos.x = myAtof(menux);
  2933.         GetPrivateProfileString(APP_SETTINGS, "menuPosY", "0", menuy, 14, file, file_size); menuPos.y = myAtof(menuy);
  2934.         featureExcludeFriends = GetPrivateProfileBool(APP_SETTINGS, "exludFriends", "0", file, file_size);
  2935.         featureExcludeCrew = GetPrivateProfileBool(APP_SETTINGS, "exludCrew", "0", file, file_size);
  2936.         featureExcludeTeam = GetPrivateProfileBool(APP_SETTINGS, "exludTeam", "0", file, file_size);
  2937.         featureExcludeModder = GetPrivateProfileBool(APP_SETTINGS, "exludModr", "0", file, file_size);
  2938.         featureKickModders = GetPrivateProfileBool(APP_SETTINGS, "kickModders", "0", file, file_size);
  2939.         snaplineToClients = GetPrivateProfileBool(APP_SETTINGS, "snapline_clients", "0", file, file_size);
  2940.         featureTeleportWithNearPlayers = GetPrivateProfileBool(APP_SETTINGS, "tele_w_near_players", "0", file, file_size);
  2941.         featureActivationSmoke = GetPrivateProfileBool(APP_SETTINGS, "activeSmoke", "1", file, file_size);
  2942.  
  2943.         font_title = GetPrivateProfileInt(APP_FONTS, "title", 7, file, file_size);
  2944.         font_options = GetPrivateProfileInt(APP_FONTS, "options", 4, file, file_size);
  2945.         font_selection = GetPrivateProfileInt(APP_FONTS, "selection", 4, file, file_size);
  2946.         GetPrivateProfileString(APP_FONTS, "size", "0.41", sFontScale, 14, file, file_size); fontScale = myAtof(sFontScale);
  2947.     }
  2948.  
  2949.  
  2950.  
  2951.  
  2952. //364 kick from apartment/ 5 params
  2953.             int Var0[5];
  2954.             Var0[0] = 364;
  2955.             Var0[1] = iSelectedPlayer;
  2956.             Var0[2] = apartmentIdd; //apartment id
  2957.             Var0[3] = 0; //0
  2958.             Var0[4] = 1; //0
  2959.             TriggerScriptEvent(Var0, 5, PLAYER_ID());
  2960.  
  2961.             //0-n
  2962.             //1-n
  2963.             //2 - eclips towers
  2964.             //3-n
  2965.             //4- ecplis towers
  2966.             //5- 3 alta st apt 10
  2967.             //6- 3 alta st apt 57
  2968.             //7- del perro heights apt 20
  2969.             //8- 1162 power st, apt 3
  2970.             //9- 0605 spanish ave, apt 1
  2971.             //10- 0604 las laganas blvd, apt 4
  2972.             //11- 0184 milton rd, apt 13
  2973.             //12- the royale, apy 19
  2974.             //13- 0504 s mo milton dr
  2975.             //14- 0115 bay city ave, apy 45
  2976.             //15- 0325 south rockford dr
  2977.             //16- dream tower, apt 15
  2978.             //17- 2143 las lagunas blvd, apt 9
  2979.             //18- 1561 san vitas st, apt 2
  2980.             //19- 0112 s rockford dr, apt 13
  2981.             //20- 2057 verpucci blcd, apt 1
  2982.             //21- 0069 couger ave, apt 19
  2983.             //22- 1237 prosperity st, apt 21
  2984.             //23- 115 blvd perro, apt 18
  2985.  
  2986.  
  2987.     int vVar0[3];
  2988.     vVar0[0] = 2;
  2989.     vVar0[1] = iSelectedPlayer;
  2990.     vVar0[2] = valueee;
  2991.     TriggerScriptEvent(vVar0, 3, iSelectedPlayer);
  2992.     //vVar0[2]
  2993.     //35 Name has activated their Brodcast app
  2994.     //35 Name has deactivated their Brodcast app
  2995.  
  2996.  
  2997.  
  2998.  
  2999.  
  3000. const int objectspawneritemCount = 11, objectspawnerlineCount = 19, objectspawneritemCountLastLine = objectspawneritemCount;
  3001.  
  3002. int objectspawnerActiveLineIndex;
  3003. bool featureJurisdiction;
  3004.  
  3005.  
  3006.  
  3007.  
  3008.  
  3009.  
  3010. switch (selectedOption())
  3011.         {
  3012.         case 0: break;
  3013.         default:
  3014.             AllWorldObjects[featureWorldObjectsSlot] = ObjectCreater(objectModelHashes[objectspawnerActiveLineIndex][Menu::currentop - 1]);
  3015.             break;
  3016.         }
  3017.        
  3018.  
  3019.  
  3020.  
  3021.  
  3022. SetupDraw();
  3023.             SET_TEXT_FONT(0);
  3024.             SET_TEXT_SCALE(0.0f, 0.31f);
  3025.             SET_TEXT_JUSTIFICATION(2);
  3026.             SET_TEXT_WRAP(0.0f, 0.2677f + menuPos.x);
  3027.             SET_TEXT_CENTRE(0);
  3028.             SET_TEXT_COLOUR(optioncount.R, optioncount.G, optioncount.B, optioncount.A);
  3029.  
  3030.             BEGIN_TEXT_COMMAND_DISPLAY_TEXT("CM_ITEM_COUNT");
  3031.             ADD_TEXT_COMPONENT_INTEGER(featureuseDefault ? currentop : (featureJurisdiction ? skinchangerActiveLineIndex + 1 : objectspawnerActiveLineIndex + 1)); // ! currentop_w_breaks
  3032.             ADD_TEXT_COMPONENT_INTEGER(featureuseDefault ? totalop : (featureJurisdiction ? skinchangerlineCount : objectspawnerlineCount)); // ! totalop - totalbreaks
  3033.             END_TEXT_COMMAND_DISPLAY_TEXT(0.2677f + menuPos.x, 0.13f + menuPos.y);
  3034.            
  3035.            
  3036.            
  3037.  
  3038. void AddXaxis(char *text, int toUse)
  3039.     {
  3040.         Menu::printingop++;
  3041.         SetupDraw(0);
  3042.         SET_TEXT_FONT(font_options);
  3043.         SET_TEXT_COLOUR(optiontext.R, optiontext.G, optiontext.B, optiontext.A);
  3044.         if (Menu::printingop == Menu::currentop)
  3045.         {
  3046.             navInstruction = 1;
  3047.             featureuseDefault = 0;
  3048.             SET_TEXT_FONT(font_selection);
  3049.             SET_TEXT_COLOUR(selectedtext.R, selectedtext.G, selectedtext.B, selectedtext.A);
  3050.             /*if (IsOptionPressed())
  3051.             {
  3052.  
  3053.             }*/
  3054.         }
  3055.  
  3056.         DrawString(text, ((float)Menu::printingop * 0.0900f - 0.0300), 0.300f);
  3057.         switch (toUse)
  3058.         {
  3059.         case 0:
  3060.             if (skinchangerActiveLineIndex == (skinchangerlineCount - 1))
  3061.                 if ((int)Menu::currentop >= skinchangeritemCountLastLine)
  3062.                     Menu::currentop = 1;
  3063.  
  3064.             break;
  3065.         case 1:
  3066.             if (objectspawnerActiveLineIndex == (objectspawnerlineCount - 1))
  3067.                 if ((int)Menu::currentop >= objectspawneritemCountLastLine)
  3068.                     Menu::currentop = 1;
  3069.             break;
  3070.         }
  3071.  
  3072.     }
  3073.    
  3074.    
  3075.    
  3076.     static void DetectJurisdiction(int scrollIndex, bool isSkinChanger)
  3077.         {
  3078.             if (isSkinChanger)
  3079.             {
  3080.                 switch (scrollIndex)
  3081.                 {
  3082.                 case 0:
  3083.                     if (skinchangerActiveLineIndex == 0)
  3084.                         skinchangerActiveLineIndex = skinchangerlineCount;
  3085.                     skinchangerActiveLineIndex--;
  3086.                     PlaySoundFrontend_default("YES");
  3087.                     break;
  3088.                 case 1:
  3089.                     skinchangerActiveLineIndex++;
  3090.                     if (skinchangerActiveLineIndex == skinchangerlineCount)
  3091.                         skinchangerActiveLineIndex = 0;
  3092.                     PlaySoundFrontend_default("YES");
  3093.                     break;
  3094.                 case 2:
  3095.                     currentop++;
  3096.                     int itemsMax = (skinchangerActiveLineIndex == (skinchangerlineCount - 1)) ? skinchangeritemCountLastLine : skinchangeritemCount;
  3097.                     if (currentop == itemsMax)
  3098.                         currentop = 1;
  3099.                     PlaySoundFrontend_default("NAV_UP_DOWN");
  3100.                     break;
  3101.                 case 3:
  3102.                     if (currentop == 1)
  3103.                         currentop = (skinchangerActiveLineIndex == (skinchangerlineCount - 1)) ? skinchangeritemCountLastLine : skinchangeritemCount;
  3104.                     currentop--;
  3105.                     PlaySoundFrontend_default("NAV_UP_DOWN");
  3106.                     break;
  3107.                 }
  3108.             }
  3109.             else
  3110.             {
  3111.                 switch (scrollIndex)
  3112.                 {
  3113.                 case 0:
  3114.                     if (objectspawnerActiveLineIndex == 0)
  3115.                         objectspawnerActiveLineIndex = objectspawnerlineCount;
  3116.                     objectspawnerActiveLineIndex--;
  3117.                     PlaySoundFrontend_default("YES");
  3118.                     break;
  3119.                 case 1:
  3120.                     objectspawnerActiveLineIndex++;
  3121.                     if (objectspawnerActiveLineIndex == objectspawnerlineCount)
  3122.                         objectspawnerActiveLineIndex = 0;
  3123.                     PlaySoundFrontend_default("YES");
  3124.                     break;
  3125.                 case 2:
  3126.                     currentop++;
  3127.                     int itemsMax2 = (objectspawnerActiveLineIndex == (objectspawnerlineCount - 1)) ? objectspawneritemCountLastLine : objectspawneritemCount;
  3128.                     if (currentop == itemsMax2)
  3129.                         currentop = 1;
  3130.                     PlaySoundFrontend_default("NAV_UP_DOWN");
  3131.                     break;
  3132.                 case 3:
  3133.                     if (currentop == 1)
  3134.                         currentop = (objectspawnerActiveLineIndex == (objectspawnerlineCount - 1)) ? objectspawneritemCountLastLine : objectspawneritemCount;
  3135.                     currentop--;
  3136.                     PlaySoundFrontend_default("NAV_UP_DOWN");
  3137.                     break;
  3138.                 }
  3139.             }
  3140.         }
  3141.        
  3142.        
  3143.        
  3144.         if (menu_up_pressed(1))
  3145.             {
  3146.                 if (featureuseDefault)
  3147.                     if (currentop == 1) Bottom(); else Up();
  3148.                 else
  3149.                     DetectJurisdiction(0, featureJurisdiction);
  3150.             }
  3151.  
  3152.             // Scroll down
  3153.             if (menu_down_pressed(1))
  3154.             {
  3155.                 if (featureuseDefault)
  3156.                     if (currentop == totalop) Top(); else Down();
  3157.                 else
  3158.                     DetectJurisdiction(1, featureJurisdiction);
  3159.             }
  3160.  
  3161.             if (!featureuseDefault)
  3162.             {
  3163.                 //Scroll right
  3164.                 if (IS_DISABLED_CONTROL_JUST_PRESSED(2, INPUT_SCRIPT_PAD_RIGHT))
  3165.                 {
  3166.                     DetectJurisdiction(2, featureJurisdiction);
  3167.                 }
  3168.  
  3169.                 //Scroll left
  3170.                 if (IS_DISABLED_CONTROL_JUST_PRESSED(2, INPUT_SCRIPT_PAD_LEFT))
  3171.                 {
  3172.                     DetectJurisdiction(3, featureJurisdiction);
  3173.                 }
  3174.             }
  3175.  
  3176.  
  3177.  
  3178.  
  3179. int Var0[2];
  3180.             Var0[0] = 52;
  3181.             Var0[1] = iSelectedPlayer;
  3182.             TriggerScriptEvent(Var0, 2, iSelectedPlayer);
  3183.  
  3184.  
  3185.             int Var0[4];
  3186.             Var0[0] = 47;
  3187.             Var0[1] = iSelectedPlayer;
  3188.             Var0[2] = 1;
  3189.             Var0[3] = valueee; //player
  3190.             TriggerScriptEvent(Var0, 4, iSelectedPlayer);
  3191.            
  3192.  
  3193.             int vVar0[3];
  3194.             vVar0[0] = 39;
  3195.             vVar0[1] = iSelectedPlayer;
  3196.             vVar0[2] = valueee;
  3197.             TriggerScriptEvent(vVar0, 3, iSelectedPlayer);
  3198.  
  3199.             int Var0[4];
  3200.             Var0[0] = 49;
  3201.             Var0[1] = iSelectedPlayer;
  3202.             Var0[2] = valueee;
  3203.             Var0[3] = valueee2;
  3204.             TriggerScriptEvent(Var0, 4, iSelectedPlayer);
  3205.  
  3206.             int Var0[10];
  3207.             Var0[0] = 37;
  3208.             Var0[1] = iSelectedPlayer;
  3209.             Var0[2] = valueee2; //player2
  3210.             //Var0[3] = uParam2;
  3211.             //Var0[4] = uParam0;
  3212.             //Var0[5] = uParam3;
  3213.             Var0[9] = 1;
  3214.             Var0[6] = valueee;
  3215.             //Var0[7] = uParam5;
  3216.             Var0[8] = -1;
  3217.             TriggerScriptEvent(Var0, 10, iSelectedPlayer);
  3218.            
  3219.            
  3220.             int Var0[5];
  3221.             Var0[0] = 38;
  3222.             Var0[1] = iSelectedPlayer;
  3223.             Var0[2] = valueee;
  3224.             Var0[3] = GET_TIME_DIFFERENCE(GET_NETWORK_TIME(), _GET_POSIX_TIME());
  3225.             Var0[4] = valueee2;
  3226.             TriggerScriptEvent(Var0, 5, iSelectedPlayer);
  3227.  
  3228.             //invite
  3229.             int Var0[2];
  3230.             Var0[0] = 32;
  3231.             Var0[1] = iSelectedPlayer;
  3232.             TriggerScriptEvent(Var0, 2, iSelectedPlayer);
  3233.  
  3234.             int Var0[5];
  3235.             Var0[0] = 50;
  3236.             Var0[1] = iSelectedPlayer;
  3237.             Var0[2] = valueee;
  3238.             Var0[3] = valueee2;
  3239.             Var0[4] = 0.0f;//vector coords
  3240.             TriggerScriptEvent(Var0, 7, iSelectedPlayer);
  3241.            
  3242.             int Var0[2];
  3243.             Var0[0] = 51;
  3244.             Var0[1] = iSelectedPlayer;
  3245.             TriggerScriptEvent(Var0, 2, iSelectedPlayer);
  3246.  
  3247.             int Var0[2];
  3248.             Var0[0] = 33;
  3249.             Var0[1] = iSelectedPlayer;
  3250.             TriggerScriptEvent(Var0, 2, iSelectedPlayer);
  3251.            
  3252.  
  3253.             int Var0[4];
  3254.             Var0[0] = 48;
  3255.             Var0[1] = iSelectedPlayer;
  3256.             Var0[2] = valueee;
  3257.             Var0[3] = valueee2;
  3258.             TriggerScriptEvent(Var0, 4, iSelectedPlayer);
  3259.            
  3260.             int Var1[2];
  3261.             Var1[0] = 200;
  3262.             Var1[1] = iSelectedPlayer;
  3263.             TriggerScriptEvent(Var1, 2, iSelectedPlayer);
  3264.  
  3265.  
  3266.             int Var0[15];
  3267.             Var0[0] = 181;
  3268.             Var0[1] = iSelectedPlayer;
  3269.             Var0[2] = GlobalVariable::Read(1838493);
  3270.             Var0[3] = GlobalVariable::Read(1838493 + 1);
  3271.             Var0[4] = 0;
  3272.             Var0[5] = GlobalVariable::Read(1838493 + 2);
  3273.             Var0[8] = GlobalVariable::Read(1838493 + 5);
  3274.             Var0[14] = GlobalVariable::Read(2399048 + 1 + 1481 + 13);
  3275.             TriggerScriptEvent(Var0, 15, iSelectedPlayer);
  3276.            
  3277.  
  3278.             int vVar0[3];
  3279.             vVar0[0] = 298;
  3280.             vVar0[1] = iSelectedPlayer;
  3281.             vVar0[2] = handle.netHandle;
  3282.             TriggerScriptEvent(vVar0, 15, iSelectedPlayer);
  3283.            
  3284.             int vVar0[3];
  3285.             vVar0[0] = 353;
  3286.             vVar0[1] = iSelectedPlayer;
  3287.             vVar0[2] = valueee;
  3288.             TriggerScriptEvent(vVar0, 3, iSelectedPlayer);
  3289.  
  3290.  
  3291.  
  3292.             int Var0[7];
  3293.             Var0[0] = 301;
  3294.             Var0[1] = iSelectedPlayer;
  3295.             Var0[2] = 24.2819f;
  3296.             Var0[5] = 24.2819f;
  3297.             Var0[6] = 24.2819f;
  3298.             TriggerScriptEvent(Var0, 7, iSelectedPlayer);
  3299.  
  3300.  
  3301.  
  3302.             int Var0[17];
  3303.             Var0[2] = 3;
  3304.             //Var0[2].imm_10 = 3;
  3305.             Var0[0] = 7;
  3306.             Var0[1] = iSelectedPlayer;
  3307.             Var0[16] = valueee;
  3308.             TriggerScriptEvent(Var0, 17, iSelectedPlayer);
  3309.  
  3310.  
  3311.             int vVar0[3];
  3312.             vVar0[0] = 287;
  3313.             vVar0[1] = iSelectedPlayer;
  3314.             vVar0[2] = GlobalVariable::Read(2387551); //vector coords
  3315.             TriggerScriptEvent(vVar0, 5, iSelectedPlayer);
  3316.  
  3317.  
  3318.             int vVar0[3];
  3319.             //vVar0.imm_2.imm_14 = 10;
  3320.             vVar0[0] = 297;
  3321.             vVar0[1] = iSelectedPlayer;
  3322.             vVar0[3] = handle.netHandle;
  3323.             //vVar0.imm_2.imm_13 = 1;
  3324.             //vVar0.imm_2.imm_14[0 <2>] = uParam0;
  3325.             //vVar0.imm_2.imm_14[0 <2>].imm_1 = uParam1;
  3326.             TriggerScriptEvent(vVar0, 37, iSelectedPlayer)
  3327.  
  3328.  
  3329.             int vVar0[3];
  3330.             vVar0[1] = iSelectedPlayer;
  3331.             vVar0[0] = 298;
  3332.             vVar0[2] = handle.netHandle;
  3333.             TriggerScriptEvent(vVar0, 15, iSelectedPlayer);
  3334.  
  3335.             int Var0[11];
  3336.             Var0[0] = 304;
  3337.             Var0[1] = iSelectedPlayer;
  3338.             Var0[2] = 0;
  3339.             Var0[3] = 1;
  3340.             Var0[4] = 0;
  3341.             Var0[5] = 0;
  3342.             Var0[6] = 0;
  3343.             Var0[7] = 0;
  3344.             Var0[8] = 0;
  3345.             Var0[9] = 0;
  3346.             Var0[10] = 0;
  3347.             TriggerScriptEvent(Var0, 11, iSelectedPlayer);
  3348.  
  3349.  
  3350.             int Var0[2];
  3351.             Var0[0] = 228;
  3352.             Var0[1] = iSelectedPlayer;
  3353.             TriggerScriptEvent(Var0, 2, iSelectedPlayer);
  3354.            
  3355.  
  3356.             int vVar0[3];
  3357.             vVar0[0] = 158;
  3358.             vVar0[1] = iSelectedPlayer;
  3359.             int uVar0;
  3360.             SET_BIT(&uVar0, iSelectedPlayer);
  3361.             vVar0[2] = valueee; //valueee
  3362.             TriggerScriptEvent(vVar0, 3, iSelectedPlayer);
  3363.  
  3364.  
  3365.             int vVar0[3];
  3366.             int iVar2;
  3367.             int iVar3;
  3368.             int iVar4;
  3369.             vVar0[0] = 308;
  3370.             vVar0[1] = iSelectedPlayer;
  3371.             NETWORK_GET_LOCAL_HANDLE(&handle.netHandle, 13);
  3372.             vVar0[2] = handle.netHandle;
  3373.             //iVar4 = 0;
  3374.             //set_bit(&iVar4, 0);
  3375.             //vVar0.imm_2.imm_13 = iVar4;
  3376.             //vVar0.imm_2.imm_19 = 1;
  3377.             //vVar0.imm_2.imm_20 = 1;
  3378.             //vVar0.imm_2.imm_14 = func_818(player_id());
  3379.             //StringCopy(&vVar0.imm_2.imm_15, "", 16);
  3380.             TriggerScriptEvent(vVar0, 23, iSelectedPlayer);
  3381.  
  3382.  
  3383.             //joined a job
  3384.             _debuging Var00;
  3385.             //int Var0[19];
  3386.             Var00.var = 162;
  3387.             Var00.var1 = iSelectedPlayer;
  3388.             Var00.var2 = GlobalVariable::GetString(2378444 + 2); //string param
  3389.             Var00.var18 = GlobalVariable::Read(2378444 + 18);
  3390.             int uVar0;
  3391.             SET_BIT(&uVar0, iSelectedPlayer);
  3392.             TRIGGER_SCRIPT_EVENT2(1, &Var00, 19, uVar0);
  3393.  
  3394.  
  3395.             int vVar0[3];
  3396.             vVar0[0] = 352;
  3397.             vVar0[1] = iSelectedPlayer;
  3398.             vVar0[2] = valueee;
  3399.             TriggerScriptEvent(vVar0, 3, iSelectedPlayer);
  3400.  
  3401.  
  3402.             int Var0[2];
  3403.             Var0[0] = 350;
  3404.             Var0[1] = iSelectedPlayer;
  3405.             TriggerScriptEvent(Var0, 2, iSelectedPlayer);
  3406.  
  3407.  
  3408.             int Var0[7];
  3409.             Vector3 t, t2;
  3410.             t.x = 100.0;
  3411.             t.y = 50.0;
  3412.             t.z = 20.0;
  3413.             t2.x = 0.0f;
  3414.             t2.y = 0.0f;
  3415.             t2.z = 180.0f;
  3416.             Var0[0] = 349;
  3417.             Var0[1] = iSelectedPlayer;
  3418.             Var0[2] = valueee;
  3419.             //Var0[3] = (int)t; //cords
  3420.             //Var0[6] = (int)t2; //offset
  3421.             TriggerScriptEvent(Var0, 9, iSelectedPlayer);
  3422.            
  3423.  
  3424.             int Var0[2];
  3425.             Var0[0] = 348;
  3426.             Var0[1] = iSelectedPlayer;
  3427.             TriggerScriptEvent(Var0, 2, iSelectedPlayer);
  3428.            
  3429.  
  3430.             int Var0[2];
  3431.             Var0[0] = 351;
  3432.             Var0[1] = iSelectedPlayer;
  3433.             TriggerScriptEvent(Var0, 2, iSelectedPlayer);
  3434.            
  3435.  
  3436.             int Var0[2];
  3437.             Var0[0] = 346;
  3438.             Var0[1] = iSelectedPlayer;
  3439.             TriggerScriptEvent(Var0, 2, iSelectedPlayer);
  3440.            
  3441.             int Var0[6];
  3442.             Var0[0] = 347;
  3443.             Var0[1] = iSelectedPlayer;
  3444.             Var0[2] = GlobalVariable::Read(2415231);
  3445.             Var0[3] = GlobalVariable::Read(2415232);
  3446.             Var0[4] = GET_STREAM_PLAY_TIME();
  3447.             Var0[5] = valueee; //player
  3448.             TriggerScriptEvent(Var0, 6, iSelectedPlayer);
  3449.  
  3450.  
  3451.  
  3452. typedef struct
  3453.     {
  3454.         /*int vVar0[3];
  3455.         vVar0[0] = 298;
  3456.         vVar0[1] = iSelectedPlayer;
  3457.         vVar0[2] = handle;*/
  3458.         int arg;
  3459.         int player;
  3460.         networkHandleMgr netHandle;
  3461.     } _noonon;
  3462.     typedef struct
  3463.     {
  3464.         /*int vVar0[3];
  3465.         vVar0[0] = 287;
  3466.         vVar0[1] = iSelectedPlayer;
  3467.         vVar0[2] = { vParam0 };
  3468.         */
  3469.         int arg;
  3470.         int player;
  3471.         Vector3 coords;
  3472.     } _ceinema;
  3473.     typedef struct
  3474.     {
  3475.         int p0;
  3476.         int p1;
  3477.         int p2;
  3478.         float p3;
  3479.         int p4;
  3480.         int p5;
  3481.         int p6;
  3482.         int p7;
  3483.         int p8;
  3484.         int p9;
  3485.         int p10;
  3486.         int p11;
  3487.         int p12;
  3488.         int p13;
  3489.     } unknown;
  3490.     typedef struct
  3491.     {
  3492.         Vector3 p0;
  3493.         int p1;
  3494.         int p2;
  3495.         float p3;
  3496.         int p4;
  3497.         int p5;
  3498.         int p6;
  3499.         int p7;
  3500.         int p8;
  3501.         int p9;
  3502.         int p10;
  3503.         int p11;
  3504.         int p12;
  3505.         int p13;
  3506.         int p14;
  3507.         int p15;
  3508.         int p16;
  3509.         int p17;
  3510.         int p18;
  3511.         int p19;
  3512.         int p20;
  3513.         int p21;
  3514.         int p22;
  3515.         int p23;
  3516.         int p24;
  3517.         int p25;
  3518.         int p26;
  3519.         int p27;
  3520.         int p28;
  3521.         int p29;
  3522.         int p30;
  3523.         int p31;
  3524.         int p32;
  3525.         int p33;
  3526.         int p34;
  3527.         int p35;
  3528.         int p36;
  3529.         int p37;
  3530.         int p38;
  3531.         int p39;
  3532.         int p40;
  3533.         int p41;
  3534.         int p42;
  3535.         int p43;
  3536.     } l_struct;
  3537.     typedef struct
  3538.     {
  3539.         /*Var0[0] = 301;
  3540.         Var0[1] = iSelectedPlayer;
  3541.         Var0[2] = { vParam0 }; //coords
  3542.         Var0[5] = uParam1; //vector3
  3543.         Var0[6] = uParam2; //struct
  3544.         */
  3545.         int arg;
  3546.         int player;
  3547.         Vector3 coords;
  3548.         int unk;
  3549.         int unk2;
  3550.         Vector3 rot;
  3551.         l_struct _struct;
  3552.     } thisStructMain;
  3553.  
  3554.  
  3555.  
  3556. //217
  3557.         //set globals to increase value
  3558.        /* int max_value = 50000;
  3559.         int Global_262145_f_4814 = GlobalVariable::Get(Global_262145 + 4814);
  3560.         printf("Global_262145_f_4814: %i\n", Global_262145_f_4814);
  3561.  
  3562.         int Global_2097152 = GlobalVariable::Get(2097152 + (iSelectedPlayer * 7586) + 5327 + 678);
  3563.         printf("Global_2097152: %i\n", Global_2097152);
  3564.  
  3565.         GlobalVariable::Write(Global_262145 + 4814, max_value + Global_2097152);
  3566.  
  3567.         GlobalVariable::Write(2097152 + (iSelectedPlayer * 7586) + 5327 + 678, Global_2097152 + max_value);
  3568. */
  3569.  
  3570. int max_value = 50000;
  3571.                     int Global_262145_f_4814 = GlobalVariable::Get(Global_262145 + 4814);
  3572.                     printf("Global_262145_f_4814: %i\n", Global_262145_f_4814);
  3573.  
  3574.                     int Global_2097152 = GlobalVariable::Get(2097152 + (iSelectedPlayer* 7586) + 5327 + 678);
  3575.                     printf("Global_2097152: %i\n", Global_2097152);
  3576.  
  3577.  
  3578.                     GlobalVariable::Write(Global_262145 + 4814, max_value/*max_value + Global_2097152*/);
  3579.  
  3580.  
  3581.                     GlobalVariable::Write(Global_1581767 + (iSelectedPlayer* 306) + 178 + 4, max_value);
  3582.                     int global_02 = GlobalVariable::Get(Global_1581767 + (iSelectedPlayer* 306) + 178 + 3) + max_value;
  3583.  
  3584.                     GlobalVariable::Write(Global_1581767 + (iSelectedPlayer*306) + 178 + 3, global_02);
  3585.  
  3586.                     //GlobalVariable::Write(2097152 + (iSelectedPlayer* 7586) + 5327 + 678, Global_2097152 + max_value);
  3587.  
  3588.         int vVar0[3];
  3589.         vVar0[0] = 219;
  3590.         vVar0[1] = iSelectedPlayer;
  3591.         vVar0[2] = 9999;
  3592.         TriggerScriptEvent(vVar0, 3, iSelectedPlayer);
  3593.  
  3594.  
  3595.         int Var0[2];
  3596.         Var0[0] = 311;
  3597.         Var0[1] = iSelectedPlayer;
  3598.         TriggerScriptEvent(Var0, 2, iSelectedPlayer);
  3599.  
  3600.         //55
  3601.         int Var0[7];
  3602.         Var0[0] = 55;
  3603.         Var0[1] = iSelectedPlayer;
  3604.         Var0[4] = 0;
  3605.         Var0[5] = 0;
  3606.         Var0[2] = (float)0.0f;
  3607.         Var0[3] = 0;
  3608.         Var0[6] = 1;
  3609.         TriggerScriptEvent(Var0, 7, iSelectedPlayer);
  3610.  
  3611.  
  3612.  
  3613.         int Var1[2];
  3614.         Var1[0] = 200;
  3615.         Var1[1] = iSelectedPlayer;
  3616.         TriggerScriptEvent(Var1, 2, iSelectedPlayer);
  3617.  
  3618.  
  3619.         int Var0[4];
  3620.         Var0[0] = 237;
  3621.         Var0[1] = iSelectedPlayer;
  3622.         Var0[2] = 1; //0
  3623.         Var0[3] = 0; //99999
  3624.         //iParam3 = iParam3;
  3625.         //(uParam4[0 *80])->f_6 = (uParam4[0 *80])->f_6;   
  3626.         TriggerScriptEvent(Var0, 10, iSelectedPlayer);
  3627.  
  3628.         //vehicle
  3629.         int vVar0[3];
  3630.         vVar0[0] = 353;
  3631.         vVar0[1] = iSelectedPlayer;
  3632.         vVar0[2] = myVeh; //entity
  3633.         TriggerScriptEvent(vVar0, 3, iSelectedPlayer);
  3634.        
  3635.  
  3636.         //prostitut
  3637.         int Var0[2];
  3638.         Var0[0] = 228;
  3639.         Var0[1] = iSelectedPlayer;
  3640.         TriggerScriptEvent(Var0, 2, iSelectedPlayer);
  3641.        
  3642.         //
  3643.         int Var0[2];
  3644.         Var0[0] = 192;
  3645.         Var0[1] = iSelectedPlayer;
  3646.         GlobalVariable::Write(Global_2394218 + 2808, 1);
  3647.         TriggerScriptEvent(Var0, 2, iSelectedPlayer);
  3648.  
  3649.  
  3650.         int vVar0[3];
  3651.         vVar0[0] = 158;
  3652.         vVar0[1] = iSelectedPlayer;
  3653.         vVar0[2] = 999;
  3654.         TriggerScriptEvent(vVar0, 3, iSelectedPlayer);
  3655.  
  3656.  
  3657.  
  3658.  
  3659.         //main transation
  3660.         networkHandleMgr handle;
  3661.         NETWORK_HANDLE_FROM_PLAYER(iSelectedPlayer, &handle.netHandle, 13);
  3662.         _noonon netMain;
  3663.         netMain.arg = 298;
  3664.         netMain.player = iSelectedPlayer;
  3665.         netMain.netHandle = handle;
  3666.         TriggerScriptEvent(vVar0, 15, iSelectedPlayer);
  3667.        
  3668.  
  3669.  
  3670.         //cinema
  3671.         _ceinema tv;
  3672.         tv.arg = 287;
  3673.         tv.player = iSelectedPlayer;
  3674.         tv.coords = GET_ENTITY_COORDS(playerPed, 1);
  3675.         TriggerScriptEvent(&tv, 5, iSelectedPlayer);
  3676.  
  3677.  
  3678.        
  3679.         unknown unk_t;
  3680.         unk_t.p3 = 1125515264;
  3681.         unk_t.p4 = 1;
  3682.         unk_t.p5 = 1;
  3683.         unk_t.p7 = 1082130432;
  3684.         unk_t.p8 = 1;
  3685.         unk_t.p11 = 1;
  3686.         unk_t.p3 = 50.0f;
  3687.         unk_t.p4 = 0;
  3688.         unk_t.p5 = 0;
  3689.         unk_t.p8 = 1; //1 or 0
  3690.         unk_t.p9 = 1; //1 or 0
  3691.         unk_t.p10 = 1;
  3692.         unk_t.p11 = 1; //true or false
  3693.         unk_t.p12 = 1;
  3694.  
  3695.  
  3696.         l_struct m_lstruct;
  3697.         m_lstruct.p6 = 1082130432;
  3698.         m_lstruct.p7 = 1176255488;
  3699.         m_lstruct.p8 = 1;
  3700.         m_lstruct.p10 = 1;
  3701.         m_lstruct.p13 = 1;
  3702.         m_lstruct.p15 = 1;
  3703.         m_lstruct.p16 = 1;
  3704.         m_lstruct.p31 = 1;
  3705.         m_lstruct.p43 = 1123024896;
  3706.         m_lstruct.p9 = 1;
  3707.         m_lstruct.p3 = 7.0f;
  3708.         m_lstruct.p10 = unk_t.p4; //all unk_t should be pointer to struct like: unk_t->
  3709.         m_lstruct.p4 = unk_t.p0;
  3710.         m_lstruct.p13 = unk_t.p1;
  3711.         m_lstruct.p5 = unk_t.p3;
  3712.         m_lstruct.p15 = unk_t.p5;
  3713.         m_lstruct.p11 = unk_t.p6;
  3714.         m_lstruct.p6 = unk_t.p7;
  3715.         m_lstruct.p16 = unk_t.p8;
  3716.         m_lstruct.p17 = unk_t.p9;
  3717.         m_lstruct.p0 = NewVector3(0.0f, 0.0f, 0.0f); //rot
  3718.         m_lstruct.p12 = 1;
  3719.         m_lstruct.p34 = GlobalVariable::Read(2097152 + (iSelectedPlayer * 7586) + (1865 * 100) + 42); //hash | iSelectedPlayer should be 0
  3720.         m_lstruct.p31 = unk_t.p11;
  3721.         m_lstruct.p30 = 1;
  3722.         m_lstruct.p42 = unk_t.p12;
  3723.  
  3724.         thisStructMain _t_main;
  3725.         _t_main.arg = 301;
  3726.         _t_main.player = 0;
  3727.         _t_main.coords = GET_ENTITY_COORDS(playerPed, 1);
  3728.         _t_main.unk = 0;
  3729.         _t_main.unk2 = 0;
  3730.         _t_main.rot = NewVector3(0.0f, 0.0f, 0.0f);
  3731.         _t_main._struct = m_lstruct;
  3732.         TriggerScriptEvent(Var0, 7, iSelectedPlayer);
  3733.  
  3734.  
  3735. //patched
  3736. if (individualPlayer[i].featurePutBadSport)
  3737.                 {
  3738.                     int Var0[4];
  3739.                     Var0[0] = 312;
  3740.                     Var0[1] = i;
  3741.                     Var0[2] = INT_MAX; //amount
  3742.                     Var0[3] = 0; //Global_2404083
  3743.                     TriggerScriptEvent(Var0, 4, i);
  3744.                 }
  3745.                
  3746.  
  3747. //money
  3748.             int vVar0[3];
  3749.             vVar0[0] = 219;
  3750.             vVar0[1] = iSelectedPlayer;
  3751.             vVar0[2] = 12345;
  3752.             TriggerScriptEvent(vVar0, 3, iSelectedPlayer);
  3753.            
  3754.            
  3755.             //mental state
  3756.             int Param0[9];
  3757.             Param0[0] = 0;
  3758.             Param0[1] = iSelectedPlayer;
  3759.             Param0[2] = 135;
  3760.             TriggerScriptEvent(Param0, 9, iSelectedPlayer);
  3761.            
  3762.             //off radar
  3763.             int vVar0[3];
  3764.             vVar0[0] = 358;
  3765.             vVar0[1] = iSelectedPlayer;
  3766.             vVar0[2] = 59;
  3767.             TriggerScriptEvent(vVar0, 3, iSelectedPlayer);
  3768.            
  3769.  
  3770.  
  3771.             //func_3619(func_6(1, 1), 1, iParam0, 1);
  3772.  
  3773.             //offradar
  3774.             int Var0[6];
  3775.             Var0[0] = 288;
  3776.             Var0[1] = iSelectedPlayer;
  3777.             Var0[3] = 1;
  3778.             Var0[5] = 1;
  3779.             Var0[2] = iSelectedPlayer;
  3780.  
  3781.             //Global_2399048 + 2415 + (Var0 + 3) = 0;
  3782.             //Global_2399048 + 2415 + 39 + (1 * 2), 1, 0);
  3783.             //Global_2399048 + 2415 + 232 = network_get_host_of_script("Freemode", -1, 0);
  3784.            
  3785.             GlobalVariable::Write(Global_2410912 + 4054 + 1, 0);
  3786.             GlobalVariable::Write(Global_2410912 + 4054 + 2, 59); //time           
  3787.             TriggerScriptEvent(Var0, 6, iSelectedPlayer);
  3788.            
  3789.  
  3790.             //offradar
  3791.             int Var02[4];
  3792.             Var02[0] = 289;
  3793.             Var02[1] = iSelectedPlayer;
  3794.             Var02[3] = 1;
  3795.             Var02[2] = GlobalVariable::Read(Global_2410912 + 4054);
  3796.             GlobalVariable::Write(2399048 + 2415 + 235 + (1 * 4), 1);
  3797.             GlobalVariable::Write(2399048 + 2415 + 235 + (1 * 4) + 1, 59); //time
  3798.  
  3799.             //GlobalVariable::Write(2399048 + 2415 + 39 + (1 * 2), 0);
  3800.             GlobalVariable::Write(Global_2410912 + 4054 + 2, 0);
  3801.             TriggerScriptEvent(Var02, 6, iSelectedPlayer);
  3802.  
  3803.  
  3804.  
  3805.             //offradar
  3806.             int Var03[6];
  3807.             Var03[0] = 291;
  3808.             Var03[1] = iSelectedPlayer;
  3809.             Var03[3] = 1;
  3810.             Var03[5] = 1;
  3811.             Var03[4] = 1;
  3812.             Var03[2] = 1;
  3813.             TriggerScriptEvent(Var03, 6, iSelectedPlayer);
  3814.  
  3815.             //badsport
  3816.             int vVar0[3];
  3817.             vVar0[0] = 2;
  3818.             vVar0[1] = iSelectedPlayer;
  3819.             vVar0[2] = valueee;
  3820.             TriggerScriptEvent(vVar0, 3, iSelectedPlayer);
  3821.            
  3822.            
  3823.            
  3824.            
  3825.             //commend
  3826.             int Var0[6];
  3827.             Var0[0] = 288;
  3828.             Var0[1] = iSelectedPlayer;
  3829.             Var0[3] = 1;
  3830.             Var0[5] = 1;
  3831.             Var0[2] = 100; //value
  3832.             //Global_2399048.f_2415[Var0.[3]] = 0;
  3833.             //func_599(&(Global_2399048.f_2415.f_39[iParam1 /*2*/]), 1, 0);
  3834.             //Global_2399048.f_2415.f_232 = network_get_host_of_script("Freemode", -1, 0);
  3835.  
  3836.             //Global_2410912.f_4054.f_1 = 0;
  3837.             //func_599(&(Global_2410912.f_4054.f_2), 0, 0);
  3838.             TriggerScriptEvent(Var0, 6, iSelectedPlayer);
  3839.            
  3840.            
  3841.             //commend2
  3842.             //288
  3843.             //259
  3844.             //279 - unk
  3845.  
  3846.             int vVar0[3];
  3847.             vVar0[0] = 2;
  3848.             vVar0[1] = iSelectedPlayer;
  3849.             vVar0[2] = 37; //helpful commend | 26 | 54
  3850.             TriggerScriptEvent(vVar0, 3, iSelectedPlayer);
  3851.            
  3852.            
  3853.            
  3854.            
  3855.            
  3856.             //delete or lock personal vehicle
  3857.             int vVar0[3];
  3858.             vVar0[0] = 56;
  3859.             vVar0[1] = 0;
  3860.             vVar0[2] = 0;
  3861.             TriggerScriptEvent(vVar0, 3, iSelectedPlayer);
  3862.            
  3863.                 //unknown
  3864.             int vVar0[3];
  3865.             vVar0[0] = 302;
  3866.             vVar0[1] = iSelectedPlayer;
  3867.             vVar0[2] = 0;
  3868.             TriggerScriptEvent(vVar0, 3, iSelectedPlayer);
  3869.            
  3870.             //remove wanted level
  3871.             int vVar0[2];
  3872.             vVar0[0] = 356;
  3873.             vVar0[1] = iSelectedPlayer;
  3874.             TriggerScriptEvent(vVar0, 2, iSelectedPlayer);
  3875.            
  3876.             //roller coster
  3877.             int args[2];
  3878.             args[0] = 346;
  3879.             args[1] = 0; //unknown
  3880.             TriggerScriptEvent(args, 2, iSelectedPlayer);
  3881.            
  3882.             //betting money
  3883.             int Var1[2];
  3884.             Var1[0] = 200;
  3885.             Var1[1] = iSelectedPlayer;
  3886.             TriggerScriptEvent(Var1, 2, iSelectedPlayer);
  3887.            
  3888.             //switch mission blips
  3889.             int vVar0[3];
  3890.             vVar0[0] = 365;
  3891.             vVar0[1] = iSelectedPlayer;
  3892.             vVar0[2] = 1;
  3893.             TriggerScriptEvent(vVar0, 3, iSelectedPlayer);
  3894.            
  3895.            
  3896.             //358 off the radar
  3897.             int vVar0[3];
  3898.             vVar0[0] = 358;
  3899.             vVar0[1] = PLAYER_ID();
  3900.             vVar0[2] = 50; //time
  3901.             TriggerScriptEvent(vVar0, 3, iSelectedPlayer);
  3902.            
  3903.             //41 death match notifaction/from me
  3904.             int Var0[6];
  3905.             Var0[0] = 41;
  3906.             Var0[1] = PLAYER_ID();
  3907.             Var0[3] = 1; //last or current vehicle active
  3908.             Var0[5] = 1; //some kind of return stat value
  3909.             TriggerScriptEvent(Var0, 6, iSelectedPlayer);
  3910.  
  3911.  
  3912.  
  3913.             //288/289 bullshark
  3914.             int Var0[6];
  3915.             Var0[0] = 288;
  3916.             Var0[1] = iSelectedPlayer;
  3917.             Var0[3] = 1;
  3918.             Var0[5] = 1;
  3919.             Var0[2] = iSelectedPlayer; //player 2
  3920.             TriggerScriptEvent(Var0, 6, iSelectedPlayer);
  3921.            
  3922.            
  3923.             //close interaction menu/paused 259
  3924.             int vVar0[3];
  3925.             vVar0[0] = 259;
  3926.             vVar0[1] = iSelectedPlayer;
  3927.             vVar0[2] = 0;
  3928.             TriggerScriptEvent(vVar0, 3, iSelectedPlayer);
  3929.  
  3930.             //false leave
  3931.             int var0[3];
  3932.             var0[0] = 203;
  3933.             var0[1] = iSelectedPlayer;
  3934.             var0[2] = 100000;
  3935.             TriggerScriptEvent(&ride, 3, iSelectedPlayer);
  3936.            
  3937.  
  3938.             int var0[3];
  3939.             var0[0] = 27;
  3940.             var0[1] = iSelectedPlayer;
  3941.             var0[2] = 1;
  3942.             TriggerScriptEvent(&ride, 3, iSelectedPlayer);
  3943.             //arg/ 3 params
  3944.             //1 fake leave
  3945.             //27 notifacation sound
  3946.             //30 bullshark started
  3947.             //31 bullshark end
  3948.             //56 request personal vehicle
  3949.             //64 anon bounty
  3950.             //67 empty notifaction
  3951.             //151 fake leave
  3952.             //161 remove blips
  3953.             //162 RDR_LEAKS join Job.
  3954.             //163 remove blips
  3955.             //173 armour truck
  3956.             //174 enable blips back
  3957.             //300 insurance message
  3958.             //312 hospital bill
  3959.             //318 fake leave
  3960.             //322 fake leave
  3961.             //325 fave leave
  3962.  
  3963.  
  3964. typedef struct
  3965.     {
  3966.         int arg;
  3967.         int player;
  3968.         char *weather;
  3969.     } onlineWeather;
  3970.  
  3971.             onlineWeather weather;
  3972.             weather.arg = 16;
  3973.             weather.player = iSelectedPlayer;
  3974.             weather.weather = "BLIZZARD";
  3975.             TriggerScriptEvent(&weather, 3, iSelectedPlayer);
  3976.  
  3977.  
  3978.  
  3979. //unlock all test
  3980. int Var0[9];
  3981.  
  3982.             GlobalVariable::Write(1573885, 0);
  3983.             Var0[0] = 199;
  3984.             Var0[1] = PLAYER_ID();
  3985.             //Vector3 coords = GlobalVariable::Read(Global_2394218 + 2529);
  3986.             //Var0[2] = coords;
  3987.             Var0[6] = 0;
  3988.             Var0[8] = IS_BIT_SET(GlobalVariable::Get(Global_1581767 + (PLAYER_ID() * 306) + 114), 0);
  3989.             Var0[7] = GlobalVariable::Get(Global_1581767 + (PLAYER_ID() * 306) + 76 + 27);
  3990.             //func_551();
  3991.             //func_555(vParam0.z);
  3992.             //GlobalVariable::WriteVector3(Global_2394218 + 2529, coords);
  3993.             char *prt = GlobalVariable::GetString(Global_2394218 + 2444 + 51);
  3994.             strncpy(prt, 0, 64);
  3995.             char *prt2 = GlobalVariable::GetString(Global_2394218 + 2444 + 67);
  3996.             strncpy(prt2, 0, 64);
  3997.             int iVar1 = GlobalVariable::Get(Global_2390201 + (PLAYER_ID() * 223) + 121 + 1);
  3998.             int iVar2 = GlobalVariable::Get((Global_2390201 + (PLAYER_ID() * 223) + 121 + 1 + GlobalVariable::Get(Global_2390201 + (PLAYER_ID() * 223) + 121 + 1 + 1)));
  3999.  
  4000.             Var0[5] = ROUND(((TO_FLOAT(iVar1) / TO_FLOAT(iVar2)) * 100.0f));
  4001.  
  4002.             if (Var0[5] <= 0)
  4003.             {
  4004.                 Var0[5] = GET_RANDOM_INT_IN_RANGE(5, 100);
  4005.             }
  4006.  
  4007.             //func_554(1);
  4008.             TriggerScriptEvent(Var0, 9, PLAYER_ID());
  4009.  
  4010.  
  4011. //unlock all 2
  4012. int Var0[2];
  4013.             Var0[0] = 309;
  4014.             Var0[1] = PLAYER_ID();
  4015.             TriggerScriptEvent(Var0, 2, PLAYER_ID());
  4016.            
  4017.  
  4018. //unlock all 3
  4019. int vVar0[3];
  4020.             vVar0[0] = 167;
  4021.             vVar0[1] = PLAYER_ID();
  4022.             vVar0[2] = GlobalVariable::Get(2388295 + (PLAYER_ID() * 40) + 3 + 17);
  4023.             TriggerScriptEvent(vVar0, 3, PLAYER_ID());
  4024.            
  4025.            
  4026.            
  4027.             //earn from pickup
  4028.             int Var0[4];
  4029.             Var0[0] = 44;
  4030.             Var0[1] = iSelectedPlayer;
  4031.             Var0[2] = iSelectedPlayer; //player 2
  4032.             Var0[3] = 100; //value
  4033.             TriggerScriptEvent(Var0, 4, iSelectedPlayer);
  4034.            
  4035.            
  4036.            
  4037.            
  4038.             //something
  4039.             int vVar0[3];
  4040.             vVar0[0] = 43;
  4041.             vVar0[1] = iSelectedPlayer;
  4042.             vVar0[2] = iSelectedPlayer; //player 2
  4043.             TriggerScriptEvent(vVar0, 3, iSelectedPlayer);
  4044.            
  4045.            
  4046.             //somthing else
  4047.             int Var0[19];
  4048.             //struct<20> Var1;
  4049.             Var0[0] = 59;
  4050.             Var0[1] = iSelectedPlayer;
  4051.             int zeroo = 0;
  4052.             int uVar56 = 0;
  4053.             SET_BIT(&uVar56, zeroo);
  4054.  
  4055.             Var0[16] = uVar56;
  4056.             Var0[2] = iSelectedPlayer; //player 2
  4057.             Var0[18] = GlobalVariable::Get(1572928 + 4 + (iSelectedPlayer * 3) + 1);
  4058.             Var0[17] = 1;
  4059.             Var0[3] = GlobalVariable::Get(2097152 + (zeroo * 7586) + 7168);
  4060.             /*StringCopy(&Var1, get_player_name(player_id()), 32);
  4061.             if (func_5666(iParam1, 0, 1))
  4062.             {
  4063.             StringCopy(&(Var1.f_8), get_player_name(iParam1), 32);
  4064.             }
  4065.             Var1[16] = uParam3;
  4066.             Var1[17] = iParam5;
  4067.             Var1[18] = Global_1581767[player_id() * 306].f_178.f_6;
  4068.             Var1[19] = iParam4;
  4069.             _0x0B9A3512(&Param2);
  4070.             _0x628F489B(&Var1);*/
  4071.             TriggerScriptEvent(Var0, 20, iSelectedPlayer);
  4072.            
  4073.            
  4074.             //something idk
  4075.             int Var0[2];
  4076.             Var0[0] = 204;
  4077.             Var0[1] = iSelectedPlayer;
  4078.             TriggerScriptEvent(Var0, 2, iSelectedPlayer);
  4079.  
  4080.  
  4081. //am_vehicle_spawn
  4082.                 int Var0[5];
  4083.                 Var0[0] = 296;
  4084.                 Var0[1] = PLAYER_ID();
  4085.                 Var0[2] = PLAYER_ID();
  4086.                 Var0[3] = 5; //0 - through 5
  4087.                 Var0[4] = VEHICLE_ADDER;
  4088.                 TriggerScriptEvent(Var0, 5, PLAYER_ID());
  4089.  
  4090. //am_vehicle_spawn
  4091.                 int Var0[5];
  4092.                 Var0[0] = 295;
  4093.                 Var0[1] = PLAYER_ID();
  4094.                 Var0[2] = PLAYER_ID();
  4095.                 Var0[3] = 1; //0 - through 5
  4096.                 Var0[4] = VEHICLE_ADDER;
  4097.                 TriggerScriptEvent(Var0, 5, PLAYER_ID());
  4098.  
  4099.  
  4100. //undocumented events
  4101.                 //192 / crew awards unlock
  4102.                 //210 / promote or demote a crew member
  4103.                 //182 / crew left
  4104.                 //203 / kick from crew
  4105.                 //213 / set some crew var to true
  4106.  
  4107.  
  4108.  
  4109.  
  4110. if (featureForgeGun)
  4111.         {
  4112.             DISABLE_PLAYER_FIRING(PLAYER_ID(), 1);
  4113.             if (IS_CONTROL_JUST_PRESSED(2, INPUT_FRONTEND_RT) && GET_ENTITY_PLAYER_IS_FREE_AIMING_AT(PLAYER_ID(), &forge_entity) && DOES_ENTITY_EXIST(forge_entity)) { forge_target_locked = !forge_target_locked; if (IS_ENTITY_A_PED(forge_entity) && IS_PED_IN_ANY_VEHICLE(forge_entity, 1)) { forge_entity = GET_VEHICLE_PED_IS_IN(forge_entity, 0); } }
  4114.             if (forge_target_locked)
  4115.             {
  4116.                 if (RequestControlOfEnt(forge_entity))
  4117.                 {
  4118.                     Vector3 min, max;
  4119.                     GET_MODEL_DIMENSIONS(GET_ENTITY_MODEL(forge_entity), &min, &max);
  4120.                     Vector3 camvf = get_coords_from_cam(featureForgeGunRange + max.y);
  4121.                     SET_ENTITY_COORDS_NO_OFFSET(forge_entity, camvf.x, camvf.y, camvf.z, 1, 1, 1);
  4122.                     if (IS_ENTITY_A_VEHICLE(forge_entity)) { SET_ENTITY_HEADING(forge_entity, GET_ENTITY_HEADING(PLAYER_PED_ID()) + 90.0f); }
  4123.                 }
  4124.             }
  4125.             else
  4126.             {
  4127.                 if (DOES_ENTITY_EXIST(forge_entity))
  4128.                     FREEZE_ENTITY_POSITION(forge_entity, 1);
  4129.             }
  4130.         }
  4131.  
  4132.  
  4133.  
  4134. case 10:
  4135.  
  4136.             //featureClearAttachmentsNet = 1;
  4137.             if (detachObjectsFromPlayerCurrentlyRunning == 0)
  4138.             {
  4139.                 detachObjectsFromPlayerCurrentlyRunning = 1;
  4140.                 detachObjectsFromPlayerAddr = playerPedIter;
  4141.                 detachObjectsFromPlayerCurrentIndex = 0;
  4142.                 clearAttachmentsCallback(0);
  4143.             }
  4144.             break;
  4145.            
  4146.            
  4147.            
  4148.            
  4149.             void nullFuncH(int handle) { return; }
  4150.     void(*saveFunc)(int);
  4151.     Entity featureClearEentity = 0, detachObjectsFromPlayerAddr = 0;
  4152.     int featureClearAttamentTimeout = 0, detachObjectsFromPlayerCurrentIndex = 0;
  4153.     bool featureClearAttachmentsNet = 0, detachObjectsFromPlayerCurrentlyRunning = 0;
  4154.  
  4155.  
  4156.     void markEntityForDeletion(int ent, void(*handle)(int) = nullFuncH)
  4157.     {
  4158.         featureClearAttamentTimeout = 0;
  4159.         featureClearEentity = ent;
  4160.         featureClearAttachmentsNet = 1;
  4161.         saveFunc = handle;
  4162.     }
  4163.     void clearAttachmentsCallback(Entity previousEntity)
  4164.     {
  4165.         CEntityPool *Entities = (CEntityPool*)*(unsigned int*)_entityPoolAddress;
  4166.         if (detachObjectsFromPlayerCurrentIndex >= Entities->maxPoolSize)
  4167.         {
  4168.             detachObjectsFromPlayerCurrentlyRunning = 0;
  4169.             return;
  4170.         }
  4171.  
  4172.         poolEntity *ent = &Entities->getEntity(detachObjectsFromPlayerCurrentIndex);
  4173.         while (true)
  4174.         {
  4175.             if (ent->isValid())
  4176.             {
  4177.                 int index = EntityToIndex(ent->addr);
  4178.                 if (GET_ENTITY_ATTACHED_TO(index) == detachObjectsFromPlayerAddr)
  4179.                 {
  4180.                     break;
  4181.                 }
  4182.             }
  4183.             detachObjectsFromPlayerCurrentIndex++;
  4184.             if (detachObjectsFromPlayerCurrentIndex >= Entities->maxPoolSize)
  4185.             {
  4186.                 detachObjectsFromPlayerCurrentlyRunning = 0;
  4187.                 return;
  4188.             }
  4189.             ent = &Entities->getEntity(detachObjectsFromPlayerCurrentIndex);
  4190.         }
  4191.         int entityIndex = EntityToIndex(ent->addr);
  4192.         markEntityForDeletion(entityIndex, clearAttachmentsCallback);
  4193.         detachObjectsFromPlayerCurrentIndex++;
  4194.     }
  4195.  
  4196.  
  4197.  
  4198.  
  4199.  
  4200. //use this to get the args that are getting past by other players to you, works similar to hooking the actual event function
  4201. void func_4()
  4202.     {
  4203.         //event num: 291, event num: 0, event num: 289  /off the radar
  4204.         //arg struct 259 /join session
  4205.         //event num: 244 /smoke bong
  4206.         int iVar0;
  4207.         int iVar1;
  4208.         int iVar2[3];
  4209.  
  4210.         int m_args[2];
  4211.         int m_args2[3];
  4212.         int m_args3[10];
  4213.         int m_args4[12];
  4214.         int m_args5[3];
  4215.         int m_args6[28];
  4216.         int m_args7[2];
  4217.         int m_args8[21];
  4218.         int m_args9[14];
  4219.  
  4220.         iVar0 = 0;
  4221.         while (iVar0 < GET_NUMBER_OF_EVENTS(1))
  4222.         {
  4223.             iVar1 = GET_EVENT_AT_INDEX(1, iVar0);
  4224.  
  4225.             if (iVar1 == 166) //freemode
  4226.             {
  4227.                 GET_EVENT_DATA(1, iVar0, iVar2, 3);
  4228.                 printf("arg: %i, arg2: %i, arg3: %i\n", iVar2[0], iVar2[1], iVar2[2]);
  4229.                 if (iVar2[0] == 312)
  4230.                 {
  4231.                     printf("badsport \n");
  4232.                 }
  4233.             }
  4234.             if (iVar1 == 164) //main transition
  4235.             {
  4236.                 GET_EVENT_DATA(1, iVar0, m_args, 3);
  4237.                 printf("main transition event args: 0x%X, arg2: 0x%X\n", m_args[0], m_args[1]);
  4238.             }
  4239.             if (iVar1 == 163)//main transition
  4240.             {
  4241.                 GET_EVENT_DATA(1, iVar0, m_args2, 3);
  4242.                 printf("main transition2 event args: %i, arg2: 0x%X\n", m_args2[0], m_args2[1]);
  4243.             }
  4244.             if (iVar1 == 177) //freemode stats
  4245.             {
  4246.                 GET_EVENT_DATA(1, iVar0, m_args3, 10);
  4247.                 printf("freemode stats: args: %i, arg2: %i, arg3: 0x%X, arg4: %i, arg5: 0x%X, arg6: %i, arg7: 0x%X, arg8: %i, arg9: 0x%X\n", m_args3[0], m_args3[1], m_args3[2], m_args3[3], m_args3[4], m_args3[5], m_args3[6], m_args3[7], m_args3[8], m_args3[9]);
  4248.             }
  4249.             if (iVar1 == 154) //main_presistent | admin kick
  4250.             {
  4251.                 //func_1091
  4252.                 GET_EVENT_DATA(1, iVar0, m_args5, 1);
  4253.                 printf("admin: arg: %i, arg2: %X, arg3: %i\n", m_args5[0], m_args5[1], m_args5[2]);
  4254.             }
  4255.             if (iVar1 == 192) //main_presistent | disable multiplayer
  4256.             {
  4257.                 GET_EVENT_DATA(1, iVar0, m_args6, 28);
  4258.                 printf("dis multi: arg: %i, arg2: %i, arg3: %i, arg4: %i, arg5: %i\n", m_args6[0], m_args6[1], m_args6[2], m_args6[3], m_args6[4]);
  4259.             }
  4260.             if (iVar1 == 175) //main_presistent | session error
  4261.             {
  4262.                 GET_EVENT_DATA(1, iVar0, m_args7, 2);
  4263.                 printf("session error: arg: %i, arg2: %i\n", m_args7[0], m_args7[1]);
  4264.             }
  4265.             if (iVar1 == 175) //main_presistent | new session
  4266.             {
  4267.                 GET_EVENT_DATA(1, iVar0, m_args8, 21);
  4268.                 printf("new session: arg: %i, arg2: %i, arg3: %i, arg4: %i\n", m_args8[0], m_args8[1], m_args8[2], m_args8[3]);
  4269.             }
  4270.             if (iVar1 == 215) //main_presistent | dev kick
  4271.             {
  4272.                 GET_EVENT_DATA(1, iVar0, m_args9, 14);
  4273.                 printf("dev kick: arg: %i, arg2: %i, arg3: %i, arg4: %i\n", m_args9[0], m_args9[1], m_args9[2], m_args9[3]);
  4274.             }
  4275.             if (iVar1 == 150) //freemode unlocks
  4276.             {  
  4277.                 //Var0.f_3
  4278.                 //m_args4[3] = 88; //stat set int with global - Global_2428195
  4279.                 //m_args4[4] = 34; //stat set bool with global - Global_2428460
  4280.                 //m_args4[5] = 1; //stat set float with global - Global_1330608
  4281.                 //m_args4[6] = 2949; //stat set int with global - Global_2417731
  4282.                 //m_args4[7] = 228; //stat set bool with global - Global_2427264
  4283.                 //m_args4[8] = 228; //stat set float with global - Global_2426579
  4284.                 GET_EVENT_DATA(1, iVar0, m_args4, 12);
  4285.                 printf("freemode unlocks: args: 0x%X, arg2: 0x%X, arg3: %i, arg4: %i, arg5: 0x%X, arg6: %X, arg7: 0x%X, arg8: 0x%X, arg9: 0x%X\n", m_args4[0], m_args4[1], m_args4[2], m_args4[3], m_args4[4], m_args4[5], m_args4[6], m_args4[7], m_args4[8], m_args4[9]);
  4286.             }
  4287.  
  4288.             iVar0++;
  4289.         }
  4290.     }
  4291.  
  4292.  
  4293.  
  4294.  
  4295. typedef struct
  4296. {
  4297.     int arg;
  4298.     int player;
  4299.     int unknown;
  4300.     int intStatAwards; // stat index of Global_2428195[index here][charater here]
  4301.     int boolStatActivities; // stat index of Global_2428460[index here][charater here]
  4302.     int floatStatTempAward; // stat index of Global_1330608[index here][charater here]
  4303.     int intStatCareer; // stat index of Global_2417731[index here][charater here]
  4304.     int boolStatWeapons; // stat index of Global_2427264[index here][charater here]
  4305.     int floatStatVehicles; // stat index of Global_2426579[index here][charater here]
  4306.     int intStatSet; // stat set int value
  4307.     float floatStatSet; // stat set float value
  4308.     bool boolStatSet; // stat set bool value
  4309.  
  4310.     /*//variables below are not used in this struct, they are just here for documentation, These stats below are not used by trigger script event native
  4311.  
  4312.     //used by scripts but not used by trigger script event native
  4313.     int stringStatGerneral; // stat index of Global_2427949[index here][charater here]
  4314.  
  4315.     //used by scripts but not used by trigger script event native
  4316.     int gxtLabelStatMission; // stat index of Global_1330501[index here][charater here] | this could possible wrong, but gxt label stat seems about correct becuase of the order they come in
  4317.  
  4318.     //used in script but I'm not sure if it's used by trigger script event native
  4319.     int dateStatAward; // stat index of Global_2428010[index here][charater here]
  4320.  
  4321.     //used in script but I'm not sure if it's used by trigger script event native
  4322.     int PosStat; // stat index of Global_2428116[index here][charater here]
  4323.  
  4324.     //used in script but I'm not sure if it's used by trigger script event native
  4325.     int useridStat; // stat index of Global_1330505[index here][charater here]
  4326.  
  4327.     //used in script but I'm not sure if it's used by trigger script event native
  4328.     int intStatmpplyMiscAwards; // stat index of Global_1330616[index here]
  4329.  
  4330.     //used by scripts but not used by trigger script event native
  4331.     int floatStatmpply; // stat index of Global_1330622[index here]
  4332.  
  4333.     //used in script but I'm not sure if it's used by trigger script event native
  4334.     int boolStatmpply; // stat index of Global_1330624[index here]
  4335.  
  4336.     //used by scripts but not used by trigger script event native
  4337.     int unknownTypeStatmpply; // stat index of Global_1330636[index here]
  4338.     */
  4339. } mp_client_stats;
  4340.  
  4341.  
  4342.  
  4343. mp_client_stats stat;
  4344.         stat.arg = 150;
  4345.         stat.player = iSelectedPlayer;
  4346.         stat.unknown = iSelectedPlayer;
  4347.         stat.intStatAwards = 88;
  4348.         stat.boolStatActivities = 34;
  4349.         stat.floatStatTempAward = 1;
  4350.         stat.intStatCareer = 2949;
  4351.         stat.boolStatWeapons = 288;
  4352.         stat.floatStatVehicles = 288;
  4353.         stat.intStatSet = 0;
  4354.         stat.floatStatSet = 0;
  4355.         stat.boolStatSet = 0;
  4356.  
  4357.  
  4358.         //now set stat becuase that's what scrips do
  4359.         //set 500 super heavy armour to player
  4360.         stat.intStatCareer = 1867; //Global_2417731[1867 /*3*/][0] = joaat("mp0_mp_char_armour_5_count");
  4361.         stat.intStatSet = 500;
  4362.  
  4363.         //set player rp | rank 120
  4364.         //stat.intStatCareer = 626; //Global_2417731[626 /*3*/][0] = joaat("mp0_char_xp_fm");
  4365.         //stat.intStatSet = 2017150; //rp for rank 120
  4366.  
  4367.  
  4368.         //set admin rp to them | rank 120
  4369.         //stat.intStatCareer = 1868;  //Global_2417731[1868 /*3*/][0] = joaat("mp0_char_set_rp_gift_admin");
  4370.         //stat.intStatSet = 2017150; //rp for rank 120
  4371.  
  4372.  
  4373.         TriggerScriptEvent(&stat, 12, iSelectedPlayer);
  4374.  
  4375.  
  4376.  
  4377.  
  4378.  
  4379.  
  4380.     0x1C6C530 NETWORK_INCREMENT_STAT_EVENT
  4381.     0x12D137C NETWORK_INCREMENT_STAT_FUNC
  4382.  
  4383.     //GAME_EXPORT int 0x12D141C(int32_t a1, int32_t a2, int32_t a3);
  4384.  
  4385.     //0x12D141C(0xdafb10f9, dword, dword); //hash = mpply_friendly
  4386.  
  4387.     /*
  4388.     0x12D141C follow this address back to 0xC3FA0
  4389.     0xC3FA0 contains the stat data
  4390.  
  4391.     0xC3FA0(int32_t  *a1, int32_t a2, int32_t  a3, int32_t  a4, int32_t a5, int32_t a6, unsigned int a7, unsigned int a8);
  4392.     0xC3FA0(&unk_29DF5DC, (int32_t )&v5, (int32_t )&v4, (int32_t )&v3, (int32_t )"COMMEND_SPAM_TIMEOUT", (int32_t )"COMMEND_SPAM_TIMEOUT_DISABLED", 0x4B0, 0xDAFB10F9); //mpply_friendly
  4393.  
  4394.  
  4395.     GAME_EXPORT int _0x324CB0(int *a1, int a2);
  4396.  
  4397.     //0x325EF0(Hash hash, unsigned int value, unsigned int value2);
  4398.     GAME_EXPORT int _0x325EF0(int32_t *a1);
  4399.  
  4400.     GAME_EXPORT  int 0x12D8D2C(0xB5EE873, 0x3C0AF527, int value);
  4401.  
  4402.     GAME_EXPORT int 0x12DEC4C(someVtable, unsinged int, Hash, int value);
  4403.  
  4404.     GAME_EXPORT  unsigned int 0xAE8E98(int32_t a1);
  4405.  
  4406.     0xB5EE873 = BASE_GLOBALS
  4407.  
  4408.     unsigned int _0xA076C0(int strc)
  4409.  
  4410.  
  4411. //GAME_EXPORT int _0x12D141C(unsigned int v2, unsigned int v4, unsigned int v5)
  4412. GAME_EXPORT void _0x324CB0(int *a1, char *a2)
  4413. //int value = 0;
  4414. //_0x324CB0(&value, "MPPLY_LAST_REPORT_RESTORE");
  4415. GAME_EXPORT int *_0x12DEC4C(int32_t a1, int32_t value, int array_index) //returns an array
  4416. //_0x12DEC4C(0x38CEB237, 0, 3); //0x38CEB237 = mp_global
  4417. GAME_EXPORT void _0x12B4710(unsigned int hash_table_address, unsigned int hash, unsigned int data)
  4418. //  unsigned int dword_1CFB0B8 = 0x1CFB0B8;
  4419. //_0x12B4710(dword_1CFB0B8, 0x1C95C751, 0x10); //0xF227F666 COMMENDREPORT_MAX_STRENGTH
  4420. GAME_EXPORT _0x12CF8F0(char *a1, char *a2, int value) //returns an array looks like
  4421. //_0x12CF8F0("MP_GLOBAL", "KICK_TIMEOUT", 0);
  4422. //_0x12CF8F0("MP_GLOBAL", "KICK_TIMEOUT_DISABLED", 2);
  4423. GAME_EXPORT char _0xC3C8C(const char *a1, int32_t a2, int32_t a3)
  4424. GAME_EXPORT char *_0x12F89B8(const char *a1)
  4425. GAME_EXPORT void _0xA23BD0(int32_t *a1, int32_t a2, int a3)
  4426.  
  4427. unsigned int CNetGamePlayer()
  4428. {
  4429.     unsigned int s = 0x00000000;
  4430.     unsigned int v23 = *(unsigned int*)(s + 0x4C);
  4431.     return _0xA076C0(v23);
  4432. }
  4433.  
  4434.  
  4435.  
  4436.  
  4437.  
  4438.  
  4439.  
  4440.  
  4441.  
  4442.  
  4443.  
  4444. int g_global = GlobalVariable::Get(1310891 + (PLAYER_ID() * 6) + 1);
  4445.             int vVar0[3];
  4446.             vVar0[0] = 168;
  4447.             vVar0[1] = iSelectedPlayer;
  4448.             vVar0[2] = g_global;
  4449.             TriggerScriptEvent(vVar0, 3, iSelectedPlayer);
  4450.  
  4451.             int Var2[4];
  4452.             Var2[0] = 157;
  4453.             Var2[1] = iSelectedPlayer;
  4454.             int bit = 0;
  4455.             SET_BIT(&bit, PLAYER_ID());
  4456.             Var2[2] = bit; //bitset
  4457.             Var2[3] = g_global;
  4458.             TriggerScriptEvent(Var2, 4, iSelectedPlayer);
  4459.  
  4460.  
  4461. int FadeTime = 700;
  4462.     RGBA ColorList[4] = {
  4463.         { 255, 0, 0, 255 },
  4464.         { 0, 255, 0, 255 },
  4465.         { 0, 0, 255, 255 },
  4466.         { 255, 255, 0, 255 },
  4467.     };
  4468.     float fadeAmount;
  4469.     int colorIndex;
  4470.     RGBA startColor = ColorList[0], endColor = ColorList[1];
  4471.     RGBA currentColor;
  4472.  
  4473. double Lerp(double d1, double d2, double d)
  4474.     {
  4475.         return d1 + (d2 - d1) * d;
  4476.     }
  4477.     RGBA FadeTo(RGBA color1, RGBA color2, double d)
  4478.     {
  4479.         RGBA col;
  4480.         double r = Lerp(color1.R, color2.R, d);
  4481.         double g = Lerp(color1.G, color2.G, d);
  4482.         double b = Lerp(color1.B, color2.B, d);
  4483.         col.R = r;
  4484.         col.G = g;
  4485.         col.B = b;
  4486.         return col;
  4487.     }
  4488.  
  4489. if (fadeAmount < 1.0f)
  4490.     {
  4491.         fadeAmount += GET_FRAME_TIME() * (1000.0f / FadeTime);
  4492.  
  4493.         if (fadeAmount < 0.0f)
  4494.             fadeAmount = 0.0f;
  4495.  
  4496.         else if (fadeAmount > 1.0f)
  4497.             fadeAmount = 1.0f;
  4498.  
  4499.         currentColor = FadeTo(startColor, endColor, fadeAmount);
  4500.     }
  4501.     else
  4502.     {
  4503.         colorIndex++;
  4504.  
  4505.         colorIndex %= sizeof(ColorList);
  4506.  
  4507.         startColor = currentColor;
  4508.  
  4509.         endColor = ColorList[colorIndex];
  4510.  
  4511.         fadeAmount = 0.0f;
  4512.     }
  4513.  
  4514.     if (IS_PED_IN_ANY_VEHICLE(myVeh, 1))
  4515.         SET_VEHICLE_CUSTOM_PRIMARY_COLOUR(myVeh, currentColor.R, currentColor.G, currentColor.B);
  4516.  
  4517.  
  4518.  
  4519.  
  4520.  
  4521.  
  4522.  
  4523.  
  4524.  
  4525.  
  4526.  
  4527.  
  4528.  
  4529.  
  4530. //18 players in session
  4531. _NETWORK_SESSION_SET_MAX_PLAYERS(0, 18); //Player
  4532.             _NETWORK_SESSION_SET_MAX_PLAYERS(4, 18); //Spectator
  4533.             _NETWORK_SESSION_SET_MAX_PLAYERS(8, 18); //SCTV
  4534.             _NETWORK_SCTV_SLOTS(18);
  4535.             *(int *)(0x3E42EC) = BLR; //_NETWORK_SESSION_SET_MAX_PLAYERS
  4536.  
  4537.  
  4538.  
  4539.  
  4540.  
  4541.  
  4542.  
  4543.  
  4544.  
  4545.  
  4546.  
  4547.  
  4548.  
  4549.  
  4550.  
  4551. int getProofs(Entity entity, int bit)
  4552. {
  4553.     int address = getScriptHandleBaseAddress(entity);
  4554.     printf("address: 0x%X\n", address);
  4555.  
  4556.     int fire = 5;
  4557.     int melee = 7;
  4558.     int bullet = 4;
  4559.     int explosion = 11;
  4560.     int collision = 6;
  4561.     int onlyDamageByPlayer = 9;
  4562.     int invincible = 8;
  4563.  
  4564.     //other unknown params?
  4565.     int ten = 10;
  4566.     int fourteen = 14;
  4567.     int fifthteen = 15;
  4568.     int canEntityBeDamaged = 18;
  4569.     int twentyfour = 24;
  4570.  
  4571.     /*
  4572.     nothing:
  4573.     toggle: 1 = byte 0x30000800
  4574.     toggle: 0 = byte 0x30000800
  4575.  
  4576.     player invincible
  4577.     toggle: 1 = byte 0x30800800
  4578.     toggle: 0 = byte 0x30000800
  4579.  
  4580.     bullet proof:
  4581.     toggle: 1 = byte 0x38000800
  4582.     toggle: 0 = byte 0x30000800
  4583.  
  4584.     fire proof:
  4585.     toggle: 1 = byte 0x34000800
  4586.     toggle: 0 = byte 0x30000800
  4587.  
  4588.     explosion proof:
  4589.     toggle: 1 = byte 0x30200800
  4590.     toggle: 0 = byte 0x30000800
  4591.  
  4592.     collision proof:
  4593.     toggle: 1 = byte 0x32000800
  4594.     toggle: 0 = byte 0x30000800
  4595.  
  4596.     melee proof:
  4597.     toggle: 1 = byte 0x31000800
  4598.     toggle: 0 = byte 0x30000800
  4599.  
  4600.     p6 proof:
  4601.     toggle: 1 = byte 0x30020800
  4602.     toggle: 0 = byte 0x30000800
  4603.  
  4604.     p7 proof: //next byte
  4605.     toggle: 1 = byte 0x30000800
  4606.     toggle: 0 = byte 0x30000800
  4607.  
  4608.     p8 proof:
  4609.     toggle: 1 = byte 0x30010800
  4610.     toggle: 0 = byte 0x30000800
  4611.  
  4612.     only damaged by player:
  4613.     toggle: 1 = byte 0x30400800
  4614.     toggle: 0 = byte 0x30000800
  4615.  
  4616.     can entity be damaged:
  4617.     toggle: 1 = byte 0x30800800
  4618.     toggle: 0 = byte 0x30000800
  4619.  
  4620.     apartment
  4621.     toggle: 1 = byte 0x30800800
  4622.     toggle: 0 = byte 0x30000800
  4623.  
  4624.     while ringing apartment door
  4625.     toggle: 1 = byte 0x30800800
  4626.     toggle: 0 = byte 0x30000800
  4627.  
  4628.     garge
  4629.     toggle: 1 = byte 0x30000800
  4630.     toggle: 0 = byte 0x30000800
  4631.  
  4632.     getting out of apartment
  4633.     toggle: 1 = byte 0x30800000
  4634.     toggle: 0 = byte 0x30000800
  4635.  
  4636.     console trainer
  4637.     toggle: 1 = byte 0x30800800
  4638.     toggle: 0 = byte 0x30000800
  4639.    
  4640.     api intense
  4641.     toggle: 1 = byte 0x30800800
  4642.     toggle: 0 = byte 0x30000800
  4643.    
  4644.     dark hores menu
  4645.     toggle: 1 = byte 0x3FA30800  //a lot of god modes enableds like proofs and others
  4646.     toggle: 0 = byte 0x30000800
  4647.    
  4648.     while driving
  4649.     toggle: 1 = byte 0x30000000
  4650.     toggle: 0 = byte 0x30000800
  4651.  
  4652.     swiming in water
  4653.     toggle: 1 = byte 0xF0000800
  4654.     toggle: 0 = byte 0x30000800
  4655.    
  4656.     in air
  4657.     toggle: 1 = byte 0x30000000
  4658.     toggle: 0 = byte 0x30000800
  4659.    
  4660.     respawning
  4661.     toggle: 1 = byte 0x30800000
  4662.     toggle: 0 = byte 0x30000800
  4663.  
  4664.     getting into heli
  4665.     toggle: 1 = byte 0x30000004  //or maybe 0x30000804
  4666.     toggle: 0 = byte 0x30000800
  4667.  
  4668.     getting into lazer jet
  4669.     toggle: 1 = byte 0x30000004
  4670.     toggle: 0 = byte 0x30000800
  4671.  
  4672.     climbing a latter
  4673.     toggle: 1 = byte 0x30000A04
  4674.     toggle: 0 = byte 0x30000800
  4675.    
  4676.     in deathmath
  4677.     toggle: 1 = byte 0x30000100
  4678.     toggle: 0 = byte 0x30000800
  4679.  
  4680.     after deathmath
  4681.     toggle: 1 = byte 0x30000900
  4682.     toggle: 0 = byte 0x30000900
  4683.  
  4684.  
  4685.  
  4686.     invincible:
  4687.     int32_t v4 = 0x800000;
  4688.     int32_t result2 = byte & -0x800001 | v4;
  4689.  
  4690.  
  4691.     proofs:
  4692.     int v4_2;
  4693.     result =
  4694.     0x8000000 * a2 & 0x8000000 | //bullet proof
  4695.     byte & -0xf230001 | //god mode???
  4696.     0x4000000 * a3 & 0x4000000 | //fire proof
  4697.     0x200000 * a4 & 0x200000 | //exploion proof
  4698.     0x2000000 * a5 & 0x2000000 | //collision proof
  4699.     0x1000000 * a6 & 0x1000000 | //melle proof
  4700.     0x20000 * a7 & 0x20000 |  //unk6
  4701.     0x10000 * v4_2 & 0x10000;  //unk8
  4702.  
  4703.  
  4704.     onlyDamageByPlayer:
  4705.     bool a2 = 0;
  4706.     int32_t result = 0x400000 * a2 & 0x400000 | byte & -0x400001;
  4707.  
  4708.  
  4709.     can entity be damaged:
  4710.     *v5 = 0x40000 * v4 & 0x800000 | *v5 & -0x800001;
  4711.     */
  4712. }
  4713.  
  4714.  
  4715.  
  4716.  
  4717.  
  4718.  
  4719.  
  4720.  
  4721.  
  4722.  
  4723.  
  4724.  
  4725.  
  4726.  
  4727.  
  4728.  
  4729.  
  4730.  
  4731.  
  4732.  
  4733.  
  4734. if (NETWORK_IS_HOST())
  4735.             {
  4736.                 NETWORK_SESSION_KICK_PLAYER(iSelectedPlayer);
  4737.             }
  4738.  
  4739.  
  4740.             //activate admin kick on self
  4741.             GlobalVariable::Write(1315298, 30);
  4742.             GlobalVariable::Write(60515, 0);
  4743.             GlobalVariable::Write(1312335, 1);
  4744.             GlobalVariable::Write(1312455, 6); //admin kick
  4745.  
  4746.  
  4747.  
  4748.  
  4749.  
  4750.  
  4751.  
  4752.  
  4753.  
  4754.  
  4755.  
  4756.  
  4757.  
  4758.  
  4759.  
  4760.  
  4761.  
  4762.  
  4763.  
  4764. /*
  4765.             //(*(int*)0x1CC4A34) + 0x2A4)   cnetplayer from first player probs the host
  4766.             //a1 = 2, 4, 5, 8,
  4767.             GameclockHost(5, (*(int*)0x1CC4A34) + 0x2A4);
  4768.  
  4769.             //NOTICE THEY DONT CHANGE ON YOUR SCREEN
  4770.             int strcut = *(int *)(0x1CC4A54);
  4771.             int net_script = *(int *)(strcut);
  4772.  
  4773.             //non host
  4774.             int prt = *(int *)(0x1CC4A54);
  4775.             unsigned int *a1 = _0xA546A8(prt);
  4776.             GameClockFn(a1, 5, (*(int*)0x1CC4A34) + 0x2A4);
  4777.             *(int *)(a1 + 0x2C) = hour;
  4778.             *(int *)(a1 + 0x20) = weather; //could be wrong
  4779.  
  4780.             //GameClockFn(a1, 5, CNetGamePlayerFn(iSelectedPlayer, 1));
  4781.  
  4782.  
  4783.  
  4784.  
  4785.             /*
  4786.             r0=00000000012C2A40        r8=0000000000000003       r16=0000000000000000       r24=0000000001C28AA0
  4787.             r1=00000000D003FEB0        r9=0000000002150000       r17=00000000D0040430       r25=0000000000000001
  4788.             r2=0000000001C85330       r10=0000000000000000       r18=0000000035F35344       r26=0000000000000000
  4789.             r3=00000000401DC6E0       r11=000000003279AFF4       r19=0000000001CC2FA8       r27=0000000035F2BFFF
  4790.             r4=0000000000000005       r12=00000000D003FB10       r20=000000003228FAB4       r28=0000000035F35344
  4791.             r5=000000000222E250       r13=0000000010007060       r21=0000000035F00000       r29=000000000222E250
  4792.             r6=0000000000000003       r14=0000000000000000       r22=0000000001E70370       r30=0000000000000005
  4793.             r7=000000001FFFFFFF       r15=0000000000000000       r23=00000000321A7080       r31=00000000401DC6E0
  4794.  
  4795.             xer=0000000020000000       ctr=00000000012C2A00        lr=00000000012C2A50     fpscr=AE302500
  4796.  
  4797.             cr=44000042               cr0=GT cr1=GT cr2=   cr3=   cr4=   cr5=   cr6=GT cr7=EQ
  4798.  
  4799.             pc=00000000012C2898
  4800.  
  4801.             Executing
  4802.  
  4803.  
  4804.  
  4805.             401DC6E0  0000005E 00030000 401C2AF4 0222DC80 000D63E8 ...^....@.*.."....c.
  4806.             401DC6F4  00004000 00000000 00002C38 4375B5EE 0000006D ..@.......,8Cu.....m
  4807.             401DC708  019262B0 00000000 FFFFFFFF 00740000 00000008 ..b..........t......
  4808.             401DC71C  01892C38 C875557D 66726565 6D6F6465 00000005 ..,8.uU}freemode....
  4809.             401DC730  95B61B42 00001000 0222DC80 00000000 00010000 ...B....."..........
  4810.             401DC744  003D8112 00000000 FFFFFFFF C875557D 00000000 .=...........uU}....
  4811.             401DC758  00000000 00000000 00000000 00000000 00000000 ....................
  4812.             401DC76C  00000000 00000000 00000000 00000000 00000000 ....................
  4813.             401DC780  00000000 00000000 00000000 00000000 00000000 ....................
  4814.             401DC794  00000000 00000000 00000000 00000000 00000000 ....................
  4815.             401DC7A8  00000000 00000000 00000000 00000000 00000000 ....................
  4816.             401DC7BC  00000000 00000000 00000000 00000000 00000000 ....................
  4817.             401DC7D0  00000000 00000000 00000000 00000000 00000000 ....................
  4818.             401DC7E4  00000000 00000000 00000000 00000000 00000000 ....................
  4819.             401DC7F8  00000000 00000000 0000005F 00030000 401C2B98 ..........._....@.+.
  4820.             401DC80C  0222DC80 000D63E8 00004000 00000000 00002C38 ."....c...@.......,8
  4821.             401DC820  BF397BCC 00000065 019262B0 00000000 FFFFFFFF .9{....e..b.........
  4822.             401DC834  00000000 00000009 01892C38 C875557D 66726565 ..........,8.uU}free
  4823.             401DC848  6D6F6465 00FFFFFF C875557D 00000004 00000000 mode.....uU}........
  4824.             401DC85C  FFFFFFFF 00000000 003D8112 00000000 FFFFFFFF .........=..........
  4825.             401DC870  C875557D 00000000 00000000 00000000 00000000 .uU}................
  4826.             401DC884  00000000 00000000 00000000 00000000 00000000 ....................
  4827.             401DC898  00000000 00000000 00000000 00000000 00000000 ....................
  4828.             401DC8AC  00000000 00000000 00000000 00000000 00000000 ....................
  4829.             401DC8C0  00000000 00000000 00000000 00000000 00000000 ....................
  4830.             401DC8D4  00000000 00000000 00000000 00000000 00000000 ....................
  4831.             401DC8E8  00000000 00000000 00000000 00000000 00000000 ....................
  4832.             401DC8FC  00000000 00000000 00000000 00000000 00000000 ....................
  4833.             401DC910  00000000 00000000 00000000 00000000 00000060 ...................`
  4834.             401DC924  00030000 401C2C3C 0222DC80 000D63E8 00004000 ....@.,<."....c...@.
  4835.             401DC938  00000000 0000EC00 376F3515 00000000 019262B0 ........7o5.......b.
  4836.             401DC94C  00000000 FFFFFFFF 00F10006 0000000A 01892C38 ..................,8
  4837.             401DC960  C875557D 66726565 6D6F6465 00000000 00000000 .uU}freemode........
  4838.             401DC974  00000000 00000000 00000000 00000000 003D8112 .................=..
  4839.             401DC988  00000000 FFFFFFFF C875557D 00000000 00000000 .........uU}........
  4840.             401DC99C  00000000 00000000 00000000 00000000 00000000
  4841.  
  4842.  
  4843.  
  4844.  
  4845.  
  4846.  
  4847.  
  4848.  
  4849.  
  4850.  
  4851.             0222E250  0192F460 00000000 00000000 00000000 FFFFFFFF ...`................
  4852.             0222E264  00000000 00000000 FFFFFFFF 00000000 FFFFFFFF ....................
  4853.             0222E278  03FF0000 00000000 00000000 000C9F70 FFFFFFFF ...............p....
  4854.             0222E28C  00000000 0222EA10 00000000 00000000 00000000 ....."..............
  4855.             0222E2A0  00000000 00000000 00000000 00000000 00000000 ....................
  4856.             0222E2B4  FFFFFFFF 00000000 20000000 00000000 00000000 ........ ...........
  4857.             0222E2C8  00000000 FFFFFFFF 00000000 00000000 00000000 ....................
  4858.             0222E2DC  00000000 00000000 0000000A 00000012 00000000 ....................
  4859.             0222E2F0  00000000 00000000 00000000 00000000 00F99D27 ...................'
  4860.             0222E304  D003E390 00000000 02230000 00000000 00000000 .........#..........
  4861.             0222E318  00000000 00000000 00000000 00000000 00000000 ....................
  4862.             0222E32C  00000000 00000000 00000000 00000000 00000000 ....................
  4863.             0222E340  00000000 00000000 00000000 00000000 00000000 ....................
  4864.             0222E354  00000000 00000000 00000000 00000000 00000000 ....................
  4865.             0222E368  00000000 0022E250 00000000 00000000 0222DA1C .....".P........."..
  4866.             0222E37C  0222E250 0222DA28 0222E250 0222DA34 00000000 .".P.".(.".P.".4....
  4867.             0222E390  0222DA40 00000000 00000000 400222D0 00000000 .".@........@.".....
  4868.             0222E3A4  00000000 00000000 00000000 00000000 00000000 ....................
  4869.             0222E3B8  00000000 00000000 00000000 000000FF 00000000
  4870.             *
  4871.  
  4872.  
  4873.  
  4874.             int s = 0x0000000
  4875.             int p2 = (int )(s + 0xD04);
  4876.             GameWeatherFn(int unk, int strut, 0);
  4877.             //1, 0, 4E = extrasunny
  4878.             //1, 1, 4E clear
  4879.             //1, 2, 4E clouds
  4880.             //1, 3, 4E = smog
  4881.             //1, 4, 4E = foggy
  4882.             //1, 5, 4E = overcast
  4883.             //1, 6, 4E = rain
  4884.             //1, 7, 4E = thunder
  4885.             //1, 8, 4E clearing
  4886.             //1, 9, 4E = netutral
  4887.             //1, A, 4E snow
  4888.             //1, B, 4E blizzard
  4889.             //1, C, 4E snowlight
  4890.             //1, D, 4E xmas        
  4891.             //0, 0, 4E reset
  4892.  
  4893.  
  4894.  
  4895.             //sub_0x003D402C();
  4896.             //sub_0x0046EE68(value_0x040D130D0, value_0x046EE68, value_0x0470810);
  4897.             //sub_0x0109592C();
  4898.             //sub_0x010959D0();
  4899.  
  4900.  
  4901.  
  4902.             //these args could be found in the data to hook to find the weather they changed it to
  4903.             //sub_1095B24(time_cycle_struct/*0x2148E84*, value_0x97, value_0x4A38);
  4904.  
  4905.             //sub_12F3C00(cNetPlayer, cNetPlayer, value_0x1340940);
  4906.  
  4907.             //weahther event caller
  4908.             //sub_12C2ECC(0x1, 0xD, 0x4E);
  4909.  
  4910.             //joining a new session
  4911.             //sub_109570C(time_cycle_struct/*0x2148E84*, value_1, value_0x497C8, value_0x1388, "ECYCLE/W_EXTRASUNNY.XML.");
  4912.  
  4913.             //for all session.
  4914.             //sub_109536C(dword_2148E84_not_prt, weather_value, value_1_or_0);
  4915.  
  4916.  
  4917.            
  4918.  
  4919.             /*
  4920.             r0=00000000010953E0        r8=0000000002240000       r16=0000000000000000       r24=0000000001C28AA0
  4921.             r1=00000000D003FC60        r9=0000000002C91001       r17=00000000D0040430       r25=0000000000000001
  4922.             r2=0000000001C85330       r10=0000000000000000       r18=0000000035F35344       r26=0000000000000000
  4923.             r3=0000000000000001       r11=000000003225B1F4       r19=0000000001CC2FA8       r27=0000000035F2BFFF
  4924.             r4=0000000000000005       r12=00000000D003FB10       r20=000000003228FAB4       r28=0000000035F35344
  4925.             r5=00000000000000AC       r13=0000000010007060       r21=0000000035F00000       r29=0000000000000005
  4926.             r6=0000000000000000       r14=0000000000000000       r22=0000000001E70370       r30=0000000000000001
  4927.             r7=0000000000000000       r15=0000000000000000       r23=00000000321A7080       r31=0000000002148E84
  4928.  
  4929.             xer=0000000020000000       ctr=00000000008FD3B0        lr=0000000001095434     fpscr=BE302500
  4930.  
  4931.             cr=24000022               cr0=EQ cr1=GT cr2=   cr3=   cr4=   cr5=   cr6=EQ cr7=EQ
  4932.  
  4933.             pc=00000000012C2ECC
  4934.  
  4935.             Executing
  4936.  
  4937.             */
  4938.    
  4939.  
  4940.  
  4941. GAME_EXPORT bool networkIsHost();
  4942. GAME_EXPORT void networkKickPlayer_host(int32_t host_prt, int32_t value);
  4943. GAME_EXPORT void request_something_from_host(int32_t a1, int32_t a2, int32_t a3, int32_t a4, int32_t a5);
  4944. GAME_EXPORT int32_t sub_12F6D7C()
  4945. GAME_EXPORT int 32_t sub_176404C(int32_t a1, int32_t a2, int32_t a3, int32_t a4, int32_t a5, int32_t a6, int32_t a7)
  4946.  
  4947. int32_t sub_13E0C38(int32_t a1, int32_t a2, int32_t a3, int32_t a4, int32_t a5, int32_t a6, int32_t a7, int32_t a8, int32_t a9, int32_t a10)
  4948. {
  4949.     int32_t result = sub_150AA80(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10);
  4950.     if (*(int32_t *)result == 0)
  4951.     {
  4952.         return result;
  4953.     }
  4954.     if (*(int32_t *)(result + 8) == 0 || *(int32_t *)(result + 12) == 0)
  4955.     {
  4956.         return 0;
  4957.     }
  4958.     int32_t result2 = 0;
  4959.     if (sub_16276C4((int32_t)&result2, *(int32_t *)(result + 4)) == 0)
  4960.     {
  4961.         return 0;
  4962.     }
  4963.     if (result2 != *(int32_t *)0x2258B90)
  4964.     {
  4965.         return result2;
  4966.     }
  4967.     if (networkIsHost() == 0 || *(int32_t *)(result + 8) == 0)
  4968.     {
  4969.         return 0;
  4970.     }
  4971.     int32_t result4;
  4972.     int32_t v1 = &result4;
  4973.     sub_A8B814(v1);
  4974.     sub_A8B8DC(v1, *(int32_t *)result);
  4975.     int32_t v2 = 0;
  4976.     if (sub_16271AC((int32_t)&v2, v1) != 0)
  4977.     {
  4978.         int32_t v3;
  4979.         if ((v3 & 64) == 0 & *(int32_t *)0x2258B90 == v2)
  4980.         {
  4981.             int32_t result3;
  4982.             int32_t v4;
  4983.             int32_t v5;
  4984.             int32_t v6;
  4985.             if (v5 + 8 <= ((v3 & 128) == 0 ? v6 : v4))
  4986.             {
  4987.                 int32_t v7;
  4988.                 int32_t v8;
  4989.                 sub_A8B588((int32_t)&v7, 8, v5 + v8);
  4990.                 sub_A8BAD8(v1, 8);
  4991.                 int32_t v9 = sub_A8BA28(v1);
  4992.                 if (v9 == *(int32_t *)(result + 4))
  4993.                 {
  4994.                     int32_t v10 = *(int32_t *)(result + 8);
  4995.                     result3 = networkKickPlayer_host(*(int32_t *)0x1CF72C4, v10, v7 % 256);
  4996.                 }
  4997.                 else
  4998.                 {
  4999.                     result3 = v9;
  5000.                 }
  5001.             }
  5002.             else
  5003.             {
  5004.                 result3 = result4;
  5005.             }
  5006.             return result3;
  5007.         }
  5008.     }
  5009.     return result4;
  5010. }
  5011. //mgrKickPlayer class
  5012. //MsgBlacklist class
  5013. //MsgBlacklist12AutoIdDesc__E
  5014. int32_t sub_176404C(int32_t a1) //request kick
  5015. {
  5016.     //0x1888B90 rage::AutoIdDescriptorE
  5017.     //0x22693F8 rage::msgPartyLeaveGame::AutoIdDesc__
  5018.     //0x1FFE474 rage::netMessage::AutoIdDesc__
  5019.     //0x18F25D0 class rage::AutoIdDescriptor<netMessage>
  5020.     //0x19318C0 msgRequestKickFromHost::AutoIdDesc__
  5021.     //TEXT 0x19318C8 = msgRequestKickFromHost
  5022.  
  5023.     int32_t v1 = sub_1803770(a1);
  5024.     sub_D04088(v1, 1, 0x19318C8, 0x1FFE474, 1);
  5025.     *(int32_t *)v1 = 0x18F25D0;
  5026.     if (*(char *)0x2269418 == 0)
  5027.     {
  5028.         sub_D03258(0x22693F8);
  5029.         *(char *)0x2269418 = 1;
  5030.     }
  5031.     sub_D04260(0x22693F8, v1);
  5032.     *(int32_t *)v1 = 0x19318C0;
  5033.     return 0x19318C0;
  5034. }
  5035. int32_t sub_1624C94(int32_t a1) //black list
  5036. {
  5037.     int32_t v1 = sub_1803770(a1);
  5038.     *(int32_t *)v1 = 0x18F25D0;
  5039.     if (*(char *)0x2269418 == 0)
  5040.     {
  5041.         sub_D03258(0x22693F8);
  5042.         *(char *)0x2269418 = 1;
  5043.     }
  5044.     sub_D03298(0x22693F8, v1);
  5045.     *(int32_t *)v1 = 0x1888B90;
  5046.     return 0x1888B90;
  5047. }
  5048. int32_t sub_162A01C(int32_t a1) //kick msg
  5049. {
  5050.     int32_t v1 = sub_1803770(a1);
  5051.     int32_t v2 = v1;
  5052.     if (v1 == 0)
  5053.     {
  5054.         return 0;
  5055.     }
  5056.     *(int32_t *)v1 = 0x18F25D0;
  5057.     if (*(char *)0x2269418 == 0)
  5058.     {
  5059.         sub_D03258(0x22693F8);
  5060.         *(char *)0x2269418 = 1;
  5061.     }
  5062.     sub_D03298(0x22693F8, v2);
  5063.     *(int32_t *)v2 = 0x1888B90;
  5064.     return sub_10230(v2, 0x1888B90);
  5065. }
  5066. int32_t sub_1357CA0(int32_t a1, int32_t a2, int32_t a3)
  5067. {
  5068.     int32_t v1 = loc_150AA84(a1, a2, a3);
  5069.     int32_t v2;
  5070.     int32_t v3 = &v2;
  5071.     v2 = 0;
  5072.     int32_t result;
  5073.     if (sub_A91D04(a2, 0x1850D34, v3, 32) == 0)
  5074.     {
  5075.         result = false;
  5076.     }
  5077.     else
  5078.     {
  5079.         int32_t v4 = sub_AE580C(v3, 0);
  5080.         *(int32_t *)(v1 + 4) = v4;
  5081.         if (v4 == 0xDD245B9C) //hash of "vehicle"
  5082.         {
  5083.             sub_A91D04(a2, 0x1851F70, v1 + 12, 64);
  5084.         }
  5085.         result = 1;
  5086.     }
  5087.     return result;
  5088. }
  5089. int32_t sub_1358EB8(int32_t a1, int32_t a2, int32_t a3, int32_t a4, int32_t a5, int32_t a6, int32_t a7)
  5090. {
  5091.     int32_t v1 = sub_150AA84(a1, a2, a3, a4, a5, a6, a7);
  5092.     switch (*(int32_t *)(v1 + 4))
  5093.     {
  5094.     case 0xDD245B9C: //hash of "vehicle"
  5095.     {
  5096.         int32_t v2 = *(int32_t *)(*(int32_t *)0x1CEFCF8 + 4);
  5097.         if (v2 != 0)
  5098.         {
  5099.             if ((*(int32_t *)(v2 + 3556) & 0x40000000) != 0)
  5100.             {
  5101.                 if (*(int32_t *)(v2 + 3740) != 0)
  5102.                 {
  5103.                     return 0;
  5104.                 }
  5105.             }
  5106.             sub_103FCA4(v1 + 12);
  5107.         }
  5108.         return 0;
  5109.     }
  5110.     case 0xC2F12A5B:  //  hash collosion but works "cxazuog"  //hash of ""    // related to EXPLOSION_EVENT
  5111.     {
  5112.         int32_t v3 = sub_1117978();
  5113.         if (v3 == 0)
  5114.         {
  5115.             return 0;
  5116.         }
  5117.         int32_t v4;
  5118.         int32_t v5 = &v4;
  5119.         sub_5704A8(v5, v3, 0);
  5120.         int32_t v6 = sub_AEBB54(*(int32_t *)0x1CBAEAC, 276, 16);
  5121.         sub_570AC4(v6, v5, 16, 0);
  5122.         int32_t v7;
  5123.         int32_t v8 = &v7;
  5124.         sub_622E4(v8, 3, v6, 0, 79, 0, 0);
  5125.         int32_t v9 = sub_585C8(*(int32_t *)(v3 + 3020) + 788, v8);
  5126.         if (v9 != 0)
  5127.         {
  5128.             char * v10 = (char *)(v9 + 12);
  5129.             *v10 = *v10 % 128;
  5130.         }
  5131.         sub_62368(v8);
  5132.         int32_t v11;
  5133.         if (v11 != 0)
  5134.         {
  5135.             sub_150AD08((int32_t)&v11);
  5136.         }
  5137.         return 0;
  5138.     }
  5139.     case 0x84643284: //hash of "kick"
  5140.     {
  5141.         if (networkIsHost() == 0)
  5142.         {
  5143.             int32_t v12 = sub_12F6D7C();
  5144.             if (v12 != 0)
  5145.             {
  5146.                 int32_t v13;
  5147.                 int32_t v14 = &v13;
  5148.                 sub_A8B814(v14);
  5149.                 int32_t v15;
  5150.                 int32_t v16 = &v15;
  5151.                 sub_A8B908(v14, v16, 982);
  5152.                 bool v17 = false;
  5153.                 if (sub_1626844(*(int32_t *)0x2258B90, v14) != 0)
  5154.                 {
  5155.                     bool v18 = false;
  5156.                     int32_t v19;
  5157.                     int32_t v20;
  5158.                     int32_t v21;
  5159.                     if (v20 + 8 <= v19 && (v21 & 128) == 0)
  5160.                     {
  5161.                         if ((v21 & 64) == 0)
  5162.                         {
  5163.                             int32_t v22;
  5164.                             sub_A8B5FC(v13, 4, 8, v20 + v22, v22);
  5165.                         }
  5166.                         sub_A8BBBC(v14, 8);
  5167.                         v18 = true;
  5168.                     }
  5169.                     v17 = v18;
  5170.                 }
  5171.                 sub_A8B978(v14);
  5172.                 if (v17)
  5173.                 {
  5174.                     request_something_from_host(v12, v16, 0, 0, 0);
  5175.                 }
  5176.             }
  5177.         }
  5178.         else
  5179.         {
  5180.             if (*(int32_t *)(*(int32_t *)0x1CF72BC + 140) != 0)
  5181.             {
  5182.                //value = 0    you been kicked from this GTA Online sesison by other players
  5183.                //value = 1    connection was lost due to an unknown network error
  5184.                //value = 2    says player left. (cool kinda kick, player can join back)
  5185.                //value = 3    connection was lost due to an unknown network error
  5186.                //value = 4    You Have been removed from this session by a Rockstar Games administrator.
  5187.                //value = 5    connection was lost due to an unknown network error
  5188.                //value = 6    connection was lost due to an unknown network error
  5189.                //value = 7    connection was lost due to an unknown network error
  5190.                //vlaue = 8     You were kicked from this GTA Online sesison by other players
  5191.                 networkKickPlayer_host(*(int32_t *)0x1CF72C4, 4);
  5192.             }
  5193.         }
  5194.         return 0;
  5195.     }
  5196.     case 0x4349E22B: //hash of "relax"  // related to RAGDOLL_REQUEST_EVENT
  5197.     {
  5198.         int32_t v23 = sub_1117978();
  5199.         if (v23 != 0)
  5200.         {
  5201.             int32_t v24 = sub_AEBB54(*(int32_t *)0x1CBAEAC, 196, 16);
  5202.             sub_7075A0(v24, 1000, 0x2710, 0x149f0, 0); // v24 = CTaskMoveStandStill
  5203.             int32_t v25;
  5204.             int32_t v26 = &v25;
  5205.             sub_67924(v26, 0x2710, v24, 0, 1000);
  5206.             sub_10194B0(v23, v26); // v23 = CPed, v26 = 37
  5207.             sub_67990(v26);
  5208.         }
  5209.         return 0;
  5210.     }
  5211.     }
  5212.     return 0;
  5213. }
  5214.  
  5215.  
  5216.  
  5217.  
  5218.  
  5219. int32_t sub_A17A58(int32_t a1, int32_t a2, int32_t a3, uint32_t a4, int32_t a5, int32_t a6)
  5220. {
  5221.     int32_t v1 = 0;
  5222.     uint32_t v2 = 32 - a3;
  5223.     uint32_t v3 = v2 % 32;
  5224.     uint32_t v4 = (v2 & 32) != 0 ? 0 : -1 << v3;
  5225.     uint32_t v5 = a4 % 8;
  5226.     uint32_t v6 = (v2 & 32) != 0 ? 0 : a2 << v3;
  5227.     char * v7 = (char *)v1;
  5228.     unsigned char v8 = *v7;
  5229.     uint32_t v9 = 8 - v5;
  5230.     uint32_t v10 = v6 << v9;
  5231.     int32_t v11 = v1 + 1;
  5232.     char * v12 = (char *)v11;
  5233.     uint32_t v13 = v4 << v9;
  5234.     *v7 = (char)((int32_t)v8 & (v4 / 0x1000000 >> v5 ^ 255) | v6 / 0x1000000 >> v5);
  5235.     int32_t v14 = sub_A8B68C(v9, v13, a3, v10, v11, v4);
  5236.     unsigned char v15 = *v12; // 0xa8b65c
  5237.     *v12 = (char)((int32_t)v15 & (v13 / 0x1000000 ^ 255) | v10 / 0x1000000);
  5238.     return v14 + 8;
  5239. }
  5240. int32_t networkKickPlayer_host(int32_t a1, int32_t * a2, int32_t a3, int32_t a4)
  5241. {
  5242.     int32_t v1 = (int32_t)a2;
  5243.     int32_t v2 = loc_150AA6C(a1, v1, a3, a4);
  5244.     if (a2 == NULL | sub_96D614(*(int32_t *)(v2 + 64)) == 0)
  5245.     {
  5246.         return 0;
  5247.     }
  5248.     int32_t v3 = a3 < 3;
  5249.     int32_t v4;
  5250.     int32_t v5;
  5251.     int32_t v6;
  5252.     int32_t result;
  5253.     if (sub_9F8FD8(v1) != 0)
  5254.     {
  5255.         sub_1358AAC(v2, a3);
  5256.         v4 = 0;
  5257.         switch (a3)
  5258.         {
  5259.         case 0:
  5260.         {
  5261.             v4 = 1;
  5262.             break;
  5263.         }
  5264.         case 4:
  5265.         {
  5266.             v4 = 1;
  5267.             break;
  5268.         }
  5269.         }
  5270.         if (v3 == 0)
  5271.         {
  5272.             v5 = sub_6BBC08(v1);
  5273.             sub_135282C(v3, v5, v4);
  5274.         }
  5275.         v6 = sub_6BBC08(v1);
  5276.         result = sub_970F28(*(int32_t *)(v2 + 64), v6, 1, 0, 0);
  5277.         return result;
  5278.     }
  5279.     if (a3 == 2)
  5280.     {
  5281.         if (v3 == 0)
  5282.         {
  5283.             v5 = sub_6BBC08(v1);
  5284.             sub_135282C(v3, v5, 0);
  5285.         }
  5286.         v6 = sub_6BBC08(v1);
  5287.         result = sub_970F28(*(int32_t *)(v2 + 64), v6, 1, 0, 0);
  5288.         return result;
  5289.     }
  5290.     int32_t v7;
  5291.     sub_D26100((int32_t)&v7);
  5292.     sub_9716D8(*(int32_t *)(v2 + 64));
  5293.     sub_9F8688(v1);
  5294.     int32_t v8 = sub_96EF94(*(int32_t *)(v2 + 64), sub_9f87BC(v1));
  5295.     if (v8 != 0)
  5296.     {
  5297.         sub_1358D14(sub_96D0D0(v8));
  5298.     }
  5299.     v4 = 0;
  5300.     switch (a3)
  5301.     {
  5302.     case 0:
  5303.     {
  5304.         v4 = 1;
  5305.         break;
  5306.     }
  5307.     case 4:
  5308.     {
  5309.         v4 = 1;
  5310.         break;
  5311.     }
  5312.     }
  5313.     if (v3 == 0)
  5314.     {
  5315.         v5 = sub_6BBC08(v1);
  5316.         sub_135282C(v3, v5, v4);
  5317.     }
  5318.     v6 = sub_6BBC08(v1);
  5319.     result = sub_970F28(*(int32_t *)(v2 + 64), v6, 1, 0, 0);
  5320.     return result;
  5321. }
  5322. int32_t sub_1356F48(int32_t a1, int32_t a2, int32_t a3, int32_t a4)
  5323. {
  5324.     int32_t v1 = loc_150AA80(a1, a2, a3, a4);
  5325.     if (sub_12D804C(1) == 0)
  5326.     {
  5327.         return 0;
  5328.     }
  5329.     int32_t v2 = sub_D3D6EC(a3);
  5330.     if (v2 == 0)
  5331.     {
  5332.         return v2 != 0;
  5333.     }
  5334.     int32_t v3 = sub_12EF35C();
  5335.     int32_t v4;
  5336.     int32_t v5 = &v4;
  5337.     int32_t v6 = 0x1931800;
  5338.     sub_D21058(v5);
  5339.     int32_t v7;
  5340.     int32_t v8 = &v7;
  5341.     sub_D247A8(v8);
  5342.     sub_14F6178(v5, a3, 9);
  5343.     int32_t v9 = 18;
  5344.     int32_t v10 = 0;
  5345.     while (true)
  5346.     {
  5347.         int32_t v11 = v10;
  5348.         *(char *)(v11 + 136) = *(char *)(a3 + 16 + v10);
  5349.         *(char *)(v11 + 137) = *(char *)(17 + a3 + v10);
  5350.         int32_t v12 = v9 - 1;
  5351.         v9 = v12;
  5352.         if (v12 == 0)
  5353.         {
  5354.             int32_t v13;
  5355.             sub_D04070((int32_t)&v13, a3 + 52);
  5356.             sub_14F6178(v8, v3, 46);
  5357.             int32_t v14;
  5358.             sub_D3D738(v5, (int32_t)&v14, 768, 0);
  5359.             int32_t result = sub_13518A4((int32_t)&v6, v1, a2);
  5360.             return result;
  5361.         }
  5362.         v10 += 2;
  5363.     }
  5364. }
  5365. int32_t sub_13519D0(int32_t a1, int32_t a2)
  5366. {
  5367.     int32_t v1 = loc_150AA80(a1, a2);
  5368.     int32_t result = sub_12E4FAC(v1);
  5369.     if (result != 0)
  5370.     {
  5371.         return result;
  5372.     }
  5373.     if (sub_D2D690(0) == 0)
  5374.     {
  5375.         return 0;
  5376.     }
  5377.     int32_t v2 = sub_D2EA08(result);
  5378.     if (sub_D2D338(v2) == 0)
  5379.     {
  5380.         return 0;
  5381.     }
  5382.     int32_t v3;
  5383.     int32_t v4 = &v3;
  5384.     int32_t v5;
  5385.     int32_t v6 = &v5;
  5386.     sub_A8F724(v4, v6, 1024, 1);
  5387.     if (sub_A8F950(v4, 0, 0) == 0 || sub_13300F0(v1, v4) == 0 || sub_A8FBDC(v4) == 0)
  5388.     {
  5389.         return 0;
  5390.     }
  5391.     if ((a2 & 8) != 0)
  5392.     {
  5393.         sub_D44010(result, v6);
  5394.     }
  5395.     if ((a2 & 16) != 0)
  5396.     {
  5397.         if (sub_D3A440(result) != 0)
  5398.         {
  5399.             sub_D44230(result, v6);
  5400.         }
  5401.     }
  5402.     if ((a2 & 4) == 0)
  5403.     {
  5404.         return 0;
  5405.     }
  5406.     int32_t v7;
  5407.     int32_t v8 = &v7;
  5408.     sub_D247A8(v8);
  5409.     if (sub_D2D610(result, v8) == 0)
  5410.     {
  5411.         return 0;
  5412.     }
  5413.     int32_t v9;
  5414.     int32_t v10 = &v9;
  5415.     sub_D40558(v10, 0x1878AA4, v6);
  5416.     int32_t v11;
  5417.     int32_t v12 = &v11;
  5418.     int32_t v13;
  5419.     int32_t v14 = &v13;
  5420.     sub_A8F788(v12, v14, 1024, 1);
  5421.     int32_t result2;
  5422.     if (sub_D405A0(v10, v12) != 0)
  5423.     {
  5424.         result2 = sub_D43FF0(result, v8, 1, v14, 0);
  5425.     }
  5426.     else
  5427.     {
  5428.         result2 = 0;
  5429.     }
  5430.     return result2;
  5431. }
  5432. int32_t sub_13518A4(int32_t a1, int32_t a2, int32_t a3)
  5433. {
  5434.     int32_t v1 = loc_150AA7C(a1, a2, a3);
  5435.     int32_t result = sub_12E4fAC(v1);
  5436.     if (result != 0)
  5437.     {
  5438.         return result;
  5439.     }
  5440.     if (sub_D2D690(0) == 0)
  5441.     {
  5442.         return 0;
  5443.     }
  5444.     int32_t v2 = sub_D2EA08(result);
  5445.     if (sub_D2D338(v2) == 0)
  5446.     {
  5447.         return 0;
  5448.     }
  5449.     int32_t v3;
  5450.     int32_t v4 = &v3;
  5451.     int32_t v5;
  5452.     int32_t v6 = &v5;
  5453.     sub_A8F724(v4, v6, 1024, 1);
  5454.     if (sub_A8F950(v4, 0, 0) == 0)
  5455.     {
  5456.         return 0;
  5457.     }
  5458.     int32_t result2;
  5459.     if (sub_13300F0(v1, v4) != 0)
  5460.     {
  5461.         int32_t v7 = sub_A8FBDC(v4);
  5462.         if (v7 != 0 && a2 != 0 && a3 > 0)
  5463.         {
  5464.             int32_t v8;
  5465.             int32_t v9 = &v8;
  5466.             sub_D40558(v9, 0x1878AA4, v6);
  5467.             int32_t v10;
  5468.             int32_t v11 = &v10;
  5469.             int32_t v12;
  5470.             int32_t v13 = &v12;
  5471.             sub_A8F788(v11, v13, 1024, 1);
  5472.             if (sub_D405A0(v9, v11) != 0)
  5473.             {
  5474.                 result2 = sub_D43FD0(result, a2, a3, v13, 0);
  5475.             }
  5476.             else
  5477.             {
  5478.                 result2 = 0;
  5479.             }
  5480.             return result2;
  5481.         }
  5482.         result2 = v7;
  5483.     }
  5484.     else
  5485.     {
  5486.         result2 = 0;
  5487.     }
  5488.     return result2;
  5489. }
  5490. int32_t sub_D44010(int32_t a1, int32_t a2, int32_t a3, int32_t a4, int32_t a5, int32_t a6)
  5491. {
  5492.     int32_t v1 = loc_150AA70(a1, a2, a3, a4, a5, a6);
  5493.     int32_t v2 = 0;
  5494.     int32_t v3;
  5495.     int32_t v4 = &v3;
  5496.     bool result2 = false;
  5497.     int32_t v5 = v4;
  5498.     sub_AE8C70(v4, 0, 48);
  5499.     int32_t v6 = -1;
  5500.     *(char *)(v5 + 44) = (char)result2;
  5501.     int32_t v7 = v5;
  5502.     *(char *)(v7 + 45) = (char)result2;
  5503.     *(int32_t *)v5 = v6;
  5504.     sub_AE8C70(v7, 0, 48);
  5505.     *(int32_t *)v5 = v6;
  5506.     *(char *)(v5 + 44) = (char)result2;
  5507.     v2++;
  5508.     *(char *)(v5 + 45) = (char)result2;
  5509.     *(int32_t *)(v5 + 48) = (int32_t)result2;
  5510.     int32_t v8 = v5 + 52;
  5511.     v5 = v8;
  5512.     while (v2 < 100)
  5513.     {
  5514.         sub_AE8C70(v8, 0, 48);
  5515.         v6 = -1;
  5516.         *(char *)(v5 + 44) = (char)result2;
  5517.         v7 = v5;
  5518.         *(char *)(v7 + 45) = (char)result2;
  5519.         *(int32_t *)v5 = v6;
  5520.         sub_AE8C70(v7, 0, 48);
  5521.         *(int32_t *)v5 = v6;
  5522.         *(char *)(v5 + 44) = (char)result2;
  5523.         v2++;
  5524.         *(char *)(v5 + 45) = (char)result2;
  5525.         *(int32_t *)(v5 + 48) = (int32_t)result2;
  5526.         v8 = v5 + 52;
  5527.         v5 = v8;
  5528.     }
  5529.     int32_t v9 = 100;
  5530.     int32_t v10 = sub_D43B5C(v1, v4, (int32_t)&v9);
  5531.     int32_t result = result2;
  5532.     if (v10 == 0)
  5533.     {
  5534.         return result;
  5535.     }
  5536.     int32_t v11;
  5537.     int32_t v12 = &v11;
  5538.     v5 = v12;
  5539.     sub_AE8C70(v12, 0, 48);
  5540.     *(char *)(v5 + 44) = (char)result2;
  5541.     result++;
  5542.     *(char *)(v5 + 45) = (char)result2;
  5543.     *(int32_t *)v5 = -1;
  5544.     int32_t v13 = v5 + 48;
  5545.     v5 = v13;
  5546.     while (result < 100)
  5547.     {
  5548.         sub_AE8C70(v13, 0, 48);
  5549.         *(char *)(v5 + 44) = (char)result2;
  5550.         result++;
  5551.         *(char *)(v5 + 45) = (char)result2;
  5552.         *(int32_t *)v5 = -1;
  5553.         v13 = v5 + 48;
  5554.         v5 = v13;
  5555.     }
  5556.     int32_t v14 = result2;
  5557.     v6 = v14;
  5558.     int32_t v15 = v9;
  5559.     v5 = v14;
  5560.     int32_t v16;
  5561.     int32_t v17;
  5562.     int32_t v18;
  5563.     int32_t v19;
  5564.     int32_t v20;
  5565.     int32_t v21;
  5566.     int32_t v22;
  5567.     int32_t v23;
  5568.     int32_t v24;
  5569.     if (v15 <= 0)
  5570.     {
  5571.         if (v14 == 0)
  5572.         {
  5573.             return 1;
  5574.         }
  5575.         v22 = a2;
  5576.         v21 = 0x1851618;
  5577.         sub_150BB04((int32_t)&v24, (int32_t)&v21, 64);
  5578.         v16 = &v19;
  5579.         sub_150BB04(v16, (int32_t)&v22, 1024);
  5580.         v17 = &v23;
  5581.         v18 = &v20;
  5582.         sub_A8F788(v17, v18, 1024, 1);
  5583.         if (sub_D405A0(v16, v17) == 0)
  5584.         {
  5585.             return result2;
  5586.         }
  5587.         if (sub_D3F6AC(v1, v12, v5, v18, 0) != 0)
  5588.         {
  5589.             result2 = true;
  5590.         }
  5591.         return result2;
  5592.     }
  5593.     result = v4;
  5594.     int32_t v25;
  5595.     int32_t v26 = &v25;
  5596.     v2 = v26;
  5597.     int32_t v27 = v14;
  5598.     int32_t v28 = v14;
  5599.     int32_t v29;
  5600.     while (true)
  5601.     {
  5602.         v29 = v27;
  5603.         int32_t v30 = v15;
  5604.         int32_t v31 = v4;
  5605.         int32_t v32 = v26;
  5606.         int32_t v33 = v28;
  5607.         if ((*(int32_t *)v26 & 2) != 0)
  5608.         {
  5609.             sub_AE8C70(1176, 0, 48);
  5610.             *(char *)1220 = (char)result2;
  5611.             *(char *)1221 = (char)result2;
  5612.             *(int32_t *)1176 = -1;
  5613.             sub_14F6178(1176, result, 46);
  5614.             int32_t v34 = v5 + 1;
  5615.             v5 = v34;
  5616.             v29 = v34;
  5617.             v30 = v9;
  5618.             v31 = result;
  5619.             v32 = v2;
  5620.             v33 = v6;
  5621.         }
  5622.         int32_t v35 = v33 + 1;
  5623.         v6 = v35;
  5624.         int32_t v36 = v32 + 52;
  5625.         v2 = v36;
  5626.         int32_t v37 = v31 + 52;
  5627.         result = v37;
  5628.         if (v35 >= v30)
  5629.         {
  5630.             break;
  5631.         }
  5632.         v27 = v29;
  5633.         v28 = v35;
  5634.         v15 = v30;
  5635.         v4 = v37;
  5636.         v26 = v36;
  5637.     }
  5638.     if (v29 == 0)
  5639.     {
  5640.         return 1;
  5641.     }
  5642.     v22 = a2;
  5643.     v21 = 0x1851618;
  5644.     sub_150BB04((int32_t)&v24, (int32_t)&v21, 64);
  5645.     v16 = &v19;
  5646.     sub_150BB04(v16, (int32_t)&v22, 1024);
  5647.     v17 = &v23;
  5648.     v18 = &v20;
  5649.     sub_A8F788(v17, v18, 1024, 1);
  5650.     if (sub_D405A0(v16, v17) != 0)
  5651.     {
  5652.         if (sub_D3F6AC(v1, v12, v5, v18, 0) != 0)
  5653.         {
  5654.             result2 = true;
  5655.         }
  5656.     }
  5657.     return result2;
  5658. }
  5659. //sub_D3F6AC(0, "NAME_PADDING", 1, json_context, 0);
  5660. int32_t sub_D3F6AC(int32_t a1, int32_t a2, int32_t a3, int32_t a4, int32_t a5)
  5661. {
  5662.     int32_t v1 = loc_150AA70(a1, a2, a3, a4, a5);
  5663.     bool result = false;
  5664.     char v2 = *(char *)0x1CCB210;
  5665.     if (a4 == 0 || v1 > 0 || ((int32_t)(v1 < 0) || (int32_t)(v2 == 0)) != 0 || sub_14F8DD4(a4) <= 0)
  5666.     {
  5667.         return result;
  5668.     }
  5669.     int32_t v3 = result;
  5670.     bool v4 = true;
  5671.     if (*(char *)0x1CCB134 != 0)
  5672.     {
  5673.         v3 = 0x2005010;
  5674.     }
  5675.     int32_t v5 = *(int32_t *)v3;
  5676.     int32_t v6 = v5;
  5677.     if (v5 == 0)
  5678.     {
  5679.         return result;
  5680.     }
  5681.     sub_D320D8(v5, 0, 0);
  5682.     *(int32_t *)(v6 + 1592) = -1;
  5683.     *(int32_t *)v6 = 0x1908950;
  5684.     sub_D32030(v6 + 1600, -1, 0x1908950);
  5685.     int32_t v7 = result;
  5686.     *(int32_t *)(v6 + 3160) = v7;
  5687.     *(int32_t *)(v6 + 3164) = v7;
  5688.     *(int32_t *)(v6 + 3168) = v7;
  5689.     *(int32_t *)(v6 + 28) = v3;
  5690.     *(int32_t *)v6 = 0x190BA90;
  5691.     if (v6 == 0)
  5692.     {
  5693.         return result;
  5694.     }
  5695.     int32_t v8 = v6 + 3164;
  5696.     v3 = v8;
  5697.     int32_t * v9;
  5698.     int32_t v10;
  5699.     int32_t v11;
  5700.     int32_t v12;
  5701.     if (v8 != 0)
  5702.     {
  5703.         if (*(int32_t *)v8 == 1)
  5704.         {
  5705.             v10 = v6;
  5706.             if (v10 == 0)
  5707.             {
  5708.                 return result;
  5709.             }
  5710.             v11 = result;
  5711.             v12 = v11;
  5712.             if (*(char *)0x1CCB134 != 0)
  5713.             {
  5714.                 v12 = v4 ? 0x2005010 : 0;
  5715.             }
  5716.             v9 = (int32_t *)(v10 + 28);
  5717.             if (v12 == *v9)
  5718.             {
  5719.                 *v9 = v11;
  5720.             }
  5721.             return result;
  5722.         }
  5723.     }
  5724.     if (sub_D38374(v6, v1, a2, a3, a4, a5) != 0)
  5725.     {
  5726.         if (sub_D29A80(v6, v3) != 0)
  5727.         {
  5728.             if (sub_D29818(0, v6) == 0)
  5729.             {
  5730.                 v10 = v6;
  5731.                 if (v10 != 0)
  5732.                 {
  5733.                     v11 = result;
  5734.                     v12 = v11;
  5735.                     if (*(char *)0x1CCB134 != 0)
  5736.                     {
  5737.                         v12 = v4 ? 0x2005010 : 0;
  5738.                     }
  5739.                     v9 = (int32_t *)(v10 + 28);
  5740.                     if (v12 == *v9)
  5741.                     {
  5742.                         *v9 = v11;
  5743.                     }
  5744.                 }
  5745.             }
  5746.             else
  5747.             {
  5748.                 result = true;
  5749.             }
  5750.             return result;
  5751.         }
  5752.     }
  5753.     if (v3 == 0)
  5754.     {
  5755.         v10 = v6;
  5756.     }
  5757.     else
  5758.     {
  5759.         if (*(int32_t *)(v6 + 3164) != 2)
  5760.         {
  5761.             sub_1524308(v3, 1, 0);
  5762.             sub_1524308(v3, 2, -1);
  5763.             v10 = v6;
  5764.         }
  5765.         else
  5766.         {
  5767.             v10 = v6;
  5768.         }
  5769.     }
  5770.     if (v10 != 0)
  5771.     {
  5772.         v11 = result;
  5773.         v12 = v11;
  5774.         if (*(char *)0x1CCB134 != 0)
  5775.         {
  5776.             v12 = v4 ? 0x2005010 : 0;
  5777.         }
  5778.         v9 = (int32_t *)(v10 + 28);
  5779.         if (v12 == *v9)
  5780.         {
  5781.             *v9 = v11;
  5782.         }
  5783.     }
  5784.     return result;
  5785. }
  5786. int32_t sub_D6CBC4(int32_t a1, int32_t a2, int32_t * a3)
  5787. {
  5788.     int32_t v1 = (int32_t)a3;
  5789.     int32_t v2 = loc_150AA78(a1, a2, v1);
  5790.     uint28_t v3 = 0;
  5791.     int28_t v4 = v2 > 0 ? 0x4000000 : 0;
  5792.     int28_t v5 = v2 == 0 ? 0x2000000 : 0;
  5793.     int28_t v6 = 0x8000000 * (int28_t)(v2 < 0) | v3 % 0x1000000 | v4 | v5;
  5794.     if (a3 == NULL || (v3 & 128) == 0 || v6 < 0)
  5795.     {
  5796.         return 0;
  5797.     }
  5798.     bool v7 = true;
  5799.     int32_t v8 = *(int32_t *)0x2005010;
  5800.     int32_t v9 = v8;
  5801.     if (v8 == 0)
  5802.     {
  5803.         return 0;
  5804.     }
  5805.     sub_D320D8(v8, 0, 0);
  5806.     *(int32_t *)v9 = 0x1908950;
  5807.     *(int32_t *)(v9 + 1592) = -1;
  5808.     sub_D32030(v9 + 1600, 0x1908950, -1);
  5809.     *(int32_t *)(v9 + 3160) = 0;
  5810.     *(int32_t *)(v9 + 28) = 0x2005010;
  5811.     *(int32_t *)v9 = 0x190B510;
  5812.     if (v9 == 0)
  5813.     {
  5814.         return 0;
  5815.     }
  5816.     int32_t * v10;
  5817.     int32_t v11;
  5818.     int32_t v12;
  5819.     int32_t v13;
  5820.     int32_t v14;
  5821.     if (*(int32_t *)v1 != 1)
  5822.     {
  5823.         if (sub_D37970(v9, v2, a2) != 0)
  5824.         {
  5825.             if (sub_D29A80(v9, v1) != 0)
  5826.             {
  5827.                 int32_t result = 1;
  5828.                 if (sub_D29818(0, v9) == 0)
  5829.                 {
  5830.                     v11 = v9;
  5831.                     if (v11 != 0)
  5832.                     {
  5833.                         v14 = *(int32_t *)(v11 + 12);
  5834.                         if (((int32_t)(v14 < 2) ^ 1 || (int32_t)(v14 < 0)) != 0)
  5835.                         {
  5836.                             *(int32_t *)(v1 + 4) = -1;
  5837.                         }
  5838.                         v13 = 0;
  5839.                         if (*(char *)0x1CCB134 != 0)
  5840.                         {
  5841.                             v13 = v7 ? 0x2005010 : 0;
  5842.                         }
  5843.                         v12 = v9;
  5844.                         if (v12 != 0)
  5845.                         {
  5846.                             v10 = (int32_t *)(v12 + 28);
  5847.                             if (v13 == *v10)
  5848.                             {
  5849.                                 *v10 = 0;
  5850.                                 result = 0;
  5851.                             }
  5852.                             else
  5853.                             {
  5854.                                 result = 0;
  5855.                             }
  5856.                         }
  5857.                         else
  5858.                         {
  5859.                             result = 0;
  5860.                         }
  5861.                     }
  5862.                     else
  5863.                     {
  5864.                         result = 0;
  5865.                     }
  5866.                 }
  5867.                 return result;
  5868.             }
  5869.         }
  5870.         if (*(int32_t *)v1 != 2)
  5871.         {
  5872.             sub_1524308(v1, 1, 0);
  5873.             sub_1524308(v1, 2, -1);
  5874.         }
  5875.     }
  5876.     v11 = v9;
  5877.     if (v11 == 0)
  5878.     {
  5879.         return 0;
  5880.     }
  5881.     v14 = *(int32_t *)(v11 + 12);
  5882.     if (((int32_t)(v14 < 2) ^ 1 || (int32_t)(v14 < 0)) != 0)
  5883.     {
  5884.         *(int32_t *)(v1 + 4) = -1;
  5885.     }
  5886.     v13 = 0;
  5887.     if (*(char *)0x1CCB134 != 0)
  5888.     {
  5889.         v13 = v7 ? 0x2005010 : 0;
  5890.     }
  5891.     v12 = v9;
  5892.     if (v12 != 0)
  5893.     {
  5894.         v10 = (int32_t *)(v12 + 28);
  5895.         if (v13 == *v10)
  5896.         {
  5897.             *v10 = 0;
  5898.         }
  5899.     }
  5900.     return 0;
  5901. }
  5902. int32_t sub_D651E4(int32_t a1, int32_t a2, int32_t a3, int32_t a4, int32_t a5, int32_t a6, int32_t * a7)
  5903. {
  5904.     int32_t v1 = (int32_t)a7;
  5905.     int32_t v2 = sub_150AA68(a1, a2, a3, a4, a5, a6, v1);
  5906.     bool result = false;
  5907.     int32_t v3 = 0x2005010;
  5908.     int32_t v4 = *(int32_t *)0x2005010;
  5909.     int32_t v5 = v4;
  5910.     if (v4 == 0)
  5911.     {
  5912.         return false;
  5913.     }
  5914.     sub_D320D8(v4, 0, 0);
  5915.     *(int32_t *)(v5 + 1592) = -1;
  5916.     *(int32_t *)v5 = 0x1908950;
  5917.     sub_D32030(v5 + 1600, -1, 0x1908950);
  5918.     *(int32_t *)(v5 + 3160) = (int32_t)result;
  5919.     *(int32_t *)(v5 + 28) = 0x2005010;
  5920.     *(int32_t *)v5 = 0x190A540;
  5921.     if (v5 == 0)
  5922.     {
  5923.         return result;
  5924.     }
  5925.     int32_t * v6;
  5926.     int32_t v7;
  5927.     int32_t v8;
  5928.     bool result3;
  5929.     int32_t v9;
  5930.     int32_t v10;
  5931.     bool result2;
  5932.     int32_t v11;
  5933.     if (v1 != 0)
  5934.     {
  5935.         if (*(int32_t *)v1 == 1)
  5936.         {
  5937.             v7 = v5;
  5938.             if (v7 == 0)
  5939.             {
  5940.                 result2 = result;
  5941.             }
  5942.             else
  5943.             {
  5944.                 v11 = *(int32_t *)(v7 + 12);
  5945.                 if (((int32_t)(v11 < 2) ^ 1 || (int32_t)(v11 < 0)) != 0)
  5946.                 {
  5947.                     *(int32_t *)(v1 + 4) = -1;
  5948.                 }
  5949.                 result3 = result;
  5950.                 v8 = result3;
  5951.                 v10 = v8;
  5952.                 if (*(char *)0x1CCB134 != 0)
  5953.                 {
  5954.                     v10 = v3;
  5955.                 }
  5956.                 v9 = v5;
  5957.                 if (v9 != 0)
  5958.                 {
  5959.                     v6 = (int32_t *)(v9 + 28);
  5960.                     if (v10 == *v6)
  5961.                     {
  5962.                         *v6 = v8;
  5963.                         result2 = result3;
  5964.                     }
  5965.                     else
  5966.                     {
  5967.                         result2 = result3;
  5968.                     }
  5969.                 }
  5970.                 else
  5971.                 {
  5972.                     result2 = result3;
  5973.                 }
  5974.             }
  5975.             return result2;
  5976.         }
  5977.     }
  5978.     int32_t v12;
  5979.     if (sub_D3310C(v5, v2, a2, a3, a4, a5, a6) == 0)
  5980.     {
  5981.         v12 = v1;
  5982.         if (v12 == 0)
  5983.         {
  5984.             v7 = v5;
  5985.             if (v7 == 0)
  5986.             {
  5987.                 return result;
  5988.             }
  5989.             v11 = *(int32_t *)(v7 + 12);
  5990.             if (((int32_t)(v11 < 2) ^ 1 || (int32_t)(v11 < 0)) != 0)
  5991.             {
  5992.                 *(int32_t *)(v1 + 4) = -1;
  5993.             }
  5994.             result3 = result;
  5995.             v8 = result3;
  5996.             v10 = v8;
  5997.             if (*(char *)0x1CCB134 != 0)
  5998.             {
  5999.                 v10 = v3;
  6000.             }
  6001.             v9 = v5;
  6002.             if (v9 != 0)
  6003.             {
  6004.                 v6 = (int32_t *)(v9 + 28);
  6005.                 if (v10 == *v6)
  6006.                 {
  6007.                     *v6 = v8;
  6008.                 }
  6009.             }
  6010.             return result3;
  6011.         }
  6012.         if (*(int32_t *)v12 != 2)
  6013.         {
  6014.             sub_1524308(v12, 1, 0);
  6015.             sub_1524308(v1, 2, -1);
  6016.         }
  6017.         v7 = v5;
  6018.         if (v7 == 0)
  6019.         {
  6020.             result2 = result;
  6021.         }
  6022.         else
  6023.         {
  6024.             v11 = *(int32_t *)(v7 + 12);
  6025.             if (((int32_t)(v11 < 2) ^ 1 || (int32_t)(v11 < 0)) != 0)
  6026.             {
  6027.                 *(int32_t *)(v1 + 4) = -1;
  6028.             }
  6029.             result3 = result;
  6030.             v8 = result3;
  6031.             v10 = v8;
  6032.             if (*(char *)0x1CCB134 != 0)
  6033.             {
  6034.                 v10 = v3;
  6035.             }
  6036.             v9 = v5;
  6037.             if (v9 != 0)
  6038.             {
  6039.                 v6 = (int32_t *)(v9 + 28);
  6040.                 if (v10 == *v6)
  6041.                 {
  6042.                     *v6 = v8;
  6043.                     result2 = result3;
  6044.                 }
  6045.                 else
  6046.                 {
  6047.                     result2 = result3;
  6048.                 }
  6049.             }
  6050.             else
  6051.             {
  6052.                 result2 = result3;
  6053.             }
  6054.         }
  6055.         return result2;
  6056.     }
  6057.     if (sub_D29A80(v5, v1) != 0)
  6058.     {
  6059.         if (sub_D29818(0, v5) != 0)
  6060.         {
  6061.             return true;
  6062.         }
  6063.         v7 = v5;
  6064.         if (v7 == 0)
  6065.         {
  6066.             result2 = result;
  6067.         }
  6068.         else
  6069.         {
  6070.             v11 = *(int32_t *)(v7 + 12);
  6071.             if (((int32_t)(v11 < 2) ^ 1 || (int32_t)(v11 < 0)) != 0)
  6072.             {
  6073.                 *(int32_t *)(v1 + 4) = -1;
  6074.             }
  6075.             result3 = result;
  6076.             v8 = result3;
  6077.             v10 = v8;
  6078.             if (*(char *)0x1CCB134 != 0)
  6079.             {
  6080.                 v10 = v3;
  6081.             }
  6082.             v9 = v5;
  6083.             if (v9 != 0)
  6084.             {
  6085.                 v6 = (int32_t *)(v9 + 28);
  6086.                 if (v10 == *v6)
  6087.                 {
  6088.                     *v6 = v8;
  6089.                     result2 = result3;
  6090.                 }
  6091.                 else
  6092.                 {
  6093.                     result2 = result3;
  6094.                 }
  6095.             }
  6096.             else
  6097.             {
  6098.                 result2 = result3;
  6099.             }
  6100.         }
  6101.         return result2;
  6102.     }
  6103.     v12 = v1;
  6104.     if (v12 != 0)
  6105.     {
  6106.         if (*(int32_t *)v12 != 2)
  6107.         {
  6108.             sub_1524308(v12, 1, 0);
  6109.             sub_1524308(v1, 2, -1);
  6110.         }
  6111.     }
  6112.     v7 = v5;
  6113.     if (v7 == 0)
  6114.     {
  6115.         result2 = result;
  6116.     }
  6117.     else
  6118.     {
  6119.         v11 = *(int32_t *)(v7 + 12);
  6120.         if (((int32_t)(v11 < 2) ^ 1 || (int32_t)(v11 < 0)) != 0)
  6121.         {
  6122.             *(int32_t *)(v1 + 4) = -1;
  6123.         }
  6124.         result3 = result;
  6125.         v8 = result3;
  6126.         v10 = v8;
  6127.         if (*(char *)0x1CCB134 != 0)
  6128.         {
  6129.             v10 = v3;
  6130.         }
  6131.         v9 = v5;
  6132.         if (v9 != 0)
  6133.         {
  6134.             v6 = (int32_t *)(v9 + 28);
  6135.             if (v10 == *v6)
  6136.             {
  6137.                 *v6 = v8;
  6138.                 result2 = result3;
  6139.             }
  6140.             else
  6141.             {
  6142.                 result2 = result3;
  6143.             }
  6144.         }
  6145.         else
  6146.         {
  6147.             result2 = result3;
  6148.         }
  6149.     }
  6150.     return result2;
  6151. }
  6152.  
  6153.  
  6154.  
  6155.  
  6156.  
  6157. /*
  6158. trying to block the blacklist for when youre kicked
  6159. A8BF68
  6160. D232DC
  6161. A8C3F4
  6162. A8B5FC
  6163. A8BBBC
  6164. A8B978
  6165. D11D0C
  6166.  
  6167. D04048  138E5C0 = 4B975A89
  6168. D26100  138E600 = 4B997B01
  6169. 9F8FD8  138E644 = 4B66A995
  6170.  
  6171.  
  6172. //blr = 0x4E800020
  6173. 0xA8BBBC = 0x60850000 //this stops you from joining a new session. not protecting
  6174. 0xA8B978 = 0x80630010 //freeze
  6175. 0x970F28 = 0x7C0802A6     // not protecting
  6176. 0x1358AAC = 0x7C0802A6  //this one protects against it but makes everyone leave
  6177.  
  6178. //nopped
  6179. 0x1358E50 = 4B732D6D
  6180. 0x1358E84 = 4B732AF5
  6181. 0x1358D08 = 4B618221
  6182. 0x1358C08 = 4BFFFEA5
  6183. 0x138F9F0 = 4BFFE6D9 nop     //this one protects against it but makes everyone leave
  6184. 0x138F9DC = F821FF91 blr    //this one protects against it but makes everyone leave
  6185. 0x138E5BC = 30611AE4  branch 48001418 // //this one protects against it but makes everyone leave
  6186. 0x138E600 = 4B997B01
  6187. 0x138E614 = 483C6B4D //not tried but didnt protect
  6188. 0x138E624 = 4B5E0AF1 //this one protects against it but makes everyone leave
  6189. 0x138E638 = 4BF63621
  6190. 0x138E644 = 4B66A995 //not protecting
  6191. 0x138E670 = 4BFCA43D //this one protects against it but makes everyone leave   the curret best
  6192. */
  6193.  
  6194.  
  6195.  
  6196.  
  6197.  
  6198.  
  6199.  
  6200.  
  6201.  
  6202.  
  6203.  
  6204.  
  6205.  
  6206.  
  6207.  
  6208.  
  6209. void func_51()
  6210.     {
  6211.         int iVar0 = _GET_TOTAL_SC_INBOX_IDS();
  6212.         int iVar1 = 0;
  6213.         while (iVar1 < iVar0)
  6214.         {
  6215.             if (!_IS_SC_INBOX_VALID(iVar1))
  6216.             {
  6217.                 Hash iVar2 = _SC_INBOX_MESSAGE_INIT(iVar1);
  6218.                 printf("SC MESSAGE TYPE: 0x%X\n", iVar2);
  6219.                 switch (iVar2)
  6220.                 {
  6221.                 case 0xCBB12972: // crew_message
  6222.                 {
  6223.                     //requires, crewId and crewTag
  6224.                     printf("crew_message: 0x%X\n", iVar2);
  6225.                     break;
  6226.                 }
  6227.                 case 0xEDF54CE2: // statupdate
  6228.                 {
  6229.                     printf("statupdate: 0x%X\n", iVar2);
  6230.                     break;
  6231.                 }
  6232.                 case 0x8C571656: // mission_verified
  6233.                 {
  6234.                     printf("mission_verified: 0x%X\n", iVar2);
  6235.                     break;
  6236.                 }
  6237.                 case 0x70E4D0E1: // rockstar_message
  6238.                 {
  6239.                     printf("rockstar_message: 0x%X\n", iVar2);
  6240.                     break;
  6241.                 }
  6242.                 case 0x2190F9E1: // ugcstatupdate
  6243.                 {
  6244.                     printf("ugcstatupdate: 0x%X\n", iVar2);
  6245.                     break;
  6246.                 }
  6247.                 case 0xD36120CE: // game_award
  6248.                 {
  6249.                     //type-> cash or xp
  6250.                     //amt-> 999999
  6251.                     //from-> Rockstar
  6252.                     printf("game_award: 0x%X\n", iVar2);
  6253.                     break;
  6254.                 }
  6255.                 case 0x134AB8CF: // bounty
  6256.                 {
  6257.                     printf("bounty: 0x%X\n", iVar2);
  6258.                     break;
  6259.                 }
  6260.                 }
  6261.             }
  6262.             iVar1++;
  6263.         }
  6264.     }
  6265.  
  6266.  
  6267.  
  6268.  
  6269.  
  6270.  
  6271.  
  6272.  
  6273.  
  6274.  
  6275.  
  6276.  
  6277.  
  6278.  
  6279.  
  6280.  
  6281.  
  6282.  
  6283.  
  6284.  
  6285. int32_t createAmbientPickupFunc(int32_t a1, int32_t a2, int32_t a3, int32_t a4, int32_t a5, uint32_t a6, uint32_t a7, int32_t a8)
  6286. {
  6287.     int32_t v1 = sub_150AA74(a1, a2, a3, a4, a5, a6, a7, a8);
  6288.     int32_t v2 = a7 % 256;
  6289.     int32_t v3 = a6 % 256;
  6290.     if (*(char *)0x223F0C0 == 0)
  6291.     {
  6292.         return sub_3FA198(v1, a2, a3, a4, a5, v3, v2);
  6293.     }
  6294.     int32_t v4;
  6295.     int32_t v5;
  6296.     int32_t v6;
  6297.     int32_t v7;
  6298.     int32_t v8;
  6299.     int32_t v9;
  6300.     int32_t v10;
  6301.     if (*(int32_t *)0x2183F14 == v1)
  6302.     {
  6303.         v9 = sub_D25F10((int32_t)&v7, 0);
  6304.         v10 = sub_9F858C(v9);
  6305.         if (v10 == 0)
  6306.         {
  6307.             v6 = sub_12EF35C();
  6308.             sub_131BC34(v10, v6, a4, v1);
  6309.             return sub_3FA198(v1, a2, a3, a4, a5, v3, v2);
  6310.         }
  6311.         rand();
  6312.         v4 = v8;
  6313.         if (*(int32_t *)(sub_9F8604(0x2FB220, 0x300000) + 0x300000) != 0)
  6314.         {
  6315.             v5 = sub_1545344();
  6316.             reportCashSpawnfn(v4, a4, v1, v5);
  6317.             return sub_3FA198(v1, a2, a3, a4, a5, v3, v2);
  6318.         }
  6319.         v6 = sub_12EF35C();
  6320.         sub_131BC34(v4, v6, a4, v1);
  6321.         return sub_3FA198(v1, a2, a3, a4, a5, v3, v2);
  6322.     }
  6323.     if (*(int32_t *)0x2183F18 == v1 || *(int32_t *)0x2183F1C == v1 || *(int32_t *)0x2183F20 == v1 || *(int32_t *)0x2183F24 == v1 || *(int32_t *)0x2183F28 == v1)
  6324.     {
  6325.         v9 = sub_D25F10((int32_t)&v7, 0);
  6326.         v10 = sub_9F858C(v9);
  6327.         v4 = v10;
  6328.         if (v10 != 0)
  6329.         {
  6330.             rand();
  6331.             v4 = v8;
  6332.             if (*(int32_t *)(sub_9F8604(0x2FB220, 0x300000) + 0x300000) != 0)
  6333.             {
  6334.                 v5 = sub_1545344();
  6335.                 reportCashSpawnfn(v4, a4, v1, v5);
  6336.                 return sub_3FA198(v1, a2, a3, a4, a5, v3, v2);
  6337.             }
  6338.         }
  6339.         v6 = sub_12EF35C();
  6340.         sub_131BC34(v4, v6, a4, v1);
  6341.         return sub_3FA198(v1, a2, a3, a4, a5, v3, v2);
  6342.     }
  6343.     if (*(int32_t *)0x2183F2C != v1)
  6344.     {
  6345.         return sub_3FA198(v1, a2, a3, a4, a5, v3, v2);
  6346.     }
  6347.     v9 = sub_D25F10((int32_t)&v7, 0);
  6348.     v10 = sub_9F858C(v9);
  6349.     v4 = v10;
  6350.     if (v10 != 0)
  6351.     {
  6352.         rand();
  6353.         v4 = v8;
  6354.         if (*(int32_t *)(sub_9F8604(0x2FB220, 0x300000) + 0x300000) != 0)
  6355.         {
  6356.             v5 = sub_1545344();
  6357.             reportCashSpawnfn(v4, a4, v1, v5);
  6358.             return sub_3FA198(v1, a2, a3, a4, a5, v3, v2);
  6359.         }
  6360.     }
  6361.     v6 = sub_12EF35C();
  6362.     sub_131BC34(v4, v6, a4, v1);
  6363.     return sub_3FA198(v1, a2, a3, a4, a5, v3, v2);
  6364. }
  6365.  
  6366. /*
  6367.  
  6368. r0=000000000019660D        r8=00000000100000A0       r16=0000000000000000       r24=0000000000000000
  6369. r1=00000000D003F610        r9=00000000100001C4       r17=00000000D0040430       r25=0000000000000001
  6370. r2=0000000001C85330       r10=00000000100001B0       r18=0000000035F680D8       r26=DEF76158880A67D9
  6371. r3=DEF76158880A67D9       r11=0007213E023A5975       r19=0000000001CC2FA8       r27=FFFFFFFFCE6FDD6B
  6372. r4=0000000000009C40       r12=0000000002290308       r20=0000000032293664       r28=0000000010069664
  6373. r5=FFFFFFFFCE6FDD6B       r13=0000000010007060       r21=0000000035F68000       r29=0000000000000000
  6374. r6=0000000000000005       r14=0000000000000000       r22=0000000001E70370       r30=0000000000009C40
  6375. r7=00000000100001AC       r15=0000000000000000       r23=00000000320A8DC0       r31=00000000113FD533
  6376.  
  6377. xer=0000000000000000       ctr=000000000227512C        lr=00000000003FA628     fpscr=BF324500
  6378.  
  6379. cr=48000044               cr0=GT cr1=LT cr2=   cr3=   cr4=   cr5=   cr6=GT cr7=GT
  6380.  
  6381. pc=00000000012D73D8
  6382.  
  6383.  
  6384.  
  6385. */
  6386.  
  6387.  
  6388. //model hash is in r31
  6389. GAME_EXPORT int32_t reportCashSpawnfn(int32_t a1, int32_t amount, int32_t pickup_hash_0xFFFFFFFFCE6FDD6B, int32_t ret_sub_1545344);
  6390. GAME_EXPORT int32_t sub_1545344(int32_t cNetGamePlayer);
  6391.  
  6392.  
  6393. void report_player_test()
  6394. {
  6395.     int32_t _rand = rand();
  6396.     printf("rand: 0x%X\n", _rand);
  6397.     int32_t v5 = sub_1545344(CNetGamePlayerFn(iSelectedPlayer, 1));
  6398.     reportCashSpawnfn(_rand, 40000, 0xFFFFFFFFCE6FDD6B, v5);
  6399. }
  6400.  
  6401.  
  6402.  
  6403.  
  6404.  
  6405.  
  6406.  
  6407. GAME_EXPORT char* GetLabelTextByGXTFunc(address, gxt_label); // 0xD914CC
  6408. char backup_GetLabelTextByGXT[4 * 4];
  6409.  
  6410. char *_MY_GetLabelTextByGXT(int32_t unk_20668B0, char *label_name)
  6411. {
  6412.     printf("unk_20668B0: 0x%X\n", unk_20668B0);
  6413.     printf("label_name: %s\n", label_name);
  6414.  
  6415.  
  6416.  
  6417.  
  6418.     //backup hook, revert, call, hook
  6419.     char backup_hook[4 * 4];
  6420.     WriteProcessMemory(backup_hook, (const void *)0xD914CC, 4 * 4);
  6421.     WriteProcessMemory((void *)0xD914CC, backup_GetLabelTextByGXT, 4 * 4);
  6422.     char *ret = GetLabelTextByGXTFunc(unk_20668B0, label_name);
  6423.     WriteProcessMemory((void *)0xD914CC, backup_hook, 4 * 4);
  6424.     return ret;
  6425. }
  6426.  
  6427.  
  6428.  
  6429. WriteProcessMemory(backup_GetLabelTextByGXT, (const void *)0xD914CC, 4 * 4);
  6430. PatchInJump(0xD914CC, (int)_MY_GetLabelTextByGXT, false);
  6431.  
  6432.  
  6433.  
  6434.  
  6435.  
  6436.  
  6437.  
  6438.  
  6439.  
  6440.  
  6441. //nop all if you freeze
  6442. 00A51B60;
  6443. 0A51B6C;
  6444. 0A51B74;
  6445. 00A51B74;
  6446. 000A51B78;
  6447. 0A51B84;
  6448. 00A51B88;
  6449. 00A51B8C;
  6450. 0A51B94;
  6451. 0A51B98;
  6452. 0A51BA4;
  6453. 00A51BB0;
  6454. 0A51BB4;
  6455. 00A51BBC;
  6456. 0A51BC0;
  6457. 0A51BC4;
  6458. 0A51BC8;
  6459. 0A51BD0;
  6460. 00A51BD4;
  6461. 0A51BEC;
  6462. 00A51BF8;
  6463.  
  6464.  
  6465. //texture freeze protection
  6466. //0x12D30D8 = 0x60000000;
  6467. //0x12D3118 = 0x60000000;
  6468.  
  6469.  
  6470.  
  6471.  
  6472.  
  6473. /*
  6474. Rage::Import
  6475. 0xD095A365
  6476. platform:/levels/gta5/scenario/Alamo_Sea.cmt
  6477. 1
  6478. 0
  6479. 1
  6480. 0
  6481.  
  6482.  
  6483. 0xD09A5563
  6484. platform:/levels/gta5/streaming/ah_1_int_srl.cmt
  6485. 1
  6486. ah_1_int_srl.cmt
  6487. 0
  6488. 1
  6489.  
  6490. 0xD09EA573
  6491. dlcMPHeist:/ps3/levels/gta5/streaming/heist_int_srl.cmt
  6492. 1
  6493. heist_int_srl.cmt
  6494. 0
  6495. 1
  6496. */
  6497.  
  6498.  
  6499.  
  6500.  
  6501.  
  6502.  
  6503.  
  6504.  
  6505. //using sc features with out being in game
  6506.                 //make a post respones
  6507.                 // https://socialclub.rockstargames.com/crew/crew_message
  6508.                 // {"crewId":39499191,"message":"hello world","nickname":""}
  6509.  
  6510.  
  6511.  
  6512.  
  6513.  
  6514.  
  6515.  
  6516.  
  6517.  
  6518.  
  6519.  
  6520.  
  6521.  
  6522.  
  6523.  
  6524.  
  6525.  
  6526.  
  6527.  
  6528.  
  6529.     static size_t _wcslen(const wchar_t *s)
  6530.     {
  6531.         const wchar_t *p;
  6532.  
  6533.         p = s;
  6534.         while (*p)
  6535.             p++;
  6536.  
  6537.         return p - s;
  6538.     }
  6539.     static int _wcslen(char *str)
  6540.     {
  6541.         int nullCount = 0;
  6542.         int i = 0;
  6543.         for (i = 0; i < 64; i++)
  6544.         {
  6545.             if (nullCount == 2)
  6546.             {
  6547.                 break;
  6548.             }
  6549.             if (*(str + i) == 0x00)
  6550.             {
  6551.                 nullCount++;
  6552.             }
  6553.             else
  6554.             {
  6555.                 nullCount = 0;
  6556.             }
  6557.         }
  6558.         return i;
  6559.     }
  6560.     static size_t StringToWideCharacter(wchar_t *dest, const char *scr, size_t len)
  6561.     {
  6562.         int count = 0;
  6563.         if (len)
  6564.         {
  6565.             do
  6566.             {
  6567.                 if ((*dest++ = (wchar_t)*scr++) == 0)
  6568.                     break;
  6569.                 count++;
  6570.             } while (--len);
  6571.         }
  6572.         return count;
  6573.     }
  6574.     static size_t WideCharacterToString(char *dest, const wchar_t *scr, size_t len)
  6575.     {
  6576.         int count = 0;
  6577.         if (len)
  6578.         {
  6579.             do
  6580.             {
  6581.                 if ((*dest++ = (char)*scr++) == 0)
  6582.                     break;
  6583.                 count++;
  6584.             } while (--len);
  6585.         }
  6586.         return count;
  6587.     }
  6588.  
  6589.  
  6590.  
  6591.  
  6592.  
  6593. //#define InitializeCriticalSection(lpCriticalSection) pthread_mutex_init(lpCriticalSection, NULL)
  6594. //#define DeleteCriticalSection(lpCriticalSection) pthread_mutex_destroy(lpCriticalSection)
  6595. //#define EnterCriticalSection(lpCriticalSection) pthread_mutex_lock(lpCriticalSection)
  6596. //#define LeaveCriticalSection(lpCriticalSection) pthread_mutex_unlock(lpCriticalSection)
  6597. //pthread_mutex_t DetourAsmSection;
  6598.  
  6599. //#define InitializeCriticalSection(lpCriticalSection) sys_lwmutex_create(lpCriticalSection, NULL)
  6600. //#define DeleteCriticalSection(lpCriticalSection) sys_lwmutex_destroy(lpCriticalSection)
  6601. //#define EnterCriticalSection(lpCriticalSection) sys_lwmutex_lock(lpCriticalSection, 0)
  6602. //#define LeaveCriticalSection(lpCriticalSection) sys_lwmutex_unlock(lpCriticalSection)
  6603. //sys_lwmutex_t DetourAsmSection;
  6604.  
  6605.  
  6606.  
  6607.  
  6608.  
  6609.  
  6610.  
  6611.  
  6612.  
  6613.  
  6614.  
  6615.  
  6616.  
  6617.  
  6618.  
  6619.  
  6620.  
  6621. int32_t sub_A5660C(int32_t a1)
  6622. {
  6623.     int32_t v1 = __savegprlr_26(); // 0x150AA7C
  6624.     int32_t v2 = v1;
  6625.     int32_t * v3 = (int32_t *)(v1 + 140);
  6626.     uint32_t v4 = *v3;
  6627.     if (v4 >= 1)
  6628.     {
  6629.         int32_t v5 = v4 - *(int32_t *)0x1EC673C;
  6630.         *v3 = v5 < 0 ? 0 : v5;
  6631.         v1 = v2;
  6632.     }
  6633.     int32_t v6 = *(int32_t *)(v1 + 52);
  6634.     int32_t v7;
  6635.     int32_t v8;
  6636.     int32_t v9;
  6637.     int32_t v10;
  6638.     int32_t v11;
  6639.     int32_t v12;
  6640.     int32_t v13;
  6641.     int32_t v14;
  6642.     int32_t result2;
  6643.     int32_t result;
  6644.     int32_t result3;
  6645.     int32_t v15;
  6646.     int32_t v16;
  6647.     int32_t v17;
  6648.     int32_t v18;
  6649.     int32_t v19;
  6650.     int32_t v20;
  6651.     int32_t v21;
  6652.     if (v6 == 0)
  6653.     {
  6654.         result = __asm_rlwinm((int32_t)*(char *)(v1 + 173), 30, 31, 31);
  6655.         if (result == 0)
  6656.         {
  6657.             return 0;
  6658.         }
  6659.         v11 = v2;
  6660.         v17 = *(int32_t *)(v11 + 28);
  6661.         if (v17 == 0)
  6662.         {
  6663.             return result;
  6664.         }
  6665.         v18 = *(int32_t *)(v17 + 8);
  6666.         if (v18 == 0)
  6667.         {
  6668.             v13 = v11;
  6669.             if (*(int32_t *)(v17 + 8) != 0)
  6670.             {
  6671.                 v20 = *(int32_t *)(v13 + 140);
  6672.                 if (v20 == 0)
  6673.                 {
  6674.                     int32_t l_var = sub_15BA0E4(v20);
  6675.                     v21 = *(int32_t *)(v13 + 28);
  6676.                     v7 = 0;
  6677.                     if (v21 != 0)
  6678.                     {
  6679.                         v7 = *(int32_t *)(v21 + 8);
  6680.                     }
  6681.                     v15 = &v8;
  6682.                     sub_A8B814(v15);
  6683.                     v16 = &v9;
  6684.                     sub_A8B908(v15, v16, 982);
  6685.                     if (aub_1626844(*(int32_t *)0x1EC69C8, v15) == 0)
  6686.                     {
  6687.                         sub_46E30C(l_var, unk);
  6688.                     }
  6689.                     else
  6690.                     {
  6691.                         sub_A8B978(v15);
  6692.                         v14 = sub_9F8E10();
  6693.                         sub_9F8FF0(v14, v7, v16, 1, (int32_t)&v10, 0);
  6694.                     }
  6695.                     *(int32_t *)(v2 + 140) = 250;
  6696.                     result2 = 250;
  6697.                 }
  6698.                 else
  6699.                 {
  6700.                     result2 = v20;
  6701.                 }
  6702.             }
  6703.             else
  6704.             {
  6705.                 result2 = 0;
  6706.             }
  6707.             return result2;
  6708.         }
  6709.         result3 = aub_9F8FD8(v18);
  6710.         v12 = v2;
  6711.         v19 = *(int32_t *)(v12 + 28);
  6712.         if (result3 != 0 || v19 == 0)
  6713.         {
  6714.             return result3;
  6715.         }
  6716.         v13 = v12;
  6717.         if (*(int32_t *)(v19 + 8) != 0)
  6718.         {
  6719.             v20 = *(int32_t *)(v13 + 140);
  6720.             if (v20 == 0)
  6721.             {
  6722.                 v21 = *(int32_t *)(v13 + 28);
  6723.                 v7 = 0;
  6724.                 if (v21 != 0)
  6725.                 {
  6726.                     v7 = *(int32_t *)(v21 + 8);
  6727.                 }
  6728.                 v15 = &v8;
  6729.                 sub_A8B814(v15);
  6730.                 v16 = &v9;
  6731.                 sub_A8B908(v15, v16, 982);
  6732.                 if (sub_1626844(*(int32_t *)0x1EC69C8, v15) == 0)
  6733.                 {
  6734.  
  6735.                 }
  6736.                 else
  6737.                 {
  6738.                     sub_A8B978(v15);
  6739.                     v14 = sub_9F8E10();
  6740.                     sub_9F8FF0(v14, v7, v16, 1, (int32_t)&v10, 0);
  6741.                 }
  6742.                 *(int32_t *)(v2 + 140) = 250;
  6743.                 result2 = 250;
  6744.             }
  6745.             else
  6746.             {
  6747.                 result2 = v20;
  6748.             }
  6749.         }
  6750.         else
  6751.         {
  6752.             result2 = 0;
  6753.         }
  6754.         return result2;
  6755.     }
  6756.     if (sub_9D8FD8(v6) != 0)
  6757.     {
  6758.         int32_t result4 = *(int32_t *)(v2 + 12);
  6759.         if (result4 != 0)
  6760.         {
  6761.             return result4;
  6762.         }
  6763.         int32_t v22 = (int32_t)*(char *)(v2 + 173);
  6764.         if (__asm_rlwinm(v22, 31, 31, 31) == 0)
  6765.         {
  6766.             int32_t v23 = __asm_rlwinm(v22, 25, 31, 31);
  6767.             if (v23 == 0)
  6768.             {
  6769.                 result2 = v2;
  6770.             }
  6771.             else
  6772.             {
  6773.                 result2 = v23;
  6774.             }
  6775.         }
  6776.         else
  6777.         {
  6778.             int32_t v24 = *(int32_t *)(v2 + 140);
  6779.             if (v24 == 0)
  6780.             {
  6781.                 if (*(int32_t *)(*(int32_t *)0x1CC57B8 + 36) != 0)
  6782.                 {
  6783.                     int32_t l_var = sub_15BA0E4(a1 + 4);
  6784.                     sub_46E098(l_var);
  6785.                 }
  6786.                 *(int32_t *)(v2 + 52) = 0;
  6787.                 result2 = sub_A563E4(v2, 0);
  6788.             }
  6789.             else
  6790.             {
  6791.                 result2 = v24;
  6792.             }
  6793.         }
  6794.         return result2;
  6795.     }
  6796.     result = __asm_rlwinm((int32_t)*(char *)(v2 + 173), 30, 31, 31);
  6797.     if (result == 0)
  6798.     {
  6799.         return 0;
  6800.     }
  6801.     v11 = v2;
  6802.     v17 = *(int32_t *)(v11 + 28);
  6803.     if (v17 == 0)
  6804.     {
  6805.         //return sub_483F50(r3, r4, r5, r6, r7, r8);
  6806.     }
  6807.     v18 = *(int32_t *)(v17 + 8);
  6808.     if (v18 == 0)
  6809.     {
  6810.         v13 = v11;
  6811.         if (*(int32_t *)(v17 + 8) != 0)
  6812.         {
  6813.             v20 = *(int32_t *)(v13 + 140);
  6814.             if (v20 == 0)
  6815.             {
  6816.                 v21 = *(int32_t *)(v13 + 28);
  6817.                 v7 = 0;
  6818.                 if (v21 != 0)
  6819.                 {
  6820.                     v7 = *(int32_t *)(v21 + 8);
  6821.                 }
  6822.                 v15 = &v8;
  6823.                 sub_A8B814(v15);
  6824.                 v16 = &v9;
  6825.                 sub_A8B908(v15, v16, 982);
  6826.                 if (sub_1626844(*(int32_t *)0x1EC69C8, v15) == 0)
  6827.                 {
  6828.  
  6829.                 }
  6830.                 else
  6831.                 {
  6832.                     sub_A8B978(v15);
  6833.                     v14 = sub_9F8E10();
  6834.                     sub_9F8FF0(v14, v7, v16, 1, (int32_t)&v10, 0);
  6835.                 }
  6836.                 *(int32_t *)(v2 + 140) = 250;
  6837.                 result2 = 250;
  6838.             }
  6839.             else
  6840.             {
  6841.                 result2 = v20;
  6842.             }
  6843.         }
  6844.         else
  6845.         {
  6846.             result2 = 0;
  6847.         }
  6848.     }
  6849.     else
  6850.     {
  6851.         result3 = sub_9F8FD8(v18);
  6852.         v12 = v2;
  6853.         v19 = *(int32_t *)(v12 + 28);
  6854.         if (result3 == 0 && v19 != 0)
  6855.         {
  6856.             v13 = v12;
  6857.             if (*(int32_t *)(v19 + 8) != 0)
  6858.             {
  6859.                 v20 = *(int32_t *)(v13 + 140);
  6860.                 if (v20 == 0)
  6861.                 {
  6862.                     v21 = *(int32_t *)(v13 + 28);
  6863.                     v7 = 0;
  6864.                     if (v21 != 0)
  6865.                     {
  6866.                         v7 = *(int32_t *)(v21 + 8);
  6867.                     }
  6868.                     v15 = &v8;
  6869.                     sub_A8B814(v15);
  6870.                     v16 = &v9;
  6871.                     sub_A8B908(v15, v16, 982);
  6872.                     if (sub_1626844(*(int32_t *)0x1ec69c8, v15) == 0)
  6873.                     {
  6874.  
  6875.                     }
  6876.                     else
  6877.                     {
  6878.                         sub_A8B978(v15);
  6879.                         v14 = sub_9F8E10();
  6880.                         sub_9F8FF0(v14, v7, v16, 1, (int32_t)&v10, 0);
  6881.                     }
  6882.                     *(int32_t *)(v2 + 140) = 250;
  6883.                     result2 = 250;
  6884.                 }
  6885.                 else
  6886.                 {
  6887.                     result2 = v20;
  6888.                 }
  6889.             }
  6890.             else
  6891.             {
  6892.                 result2 = 0;
  6893.             }
  6894.         }
  6895.         else
  6896.         {
  6897.             result2 = result3;
  6898.         }
  6899.     }
  6900.     return result2;
  6901. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement