DO Client (main.swf) project files.

10/20/2013 19:09 Fenrisus#1
Hello there. That is project files for FlashDevelop for Dark Orbit. All source code included + some libs. That is not finished project, and source code needs fix obfuscated params.
TODO:
Optimize source code for compilation.
Setup compiler preferences & Build targets.
Modify as you whant it.

So, it can be recompiled after lots of hard work. But that is for start and Flash develop can tell you (syntax analyzer) what need to fix step by step.

Some about how to fix: most of libraries - avalible in public without obfuscation.
DO client use a Teen Greensock graphics library, and you may download it on their webpage. As other sources in mx and etc folders. That part of work - copy-paste&replace. Really re-write work needed only in parts of source, stored in net/bigpoint/ - that is core "game" source code (including Main.AS) - that is hard part of work. But a good news - it can be done with 2-3 ppl team for 1-2 month of work. That is possible job.

So, you can create you own client and add a lots of new features to you private server.

[Only registered and activated users can see links. Click Here To Register...]

I have a lack of time to finish that, and maybe you - more lucky then me! Goodluck with that!

(added)
This archive contains:
all ActionScripts in most-readable format (all names of functions is normal! Only local constants and some local params have obfuscated names (impossible to restore it after obfuscation))
all Binary files.
all Library files.
Project file for FlashDevelop IDE.
Some little config for debug. You need only press "Build" or "Test" buttons, and FLD will show you what need to fix for compile sources.

That files a good compilation pack for custom client develop kickstart.

Kind regards!

======UPD=========
New download source:
10/20/2013 19:13 Requi#2
Thanks for sharing this work with us.
If I understood it right, it'll be so easy to build my packets :D
10/20/2013 19:23 Fenrisus#3
Quote:
Originally Posted by Requi View Post
Thanks for sharing this work with us.
If I understood it right, it'll be so easy to build my packets :D
Yeah, you may use it for create bots or some automation tools for original DO.
Currently i dont have a time for work on it, for make a fully compile-work version. But, as i say - it possible for 2-3 ppl team and waste 1-2 month of time. (If that team will work seriosly and spend a some time for that). That will be useful for private server owners who have a plans to add some new features to their private server. :pimp:
10/20/2013 19:29 Requi#4
It's not useful for the original DO, as this is from the 2011 version.
10/20/2013 19:35 NoCheatImPGM#5
It think he was talking about the old darkorbit (2011 like you said) ...
And thanks for sharing this !

Regards, PGM.
10/20/2013 22:55 GnomeProgramming#6
Poop project, if this is for actual DO this is not going to work :rolleyes:
10/20/2013 23:21 arvatadryan#7
where is the decryption key?
10/21/2013 14:09 Fenrisus#8
Quote:
Originally Posted by GnomeProgramming View Post
Poop project, if this is for actual DO this is not going to work :rolleyes:
=) not for actual DO (latest ver.) This is for old DO and private servers. Them work perfectly with Azure DO server or similar.

About decryption key: all of that already done here. Values like _loc1_, __loc7__ you must translate you self. Becouse it impossible back to normal after obfuscation. So, little example:

Original buffered ship code:
Code:
package net.bigpoint.darkorbit.ship
{


   public class BufferedShip extends Object
   {
      public function BufferedShip(param1:int, param2:int, param3:int, param4:int, param5:int, param6:String, param7:String, param8:int, param9:int, param10:int, param11:int, param12:int, param13:Boolean, param14:int, param15:Boolean, param16:Boolean) {
         super();
         this.typeID=param1;
         this.userID=param2;
         this.xPos=param3;
         this.yPos=param4;
         this.speed=param5;
         this.username=param6;
         this.clanTag=param7;
         this.fractionID=param8;
         this.clanID=param9;
         this.clanDiplomacy=param10;
         this.dailyRank=param11;
         this.expansionstage=param12;
         this.warnIconOnMap=param13;
         this.galaxyGatesFinished=param14;
         this.isNPC=param15;
         this.cloaked=param16;
         return;
      }

      public var typeID:int;

      public var userID:int;

      public var xPos:int;

      public var yPos:int;

      public var speed:int;

      public var username:String;

      public var clanTag:String;

      public var fractionID:int;

      public var clanID:int;

      public var clanDiplomacy:int;

      public var dailyRank:int;

      public var expansionstage:int;

      public var warnIconOnMap:Boolean;

      public var galaxyGatesFinished:int;

      public var cloaked:Boolean;

      public var isNPC:Boolean;
   }

}
They should be:

