Revolution Emulator [C#, R63B, Encryption Cracked, DAO, Fluent NHibernate, Lua Plugin, Mono]

Status
Not open for further replies.

Quackster

a devbest user says what
Aug 22, 2010
1,764
1,241
In my eyes it looks like you're doing too much to be fair with you, why not just make it one version, r63? And get it somewhere close to completion? Then come back to mixed versions? xD - Just a suggestion, but good luck and good progress.

I agree with this.

- You're over thinking this project as we haven't really seen anything being 'tested'
 

Zak

Posting Freak
Mar 12, 2011
847
453
Like i said i only did the login for other revision didn't take more then a hour of my times.
As i said i will be working on the new R63.
The emulator itself is just a holder.
It just handles the plugins.

You guys haven't seen anything from IN-GAME due to the fact i was having trouble with LittleJ's packet scout.
I solved that problem. As i was using R2 instead of R4.

All of the code itelf has been tested on the command line. Like Socket connection accepting.
Running a query on the console to see if the Mysql connection works.
See if it would support different database structures.

It may look like i'm doing too much. But it's only simple things that don't even take 1 hour.

I'm just making RevEmu good as possible. Sometimes over thinking is a good thing!
 

Deviant

Member
Jan 21, 2012
174
8
Going back to a post on page 12 about 30 - 50 folders post, when you mention it will have R26 and R63 folders does this mean we can switch between them and/or have them both at the same time?
 

Zak

Posting Freak
Mar 12, 2011
847
453
Going back to a post on page 12 about 30 - 50 folders post, when you mention it will have R26 and R63 folders does this mean we can switch between them and/or have them both at the same time?

You select in the Rev config on which revision you want.

The RevEnvironment will load the settings that you prefer.
 

Zak

Posting Freak
Mar 12, 2011
847
453
You can but you will have to code your own Structure etc.
 

Adil

DevBest CEO
May 28, 2011
1,276
714
I could write a load of plugins, as I do have some decent LUA knowledge :)
 

Zak

Posting Freak
Mar 12, 2011
847
453
I could write a load of plugins, as I do have some decent LUA knowledge :)
You can develop loads of plugins easily ^_^

Updates:
Started on Libraries.
Started on Cleaning Source.

Once i have done these two i will apply the new headers to the old structure.
 

Zak

Posting Freak
Mar 12, 2011
847
453
Naw, it will support current SQL Structures like Phoenix and other popular structures.

Also working on cracking the NEWEST release of Habbo swfs!

progress

Checking out the action script

Code:
package
{
    import HabboMain.*;
    import _-09-.*;
    import _-1Mt.*;
    import _-2CC.*;
    import _-2eM.*;
    import _-2qO.*;
    import _-32F.*;
    import _-3hQ.*;
    import _-3rN.*;
    import _-3xr.*;
    import _-Rv.*;
    import com.sulake.core.*;
    import flash.display.*;
    import flash.events.*;
    import flash.external.*;
    import flash.net.*;
 
    public class HabboMain extends Sprite
    {
        private var _core:_-0ds;
        private var _isFading:Boolean = false;
        private var _loadingScreen:HabboLoadingScreen;
        private var _tracking:_-2go;
 
        public function HabboMain(param1:HabboLoadingScreen)
        {
            this._loadingScreen = param1;
            this._loadingScreen.addEventListener(Event.COMPLETE, this.onCompleteEvent);
            this._loadingScreen.addEventListener(ProgressEvent.PROGRESS, this.onProgressEvent);
            addEventListener(Event.ADDED_TO_STAGE, this.onAddedToStage);
            addEventListener(Event.ENTER_FRAME, this.onEnterFrame);
            _-2uh.log("Core version: " + Core.version);
            return;
        }// end function
 
        private function dispose() : void
        {
            removeEventListener(Event.ADDED_TO_STAGE, this.onAddedToStage);
            removeEventListener(Event.ENTER_FRAME, this.onEnterFrame);
            if (this._loadingScreen)
            {
                this._loadingScreen.removeEventListener(Event.COMPLETE, this.onCompleteEvent);
                this._loadingScreen.removeEventListener(ProgressEvent.PROGRESS, this.onProgressEvent);
                this._loadingScreen._-26e();
                this._loadingScreen = null;
            }
            if (parent)
            {
                parent.removeChild(this);
            }
            return;
        }// end function
 
        private function initializeCore() : void
        {
            try
            {
                this._core.initialize();
                if (ExternalInterface.available)
                {
                    ExternalInterface.addCallback("unloading", this.unloading);
                }
            }
            catch (error:Error)
            {
                Habbo.trackLoginStep(Habbo.CORE_ERROR);
                Core._-1wK("Failed to initialize the core: " + error.message, Core._-0o8, error);
            }
            return;
        }// end function
 
        public function unloading() : void
        {
            if (this._core && !this._core.disposed)
            {
                _-3gD._-029("Unload", "Client unloading started");
                this._core.events.dispatchEvent(new Event(Event.UNLOAD));
            }
            return;
        }// end function
 
        protected function onAddedToStage(event:Event = null) : void
        {
            var event:* = event;
            try
            {
                this.prepareCore();
            }
            catch (error:Error)
            {
                Habbo.trackLoginStep(Habbo.CORE_ERROR);
                Habbo.reportCrash("Failed to prepare the core: " + error.message, Core._-0o8, error);
                Core.dispose();
            }
            return;
        }// end function
 
        private function prepareCore() : void
        {
            Habbo.trackLoginStep(Habbo.CORE_INIT);
            ;
            ;
            Core._core = stage._-3S6(Core.CORE_SETUP_DEBUG, Core._-Cn);
            this._core.events.addEventListener(_-1Qg.COMPONENT_EVENT_ERROR, this.onCoreError);
            this._core._-0x4(CoreCommunicationFrameworkLib);
            this._core._-0x4(HabboRoomObjectLogicLib);
            this._core._-0x4(HabboRoomObjectVisualizationLib);
            this._core._-0x4(RoomManagerLib);
            this._core._-0x4(RoomSpriteRendererLib);
            this._core._-0x4(HabboRoomSessionManagerLib);
            this._core._-0x4(HabboAvatarRenderLib);
            this._core._-0x4(HabboSessionDataManagerLib);
            this._core._-0x4(HabboTrackingLib);
            this._core._-0x4(HabboConfigurationCom);
            this._core._-0x4(HabboLocalizationCom);
            this._core._-0x4(HabboWindowManagerCom);
            this._core._-0x4(HabboCommunicationCom);
            this._core._-0x4(HabboCommunicationDemoCom);
            this._core._-0x4(HabboNavigatorCom);
            this._core._-0x4(HabboFriendListCom);
            this._core._-0x4(HabboMessengerCom);
            this._core._-0x4(HabboInventoryCom);
            this._core._-0x4(HabboToolbarCom);
            this._core._-0x4(HabboCatalogCom);
            this._core._-0x4(HabboRoomEngineCom);
            this._core._-0x4(HabboRoomUICom);
            this._core._-0x4(HabboAvatarEditorCom);
            this._core._-0x4(HabboNotificationsCom);
            this._core._-0x4(HabboHelpCom);
            this._core._-0x4(HabboAdManagerCom);
            this._core._-0x4(HabboModerationCom);
            this._core._-0x4(HabboUserDefinedRoomEventsCom);
            this._core._-0x4(HabboSoundManagerFlash10Com);
            this._core._-0x4(HabboQuestEngineCom);
            this._core._-0x4(HabboFriendBarCom);
            this._core._-0x4(HabboGroupsCom);
            this._core._-0x4(HabboGamesCom);
            this._tracking = _-2go._-ph();
            var _loc_1:* = this._core.assets.loadAssetFromFile("config.xml", new URLRequest("config_habbo.xml"));
            if (_loc_1._-1Iv.ready)
            {
                this.setupCoreConfigFromLoader(_loc_1);
            }
            else
            {
                _loc_1.addEventListener(AssetLoaderEvent._-yN, this.configLoadedHandler);
                _loc_1.addEventListener(AssetLoaderEvent._-rv, this.configLoadedHandler);
            }
            return;
        }// end function
 
        private function configLoadedHandler(event:AssetLoaderEvent) : void
        {
            var _loc_2:_-0pY = null;
            _loc_2 = event.target as _-0pY;
            _loc_2.removeEventListener(AssetLoaderEvent._-yN, this.configLoadedHandler);
            _loc_2.removeEventListener(AssetLoaderEvent._-rv, this.configLoadedHandler);
            if (event.type == AssetLoaderEvent._-yN)
            {
                this.setupCoreConfigFromLoader(_loc_2);
            }
            else
            {
                Habbo.reportCrash("Failed to download external configuration document " + _loc_2._-1Iv.url + "!", Core._-1tD, null);
            }
            return;
        }// end function
 
        private function setupCoreConfigFromLoader(param1:_-0pY) : void
        {
            var _loc_2:* = this._core.assets.getAssetByName(param1.assetName) as _-0b2;
            if (!_loc_2 || !_loc_2.content)
            {
                Habbo.reportCrash("Download external configuration document is null!", Core._-1tD, null);
            }
            if (this._core)
            {
                this._core._-25u(XML(_loc_2.content), this._loadingScreen);
            }
            else
            {
                Habbo.reportCrash("Core vanished while downloading config document!", Core._-1tD, null);
            }
            return;
        }// end function
 
        private function onEnterFrame(event:Event) : void
        {
            if (this._isFading)
            {
                this._isFading = false;
                this.dispose();
            }
            return;
        }// end function
 
        private function onCompleteEvent(event:Event) : void
        {
            this.updateLoadingBar();
            this.initializeCore();
            this._isFading = true;
            return;
        }// end function
 
        private function onProgressEvent(event:ProgressEvent) : void
        {
            this.updateLoadingBar();
            return;
        }// end function
 
        private function updateLoadingBar() : void
        {
            var _loc_1:uint = 0;
            var _loc_2:int = 0;
            var _loc_3:Number = NaN;
            if (this._loadingScreen != null)
            {
                _loc_1 = this._core._-1xX();
                _loc_2 = this._core._-0zv() + _loc_1;
                _loc_3 = Habbo.CORE_RATIO + _loc_1 / _loc_2 * (1 - Habbo.CORE_RATIO);
                this._loadingScreen.updateLoadingBar(_loc_3);
            }
            return;
        }// end function
 
        public function onCoreError(event:Event) : void
        {
            Habbo.trackLoginStep(Habbo.CORE_ERROR);
            return;
        }// end function
 
    }
}

Code:
            this._core._-0x4(CoreCommunicationFrameworkLib);
            this._core._-0x4(HabboRoomObjectLogicLib);
            this._core._-0x4(HabboRoomObjectVisualizationLib);
            this._core._-0x4(RoomManagerLib);
            this._core._-0x4(RoomSpriteRendererLib);
            this._core._-0x4(HabboRoomSessionManagerLib);
            this._core._-0x4(HabboAvatarRenderLib);
            this._core._-0x4(HabboSessionDataManagerLib);
            this._core._-0x4(HabboTrackingLib);
            this._core._-0x4(HabboConfigurationCom);
            this._core._-0x4(HabboLocalizationCom);
            this._core._-0x4(HabboWindowManagerCom);
            this._core._-0x4(HabboCommunicationCom);
            this._core._-0x4(HabboCommunicationDemoCom);
            this._core._-0x4(HabboNavigatorCom);
            this._core._-0x4(HabboFriendListCom);
            this._core._-0x4(HabboMessengerCom);
            this._core._-0x4(HabboInventoryCom);
            this._core._-0x4(HabboToolbarCom);
            this._core._-0x4(HabboCatalogCom);
            this._core._-0x4(HabboRoomEngineCom);
            this._core._-0x4(HabboRoomUICom);
            this._core._-0x4(HabboAvatarEditorCom);
            this._core._-0x4(HabboNotificationsCom);
            this._core._-0x4(HabboHelpCom);
            this._core._-0x4(HabboAdManagerCom);
            this._core._-0x4(HabboModerationCom);
            this._core._-0x4(HabboUserDefinedRoomEventsCom);
            this._core._-0x4(HabboSoundManagerFlash10Com);
            this._core._-0x4(HabboQuestEngineCom);
            this._core._-0x4(HabboFriendBarCom);
            this._core._-0x4(HabboGroupsCom);
            this._core._-0x4(HabboGamesCom);

