Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- // Put the path to your rabcdasm folder here
- $PATH_TO_RABCDASM = "PATH/TO/RABCDASM/FOLDER";
- // Check to see if the path to rabcdasm is real
- if(!is_dir($PATH_TO_RABCDASM))
- {
- echo "\"{$PATH_TO_RABCDASM}\" does not exist!\n";
- exit();
- }
- $PATH_TO_RABCDASM = str_replace('\\','/',trim($PATH_TO_RABCDASM));
- if(substr($PATH_TO_RABCDASM,-1) != '/') $PATH_TO_RABCDASM .= '/';
- if(!file_exists("{$PATH_TO_RABCDASM}abcexport.exe"))
- {
- echo "can not find abcexport.exe in your rabcdasm folder!\n";
- exit();
- }
- if(!file_exists("{$PATH_TO_RABCDASM}rabcdasm.exe"))
- {
- echo "can not find rabcdasm.exe in your rabcdasm folder!\n";
- exit();
- }
- if(!file_exists("{$PATH_TO_RABCDASM}rabcasm.exe"))
- {
- echo "can not find rabcasm.exe in your rabcdasm folder!\n";
- exit();
- }
- if(!file_exists("{$PATH_TO_RABCDASM}abcreplace.exe"))
- {
- echo "can not find abcreplace.exe in your rabcdasm folder!\n";
- exit();
- }
- // Make sure previous client-0 folder and abc file doesnt exist
- if(is_dir("client-0"))
- {
- echo "deleting old rabcdasm data...";
- recursiveDelete("client-0");
- if(is_dir("client-0"))
- {
- echo "failed to delete old rabcdasm files (client-0 folder). Please delete folder and try again.\n";
- exit();
- }
- else
- {
- echo "done.\n";
- }
- }
- if(file_exists("client-0.abc"))
- {
- unlink("client-0.abc");
- }
- // Extract the ABC file from the client
- echo "running client through abcexport...";
- $output = shell_exec("{$PATH_TO_RABCDASM}abcexport.exe client.swf");
- if (!file_exists("client-0.abc"))
- {
- echo "failed!\n";
- echo $output . "\n";
- exit();
- }
- echo "done.\n";
- unset($output);
- // Decompile the abc file so we can edit the code
- echo "disassembling abc file with rabcdasm.exe...";
- $output = shell_exec("{$PATH_TO_RABCDASM}rabcdasm.exe client-0.abc");
- if (!file_exists("client-0/client-0.main.asasm"))
- {
- echo "failed!\n";
- echo $output . "\n";
- exit();
- }
- echo "done.\n";
- unset($output);
- // Start adding hacks
- // Open WebMain first and set scale mode/fps
- echo "Editing WebMain...";
- $webmain = file_get_contents("client-0/WebMain.class.asasm");
- $lines = explode("\n", $webmain);
- $next = false;
- $new = array();
- $added = false;
- foreach ($lines as $i => $line)
- {
- // Change "EXACT_FIT" to "NO_SCALE"
- if (stripos($line, "EXACT_FIT") !== FALSE)
- {
- $line = str_replace("EXACT_FIT", "NO_SCALE", $line);
- $next = true;
- }
- // Find a blank line, add in new command to set framerate to 60
- if ($next && trim($line) == '' && $added == false)
- {
- $new[] = '';
- $new[] = ' getlex QName(PackageNamespace(""), "stage")';
- $new[] = ' pushdouble 60';
- $new[] = ' setproperty QName(PackageNamespace(""), "frameRate")';
- $added = true;
- }
- $new[] = $line;
- }
- file_put_contents("client-0/WebMain.class.asasm", implode("\n", $new));
- echo "Done.\n";
- // Add proxy server
- echo "Editing ParseServerDataCommand...";
- $parseserver = file_get_contents("client-0/kabam/rotmg/servers/control/ParseServerDataCommand.class.asasm");
- $lines = explode("\n", $parseserver);
- $new = array();
- $localHostServerAdded = false;
- $makeListFound = false;
- $makeListDone = false;
- foreach ($lines as $line)
- {
- // Find the first function and inject the new function ahead of it
- if (stripos($line, "trait method") !== FALSE && $localHostServerAdded == false)
- {
- $function = file_get_contents("data/LocalhostServer.data");
- $func_lines = explode("\n", $function);
- foreach($func_lines as $func)
- $new[] = $func;
- $localHostServerAdded = true;
- }
- // Find the makeListOfServers method
- if (stripos($line, "trait method") !== FALSE && stripos($line, "makeListOfServers") !== FALSE)
- {
- $makeListFound = true;
- }
- // Inject the code to add the proxy server at the end of the function
- if ($makeListFound && stripos($line, "returnvalue") !== false && $makeListDone == false)
- {
- $new[] = ' getlocal0';
- $new[] = ' callproperty QName(PackageNamespace(""), "LocalhostServer"), 0';
- $new[] = ' callpropvoid QName(Namespace("http://adobe.com/AS3/2006/builtin"), "push"), 1';
- $new[] = '';
- $new[] = ' getlocal2';
- $makeListDone = true;
- }
- $new[] = $line;
- }
- file_put_contents("client-0/kabam/rotmg/servers/control/ParseServerDataCommand.class.asasm", implode("\n", $new));
- echo "Done\n";
- // Add all the hack parameters that the client uses
- echo "Editing Parameters...";
- $parameters = file_get_contents("client-0/com/company/assembleegameclient/parameters/Parameters.class.asasm");
- $lines = explode("\n", $parameters);
- $new = array();
- $setDefaultsFound = false;
- $paramsAdded = false;
- $maxstack = false;
- foreach ($lines as $line)
- {
- // Look for the setDefaults function
- if ($setDefaultsFound == false && stripos($line, "trait method") !== FALSE && stripos($line, "setDefaults") !== FALSE)
- {
- $setDefaultsFound = true;
- }
- if ($setDefaultsFound && $maxstack == false && stripos($line, "maxstack") !== FALSE)
- {
- $line = ' maxstack 84';
- $maxstack = true;
- }
- // Add all of the data just before the returnvoid of setDefaults function
- if ($setDefaultsFound && stripos($line, "returnvoid") !== FALSE && $paramsAdded == false)
- {
- $paramsData = file_get_contents("data/Parameters.data");
- $params = explode("\n", $paramsData);
- foreach ($params as $param)
- $new[] = $param;
- $paramsAdded = true;
- }
- $new[] = $line;
- }
- file_put_contents("client-0/com/company/assembleegameclient/parameters/Parameters.class.asasm", implode("\n", $new));
- echo "Done\n";
- // Fullscreen mod
- // Start with NexusBackground
- echo "Editing NexusBackground...";
- $background = file_get_contents("client-0/com/company/assembleegameclient/background/NexusBackground.class.asasm");
- $lines = explode("\n", $background);
- $new = array();
- $foundDraw = false;
- $added = false;
- $next = false;
- foreach ($lines as $line)
- {
- if($next == true && $added == false && trim($line) != '')
- {
- $new[] = ' getlex QName(PackageNamespace("com.company.assembleegameclient.parameters"), "Parameters")';
- $new[] = ' getproperty QName(PackageNamespace(""), "data_")';
- $new[] = ' getproperty QName(PackageNamespace(""), "fullscreen")';
- $new[] = ' iffalse LSKIP';
- $new[] = '';
- $new[] = ' returnvoid';
- $new[] = '';
- $new[] = 'LSKIP:';
- $added = true;
- }
- if ($foundDraw == false && stripos($line, "trait method") !== FALSE && stripos($line, "draw") !== FALSE && stripos($line, "OVERRIDE") !== FALSE)
- {
- $foundDraw = true;
- }
- if($foundDraw && $added == false && stripos($line, "pushscope") !== FALSE && $next == false)
- {
- $next = true;
- }
- $new[] = $line;
- }
- file_put_contents("client-0/com/company/assembleegameclient/background/NexusBackground.class.asasm", implode("\n", $new));
- echo "Done\n";
- // Now remove the black on the screen in Face3D
- echo "Editing Face3D...";
- $face = file_get_contents("client-0/com/company/assembleegameclient/engine3d/Face3D.class.asasm");
- $lines = explode("\n", $face);
- $new = array();
- $foundDraw = false;
- $added = false;
- foreach ($lines as $line)
- {
- if ($foundDraw == false && stripos($line, "trait method") !== FALSE && stripos($line, "draw") !== FALSE)
- {
- $foundDraw = true;
- }
- if($added == false && $foundDraw && stripos($line, "pushtrue") !== FALSE)
- {
- $new[] = ' getlex QName(PackageNamespace("com.company.assembleegameclient.parameters"), "Parameters")';
- $new[] = ' getproperty QName(PackageNamespace(""), "data_")';
- $new[] = ' getproperty QName(PackageNamespace(""), "fullscreen")';
- $new[] = ' iftrue LFALSE';
- $new[] = '';
- $new[] = ' pushtrue';
- $new[] = ' jump LEND';
- $new[] = '';
- $new[] = 'LFALSE:';
- $new[] = ' pushfalse';
- // Change the original line so it can still be added like normal
- $line = 'LEND:';
- $added = true;
- }
- $new[] = $line;
- }
- file_put_contents("client-0/com/company/assembleegameclient/engine3d/Face3D.class.asasm", implode("\n", $new));
- echo "Done\n";
- // Next we have to edit Camera to change the view distance
- echo "Editing Camera...";
- $camera = file_get_contents("client-0/com/company/assembleegameclient/map/Camera.class.asasm");
- $lines = explode("\n", $camera);
- $new = array();
- $added = false;
- foreach ($lines as $line)
- {
- if ($added == false && stripos($line, "initproperty") !== FALSE && stripos($line, "maxDist_") !== FALSE)
- {
- // Remove last 2 lines
- $new = array_slice($new, 0, -2);
- // Add change
- $new[] = ' getlex QName(PackageNamespace("com.company.assembleegameclient.parameters"), "Parameters")';
- $new[] = ' getproperty QName(PackageNamespace(""), "data_")';
- $new[] = ' getproperty QName(PackageNamespace(""), "fullscreen")';
- $new[] = ' iftrue LBIG';
- $new[] = ' pushbyte 1';
- $new[] = ' jump LADD';
- $new[] = 'LBIG:';
- $new[] = ' pushbyte 16';
- $new[] = 'LADD:';
- $new[] = ' add';
- $added = true;
- }
- $new[] = $line;
- }
- file_put_contents("client-0/com/company/assembleegameclient/map/Camera.class.asasm", implode("\n", $new));
- echo "Done\n";
- // Fix the position of the gradientOverlay
- echo "Editing Map...";
- $map = file_get_contents("client-0/com/company/assembleegameclient/map/Map.class.asasm");
- $lines = explode("\n", $map);
- $new = array();
- $added = false;
- $foundDraw = false;
- $foundOverlay = false;
- $flag1 = false;
- $remove = 0;
- foreach ($lines as $line)
- {
- if ($foundDraw == false && stripos($line, "trait method") !== FALSE && stripos($line, "draw") !== FALSE && stripos($line, "OVERRIDE") !== FALSE)
- {
- $foundDraw = true;
- }
- if ($foundDraw && $foundOverlay == false && stripos($line, "gradientOverlay_") !== false)
- {
- $foundOverlay = true;
- $remove = 0;
- }
- if ($foundOverlay && $flag1 == false)
- {
- if (stripos($line, "jump") !== false)
- {
- $flag1 = true;
- }
- else
- {
- $remove++;
- }
- }
- if ($added == false && $foundDraw && $foundOverlay && $flag1)
- {
- $new = array_slice($new, 0, ($remove * -1));
- $overlayData = file_get_contents("data/GradientOverlay.data");
- $overlayLines = explode("\n", $overlayData);
- foreach ($overlayLines as $overlay)
- $new[] = $overlay;
- $added = true;
- }
- $new[] = $line;
- }
- file_put_contents("client-0/com/company/assembleegameclient/map/Map.class.asasm", implode("\n", $new));
- echo "Done\n";
- // Last fullscreen change, GameSprite
- echo "Editing GameSprite...";
- $sprite = file_get_contents("client-0/com/company/assembleegameclient/game/GameSprite.class.asasm");
- $lines = explode("\n", $sprite);
- $new = array();
- $addedResize = false;
- $initializeFound = false;
- $initAdded = false;
- $connectFound = false;
- $connectFlag1 = false;
- $connectModified = false;
- $disconnectFound = false;
- $disconnectFlag1 = false;
- $disconnectModified = false;
- foreach ($lines as $line)
- {
- // Add resize function
- if ($addedResize == false && stripos($line, "trait method") !== FALSE)
- {
- $function = file_get_contents("data/ScreenResize.data");
- $func_lines = explode("\n", $function);
- foreach($func_lines as $func)
- $new[] = $func;
- $addedResize = true;
- }
- if ($initializeFound == false && stripos($line, "trait method") !== FALSE && stripos($line, "initialize") !== FALSE && stripos($line, "OVERRIDE") !== FALSE)
- {
- $initializeFound = true;
- }
- if ($initializeFound && $initAdded == false && stripos($line, "returnvoid") !== FALSE)
- {
- $new[] = ' getlex QName(PackageNamespace("", "com.company.assembleegameclient.game:GameSprite/instance#0"), "stage")';
- $new[] = ' findpropstrict QName(PackageNamespace("flash.events"), "Event")';
- $new[] = ' getlex QName(PackageNamespace("flash.events"), "Event")';
- $new[] = ' getproperty QName(PackageNamespace("", "com.company.assembleegameclient.game:GameSprite/instance#1"), "RESIZE")';
- $new[] = ' constructprop QName(PackageNamespace("flash.events"), "Event"), 1';
- $new[] = ' callpropvoid QName(PackageNamespace("", "com.company.assembleegameclient.game:GameSprite/instance#0"), "dispatchEvent"), 1';
- $new[] = '';
- $initAdded = true;
- }
- if ($connectFound == false && stripos($line, "trait method") !== FALSE && stripos($line, "\"connect\"") !== FALSE)
- {
- $connectFound = true;
- }
- if ($connectFound && $connectFlag1 == false && $connectModified == false && stripos($line, "onMoneyChanged") !== FALSE)
- {
- $connectFlag1 = true;
- }
- if ($connectFound && $connectFlag1 && $connectModified == false && trim($line) == '')
- {
- $function = file_get_contents("data/SpriteConnect.data");
- $func_lines = explode("\n", $function);
- foreach($func_lines as $func)
- $new[] = $func;
- $connectModified = true;
- }
- if ($disconnectFound == false && stripos($line, "trait method") !== FALSE && stripos($line, "\"disconnect\"") !== FALSE)
- {
- $disconnectFound = true;
- }
- if ($disconnectFound && $disconnectFlag1 == false && $disconnectModified == false && stripos($line, "onMoneyChanged") !== FALSE)
- {
- $disconnectFlag1 = true;
- }
- if ($disconnectFound && $disconnectFlag1 && $disconnectModified == false && trim($line) == '')
- {
- $function = file_get_contents("data/SpriteDisconnect.data");
- $func_lines = explode("\n", $function);
- foreach($func_lines as $func)
- $new[] = $func;
- $disconnectModified = true;
- }
- $new[] = $line;
- }
- file_put_contents("client-0/com/company/assembleegameclient/game/GameSprite.class.asasm", implode("\n", $new));
- echo "Done\n";
- // Edit the options menu
- echo "Editing Options menu...";
- $options = file_get_contents("client-0/com/company/assembleegameclient/ui/options/Options.class.asasm");
- $lines = explode("\n", $options);
- $new = array();
- $flag1 = false;
- $flag2 = false;
- $added1 = false;
- $remove = 0;
- $added2 = false;
- $flag3 = false;
- $flag4 = false;
- $added3 = false;
- $flag5 = false;
- $flag6 = false;
- $flag7 = false;
- $added4 = false;
- $added5 = false;
- $flag8 = false;
- $flag9 = false;
- $flag10 = false;
- $added6 = false;
- foreach ($lines as $line)
- {
- // First part here is to fix the tab display
- if ($flag1 == false && stripos($line, "setlocal3") !== false)
- {
- $flag1 = true;
- }
- if ($flag1 && $flag2 == false)
- {
- if (stripos($line, "findpropstrict") !== false && stripos($line, "addEventListener") !== false)
- {
- $flag2 = true;
- }
- else
- {
- $remove++;
- }
- }
- if ($flag1 && $flag2 && $added1 == false)
- {
- $new = array_slice($new, 0, ($remove * -1));
- $function = file_get_contents("data/Options.data");
- $func_lines = explode("\n", $function);
- foreach($func_lines as $func)
- $new[] = $func;
- $added1 = true;
- }
- // Add MakeAutoAimModeLabels function
- if ($added2 == false && stripos($line, "end ; class") !== false)
- {
- $function = file_get_contents("data/MakeAAModeLabels.data");
- $func_lines = explode("\n", $function);
- foreach($func_lines as $func)
- $new[] = $func;
- $added2 = true;
- }
- // Overwrite the setSelected function
- if ($flag3 == false && stripos($line, "trait method") !== FALSE && stripos($line, "setSelected") !== FALSE)
- {
- $flag3 = true;
- $remove = 0;
- }
- if ($flag3 && $flag4 == false)
- {
- if (stripos($line, "end ; trait") !== false)
- {
- $flag4 = true;
- }
- else
- {
- $remove++;
- }
- }
- if ($flag3 && $flag4 && $added3 == false)
- {
- $new = array_slice($new, 0, ($remove * -1));
- $function = file_get_contents("data/SetSelected.data");
- $func_lines = explode("\n", $function);
- foreach($func_lines as $func)
- $new[] = $func;
- $added3 = true;
- }
- // Fix the position of the buttons at the bottom
- if ($flag5 == false && stripos($line, "trait method") !== FALSE && stripos($line, "onAddedToStage") !== FALSE)
- {
- $flag5 = true;
- }
- if ($flag5 && $flag6 == false && stripos($line, "continueButton_") !== FALSE)
- {
- $flag6 = true;
- $remove = 0;
- }
- if ($flag5 && $flag6 && $flag7 == false)
- {
- if(stripos($line, "Capabilities") !== FALSE)
- {
- $flag7 = true;
- }
- else
- {
- $remove++;
- }
- }
- if ($flag5 && $flag6 && $flag7 && $added4 == false)
- {
- $new = array_slice($new, 0, ($remove * -1));
- $function = file_get_contents("data/OnAddedToStage.data");
- $func_lines = explode("\n", $function);
- foreach($func_lines as $func)
- $new[] = $func;
- $added4 = true;
- }
- // Add all the control functions
- if ($added5 == false && stripos($line, "end ; instance") !== false)
- {
- $function = file_get_contents("data/OptionsControls.data");
- $func_lines = explode("\n", $function);
- foreach($func_lines as $func)
- $new[] = $func;
- $added5 = true;
- }
- // Add all of the different tab option values
- if ($flag8 == false && stripos($line, "refid \"com.company.assembleegameclient.ui.options:Options/class/init\"") !== false)
- {
- $flag8 = true;
- }
- if ($flag8 && $flag9 == false && stripos($line, "initscopedepth") !== false)
- {
- $flag9 = true;
- $remove = 0;
- }
- if ($flag8 && $flag9 && $flag10 == false)
- {
- if (stripos($line, "initproperty") !== false && stripos($line, "TABS") !== false)
- {
- $flag10 = true;
- }
- else
- {
- $remove++;
- }
- }
- if ($flag8 && $flag9 && $flag10 && $added6 == false)
- {
- $new = array_slice($new, 0, ($remove * -1));
- $function = file_get_contents("data/OptionsTabs.data");
- $func_lines = explode("\n", $function);
- foreach($func_lines as $func)
- $new[] = $func;
- $added6 = true;
- }
- $new[] = $line;
- }
- file_put_contents("client-0/com/company/assembleegameclient/ui/options/Options.class.asasm", implode("\n", $new));
- echo "done.\n";
- // Part of the options menu is also modifying the ChoiceOption class
- echo "Editing ChoiceOption...";
- $choice = file_get_contents("client-0/com/company/assembleegameclient/ui/options/ChoiceOption.class.asasm");
- $lines = explode("\n", $choice);
- $new = array();
- $added1 = false;
- $added2 = false;
- $added3 = false;
- $added4 = false;
- $added5 = false;
- foreach ($lines as $line)
- {
- if ($added1 == false && stripos($line, 'flag HAS_OPTIONAL') !== false)
- {
- $new[] = ' param QName(PackageNamespace(""), "Boolean")';
- $added1 = true;
- }
- if ($added2 == false && stripos($line, "optional Integer(16777215)") !== false)
- {
- $new[] = ' optional Integer(16777215)';
- $line = ' optional False()';
- $added2 = true;
- }
- if ($added3 == false && stripos($line, "localcount") !== false)
- {
- $line = ' localcount 9';
- $added3 = true;
- }
- if ($added4 == false && stripos($line, "returnvoid") !== false)
- {
- $new[] = ' getlocal0';
- $new[] = ' getlocal 8';
- $new[] = ' callpropvoid QName(PackageNamespace(""), "setDisabled"), 1';
- $new[] = '';
- $added4 = true;
- }
- if ($added5 == false && stripos($line, "end ; instance") !== false)
- {
- $function = file_get_contents("data/ChoiceOption.data");
- $func_lines = explode("\n", $function);
- foreach($func_lines as $func)
- $new[] = $func;
- $added5 = true;
- }
- $new[] = $line;
- }
- file_put_contents("client-0/com/company/assembleegameclient/ui/options/ChoiceOption.class.asasm", implode("\n", $new));
- echo "done.\n";
- // Edit PlayerToolTip
- echo "Editing PlayerToolTIp...";
- file_put_contents("client-0/com/company/assembleegameclient/ui/tooltip/PlayerToolTip.class.asasm", file_get_contents("data/PlayerToolTip.data"));
- echo "done.\n";
- // Edit PortraitToolTIp
- echo "Editing PortraitToolTIp...";
- file_put_contents("client-0/com/company/assembleegameclient/ui/tooltip/PortraitToolTip.class.asasm", file_get_contents("data/PortraitToolTip.data"));
- echo "done.\n";
- // Edit QuestToolTip
- echo "Editing QuestToolTip...";
- file_put_contents("client-0/com/company/assembleegameclient/ui/tooltip/QuestToolTip.class.asasm", file_get_contents("data/QuestToolTip.data"));
- echo "done.\n";
- // Edit StatsView to show other people stats
- echo "Editing StatsView...";
- $stats = file_get_contents("client-0/kabam/rotmg/game/view/components/StatsView.class.asasm");
- $lines = explode("\n", $stats);
- $new = array();
- $added1 = false;
- foreach ($lines as $line)
- {
- if ($added1 == false && stripos($line, "end ; instance") !== false)
- {
- $new[] = ' trait slot QName(PackageNamespace(""), "myPlayer") type QName(PackageNamespace(""), "Boolean") end';
- $new[] = ' trait slot QName(PackageNamespace(""), "altPlayer") type QName(PackageNamespace("com.company.assembleegameclient.objects"), "Player") end';
- $added1 = true;
- }
- $new[] = $line;
- }
- file_put_contents("client-0/kabam/rotmg/game/view/components/StatsView.class.asasm", implode("\n", $new));
- echo "done.\n";
- // Edit StatsMediator to show other people stats
- echo "Editing StatsMediator...";
- $mediator = file_get_contents("client-0/kabam/rotmg/game/view/components/StatsMediator.class.asasm");
- $lines = explode("\n", $mediator);
- $new = array();
- $flag1 = false;
- $added1 = false;
- foreach ($lines as $line)
- {
- if ($flag1 == false && stripos($line, "trait method") !== false && stripos($line, "onUpdateHUD") !== false)
- {
- $flag1 = true;
- }
- if ($flag1 && $added1 == false && stripos($line, "getproperty") !== false && stripos($line, "view") !== false)
- {
- $new[] = ' getproperty QName(PackageNamespace(""), "view")';
- $new[] = ' getproperty QName(PackageNamespace(""), "myPlayer")';
- $new[] = ' pushfalse';
- $new[] = ' ifne LSKIP';
- $new[] = '';
- $new[] = ' returnvoid';
- $new[] = '';
- $new[] = 'LSKIP:';
- $new[] = ' getlocal0';
- $added1 = true;
- }
- $new[] = $line;
- }
- file_put_contents("client-0/kabam/rotmg/game/view/components/StatsMediator.class.asasm", implode("\n", $new));
- echo "done.\n";
- // Edit StatsTabContent to show other people stats
- echo "Editing StatsTabContent...";
- $stats = file_get_contents("client-0/kabam/rotmg/game/view/components/StatsTabContent.class.asasm");
- $lines = explode("\n", $stats);
- $new = array();
- $added1 = false;
- foreach ($lines as $line)
- {
- if ($added1 == false && stripos($line, "returnvoid") !== false)
- {
- $new[] = ' getlocal0';
- $new[] = ' getproperty QName(PrivateNamespace(null, "kabam.rotmg.game.view.components:StatsTabContent/instance"), "stats")';
- $new[] = ' pushtrue';
- $new[] = ' setproperty QName(PackageNamespace(""), "myPlayer")';
- $new[] = '';
- $added1 = true;
- }
- $new[] = $line;
- }
- file_put_contents("client-0/kabam/rotmg/game/view/components/StatsTabContent.class.asasm", implode("\n", $new));
- echo "done.\n";
- // Edit ParseChatMessageCommand to accept autoaim commands
- echo "Editing ParseChatMessageCommand...";
- file_put_contents("client-0/kabam/rotmg/chat/control/ParseChatMessageCommand.class.asasm", file_get_contents("data/ParseChatMessageCommand.data"));
- echo "done.\n";
- // Edit TextHandler to block spam
- echo "Editing TextHandler...";
- $handler = file_get_contents("client-0/kabam/rotmg/chat/control/TextHandler.class.asasm");
- $lines = explode("\n", $handler);
- $new = array();
- $flag1 = false;
- $flag2 = false;
- $added1 = false;
- foreach ($lines as $line)
- {
- // Replace the update function
- if ($flag1 == false && stripos($line, "trait method") !== FALSE && stripos($line, "execute") !== FALSE)
- {
- $flag1 = true;
- $remove = 0;
- }
- if ($flag1 && $flag2 == false)
- {
- if (stripos($line, "trait method") !== false && stripos($line, "isSpecialRecipientChat") !== false)
- {
- $flag2 = true;
- }
- else
- {
- $remove++;
- }
- }
- if ($flag1 && $flag2 && $added1 == false)
- {
- $new = array_slice($new, 0, ($remove * -1));
- $function = file_get_contents("data/TextHandler.data");
- $func_lines = explode("\n", $function);
- foreach($func_lines as $func)
- $new[] = $func;
- $added1 = true;
- }
- $new[] = $line;
- }
- file_put_contents("client-0/kabam/rotmg/chat/control/TextHandler.class.asasm", implode("\n", $new));
- echo "done.\n";
- // Edit ChatInput to allow ESCAPE to cancel messages
- echo "Editing ChatInput...";
- $button = file_get_contents("client-0/kabam/rotmg/chat/view/ChatInput.class.asasm");
- $lines = explode("\n", $button);
- $new = array();
- $flag1 = false;
- $flag2 = false;
- $added1 = false;
- foreach ($lines as $line)
- {
- if ($flag1 == false && stripos($line, "trait method") !== FALSE && stripos($line, "onKeyUp") !== FALSE)
- {
- $flag1 = true;
- }
- if ($flag1 && $flag2 == false && stripos($line, "stopImmediatePropagation") !== FALSE)
- {
- $flag2 = true;
- }
- if ($flag1 && $flag2 && $added1 == false && stripos($line, ":") !== FALSE)
- {
- $new[] = ' jump LEND';
- $new[] = '';
- $new[] = $line;
- $new[] = ' getlocal1';
- $new[] = ' getproperty QName(PackageNamespace(""), "keyCode")';
- $new[] = ' getlex QName(PackageNamespace("flash.ui"), "Keyboard")';
- $new[] = ' getproperty QName(PackageNamespace(""), "ESCAPE")';
- $new[] = ' ifne LEND';
- $new[] = '';
- $new[] = ' getlocal0';
- $new[] = ' getproperty QName(PackageNamespace(""), "close")';
- $new[] = ' callpropvoid QName(PackageNamespace(""), "dispatch"), 0';
- $new[] = '';
- $new[] = ' getlocal1';
- $new[] = ' callpropvoid QName(PackageNamespace(""), "stopImmediatePropagation"), 0';
- $new[] = '';
- $line = 'LEND:';
- $added1 = true;
- }
- $new[] = $line;
- }
- file_put_contents("client-0/kabam/rotmg/chat/view/ChatInput.class.asasm", implode("\n", $new));
- echo "done.\n";
- // Remove accept trade delay by editing TradeButton
- echo "Editing TradeButton...";
- $button = file_get_contents("client-0/com/company/assembleegameclient/ui/TradeButton.class.asasm");
- $lines = explode("\n", $button);
- $new = array();
- $flag1 = false;
- $flag2 = false;
- $added1 = false;
- foreach ($lines as $line)
- {
- if ($flag1 == false && stripos($line, "trait method") !== FALSE && stripos($line, "setEnabled") !== FALSE)
- {
- $flag1 = true;
- }
- if ($flag1 && $flag2 == false && stripos($line, "pushscope") !== FALSE)
- {
- $flag2 = true;
- }
- if ($flag1 && $flag2 && $added1 == false && trim($line) == '')
- {
- $new[] = ' getlex QName(PackageNamespace("com.company.assembleegameclient.parameters"), "Parameters")';
- $new[] = ' getproperty QName(PackageNamespace(""), "data_")';
- $new[] = ' getproperty QName(PackageNamespace(""), "tradeDelay")';
- $new[] = ' iffalse LSKIP';
- $new[] = '';
- $new[] = ' pushtrue';
- $new[] = ' setlocal1';
- $new[] = '';
- $new[] = 'LSKIP:';
- $added1 = true;
- }
- $new[] = $line;
- }
- file_put_contents("client-0/com/company/assembleegameclient/ui/TradeButton.class.asasm", implode("\n", $new));
- echo "done.\n";
- // Time to edit MapUserInput
- echo "Editing MapUserInput...";
- $input = file_get_contents("client-0/com/company/assembleegameclient/game/MapUserInput.class.asasm");
- $lines = explode("\n", $input);
- $new = array();
- $flag1 = false;
- $added1 = false;
- $flag2 = false;
- $flag3 = false;
- $added2 = false;
- $flag4 = false;
- $added3 = false;
- $flag5 = false;
- $flag6 = false;
- $remove = 0;
- $added4 = false;
- $added5 = false;
- foreach ($lines as $line)
- {
- // Add autofire setting
- if ($flag1 == false && stripos($line, "constructsuper") !== FALSE)
- {
- $flag1 = true;
- }
- if ($flag1 && $added1 == false && stripos($line, "getlocal0") !== FALSE)
- {
- $new[] = ' getlocal0';
- $new[] = ' getlex QName(PackageNamespace("com.company.assembleegameclient.parameters"), "Parameters")';
- $new[] = ' getproperty QName(PackageNamespace(""), "data_")';
- $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")])';
- $new[] = ' setproperty QName(PrivateNamespace(null, "com.company.assembleegameclient.game:MapUserInput"), "autofire_")';
- $new[] = '';
- $added1 = true;
- }
- // edit clearinput so it doesnt reset autofire
- if ($flag2 == false && stripos($line, "trait method") !== FALSE && stripos($line, "clearInput") !== FALSE)
- {
- $flag2 = true;
- }
- if ($flag2 && $flag3 == false && stripos($line, "initproperty") !== FALSE && stripos($line, "mouseDown_") !== FALSE)
- {
- $flag3 = true;
- }
- if ($flag2 && $flag3 && $added2 == false && trim($line) == '')
- {
- $new[] = ' jump LJMPCLEAR';
- $added2 = true;
- }
- if ($added2 && $flag4 == false && stripos($line, "initproperty") !== FALSE && stripos($line, "autofire_") !== FALSE)
- {
- $flag4 = true;
- }
- if ($added2 && $flag4 && $added3 == false && trim($line) == '')
- {
- $new[] = '';
- $line = 'LJMPCLEAR:';
- $added3 = true;
- }
- // Replace the onKeyDown function with the modified version
- if ($flag5 == false && stripos($line, "trait method") !== FALSE && stripos($line, "onKeyDown") !== FALSE)
- {
- $flag5 = true;
- $remove = 0;
- }
- if ($flag5 && $flag6 == false)
- {
- if (stripos($line, "end ; trait") !== false)
- {
- $flag6 = true;
- }
- else
- {
- $remove++;
- }
- }
- if ($flag5 && $flag6 && $added4 == false)
- {
- $new = array_slice($new, 0, ($remove * -1));
- $function = file_get_contents("data/MUIOnKeyDown.data");
- $func_lines = explode("\n", $function);
- foreach($func_lines as $func)
- $new[] = $func;
- $added4 = true;
- }
- // Add recon/drecon/vaultrecon vars at end of class
- if ($added5 == false && stripos($line, "end ; class") !== false)
- {
- $new[] = ' trait slot QName(PackageNamespace(""), "recon") slotid 4 type QName(PackageNamespace("com.company.assembleegameclient.game.events"), "ReconnectEvent") end';
- $new[] = ' trait slot QName(PackageNamespace(""), "drecon") slotid 5 type QName(PackageNamespace("com.company.assembleegameclient.game.events"), "ReconnectEvent") end';
- $new[] = ' trait slot QName(PackageNamespace(""), "vaultrecon") slotid 6 type QName(PackageNamespace("com.company.assembleegameclient.game.events"), "ReconnectEvent") end';
- $added5 = true;
- }
- $new[] = $line;
- }
- file_put_contents("client-0/com/company/assembleegameclient/game/MapUserInput.class.asasm", implode("\n", $new));
- echo "done.\n";
- // Remove idlewatcher
- echo "Editing IdleWatcher...";
- $idle = file_get_contents("client-0/com/company/assembleegameclient/game/IdleWatcher.class.asasm");
- $lines = explode("\n", $idle);
- $new = array();
- $flag1 = $flag2 = $added1 = false;
- foreach ($lines as $line)
- {
- // Find update function and make it return before doing anything
- if ($flag1 == false && stripos($line, "trait method") !== FALSE && stripos($line, "update") !== FALSE)
- {
- $flag1 = true;
- }
- if ($flag1 && $flag2 == false && stripos($line, "pushscope") !== FALSE)
- {
- $flag2 = true;
- }
- if ($flag1 && $flag2 && $added1 == false && trim($line) == '')
- {
- $new[] = '';
- $new[] = ' pushfalse';
- $new[] = ' returnvalue';
- $added1 = true;
- }
- $new[] = $line;
- }
- file_put_contents("client-0/com/company/assembleegameclient/game/IdleWatcher.class.asasm", implode("\n", $new));
- echo "done.\n";
- // Create the different ReconnectEvents
- echo "Editing GameServerConnectionConcrete...";
- $concrete = file_get_contents("client-0/kabam/rotmg/messaging/impl/GameServerConnectionConcrete.class.asasm");
- $lines = explode("\n", $concrete);
- $new = array();
- $added1 = $flag1 = $added2 = $flag2 = $added3 = $flag3 = $flag4 = $added4 = false;
- foreach ($lines as $line)
- {
- // Add the CreateVaultRecon function
- if ($added1 == false && stripos($line, "trait method") !== FALSE && stripos($line, "isConnected") !== FALSE)
- {
- $function = file_get_contents("data/CreateVaultRecon.data");
- $func_lines = explode("\n", $function);
- foreach($func_lines as $func)
- $new[] = $func;
- $added1 = true;
- }
- // Set the recon/drecon values in onReconnect()
- if ($flag1 == false && stripos($line, "trait method") !== FALSE && stripos($line, "onReconnect") !== FALSE)
- {
- $flag1 = true;
- }
- if ($flag1 && $added2 == false && stripos($line, "getlex") !== FALSE && stripos($line, "gs_") !== FALSE)
- {
- $function = file_get_contents("data/OnReconnect.data");
- $func_lines = explode("\n", $function);
- foreach($func_lines as $func)
- $new[] = $func;
- $added2 = true;
- }
- // Call the createVaultRecon function when connecting
- if ($flag2 == false && stripos($line, "trait method") !== FALSE && stripos($line, "onConnected") !== FALSE)
- {
- $flag2 = true;
- }
- if ($flag2 && $added3 == false && stripos($line, "returnvoid") !== FALSE)
- {
- $new[] = ' getlocal0';
- $new[] = ' getlocal2';
- $new[] = ' callpropvoid QName(PrivateNamespace(null, "kabam.rotmg.messaging.impl:GameServerConnectionConcrete"), "createVaultRecon"), 1';
- $new[] = '';
- $added3 = true;
- }
- $new[] = $line;
- }
- file_put_contents("client-0/kabam/rotmg/messaging/impl/GameServerConnectionConcrete.class.asasm", implode("\n", $new));
- echo "done.\n";
- // Edit Objects/Character
- echo "Editing Character...";
- file_put_contents("client-0/com/company/assembleegameclient/objects/Character.class.asasm", file_get_contents("data/Character.data"));
- echo "done.\n";
- // Edit Objects/Projectile
- echo "Editing Projectile...";
- $projectile = file_get_contents("client-0/com/company/assembleegameclient/objects/Projectile.class.asasm");
- $lines = explode("\n", $projectile);
- $new = array();
- $flag1 = $flag2 = $added1 = false;
- $remove = 0;
- foreach ($lines as $line)
- {
- // Replace the update function
- if ($flag1 == false && stripos($line, "trait method") !== FALSE && stripos($line, "update") !== FALSE)
- {
- $flag1 = true;
- $remove = 0;
- }
- if ($flag1 && $flag2 == false)
- {
- if (stripos($line, "trait method") !== false && stripos($line, "getHit") !== false)
- {
- $flag2 = true;
- }
- else
- {
- $remove++;
- }
- }
- if ($flag1 && $flag2 && $added1 == false)
- {
- $new = array_slice($new, 0, ($remove * -1));
- $function = file_get_contents("data/ProjectileUpdate.data");
- $func_lines = explode("\n", $function);
- foreach($func_lines as $func)
- $new[] = $func;
- $added1 = true;
- }
- $new[] = $line;
- }
- file_put_contents("client-0/com/company/assembleegameclient/objects/Projectile.class.asasm", implode("\n", $new));
- echo "done.\n";
- // Edit Objects/GameObject
- echo "Editing GameObject...";
- $gobj = file_get_contents("client-0/com/company/assembleegameclient/objects/GameObject.class.asasm");
- $lines = explode("\n", $gobj);
- $new = array();
- $flag1 = $flag2 = $added1 = $flag3 = $flag4 = $added2 = false;
- $remove = 0;
- foreach ($lines as $line)
- {
- // Replace Conditions
- if ($flag1 == false && stripos($line, "trait method") !== FALSE && stripos($line, "isQuiet") !== FALSE)
- {
- $flag1 = true;
- $remove = 0;
- }
- if ($flag1 && $flag2 == false)
- {
- if (stripos($line, "trait method") !== false && stripos($line, "isSafe") !== false)
- {
- $flag2 = true;
- }
- else
- {
- $remove++;
- }
- }
- if ($flag1 && $flag2 && $added1 == false)
- {
- $new = array_slice($new, 0, ($remove * -1));
- $function = file_get_contents("data/GameObjectConditions.data");
- $func_lines = explode("\n", $function);
- foreach($func_lines as $func)
- $new[] = $func;
- $added1 = true;
- }
- // Replace showDamageText
- if ($flag3 == false && stripos($line, "trait method") !== FALSE && stripos($line, "showDamageText") !== FALSE)
- {
- $flag3 = true;
- $remove = 0;
- }
- if ($flag3 && $flag4 == false)
- {
- if (stripos($line, "trait method") !== false && stripos($line, "makeNameBitmapData") !== false)
- {
- $flag4 = true;
- }
- else
- {
- $remove++;
- }
- }
- if ($flag3 && $flag4 && $added2 == false)
- {
- $new = array_slice($new, 0, ($remove * -1));
- $function = file_get_contents("data/ShowDamageText.data");
- $func_lines = explode("\n", $function);
- foreach($func_lines as $func)
- $new[] = $func;
- $added2 = true;
- }
- $new[] = $line;
- }
- file_put_contents("client-0/com/company/assembleegameclient/objects/GameObject.class.asasm", implode("\n", $new));
- echo "done.\n";
- // Edit Objects/GameObject
- echo "Editing Player...";
- $playerc = file_get_contents("client-0/com/company/assembleegameclient/objects/Player.class.asasm");
- $lines = explode("\n", $playerc);
- $new = array();
- $flag1 = $flag2 = $added1 = $flag3 = $flag4 = $added2 = $flag5 = $flag6 = $flag7 = $added3 = $flag8 = $flag9 = $added4 = $flag10 = $flag11 = $added5 = $flag12 = $flag13 = false;
- $remove = 0;
- foreach ($lines as $line)
- {
- // Safewalk
- if ($flag1 == false && stripos($line, "trait method") !== FALSE && stripos($line, "isValidPosition") !== FALSE)
- {
- $flag1 = true;
- }
- if ($flag1 && $flag2 == false && stripos($line, "setlocal3") !== FALSE)
- {
- $flag2 = true;
- }
- if ($flag1 && $flag2 && $added1 == false && trim($line) == '')
- {
- $new[] = ' getlex QName(PackageNamespace(""), "map_")';
- $new[] = ' getproperty QName(PackageNamespace(""), "gs_")';
- $new[] = ' getproperty QName(PackageNamespace(""), "mui_")';
- $new[] = ' getproperty QName(PrivateNamespace(null, "com.company.assembleegameclient.game:MapUserInput"), "mouseDown_")';
- $new[] = ' iftrue LSKIP';
- $new[] = '';
- $new[] = ' getlocal3';
- $new[] = ' getproperty QName(PackageNamespace(""), "props_")';
- $new[] = ' getproperty QName(PackageNamespace(""), "maxDamage_")';
- $new[] = ' pushbyte 0';
- $new[] = ' ifeq LSKIP';
- $new[] = '';
- $new[] = ' getlocal3';
- $new[] = ' getproperty QName(PackageNamespace(""), "obj_")';
- $new[] = ' pushnull';
- $new[] = ' ifne LSKIP';
- $new[] = '';
- $new[] = ' getlex QName(PackageNamespace("com.company.assembleegameclient.parameters"), "Parameters")';
- $new[] = ' getproperty QName(PackageNamespace(""), "data_")';
- $new[] = ' getproperty QName(PackageNamespace(""), "safeWalk")';
- $new[] = ' iffalse LSKIP';
- $new[] = '';
- $new[] = ' pushfalse';
- $new[] = ' returnvalue';
- $new[] = '';
- $line = 'LSKIP:';
- $added1 = true;
- }
- // Sprite World No Slide
- if ($flag3 == false && stripos($line, "trait method") !== FALSE && stripos($line, "update") !== FALSE)
- {
- $flag3 = true;
- }
- if ($flag3 && $flag4 == false && stripos($line, "getproperty") !== FALSE && stripos($line, "push_") !== FALSE)
- {
- $flag4 = true;
- }
- if ($flag3 && $flag4 && $added2 == false && stripos($line, "iffalse") !== FALSE)
- {
- $new[] = ' dup';
- $new[] = ' iffalse LSLIDE';
- $new[] = '';
- $new[] = ' pop';
- $new[] = ' getlex QName(PackageNamespace("com.company.assembleegameclient.parameters"), "Parameters")';
- $new[] = ' getproperty QName(PackageNamespace(""), "data_")';
- $new[] = ' getproperty QName(PackageNamespace(""), "swNoSlide")';
- $new[] = ' not';
- $new[] = 'LSLIDE:';
- $added2 = true;
- }
- // Sprite World Speedy
- if ($flag5 == false && stripos($line, "trait method") !== FALSE && stripos($line, "onMove") !== FALSE)
- {
- $flag5 = true;
- }
- if ($flag5 && $flag6 && $flag7 == false && stripos($line, "returnvoid") !== FALSE)
- {
- $flag7 = true;
- }
- if ($flag5 && $flag6 == false && stripos($line, "returnvoid") !== FALSE)
- {
- $flag6 = true;
- }
- if ($flag5 && $flag6 && $flag7 && $added3 == false)
- {
- $new[] = ' getlex QName(PackageNamespace("com.company.assembleegameclient.parameters"), "Parameters")';
- $new[] = ' getproperty QName(PackageNamespace(""), "data_")';
- $new[] = ' getproperty QName(PackageNamespace(""), "swSpeedy")';
- $new[] = ' iffalse LEND';
- $new[] = '';
- $new[] = ' getlex QName(PackageNamespace(""), "map_")';
- $new[] = ' getproperty QName(PackageNamespace(""), "name_")';
- $new[] = ' pushstring "Sprite World"';
- $new[] = ' ifne LEND';
- $new[] = '';
- $new[] = ' getlocal0';
- $new[] = ' pushdouble 1.5';
- $new[] = ' setproperty QName(ProtectedNamespace("com.company.assembleegameclient.objects:Player"), "moveMultiplier_")';
- $new[] = '';
- $new[] = 'LEND:';
- $added3 = true;
- }
- // Replace attemptAttackAngle & add aim_
- if ($flag8 == false && stripos($line, "trait method") !== FALSE && stripos($line, "attemptAttackAngle") !== FALSE)
- {
- $flag8 = true;
- $remove = 0;
- }
- if ($flag8 && $flag9 == false)
- {
- if (stripos($line, "trait method") !== false && stripos($line, "setAttack") !== false)
- {
- $flag9 = true;
- }
- else
- {
- $remove++;
- }
- }
- if ($flag8 && $flag9 && $added4 == false)
- {
- $new = array_slice($new, 0, ($remove * -1));
- $function = file_get_contents("data/PlayerAutoAim.data");
- $func_lines = explode("\n", $function);
- foreach($func_lines as $func)
- $new[] = $func;
- $added4 = true;
- }
- // Add autonexus
- if ($flag10== false && stripos($line, "trait method") !== FALSE && stripos($line, "update") !== FALSE)
- {
- $flag10 = true;
- }
- if ($flag10 && $flag11 == false && stripos($line, "setproperty") !== FALSE && stripos($line, "lastDamage_") !== FALSE)
- {
- $flag11 = true;
- }
- if ($flag10 && $flag11 && $added5 == false && stripos($line, "pushtrue") !== FALSE)
- {
- $function = file_get_contents("data/AutoNexus.data");
- $func_lines = explode("\n", $function);
- foreach($func_lines as $func)
- $new[] = $func;
- $added5 = true;
- }
- $new[] = $line;
- }
- file_put_contents("client-0/com/company/assembleegameclient/objects/Player.class.asasm", implode("\n", $new));
- echo "done.\n";
- // Edit GameObjectArrow
- echo "Editing GameObjectArrow...";
- $arrow = file_get_contents("client-0/com/company/assembleegameclient/map/partyoverlay/GameObjectArrow.class.asasm");
- $lines = explode("\n", $arrow);
- $new = array();
- $flag1 = false;
- $flag2 = false;
- $added1 = false;
- $remove = 0;
- foreach ($lines as $line)
- {
- // Replace the update function
- if ($flag1 == false && stripos($line, "trait method") !== FALSE && stripos($line, "draw") !== FALSE)
- {
- $flag1 = true;
- $remove = 0;
- }
- if ($flag1 && $flag2 == false)
- {
- if (stripos($line, "trait method") !== false && stripos($line, "positionTooltip") !== false)
- {
- $flag2 = true;
- }
- else
- {
- $remove++;
- }
- }
- if ($flag1 && $flag2 && $added1 == false)
- {
- $new = array_slice($new, 0, ($remove * -1));
- $function = file_get_contents("data/GameObjectArrowDraw.data");
- $func_lines = explode("\n", $function);
- foreach($func_lines as $func)
- $new[] = $func;
- $added1 = true;
- }
- $new[] = $line;
- }
- file_put_contents("client-0/com/company/assembleegameclient/map/partyoverlay/GameObjectArrow.class.asasm", implode("\n", $new));
- echo "done.\n";
- // Put everything back together, but in a new client
- echo "copying swf...";
- file_put_contents("myClient.swf", file_get_contents("client.swf"));
- if (!file_exists("myClient.swf"))
- {
- echo "failed to copy original swf!\n";
- exit();
- }
- echo "done.\n";
- // compile the new abc
- echo "running the new scripts through rabcasm.exe...";
- $output = shell_exec("{$PATH_TO_RABCDASM}rabcasm.exe client-0/client-0.main.asasm");
- if (!file_exists("client-0/client-0.main.abc"))
- {
- echo "error compiling everything!\n";
- echo $output . "\n";
- exit();
- }
- echo "done.\n";
- unset($output);
- // Replace the abc data in the new swf
- echo "replacing abc data in new client with abcreplace.exe...";
- $output = shell_exec("{$PATH_TO_RABCDASM}abcreplace.exe myClient.swf 0 client-0/client-0.main.abc");
- echo "done.\n$output\n";
- unset($output);
- function recursiveDelete($directory)
- {
- foreach(glob("{$directory}/*") as $file)
- {
- if(is_dir($file)) {
- recursiveDelete($file);
- } else {
- unlink($file);
- }
- }
- rmdir($directory);
- }
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement