Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var firstHost = null;
- var xorKey = new Array();
- var base64Charset = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
- var base64Reverse = new Array();
- for(var i = base64Charset.length - 1;i >= 0;i--){
- base64Reverse[base64Charset.charAt(i)] = i;
- }
- String.prototype.replace = function(searchStr, replaceStr):String {
- var arr:Array = this.split(searchStr);
- return arr.join(replaceStr);
- };
- function encodeBase64(s:Array){
- var r = "";
- var p = "";
- var c = s.length % 3;
- if(c > 0){
- for(;c < 3;c++){
- p += "=";
- s.push(0);
- }
- }
- for(c = 0;c < s.length; c+=3){
- var n = (s[c] << 16) + (s[c + 1] << 8) + (s[c + 2]);
- r += base64Charset.charAt((n >> 18) & 63) +
- base64Charset.charAt((n >> 12) & 63) +
- base64Charset.charAt((n >> 6) & 63) +
- base64Charset.charAt(n & 63);
- }
- return r.substr(0, r.length - p.length) + p;
- };
- function decodeBase64(encoded:String){
- for(var i = 0;i < encodedLength;i++){
- if(base64Charset.indexOf(encodedLength.charAt(i)) == -1){
- encodedLength.replace(encodedLength.charAt(i--), "");
- }
- }
- var p = (encoded.charAt(encoded.length - 1) == "=" ?
- (encoded.charAt(encoded.length - 2) == "=" ? "AA" : "A") : "");
- var r = new Array();
- encoded = encoded.substr(0, encoded.length - p.length) + p;
- for(var c = 0;c < encoded.length;c+=4){
- var n = (base64Reverse[encoded.charAt(c)] << 18)
- + (base64Reverse[encoded.charAt(c+1)] << 12)
- + (base64Reverse[encoded.charAt(c+2)] << 6)
- + base64Reverse[encoded.charAt(c+3)];
- r.push((n >>> 16) & 255);
- r.push((n >>> 8) & 255);
- r.push(n & 255);
- }
- return r.slice(0, r.length - p.length);
- };
- dofus_aks_Aks.connect = function (sHost, nPort, bSaveHost)
- {
- if(firstHost == null || firstHost == sHost){
- xorKey = null;
- firstHost = sHost;
- }
- if (bSaveHost == undefined)
- {
- bSaveHost = true;
- } // end if
- if (this._bConnected)
- {
- return (null);
- } // end if
- if (this._bConnecting)
- {
- return (null);
- } // end if
- this.api.ui.loadUIComponent("Waiting", "Waiting", undefined, {bStayIfPresent: true});
- if (sHost == undefined)
- {
- sHost = this.api.datacenter.Basics.serverHost;
- }
- else if (bSaveHost)
- {
- this.api.datacenter.Basics.serverHost = sHost;
- } // end else if
- if (nPort == undefined)
- {
- nPort = this.api.datacenter.Basics.serverPort;
- }
- else if (bSaveHost)
- {
- this.api.datacenter.Basics.serverPort = nPort;
- } // end else if
- this._bConnecting = true;
- this._aLastPings = new Array();
- var connect = this._xSocket.connect(sHost, nPort);
- return (connect);
- };
- dofus_aks_Aks.onData = function(sData){
- ank.utils.Timer.removeTime(this.Lag,"lag");
- if(this._bLag){
- dofus.utils.Api.getInstance().ui.unloadUIComponent("WaitingMessage");
- ank.utils.Timer.removeTimer(this.Deco, "deco");
- this._bLag = false;
- }
- if(this._isWaitingForData){
- this._isWaitingForData = false;
- this.api.ui.unloadUIComponent("Waiting");
- var timer = getTimer() - this._nLastWaitingSend;
- this._aLastPings.push(timer);
- if(this._aLastPings.length > dofus.aks.Aks.EVALUATE_AVERAGE_PING_ON_COMMANDS){
- this._aLastPings.shift();
- }
- }
- if(xorKey != null && xorKey.length > 0){
- sData = decodeBase64(sData);
- var finalData:String = "";
- for(var i = 0;i < sData.length;i++){
- finalData += String.fromCharCode(sData[i] ^ (xorKey[xorKey.length - (i % xorKey.length) - 1]));
- }
- sData = finalData;
- }
- else{
- var newXorKey = new Array();
- var xorKeySize = sData.charCodeAt(sData.length - 1);
- for(var i = 0;i < xorKeySize;i++){
- newXorKey.unshift(sData.charCodeAt(sData.length - i - 2));
- }
- xorKey = newXorKey;
- }
- if (_global.PRECV)
- {
- this.api.kernel.showMessage(undefined, "Packet reçus : " + "<b>" + sData + "</b>", "DEBUG_CLIENT");
- } // end if
- ank.utils.Logger.log("<< " + sData);
- this._oDataProcessor.process(sData);
- };
- dofus_aks_Aks.send = function (sData, bWaiting, sWaitingMessage, bNoLimit, bNoCyphering)
- {
- this.api.kernel.GameManager.signalActivity();
- if (bWaiting || bWaiting == undefined)
- {
- if (sWaitingMessage != undefined)
- {
- this.api.ui.loadUIComponent("WaitingMessage", "WaitingMessage", {text: sWaitingMessage}, {bAlwaysOnTop: true, bForceLoad: true});
- } // end if
- this._sDebug = sData;
- this.api.ui.loadUIComponent("Waiting", "Waiting");
- this._isWaitingForData = true;
- if (this.api.datacenter.Basics.inGame && this._bAutoReco)
- {
- ank.utils.Timer.setTimer(this.Lag, "lag", this, this.onLag, Number(this.api.lang.getConfigText("DELAY_RECO_MESSAGE")));
- } // end if
- } // end if
- while(sData.charAt(sData.length -1) == '\n' || sData.charAt(sData.length - 1) == '\r'){
- sData = sData.substr(0, sData.length - 1);
- }
- ank.utils.Logger.log(">> [NC] " + sData);
- if (_global.PSEND)
- {
- this.api.kernel.showMessage(undefined, "Envoie du packet : " + "<b>" + sData + "</b>", "DEBUG_PAKET");
- } // end if
- var finalData:Array = new Array();
- for(var i = 0;i < sData.length;i++){
- finalData.push(sData.charCodeAt(i) ^ (xorKey[i % xorKey.length]));
- }
- finalData = encodeBase64(finalData);
- ank.utils.Logger.log("[" + finalData + "] => " + decipherStrData);
- this._xSocket.send(finalData);
- if (bWaiting || bWaiting == undefined)
- {
- this._nLastWaitingSend = getTimer();
- } // end if
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement