From 754e296789c6da55e1b742cd9208ff53409904db Mon Sep 17 00:00:00 2001 From: pr701 Date: Sun, 21 Aug 2022 08:02:33 +0300 Subject: [PATCH] update docs - update readme - add commands list --- README.md | 121 ++++++++++++++++++++++++++++-------------- docs/commands-list.md | 41 ++++++++++++++ docs/report-form.md | 23 ++++++++ 3 files changed, 144 insertions(+), 41 deletions(-) create mode 100644 docs/commands-list.md create mode 100644 docs/report-form.md diff --git a/README.md b/README.md index 60cf190..40e2442 100644 --- a/README.md +++ b/README.md @@ -4,75 +4,114 @@ # DiIiS Project -DiIiS is a fully-functional open-source local server for [Diablo III: Reaper of Souls](https://eu.diablo3.blizzard.com) +DiIiS is a fully-functional open-source local server for [Diablo III: Reaper of Souls](https://eu.diablo3.blizzard.com). ## Features - Implemented account creation system, authorization and lobby. -- Fully implemented chat system. +- Implemented Necromancer class mechanics. +- Fully implemented chat system and friends. - Fully implemented clan system. -- Opened all cosmetics in the in-game store. -- Implemented basic DRLG. +- 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". -- Created the basis for the "Challenge Nephalem Rifts" 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. - NAT support is hidden, but possible ;) -## Installation +# Installation + +## Supported Clients + +Each version of the client includes changes to structures, opcodes and attributes. + +The currently supported version of the client: **2.7.3.82785** + +## Server Deploying -### General steps 1. Install [PostgreSQL 9.5.25](https://www.enterprisedb.com/downloads/postgres-postgresql-downloads). -2. Create databases in PostgreSQL: `diiis` and `worlds` -3. Change you account and password in `database.Account.config` and `database.Worlds.conifg` -4. Restore `worlds.backup` to `worlds` database -5. Compile by [VS 2019/2022](https://visualstudio.microsoft.com/) -6. Launch wait until server start, it creates a hierarchy. -7. Create account using console: `!account add Login Password Tag` -8. Install certificate `bnetserver.p12`, password - `123` (the game verifies the CA root certificates). -9. Use Client Diablo 3 `2.7.3.82785`. -9. Add redirects to the `hosts` file (`%WinDir%\System32\drivers\etc\hosts`): - `127.0.0.1 us.actual.battle.net` - `127.0.0.1 eu.actual.battle.net` -11. Launch client (`x64` or `x86`) with arguments `"Diablo III64.exe" -launch -uid diablo3_engb` -10. Login to the game using your credentials =) +2. Create databases in PostgreSQL: `diiis` and `worlds`. +3. Change you account and password in `database.Account.config` and `database.Worlds.conifg`. +4. Restore `worlds.backup` to `worlds` database. +5. Compile by [VS 2019/2022](https://visualstudio.microsoft.com/). +6. [Skip this stage for local game] Copy the [config.ini](configs/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`. +7. Launch wait until server start, it creates a hierarchy. +8. Create user account(s) using console: `!account add Login Password Tag` -### Using Docker -Run `docker-compose up` inside `db` folder and continue from the 5th step in section above +## Prepare Client -## Playing with friends +Do this for each client connecting to the server. -1. Create new accounts using the console command: - `!account add Login Password Tag` -2. Copy the [config.ini](configs/config.ini) file to the server folder (It overwrites the default settings) -3. In the IP fields - write your IP within the network. Update the parameter entries: `BindIP` and `PublicIP`. -4. Other players must specify your IP address in the `hosts` file (`%WinDir%\System32\drivers\etc\hosts`). - `192.168.1.1 us.actual.battle.net` - `192.168.1.1 eu.actual.battle.net` -5. Launch client (`x64` or `x86`) with arguments `"Diablo III64.exe" -launch -uid diablo3_engb` -6. Login to the game using your credentials -7. After that, when creating a game (in client), indicate the creation of a public game. -7. Other players, when connecting, must also indicate a public game, and at the start they will connect to you. +1. Get [supported client](#supported-clients) Diablo 3. -## Flexible configuration +2. Install certificate [bnetserver.p12](src/DiIiS-NA/bnetserver.p12), password - `123` (the game verifies the CA root certificates). + +3. Setting up redirects client to your server: + + **Method #1 - Hosts** + + Add redirects to the `hosts` file (`%WinDir%\System32\drivers\etc\hosts`): + `127.0.0.1 us.actual.battle.net` + `127.0.0.1 eu.actual.battle.net` + + !After the modification the official Battle.Net application will not be able to connect to the server! + + **Method #2 - Modify main executable file** + + ```c + // 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/ + ``` + +4. Launch client (`x64` or `x86`) with arguments `"Diablo III64.exe" -launch` + +5. Login to the game using your credentials. + +6. [Skip this stage for local game] After that, when creating a game (in client), indicate the creation of a public game. Other players, when connecting, must also indicate a public game, and at the start they will connect to you. + +7. You're in the game world! + +## Using Docker + +Run `docker-compose up` inside [db](db) folder and continue from the 5th step in section [server](#server-deploying). + +# Server Configuration + +## Global configuration Using the configuration file you can easily override the [global world parameters](docs/game-world-settings.md). -## Minimum system requirements +## Command system -Minimum system requirements for server +The command system allows you to get control of the game world if you have rights. A list of commands is available [here](docs/commands-list.md). -- CPU: Xeon E5-2620V3 (2.40 GHz and 6 cores) -- RAM: 4GB -- HDD/SSD: 500MB +# Issues -## Screenshots +Check the [report form](docs/report-form.md) before submitting issue, this will help people save time! + +# System requirements + +| | **Entry-level** | **Mid-range** | **High-end** | +| ---------- | ---------------------------- | ---------------------------- | ---------------------------- | +| **CPU** | Intel Core i5 or AMD Ryzen 5 | Intel Core i7 or AMD Ryzen 7 | Intel Core i9 or AMD Ryzen 9 | +| **Memory** | 4 GB RAM | 16 GB RAM | 64 GB RAM | +| **Disk** | 500 MB | 1 GB | 1 GB | + +# Screenshots You can see more screenshots [here](SCREENSHOTS.md) diff --git a/docs/commands-list.md b/docs/commands-list.md new file mode 100644 index 0000000..999ed42 --- /dev/null +++ b/docs/commands-list.md @@ -0,0 +1,41 @@ +# Server Commands List + +## Account Commands + +| Command Group | Command | Example | Description | +| -------------- | -------------- | ----------------------------------- | ---------------------------------------------- | +| Account Group | `show` | `!account show test@` | Shows information about given account | +| | `add` | `!account add test@ 123456 test` | Allows you to add a new user account | +| | `setpassword` | `!account setpassword test@ 123654` | Allows you to set a new password for account | +| | `setbtag` | `!account setbtag test@ NonTest` | Allows you to change battle tag for account | +| | `setuserlevel` | `!account setuserlevel admin` | Allows you to set a new user level for account | +| Mute Command | `mute` | `!mute test@` | Disable chat functions for user | + +## Game Commands + +| Command Group | Command | Example | Description | +| ----------------------- | ----------- | ------------------------ | ------------------------------------------------------------ | +| Spawn command | `spawn` | `!spawn 6632` | Spawn a mob by ID | +| Level up command | `levelup` | `!levelup 2` | Levels you character | +| Unlock Artisans command | `unlockart` | `!unlockart` | Unlock all artisans for you in Campaign | +| Platinum command | `platinum` | `!platinum 100` | Platinum for you | +| Gold command | `gold` | `!gold 100` | Gold for you? | +| Item command | `item` | `!item p71_ethereal_10` | Get any Item by Name | +| Teleport command | `tp` | `!tp 71150` | Teleport character to World by ID | +| SpeedHack command | `speed` | `!speed 2` | Increase you speed character | +| Lookup Command | `lookup` | `!lookup item axe` | Display all founded in game objects with entered text in Name | +| | | `!lookup world Tristram` | | +| | | `!lookup actor zombie` | | +| | | `!lookup power Punch` | | + +# Item List + +You can use the official website to search items: https://eu.diablo3.blizzard.com/en-us/item/ + +```c +// Sample: Firebird's Breast +// Url: https://eu.diablo3.blizzard.com/en-us/item/firebirds-breast-Unique_Chest_Set_06_x1 +// Name: Unique_Chest_Set_06_x1 +``` + +You can also access the elements created for testing during game development :) diff --git a/docs/report-form.md b/docs/report-form.md new file mode 100644 index 0000000..957e797 --- /dev/null +++ b/docs/report-form.md @@ -0,0 +1,23 @@ +# Issue report form + +## Report form related to server deployment problem + +1. Brief description of the problem. +2. Operating system (version, architecture). +3. Client version and architecture. +4. Sequence of actions. + +## Report form related to critical errors and crashes + +1. Brief description of the problem. +2. Operating system (version, architecture). +3. Client version and architecture. +4. **Server log** before the crash (if possible). +5. Crash address and callstack (if possible). + +## Report form related to the logic of the game world + +1. Brief description of the problem. +2. Operating system (version, architecture). +3. Client version and architecture. +5. Recent **server log**.