Diablo III - Blizzless Server

Page 1 of 2 12 LastLast
Results 1 to 25 of 48
  1. #1
    Evil Italian Overlowrd Droppy is offline
    Grand MasterRank
    Feb 2012 Join Date
    /home/droppyLocation
    2,080Posts

    config Diablo III - Blizzless Server

    DiIiS is an open-source local server for Diablo III: Reaper of Souls. It features account creation, authorization, lobby, Necromancer class mechanics, chat system, clan system, basic DRLG, item generator with in-game affixes, set items, main scripts for all story quests 5 acts, Adventure Mode, Challenge Nephalem Rifts mode, artificial intelligence for minions, personal artificial intelligence for monsters and bosses, and LAN.





    DiIiS Project

    DiIiS is a fully-functional open-source local server for Diablo III: Reaper of Souls.

    Diablo III Private Servers

    Diablo III is an action role-playing game developed and published by Blizzard Entertainment. It is the third installment in the Diablo franchise and was released for Microsoft Windows and OS X in May 2012, with the console versions releasing in September 2013. The game has been praised for its engaging story, variety of classes, and intense combat.

    Playing Diablo III on a private server can provide an even better experience than playing it on the official servers. Private servers offer a more stable connection, faster loading speeds, and no restrictions on character creation or trading. Additionally, many private servers also allow players to customize their gaming experience with unique mods and settings that are not available on the official servers. This makes playing Diablo III on a private server the best way to experience the game.

    A private game server also allows players to create a custom gaming environment, allowing them to customize the game to their own preferences. This includes changing the difficulty level, adding unique mods and settings, and even creating custom maps. Private servers also provide a more secure gaming experience as they are not subject to the same restrictions as official servers, and faster community responses.

    Overall, playing Diablo III on a private server is the best way to experience the game. Private servers offer a more stable connection, faster loading speeds, and no restrictions on character creation or trading. Additionally, players can customize their gaming experience with unique mods and settings that are not available on the official servers. This makes playing Diablo III on a private server the ideal way to enjoy the game.

    Features

    • Implemented account creation system, authorization and lobby.
    • Implemented Necromancer class mechanics.
    • Fully implemented chat system and friends.
    • Fully implemented clan system.
    • Implemented basic DRLG (dungeon generator).
    • Implemented item generator with in-game affixes.
    • Implemented the basic mechanics of almost all active abilities for all classes.
    • Implemented a system of set items.
    • Implemented all main scripts for all story quests 5 acts.
    • Implemented basic scripts and generator for "Adventure Mode".
    • Implemented the basis for the "Challenge Nephalem Rifts" mode.
    • Implemented artificial intelligence for 80% of minions.
    • Implemented personal artificial intelligence for 40% of all monsters.
    • Implemented personal artificial intelligence for half of the Bosses.
    • Implemented LAN
    Restrictions

    • Donate Store implementation is removed.


    Installation

    Supported Clients

    Each version of the client includes changes to structures, opcodes and attributes.

    The currently supported version of the client: 2.7.4.84161 - latest on Battle.NET

    Server Deploying
    ➡ Install PostgreSQL 9.5.25.
    ➡ Create databases in PostgreSQL: diiis and worlds.
    ➡ Change you account and password in database.Account.config and database.Worlds.conifg.
    ➡ Restore worlds.backup to worlds database.
    ➡ Compile using VS 2019/2022.
    [Skip this stage for local game] Copy the config.ini file to the server folder (It overwrites the default settings):
    • Update the parameter entries with your IP record on the network: BindIP and PublicIP.

    ➡ Launch wait until server start, it creates a hierarchy.
    ➡ Create user account(s) using console:

    Code:
    !account add LoginMail Password BattleTag <user|tester|gm|admin|owner>
    Example - creates a username Droppy@ with password TestPass123!, gamertag (without #) is MyBattleTag with owner rank:
    Code:
    !account add Droppy@ TestPass123! MyBattleTag owner´
    Prepare Client

    Do this for each client connecting to the server.

    ➡ Make sure you are using a Supported Client (mentioned above)
    ➡ Install certificate bnetserver.p12, password - 123 (the game verifies the CA root certificates).
    ➡ Setting up redirects client to your server:

    Method 1: Via HOSTS file

    Add redirects to the hosts file (C:\WINDOWS\System32\drivers\etc\hosts on windows or /etc/hosts on Linux/Unix):
    Code:
    127.0.0.1 us.actual.battle.net
    127.0.0.1 eu.actual.battle.net
    127.0.0.1 cn.actual.battle.net
    127.0.0.1 kr.actual.battle.net
    Or use this tool released here for easier distribution (compilation required)

    After the modification the official Battle.Net application will not be able to connect to the server! Make sure you are logged in before this change!

    Method 2: Via Binary Patching
    Code:
    // Find null-terminated string enum and rewrite with HexEditor to your IP server.
    eu.actual.battle.net/
    us.actual.battle.net/
    cn.actual.battle.net/
    kr.actual.battle.net/
    ➡ Optionally (to bypass Battle.NET bloatware): Launch the client (x64 or x86) with arguments "Diablo III64.exe" -launch

    ➡ Login to the game using your credentials.

    If you are not running locally, it is important to ensure that the game is set to public. This will allow other players to locate and join the game. To ensure successful connection, players must also set their game to public prior to connecting.

    You're in the game world!

    Using Docker

    Navigate to the designated 'db' directory and execute the command docker-compose up. Once this process has been successfully completed, please proceed to step 5 in the 'server' section of the relevant documentation for further instructions.

    Game World Parameters

    Please check this: https://github.com/blizzless/blizzle...ld-settings.md

    Source Code

    Community branch (recommended): https://github.com/blizzless/blizzle...tree/community

    Credits to
    @iEve @advocaite @PapkaHere
    And all contributors

    Screenshots



    View more:
    Spoiler:










    Donate to the project

    The Blizzless Team are proud to offer their software as open source, allowing anyone to access, modify and utilize its capabilities. The community is proud to continue, maintain and improve the software. If you find value in their work, please consider showing your appreciation through a donation. Every contribution helps!

    Russian (patreon-like): https://boosty.to/blizzless

    Donations to Blizzless are greatly appreciated and will be acknowledged with a discord color as a token of our gratitude. However, please note that such contributions do not entitle the donor to any additional privileges or access to server files.

    Last edited by Droppy; 05-02-23 at 11:06 AM.


  2. #2
    Newbie rgto is offline
    MemberRank
    Jan 2023 Join Date
    1Posts
    Excellent post.I hope this project can grow more and more,and the community gets very active.

  3. #3
    Evil Italian Overlowrd Droppy is offline
    Grand MasterRank
    Feb 2012 Join Date
    /home/droppyLocation
    2,080Posts
    Quote Originally Posted by rgto View Post
    Excellent post.I hope this project can grow more and more,and the community gets very active.
    thanks for your contributions! it's a nice project that tends to grow. I'll be trying to making some tools to aid development!

    - - - Updated - - -

    Recent Changes:



    ATTENTION: new PTR is out. some opcodes may be outdated. Backup your files whille we upgrade

    Cheers!

    - - - Updated - - -

    Changelog


    - - - Updated - - -

    Changelog
    Last edited by Droppy; 03-02-23 at 01:12 PM.

  4. #4
    Elite Member PapkaHere is online now
    Member +Rank
    Oct 2022 Join Date
    191Posts
    Great release.

  5. #5
  6. #6
    Elite Member PapkaHere is online now
    Member +Rank
    Oct 2022 Join Date
    191Posts
    Working! Confirmed! Have question about some mechanics, but it's good start for make some great!

  7. #7
    Evil Italian Overlowrd Droppy is offline
    Grand MasterRank
    Feb 2012 Join Date
    /home/droppyLocation
    2,080Posts
    Changelog


    Changelog
    • Do not show color tag logs on file target
    • Boss improvements
    • Added BossHealthMultiplier and BossDamageMultiplier on config.ini
    • Added further open multiple doors code


    Major:
    • Fixed bug that opened a portal behind Leoric before killing him (and to reopen it after killing him);
    • MethodTrace when opening door;
    • Created command to open all world's doors, nearby doors, and get info about door states;
    • Created a GetPortals near Actor.


    - - - Updated - - -

    plus some other small changes

    - - - Updated - - -



    Changelog:


    Major changes (thanks to @advocaite )

    • Fixed quest to find 2 orbs on the rotten forest;
    • Fixed load actors to load an actor file that could not be found - as many actors rely on a name which is not always provided on the enum by using a [SnoFileName("TheActual SnoFileName")];
    • Changed FileFormats.Actor to FileFormats.ActorData


    Basically, the enum couldn't find the actual file name of the actor file.

    The changes rely on adding a new attribute named SnoFileNameAttribute:
    Code:
    public enum ActorSno
    {
       // ...
        [SnoFileName("a1dun_Caves_Nephalem Altar_A_Chest_03")]
        _a1dun_caves_nephalem_altar_a_chest_03 = 215434,
        _arcanumorb_model = 215444,
        _fallenshaman_a_unique01whipple = 215445,
        _wizard_waveofforce_runeobsidian_shell = 215488,
        _cow_gem_flippy = 215500,
        _wizard_waveofforce_runegolden_shell = 215511,
         [SnoFileName("a1dun_Caves_Nephalem Altar_A_Chest_03_B")]
         _a1dun_caves_nephalem_altar_a_chest_03_b = 215512,
         // ...
    }
    Last edited by Droppy; 03-02-23 at 02:30 PM.

  8. #8
    Grand Master MUnoob is online now
    Grand MasterRank
    Apr 2011 Join Date
    500Posts
    Really awesome to see this project!

  9. #9
    Evil Italian Overlowrd Droppy is offline
    Grand MasterRank
    Feb 2012 Join Date
    /home/droppyLocation
    2,080Posts

  10. #10
    PwrGames PwrDex is offline
    Grand MasterRank
    Jul 2011 Join Date
    /var/log/cabalLocation
    793Posts
    Someone could make a repack for the client? Can't get that version which this required. Even live and test server already on different version :)

  11. #11
    Evil Italian Overlowrd Droppy is offline
    Grand MasterRank
    Feb 2012 Join Date
    /home/droppyLocation
    2,080Posts
    Quote Originally Posted by PwrDex View Post
    Someone could make a repack for the client? Can't get that version which this required. Even live and test server already on different version :)
    Due to copyright restrictions, it is not permissible to share this product on RZ. You may have luck finding it on other search engines, such as DuckDuckGo or Russian websites.

    - - - Updated - - -

    Changelog


    Update: Reverted the last commit as the animation IDs were incorrect, causing an unexpected behaviour in Open World. This was reported by a contributor.
    It appears that either the IDs on CoreTOC are incorrect or there is an implementation issue. Further investigation is required to determine the cause.

    Major changelog
    Description:
    • Fixed #116 - Community branch cannot save gold
    • Nephalem rift progress multiplier added to the Config.cs. Defaults to 1f (no change). Helps greatly.
    • `!world info` added for world information
    • `!difficulty <min/max>` added
    • Returning `List<T>` to `ImmutableArray<T>` on a particular method (will be changing more soon). Most List<T> on the project are read/only, best to return an array instead, less re-iteration by default, and some CLR improvements (https://devblogs.microsoft.com/dotne...mutablearrayt/)
    • Upgraded LogLevel from Warn to Error when it's a database error (DBSession.cs)
    • Removed some `//Blizzless Project 2022` with regex replacement
    • MethodTrace output enhancement.


    I have implemented a GetField<T>(...) and SetField(...) on GameAccount.cs, which should be applied to the rest of the project if it performs as expected. The use of lock alongside a property getter that generates a new instance every time is not recommended (nor works), as it will hold the lock for... nothing.

    Before:


    // notice this will query DBGameAccount every time it's called
    public DBGameAccount DBGameAccount => DBSessions.SessionGet(PersistentID);

    // case 1: works, but useless querying.
    lock (DBGameAccount)
    {

    var dbGAcc = DBGameAccount;
    DBSessions.SessionUpdate(dbGAcc);
    }

    // case 2: dooesn't work. two to three queries being made to the game account
    not a property that acts like a method. Apologise, but let's not let it happen again to other contributors

    lock (DBGameAccount)
    {
    DBGameAccount.DBAccount = value.DBAccount;
    DBSessions.SessionUpdate(DBGameAccount);
    }

    After:

    public ulong Gold
    {
    get => CurrentToon.IsHardcore ? GetField(s => s.HardcoreGold) : GetField(s => s.Gold);
    set
    {
    SetField(dbGameAccount =>
    {

    if (CurrentToon.IsHardcore) dbGameAccount.HardcoreGold = value;
    else dbGameAccount.Gold = value;
    // SetField will also take care of updating
    });
    }
    }


    This wrapper will serve as a reference for use in a different class to facilitate the movement of additional tables, as long as it's accepted by the community.

    TSource GetField<TSource>(Func<DBGameAccount, TSource> execute)
    => DBSessions.GetField(PersistentID, execute);
    void SetField(Action<DBGameAccount> execute, [CallerMemberName] string methodName = "")
    => DBSessions.SetField(PersistentID, execute);



    And finally, on DBSessions.GetField and DbSessions.SetField


    // obj = primary key

    public static TResult GetField<TSource, TResult>(object obj, Func<TSource, TResult> execute)
    {
    using IStatelessSession session = AccountDataBase.SessionProvider.SessionFactory.OpenStatelessSession();
    var db = session.Get<TSource>(obj);
    return execute(db);
    }

    public static void SetField<TSource>(object obj, Action<TSource> execute)
    {
    using IStatelessSession session = AccountDataBase.SessionProvider.SessionFactory.OpenStatelessSession();
    var db = session.Get<TSource>(obj);
    execute(db);
    session.Update(db);
    }
    Last edited by Droppy; 05-02-23 at 12:10 AM.

  12. #12
    Evil Italian Overlowrd Droppy is offline
    Grand MasterRank
    Feb 2012 Join Date
    /home/droppyLocation
    2,080Posts
    Fixed animations, will provide more info tomorrow
    @PapkaHere thanks a bunch for helping me validade the patches, I'm really appreciated!

  13. #13
    Newbie Ketchup is offline
    MemberRank
    Jan 2009 Join Date
    23Posts
    That markdown is special.

  14. #14
    Elite Member PapkaHere is online now
    Member +Rank
    Oct 2022 Join Date
    191Posts
    Quote Originally Posted by PwrDex View Post
    Someone could make a repack for the client? Can't get that version which this required. Even live and test server already on different version :)
    You can use retail client with last update.

  15. #15
    PwrGames PwrDex is offline
    Grand MasterRank
    Jul 2011 Join Date
    /var/log/cabalLocation
    793Posts
    Quote Originally Posted by PapkaHere View Post
    You can use retail client with last update.
    Yeah yesterday just found it out, im already trying to understand the code :)

    Looks like with version 2.4.7.86197 again lot of packet structure changed.
    Able to login, create char and warp but hitting several monster instantly desync the client..
    Last edited by PwrDex; 05-02-23 at 09:43 AM.

  16. #16
    Elite Member PapkaHere is online now
    Member +Rank
    Oct 2022 Join Date
    191Posts
    Quote Originally Posted by PwrDex View Post
    Yeah yesterday just found it out, im already trying to understand the code :)

    Looks like with version 2.4.7.86197 again lot of packet structure changed.
    Able to login, create char and warp but hitting several monster instantly desync the client..
    I'm us some client version it's work perfect.

    Desync? Mb you talk about actor animation? It's fix today.

  17. #17
    Evil Italian Overlowrd Droppy is offline
    Grand MasterRank
    Feb 2012 Join Date
    /home/droppyLocation
    2,080Posts
    possibly missing ticks. it is insanely heavy to run the animations for some reason. I'll see if I can pinpoint exactly what is causing this.
    @PapkaHere I think it's the one we talked about yesterday, where the game kinda freezes sometimes when animations are on...

  18. #18
    PwrGames PwrDex is offline
    Grand MasterRank
    Jul 2011 Join Date
    /var/log/cabalLocation
    793Posts
    Quote Originally Posted by Droppy View Post
    possibly missing ticks. it is insanely heavy to run the animations for some reason. I'll see if I can pinpoint exactly what is causing this.
    @PapkaHere I think it's the one we talked about yesterday, where the game kinda freezes sometimes when animations are on...
    Yeah exactly this
    the monsters freeze on hit, and also waypoints and everything else in the client is like you disconnecting.. you can move but can't hit or interact with anything

    This with the today's community branch src...

  19. #19
    Elite Member PapkaHere is online now
    Member +Rank
    Oct 2022 Join Date
    191Posts
    Quote Originally Posted by PwrDex View Post
    Yeah exactly this
    the monsters freeze on hit, and also waypoints and everything else in the client is like you disconnecting.. you can move but can't hit or interact with anything

    This with the today's community branch src...
    You about this problem?
    https://i.gyazo.com/8b384ceb80101cbf...619569a787.mp4

  20. #20
    PwrGames PwrDex is offline
    Grand MasterRank
    Jul 2011 Join Date
    /var/log/cabalLocation
    793Posts
    Quote Originally Posted by PapkaHere View Post
    yeah but only randomly happen..

  21. #21
    Elite Member PapkaHere is online now
    Member +Rank
    Oct 2022 Join Date
    191Posts
    Quote Originally Posted by PwrDex View Post
    yeah but only randomly happen..
    Update you server and test.

  22. #22
    Evil Italian Overlowrd Droppy is offline
    Grand MasterRank
    Feb 2012 Join Date
    /home/droppyLocation
    2,080Posts
    Quote Originally Posted by PwrDex View Post
    yeah but only randomly happen..
    CPU usage, can't sync with tick, lots happening server side yet, I think it happens mostly when you do char anims (powers) on lots of monsters at once, it's like a server debuff lol

    This update to the game server includes a new feature that automatically finishes a rift if there are less than a certain number of monsters alive, as well as an option to set the rate at which orbs are spawned. Additionally, various multipliers and paragon multipliers have been added for strength, dexterity, intelligence and vitality. A command group disable parameter has also been added, and improvements have been made to the death payload and health potion configurations.

    Changelog
    Last edited by Droppy; 13-02-23 at 04:39 PM.

  23. #23
    Elite Member PapkaHere is online now
    Member +Rank
    Oct 2022 Join Date
    191Posts
    Again great update by @Droppy . Go now testing and make new report.

  24. #24
    Evil Italian Overlowrd Droppy is offline
    Grand MasterRank
    Feb 2012 Join Date
    /home/droppyLocation
    2,080Posts

  25. #25


Page 1 of 2 12 LastLast

Advertisement