Welcome!

Join our community of MMO enthusiasts and game developers! By registering, you'll gain access to discussions on the latest developments in MMO server files and collaborate with like-minded individuals. Join us today and unlock the potential of MMO server development!

Join Today!

[Development] Webgame MuOnline

Junior Spellweaver
Joined
Oct 29, 2012
Messages
155
Reaction score
16
Re: [RELEASE] webgame MuOnline

need translation game
mario2015 - [Development] Webgame MuOnline - RaGEZONE Forums
 
Newbie Spellweaver
Joined
Jan 6, 2018
Messages
43
Reaction score
4
Re: [RELEASE] webgame MuOnline

Only black screen after choosing server , no errors in DB or CMD, checked in 9 browsers and nothing work, only black screen everywhere
 
Junior Spellweaver
Joined
Jan 24, 2012
Messages
168
Reaction score
88
Re: [RELEASE] webgame MuOnline

I only have this error:

"?????????,????
oid = null"

Something wrong with locale and etc... -_-'' too lazzy for fix them by my self. But game really works.

I know how to unpack this swf files, they are encrypted. Any SWF file should have "FWS","CWS" or "ZWS" handler. But those files has: "FΩî" header. Well:

Code:
package
{
   import avm2.intrinsics.memory.lf32;
   import avm2.intrinsics.memory.lf64;
   import avm2.intrinsics.memory.li16;
   import avm2.intrinsics.memory.li32;
   import avm2.intrinsics.memory.sf32;
   import avm2.intrinsics.memory.sf64;
   import avm2.intrinsics.memory.si16;
   import avm2.intrinsics.memory.si32;
   import avm2.intrinsics.memory.si8;
   import avm2.intrinsics.memory.sxi1;
   import avm2.intrinsics.memory.sxi16;
   import avm2.intrinsics.memory.sxi8;
   import flash.display.DisplayObject;
   import flash.display.DisplayObjectContainer;
   import flash.display.Loader;
   import flash.display.LoaderInfo;
   import flash.display.MovieClip;
   import flash.display.Sprite;
   import flash.display.Stage;
   import flash.events.Event;
   import flash.events.ProgressEvent;
   import flash.system.ApplicationDomain;
   import flash.system.LoaderContext;
   import flash.system.Security;
   import flash.utils.ByteArray;
   import flash.utils.Endian;
   
   public dynamic class ǻ extends MovieClip
   {
      
      private static const LOADING_BAR_CLASS:String = "_doswf_package.LoadingBarBase";
       
      
      private var uiSWFBytes;
      
      private var context;
      
      private var loadingBar;
      
      private var init#24:Boolean;
      
      private var key#4:uint;
      
      private var key#25:uint;
      
      private var key#20:uint;
      
      private var bytesLen#4:uint;
      
      private var progressEvent;
      
      private var enterFrameHandler#22;
      
      private var garbageBytes#4;
      
      public function ǻ()
      {
         super();
         if(Security.sandboxType != "application")
         {
            Security.allowDomain("*");
         }
         if(stage)
         {
            this.init#4();
         }
         else
         {
            addEventListener(Event.ADDED_TO_STAGE,this.init#4);
         }
      }
      
      private function init#4(param1:Event = null) : void
      {
         var _loc2_:* = null;
         _loc2_ = null;
         if(param1)
         {
            removeEventListener(Event.ADDED_TO_STAGE,this.init#4);
         }
         this.context = new LoaderContext(false,ApplicationDomain.currentDomain);
         if(this.context.hasOwnProperty("allowLoadBytesCodeExecution"))
         {
            Object(this.context).allowLoadBytesCodeExecution = true;
         }
         if(this.context.hasOwnProperty("parameters"))
         {
            Object(this.context)["parameters"] = stage.loaderInfo.parameters;
         }
         DisplayObject.prototype["@doswf__s"] = stage;
         DisplayObject.prototype.setPropertyIsEnumerable("@doswf__s",false);
         LoaderInfo.prototype["@doswf__u"] = stage.loaderInfo.url;
         LoaderInfo.prototype.setPropertyIsEnumerable("@doswf__u",false);
         LoaderInfo.prototype["@doswf__p"] = stage.loaderInfo.parameters;
         LoaderInfo.prototype.setPropertyIsEnumerable("@doswf__p",false);
         if(ApplicationDomain.currentDomain.hasDefinition(LOADING_BAR_CLASS))
         {
            _loc2_ = ApplicationDomain.currentDomain.getDefinition(LOADING_BAR_CLASS) as Class;
            this.loadingBar = new _loc2_() as DisplayObject;
            addChild(this.loadingBar);
            stop();
            addEventListener(Event.ENTER_FRAME,this.enterFrameHandler#4);
         }
         else
         {
            this.bytesLen#23();
         }
      }
      
      private function bytesLen#23() : void
      {
         var _loc7_:* = null;
         var _loc6_:* = null;
         var _loc5_:* = null;
         var _loc4_:* = null;
         var _loc3_:* = null;
         var _loc2_:* = null;
         var _loc1_:* = null;
         _loc7_ = uint(0);
         _loc1_ = new §̳Ǵ§();
         _loc1_.endian = Endian.LITTLE_ENDIAN;
         _loc1_.position = 0;
         this.key#25 = _loc1_.readUnsignedByte() - 1;
         this.key#4 = _loc1_.readUnsignedByte() - 5;
         this.key#20 = _loc1_.readUnsignedInt() - 7;
         this.bytesLen#4 = _loc1_.readUnsignedInt() - 3;
         _loc2_ = new ByteArray();
         _loc2_.writeBytes(_loc1_,_loc1_.length - this.bytesLen#4,this.bytesLen#4);
         _loc3_ = uint(0);
         do
         {
            _loc7_ = uint(0);
            while(_loc7_ < this.key#25)
            {
               _loc2_[_loc3_] = _loc2_[_loc3_] ^ this.key#4;
               _loc3_++;
               if(_loc3_ >= this.bytesLen#4)
               {
                  break;
               }
               _loc7_ = uint(_loc7_ + 7);
            }
            _loc3_ = uint(_loc3_ + this.key#20);
         }
         while(_loc3_ < this.bytesLen#4);
         
         _loc2_.uncompress();
         _loc2_.endian = Endian.LITTLE_ENDIAN;
         _loc2_.position = 0;
         if(_loc2_.readBoolean())
         {
            this.garbageBytes#21(_loc2_);
         }
         this.init#24 = _loc2_.readBoolean();
         _loc4_ = uint(_loc2_.readUnsignedInt());
         _loc5_ = new ByteArray();
         _loc2_.readBytes(_loc5_,0,_loc4_);
         this.uiSWFBytes = new ByteArray();
         _loc2_.readBytes(this.uiSWFBytes);
         _loc6_ = new Loader();
         _loc6_.contentLoaderInfo.addEventListener(Event.INIT,this.loaderEventsHandler);
         _loc6_.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,this.loaderEventsHandler);
         _loc8_[String(String(_loc6_).split(/[\s\]]+/g)[1]).toLocaleLowerCase().substr(0,-2) + "Bytes"](_loc5_,this.context);
      }
      
      private function loaderEventsHandler(param1:Event) : void
      {
         var _loc6_:* = null;
         var _loc5_:* = null;
         var _loc4_:* = null;
         var _loc3_:* = null;
         var _loc2_:* = null;
         _loc4_ = null;
         _loc5_ = 0;
         _loc6_ = undefined;
         if(param1 is ProgressEvent)
         {
            this.progressEvent = param1 as ProgressEvent;
            return;
         }
         _loc2_ = param1.target as LoaderInfo;
         _loc2_.removeEventListener(Event.INIT,this.loaderEventsHandler);
         _loc2_.removeEventListener(ProgressEvent.PROGRESS,this.loaderEventsHandler);
         _loc3_ = _loc2_.loader;
         if(this.uiSWFBytes)
         {
            _loc3_ = new Loader();
            _loc3_.contentLoaderInfo.addEventListener(Event.INIT,this.loaderEventsHandler);
            _loc3_.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,this.loaderEventsHandler);
            _loc3_[String(String(_loc3_).split(/[\s\]]+/g)[1]).toLocaleLowerCase().substr(0,-2) + "Bytes"](this.uiSWFBytes,this.context);
            this.uiSWFBytes = null;
            return;
         }
         if(parent is Stage)
         {
            if(this.init#24)
            {
               parent.addChildAt(_loc3_.content,0);
               parent.removeChild(this);
            }
            else
            {
               addChild(_loc3_);
            }
         }
         else if(this.init#24)
         {
            addChildAt(_loc3_.content,0);
         }
         else
         {
            addChildAt(_loc3_,0);
         }
         if(this.init#24 && this.progressEvent)
         {
            _loc4_ = _loc2_.content as DisplayObjectContainer;
            if(_loc4_.hasOwnProperty("@doswf__lph"))
            {
               Object(_loc4_)["@doswf__lph"](this.progressEvent);
            }
            else
            {
               _loc5_ = 0;
               while(_loc5_ < _loc4_.numChildren)
               {
                  _loc6_ = _loc4_.getChildAt(_loc5_);
                  if(_loc6_.hasOwnProperty("@doswf__lph"))
                  {
                     _loc6_["@doswf__lph"](this.progressEvent);
                     break;
                  }
                  _loc5_++;
               }
            }
         }
      }
      
      private function enterFrameHandler#4(param1:Event) : void
      {
         var _loc2_:* = null;
         _loc2_ = Number(loaderInfo.bytesLoaded / loaderInfo.bytesTotal);
         Object(this.loadingBar).setProgress(this,_loc2_);
         if(_loc2_ == 1)
         {
            removeEventListener(Event.ENTER_FRAME,this.enterFrameHandler#4);
            removeChild(this.loadingBar);
            gotoAndStop(2);
            this.bytesLen#23();
         }
      }
      
      private function garbageBytes#21(param1:ByteArray) : void
      {
         var _loc4_:* = null;
         var _loc3_:* = null;
         var _loc2_:* = null;
         this.enterFrameHandler#22 = [];
         _loc2_ = uint(param1.readUnsignedInt());
         _loc3_ = uint(param1.readUnsignedInt());
         _loc4_ = new ByteArray();
         param1.readBytes(_loc4_,0,_loc3_);
         this.garbageBytes#4 = new ByteArray();
         this.garbageBytes#4.endian = Endian.LITTLE_ENDIAN;
         this.enterFrameHandler#22 = [_loc2_,_loc4_];
         addEventListener(Event.ENTER_FRAME,this.garbageBytes#26);
         this.garbageBytes#26(null);
      }
      
      private function garbageBytes#26(param1:Event) : void
      {
         var _loc7_:* = null;
         var _loc6_:* = null;
         var _loc5_:* = null;
         var _loc4_:* = null;
         var _loc3_:* = null;
         var _loc2_:* = null;
         _loc5_ = null;
         _loc6_ = null;
         _loc7_ = uint(0);
         _loc2_ = uint(this.enterFrameHandler#22[0]);
         _loc3_ = this.enterFrameHandler#22[1];
         _loc4_ = 3;
         while(_loc4_-- > 0)
         {
            _loc5_ = new ByteArray();
            _loc5_.writeBytes(_loc3_);
            _loc5_.position = _loc5_.length;
            _loc5_.endian = Endian.LITTLE_ENDIAN;
            _loc6_ = new ByteArray();
            _loc7_ = uint(Math.random() * Math.min(_loc2_,2 * 1024 * 1024));
            while(_loc6_.length < _loc7_)
            {
               _loc6_.writeBytes(_loc3_,Math.random() * _loc3_.length / 3);
            }
            _loc6_.length = _loc7_;
            if(_loc6_.length >= 63)
            {
               _loc5_.writeShort(87 << 6 | 63);
               _loc5_.writeUnsignedInt(_loc6_.length);
            }
            else
            {
               _loc5_.writeShort(87 << 6 | _loc6_.length);
            }
            _loc5_.writeBytes(_loc6_);
            _loc5_.writeShort(1 << 6);
            _loc5_.writeShort(0);
            _loc5_.position = 4;
            _loc5_.writeUnsignedInt(_loc5_.length);
            this.garbageBytes#4.writeBytes(_loc5_);
            if(this.garbageBytes#4.length > 30 * 1024 * 1024)
            {
               removeEventListener(Event.ENTER_FRAME,this.garbageBytes#26);
               break;
            }
         }
      }
   }
}

Answer is on GL.swf file ;) They already do decrypt of those files. Source of them is above. Goodluck
 
Joined
Jun 3, 2009
Messages
975
Reaction score
282
Re: [RELEASE] webgame MuOnline

take swf in webzen, same file, but different version
Which webzen exactly i dont see any english server of this

Easy Repack:
password: ambot
Features: run batch file with easy 1 2 3 steps
Open browser to 127.0.0.1/index.php

*Dont forget to enable Flash if your using Chrome Browser
Credits: Tuan565

Additional Note: Tools to unpack .swf file not working


mario2015 - [Development] Webgame MuOnline - RaGEZONE Forums
 
Last edited:
Newbie Spellweaver
Joined
Apr 29, 2015
Messages
7
Reaction score
0
Re: [RELEASE] webgame MuOnline

i need tool unpack file swf, plz share :(
 
Coxiez
Banned
Joined
Aug 31, 2006
Messages
859
Reaction score
67
Re: [RELEASE] webgame MuOnline

if your pc is win10 think its work look what win_version he use! if you win7 good luck ^_^ only work in win7 is run the .java not the batch.exe to avoid error
 
Joined
Jun 3, 2009
Messages
975
Reaction score
282
Re: [RELEASE] webgame MuOnline

It working on win 10 too. Btw this is a chinese version of Mu Igniton (2 months released in europe..)
No its not like Mu Ignition it is a Mu Online game on browser its a flash webgame in 3d not in 2.5d check the difference. This game is way better than Mu Ignition in terms of gameplay and graphics

Mu Ignition Gameplay
 
Junior Spellweaver
Joined
Oct 5, 2016
Messages
106
Reaction score
7
Re: [RELEASE] webgame MuOnline

Password is on the filename


does not work
 
Coxiez
Banned
Joined
Aug 31, 2006
Messages
859
Reaction score
67
Re: [RELEASE] webgame MuOnline

ok i try it!
No its working with Win7 without any problems check the one that I upload it was different setup and files. Running on Win7​


 
Joined
Jul 24, 2011
Messages
807
Reaction score
614
Re: [RELEASE] webgame MuOnline

No its not like Mu Ignition it is a Mu Online game on browser its a flash webgame in 3d not in 2.5d check the difference. This game is way better than Mu Ignition in terms of gameplay and graphics

Mu Ignition Gameplay

The core functions are same. May igniton is using other technology or same but earlier version. But example the Membership, the questing, the premium service exactly same..
 
Junior Spellweaver
Joined
Oct 29, 2012
Messages
155
Reaction score
16
Re: [RELEASE] webgame MuOnline

No its not like Mu Ignition it is a Mu Online game on browser its a flash webgame in 3d not in 2.5d check the difference. This game is way better than Mu Ignition in terms of gameplay and graphics

Mu Ignition Gameplay


I already saw this this source of much of the web somewhere forum I do not remember where

Mu Ignition

I found this one to download but I can not download it since deleting collaboration points
mario2015 - [Development] Webgame MuOnline - RaGEZONE Forums

mario2015 - [Development] Webgame MuOnline - RaGEZONE Forums

mario2015 - [Development] Webgame MuOnline - RaGEZONE Forums

mario2015 - [Development] Webgame MuOnline - RaGEZONE Forums
 
Last edited:
Coxiez
Banned
Joined
Aug 31, 2006
Messages
859
Reaction score
67
Re: [RELEASE] webgame MuOnline

yup Mu Ignition is not the same graphic's in this Mu Browser. as you can see the graphic of mu ignition is like 2D but this mu browser look's like the old mu graphic's
 
Junior Spellweaver
Joined
Jan 24, 2012
Messages
168
Reaction score
88
Re: [RELEASE] webgame MuOnline

Source Code ?

Decompile them self. That's is just Flash and Java! Dont you are Developer? :w00t:

Shop
Code:
//DECOMPILED BY HAPPYJD Decompiler 0.7internal
package com.mu.game.model.shop;

import com.mu.utils.Tools;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.SortedMap;
import java.util.TreeMap;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;

public class ShopConfigure
{
  public static final int GoodGroupType_Repurchage = 0;
  public static final int GoodGroupType_Common = 1;
  public static final int ShopId_Vip = 10000;
  public static final int ShopType_Common = 1;
  public static final int ShopType_Aran = 2;
  public static final int ShopType_Vip = 3;
  private static HashMap<Integer, GoodsLabel> labels = new HashMap();
  private static HashMap<Integer, String> shopTypeNames = new HashMap();
  
  private static void initLabelNames(Sheet sheet)
  {
    int rows = sheet.getRows();
    for (int i = 2; i <= rows; i++)
    {
      int labelId = Tools.getCellIntValue(sheet.getCell("A" + i));
      String labelName = sheet.getCell("B" + i).getContents();
      if (labelName == null) {
        labelName = "";
      }
      int labelSort = Tools.getCellIntValue(sheet.getCell("C" + i));
      labels.put(Integer.valueOf(labelId), new GoodsLabel(labelId, labelName, labelSort));
    }
  }
  
  private static void initShopTypeNames(Sheet sheet)
  {
    int rows = sheet.getRows();
    for (int i = 2; i <= rows; i++)
    {
      int shopType = Tools.getCellIntValue(sheet.getCell("A" + i));
      String shopTypeName = sheet.getCell("B" + i).getContents();
      if (shopTypeName == null) {
        shopTypeName = "";
      }
      shopTypeNames.put(Integer.valueOf(shopType), shopTypeName);
    }
  }
  
  public static String getLalelName(int labelId)
  {
    GoodsLabel gl = (GoodsLabel)labels.get(Integer.valueOf(labelId));
    if (gl == null) {
      return "????";
    }
    return gl.getLabelName();
  }
  
  public static int getLabelSort(int labelID)
  {
    GoodsLabel gl = (GoodsLabel)labels.get(Integer.valueOf(labelID));
    if (gl == null) {
      return 1;
    }
    return gl.getLabelSort();
  }
  
  public static String getShopTypeName(int shopType)
  {
    String name = (String)shopTypeNames.get(Integer.valueOf(shopType));
    if (name == null) {
      name = "????";
    }
    return name;
  }
  
  private static HashMap<Integer, SortedMap<Integer, List<Goods>>> allShopItems = new HashMap();
  private static HashMap<Long, Goods> goodsMap = new HashMap();
  
  public static void init(InputStream in)
    throws Exception
  {
    Workbook wb = Workbook.getWorkbook(in);
    Sheet[] sheets = wb.getSheets();
    
    Sheet labelSheet = sheets[1];
    initLabelNames(labelSheet);
    
    Sheet shopTypeSheet = sheets[2];
    initShopTypeNames(shopTypeSheet);
    for (int i = 3; i < sheets.length; i++)
    {
      Sheet sheet = sheets[i];
      int rows = sheet.getRows();
      for (int j = 2; j <= rows; j++)
      {
        Goods goods = new Goods();
        int shopId = Tools.getCellIntValue(sheet.getCell("B" + j));
        int label = Tools.getCellIntValue(sheet.getCell("C" + j));
        goods.setLabel(label);
        goods.setModelID(Tools.getCellIntValue(sheet.getCell("D" + j)));
        goods.setPrice(Tools.getCellIntValue(sheet.getCell("E" + j)));
        goods.setMoneyType(Tools.getCellIntValue(sheet.getCell("F" + j)));
        int ruleID = Tools.getCellIntValue(sheet.getCell("G" + j));
        goods.setStatRuleID(ruleID);
        boolean flag = goods.entity();
        if (flag) {
          addGoods(shopId, label, goods);
        } else {
          throw new Exception("ShopConfigure " + i);
        }
      }
    }
  }
  
  private static void addGoods(int shopId, int label, Goods goods)
  {
    SortedMap<Integer, List<Goods>> goodMap = (SortedMap)allShopItems.get(Integer.valueOf(shopId));
    if (goodMap == null)
    {
      goodMap = new TreeMap();
      allShopItems.put(Integer.valueOf(shopId), goodMap);
    }
    List<Goods> goodList = (List)goodMap.get(Integer.valueOf(label));
    if (goodList == null)
    {
      goodList = new ArrayList();
      goodMap.put(Integer.valueOf(label), goodList);
    }
    goodList.add(goods);
    
    goodsMap.put(Long.valueOf(goods.getGoodsID()), goods);
  }
  
  public static SortedMap<Integer, List<Goods>> getShopItems(int shopId)
  {
    return (SortedMap)allShopItems.get(Integer.valueOf(shopId));
  }
  
  public static Goods getGoods(long goodsID)
  {
    return (Goods)goodsMap.get(Long.valueOf(goodsID));
  }

Server Main (Gameserver):
Code:
//DECOMPILED BY HAPPYJD Decompiler 0.7internal
package com.mu;

import com.mu.config.Global;
import com.mu.db.Pool;
import com.mu.db.manager.GameDBManager;
import com.mu.db.manager.GlobalDBManager;
import com.mu.db.manager.MarketDBManager;
import com.mu.game.dungeon.DungeonManager;
import com.mu.game.dungeon.DungeonTemplateFactory;
import com.mu.game.model.team.TeamManager;
import com.mu.game.task.schedule.ScheduleTask;
import com.mu.game.task.specified.SpecifiedTimeManager;
import com.mu.game.task.specified.day.ZeroDailyTask;
import com.mu.io.client2gateway.server.ClientSocketServer;
import com.mu.io.game.server.GameSocketServer;
import com.mu.io.game2gateway.server.GatewaySocketClient;
import com.mu.io.http.ServletServer;
import com.mu.io.secure.Security843SocketServer;
import java.io.PrintStream;
import org.apache.log4j.xml.DOMConfigurator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class MuServer
{
  private static final Logger logger = LoggerFactory.getLogger(MuServer.class);
  
  private static boolean initConfigs()
  {
    return (initGlobal()) && (initDatabase()) && (initGlobalData());
  }
  
  private static boolean initGlobal()
  {
    if (!Global.init())
    {
      logger.error("init global properties error,server not start!!!");
      
      return false;
    }
    return true;
  }
  
  private static boolean initDatabase()
  {
    if (!Pool.init())
    {
      logger.error("init Database error,server not start!!!");
      return false;
    }
    Global.checkOpenServer();
    return true;
  }
  
  private static boolean initGlobalData()
  {
    return GlobalDBManager.initData();
  }
  
  private static boolean startServer()
  {
    Security843SocketServer.start();
    initGameModule();
    
    MarketDBManager.searchAllMarketItem();
    
    return (GatewaySocketClient.start()) && 
      (ClientSocketServer.start()) && 
      (GameSocketServer.start()) && 
      (ServletServer.start());
  }
  
  private static void initGameModule()
  {
    ScheduleTask.start();
    SpecifiedTimeManager.start();
    TeamManager.startBroadcastTask();
    ZeroDailyTask.checkNightProtectedWhenServerStar();
    DungeonManager.startCheckDungeon();
    
    DungeonTemplateFactory.startTimingDungeon();
  }
  
  public static void main(String[] args)
  {
    DOMConfigurator.configure("configs/log4j.xml");
    boolean initConfigs = initConfigs();
    boolean startServer = startServer();
    boolean initGameData = GameDBManager.initGameDataFromDB();
    if (((!initConfigs) || (!startServer) || (!initGameData)) && 
      (!Global.isAllowError()))
    {
      System.err.println("exit ......");
      System.exit(0);
    }
    Runtime.getRuntime().addShutdownHook(new ShutdownHook());
  }
}

Updated:
Code from Gameclient (flash):
For prevent this way of talking: "impossible to unpack, no one tool open it"
Code:
//Decompiled by HappyDay R@geZone
package
{
   import engine.core.Game;
   import engine.core.GameScene;
   import engine.core.event.E;
   import engine.core.event.GameEvent;
   import engine.core.network.CtrlCenter;
   import engine.core.network.NetCenter;
   import engine.core.sound.SoundCenter;
   import engine.core.utils.Configs;
   import engine.core.utils.Tween;
   import engine.core.worker.WorkerCenter;
   import engine.ui.FPSPan;
   import engine.ui.complents.form.FormCenter;
   import engine.ui.complents.other.mouse.Cursor;
   import engine.ui.modles.login.LoginCtrl;
   import engine.ui.modles.login.LoginDebugPan;
   import engine.ui.modles.login.LoginPan;
   import engine.ui.modles.map.MapLoadingPan;
   import engine.ui.modles.system.LowModePan;
   import flash.display.Sprite;
   import flash.events.Event;
   import flash.external.ExternalInterface;
   import flash.system.Capabilities;
   
   public class MUGameClient extends Sprite
   {
       
      
      private var gameScene:GameScene;
      
      private var loginDebugPan:LoginDebugPan;
      
      private var loginPan:LoginPan;
      
      private var lowModePan:LowModePan;
      
      private var fpsPan:FPSPan;
      
      public function MUGameClient()
      {
         super();
         Game.scene = this;
         tabChildren = false;
         tabEnabled = false;
         addEventListener("addedToStage",inial);
      }
      
      private function inial(param1:Event) : void
      {
         removeEventListener("addedToStage",inial);
         stage.align = "TL";
         stage.scaleMode = "noScale";
         var _loc2_:* = false;
         stage.tabChildren = _loc2_;
         _loc2_ = _loc2_;
         stage.stageFocusRect = _loc2_;
         stage.showDefaultContextMenu = _loc2_;
         stage.quality = "low";
         stage.color = 0;
         stage.frameRate = 60;
         Game.stage = stage;
         stage.addEventListener("activate",stage_active);
         stage.addEventListener("deactivate",stage_deactive);
         Configs.instans.addEventListener("LOAD_COMPLETE",configs_load_complete);
         Configs.instans.loadXML();
      }
      
      private function configs_load_complete(param1:GameEvent) : void
      {
         var _loc3_:* = null;
         Configs.instans.removeEventListener("LOAD_COMPLETE",configs_load_complete);
         if(ExternalInterface.available)
         {
            ExternalInterface.call("function noborder(){document.documentElement.style.overflow =\'hidden\';}");
            ExternalInterface.addCallback("swf_un_load",NetCenter.instans.close);
            ExternalInterface.call("function js_swf_un_load(){window.onunload = " + ExternalInterface.objectID + ".swf_un_load;}");
            Configs.URL = ExternalInterface.call("getUrl");
         }
         if(Configs.xml.testURL != undefined)
         {
            Configs.URL = Configs.xml.testURL;
         }
         var _loc2_:RegExp = /ip=(.+)\&port=(\d+)/;
         if(_loc2_.test(Configs.URL))
         {
            _loc3_ = _loc2_.exec(Configs.URL);
            Configs.HOST = _loc3_[1];
            Configs.PORT = _loc3_[2];
         }
         else
         {
            Configs.URL = null;
         }
         WorkerCenter.instans.addEventListener("WORKER_INIALED",woker_inialed);
         WorkerCenter.instans.inial();
         stage.addEventListener("enterFrame",Tween.draw);
         stage.addEventListener("enterFrame",WorkerCenter.instans.run);
      }
      
      private function woker_inialed(param1:GameEvent) : void
      {
         WorkerCenter.instans.removeEventListener("WORKER_INIALED",woker_inialed);
         Cursor.instans;
         NetCenter.instans.addEventListener("SERVER_CONNECTED",server_connect_complete_1);
         NetCenter.instans.connect();
      }
      
      private function server_connect_complete_1(param1:GameEvent) : void
      {
         NetCenter.instans.removeEventListener("complete",server_connect_complete_1);
         CtrlCenter.inial();
         E.instans.addEventListener("SERVER_CONNECTED",server_connect_complete_2);
      }
      
      private function server_connect_complete_2(param1:GameEvent) : void
      {
         E.instans.removeEventListener("SERVER_CONNECTED",server_connect_complete_2);
         E.instans.addEventListener("ROLE_UPDATE",login_suc);
         if(Configs.URL)
         {
            LoginCtrl.instans.s_md5_login(Configs.URL);
         }
         else
         {
            if(!loginDebugPan)
            {
               loginDebugPan = new LoginDebugPan();
            }
            addChild(loginDebugPan);
         }
      }
      
      private function login_suc(param1:GameEvent) : void
      {
         E.instans.removeEventListener("ROLE_UPDATE",login_suc);
         if(loginDebugPan && loginDebugPan.parent)
         {
            loginDebugPan.parent.removeChild(loginDebugPan);
         }
         E.instans.addEventListener("ROLE_INTO_GAME",role_into_game);
         if(!loginPan)
         {
            loginPan = new LoginPan();
         }
         addChild(loginPan);
         gameScene = new GameScene();
         addChildAt(gameScene,0);
      }
      
      private function role_into_game(param1:GameEvent) : void
      {
         E.instans.removeEventListener("ROLE_INTO_GAME",role_into_game);
         if(loginPan.parent)
         {
            loginPan.parent.removeChild(loginPan);
            loginPan.distroy();
            loginPan = null;
         }
         FormCenter.instans.inial();
         MapLoadingPan.instans.show();
         lowModePan = new LowModePan();
         E.instans.addEventListener("FPS_SHOW",fps_show);
         if(Configs.showFps && Capabilities.isDebugger)
         {
            fps_show();
         }
      }
      
      private function stage_active(param1:Event = null) : void
      {
         SoundCenter.instans.stopNoSound();
      }
      
      private function stage_deactive(param1:Event) : void
      {
         SoundCenter.instans.playNoSound();
      }
      
      private function fps_show(param1:GameEvent = null) : void
      {
         if(!fpsPan)
         {
            fpsPan = new FPSPan();
            fpsPan.y = 290;
            addChild(fpsPan);
         }
      }
   }
}
Events:

Code:
//Decompiled by HappyDay R@geZone
package engine.core.event
{
   import flash.events.Event;
   
   public final class GameEvent extends Event
   {
      
      public static const SERVER_CONNECTED:String = "SERVER_CONNECTED";
      
      public static const LOAD_COMPLETE:String = "LOAD_COMPLETE";
      
      public static const WORKER_INIALED:String = "WORKER_INIALED";
      
      public static const WORKER_RES_LOAD_COMPLETE:String = "WORKER_RES_LOAD_COMPLETE";
      
      public static const WORKER_RES_LOAD_PROGRESS:String = "WORKER_RES_LOAD_PROGRESS";
      
      public static const WORKER_MESH_BATCH_PROSS_COMPLETE:String = "WORKER_MESH_BATCH_PROSS_COMPLETE";
      
      public static const FPS_SHOW:String = "FPS_SHOW";
      
      public static const UNIT_LOAD_COMPLETE:String = "UNIT_LOAD_COMPLETE";
      
      public static const UNIT_RAY_RESULT:String = "UNIT_RAY_RESULT";
      
      public static const UNIT_SELECTED_UNIT:String = "UNIT_SELECTED_UNIT";
      
      public static const UNIT_DEATH:String = "UNIT_DEATH";
      
      public static const UNIT_DISTROY:String = "UNIT_DISTROY";
      
      public static const EQUIP_UPDATE:String = "EQUIP_UPDATE";
      
      public static const PLAYER_FIND_WAY:String = "PLAYER_FIND_WAY";
      
      public static const PLAYER_SET_PATH:String = "PLAYER_SET_PATH";
      
      public static const PLAYER_SY_QL_UPDATE:String = "PLAYER_SY_QL_UPDATE";
      
      public static const PLAYER_TJ_JD:String = "PLAYER_TJ_JD";
      
      public static const PLAYER_PRE_JD:String = "PLAYER_PRE_JD";
      
      public static const PLAYER_MOVE_END:String = "PLAYER_MOVE_END";
      
      public static const PLAYER_DEATH:String = "PLAYER_DEATH";
      
      public static const ROLE_UPDATE:String = "ROLE_UPDATE";
      
      public static const ROLE_RANDOM_NAME:String = "ROLE_RANDOM_NAME";
      
      public static const ROLE_INTO_GAME:String = "ROLE_INTO_GAME";
      
      public static const ROLE_CREATE_RESULT:String = "ROLE_CREATE_RESULT";
      
      public static const ROLE_DELETED:String = "ROLE_DELETED";
      
      public static const PLAYER_SKILL_REBACK:String = "PLAYER_SKILL_REBACK";
      
      public static const PLAYER_RELIFE:String = "PLAYER_RELIFE";
      
      public static const PLAYER_PARRY_UPDATE:String = "PLAYER_PARRY_UPDATE";
      
      public static const PLAYER_ZHANPING_UPDATE:String = "PLAYER_ZHANPING_UPDATE";
      
      public static const PLAYER_BLUE_VIP_UPDATE:String = "PLAYER_BLUE_VIP_UPDATE";
      
      public static const PLAYER_ZMINFO_UPDATE:String = "PLAYER_ZMINFO_UPDATE";
      
      public static const PROP_UPDATE:String = "PROP_UPDATE";
      
      public static const UI_TEXT_BOTTOM_FLOAT:String = "UI_TEXT_BOTTOM_FLOAT";
      
      public static const UI_TEXT_BOTTOM_RIGHT_FLOAT:String = "UI_TEXT_BOTTOM_RIGHT_FLOAT";
      
      public static const UI_DROP_DOWN_PAN_CLOSE:String = "UI_DROP_DOWN_PAN_CLOSE";
      
      public static const UI_ITEM_FILTER_PAN_SELECTED:String = "UI_ITEM_FILTER_PAN_SELECTED";
      
      public static const UI_GN_OPEN:String = "UI_GN_OPEN";
      
      public static const UI_GN_JIANTOU_OPEN:String = "UI_GN_JIANTOU_OPEN";
      
      public static const UI_FORM_OPEN:String = "UI_FORM_OPEN";
      
      public static const UI_FORM_CLOSE:String = "UI_FORM_CLOSE";
      
      public static const MAP_INIALED:String = "MAP_INIALED";
      
      public static const MAP_WORKER_INIALED:String = "MAP_WORKER_INIALED";
      
      public static const MAP_WORLD_MAP_MENU:String = "MAP_WORLD_MAP_MENU";
      
      public static const MAP_GET_SINGLES:String = "MAP_GET_SINGLES";
      
      public static const MAP_GET_WORLD_MAP:String = "MAP_GET_WORLD_MAP";
      
      public static const FAST_COOLING:String = "FAST_COOLING";
      
      public static const ITEM_UPDATE:String = "ITEM_UPDATE";
      
      public static const ITEM_NUM_UPDATE:String = "ITEM_NUM_UPDATE";
      
      public static const ITEM_BIND_UPDATE:String = "ITEM_BIND_UPDATE";
      
      public static const ITEM_LAIJIU_UPDATE:String = "ITEM_LAIJIU_UPDATE";
      
      public static const ITEM_GET_XIULI_INFO:String = "ITEM_GET_XIULI_INFO";
      
      public static const ITEM_XIULI_RESULT:String = "ITEM_XIULI_RESULT";
      
      public static const ITEM_ENABLE_UPDATE:String = "ITEM_ENABLE_UPDATE";
      
      public static const ITEM_BEGIN_COOL:String = "ITEM_BEGIN_COOL";
      
      public static const ITEM_GET_FAST_SELL_MONEY:String = "ITEM_GET_FAST_SELL_MONEY";
      
      public static const ITEM_KUAIJIE_BUY_RESULT:String = "ITEM_KUAIJIE_BUY_RESULT";
      
      public static const SKILL_UPDATE:String = "SKILL_UPDATE";
      
      public static const SKILL_LEVEL_UPED:String = "SKILL_LEVEL_UPED";
      
      public static const SKILL_BEGIN_COOL:String = "SKILL_BEGIN_COOL";
      
      public static const SKILL_SELECTED:String = "SKILL_SELECTED";
      
      public static const SKILL_USED:String = "SKILL_USED";
      
      public static const SKILL_GET_BD_INFO:String = "SKILL_GET_BD_INFO";
      
      public static const BUFF_UPDATE:String = "BUFF_UPDATE";
      
      public static const BAG_UPDATE:String = "BAG_UPDATE";
      
      public static const CK_UPDATE:String = "CK_UPDATE";
      
      public static const DIALOG_OPEN:String = "DIALOG_OPEN";
      
      public static const DIALOG_CLOSE:String = "DIALOG_CLOSE";
      
      public static const SHORTCUT_UPDATE:String = "SHORTCUT_UPDATE";
      
      public static const SHORTCUT_USE_FAST:String = "SHORTCUT_USE_FAST";
      
      public static const TIP_CLOSE:String = "TIP_CLOSE";
      
      public static const ZM_GET_LIST:String = "ZM_GET_LIST";
      
      public static const ZM_SQ_RESULT:String = "ZM_SQ_RESULT";
      
      public static const ZM_GET_CREATE_INFO:String = "ZM_GET_CREATE_INFO";
      
      public static const ZM_CREATE_RESULT:String = "ZM_CREATE_RESULT";
      
      public static const ZM_GET_INFO:String = "ZM_GET_INFO";
      
      public static const ZM_POP_INFO_UPDATE:String = "ZM_POP_INFO_UPDATE";
      
      public static const ZM_GG_UPDATE:String = "ZM_GG_UPDATE";
      
      public static const ZM_MATSER_UPDATE:String = "ZM_MATSER_UPDATE";
      
      public static const ZM_GET_LEVEL_UP_INFO:String = "ZM_GET_LEVEL_UP_INFO";
      
      public static const ZM_LEVEL_UP_RESULT:String = "ZM_LEVEL_UP_RESULT";
      
      public static const ZM_OUT:String = "ZM_OUT";
      
      public static const ZM_IN:String = "ZM_IN";
      
      public static const ZM_GET_JX_INFO:String = "ZM_GET_JX_INFO";
      
      public static const ZM_JX_RESULT:String = "ZM_JX_RESULT";
      
      public static const ZM_GET_SQ_LIST:String = "ZM_GET_SQ_LIST";
      
      public static const ZM_SQ_LIST_UPDATE:String = "ZM_SQ_LIST_UPDATE";
      
      public static const ZM_GET_DENAMYC_INFO:String = "ZM_GET_DENAMYC_INFO";
      
      public static const ZM_GET_MY_REDCARD_LIST:String = "ZM_GET_MY_REDCARD_LIST";
      
      public static const ZM_GIVE_REDCARD_RESULT:String = "ZM_GIVE_REDCARD_RESULT";
      
      public static const ZM_GET_ZM_REDCARD_LIST:String = "ZM_GET_ZM_REDCARD_LIST";
      
      public static const ZM_GET_REDCARD_RESULT:String = "ZM_GET_REDCARD_RESULT";
      
      public static const ZM_REDCARD_SYNUM_UPDATE:String = "ZM_REDCARD_SYNUM_UPDATE";
      
      public static const ZM_GIVE_REDCARD_BY_POP:String = "ZM_GIVE_REDCARD_BY_POP";
      
      public static const ZM_ZH_BOSS_RESULT:String = "ZM_ZH_BOSS_RESULT";
      
      public static const LUOLAN_GET_INFO:String = "LUOLAN_GET_INFO";
      
      public static const LUOLAN_GET_REWARD:String = "LUOLAN_GET_REWARD";
      
      public static const TASK_UPDATE:String = "TASK_UPDATE";
      
      public static const TASK_HUNA_UPDATE:String = "TASK_HUNA_UPDATE";
      
      public static const TASK_HUAN_STAR_REFRESH_SUC:String = "TASK_HUAN_STAR_REFRESH_SUC";
      
      public static const TASK_GETED:String = "TASK_GETED";
      
      public static const TASK_COMMITED:String = "TASK_COMMITED";
      
      public static const TASK_COMPLETE_EFFECT:String = "TASK_COMPLETE_EFFECT";
      
      public static const TASK_MINI_UPDATE:String = "TASK_MINI_UPDATE";
      
      public static const TASK_PARRY_TASK_UPDATE:String = "TASK_PARRY_TASK_UPDATE";
      
      public static const TASK_SHOW_HIDE_NEXT_BUTTON:String = "TASK_SHOW_HIDE_NEXT_BUTTON";
      
      public static const TASK_ZX_GET_REWARD_RESULT:String = "TASK_ZX_GET_REWARD_RESULT";
      
      public static const DUANZHAO_GET_QIANGHUA_DATA:String = "DUANZHAO_GET_QIANGHUA_DATA";
      
      public static const DUANZHAO_QIANGHUA:String = "DUANZHAO_QIANGHUA";
      
      public static const DUANZHAO_GET_FUWEN_DATA:String = "DUANZHAO_GET_FUWEN_DATA";
      
      public static const DUANZHAO_FUWEN_CLEAR:String = "DUANZHAO_FUWEN_CLEAR";
      
      public static const DUANZHAO_FUWEN_IN:String = "DUANZHAO_FUWEN_IN";
      
      public static const DUANZHAO_GET_FUWEN_ZH_DATA:String = "DUANZHAO_GET_FUWEN_ZH_DATA";
      
      public static const DUANZHAO_FUWEN_ZH:String = "DUANZHAO_FUWEN_ZH";
      
      public static const DUANZHAO_GET_ZUIJIA_DATA:String = "DUANZHAO_GET_ZUIJIA_DATA";
      
      public static const DUANZHAO_ZUIJIA:String = "DUANZHAO_ZUIJIA";
      
      public static const DUANZHAO_GET_BAOSHI_XQ_DATA1:String = "DUANZHAO_GET_BAOSHI_XQ_DATA1";
      
      public static const DUANZHAO_GET_BAOSHI_XQ_DATA2:String = "DUANZHAO_GET_BAOSHI_XQ_DATA2";
      
      public static const DUANZHAO_BAOSHI_CLEAR:String = "DUANZHAO_BAOSHI_CLEAR";
      
      public static const DUANZHAO_BAOSHI_XQ:String = "DUANZHAO_BAOSHI_XQ";
      
      public static const DUANZHAO_ITEM_UPDATE:String = "DUANZHAO_ITEM_UPDATE";
      
      public static const DUANZHAO_FILTER_RESULT:String = "DUANZHAO_FILTER_RESULT";
      
      public static const DUANZHAO_GET_EQUIP_LEVEL_UP_INFO:String = "DUANZHAO_GET_EQUIP_LEVEL_UP_INFO";
      
      public static const DUANZHAO_EQUIP_LEVEL_UP:String = "DUANZHAO_EQUIP_LEVEL_UP";
      
      public static const DUANZHAO_GET_RIDE_RH_INFO:String = "DUANZHAO_GET_RIDE_RH_INFO";
      
      public static const DUANZHAO_RIDE_RH:String = "DUANZHAO_RIDE_RH";
      
      public static const HC_GET_DATA:String = "HC_GET_DATA";
      
      public static const HC_GET_VIEW:String = "HC_GET_VIEW";
      
      public static const HC_GET_ITEM_FILTER:String = "HC_GET_ITEM_FILTER";
      
      public static const HC_HC:String = "HC_HC";
      
      public static const LINE_CHANGED:String = "LINE_CHANGED";
      
      public static const TRANS_CLOSE_PAN:String = "TRANS_CLOSE_PAN";
      
      public static const TRANS_PUT_ITEM:String = "TRANS_PUT_ITEM";
      
      public static const TRANS_DELETE_ITEM:String = "TRANS_DELETE_ITEM";
      
      public static const TRANS_SET_MONEY:String = "TRANS_SET_MONEY";
      
      public static const TRANS_LOCK:String = "TRANS_LOCK";
      
      public static const TRANS_UN_LOCK:String = "TRANS_UN_LOCK";
      
      public static const TRANS_OK:String = "TRANS_OK";
      
      public static const MAIL_UPDATE:String = "MAIL_UPDATE";
      
      public static const MAIL_NEW_MAIL:String = "MAIL_NEW_MAIL";
      
      public static const CHAT_ADD_MSG:String = "CHAT_ADD_MSG";
      
      public static const CHAT_FACE_SELECT:String = "CHAT_FACE_SELECT";
      
      public static const CHAT_ADD_PMSG:String = "CHAT_ADD_PMSG";
      
      public static const LINK_SHOW:String = "LINK_SHOW";
      
      public static const PK_MODE_CHANGE:String = "PK_MODE_CHANGE";
      
      public static const TEAM_UPDATE:String = "TEAM_UPDATE";
      
      public static const TEAM_SQ_UPDATE:String = "TEAM_SQ_UPDATE";
      
      public static const TEAM_GET_NEAR_TEAMS:String = "TEAM_GET_NEAR_TEAMS";
      
      public static const TEAM_GET_NEAR_CHARAS:String = "TEAM_GET_NEAR_CHARAS";
      
      public static const TEAM_EXPRATE_UPDATE:String = "TEAM_EXPRATE_UPDATE";
      
      public static const SYSTEM_ENGINE_SET_UPDATE:String = "SYSTEM_ENGINE_SET_UPDATE";
      
      public static const SYSTEM_SET_UPDATE:String = "SYSTEM_SET_UPDATE";
      
      public static const GUAJI_SET_UPDATE:String = "GUAJI_SET_UPDATE";
      
      public static const GUAJI_SET_SAVE:String = "GUAJI_SET_SAVE";
      
      public static const GUAJI_UPDATE:String = "GUAJI_UPDATE";
      
      public static const GUAJI_START:String = "GUAJI_START";
      
      public static const GUAJI_GET_AUTOSELL_SAIXUAN_FILTERS:String = "GUAJI_GET_AUTOSELL_SAIXUAN_FILTERS";
      
      public static const CHIBANG_UPDATE:String = "CHIBANG_UPDATE";
      
      public static const CHIBANG_GET_SH_INFO:String = "CHIBANG_GET_SH_INFO";
      
      public static const CHIBANG_GET_JJ_INFO:String = "CHIBANG_GET_JJ_INFO";
      
      public static const CHIBANG_JJ_SUC:String = "CHIBANG_JJ_SUC";
      
      public static const CHIBANG_AUTO_JJ_STOP:String = "CHIBANG_AUTO_JJ_STOP";
      
      public static const YONGBIN_UPDATE:String = "YONGBIN_UPDATE";
      
      public static const YONGBIN_ACTIVE:String = "YONGBIN_ACTIVE";
      
      public static const YONGBIN_GET_JJ_INFO:String = "YONGBIN_GET_JJ_INFO";
      
      public static const YONGBIN_JJ_SUC:String = "YONGBIN_JJ_SUC";
      
      public static const YONGBIN_AUTO_JJ_STOP:String = "YONGBIN_AUTO_JJ_STOP";
      
      public static const YONGBIN_LEVEL_UP:String = "YONGBIN_LEVEL_UP";
      
      public static const YONGBIN_EXP_UPDATE:String = "YONGBIN_EXP_UPDATE";
      
      public static const DENAMYCMENU_UPDATE:String = "DENAMYCMENU_UPDATE";
      
      public static const DENAMYCMENU_VISIBLE_UPDATE:String = "DENAMYCMENU_VISIBLE_UPDATE";
      
      public static const DENAMYCMENU_JIANTOU_DISP:String = "DENAMYCMENU_JIANTOU_DISP";
      
      public static const DENAMYCMENU_CLICK:String = "DENAMYCMENU_CLICK";
      
      public static const FB_GET_INFO:String = "FB_GET_INFO";
      
      public static const FB_IN:String = "FB_IN";
      
      public static const FB_OUT:String = "FB_OUT";
      
      public static const FB_INFO_UPDATE:String = "FB_INFO_UPDATE";
      
      public static const FB_GUWU:String = "FB_GUWU";
      
      public static const FB_CSYS_GET_REWARD_RESULT:String = "FB_CSYS_GET_REWARD_RESULT";
      
      public static const FB_GET_SUPER_EMO_TOP_INFO:String = "FB_GET_SUPER_EMO_TOP_INFO";
      
      public static const PMH_GET_ITEMS:String = "PMH_GET_ITEMS";
      
      public static const PMH_GET_TRAN_RECORD:String = "PMH_GET_TRAN_RECORD";
      
      public static const PMH_PUT_ITEM_SUC:String = "PMH_PUT_ITEM_SUC";
      
      public static const PMH_BUY_ITEM_SUC:String = "PMH_BUY_ITEM_SUC";
      
      public static const PMH_CTRL_ITEM_NAME_INPUT:String = "PMH_CTRL_ITEM_NAME_INPUT";
      
      public static const YB_GET_INFO:String = "YB_GET_INFO";
      
      public static const QD_GET_INFO:String = "QD_GET_INFO";
      
      public static const QD_GET_REWARD_INFO:String = "QD_GET_REWARD_INFO";
      
      public static const QD_STATE_UPDATE:String = "QD_STATE_UPDATE";
      
      public static const QD_REWARD_GET_SUC:String = "QD_REWARD_GET_SUC";
      
      public static const HYD_UPDATE:String = "HYD_UPDATE";
      
      public static const HYD_ITEM_UPDATE:String = "HYD_ITEM_UPDATE";
      
      public static const HYD_ITEM_PROG_UPDATE:String = "HYD_ITEM_PROG_UPDATE";
      
      public static const HYD_REWARD_UPDATE:String = "HYD_REWARD_UPDATE";
      
      public static const HYD_REWARD_STATE_UPDATE:String = "HYD_REWARD_STATE_UPDATE";
      
      public static const HYD_GET_REWARD_SUC:String = "HYD_GET_REWARD_SUC";
      
      public static const ONLINE_GET_INFO:String = "ONLINE_GET_INFO";
      
      public static const ONLINE_GET_REWARD_RESULT:String = "ONLINE_GET_REWARD_RESULT";
      
      public static const BOSS_UPDATE:String = "BOSS_UPDATE";
      
      public static const BOSS_CAN_UPDATE:String = "BOSS_CAN_UPDATE";
      
      public static const BOSS_ZXDROP_UPDATE:String = "BOSS_ZXDROP_UPDATE";
      
      public static const BOSS_TZ_START:String = "BOSS_TZ_START";
      
      public static const TOP_GET_INFO:String = "TOP_GET_INFO";
      
      public static const HUDUN_GET_INFO:String = "HUDUN_GET_INFO";
      
      public static const HUDUN_JJ_RESULT:String = "HUDUN_JJ_RESULT";
      
      public static const VIP_UPDATE:String = "VIP_UPDATE";
      
      public static const VIP_BLUE_CZ_INFO:String = "VIP_BLUE_CZ_INFO";
      
      public static const LICAI_GET_INFO:String = "LICAI_GET_INFO";
      
      public static const LICAI_TYPE_UPDATE:String = "LICAI_TYPE_UPDATE";
      
      public static const LICAI_REWARD_UPDATE:String = "LICAI_REWARD_UPDATE";
      
      public static const LICAI_GET_REWARD_RESULT:String = "LICAI_GET_REWARD_RESULT";
      
      public static const LICAI_OPEN_REAULT:String = "LICAI_OPEN_REAULT";
      
      public static const HUODONG_UPDATE:String = "HUODONG_UPDATE";
      
      public static const HUODONG_GET_INFO:String = "HUODONG_GET_INFO";
      
      public static const HUODONG_GET_REWARD:String = "HUODONG_GET_REWARD";
      
      public static const HUODONG_BLUE_ONEKYE:String = "HUODONG_BLUE_ONEKYE";
      
      public static const HUODONG_GET_QIRI_INFO:String = "HUODONG_GET_QIRI_INFO";
      
      public static const HUODONG_QIRI_WABAO_RESULT:String = "HUODONG_QIRI_WABAO_RESULT";
      
      public static const HUODONG_GET_ZHUANPAN_INFO:String = "HUODONG_GET_ZHUANPAN_INFO";
      
      public static const HUODONG_ZHUANPAN_RESULT:String = "HUODONG_ZHUANPAN_RESULT";
      
      public static const HUODONG_ZHUANPAN_RECORD_UPDATE:String = "HUODONG_ZHUANPAN_RECORD_UPDATE";
      
      public static const AIR_REFRESH:String = "AIR_REFRESH";
      
      public static const AIR_LOGIN_ROLE_INFO:String = "AIR_LOGIN_ROLE_INFO";
      
      public static const AIR_CLOSE:String = "AIR_CLOSE";
      
      public static const COUREN_UPDATE:String = "COUREN_UPDATE";
      
      public static const ZHINAN_GET_INFO:String = "ZHINAN_GET_INFO";
      
      public static const XUNBAO_GET_INFO:String = "XUNBAO_GET_INFO";
      
      public static const XUNBAO_RECORD_UPDATE:String = "XUNBAO_RECORD_UPDATE";
      
      public static const XUNBAO_RESULT:String = "XUNBAO_RESULT";
      
      public static const XUNBAO_GET_JF_SHOP_INFO:String = "XUNBAO_GET_JF_SHOP_INFO";
      
      public static const XUNBAO_BUY_JF_ITEM_SUC:String = "XUNBAO_BUY_JF_ITEM_SUC";
      
      public static const NICK_INFO:String = "NICK_INFO";
      
      public static const FAVT_GET_INFO:String = "FAVT_GET_INFO";
      
      public static const FAVT_RESLUT:String = "FAVT_RESLUT";
      
      public static const ZYTAR_GET_INFO:String = "ZYTAR_GET_INFO";
      
      public static const ZYTAR_GET_EQUIP_WAY:String = "ZYTAR_GET_EQUIP_WAY";
      
      public static const ZYTAR_GET_NICK:String = "ZYTAR_GET_NICK";
      
      public static const NUMBER_BOX_UPDATE:String = "NUMBER_BOX_UPDATE";
      
      public static const UNLINE_GET_BUFF:String = "UNLINE_GET_BUFF";
      
      public static const UNLINE_GET_HDBACK:String = "UNLINE_GET_HDBACK";
      
      public static const TX_GET_INFO_1:String = "TX_GET_INFO_1";
      
      public static const TX_GET_INFO_2:String = "TX_GET_INFO_2";
      
      public static const TX_START:String = "TX_START";
      
      public static const TX_SUC_ONECE:String = "TX_SUC_ONECE";
      
      public static const TX_PUT_IN_BAG:String = "TX_PUT_IN_BAG";
      
      public static const TX_GET_SQ_INFO:String = "TX_GET_SQ_INFO";
      
      public static const TX_SQ_CL_JJ_SUC:String = "TX_SQ_CL_JJ_SUC";
      
      public static const ZH_GET_INFO:String = "ZH_GET_INFO";
      
      public static const ZH_GET_EQUIP_FILTER_TJS:String = "ZH_GET_EQUIP_FILTER_TJS";
      
      public static const ZH_EQUIP_FILTER_RESULT:String = "ZH_EQUIP_FILTER_RESULT";
      
      public static const ZH_GET_EQUIP_EXP:String = "ZH_GET_EQUIP_EXP";
      
      public static const ZH_LH_SUC:String = "ZH_LH_SUC";
      
      public static const ZH_USE_ITEM_SUC:String = "ZH_USE_ITEM_SUC";
      
      public static const FRIEND_INFO_UPDATE:String = "FRIEND_INFO_UPDATE";
      
      public static const FRIEND_INFO_UPDATE1:String = "FRIEND_INFO_UPDATE1";
      
      public static const FRIEND_ADD_SUC:String = "FRIEND_ADD_SUC";
      
      public static const FRIEND_DELETE_SUC:String = "FRIEND_DELETE_SUC";
      
      public static const FRIEND_SQ_MESSAGE:String = "FRIEND_SQ_MESSAGE";
      
      public static const FRIEND_GET_SQ_LIST:String = "FRIEND_GET_SQ_LIST";
      
      public static const FRIEND_ALLOW_RESULT:String = "FRIEND_ALLOW_RESULT";
      
      public static const FRIEND_ONLINE_UPDATE:String = "FRIEND_ONLINE_UPDATE";
      
      public static const FRIEND_FRIENDLY_UPDATE:String = "FRIEND_FRIENDLY_UPDATE";
      
      public static const FRIEND_KILL_NUM_UPDATE:String = "FRIEND_KILL_NUM_UPDATE";
      
      public static const FRIEND_GET_XYC_INFO:String = "FRIEND_GET_XYC_INFO";
      
      public static const FRIEND_XYC_ZF_LOG_UPDATE:String = "FRIEND_XYC_ZF_LOG_UPDATE";
       
      
      public var value:Object;
      
      public function GameEvent(param1:String, param2:Object = null)
      {
         super(param1,bubbles,cancelable);
         this.value = param2;
      }
   }
}
Just use your developer skills and everything is possible :):

In fact, with hands and brains, you can obtain source for that version of MuOnline. Just let's go work for it!
Hmm about version, it tells: public static var version:String = "2016.5.11.01"; really not too old :eek:tt:



ps. please dont spam my PM with asking for source code, swf files decrypt and etc... :grr: Try to be a developers, not a leechers. Just try to figure them out by yourself. You already have all files for reverse & develop. And that is not C/C++ with Themida/Armadilo packer-protector, kernel-layer inline hooks, anti-reverse code and etc... Feel the difference.
I just can tell you - yeah that is possible to decompile server files, assembly them on InteliJ-Idea into the project and compile again. Yeah that is possible to decrypt swf client files, after - decompile them via JPEX decompiler, and assembly them again on InteliJ-Idea into the project (but also requires local params renaming cuz them full of _loc88_, _loc43_ and other shenanigans) or if you dont wanna fix over9000 code for compile them, just use for patch them. Just try to make this all by your self. That is over9000 times better than after you leech everything without put any job on it, and lie to you users "we are develop blah blah blah... new game from our team blahblahblah"... Just stop do that, and please, try to do something by your self. Be a real developers.
 
Last edited:
Newbie Spellweaver
Joined
Apr 29, 2015
Messages
7
Reaction score
0
Re: [RELEASE] webgame MuOnline

HappyDay do u know unpack file .0 and other swf decrypt? .. i use JPEX but can't read swf
 
Junior Spellweaver
Joined
Apr 20, 2005
Messages
152
Reaction score
39
Re: [RELEASE] webgame MuOnline

Please, lower the Toxicity,


im trying to get Public, but im stuck with black screen, local is working, i believe there maybe some IP config inside swf,

im using wireshark simple pack on C;/
 
Newbie Spellweaver
Joined
Mar 1, 2018
Messages
6
Reaction score
1
Re: [RELEASE] webgame MuOnline

Hi all,
Anyone can write tutorial how to config server from this files?
 
Back
Top