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.
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.
Thanks for sharing this work with us.
If I understood it right, it'll be so easy to build my packets
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.
Poop project, if this is for actual DO this is not going to work
=) 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;
}
}
//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;
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 :-)
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.