Advertisement
Guest User

myClient.php

a guest
Apr 14th, 2017
263
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 44.77 KB | None | 0 0
  1. <?php
  2.  
  3. // Put the path to your rabcdasm folder here
  4.     $PATH_TO_RABCDASM = "PATH/TO/RABCDASM/FOLDER";
  5.  
  6. // Check to see if the path to rabcdasm is real
  7.     if(!is_dir($PATH_TO_RABCDASM))
  8.     {
  9.         echo "\"{$PATH_TO_RABCDASM}\" does not exist!\n";
  10.         exit();
  11.     }
  12.  
  13.     $PATH_TO_RABCDASM = str_replace('\\','/',trim($PATH_TO_RABCDASM));
  14.     if(substr($PATH_TO_RABCDASM,-1) != '/') $PATH_TO_RABCDASM .= '/';
  15.  
  16.     if(!file_exists("{$PATH_TO_RABCDASM}abcexport.exe"))
  17.     {
  18.         echo "can not find abcexport.exe in your rabcdasm folder!\n";
  19.         exit();
  20.     }
  21.     if(!file_exists("{$PATH_TO_RABCDASM}rabcdasm.exe"))
  22.     {
  23.         echo "can not find rabcdasm.exe in your rabcdasm folder!\n";
  24.         exit();
  25.     }
  26.     if(!file_exists("{$PATH_TO_RABCDASM}rabcasm.exe"))
  27.     {
  28.         echo "can not find rabcasm.exe in your rabcdasm folder!\n";
  29.         exit();
  30.     }
  31.     if(!file_exists("{$PATH_TO_RABCDASM}abcreplace.exe"))
  32.     {
  33.         echo "can not find abcreplace.exe in your rabcdasm folder!\n";
  34.         exit();
  35.     }
  36.  
  37. // Make sure previous client-0 folder and abc file doesnt exist
  38.     if(is_dir("client-0"))
  39.     {
  40.         echo "deleting old rabcdasm data...";
  41.         recursiveDelete("client-0");
  42.         if(is_dir("client-0"))
  43.         {
  44.             echo "failed to delete old rabcdasm files (client-0 folder). Please delete folder and try again.\n";
  45.             exit();
  46.         }
  47.         else
  48.         {
  49.             echo "done.\n";
  50.         }
  51.     }
  52.     if(file_exists("client-0.abc"))
  53.     {
  54.         unlink("client-0.abc");
  55.     }
  56.  
  57. // Extract the ABC file from the client
  58.     echo "running client through abcexport...";
  59.     $output = shell_exec("{$PATH_TO_RABCDASM}abcexport.exe client.swf");
  60.     if (!file_exists("client-0.abc"))
  61.     {
  62.         echo "failed!\n";
  63.         echo $output . "\n";
  64.         exit();
  65.     }
  66.     echo "done.\n";
  67.     unset($output);
  68. // Decompile the abc file so we can edit the code
  69.     echo "disassembling abc file with rabcdasm.exe...";
  70.     $output = shell_exec("{$PATH_TO_RABCDASM}rabcdasm.exe client-0.abc");
  71.     if (!file_exists("client-0/client-0.main.asasm"))
  72.     {
  73.         echo "failed!\n";
  74.         echo $output . "\n";
  75.         exit();
  76.     }
  77.     echo "done.\n";
  78.     unset($output);
  79.  
  80. // Start adding hacks
  81.  
  82. // Open WebMain first and set scale mode/fps
  83.     echo "Editing WebMain...";
  84.     $webmain = file_get_contents("client-0/WebMain.class.asasm");
  85.  
  86.     $lines = explode("\n", $webmain);
  87.     $next = false;
  88.     $new = array();
  89.     $added = false;
  90.     foreach ($lines as $i => $line)
  91.     {
  92.     // Change "EXACT_FIT" to "NO_SCALE"
  93.         if (stripos($line, "EXACT_FIT") !== FALSE)
  94.         {
  95.             $line = str_replace("EXACT_FIT", "NO_SCALE", $line);
  96.             $next = true;
  97.         }
  98.     // Find a blank line, add in new command to set framerate to 60
  99.         if ($next && trim($line) == '' && $added == false)
  100.         {
  101.             $new[] = '';
  102.             $new[] = '      getlex              QName(PackageNamespace(""), "stage")';
  103.             $new[] = '      pushdouble          60';
  104.             $new[] = '      setproperty         QName(PackageNamespace(""), "frameRate")';
  105.             $added = true;
  106.         }
  107.         $new[] = $line;
  108.     }
  109.  
  110.     file_put_contents("client-0/WebMain.class.asasm", implode("\n", $new));
  111.     echo "Done.\n";
  112. // Add proxy server
  113.     echo "Editing ParseServerDataCommand...";
  114.     $parseserver = file_get_contents("client-0/kabam/rotmg/servers/control/ParseServerDataCommand.class.asasm");
  115.  
  116.     $lines = explode("\n", $parseserver);
  117.     $new = array();
  118.     $localHostServerAdded = false;
  119.     $makeListFound = false;
  120.     $makeListDone = false;
  121.     foreach ($lines as $line)
  122.     {
  123.     // Find the first function and inject the new function ahead of it
  124.         if (stripos($line, "trait method") !== FALSE && $localHostServerAdded == false)
  125.         {
  126.             $function = file_get_contents("data/LocalhostServer.data");
  127.             $func_lines = explode("\n", $function);
  128.             foreach($func_lines as $func)
  129.                 $new[] = $func;
  130.             $localHostServerAdded = true;
  131.         }
  132.     // Find the makeListOfServers method
  133.         if (stripos($line, "trait method") !== FALSE && stripos($line, "makeListOfServers") !== FALSE)
  134.         {
  135.             $makeListFound = true;
  136.         }
  137.     // Inject the code to add the proxy server at the end of the function
  138.         if ($makeListFound && stripos($line, "returnvalue") !== false && $makeListDone == false)
  139.         {
  140.             $new[] = '      getlocal0';
  141.             $new[] = '      callproperty        QName(PackageNamespace(""), "LocalhostServer"), 0';
  142.             $new[] = '      callpropvoid        QName(Namespace("http://adobe.com/AS3/2006/builtin"), "push"), 1';
  143.             $new[] = '';
  144.             $new[] = '      getlocal2';
  145.             $makeListDone = true;
  146.         }
  147.  
  148.         $new[] = $line;
  149.     }
  150.  
  151.     file_put_contents("client-0/kabam/rotmg/servers/control/ParseServerDataCommand.class.asasm", implode("\n", $new));
  152.     echo "Done\n";
  153. // Add all the hack parameters that the client uses
  154.     echo "Editing Parameters...";
  155.     $parameters = file_get_contents("client-0/com/company/assembleegameclient/parameters/Parameters.class.asasm");
  156.  
  157.     $lines = explode("\n", $parameters);
  158.     $new = array();
  159.     $setDefaultsFound = false;
  160.     $paramsAdded = false;
  161.     $maxstack = false;
  162.     foreach ($lines as $line)
  163.     {
  164.     // Look for the setDefaults function
  165.         if ($setDefaultsFound == false && stripos($line, "trait method") !== FALSE && stripos($line, "setDefaults") !== FALSE)
  166.         {
  167.             $setDefaultsFound = true;
  168.         }
  169.         if ($setDefaultsFound && $maxstack == false && stripos($line, "maxstack") !== FALSE)
  170.         {
  171.             $line = '    maxstack 84';
  172.             $maxstack = true;
  173.         }
  174.     // Add all of the data just before the returnvoid of setDefaults function
  175.         if ($setDefaultsFound && stripos($line, "returnvoid") !== FALSE && $paramsAdded == false)
  176.         {
  177.             $paramsData = file_get_contents("data/Parameters.data");
  178.             $params = explode("\n", $paramsData);
  179.             foreach ($params as $param)
  180.                 $new[] = $param;
  181.             $paramsAdded = true;
  182.         }
  183.         $new[] = $line;
  184.     }
  185.  
  186.     file_put_contents("client-0/com/company/assembleegameclient/parameters/Parameters.class.asasm", implode("\n", $new));
  187.     echo "Done\n";
  188. // Fullscreen mod
  189.  
  190. // Start with NexusBackground
  191.     echo "Editing NexusBackground...";
  192.     $background = file_get_contents("client-0/com/company/assembleegameclient/background/NexusBackground.class.asasm");
  193.  
  194.     $lines = explode("\n", $background);
  195.     $new = array();
  196.     $foundDraw = false;
  197.     $added = false;
  198.     $next = false;
  199.     foreach ($lines as $line)
  200.     {
  201.         if($next == true && $added == false && trim($line) != '')
  202.         {
  203.             $new[] = '      getlex              QName(PackageNamespace("com.company.assembleegameclient.parameters"), "Parameters")';
  204.             $new[] = '      getproperty         QName(PackageNamespace(""), "data_")';
  205.             $new[] = '      getproperty         QName(PackageNamespace(""), "fullscreen")';
  206.             $new[] = '      iffalse             LSKIP';
  207.             $new[] = '';
  208.             $new[] = '      returnvoid';
  209.             $new[] = '';
  210.             $new[] = 'LSKIP:';
  211.             $added = true;
  212.         }
  213.         if ($foundDraw == false && stripos($line, "trait method") !== FALSE && stripos($line, "draw") !== FALSE && stripos($line, "OVERRIDE") !== FALSE)
  214.         {
  215.             $foundDraw = true;
  216.         }
  217.         if($foundDraw && $added == false && stripos($line, "pushscope") !== FALSE && $next == false)
  218.         {
  219.             $next = true;
  220.         }
  221.         $new[] = $line;
  222.     }
  223.  
  224.     file_put_contents("client-0/com/company/assembleegameclient/background/NexusBackground.class.asasm", implode("\n", $new));
  225.     echo "Done\n";
  226. // Now remove the black on the screen in Face3D
  227.     echo "Editing Face3D...";
  228.     $face = file_get_contents("client-0/com/company/assembleegameclient/engine3d/Face3D.class.asasm");
  229.  
  230.     $lines = explode("\n", $face);
  231.     $new = array();
  232.     $foundDraw = false;
  233.     $added = false;
  234.     foreach ($lines as $line)
  235.     {
  236.         if ($foundDraw == false && stripos($line, "trait method") !== FALSE && stripos($line, "draw") !== FALSE)
  237.         {
  238.             $foundDraw = true;
  239.         }
  240.         if($added == false && $foundDraw && stripos($line, "pushtrue") !== FALSE)
  241.         {
  242.             $new[] = '      getlex              QName(PackageNamespace("com.company.assembleegameclient.parameters"), "Parameters")';
  243.             $new[] = '      getproperty         QName(PackageNamespace(""), "data_")';
  244.             $new[] = '      getproperty         QName(PackageNamespace(""), "fullscreen")';
  245.             $new[] = '      iftrue              LFALSE';
  246.             $new[] = '';
  247.             $new[] = '      pushtrue';
  248.             $new[] = '      jump                LEND';
  249.             $new[] = '';
  250.             $new[] = 'LFALSE:';
  251.             $new[] = '      pushfalse';
  252.         // Change the original line so it can still be added like normal
  253.             $line = 'LEND:';
  254.             $added = true;
  255.         }
  256.         $new[] = $line;
  257.     }
  258.  
  259.     file_put_contents("client-0/com/company/assembleegameclient/engine3d/Face3D.class.asasm", implode("\n", $new));
  260.     echo "Done\n";
  261. // Next we have to edit Camera to change the view distance
  262.     echo "Editing Camera...";
  263.     $camera = file_get_contents("client-0/com/company/assembleegameclient/map/Camera.class.asasm");
  264.  
  265.     $lines = explode("\n", $camera);
  266.     $new = array();
  267.     $added = false;
  268.     foreach ($lines as $line)
  269.     {
  270.         if ($added == false && stripos($line, "initproperty") !== FALSE && stripos($line, "maxDist_") !== FALSE)
  271.         {
  272.         // Remove last 2 lines
  273.             $new = array_slice($new, 0, -2);
  274.         // Add change
  275.             $new[] = '      getlex              QName(PackageNamespace("com.company.assembleegameclient.parameters"), "Parameters")';
  276.             $new[] = '      getproperty         QName(PackageNamespace(""), "data_")';
  277.             $new[] = '      getproperty         QName(PackageNamespace(""), "fullscreen")';
  278.             $new[] = '      iftrue              LBIG';
  279.             $new[] = '      pushbyte            1';
  280.             $new[] = '      jump                LADD';
  281.             $new[] = 'LBIG:';
  282.             $new[] = '      pushbyte            16';
  283.             $new[] = 'LADD:';
  284.             $new[] = '      add';
  285.             $added = true;
  286.         }
  287.         $new[] = $line;
  288.     }
  289.  
  290.     file_put_contents("client-0/com/company/assembleegameclient/map/Camera.class.asasm", implode("\n", $new));
  291.     echo "Done\n";
  292. // Fix the position of the gradientOverlay
  293.     echo "Editing Map...";
  294.     $map = file_get_contents("client-0/com/company/assembleegameclient/map/Map.class.asasm");
  295.  
  296.     $lines = explode("\n", $map);
  297.     $new = array();
  298.     $added = false;
  299.     $foundDraw = false;
  300.     $foundOverlay = false;
  301.     $flag1 = false;
  302.     $remove = 0;
  303.     foreach ($lines as $line)
  304.     {
  305.         if ($foundDraw == false && stripos($line, "trait method") !== FALSE && stripos($line, "draw") !== FALSE && stripos($line, "OVERRIDE") !== FALSE)
  306.         {
  307.             $foundDraw = true;
  308.         }
  309.         if ($foundDraw && $foundOverlay == false && stripos($line, "gradientOverlay_") !== false)
  310.         {
  311.             $foundOverlay = true;
  312.             $remove = 0;
  313.         }
  314.         if ($foundOverlay && $flag1 == false)
  315.         {
  316.             if (stripos($line, "jump") !== false)
  317.             {
  318.                 $flag1 = true;
  319.             }
  320.             else
  321.             {
  322.                 $remove++;
  323.             }
  324.         }
  325.         if ($added == false && $foundDraw && $foundOverlay && $flag1)
  326.         {
  327.             $new = array_slice($new, 0, ($remove * -1));
  328.             $overlayData = file_get_contents("data/GradientOverlay.data");
  329.             $overlayLines = explode("\n", $overlayData);
  330.             foreach ($overlayLines as $overlay)
  331.                 $new[] = $overlay;
  332.             $added = true;
  333.         }
  334.         $new[] = $line;
  335.     }
  336.  
  337.     file_put_contents("client-0/com/company/assembleegameclient/map/Map.class.asasm", implode("\n", $new));
  338.     echo "Done\n";
  339. // Last fullscreen change, GameSprite
  340.     echo "Editing GameSprite...";
  341.     $sprite = file_get_contents("client-0/com/company/assembleegameclient/game/GameSprite.class.asasm");
  342.  
  343.     $lines = explode("\n", $sprite);
  344.     $new = array();
  345.     $addedResize = false;
  346.     $initializeFound = false;
  347.     $initAdded = false;
  348.     $connectFound = false;
  349.     $connectFlag1 = false;
  350.     $connectModified = false;
  351.     $disconnectFound = false;
  352.     $disconnectFlag1 = false;
  353.     $disconnectModified = false;
  354.     foreach ($lines as $line)
  355.     {
  356.     // Add resize function
  357.         if ($addedResize == false && stripos($line, "trait method") !== FALSE)
  358.         {
  359.             $function = file_get_contents("data/ScreenResize.data");
  360.             $func_lines = explode("\n", $function);
  361.             foreach($func_lines as $func)
  362.                 $new[] = $func;
  363.             $addedResize = true;
  364.         }
  365.         if ($initializeFound == false && stripos($line, "trait method") !== FALSE && stripos($line, "initialize") !== FALSE && stripos($line, "OVERRIDE") !== FALSE)
  366.         {
  367.             $initializeFound = true;
  368.         }
  369.         if ($initializeFound && $initAdded == false && stripos($line, "returnvoid") !== FALSE)
  370.         {
  371.             $new[] = '      getlex              QName(PackageNamespace("", "com.company.assembleegameclient.game:GameSprite/instance#0"), "stage")';
  372.             $new[] = '      findpropstrict      QName(PackageNamespace("flash.events"), "Event")';
  373.             $new[] = '      getlex              QName(PackageNamespace("flash.events"), "Event")';
  374.             $new[] = '      getproperty         QName(PackageNamespace("", "com.company.assembleegameclient.game:GameSprite/instance#1"), "RESIZE")';
  375.             $new[] = '      constructprop       QName(PackageNamespace("flash.events"), "Event"), 1';
  376.             $new[] = '      callpropvoid        QName(PackageNamespace("", "com.company.assembleegameclient.game:GameSprite/instance#0"), "dispatchEvent"), 1';
  377.             $new[] = '';
  378.             $initAdded = true;
  379.         }
  380.         if ($connectFound == false && stripos($line, "trait method") !== FALSE && stripos($line, "\"connect\"") !== FALSE)
  381.         {
  382.             $connectFound = true;
  383.         }
  384.         if ($connectFound && $connectFlag1 == false && $connectModified == false && stripos($line, "onMoneyChanged") !== FALSE)
  385.         {
  386.             $connectFlag1 = true;
  387.         }
  388.         if ($connectFound && $connectFlag1 && $connectModified == false && trim($line) == '')
  389.         {
  390.             $function = file_get_contents("data/SpriteConnect.data");
  391.             $func_lines = explode("\n", $function);
  392.             foreach($func_lines as $func)
  393.                 $new[] = $func;
  394.             $connectModified = true;
  395.         }
  396.         if ($disconnectFound == false && stripos($line, "trait method") !== FALSE && stripos($line, "\"disconnect\"") !== FALSE)
  397.         {
  398.             $disconnectFound = true;
  399.         }
  400.         if ($disconnectFound && $disconnectFlag1 == false && $disconnectModified == false && stripos($line, "onMoneyChanged") !== FALSE)
  401.         {
  402.             $disconnectFlag1 = true;
  403.         }
  404.         if ($disconnectFound && $disconnectFlag1 && $disconnectModified == false && trim($line) == '')
  405.         {
  406.             $function = file_get_contents("data/SpriteDisconnect.data");
  407.             $func_lines = explode("\n", $function);
  408.             foreach($func_lines as $func)
  409.                 $new[] = $func;
  410.             $disconnectModified = true;
  411.         }
  412.  
  413.         $new[] = $line;
  414.     }
  415.  
  416.     file_put_contents("client-0/com/company/assembleegameclient/game/GameSprite.class.asasm", implode("\n", $new));
  417.     echo "Done\n";
  418.  
  419.  
  420. // Edit the options menu
  421.     echo "Editing Options menu...";
  422.     $options = file_get_contents("client-0/com/company/assembleegameclient/ui/options/Options.class.asasm");
  423.  
  424.     $lines = explode("\n", $options);
  425.     $new = array();
  426.     $flag1 = false;
  427.     $flag2 = false;
  428.     $added1 = false;
  429.     $remove = 0;
  430.     $added2 = false;
  431.     $flag3 = false;
  432.     $flag4 = false;
  433.     $added3 = false;
  434.     $flag5 = false;
  435.     $flag6 = false;
  436.     $flag7 = false;
  437.     $added4 = false;
  438.     $added5 = false;
  439.     $flag8 = false;
  440.     $flag9 = false;
  441.     $flag10 = false;
  442.     $added6 = false;
  443.     foreach ($lines as $line)
  444.     {
  445.     // First part here is to fix the tab display
  446.         if ($flag1 == false && stripos($line, "setlocal3") !== false)
  447.         {
  448.             $flag1 = true;
  449.         }
  450.         if ($flag1 && $flag2 == false)
  451.         {
  452.             if (stripos($line, "findpropstrict") !== false && stripos($line, "addEventListener") !== false)
  453.             {
  454.                 $flag2 = true;
  455.             }
  456.             else
  457.             {
  458.                 $remove++;
  459.             }
  460.         }
  461.         if ($flag1 && $flag2 && $added1 == false)
  462.         {
  463.             $new = array_slice($new, 0, ($remove * -1));
  464.             $function = file_get_contents("data/Options.data");
  465.             $func_lines = explode("\n", $function);
  466.             foreach($func_lines as $func)
  467.                 $new[] = $func;
  468.             $added1 = true;
  469.         }
  470.     // Add MakeAutoAimModeLabels function
  471.         if ($added2 == false && stripos($line, "end ; class") !== false)
  472.         {
  473.             $function = file_get_contents("data/MakeAAModeLabels.data");
  474.             $func_lines = explode("\n", $function);
  475.             foreach($func_lines as $func)
  476.                 $new[] = $func;
  477.             $added2 = true;
  478.         }
  479.     // Overwrite the setSelected function
  480.         if ($flag3 == false && stripos($line, "trait method") !== FALSE && stripos($line, "setSelected") !== FALSE)
  481.         {
  482.             $flag3 = true;
  483.             $remove = 0;
  484.         }
  485.         if ($flag3 && $flag4 == false)
  486.         {
  487.             if (stripos($line, "end ; trait") !== false)
  488.             {
  489.                 $flag4 = true;
  490.             }
  491.             else
  492.             {
  493.                 $remove++;
  494.             }
  495.         }
  496.         if ($flag3 && $flag4 && $added3 == false)
  497.         {
  498.             $new = array_slice($new, 0, ($remove * -1));
  499.             $function = file_get_contents("data/SetSelected.data");
  500.             $func_lines = explode("\n", $function);
  501.             foreach($func_lines as $func)
  502.                 $new[] = $func;
  503.             $added3 = true;
  504.         }
  505.     // Fix the position of the buttons at the bottom
  506.         if ($flag5 == false && stripos($line, "trait method") !== FALSE && stripos($line, "onAddedToStage") !== FALSE)
  507.         {
  508.             $flag5 = true;
  509.         }
  510.         if ($flag5 && $flag6 == false && stripos($line, "continueButton_") !== FALSE)
  511.         {
  512.             $flag6 = true;
  513.             $remove = 0;
  514.         }
  515.         if ($flag5 && $flag6 && $flag7 == false)
  516.         {
  517.             if(stripos($line, "Capabilities") !== FALSE)
  518.             {
  519.                 $flag7 = true;
  520.             }
  521.             else
  522.             {
  523.                 $remove++;
  524.             }
  525.         }
  526.         if ($flag5 && $flag6 && $flag7 && $added4 == false)
  527.         {
  528.             $new = array_slice($new, 0, ($remove * -1));
  529.             $function = file_get_contents("data/OnAddedToStage.data");
  530.             $func_lines = explode("\n", $function);
  531.             foreach($func_lines as $func)
  532.                 $new[] = $func;
  533.             $added4 = true;
  534.         }
  535.     // Add all the control functions
  536.         if ($added5 == false && stripos($line, "end ; instance") !== false)
  537.         {
  538.             $function = file_get_contents("data/OptionsControls.data");
  539.             $func_lines = explode("\n", $function);
  540.             foreach($func_lines as $func)
  541.                 $new[] = $func;
  542.             $added5 = true;
  543.         }
  544.     // Add all of the different tab option values
  545.         if ($flag8 == false && stripos($line, "refid \"com.company.assembleegameclient.ui.options:Options/class/init\"") !== false)
  546.         {
  547.             $flag8 = true;
  548.         }
  549.         if ($flag8 && $flag9 == false && stripos($line, "initscopedepth") !== false)
  550.         {
  551.             $flag9 = true;
  552.             $remove = 0;
  553.         }
  554.         if ($flag8 && $flag9 && $flag10 == false)
  555.         {
  556.             if (stripos($line, "initproperty") !== false && stripos($line, "TABS") !== false)
  557.             {
  558.                 $flag10 = true;
  559.             }
  560.             else
  561.             {
  562.                 $remove++;
  563.             }
  564.         }
  565.         if ($flag8 && $flag9 && $flag10 && $added6 == false)
  566.         {
  567.             $new = array_slice($new, 0, ($remove * -1));
  568.             $function = file_get_contents("data/OptionsTabs.data");
  569.             $func_lines = explode("\n", $function);
  570.             foreach($func_lines as $func)
  571.                 $new[] = $func;
  572.             $added6 = true;
  573.         }
  574.  
  575.         $new[] = $line;
  576.     }
  577.     file_put_contents("client-0/com/company/assembleegameclient/ui/options/Options.class.asasm", implode("\n", $new));
  578.     echo "done.\n";
  579. // Part of the options menu is also modifying the ChoiceOption class
  580.     echo "Editing ChoiceOption...";
  581.     $choice = file_get_contents("client-0/com/company/assembleegameclient/ui/options/ChoiceOption.class.asasm");
  582.  
  583.     $lines = explode("\n", $choice);
  584.     $new = array();
  585.     $added1 = false;
  586.     $added2 = false;
  587.     $added3 = false;
  588.     $added4 = false;
  589.     $added5 = false;
  590.     foreach ($lines as $line)
  591.     {
  592.         if ($added1 == false && stripos($line, 'flag HAS_OPTIONAL') !== false)
  593.         {
  594.             $new[] = '   param QName(PackageNamespace(""), "Boolean")';
  595.             $added1 = true;
  596.         }
  597.         if ($added2 == false && stripos($line, "optional Integer(16777215)") !== false)
  598.         {
  599.             $new[] = '   optional Integer(16777215)';
  600.             $line = '   optional False()';
  601.             $added2 = true;
  602.         }
  603.         if ($added3 == false && stripos($line, "localcount") !== false)
  604.         {
  605.             $line = '    localcount 9';
  606.             $added3 = true;
  607.         }
  608.         if ($added4 == false && stripos($line, "returnvoid") !== false)
  609.         {
  610.             $new[] = '     getlocal0';
  611.             $new[] = '     getlocal            8';
  612.             $new[] = '     callpropvoid        QName(PackageNamespace(""), "setDisabled"), 1';
  613.             $new[] = '';
  614.             $added4 = true;
  615.         }
  616.         if ($added5 == false && stripos($line, "end ; instance") !== false)
  617.         {
  618.             $function = file_get_contents("data/ChoiceOption.data");
  619.             $func_lines = explode("\n", $function);
  620.             foreach($func_lines as $func)
  621.                 $new[] = $func;
  622.             $added5 = true;
  623.         }
  624.  
  625.         $new[] = $line;
  626.     }
  627.  
  628.     file_put_contents("client-0/com/company/assembleegameclient/ui/options/ChoiceOption.class.asasm", implode("\n", $new));
  629.     echo "done.\n";
  630.  
  631.  
  632. // Edit PlayerToolTip
  633.     echo "Editing PlayerToolTIp...";
  634.     file_put_contents("client-0/com/company/assembleegameclient/ui/tooltip/PlayerToolTip.class.asasm", file_get_contents("data/PlayerToolTip.data"));
  635.     echo "done.\n";
  636.  
  637. // Edit PortraitToolTIp
  638.     echo "Editing PortraitToolTIp...";
  639.     file_put_contents("client-0/com/company/assembleegameclient/ui/tooltip/PortraitToolTip.class.asasm", file_get_contents("data/PortraitToolTip.data"));
  640.     echo "done.\n";
  641.  
  642. // Edit QuestToolTip
  643.     echo "Editing QuestToolTip...";
  644.     file_put_contents("client-0/com/company/assembleegameclient/ui/tooltip/QuestToolTip.class.asasm", file_get_contents("data/QuestToolTip.data"));
  645.     echo "done.\n";
  646.  
  647. // Edit StatsView to show other people stats
  648.     echo "Editing StatsView...";
  649.     $stats = file_get_contents("client-0/kabam/rotmg/game/view/components/StatsView.class.asasm");
  650.  
  651.     $lines = explode("\n", $stats);
  652.     $new = array();
  653.     $added1 = false;
  654.     foreach ($lines as $line)
  655.     {
  656.         if ($added1 == false && stripos($line, "end ; instance") !== false)
  657.         {
  658.             $new[] = '  trait slot QName(PackageNamespace(""), "myPlayer") type QName(PackageNamespace(""), "Boolean") end';
  659.             $new[] = '  trait slot QName(PackageNamespace(""), "altPlayer") type QName(PackageNamespace("com.company.assembleegameclient.objects"), "Player") end';
  660.             $added1 = true;
  661.         }
  662.         $new[] = $line;
  663.     }
  664.     file_put_contents("client-0/kabam/rotmg/game/view/components/StatsView.class.asasm", implode("\n", $new));
  665.     echo "done.\n";
  666.  
  667. // Edit StatsMediator to show other people stats
  668.     echo "Editing StatsMediator...";
  669.     $mediator = file_get_contents("client-0/kabam/rotmg/game/view/components/StatsMediator.class.asasm");
  670.  
  671.     $lines = explode("\n", $mediator);
  672.     $new = array();
  673.     $flag1 = false;
  674.     $added1 = false;
  675.     foreach ($lines as $line)
  676.     {
  677.         if ($flag1 == false && stripos($line, "trait method") !== false && stripos($line, "onUpdateHUD") !== false)
  678.         {
  679.             $flag1 = true;
  680.         }
  681.         if ($flag1 && $added1 == false && stripos($line, "getproperty") !== false && stripos($line, "view") !== false)
  682.         {
  683.             $new[] = '      getproperty         QName(PackageNamespace(""), "view")';
  684.             $new[] = '      getproperty         QName(PackageNamespace(""), "myPlayer")';
  685.             $new[] = '      pushfalse';
  686.             $new[] = '      ifne                LSKIP';
  687.             $new[] = '';
  688.             $new[] = '      returnvoid';
  689.             $new[] = '';
  690.             $new[] = 'LSKIP:';
  691.             $new[] = '      getlocal0';
  692.             $added1 = true;
  693.         }
  694.         $new[] = $line;
  695.     }
  696.     file_put_contents("client-0/kabam/rotmg/game/view/components/StatsMediator.class.asasm", implode("\n", $new));
  697.     echo "done.\n";
  698.  
  699. // Edit StatsTabContent to show other people stats
  700.     echo "Editing StatsTabContent...";
  701.     $stats = file_get_contents("client-0/kabam/rotmg/game/view/components/StatsTabContent.class.asasm");
  702.  
  703.     $lines = explode("\n", $stats);
  704.     $new = array();
  705.     $added1 = false;
  706.     foreach ($lines as $line)
  707.     {
  708.         if ($added1 == false && stripos($line, "returnvoid") !== false)
  709.         {
  710.             $new[] = '     getlocal0';
  711.             $new[] = '     getproperty         QName(PrivateNamespace(null, "kabam.rotmg.game.view.components:StatsTabContent/instance"), "stats")';
  712.             $new[] = '     pushtrue';
  713.             $new[] = '     setproperty         QName(PackageNamespace(""), "myPlayer")';
  714.             $new[] = '';
  715.             $added1 = true;
  716.         }
  717.         $new[] = $line;
  718.     }
  719.     file_put_contents("client-0/kabam/rotmg/game/view/components/StatsTabContent.class.asasm", implode("\n", $new));
  720.     echo "done.\n";
  721.  
  722. // Edit ParseChatMessageCommand to accept autoaim commands
  723.     echo "Editing ParseChatMessageCommand...";
  724.     file_put_contents("client-0/kabam/rotmg/chat/control/ParseChatMessageCommand.class.asasm", file_get_contents("data/ParseChatMessageCommand.data"));
  725.     echo "done.\n";
  726.  
  727. // Edit TextHandler to block spam
  728.     echo "Editing TextHandler...";
  729.     $handler = file_get_contents("client-0/kabam/rotmg/chat/control/TextHandler.class.asasm");
  730.  
  731.     $lines = explode("\n", $handler);
  732.     $new = array();
  733.     $flag1 = false;
  734.     $flag2 = false;
  735.     $added1 = false;
  736.     foreach ($lines as $line)
  737.     {
  738.     // Replace the update function
  739.         if ($flag1 == false && stripos($line, "trait method") !== FALSE && stripos($line, "execute") !== FALSE)
  740.         {
  741.             $flag1 = true;
  742.             $remove = 0;
  743.         }
  744.         if ($flag1 && $flag2 == false)
  745.         {
  746.             if (stripos($line, "trait method") !== false && stripos($line, "isSpecialRecipientChat") !== false)
  747.             {
  748.                 $flag2 = true;
  749.             }
  750.             else
  751.             {
  752.                 $remove++;
  753.             }
  754.         }
  755.         if ($flag1 && $flag2 && $added1 == false)
  756.         {
  757.             $new = array_slice($new, 0, ($remove * -1));
  758.             $function = file_get_contents("data/TextHandler.data");
  759.             $func_lines = explode("\n", $function);
  760.             foreach($func_lines as $func)
  761.                 $new[] = $func;
  762.             $added1 = true;
  763.         }
  764.  
  765.         $new[] = $line;
  766.     }
  767.     file_put_contents("client-0/kabam/rotmg/chat/control/TextHandler.class.asasm", implode("\n", $new));
  768.     echo "done.\n";
  769.  
  770. // Edit ChatInput to allow ESCAPE to cancel messages
  771.     echo "Editing ChatInput...";
  772.     $button = file_get_contents("client-0/kabam/rotmg/chat/view/ChatInput.class.asasm");
  773.  
  774.     $lines = explode("\n", $button);
  775.     $new = array();
  776.     $flag1 = false;
  777.     $flag2 = false;
  778.     $added1 = false;
  779.     foreach ($lines as $line)
  780.     {
  781.         if ($flag1 == false && stripos($line, "trait method") !== FALSE && stripos($line, "onKeyUp") !== FALSE)
  782.         {
  783.             $flag1 = true;
  784.         }
  785.         if ($flag1 && $flag2 == false && stripos($line, "stopImmediatePropagation") !== FALSE)
  786.         {
  787.             $flag2 = true; 
  788.         }
  789.         if ($flag1 && $flag2 && $added1 == false && stripos($line, ":") !== FALSE)
  790.         {
  791.             $new[] = '      jump                LEND';
  792.             $new[] = '';
  793.             $new[] = $line;
  794.             $new[] = '      getlocal1';
  795.             $new[] = '      getproperty         QName(PackageNamespace(""), "keyCode")';
  796.             $new[] = '      getlex              QName(PackageNamespace("flash.ui"), "Keyboard")';
  797.             $new[] = '      getproperty         QName(PackageNamespace(""), "ESCAPE")';
  798.             $new[] = '      ifne                LEND';
  799.             $new[] = '';
  800.             $new[] = '      getlocal0';
  801.             $new[] = '      getproperty         QName(PackageNamespace(""), "close")';
  802.             $new[] = '      callpropvoid        QName(PackageNamespace(""), "dispatch"), 0';
  803.             $new[] = '';
  804.             $new[] = '      getlocal1';
  805.             $new[] = '      callpropvoid        QName(PackageNamespace(""), "stopImmediatePropagation"), 0';
  806.             $new[] = '';
  807.             $line = 'LEND:';
  808.             $added1 = true;
  809.         }
  810.         $new[] = $line;
  811.     }
  812.     file_put_contents("client-0/kabam/rotmg/chat/view/ChatInput.class.asasm", implode("\n", $new));
  813.     echo "done.\n";
  814.  
  815.  
  816. // Remove accept trade delay by editing TradeButton
  817.     echo "Editing TradeButton...";
  818.     $button = file_get_contents("client-0/com/company/assembleegameclient/ui/TradeButton.class.asasm");
  819.  
  820.     $lines = explode("\n", $button);
  821.     $new = array();
  822.     $flag1 = false;
  823.     $flag2 = false;
  824.     $added1 = false;
  825.     foreach ($lines as $line)
  826.     {
  827.         if ($flag1 == false && stripos($line, "trait method") !== FALSE && stripos($line, "setEnabled") !== FALSE)
  828.         {
  829.             $flag1 = true;
  830.         }
  831.         if ($flag1 && $flag2 == false && stripos($line, "pushscope") !== FALSE)
  832.         {
  833.             $flag2 = true; 
  834.         }
  835.         if ($flag1 && $flag2 && $added1 == false && trim($line) == '')
  836.         {
  837.             $new[] = '      getlex              QName(PackageNamespace("com.company.assembleegameclient.parameters"), "Parameters")';
  838.             $new[] = '      getproperty         QName(PackageNamespace(""), "data_")';
  839.             $new[] = '      getproperty         QName(PackageNamespace(""), "tradeDelay")';
  840.             $new[] = '      iffalse             LSKIP';
  841.             $new[] = '';
  842.             $new[] = '      pushtrue';
  843.             $new[] = '      setlocal1';
  844.             $new[] = '';
  845.             $new[] = 'LSKIP:';
  846.             $added1 = true;
  847.         }
  848.         $new[] = $line;
  849.     }
  850.     file_put_contents("client-0/com/company/assembleegameclient/ui/TradeButton.class.asasm", implode("\n", $new));
  851.     echo "done.\n";
  852.  
  853. // Time to edit MapUserInput
  854.     echo "Editing MapUserInput...";
  855.     $input = file_get_contents("client-0/com/company/assembleegameclient/game/MapUserInput.class.asasm");
  856.  
  857.     $lines = explode("\n", $input);
  858.     $new = array();
  859.     $flag1 = false;
  860.     $added1 = false;
  861.     $flag2 = false;
  862.     $flag3 = false;
  863.     $added2 = false;
  864.     $flag4 = false;
  865.     $added3 = false;
  866.     $flag5 = false;
  867.     $flag6 = false;
  868.     $remove = 0;
  869.     $added4 = false;
  870.     $added5 = false;
  871.     foreach ($lines as $line)
  872.     {
  873.     // Add autofire setting
  874.         if ($flag1 == false && stripos($line, "constructsuper") !== FALSE)
  875.         {
  876.             $flag1 = true;
  877.         }
  878.         if ($flag1 && $added1 == false && stripos($line, "getlocal0") !== FALSE)
  879.         {
  880.             $new[] = '     getlocal0';
  881.             $new[] = '     getlex              QName(PackageNamespace("com.company.assembleegameclient.parameters"), "Parameters")';
  882.             $new[] = '     getproperty         QName(PackageNamespace(""), "data_")';
  883.             $new[] = '     getproperty         Multiname("AutoFireConfig", [PrivateNamespace(null, "com.company.assembleegameclient.game:MapUserInput"), PackageNamespace(""), PackageNamespace("com.company.assembleegameclient.game"), PrivateNamespace(null, "com.company.assembleegameclient.game:MapUserInput/instance"), PackageInternalNs("com.company.assembleegameclient.game"), Namespace("http://adobe.com/AS3/2006/builtin"), ProtectedNamespace("com.company.assembleegameclient.game:MapUserInput"), StaticProtectedNs("com.company.assembleegameclient.game:MapUserInput")])';
  884.             $new[] = '     setproperty         QName(PrivateNamespace(null, "com.company.assembleegameclient.game:MapUserInput"), "autofire_")';
  885.             $new[] = '';
  886.             $added1 = true;
  887.         }
  888.     // edit clearinput so it doesnt reset autofire
  889.         if ($flag2 == false && stripos($line, "trait method") !== FALSE && stripos($line, "clearInput") !== FALSE)
  890.         {
  891.             $flag2 = true;
  892.         }
  893.         if ($flag2 && $flag3 == false && stripos($line, "initproperty") !== FALSE && stripos($line, "mouseDown_") !== FALSE)
  894.         {
  895.             $flag3 = true;
  896.         }
  897.         if ($flag2 && $flag3 && $added2 == false && trim($line) == '')
  898.         {
  899.             $new[] = '      jump                LJMPCLEAR';
  900.             $added2 = true;
  901.         }
  902.         if ($added2 && $flag4 == false && stripos($line, "initproperty") !== FALSE && stripos($line, "autofire_") !== FALSE)
  903.         {
  904.             $flag4 = true;
  905.         }
  906.         if ($added2 && $flag4 && $added3 == false && trim($line) == '')
  907.         {
  908.             $new[] = '';
  909.             $line = 'LJMPCLEAR:';
  910.             $added3 = true;
  911.         }
  912.     // Replace the onKeyDown function with the modified version
  913.         if ($flag5 == false && stripos($line, "trait method") !== FALSE && stripos($line, "onKeyDown") !== FALSE)
  914.         {
  915.             $flag5 = true;
  916.             $remove = 0;
  917.         }
  918.         if ($flag5 && $flag6 == false)
  919.         {
  920.             if (stripos($line, "end ; trait") !== false)
  921.             {
  922.                 $flag6 = true;
  923.             }
  924.             else
  925.             {
  926.                 $remove++;
  927.             }
  928.         }
  929.         if ($flag5 && $flag6 && $added4 == false)
  930.         {
  931.             $new = array_slice($new, 0, ($remove * -1));
  932.             $function = file_get_contents("data/MUIOnKeyDown.data");
  933.             $func_lines = explode("\n", $function);
  934.             foreach($func_lines as $func)
  935.                 $new[] = $func;
  936.             $added4 = true;
  937.         }
  938.     // Add recon/drecon/vaultrecon vars at end of class
  939.         if ($added5 == false && stripos($line, "end ; class") !== false)
  940.         {
  941.             $new[] = ' trait slot QName(PackageNamespace(""), "recon") slotid 4 type QName(PackageNamespace("com.company.assembleegameclient.game.events"), "ReconnectEvent") end';
  942.             $new[] = ' trait slot QName(PackageNamespace(""), "drecon") slotid 5 type QName(PackageNamespace("com.company.assembleegameclient.game.events"), "ReconnectEvent") end';
  943.             $new[] = ' trait slot QName(PackageNamespace(""), "vaultrecon") slotid 6 type QName(PackageNamespace("com.company.assembleegameclient.game.events"), "ReconnectEvent") end';
  944.             $added5 = true;
  945.         }
  946.         $new[] = $line;
  947.     }
  948.     file_put_contents("client-0/com/company/assembleegameclient/game/MapUserInput.class.asasm", implode("\n", $new));
  949.     echo "done.\n";
  950.  
  951. // Remove idlewatcher
  952.     echo "Editing IdleWatcher...";
  953.     $idle = file_get_contents("client-0/com/company/assembleegameclient/game/IdleWatcher.class.asasm");
  954.  
  955.     $lines = explode("\n", $idle);
  956.     $new = array();
  957.     $flag1 = $flag2 = $added1 = false;
  958.     foreach ($lines as $line)
  959.     {
  960.     // Find update function and make it return before doing anything
  961.         if ($flag1 == false && stripos($line, "trait method") !== FALSE && stripos($line, "update") !== FALSE)
  962.         {
  963.             $flag1 = true;
  964.         }
  965.         if ($flag1 && $flag2 == false && stripos($line, "pushscope") !== FALSE)
  966.         {
  967.             $flag2 = true; 
  968.         }
  969.         if ($flag1 && $flag2 && $added1 == false && trim($line) == '')
  970.         {
  971.             $new[] = '';
  972.             $new[] = '      pushfalse';
  973.             $new[] = '      returnvalue';
  974.             $added1 = true;
  975.         }
  976.         $new[] = $line;
  977.     }
  978.     file_put_contents("client-0/com/company/assembleegameclient/game/IdleWatcher.class.asasm", implode("\n", $new));
  979.     echo "done.\n";
  980.  
  981. // Create the different ReconnectEvents
  982.     echo "Editing GameServerConnectionConcrete...";
  983.     $concrete = file_get_contents("client-0/kabam/rotmg/messaging/impl/GameServerConnectionConcrete.class.asasm");
  984.  
  985.     $lines = explode("\n", $concrete);
  986.     $new = array();
  987.     $added1 = $flag1 = $added2 = $flag2 = $added3 = $flag3 = $flag4 = $added4 = false;
  988.     foreach ($lines as $line)
  989.     {
  990.     // Add the CreateVaultRecon function
  991.         if ($added1 == false && stripos($line, "trait method") !== FALSE && stripos($line, "isConnected") !== FALSE)
  992.         {
  993.             $function = file_get_contents("data/CreateVaultRecon.data");
  994.             $func_lines = explode("\n", $function);
  995.             foreach($func_lines as $func)
  996.                 $new[] = $func;
  997.             $added1 = true;
  998.         }
  999.     // Set the recon/drecon values in onReconnect()
  1000.         if ($flag1 == false && stripos($line, "trait method") !== FALSE && stripos($line, "onReconnect") !== FALSE)
  1001.         {
  1002.             $flag1 = true; 
  1003.         }
  1004.         if ($flag1 && $added2 == false && stripos($line, "getlex") !== FALSE && stripos($line, "gs_") !== FALSE)
  1005.         {
  1006.             $function = file_get_contents("data/OnReconnect.data");
  1007.             $func_lines = explode("\n", $function);
  1008.             foreach($func_lines as $func)
  1009.                 $new[] = $func;
  1010.             $added2 = true;
  1011.         }
  1012.     // Call the createVaultRecon function when connecting
  1013.         if ($flag2 == false && stripos($line, "trait method") !== FALSE && stripos($line, "onConnected") !== FALSE)
  1014.         {
  1015.             $flag2 = true; 
  1016.         }
  1017.         if ($flag2 && $added3 == false && stripos($line, "returnvoid") !== FALSE)
  1018.         {
  1019.             $new[] = '      getlocal0';
  1020.             $new[] = '      getlocal2';
  1021.             $new[] = '      callpropvoid        QName(PrivateNamespace(null, "kabam.rotmg.messaging.impl:GameServerConnectionConcrete"), "createVaultRecon"), 1';
  1022.             $new[] = '';
  1023.             $added3 = true;
  1024.         }
  1025.  
  1026.         $new[] = $line;
  1027.     }
  1028.     file_put_contents("client-0/kabam/rotmg/messaging/impl/GameServerConnectionConcrete.class.asasm", implode("\n", $new));
  1029.     echo "done.\n";
  1030.  
  1031. // Edit Objects/Character
  1032.     echo "Editing Character...";
  1033.     file_put_contents("client-0/com/company/assembleegameclient/objects/Character.class.asasm", file_get_contents("data/Character.data"));
  1034.     echo "done.\n";
  1035.  
  1036. // Edit Objects/Projectile
  1037.     echo "Editing Projectile...";
  1038.     $projectile = file_get_contents("client-0/com/company/assembleegameclient/objects/Projectile.class.asasm");
  1039.  
  1040.     $lines = explode("\n", $projectile);
  1041.     $new = array();
  1042.     $flag1 = $flag2 = $added1 = false;
  1043.     $remove = 0;
  1044.     foreach ($lines as $line)
  1045.     {
  1046.     // Replace the update function
  1047.         if ($flag1 == false && stripos($line, "trait method") !== FALSE && stripos($line, "update") !== FALSE)
  1048.         {
  1049.             $flag1 = true;
  1050.             $remove = 0;
  1051.         }
  1052.         if ($flag1 && $flag2 == false)
  1053.         {
  1054.             if (stripos($line, "trait method") !== false && stripos($line, "getHit") !== false)
  1055.             {
  1056.                 $flag2 = true;
  1057.             }
  1058.             else
  1059.             {
  1060.                 $remove++;
  1061.             }
  1062.         }
  1063.         if ($flag1 && $flag2 && $added1 == false)
  1064.         {
  1065.             $new = array_slice($new, 0, ($remove * -1));
  1066.             $function = file_get_contents("data/ProjectileUpdate.data");
  1067.             $func_lines = explode("\n", $function);
  1068.             foreach($func_lines as $func)
  1069.                 $new[] = $func;
  1070.             $added1 = true;
  1071.         }
  1072.  
  1073.         $new[] = $line;
  1074.     }
  1075.     file_put_contents("client-0/com/company/assembleegameclient/objects/Projectile.class.asasm", implode("\n", $new));
  1076.     echo "done.\n";
  1077.  
  1078. // Edit Objects/GameObject
  1079.     echo "Editing GameObject...";
  1080.     $gobj = file_get_contents("client-0/com/company/assembleegameclient/objects/GameObject.class.asasm");
  1081.  
  1082.     $lines = explode("\n", $gobj);
  1083.     $new = array();
  1084.     $flag1 = $flag2 = $added1 = $flag3 = $flag4 = $added2 = false;
  1085.     $remove = 0;
  1086.     foreach ($lines as $line)
  1087.     {
  1088.     // Replace Conditions
  1089.         if ($flag1 == false && stripos($line, "trait method") !== FALSE && stripos($line, "isQuiet") !== FALSE)
  1090.         {
  1091.             $flag1 = true;
  1092.             $remove = 0;
  1093.         }
  1094.         if ($flag1 && $flag2 == false)
  1095.         {
  1096.             if (stripos($line, "trait method") !== false && stripos($line, "isSafe") !== false)
  1097.             {
  1098.                 $flag2 = true;
  1099.             }
  1100.             else
  1101.             {
  1102.                 $remove++;
  1103.             }
  1104.         }
  1105.         if ($flag1 && $flag2 && $added1 == false)
  1106.         {
  1107.             $new = array_slice($new, 0, ($remove * -1));
  1108.             $function = file_get_contents("data/GameObjectConditions.data");
  1109.             $func_lines = explode("\n", $function);
  1110.             foreach($func_lines as $func)
  1111.                 $new[] = $func;
  1112.             $added1 = true;
  1113.         }
  1114.     // Replace showDamageText
  1115.         if ($flag3 == false && stripos($line, "trait method") !== FALSE && stripos($line, "showDamageText") !== FALSE)
  1116.         {
  1117.             $flag3 = true;
  1118.             $remove = 0;
  1119.         }
  1120.         if ($flag3 && $flag4 == false)
  1121.         {
  1122.             if (stripos($line, "trait method") !== false && stripos($line, "makeNameBitmapData") !== false)
  1123.             {
  1124.                 $flag4 = true;
  1125.             }
  1126.             else
  1127.             {
  1128.                 $remove++;
  1129.             }
  1130.         }
  1131.         if ($flag3 && $flag4 && $added2 == false)
  1132.         {
  1133.             $new = array_slice($new, 0, ($remove * -1));
  1134.             $function = file_get_contents("data/ShowDamageText.data");
  1135.             $func_lines = explode("\n", $function);
  1136.             foreach($func_lines as $func)
  1137.                 $new[] = $func;
  1138.             $added2 = true;
  1139.         }
  1140.  
  1141.         $new[] = $line;
  1142.     }
  1143.     file_put_contents("client-0/com/company/assembleegameclient/objects/GameObject.class.asasm", implode("\n", $new));
  1144.     echo "done.\n";
  1145.  
  1146. // Edit Objects/GameObject
  1147.     echo "Editing Player...";
  1148.     $playerc = file_get_contents("client-0/com/company/assembleegameclient/objects/Player.class.asasm");
  1149.  
  1150.     $lines = explode("\n", $playerc);
  1151.     $new = array();
  1152.     $flag1 = $flag2 = $added1 = $flag3 = $flag4 = $added2 = $flag5 = $flag6 = $flag7 = $added3 = $flag8 = $flag9 = $added4 = $flag10 = $flag11 = $added5 = $flag12 = $flag13 = false;
  1153.     $remove = 0;
  1154.     foreach ($lines as $line)
  1155.     {
  1156.     // Safewalk
  1157.         if ($flag1 == false && stripos($line, "trait method") !== FALSE && stripos($line, "isValidPosition") !== FALSE)
  1158.         {
  1159.             $flag1 = true;
  1160.         }
  1161.         if ($flag1 && $flag2 == false && stripos($line, "setlocal3") !== FALSE)
  1162.         {
  1163.             $flag2 = true;
  1164.         }
  1165.         if ($flag1 && $flag2 && $added1 == false && trim($line) == '')
  1166.         {
  1167.             $new[] = '      getlex              QName(PackageNamespace(""), "map_")';
  1168.             $new[] = '      getproperty         QName(PackageNamespace(""), "gs_")';
  1169.             $new[] = '      getproperty         QName(PackageNamespace(""), "mui_")';
  1170.             $new[] = '      getproperty         QName(PrivateNamespace(null, "com.company.assembleegameclient.game:MapUserInput"), "mouseDown_")';
  1171.             $new[] = '      iftrue              LSKIP';
  1172.             $new[] = '';
  1173.             $new[] = '      getlocal3';
  1174.             $new[] = '      getproperty         QName(PackageNamespace(""), "props_")';
  1175.             $new[] = '      getproperty         QName(PackageNamespace(""), "maxDamage_")';
  1176.             $new[] = '      pushbyte            0';
  1177.             $new[] = '      ifeq                LSKIP';
  1178.             $new[] = '';
  1179.             $new[] = '      getlocal3';
  1180.             $new[] = '      getproperty         QName(PackageNamespace(""), "obj_")';
  1181.             $new[] = '      pushnull';
  1182.             $new[] = '      ifne                LSKIP';
  1183.             $new[] = '';
  1184.             $new[] = '      getlex              QName(PackageNamespace("com.company.assembleegameclient.parameters"), "Parameters")';
  1185.             $new[] = '      getproperty         QName(PackageNamespace(""), "data_")';
  1186.             $new[] = '      getproperty         QName(PackageNamespace(""), "safeWalk")';
  1187.             $new[] = '      iffalse             LSKIP';
  1188.             $new[] = '';
  1189.             $new[] = '      pushfalse';
  1190.             $new[] = '      returnvalue';
  1191.             $new[] = '';
  1192.             $line = 'LSKIP:';
  1193.             $added1 = true;
  1194.         }
  1195.  
  1196.     // Sprite World No Slide
  1197.         if ($flag3 == false && stripos($line, "trait method") !== FALSE && stripos($line, "update") !== FALSE)
  1198.         {
  1199.             $flag3 = true;
  1200.         }
  1201.         if ($flag3 && $flag4 == false && stripos($line, "getproperty") !== FALSE && stripos($line, "push_") !== FALSE)
  1202.         {
  1203.             $flag4 = true;
  1204.         }
  1205.         if ($flag3 && $flag4 && $added2 == false && stripos($line, "iffalse") !== FALSE)
  1206.         {
  1207.             $new[] = '      dup';
  1208.             $new[] = '      iffalse             LSLIDE';
  1209.             $new[] = '';
  1210.             $new[] = '      pop';
  1211.             $new[] = '      getlex              QName(PackageNamespace("com.company.assembleegameclient.parameters"), "Parameters")';
  1212.             $new[] = '      getproperty         QName(PackageNamespace(""), "data_")';
  1213.             $new[] = '      getproperty         QName(PackageNamespace(""), "swNoSlide")';
  1214.             $new[] = '      not';
  1215.             $new[] = 'LSLIDE:';
  1216.             $added2 = true;
  1217.         }
  1218.     // Sprite World Speedy
  1219.         if ($flag5 == false && stripos($line, "trait method") !== FALSE && stripos($line, "onMove") !== FALSE)
  1220.         {
  1221.             $flag5 = true;
  1222.         }
  1223.         if ($flag5 && $flag6 && $flag7 == false && stripos($line, "returnvoid") !== FALSE)
  1224.         {
  1225.             $flag7 = true;
  1226.         }
  1227.         if ($flag5 && $flag6 == false && stripos($line, "returnvoid") !== FALSE)
  1228.         {
  1229.             $flag6 = true;
  1230.         }
  1231.         if ($flag5 && $flag6 && $flag7 && $added3 == false)
  1232.         {
  1233.             $new[] = '      getlex              QName(PackageNamespace("com.company.assembleegameclient.parameters"), "Parameters")';
  1234.             $new[] = '      getproperty         QName(PackageNamespace(""), "data_")';
  1235.             $new[] = '      getproperty         QName(PackageNamespace(""), "swSpeedy")';
  1236.             $new[] = '      iffalse             LEND';
  1237.             $new[] = '';
  1238.             $new[] = '      getlex              QName(PackageNamespace(""), "map_")';
  1239.             $new[] = '      getproperty         QName(PackageNamespace(""), "name_")';
  1240.             $new[] = '      pushstring          "Sprite World"';
  1241.             $new[] = '      ifne                LEND';
  1242.             $new[] = '';
  1243.             $new[] = '      getlocal0';
  1244.             $new[] = '      pushdouble          1.5';
  1245.             $new[] = '      setproperty         QName(ProtectedNamespace("com.company.assembleegameclient.objects:Player"), "moveMultiplier_")';
  1246.             $new[] = '';
  1247.             $new[] = 'LEND:';
  1248.             $added3 = true;
  1249.         }
  1250.     // Replace attemptAttackAngle & add aim_
  1251.         if ($flag8 == false && stripos($line, "trait method") !== FALSE && stripos($line, "attemptAttackAngle") !== FALSE)
  1252.         {
  1253.             $flag8 = true;
  1254.             $remove = 0;
  1255.         }
  1256.         if ($flag8 && $flag9 == false)
  1257.         {
  1258.             if (stripos($line, "trait method") !== false && stripos($line, "setAttack") !== false)
  1259.             {
  1260.                 $flag9 = true;
  1261.             }
  1262.             else
  1263.             {
  1264.                 $remove++;
  1265.             }
  1266.         }
  1267.         if ($flag8 && $flag9 && $added4 == false)
  1268.         {
  1269.             $new = array_slice($new, 0, ($remove * -1));
  1270.             $function = file_get_contents("data/PlayerAutoAim.data");
  1271.             $func_lines = explode("\n", $function);
  1272.             foreach($func_lines as $func)
  1273.                 $new[] = $func;
  1274.             $added4 = true;
  1275.         }
  1276.     // Add autonexus
  1277.         if ($flag10== false && stripos($line, "trait method") !== FALSE && stripos($line, "update") !== FALSE)
  1278.         {
  1279.             $flag10 = true;
  1280.         }
  1281.         if ($flag10 && $flag11 == false && stripos($line, "setproperty") !== FALSE && stripos($line, "lastDamage_") !== FALSE)
  1282.         {
  1283.             $flag11 = true;
  1284.         }
  1285.         if ($flag10 && $flag11 && $added5 == false && stripos($line, "pushtrue") !== FALSE)
  1286.         {
  1287.             $function = file_get_contents("data/AutoNexus.data");
  1288.             $func_lines = explode("\n", $function);
  1289.             foreach($func_lines as $func)
  1290.                 $new[] = $func;
  1291.             $added5 = true;
  1292.         }
  1293.  
  1294.         $new[] = $line;
  1295.     }
  1296.     file_put_contents("client-0/com/company/assembleegameclient/objects/Player.class.asasm", implode("\n", $new));
  1297.     echo "done.\n";
  1298.  
  1299. // Edit GameObjectArrow
  1300.     echo "Editing GameObjectArrow...";
  1301.     $arrow = file_get_contents("client-0/com/company/assembleegameclient/map/partyoverlay/GameObjectArrow.class.asasm");
  1302.  
  1303.     $lines = explode("\n", $arrow);
  1304.     $new = array();
  1305.     $flag1 = false;
  1306.     $flag2 = false;
  1307.     $added1 = false;
  1308.     $remove = 0;
  1309.     foreach ($lines as $line)
  1310.     {
  1311.     // Replace the update function
  1312.         if ($flag1 == false && stripos($line, "trait method") !== FALSE && stripos($line, "draw") !== FALSE)
  1313.         {
  1314.             $flag1 = true;
  1315.             $remove = 0;
  1316.         }
  1317.         if ($flag1 && $flag2 == false)
  1318.         {
  1319.             if (stripos($line, "trait method") !== false && stripos($line, "positionTooltip") !== false)
  1320.             {
  1321.                 $flag2 = true;
  1322.             }
  1323.             else
  1324.             {
  1325.                 $remove++;
  1326.             }
  1327.         }
  1328.         if ($flag1 && $flag2 && $added1 == false)
  1329.         {
  1330.             $new = array_slice($new, 0, ($remove * -1));
  1331.             $function = file_get_contents("data/GameObjectArrowDraw.data");
  1332.             $func_lines = explode("\n", $function);
  1333.             foreach($func_lines as $func)
  1334.                 $new[] = $func;
  1335.             $added1 = true;
  1336.         }
  1337.  
  1338.         $new[] = $line;
  1339.     }
  1340.     file_put_contents("client-0/com/company/assembleegameclient/map/partyoverlay/GameObjectArrow.class.asasm", implode("\n", $new));
  1341.     echo "done.\n";
  1342.  
  1343. // Put everything back together, but in a new client
  1344.     echo "copying swf...";
  1345.     file_put_contents("myClient.swf", file_get_contents("client.swf"));
  1346.     if (!file_exists("myClient.swf"))
  1347.     {
  1348.         echo "failed to copy original swf!\n";
  1349.         exit();
  1350.     }
  1351.     echo "done.\n";
  1352.  
  1353. // compile the new abc
  1354.     echo "running the new scripts through rabcasm.exe...";
  1355.     $output = shell_exec("{$PATH_TO_RABCDASM}rabcasm.exe client-0/client-0.main.asasm");
  1356.     if (!file_exists("client-0/client-0.main.abc"))
  1357.     {
  1358.         echo "error compiling everything!\n";
  1359.         echo $output . "\n";
  1360.         exit();
  1361.     }
  1362.     echo "done.\n";
  1363.     unset($output);
  1364.  
  1365. // Replace the abc data in the new swf
  1366.     echo "replacing abc data in new client with abcreplace.exe...";
  1367.     $output = shell_exec("{$PATH_TO_RABCDASM}abcreplace.exe myClient.swf 0 client-0/client-0.main.abc");
  1368.     echo "done.\n$output\n";
  1369.     unset($output);
  1370.  
  1371.  
  1372. function recursiveDelete($directory)
  1373. {
  1374.     foreach(glob("{$directory}/*") as $file)
  1375.     {
  1376.         if(is_dir($file)) {
  1377.             recursiveDelete($file);
  1378.         } else {
  1379.             unlink($file);
  1380.         }
  1381.     }
  1382.     rmdir($directory);
  1383. }
  1384.  
  1385. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement