Skip to content
MPGHThe Dark Arts
/
RegisterLog in
Forum
Community
What's NewLatest posts across the boardTrendingHottest threads right nowSubscribedThreads you follow
Discussion
GeneralIntroductionsEntertainmentDebate FortFlaming & Rage
Board
News & AnnouncementsMPGH TimesSuggestions & HelpGiveaways
More Sections
Art & Graphic DesignProgrammingHackingCryptocurrency
Hacks & Cheats
Games
ValorantCS2 / CS:GOCall of Duty / WarzoneFortniteApex LegendsEscape From Tarkov
+14 moreLeague of LegendsGTA VMinecraftRustROTMGBattlefieldTroveBattleOnCombat ArmsCrossFireBlackshotRuneScapeDayZDead by Daylight
Resources
Game Hacking TutorialsReverse EngineeringGeneral Game HackingAnti-CheatConsole Game Hacking
Tools
Game Hacking ToolsTrainers & CheatsHack/Release NewsNew
Submit a release →Share your cheat, tool, or config with the community.
AINEW
AI Tools
General & DiscussionPrompt EngineeringLLM JailbreaksHotAI Agents & AutomationLocal / Open Models
AI × Gaming
AI Aimbots & VisionML Anti-CheatGame Bots & Automation
Create
AI Coding / Vibe CodingAI Art & MediaAI Voice & TTS
The AI frontier →Where game hacking meets modern machine learning. Jump in.
Marketplace
Buy & Sell
SellingBuyingTradingUser Services
Trust & Safety
Middleman LoungeMarketplace TalkVouch Copy Profiles
Money
Cryptocurrency TalkCurrency ExchangeWork & Job Offers
Start selling →List accounts, services, and goods. Use the middleman to trade safe.
MPGH The Dark Arts

A community for offensive security research, reverse engineering, and AI.

Community

ForumMarketplaceSearch

Account

RegisterLog in

Legal

Privacy PolicyForum RulesHelp & FAQ
© 2026 MPGH · All rights reserved.Built by the community, for the community. For educational purposes onlyContent is shared for security research and education — we don't condone illegal use. You're responsible for complying with applicable laws. Use at your own risk.
Home › Forum › MultiPlayer Game Hacks & Cheats › BattleOn Games Hacks, Cheats & Trainers › Adventure Quest Worlds (AQW) Hacks / Cheats / Trainers › Adventure Quest Worlds (AQW) Tutorials, Source Code & Coding › How To Make An Adventure Quest Worlds (AQW) Private Server Trainer

How To Make An Adventure Quest Worlds (AQW) Private Server Trainer

Posts 16–30 of 86 · Page 2 of 6
…
HU
Hunter
Quote Originally Posted by Oliboli8769 View Post
There's lots of applications that do it. Try SWFKit, Flajector, FFDec etc.
I use FFDec because I find it quick.

- - - Updated - - -
@Hunter please could you add a note to the top of this thread? The Augoeides loader is outdated because of the patch, so just a note something like:

"The example code given for Augoeides has been patched and is no longer working. The rest of the tutorial is still applicable to other servers, though."
Has been done. Let me know if you need anything else.
#16 · 10y ago
PH
PhoenixPrime
How do i fix this?
prntscr.com/bp468n
#17 · 10y ago
Oliboli8769
Oliboli8769
Quote Originally Posted by PhoenixPrime View Post
How do i fix this?
prntscr.com/bp468n
It's your local Flash player security settings. Find the flash player settings on your computer, and make sure the SWF you're using for your project is under 'trusted locations'.
#18 · 10y ago
PH
PhoenixPrime
Quote Originally Posted by Oliboli8769 View Post
It's your local Flash player security settings. Find the flash player settings on your computer, and make sure the SWF you're using for your project is under 'trusted locations'.
Error: Error #2067: The ExternalInterface is not available in this container. ExternalInterface requires Internet Explorer ActiveX, Firefox, Mozilla 1.7.5 and greater, or other browsers that support NPRuntime.
at Error$/throwError()
at flash.external::ExternalInterface$/addCallback()
at Game()
What about this?
#19 · 10y ago
Oliboli8769
Oliboli8769
Quote Originally Posted by PhoenixPrime View Post
Error: Error #2067: The ExternalInterface is not available in this container. ExternalInterface requires Internet Explorer ActiveX, Firefox, Mozilla 1.7.5 and greater, or other browsers that support NPRuntime.
at Error$/throwError()
at flash.external::ExternalInterface$/addCallback()
at Game()
What about this?
What version of Flash Pro are you using?
#20 · 10y ago
PH
PhoenixPrime
Quote Originally Posted by Oliboli8769 View Post
What version of Flash Pro are you using?
I use Flash Professional CS6
#21 · 10y ago
Oliboli8769
Oliboli8769
Quote Originally Posted by PhoenixPrime View Post
I use Flash Professional CS6
That should be fine I think, but it's all to do with the version of Flash you're using.
I'm really tired right now and can't remember what flash versions work/how to get around that
#22 · 10y ago
PH
PhoenixPrime
Quote Originally Posted by Oliboli8769 View Post
That should be fine I think, but it's all to do with the version of Flash you're using.
I'm really tired right now and can't remember what flash versions work/how to get around that
SecurityError: Error #2148: SWF file ://blabla.cm/gamefiles/abyssaldrakove.swf cannot access local resource file:///Z|/FromMemory/D7BAED74924D435D84DB8A1E89E7AE3A/100/Gamefiles/undefined. Only local-with-filesystem and trusted local SWF files may access local resources.
at flash.media::Sound/_load()
at flash.media::Sound/load()
at Game/loadBGM()
at Game/frame10()

What about this, Oli?
#23 · 10y ago
Oliboli8769
Oliboli8769
Quote Originally Posted by PhoenixPrime View Post
SecurityError: Error #2148: SWF file ://blabla.cm/gamefiles/abyssaldrakove.swf cannot access local resource file:///Z|/FromMemory/D7BAED74924D435D84DB8A1E89E7AE3A/100/Gamefiles/undefined. Only local-with-filesystem and trusted local SWF files may access local resources.
at flash.media::Sound/_load()
at flash.media::Sound/load()
at Game/loadBGM()
at Game/frame10()

What about this, Oli?
Are you making it for a private server? I can't tell you entirely because I can't see all the code. But firstly, blabl*****m isn't really the address is it? Guessing you just put that there as a filler.

Looks like the problem comes from loading sound files though, probably using the typical variable "sURL" or "sURL2".
Add the line "Game.params.sURL = your games http address"

Sorry I'm on my phone and it's a lot harder to navigate.
#24 · 10y ago
UR
urabaxwbk
I have a question about a particular mechanism some private servers servers use. Warning: I might be completely wrong about some of this, not an expert at all.

I was giving your loader code a go because I wanted to play around with it, but had a hard time actually using it. I found one of those youtube channels that promote private servers and gave some of them a go. Some of these servers seem pretty much like you described them in this topic, but some of them used (in my opinion) weird .../gameversion.asp (sometimes .php) files. The files basically described the sFile to be a .png image or something similar. Downloading the .png image and simply renaming it to .swf would give the relevant file, something you would get when you download AQW's swf.

An example (there are tons more):
status=success&sFile=BisaDiLeech$5.png&sTitle=VIP Map Come&sBG=Newbie-Satifaction.swf
from: https://chronelore.auldgames.com/game

My (probably stupid) question: how do I go about loading(/converting) this as(/to) an actual SWF inside your loader code? Also, is there a particular reason they use this (apart from countering noobs like me)? I'm not necessarily asking for code, just a hint in the right direction would be nice.

Thanks in advance!
#25 · edited 8y ago · 8y ago
Oliboli8769
Oliboli8769
Quote Originally Posted by urabaxwbk View Post
I have a question about a particular mechanism some private servers servers use. Warning: I might be completely wrong about some of this, not an expert at all.

I was giving your loader code a go because I wanted to play around with it, but had a hard time actually using it. I found one of those youtube channels that promote private servers and gave some of them a go. Some of these servers seem pretty much like you described them in this topic, but some of them used (in my opinion) weird .../gameversion.asp (sometimes .php) files. The files basically described the sFile to be a .png image or something similar. Downloading the .png image and simply renaming it to .swf would give the relevant file, something you would get when you download AQW's swf.

An example (there are tons more):
status=success&sFile=BisaDiLeech$5.png&sTitle=VIP Map Come&sBG=Newbie-Satifaction.swf
from: https://chronelore.auldgames.com/game

My (probably stupid) question: how do I go about loading(/converting) this as(/to) an actual SWF inside your loader code? Also, is there a particular reason they use this (apart from countering noobs like me)? I'm not necessarily asking for code, just a hint in the right direction would be nice.

Thanks in advance!
Hey!
It's late here sadly so don't have much time to have a look at it. But from what I understand, it's quite an easy fix.
They'll probably be doing that just to try and fool you out. When you load from gameversion.asp all you're retrieving is a String which contains the sFile variable.
So all you should have to do is manipulate the string by removing the ".png" ending and replacing it with ".swf".
If this is the case, you can easily achieve this with basic string functions built into ActionScript. Look up "Find and Replace" or something similar in AS3 and a tutorial should come up.

I would give you the code but you said you'd prefer just to be pointed in the right direction
If I misunderstood the whole issue then please do let me know, I'm exhausted and off to bed ahahah

Oli
#26 · 8y ago
UR
urabaxwbk
First of all, thanks for the quick reply!

Sadly, as far as I know that wouldn't work because the URL request would simply request a non-existent file.
I just tested it anyway and I don't think I could get it to work (used the dirty method of putting in the whole string for testing purposes, no regular expression fun for now :P).

Anyway, I had a look at the AS3 Reference, which gave the logical (in terms of supplying a .png not giving any errors) information:
Loader(): Creates a Loader object that you can use to load files, such as SWF, JPEG, GIF, or PNG files.
After reading this, I tried loading a .png image from google the same way I would with the supplied loader script, which loaded just fine when testing. EDIT: did this step because the .png in question gave no visual clues of it being there, while dice.png came to the rescue.
The loader seems to be fine with loading the .png in the same way a browser would display:
https://chronelore.auldgames.com/gam...aDiLeech$5.png
Will (hopefully) remove the url from here when done because I feel bad for them being the test subject.
And although it's a beautiful image , I'd still prefer it being loaded as an .swf; hence why I was asking about converting the file or the way it is being interpreted or something like that. I feel like there might be some easy way I'm currently overseeing.

If you have any ideas about a step in between the swfLoader.load() stage and making the URL request, I'd love to hear it. GN!
#27 · edited 8y ago · 8y ago
Oliboli8769
Oliboli8769
@urabaxwbk Ahh yes of course. I realise now you mean you had to download the .png file and then convert it to .swf
There won't be a .swf file URL too like I'd said before, you're right, sorry about that.

I believe I know how I could fix this, but there's only one issue... my ISP has blocked that site because it believes it to be malicious
Are there any other private servers you know of, that use the same .png file? In the meantime I'll try to request it to be unblocked by my ISP.
#28 · 8y ago
UR
urabaxwbk
No problem about the first suggestion, I might have worded some things a little strange ^^.
Welp I was going to give you a list as I had tested quite a couple of servers before, but they all seem to have been closed (and one went back to a swf file...).
I have listed the details from another server using le png method down here; if this one doesn't work I will have to wait until the shitty channel I get these from uploads another video (although nothing will beat "AQW Private Server you can cuss in!" ).

From: https://zentry.redseason.net/play.php
Gamversion File: https://zentry.redseason.net/gameversion.php
Png: https://zentry.redseason.net/gamefiles/ZENTRYOnline.png

I think the owner of this server doesn't have his registration setup correctly, but I think it will do in terms of an example?
By the way, I can only look into it myself on and off, so please don't feel obligated to immediately post an answer or something like that.
If you know a function that does something like performing a "load as" or converts it, that might help a lot.
#29 · edited 8y ago · 8y ago
Oliboli8769
Oliboli8769
@urabaxwbk Okay so I've had a little look. Despite the file weirdly ending in .png, the game actually loads perfectly for me - unless I'm missing something/being stupid.

I decompiled the Game's loader code itself located at /gamefiles/Loaderv2.swf and this is how they load the game themselves:
Code:
package Loader_fla
{
   import flash.display.Loader;
   import flash.display.MovieClip;
   import flash.events.Event;
   import flash.events****ErrorEvent;
   import flash.events.ProgressEvent;
   import flash.net.URLLoader;
   import flash.net.URLVariables;
   import flash.system.ApplicationDomain;
   
   public dynamic class MainTimeline extends MovieClip
   {
       
      
      public var mcLoading:MovieClip;
      
      public var sFile;
      
      public var sTitle;
      
      public var sBG:String;
      
      public var sURL:String;
      
      public var versionURL:String;
      
      public var loader:URLLoader;
      
      public var titleDomain:ApplicationDomain;
      
      public function MainTimeline()
      {
         super();
         addFrameScript(0,frame1);
      }
      
      public function getBrowserQueryVar(param1:String) : String
      {
         var _loc2_:String = null;
         var _loc4_:RegExp = null;
         var _loc5_:Array = null;
         var _loc6_:String = null;
         var _loc3_:* = undefined;
         if(ExternalInterface.available)
         {
            _loc2_ = ExternalInterface.call("window.location.search.toString");
            _loc3_ = param1;
            _loc4_ = new RegExp("[?&]" + _loc3_ + "(?:=([^&]*))?","i");
            _loc5_ = _loc4_.exec(_loc2_);
            _loc6_ = null;
            if(_loc5_ && _loc5_.length)
            {
               _loc6_ = _loc5_[1];
            }
            return _loc6_;
         }
         return null;
      }
      
      public function onDataComplete(param1:Event) : void
      {
         trace("onDataComplete:" + param1.target.data);
         var _loc2_:URLVariables = new URLVariables(param1.target.data);
         if(_loc2_.status == "success")
         {
            sFile = _loc2_.sFile;
            sTitle = _loc2_.sTitle;
            sBG = _loc2_.sBG;
            loadTitle();
            loadGame();
         }
         else
         {
            trace(_loc2_.strReason);
         }
      }
      
      public function loadTitle() : void
      {
         var _loc1_:Loader = new Loader();
         _loc1_.contentLoaderInfo.addEventListener(Even*****MPLETE,onTitleComplete);
         _loc1_.contentLoaderInfo.addEventListener(IOErrorEvent****_ERROR,onError);
         _loc1_.load(new URLRequest("gamefiles/title/" + sBG),new LoaderContext(false,titleDomain));
      }
      
      public function onTitleComplete(param1:Event) : void
      {
         trace("Title Loaded");
      }
      
      public function loadGame() : void
      {
         var _loc1_:Loader = new Loader();
         _loc1_.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,onProgress);
         _loc1_.contentLoaderInfo.addEventListener(Even*****MPLETE,onComplete);
         _loc1_.contentLoaderInfo.addEventListener(IOErrorEvent****_ERROR,onError);
         _loc1_.load(new URLRequest("gamefiles/" + sFile));
         mcLoading.strLoad.text = "";
      }
      
      public function onProgress(param1:ProgressEvent) : void
      {
         var _loc2_:int = param1.currentTarget.bytesLoaded / param1.currentTarget.bytesTotal * 100;
         mcLoading.strLoad.text = "Loading " + _loc2_ + "%";
      }
      
      public function onComplete(param1:Event) : void
      {
         var _loc2_:* = undefined;
         var _loc3_:* = stage;
         _loc3_.removeChildAt(0);
         var _loc4_:* = _loc3_.addChild(MovieClip(Loader(param1.target.loader).content));
         for(_loc2_ in root.loaderInfo.parameters)
         {
            trace(_loc2_ + ": " + root.loaderInfo.parameters[_loc2_]);
            _loc4_.params[_loc2_] = root.loaderInfo.parameters[_loc2_];
         }
         _loc4_.params.sURL = sURL;
         _loc4_.params.sTitle = sTitle;
         _loc4_.titleDomain = titleDomain;
      }
      
      public function onError(param1:IOErrorEvent) : void
      {
         trace("Preloader IOError: " + param1);
      }
      
      function frame1() : *
      {
         Security.allowDomain("*");
         sURL = this.loaderInfo.url.substring(0,this.loaderInfo.url.lastIndexOf("gamefiles/"));
         trace("sURL: " + sURL);
         versionURL = "gameversion.php";
         trace("versionURL: " + versionURL);
         loader = new URLLoader();
         loader.addEventListener(Even*****MPLETE,onDataComplete);
         loader.load(new URLRequest(versionURL));
         titleDomain = new ApplicationDomain();
      }
   }
}
From what I can see the game is loaded in the same way as we do in our Loader code. Ignore all the 'loc' things - just treat them as normal variables, it's just the ugly way it's decompiled. If you see something you reckon is different let me know - if you couldn't already tell I make mistakes

I used the following (rough) loader code and it appeared to work for me, sorry if I'm still missing what the problem is:

Code:
import flash.events.Event;
 
//Comments by Oliboli8769
 
Security.allowDomain("*");
//URLs as Strings used for easiness
var sURL1 = "https://aqworldscdn.aq.com/game/";
var sURL2 = "https://cdn.aqworlds.com/game/";
var sFile; //used to store game version string
var versionLoader: URLLoader;
var Game: Object;
var swfContext: LoaderContext;
var swfLoader: Loader;
var swfRequest: URLRequest;
 
GetVersion(); //starts game load
 
function GetVersion() {
        //checks for most recent game version from ASP file
        versionLoader = new URLLoader();
        versionLoader.addEventListener(Even*****MPLETE, onVersionComplete); //adds event listener for when the ASP is loaded
        versionLoader.load(new URLRequest("https://zentry.redseason.net/gameversion.php")); //same as https://aqworldscdn.aq.com/game/gameversion.asp
}
function onVersionComplete(param1: Event) {
        //ASP file has now been fully loaded
        var vars: URLVariables;
        vars = new URLVariables(param1.target.data); //reads variables held on loaded ASP
        if (vars.status == "success") //checks the 'status' var on ASP
        {
                //after confirmation
                sFile = vars.sFile; //reads game version linkage and saves as the variable sFile
                LoadGame(); //now the version is found, we can load the game
        }
}
function LoadGame() {
        swfContext = new LoaderContext(false, ApplicationDomain.currentDomain, null);
        swfLoader = new Loader();
        swfRequest = new URLRequest("https://zentry.redseason.net/gamefiles/" + sFile); //using sFile from before as updated game linkage
        swfLoader.contentLoaderInfo.addEventListener(Even*****MPLETE, onGameComplete); //adds event listener for the game load
        swfLoader.contentLoaderInfo.addEventListener(flash.events.ProgressEvent.PROGRESS, onGameProgress); //adds event listener for how much the game has loaded
        swfLoader.load(swfRequest, swfContext);
        stage.quality = StageQuality.LOW; //sets stage quality to low, possibly reducing lag (optional)
}
function onGameComplete(loadEvent: Event) {
        stage.addChildAt(loadEvent.currentTarge*****ntent, 0); //adds the loaded game content to the stage
        loadEvent.currentTarge*****ntent.y = 0.0;
        loadEvent.currentTarge*****ntent.x = 0.0;
        Game = Object(loadEvent.currentTarge*****ntent); //stores loaded content onto the Object Game
        Game.params.sURL2 = sURL2;
        Game.params.sTitle = "Trainer Tutorial By OB";
}
function onGameProgress(arg1: flash.events.ProgressEvent): void {
        //this can be used for progress bars/loaders before trainers
        var percentage: *= arg1.bytesLoaded / arg1.bytesTotal;
        trace(percentage * 100); //traces how much the game has loaded as a percentage
        return;
}
function SendPacket(packet: String) {
        var args: Array = new Array;
        var tempArg: String = "";
        var var1: String = "";
        var done1: Boolean = false;
        var var2: String = "";
        var done2: Boolean = false;
        var done3: Boolean = false;
        var done4: Boolean = false;
 
        var i: Number = 1;
 
        while (i < packet.length) {
                if (packet.charAt(i) != "%") {
                        if (done1 && !done2) {
                                var1 += packet.charAt(i);
                        } else if (done1 && done2 && !done3) {
                                var2 += packet.charAt(i);
                        } else if (done1 && done2 && done3 && done4) {
                                tempArg += packet.charAt(i);
                        }
                } else {
                        if (!done1) {
                                done1 = true;
                        } else if (done1 && !done2) {
                                done2 = true;
                        } else if (done1 && done2 && !done3) {
                                done3 = true;
                        } else if (done1 && done2 && done3 && !done4) {
                                done4 = true;
                        } else if (done1 && done2 && done3 && done4) {
                                args.push(tempArg);
                                tempArg = "";
                        }
                }
 
                i++;
        }
 
        var room: String = Game.world.curRoom;
 
        switch (var2) {
                case "afk":
                        room = "1";
                        break;
                case "hi":
                        room = "1";
                        break;
                case "gar":
                        room = "1";
                        break;
                case "cmd":
                        room = "1";
                        break;
        }
 
        trace("Zone Master: " + var1);
        trace("Packet Type: " + var2);
        trace("Arguements: " + args);
        Game.sfc.sendXtMessage(var1, var2, args, "str", room);
}
stop();
#30 · 8y ago
Posts 16–30 of 86 · Page 2 of 6
…

Post a Reply

Similar Threads

  • Adventure Quest Worlds (AQW) Hacks / Cheats / Trainers Rules & GuidelinesBy Hunter in Adventure Quest Worlds (AQW) Hacks / Cheats / Trainers
    4Last post 9y ago
  • Adventure Quest Worlds (AQW) Shop ID's [Request Them Here]By Hunter in Adventure Quest Worlds (AQW) Hacks / Cheats / Trainers
    201Last post 8y ago
  • Adventure Quest Worlds - AQW - what to do with money?By aviv0404 in Adventure Quest Worlds (AQW) Discussions
    4Last post 11y ago

Tags for this Thread

None