This is where all the Features get Bit Converted :/
 

Crateria

Member
Nov 19, 2011
26
2
I like the progress of this, any ideas on when this might be released? (Not trying to rush you)
 

Zak

Posting Freak
Mar 12, 2011
847
453
I like the progress of this, any ideas on when this might be released? (Not trying to rush you)

It's alright i understand.

Once i can get in-game started with all the cache managers done. Progress will be well. Seems like a lot of people are having Room Data problems with the new revisions so i'll what's going ^_^
 

Zak

Posting Freak
Mar 12, 2011
847
453
Aye.
By taking some advice from Matty13 on my PacketHandler.

I have made 2 features for my packet handler.
A handler for the events.
And a handler for the composer.

Also as far i am aware i am working on SWF release 02-01-12.
I would work on 02-02-12 but it's swf is not cracked. So best to go for a cracked build.
 

Zak

Posting Freak
Mar 12, 2011
847
453
So this is how a standard Event would be handled/written.

Code:
public class ExampleEvent : IMessageEventRegister
{
 public int HeaderId
 {
  get
   {
    return Build.Headers.ServerEvents.Header;
   }
 }
  public void RegisterEvent(TCPSession session, ClientMessage request)
   {
      PacketHandler.WriteComposer(session, new SampleComposer);
      Etc required for this event
   }
}

A composer being written

Code:
public class ExampleComposer : IMessageComposerRegister
{
  public ServerMessage RegisterComposer()
    {
       var message = new ServerMessage(header);
       //Build Message structure
       
       return message; // Message get's written by the Packet Handler.
    }
}
 

Kryptos

prjRev.com
Jul 21, 2010
2,205
1,252
So this is how a standard Event would be handled/written.

Code:
public class ExampleEvent : IMessageEventRegister
{
public int HeaderId
{
  get
  {
    return Build.Headers.ServerEvents.Header;
  }
}
  public void RegisterEvent(TCPSession session, ClientMessage request)
  {
      PacketHandler.WriteComposer(session, new SampleComposer);
      Etc required for this event
  }
}

A composer being written

Code:
public class ExampleComposer : IMessageComposerRegister
{
  public ServerMessage RegisterComposer()
    {
      var message = new ServerMessage(header);
      //Build Message structure
     
      return message; // Message get's written by the Packet Handler.
    }
}

Looks pretty hawt ;)

Can't wait to see some more snippets soon :D Keep progressing!
 
  • Like
Reactions: Zak

Zak

Posting Freak
Mar 12, 2011
847
453
I'm not gonna lie but some of this idea game from RevCMS's template system the API.

like $this->blah->setHtml();

So i did.

PacketHandler.WriteComposer(session, new Composer);

Also i will!
 

Zak

Posting Freak
Mar 12, 2011
847
453
nice progress i tough only DOm can crack the newest SWF? (seen on RZ)
Dom,Office.Boy,Privilege,IMadDj these people can crack the current swfs.

But there was a few swfs that were cracked which were 01-02-12 by betterway, 01-13-12 by betterway.

So i will be most likely be using one of these versions.
 
Status
Not open for further replies.

Users who are viewing this thread

Top