Code:
package net.bigpoint.darkorbit.ship
{


   public class BufferedShip extends Object
   {
         

      public function BufferedShip(typeID:int, userID:int, xPos:int, yPos:int, speed:int, username:String, clanTag:String, fractionID:int, clanID:int, clanDiplomacy:int, dailyRank:int, expansionstage:int, warnIconOnMap:Boolean, galaxyGatesFinished:int, isNPC:Boolean, cloaked:Boolean) {
         super();
         this.typeID=typeID;
         this.userID=userID;
         this.xPos=xPos;
         this.yPos=yPos;
         this.speed=speed;
         this.username=username;
         this.clanTag=clanTag;
         this.fractionID=fractionID;
         this.clanID=clanID;
         this.clanDiplomacy=clanDiplomacy;
         this.dailyRank=dailyRank;
         this.expansionstage=expansionstage;
         this.warnIconOnMap=warnIconOnMap;
         this.galaxyGatesFinished=galaxyGatesFinished;
         this.isNPC=isNPC;
         this.cloaked=cloaked;
      }



      public var typeID:int;

      public var userID:int;

      public var xPos:int;

      public var yPos:int;

      public var speed:int;

      public var username:String;

      public var clanTag:String;

      public var fractionID:int;

      public var clanID:int;

      public var clanDiplomacy:int;

      public var dailyRank:int;

      public var expansionstage:int;

      public var warnIconOnMap:Boolean;

      public var galaxyGatesFinished:int;

      public var cloaked:Boolean;

      public var isNPC:Boolean;
   }

}
Or another example of protocol translation:

Original code:

Code:
 case ServerCommands.SHIP_MOVEMENT:
               _loc4_=int(_loc3_[2]);
               _loc5_=int(_loc3_[3]);
               _loc6_=int(_loc3_[4]);
               _loc70_=int(_loc3_[5]);
               _loc71_=false;
               _loc9_=this.main.screenManager.map;
               if(_loc9_!=null)
               {
                  _loc9_.getShipManager().moveShip(_loc4_,_loc5_,_loc6_,_loc70_);
               }
               break;
Should be translated as:

Code:
//Note: _loc3_ - that is data string
//var attributes:String = String(event.data);//array
// data=attributes.split(ATTRIBUTE_SEPERATOR);// |1|2|3|4|5|6|7|8|
//---------------------------------------------------------------//
 case ServerCommands.SHIP_MOVEMENT:
               shipID=int(data[2]); //from row = Ship ID param1
               userID=int(data[3]); //from row = userID param2
               shipTypeID=int(data[4]); //from row = ShipTypeID param3
               velocity=int(data[5]); //velocity
               _loc71_=false; //unknown, TODO. Probably - ship is cloacked when he move?
               map=this.main.screenManager.map; //user on map?
               if(map!=null) //_loc9_ - is a map, and if that not null do - 
               {
               //move our ship
map.getShipManager().moveShip(shipID,userID,shipTypeID,velocity);
               }
               break;
All simple and possible :pimp: (with some knownlege).
10/21/2013 14:30 arvatadryan#9
dude
i mean how i can download
10/21/2013 14:38 TehRoca#10
Hey Fenrisus - I like the work you are doing, I would like to say that most of us appreciate your effort in this section, however you will come across people that will slate what you do. Don't worry about them, just let them get on with it.

If this is possible with the old client, surely it is possible with the new one - however, after attempting to re-compile this, would it work? I think it is more than giving the vars/params meaningful names - however not 100% sure - would be cool for you or some other guru to clarify this :-)
10/21/2013 18:35 Fenrisus#11
Quote:
Originally Posted by arvatadryan View Post
dude
i mean how i can download
If Mega wont work, download from here
10/21/2013 18:54 Fenrisus#12
Quote:
Originally Posted by TehRoca View Post
Hey Fenrisus - I like the work you are doing, I would like to say that most of us appreciate your effort in this section, however you will come across people that will slate what you do. Don't worry about them, just let them get on with it.

If this is possible with the old client, surely it is possible with the new one - however, after attempting to re-compile this, would it work? I think it is more than giving the vars/params meaningful names - however not 100% sure - would be cool for you or some other guru to clarify this :-)
Yeah, them will work after fix, compilation & configure. that all parts and full source code from main.swf. That file works like a charm with Azure server.
10/27/2013 15:36 »jD«#13
Thought this was current version source code and was about to *facepalm* :P

Gnome knows why ;)

-jD
02/28/2022 00:55 rafail1234#14
heeelp :D what needs to be coded to enable the laserflash? this is the issue that im facing [Only registered and activated users can see links. Click Here To Register...]
as a rule the situation is as follows ---> [Only registered and activated users can see links. Click Here To Register...]
Regards :mofo: