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!

Black Desert Online (Java, Emulator, MongoDB)

Status
Not open for further replies.
Newbie Spellweaver
Joined
Dec 31, 2017
Messages
24
Reaction score
3
Re: Black Desert Online

Of couse there is error with compile,since launcher source from decompiled launcher and its seems to be completely mess with all links.Anyway its need alot of work for recover links properly,so right now its useless.
 
Joined
Apr 16, 2007
Messages
441
Reaction score
204
Re: Black Desert Online

Of couse there is error with compile,since launcher source from decompiled launcher and its seems to be completely mess with all links.Anyway its need alot of work for recover links properly,so right now its useless.

it's not a decompiled launcher the source for the launcher is provided in the files.

Mirror
https://mega.nz/#!4KA2lZoY!p5CCU02NuOKJdHw8usJAH-2amN8U4-9MvxnL2V_cE4k
btw anyone tried the launcher thing? messed yeterday before go to sleep without succes... or any way to connect without them

as far as i know you need the launcher to connect since the files use a key to login, i have tried forcing the client to run but i always get crypt null message or wrong account.
 
Joined
Apr 16, 2007
Messages
441
Reaction score
204
Re: Black Desert Online

does someone had run on localhost success now??
someone did get the files up and running from what the screenshots he posted suggested, but i don't think he will share how to set one up since we havn't heard or seen him since which is usually the case.
 
Newbie Spellweaver
Joined
May 25, 2009
Messages
45
Reaction score
3
Re: Black Desert Online

it's not a decompiled launcher the source for the launcher is provided in the files.



as far as i know you need the launcher to connect since the files use a key to login, i have tried forcing the client to run but i always get crypt null message or wrong account.

similar situation
 
Banned
Banned
Joined
Dec 3, 2010
Messages
1,581
Reaction score
619
Re: Black Desert Online

it's not a decompiled launcher the source for the launcher is provided in the files.



as far as i know you need the launcher to connect since the files use a key to login, i have tried forcing the client to run but i always get crypt null message or wrong account.
That's the moment when lastfun appears and saves the world lol

 
Junior Spellweaver
Joined
Dec 10, 2014
Messages
120
Reaction score
44
Re: Black Desert Online

yeah was thinking to use the old method like the old src was here around, creating account in the db, the key, then add command to the exe with the key created. But still have no luck to see how to create even the account in the db xd
 
Joined
Apr 16, 2007
Messages
441
Reaction score
204
Re: Black Desert Online

yeah was thinking to use the old method like the old src was here around, creating account in the db, the key, then add command to the exe with the key created. But still have no luck to see how to create even the account in the db xd

the old BD Emu? i tried that src before the last time i used it, it had no packets, crypt functions or database the creator of those files just logged the packets when they were encrypted and when the client would request packets all the server did was relay them.

if you decompiled the login.jar you will see some database structures: (Account.java)

Code:
package com.bdoemu.login.models.db;


import com.bdoemu.commons.database.mongo.JSONable;
import com.bdoemu.commons.model.enums.EAccessLevel;
import com.bdoemu.commons.model.xmlrpc.XMLRPCable;
import com.bdoemu.commons.model.xmlrpc.XmlRpcMessage;
import com.bdoemu.commons.model.xmlrpc.impl.XmlRpcAccount;
import com.bdoemu.commons.rmi.model.Macros;
import com.bdoemu.login.idfactory.LSIDStorageType;
import com.bdoemu.login.models.db.Account$Account;
import com.bdoemu.login.models.db.Account$Log;
import com.bdoemu.login.models.db.Account$Payment;
import com.bdoemu.login.models.db.Payment$Payment;
import com.mongodb.BasicDBList;
import com.mongodb.BasicDBObject;
import com.mongodb.BasicDBObjectBuilder;
import com.mongodb.DBObject;
import java.lang.invoke.ConstantCallSite;
import java.lang.invoke.MethodHandle;
import java.lang.invoke.MethodHandles;
import java.lang.invoke.MethodType;


public class Account
extends JSONable
implements XMLRPCable {
    private final long objectId;
    private long cash;
    private String password;
    private String accountName;
    private String email;
    private String host;
    private EAccessLevel accessLvl = EAccessLevel.USER;
    private String family = "";
    private String pin = "";
    private String confirmationHash = "";
    private String changePasswordHash = "";
    private long registrationDate;
    private int characterSlots;
    private Macros[] macroses;
    private String gameOption;
    private String uiInfo;
    private static volatile transient Object[] \u631e;


    public Account(BasicDBObject basicDBObject) {
        this.objectId = basicDBObject.getLong(Account$Account.\uc7d1("\uee5d\u1da7\u0229"));
        this.accountName = basicDBObject.getString(Account$Account.\uc7d1("\uee63\u1dad\u022e\u0fe8\u121a\ue3db\u3225\u42d6\u12fa\u1c7c\u240d"));
        this.password = basicDBObject.getString(Account$Account.\uc7d1("\uee72\u1daf\u023e\u0ff4\u1218\ue3da\u3223\u42fc"));
        this.pin = basicDBObject.getString(Account$Account.\uc7d1("\uee72\u1da7\u0223"));
        this.family = basicDBObject.getString(Account$Account.\uc7d1("\uee64\u1daf\u0220\u0fee\u1203\ue3cc"));
        this.host = basicDBObject.getString(Account$Account.\uc7d1("\uee6a\u1da1\u023e\u0ff3"));
        this.accessLvl = EAccessLevel.valueOf((int)basicDBObject.getInt(Account$Account.\uc7d1("\uee63\u1dad\u022e\u0fe2\u121c\ue3c6\u321d\u42ee\u12f7")));
        this.characterSlots = basicDBObject.getInt(Account$Account.\uc7d1("\uee61\u1da6\u022c\u0ff5\u120e\ue3d6\u3225\u42fd\u12e9\u1c42\u2404\u178e\u8046\u445d"));
        this.cash = basicDBObject.getInt(Account$Account.\uc7d1("\uee61\u1daf\u023e\u0fef"));
        if (basicDBObject.containsField(Account$Account.\uc7d1("\uee6f\u1daf\u022e\u0ff5\u1200\ue3c6\u3234\u42eb"))) {
            BasicDBList basicDBList = (BasicDBList)basicDBObject.get(Account$Account.\uc7d1("\uee6f\u1daf\u022e\u0ff5\u1200\ue3c6\u3234\u42eb"));
            this.macroses = new Macros[10];
            for (Object e : basicDBList) {
                Macros macros;
                this.macroses[macros.getIndex()] = macros = new Macros((BasicDBObject)e);
            }
        }
        if (basicDBObject.containsField(Account$Account.\uc7d1("\uee67\u1da3\u022c\u0fee\u1203"))) {
            this.email = basicDBObject.getString(Account$Account.\uc7d1("\uee67\u1da3\u022c\u0fee\u1203"));
        }
        if (basicDBObject.containsField(Account$Account.\uc7d1("\uee65\u1daf\u0220\u0fe2\u1220\ue3c5\u3225\u42f1\u12f4\u1c7f"))) {
            this.gameOption = ((BasicDBObject)basicDBObject.get(Account$Account.\uc7d1("\uee65\u1daf\u0220\u0fe2\u1220\ue3c5\u3225\u42f1\u12f4\u1c7f"))).getString(Account$Account.\uc7d1("\uee65\u1daf\u0220\u0fe2\u1220\ue3c5\u3225\u42f1\u12f4\u1c7f\u242c\u1780\u8046\u444f"));
        }
        if (basicDBObject.containsField(Account$Account.\uc7d1("\uee77\u1da7\u0204\u0fe9\u1209\ue3da"))) {
            this.uiInfo = ((BasicDBObject)basicDBObject.get(Account$Account.\uc7d1("\uee77\u1da7\u0204\u0fe9\u1209\ue3da"))).getString(Account$Account.\uc7d1("\uee77\u1da7\u0209\u0fe6\u121b\ue3d4"));
        }
        if (basicDBObject.containsField(Account$Account.\uc7d1("\uee61\u1da1\u0223\u0fe1\u1206\ue3c7\u323c\u42f9\u12ef\u1c78\u2407\u178f\u807a\u444f\u5707\u35f5"))) {
            this.confirmationHash = basicDBObject.getString(Account$Account.\uc7d1("\uee61\u1da1\u0223\u0fe1\u1206\ue3c7\u323c\u42f9\u12ef\u1c78\u2407\u178f\u807a\u444f\u5707\u35f5"));
        }
        if (basicDBObject.containsField(Account$Account.\uc7d1("\uee61\u1da6\u022c\u0fe9\u1208\ue3d0\u3201\u42f9\u12e8\u1c62\u241f\u178e\u8040\u444a\u573c\u35fc\u8689\uce4c"))) {
            this.changePasswordHash = basicDBObject.getString(Account$Account.\uc7d1("\uee61\u1da6\u022c\u0fe9\u1208\ue3d0\u3201\u42f9\u12e8\u1c62\u241f\u178e\u8040\u444a\u573c\u35fc\u8689\uce4c"));
        }
        this.registrationDate = basicDBObject.getLong(Account$Account.\uc7d1("\uee70\u1dab\u022a\u0fee\u121c\ue3c1\u3223\u42f9\u12ef\u1c78\u2407\u178f\u8076\u444f\u5700\u35f8"), 0);
    }


    public Account(String string, String string2, String string3) {
        this.objectId = Account.\ud3cd(Account.\u9433(), LSIDStorageType.ACCOUNT);
        this.accountName = string;
        this.email = string2;
        this.password = string3;
        this.registrationDate = Account.\u76c3();
    }


    public DBObject toDBObject() {
        BasicDBObjectBuilder basicDBObjectBuilder = new BasicDBObjectBuilder();
        basicDBObjectBuilder.append(Account$Payment.\u92cb("\uf511\uef09\u5c2f"), Account.\ud0a0(this.objectId));
        basicDBObjectBuilder.append(Account$Payment.\u92cb("\uf52f\uef03\u5c28\ud9d7\ua8f1\u58b2\u2aa0\u9ed4\u8505\uc62d\ue920"), (Object)this.accountName);
        basicDBObjectBuilder.append(Account$Payment.\u92cb("\uf52b\uef0d\u5c2a\ud9d1\ua8e8"), (Object)this.email);
        basicDBObjectBuilder.append(Account$Payment.\u92cb("\uf53e\uef01\u5c38\ud9cb\ua8f3\u58b3\u2aa6\u9efe"), (Object)this.password);
        basicDBObjectBuilder.append(Account$Payment.\u92cb("\uf53e\uef09\u5c25"), (Object)this.pin);
        basicDBObjectBuilder.append(Account$Payment.\u92cb("\uf528\uef01\u5c26\ud9d1\ua8e8\u58a5"), (Object)this.family);
        basicDBObjectBuilder.append(Account$Payment.\u92cb("\uf52f\uef03\u5c28\ud9dd\ua8f7\u58af\u2a98\u9eec\u8508"), Account.\u41a3(this.accessLvl.getAccessId()));
        basicDBObjectBuilder.append(Account$Payment.\u92cb("\uf52d\uef08\u5c2a\ud9ca\ua8e5\u58bf\u2aa0\u9eff\u8516\uc613\ue929\ufdff\ue1d3\u10e1"), Account.\u41a3(this.characterSlots));
        basicDBObjectBuilder.append(Account$Payment.\u92cb("\uf52d\uef01\u5c38\ud9d0"), Account.\ud0a0(this.cash));
        basicDBObjectBuilder.append(Account$Payment.\u92cb("\uf52d\uef0f\u5c25\ud9de\ua8ed\u58ae\u2ab9\u9efb\u8510\uc629\ue92a\ufdfe\ue1ef\u10f3\uebb4\ue373"), (Object)this.confirmationHash);
        basicDBObjectBuilder.append(Account$Payment.\u92cb("\uf52d\uef08\u5c2a\ud9d6\ua8e3\u58b9\u2a84\u9efb\u8517\uc633\ue932\ufdff\ue1d5\u10f6\ueb8f\ue37a\u1d2e\ub3cf"), (Object)this.changePasswordHash);
        basicDBObjectBuilder.append(Account$Payment.\u92cb("\uf53c\uef05\u5c2c\ud9d1\ua8f7\u58a8\u2aa6\u9efb\u8510\uc629\ue92a\ufdfe\ue1e3\u10f3\uebb3\ue37e"), Account.\ud0a0(this.registrationDate));
        return basicDBObjectBuilder.get();
    }


    public XmlRpcAccount toXMLRpcObject(String string) {
        XmlRpcAccount xmlRpcAccount = new XmlRpcAccount();
        xmlRpcAccount.setAccountId(this.objectId);
        xmlRpcAccount.setAccountName(this.accountName);
        xmlRpcAccount.setEmail(this.email);
        xmlRpcAccount.setFamily(this.family);
        xmlRpcAccount.setCash(this.cash);
        xmlRpcAccount.setPassword(this.password);
        xmlRpcAccount.setAccessLevel(this.accessLvl);
        xmlRpcAccount.setConfirmationCode(this.confirmationHash);
        xmlRpcAccount.setChangePasswordCode(this.changePasswordHash);
        xmlRpcAccount.setRegistrationDate(this.registrationDate);
        return xmlRpcAccount;
    }


    public long getObjectId() {
        return this.objectId;
    }


    public long getCash() {
        return this.cash;
    }


    public String getPassword() {
        return this.password;
    }


    public String getAccountName() {
        return this.accountName;
    }


    public String getEmail() {
        return this.email;
    }


    public String getHost() {
        return this.host;
    }


    public EAccessLevel getAccessLvl() {
        return this.accessLvl;
    }


    public String getFamily() {
        return this.family;
    }


    public String getPin() {
        return this.pin;
    }


    public String getConfirmationHash() {
        return this.confirmationHash;
    }


    public String getChangePasswordHash() {
        return this.changePasswordHash;
    }


    public long getRegistrationDate() {
        return this.registrationDate;
    }


    public int getCharacterSlots() {
        return this.characterSlots;
    }


    public Macros[] getMacroses() {
        return this.macroses;
    }


    public String getGameOption() {
        return this.gameOption;
    }


    public String getUiInfo() {
        return this.uiInfo;
    }


    public void setCash(long l) {
        this.cash = l;
    }


    public void setPassword(String string) {
        this.password = string;
    }


    public void setAccountName(String string) {
        this.accountName = string;
    }


    public void setEmail(String string) {
        this.email = string;
    }


    public void setHost(String string) {
        this.host = string;
    }


    public void setAccessLvl(EAccessLevel eAccessLevel) {
        this.accessLvl = eAccessLevel;
    }


    public void setFamily(String string) {
        this.family = string;
    }


    public void setPin(String string) {
        this.pin = string;
    }


    public void setConfirmationHash(String string) {
        this.confirmationHash = string;
    }


    public void setChangePasswordHash(String string) {
        this.changePasswordHash = string;
    }


    public void setRegistrationDate(long l) {
        this.registrationDate = l;
    }


    public void setCharacterSlots(int n) {
        this.characterSlots = n;
    }


    public void setMacroses(Macros[] arrmacros) {
        this.macroses = arrmacros;
    }


    public void setGameOption(String string) {
        this.gameOption = string;
    }


    public void setUiInfo(String string) {
        this.uiInfo = string;
    }


    public String toString() {
        return Account.\u147a(Account.\ua9af(Account.\ua9af(Account.\ua9af(Account.\ua9af(Account.\ua9af(Account.\ua9af(Account.\ua9af(Account.\ubfa4(Account.\ua9af(Account.\u6e60(Account.\ua9af(Account.\ua9af(Account.\ua9af(Account.\ua9af(Account.\ua9af(Account.\ua9af(Account.\ua9af(Account.\ua9af(Account.\ua9af(Account.\u6c19(Account.\ua9af(Account.\ua9af(Account.\ua9af(Account.\ua9af(Account.\ua9af(Account.\ua9af(Account.\ua9af(Account.\ua9af(Account.\ua9af(Account.\u6e60(Account.\ua9af(Account.\u6e60(Account.\ua9af(new StringBuilder(), Account$Account.\uc7d1("\ud1f8\u6bff\u171a\ub929\u170c\ua09d\u50c5\uac5d\udc1b\u1044\ubbfd\ud384\ude1f\ua03f\udaad\u6628\u0724")), this.getObjectId()), Account$Account.\uc7d1("\ud195\u6bbc\u171a\ub927\u170a\ua09b\u508c")), this.getCash()), Account$Account.\uc7d1("\ud195\u6bbc\u1709\ub927\u170a\ua080\u50c6\uac1a\udc06\u1042\ubbaa")), this.getPassword()), Account$Account.\uc7d1("\ud195\u6bbc\u1718\ub925\u171a\ua09c\u50c4\uac1b\udc00\u1068\ubbf6\ud38c\ude19\ua076")), this.getAccountName()), Account$Account.\uc7d1("\ud195\u6bbc\u171c\ub92b\u1718\ua09a\u50dd\uac48")), this.getEmail()), Account$Account.\uc7d1("\ud195\u6bbc\u1711\ub929\u170a\ua087\u508c")), this.getHost()), Account$Account.\uc7d1("\ud195\u6bbc\u1718\ub925\u171a\ua096\u50c2\uac06\udc38\u1050\ubbfb\ud3dc")), this.getAccessLvl()), Account$Account.\uc7d1("\ud195\u6bbc\u171f\ub927\u1714\ua09a\u50dd\uac0c\udc49")), this.getFamily()), Account$Account.\uc7d1("\ud195\u6bbc\u1709\ub92f\u1717\ua0ce")), this.getPin()), Account$Account.\uc7d1("\ud195\u6bbc\u171a\ub929\u1717\ua095\u50d8\uac07\udc19\u1047\ubbe3\ud388\ude13\ua025\udaac\u662d\u076a\uca62\ua2d8")), this.getConfirmationHash()), Account$Account.\uc7d1("\ud195\u6bbc\u171a\ub92e\u1718\ua09d\u50d6\uac10\udc24\u1047\ubbe4\ud392\ude0b\ua024\uda96\u6628\u0751\uca6b\ua296\u084b\u4a2d")), this.getChangePasswordHash()), Account$Account.\uc7d1("\ud195\u6bbc\u170b\ub923\u171e\ua09a\u50c2\uac01\udc06\u1047\ubbe3\ud388\ude13\ua025\udaa0\u662d\u076d\uca6f\ua2d8")), this.getRegistrationDate()), Account$Account.\uc7d1("\ud195\u6bbc\u171a\ub92e\u1718\ua081\u50d0\uac16\udc00\u1043\ubbe5\ud3b2\ude10\ua024\uda90\u663f\u0724")), this.getCharacterSlots()), Account$Account.\uc7d1("\ud195\u6bbc\u1714\ub927\u171a\ua081\u50de\uac06\udc11\u1055\ubbaa")), Account.\u5e7d(this.getMacroses())), Account$Account.\uc7d1("\ud195\u6bbc\u171e\ub927\u1714\ua096\u50fe\uac05\udc00\u104f\ubbf8\ud38f\ude41")), this.getGameOption()), Account$Account.\uc7d1("\ud195\u6bbc\u170c\ub92f\u1730\ua09d\u50d7\uac1a\udc49")), this.getUiInfo()), Account$Account.\uc7d1("\ud190")));
    }


    public boolean equals(Object object) {
        if (object == this) {
            return true;
        }
        if (!(object instanceof Account)) {
            return false;
        }
        Account account = (Account)((Object)object);
        if (!account.canEqual((Object)this)) {
            return false;
        }
        if (this.getObjectId() != account.getObjectId()) {
            return false;
        }
        if (this.getCash() != account.getCash()) {
            return false;
        }
        String string = this.getPassword();
        String string2 = account.getPassword();
        if (string == null ? string2 != null : !string.equals(string2)) {
            return false;
        }
        String string3 = this.getAccountName();
        String string4 = account.getAccountName();
        if (string3 == null ? string4 != null : !string3.equals(string4)) {
            return false;
        }
        String string5 = this.getEmail();
        String string6 = account.getEmail();
        if (string5 == null ? string6 != null : !string5.equals(string6)) {
            return false;
        }
        String string7 = this.getHost();
        String string8 = account.getHost();
        if (string7 == null ? string8 != null : !string7.equals(string8)) {
            return false;
        }
        EAccessLevel eAccessLevel = this.getAccessLvl();
        EAccessLevel eAccessLevel2 = account.getAccessLvl();
        if (eAccessLevel == null ? eAccessLevel2 != null : !eAccessLevel.equals((Object)eAccessLevel2)) {
            return false;
        }
        String string9 = this.getFamily();
        String string10 = account.getFamily();
        if (string9 == null ? string10 != null : !string9.equals(string10)) {
            return false;
        }
        String string11 = this.getPin();
        String string12 = account.getPin();
        if (string11 == null ? string12 != null : !string11.equals(string12)) {
            return false;
        }
        String string13 = this.getConfirmationHash();
        String string14 = account.getConfirmationHash();
        if (string13 == null ? string14 != null : !string13.equals(string14)) {
            return false;
        }
        String string15 = this.getChangePasswordHash();
        String string16 = account.getChangePasswordHash();
        if (string15 == null ? string16 != null : !string15.equals(string16)) {
            return false;
        }
        if (this.getRegistrationDate() != account.getRegistrationDate()) {
            return false;
        }
        if (this.getCharacterSlots() != account.getCharacterSlots()) {
            return false;
        }
        if (Account.\ubc80(this.getMacroses(), account.getMacroses()) == false) {
            return false;
        }
        String string17 = this.getGameOption();
        String string18 = account.getGameOption();
        if (string17 == null ? string18 != null : !string17.equals(string18)) {
            return false;
        }
        String string19 = this.getUiInfo();
        String string20 = account.getUiInfo();
        if (string19 == null ? string20 != null : !string19.equals(string20)) {
            return false;
        }
        return true;
    }


    protected boolean canEqual(Object object) {
        return object instanceof Account;
    }


    public int hashCode() {
        int n = 59;
        int n2 = 1;
        long l = this.getObjectId();
        n2 = n2 * 59 + (int)(l >>> 32 ^ l);
        long l2 = this.getCash();
        n2 = n2 * 59 + (int)(l2 >>> 32 ^ l2);
        String string = this.getPassword();
        n2 = n2 * 59 + (string == null ? 43 : string.hashCode());
        String string2 = this.getAccountName();
        n2 = n2 * 59 + (string2 == null ? 43 : string2.hashCode());
        String string3 = this.getEmail();
        n2 = n2 * 59 + (string3 == null ? 43 : string3.hashCode());
        String string4 = this.getHost();
        n2 = n2 * 59 + (string4 == null ? 43 : string4.hashCode());
        EAccessLevel eAccessLevel = this.getAccessLvl();
        n2 = n2 * 59 + (eAccessLevel == null ? 43 : eAccessLevel.hashCode());
        String string5 = this.getFamily();
        n2 = n2 * 59 + (string5 == null ? 43 : string5.hashCode());
        String string6 = this.getPin();
        n2 = n2 * 59 + (string6 == null ? 43 : string6.hashCode());
        String string7 = this.getConfirmationHash();
        n2 = n2 * 59 + (string7 == null ? 43 : string7.hashCode());
        String string8 = this.getChangePasswordHash();
        n2 = n2 * 59 + (string8 == null ? 43 : string8.hashCode());
        long l3 = this.getRegistrationDate();
        n2 = n2 * 59 + (int)(l3 >>> 32 ^ l3);
        n2 = n2 * 59 + this.getCharacterSlots();
        n2 = n2 * 59 + Account.\u7d8a(this.getMacroses());
        String string9 = this.getGameOption();
        n2 = n2 * 59 + (string9 == null ? 43 : string9.hashCode());
        String string10 = this.getUiInfo();
        n2 = n2 * 59 + (string10 == null ? 43 : string10.hashCode());
        return n2;
    }


    private static Object \u7d8a(Object object, String string, MethodType methodType) {
        if (\u631e == null) {
            \u631e = new Object[13];
        }
        if (\u631e[8] == null) {
            Account.\u631e[8] = new ConstantCallSite(MethodHandles.lookup().findStatic(Class.forName(Account$Payment.\u92cb("\u4a7e\uafaa\u0de6\u02f2\u6086\uae7e\uc1c2\u0c57\ue068\ud4a8\u7d7e\ub9fa\ua3da\u624a\u48d4\ua21c")), Account$Payment.\u92cb("\u4a70\uafae\u0df5\u02e3\u60e0\uae6a\uc1c5\u0c56\ue047\ud4e9\u7d5b\ub9ed"), methodType).asType(methodType));
        }
        return \u631e[8];
    }


    private static Object \u147a(Object object, String string, MethodType methodType) {
        if (\u631e == null) {
            \u631e = new Object[13];
        }
        if (\u631e[12] == null) {
            Account.\u631e[12] = new ConstantCallSite(MethodHandles.lookup().findVirtual(Class.forName(Payment$Payment.\u37a9("\ue8dd\u4bd3\uce2d\u2056\u6a1d\ude7d\u19b5\u74d0\u532c\ub149\u383a\u6bac\ubafb\u4452\ub886\uc443\ue352\u783c\ue505\ua2ee\ua32a\u6314\u66ff")), Payment$Payment.\u37a9("\ue8c3\u4bdd\uce08\u2043\u6a41\ude78\u19ba\u74d9"), methodType.dropParameterTypes(0, 1)).asType(methodType));
        }
        return \u631e[12];
    }


    private static Object \ubfa4(Object object, String string, MethodType methodType) {
        if (\u631e == null) {
            \u631e = new Object[13];
        }
        if (\u631e[4] == null) {
            Account.\u631e[4] = new ConstantCallSite(MethodHandles.lookup().findVirtual(Class.forName(Account$Payment.\u92cb("\u511b\ub9b6\u4a70\u86fa\u6978\ubb4d\ubfb1\ud0d4\u3103\ud9ad\ue4f2\u1452\uaee5\ueb02\uf84b\u8aa7\u0148\ub148\u7740\ua446\u4baa\u2fc3\ud028")), Account$Payment.\u92cb("\u5110\ub9a7\u4a76\u86fe\u6938\ubb45"), methodType.dropParameterTypes(0, 1)).asType(methodType));
        }
        return \u631e[4];
    }


    private static Object \u41a3(Object object, String string, MethodType methodType) {
        if (\u631e == null) {
            \u631e = new Object[13];
        }
        if (\u631e[5] == null) {
            Account.\u631e[5] = new ConstantCallSite(MethodHandles.lookup().findStatic(Class.forName(Account$Payment.\u92cb("\u9c78\u4151\ub754\u71aa\u053f\u6668\u2530\u5dc7\u6752\u4b1f\u0dd8\u85bd\u6d0e\u74c1\u465c\uddff\uc36d")), Account$Payment.\u92cb("\u9c64\u4151\ub74e\u71be\u0574\u664b\u2537"), methodType).asType(methodType));
        }
        return \u631e[5];
    }


    private static Object \u6e60(Object object, String string, MethodType methodType) {
        if (\u631e == null) {
            \u631e = new Object[13];
        }
        if (\u631e[10] == null) {
            Account.\u631e[10] = new ConstantCallSite(MethodHandles.lookup().findVirtual(Class.forName(Account$Account.\uc7d1("\u7384\ud8ef\u68fc\u651c\u4342\u866d\u47b6\u7750\u3726\ua47f\u090c\u8cb5\u3725\u0e2b\uc29d\u78b5\u0be0\u9124\u65aa\u8847\ue16a\u1116\u7971")), Account$Account.\uc7d1("\u738f\ud8fe\u68fa\u6518\u4302\u8665"), methodType.dropParameterTypes(0, 1)).asType(methodType));
        }
        return \u631e[10];
    }


    private static Object \ud3cd(Object object, String string, MethodType methodType) {
        if (\u631e == null) {
            \u631e = new Object[13];
        }
        if (\u631e[9] == null) {
            Account.\u631e[9] = new ConstantCallSite(MethodHandles.lookup().findVirtual(Class.forName(Account$Account.\uc7d1("\u1dac\u2260\u4764\u8672\u07ce\ueb93\u2f34\uf5c3\uc146\u8439\uec3a\ufda2\uf4e7\ub898\ud7d3\u5925\u24f2\uc5b1\u4064\u4151\u369b\u4d46\u972b\uef12\u02c4\u85c2\u22fb\u4e1b\u7d1a\u7395\u536b\u5edb\ufb57\u04ef\u2d8f\u9e2b\ufdd2\ua221\u4ce8\ucd93\u1d05\ucbb4\u092d\u3c3d\u5224\ud7a7\u7f14")), Account$Account.\uc7d1("\u1da1\u226a\u4771\u8628\u07e5\ueb93"), methodType.dropParameterTypes(0, 1)).asType(methodType));
        }
        return \u631e[9];
    }


    private static Object \u5e7d(Object object, String string, MethodType methodType) {
        if (\u631e == null) {
            \u631e = new Object[13];
        }
        if (\u631e[0] == null) {
            Account.\u631e[0] = new ConstantCallSite(MethodHandles.lookup().findStatic(Class.forName(Account$Account.\uc7d1("\udc16\u6791\ub87b\u0c9a\u64c3\uf692\ue932\u4516\u0feb\u4bda\u9a8e\uc523\u6095\u36b5\u4719\u4b91")), Account$Account.\uc7d1("\udc18\u6795\ub868\u0c8b\u64b9\uf688\ue915\u450b\u0ff5\u4b9d\u9aa1\uc536"), methodType).asType(methodType));
        }
        return \u631e[0];
    }


    private static Object \ud0a0(Object object, String string, MethodType methodType) {
        if (\u631e == null) {
            \u631e = new Object[13];
        }
        if (\u631e[3] == null) {
            Account.\u631e[3] = new ConstantCallSite(MethodHandles.lookup().findStatic(Class.forName(Payment$Payment.\u37a9("\u4766\u41af\uf936\u2302\uf0ac\u18b7\u4500\u3f5f\uaebc\uc754\ub0b8\u5060\u4328\u642b")), Payment$Payment.\u37a9("\u477a\u41af\uf92c\u2316\uf0e7\u1894\u4507"), methodType).asType(methodType));
        }
        return \u631e[3];
    }


    private static Object \u76c3(Object object, String string, MethodType methodType) {
        if (\u631e == null) {
            \u631e = new Object[13];
        }
        if (\u631e[1] == null) {
            Account.\u631e[1] = new ConstantCallSite(MethodHandles.lookup().findStatic(Class.forName(Payment$Payment.\u37a9("\u6698\u19c3\ufa6d\u4690\u2cd6\uc334\u70a9\u97e8\ufa19\u8191\ucc09\u036f\ucc9d\u0671\u3e74\u1b6b")), Payment$Payment.\u37a9("\u6691\u19d7\ufa69\u4683\u2c9d\uc336\u70bc\u97d2\ufa17\u81d2\ucc3f\u035b\ucc87\u0669\u3e7d\u1b6f\u1a9e"), methodType).asType(methodType));
        }
        return \u631e[1];
    }


    private static Object \ua9af(Object object, String string, MethodType methodType) {
        if (\u631e == null) {
            \u631e = new Object[13];
        }
        if (\u631e[11] == null) {
            Account.\u631e[11] = new ConstantCallSite(MethodHandles.lookup().findVirtual(Class.forName(Account$Log.\u44e3("\udd00\ua0b5\ucc75\u81d9\u89c6\u3bcb\u7db3\udd2b\u6990\u2ba2\u6801\ud49d\u48c8\u627a\ufa45\u294b\u8184\u7f97\uec50\u6e71\uff7c\u31f0\ud66a")), Account$Log.\u44e3("\udd0b\ua0a4\ucc73\u81dd\u8986\u3bc3"), methodType.dropParameterTypes(0, 1)).asType(methodType));
        }
        return \u631e[11];
    }


    private static Object \ubc80(Object object, String string, MethodType methodType) {
        if (\u631e == null) {
            \u631e = new Object[13];
        }
        if (\u631e[6] == null) {
            Account.\u631e[6] = new ConstantCallSite(MethodHandles.lookup().findStatic(Class.forName(Account$Account.\uc7d1("\udcc2\uef83\u4e78\u3e32\u6229\uc46a\ua99d\u45d4\u8def\ua7bc\ua777\u3166\ue1cc\u020e\u4ee2\u2ab4")), Account$Account.\uc7d1("\udccc\uef87\u4e6b\u3e23\u6242\uc46e\ua99c\u45dc\u8def\ua7e1"), methodType).asType(methodType));
        }
        return \u631e[6];
    }


    private static Object \u9433(Object object, String string, MethodType methodType) {
        if (\u631e == null) {
            \u631e = new Object[13];
        }
        if (\u631e[2] == null) {
            Account.\u631e[2] = new ConstantCallSite(MethodHandles.lookup().findStatic(Class.forName(Payment$Payment.\u37a9("\ubb28\u0f62\u0536\u866f\u2ec5\uc04a\ueccb\u6c3c\ua2c3\u6f4a\uca00\u3eb4\ud512\u9ce1\uebf2\ua9e6\u973d\uf60f\u35d4\udfd2\ua506\ucc46\ub973\uc866\u1966\u0273\u9c72\u06e2\u117d\udc4e\u6057\u7767\u613e\u9307\u29fd\u52a8\ufd6f\u5971\uaaed\u9cf9\ua829\ue10a\u92d5\u5977\ua484\u5373\u65c5")), Payment$Payment.\u37a9("\ubb2c\u0f68\u052f\u8608\u2ec9\uc05d\uecd0\u6c38\ua2c0\u6f5c\uca4b"), methodType).asType(methodType));
        }
        return \u631e[2];
    }


    private static Object \u6c19(Object object, String string, MethodType methodType) {
        if (\u631e == null) {
            \u631e = new Object[13];
        }
        if (\u631e[7] == null) {
            Account.\u631e[7] = new ConstantCallSite(MethodHandles.lookup().findVirtual(Class.forName(Payment$Payment.\u37a9("\u0d47\u0366\u1b17\u8962\u7a7a\ub8fc\ub599\u5e10\uf777\u9aee\ufc1d\uc6ea\u886c\u16cf\ufdd6\u87c1\u0a95\u6054\u45d5\u67be\ue404\u8ad2\uda85")), Payment$Payment.\u37a9("\u0d4c\u0377\u1b11\u8966\u7a3a\ub8f4"), methodType.dropParameterTypes(0, 1)).asType(methodType));
        }
        return \u631e[7];
    }
}

DB structure:
Code:
[COLOR=#ff0000]    private final long objectId;[/COLOR]
[COLOR=#ff0000]    private long cash;[/COLOR]
[COLOR=#ff0000]    private String password;[/COLOR]
[COLOR=#ff0000]    private String accountName;[/COLOR]
[COLOR=#ff0000]    private String email;[/COLOR]
[COLOR=#ff0000]    private String host;[/COLOR]
[COLOR=#ff0000]    private EAccessLevel accessLvl = EAccessLevel.USER;[/COLOR]
[COLOR=#ff0000]    private String family = "";[/COLOR]
[COLOR=#ff0000]    private String pin = "";[/COLOR]
[COLOR=#ff0000]    private String confirmationHash = "";[/COLOR]
[COLOR=#ff0000]    private String changePasswordHash = "";[/COLOR]
[COLOR=#ff0000]    private long registrationDate;[/COLOR]
[COLOR=#ff0000]    private int characterSlots;[/COLOR]
[COLOR=#ff0000]    private Macros[] macroses;[/COLOR]
[COLOR=#ff0000]    private String gameOption;[/COLOR]
[COLOR=#ff0000]    private String uiInfo;[/COLOR]
[COLOR=#ff0000]    private static volatile transient Object[] \u631e;[/COLOR]

Note:
if you try to add the account manually i don't think it works since when i start login server i get an error most likely from the files trying to read the account field i added maybe i'm doing something wrong? idk if you get it working let me know lol.
 
Last edited:
Junior Spellweaver
Joined
Dec 10, 2014
Messages
120
Reaction score
44
Re: Black Desert Online

interesting both are deleted xd i will upload to other place i will edit this post when ready.
 
Joined
Apr 16, 2007
Messages
441
Reaction score
204
Re: Black Desert Online

@DjFerry did you manage to compile the launcher? I still get the same errors from the original launcher.

btw i posted the database structure above.
 
Last edited:
Junior Spellweaver
Joined
Dec 10, 2014
Messages
120
Reaction score
44
Re: Black Desert Online

still no luck if i find something i will for sure post it, but well my knowledge is a bit limited jajaj but i will try thnx for post the database structure :) its quite similar to the old one.


Yeah did also the disable the keys ( token ) and set autoregister accounts without succes.
 
Last edited:
Joined
Apr 16, 2007
Messages
441
Reaction score
204
Re: Black Desert Online

there is also a setting in the config folder of gameserver and loginserver where you can disable the keys (token) and set auto register accounts, but this has not worked for me but then again for this to work maybe you have to pass a specific command line through the client?
 
Newbie Spellweaver
Joined
Dec 31, 2017
Messages
24
Reaction score
3
Re: Black Desert Online

it's not a decompiled launcher the source for the launcher is provided in the files.
Whatever you think,but you wrong.

// Decompiled with JetBrains decompiler// Type: CrimsonDesertLauncher.ViewModels.DashboardViewModel// Assembly: CrimsonDesertLauncher, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null// MVID: 7F28607C-CFC9-48E3-89A9-FAEB0B79E7B3// Assembly location: C:\Program Files\OgreFest Launcher\CrimsonDesertLauncher.exeusing \u003CPrivateImplementationDetails\u003E\u007BD49B64D5\u002D82BA\u002D414A\u002DAD3F\u002D07FAB3390E60\u007D;

Read and you will see.Obliviusly includes should not look this way.Its completely messed up.Links and pointers completely messed up within source.Without proper structure you never compile this source.
 
Newbie Spellweaver
Joined
Jun 16, 2014
Messages
94
Reaction score
2
Re: Black Desert Online

do someone have the useful client! can share the dl link?
 
Newbie Spellweaver
Joined
Dec 30, 2017
Messages
31
Reaction score
1
Re: Black Desert Online

Безымянный - Black Desert Online (Java, Emulator, MongoDB) - RaGEZONE Forums
 

Attachments

You must be registered for see attachments list
Status
Not open for further replies.
Back
Top