update docs

- update readme
- add commands list
This commit is contained in:
pr701 2022-08-21 08:02:33 +03:00
parent 6fb07908c3
commit 754e296789
3 changed files with 144 additions and 41 deletions

117
README.md
View File

@ -4,75 +4,114 @@
# DiIiS Project # 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 ## Features
- Implemented account creation system, authorization and lobby. - 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. - Fully implemented clan system.
- Opened all cosmetics in the in-game store. - Implemented basic DRLG (dungeon generator).
- Implemented basic DRLG.
- Implemented item generator with in-game affixes. - Implemented item generator with in-game affixes.
- Implemented the basic mechanics of almost all active abilities for all classes. - Implemented the basic mechanics of almost all active abilities for all classes.
- Implemented a system of set items. - Implemented a system of set items.
- Implemented all main scripts for all story quests 5 acts. - Implemented all main scripts for all story quests 5 acts.
- Implemented basic scripts and generator for "Adventure Mode". - 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 artificial intelligence for 80% of minions.
- Implemented personal artificial intelligence for 40% of all monsters. - Implemented personal artificial intelligence for 40% of all monsters.
- Implemented personal artificial intelligence for half of the Bosses. - Implemented personal artificial intelligence for half of the Bosses.
- Implemented LAN - Implemented LAN
## Restrictions
- Donate Store implementation is removed.
- NAT support is hidden, but possible ;) - 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). 1. Install [PostgreSQL 9.5.25](https://www.enterprisedb.com/downloads/postgres-postgresql-downloads).
2. Create databases in PostgreSQL: `diiis` and `worlds` 2. Create databases in PostgreSQL: `diiis` and `worlds`.
3. Change you account and password in `database.Account.config` and `database.Worlds.conifg` 3. Change you account and password in `database.Account.config` and `database.Worlds.conifg`.
4. Restore `worlds.backup` to `worlds` database 4. Restore `worlds.backup` to `worlds` database.
5. Compile by [VS 2019/2022](https://visualstudio.microsoft.com/) 5. Compile by [VS 2019/2022](https://visualstudio.microsoft.com/).
6. Launch wait until server start, it creates a hierarchy. 6. [Skip this stage for local game] Copy the [config.ini](configs/config.ini) file to the server folder (It overwrites the default settings):
7. Create account using console: `!account add Login Password Tag` - Update the parameter entries with your IP record on the network: `BindIP` and `PublicIP`.
8. Install certificate `bnetserver.p12`, password - `123` (the game verifies the CA root certificates). 7. Launch wait until server start, it creates a hierarchy.
9. Use Client Diablo 3 `2.7.3.82785`. 8. Create user account(s) using console: `!account add Login Password Tag`
9. Add redirects to the `hosts` file (`%WinDir%\System32\drivers\etc\hosts`):
## Prepare Client
Do this for each client connecting to the server.
1. Get [supported client](#supported-clients) Diablo 3.
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 us.actual.battle.net`
`127.0.0.1 eu.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 =)
### Using Docker !After the modification the official Battle.Net application will not be able to connect to the server!
Run `docker-compose up` inside `db` folder and continue from the 5th step in section above
## Playing with friends **Method #2 - Modify main executable file**
1. Create new accounts using the console command: ```c
`!account add Login Password Tag` // Find null-terminated string enum and rewrite with HexEditor to your IP server.
2. Copy the [config.ini](configs/config.ini) file to the server folder (It overwrites the default settings) eu.actual.battle.net/
3. In the IP fields - write your IP within the network. Update the parameter entries: `BindIP` and `PublicIP`. us.actual.battle.net/
4. Other players must specify your IP address in the `hosts` file (`%WinDir%\System32\drivers\etc\hosts`). cn.actual.battle.net/
`192.168.1.1 us.actual.battle.net` kr.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.
## Flexible configuration 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). 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) # Issues
- RAM: 4GB
- HDD/SSD: 500MB
## 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) You can see more screenshots [here](SCREENSHOTS.md)

41
docs/commands-list.md Normal file
View File

@ -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 :)

23
docs/report-form.md Normal file
View File

@ -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**.