mirror of
https://github.com/SoDOff-Project/sodoff.git
synced 2025-10-11 08:18:49 -07:00
update README, add sample files for localhosting (#2)
* update README, add sample files for localhosting * fix port number in sample DWADragonsMain.xml * update readme * update itemid schema info * update appsettings comments --------- Co-authored-by: Spirtix <michal.prazak1@gmail.com>
This commit is contained in:
parent
97503cc389
commit
4662bbd629
71
README.md
71
README.md
@ -1,33 +1,64 @@
|
|||||||
# SoD-Off - School of Dragons, Offline
|
# SoDOff - School of Dragons, Offline
|
||||||
|
|
||||||
On 7th June, 2023, School of Dragons announced they were "sunsetting" the game, and turning the servers off on the 30th of June.
|
On 7th June 2023, School of Dragons announced they were "sunsetting" the game, and turning the servers off on the 30th of June.
|
||||||
|
At that time, SoDOff was born. Currently, it is an almost complete implementation of the School of Dragons API server (and some other JS games).
|
||||||
|
It allows you to run SoD offline as well as host private online servers.
|
||||||
|
|
||||||
## Discord
|
We also provide MMO server implementation for SoD (https://github.com/SoDOff-Project/sodoff-mmo).
|
||||||
[](https://discord.gg/bqHtMRbhM3)
|
It is recommended to use the MMO server even when offline, as some aspects of the single player game depend on MMO.
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
SoDOff is open source, distributed under the [AGPL](LICENSE) license.
|
||||||
|
This license does not cover resources obtained from the game or from responses of the original API distributed with the API server, especially:
|
||||||
|
`missions.xml`, `items.xml`, `allranks.xml` and `store.xml` files from the `src/Resources` directory and files inside the `src/assets` directory.
|
||||||
|
|
||||||
## Getting started
|
## Getting started
|
||||||
|
|
||||||
For the first time setup, run the following command:
|
To build the API server from sources, you'll need the dotnet 6.0 SDK. Simply run the following command to build and start the server:
|
||||||
|
|
||||||
```
|
```
|
||||||
dotnet restore
|
|
||||||
```
|
|
||||||
|
|
||||||
Then run the server as follows:
|
|
||||||
|
|
||||||
```
|
|
||||||
# run mitmproxy to redirect requests to the app
|
|
||||||
mitmproxy -s mitm-redirect.py
|
|
||||||
|
|
||||||
# run the server
|
|
||||||
dotnet run --project src/sodoff.csproj
|
dotnet run --project src/sodoff.csproj
|
||||||
```
|
```
|
||||||
|
|
||||||
Then run School of Dragons.
|
### Modifying the Client
|
||||||
|
|
||||||
|
To play the game you need to modify the game client to use `http://localhost:5001/.com/DWADragonsUnity/` instead of `http://media.jumpstart.com/DWADragonsUnity/`.
|
||||||
|
You can do this by editing `DOMain_Data/resources.assets` in a hex-editor and swapping the URLs.
|
||||||
|
|
||||||
|
### Server Configuration
|
||||||
|
|
||||||
|
Most of the server configuration is stored in `appsettings.json`. Check out the "// ..." keys in there for descriptions of different options.
|
||||||
|
|
||||||
|
#### Supported Clients
|
||||||
|
|
||||||
|
For each supported client version, there must be a corresponding file located at `assets/DWADragonsUnity/{PLATFORM}/{VERSION}/DWADragonsMain.xml`.
|
||||||
|
By default (modifiable in appsettings.json), files for version 2.5.0 and newer will be automatically encrypted to meet the client's requirements.
|
||||||
|
|
||||||
|
A sample file is provided for `{PLATFORM} = WIN`, `{VERSION} = 3.31.0`.
|
||||||
|
It assumes that the server address are `localhost:5000` (API) and `localhost:5001` (assets).
|
||||||
|
|
||||||
|
#### Asset Server
|
||||||
|
|
||||||
|
Various settings for the asset server are customizable, with the key one being `ProviderURL`, which specifies the source for downloading assets in `partial` mode. By default, it's configured to use archive.org
|
||||||
|
Please do not abuse the archive.org server, do not disable the `UseCache` option and do not delete the contents of the `asset-cache` directory.
|
||||||
|
|
||||||
|
#### Listening address/port
|
||||||
|
|
||||||
|
By default, the server listens on all IPv4 and IPv6 addresses on ports 5000 (API) and 5001 (assets).
|
||||||
|
You can tweak this in `appsettings.json`, but it might also mean adjusting `DWADragonsMain.xml` and updating clients to reflect the changes in the asset server address.
|
||||||
|
|
||||||
|
### Server Side Modding
|
||||||
|
|
||||||
|
The server supports server side modifications, which includes adding new items and putting them in the store without having to modify the server source code.
|
||||||
|
For more information, check out [src/mods/README-MODDING.md](src/mods/README-MODDING.md).
|
||||||
|
|
||||||
## Status
|
## Status
|
||||||
|
|
||||||
### What works
|
### What works
|
||||||
|
|
||||||
|
Almost everything:
|
||||||
|
|
||||||
- register/login
|
- register/login
|
||||||
- create profile
|
- create profile
|
||||||
- list profiles
|
- list profiles
|
||||||
@ -41,6 +72,14 @@ Then run School of Dragons.
|
|||||||
- minigames
|
- minigames
|
||||||
- MMO (using sodoff-mmo)
|
- MMO (using sodoff-mmo)
|
||||||
|
|
||||||
|
### What doesn't work
|
||||||
|
|
||||||
|
- play as Guest
|
||||||
|
- friends
|
||||||
|
- clans
|
||||||
|
- in-game messaging system (Terrible Mail)
|
||||||
|
|
||||||
|
|
||||||
### Methods
|
### Methods
|
||||||
|
|
||||||
#### Fully implemented
|
#### Fully implemented
|
||||||
|
@ -1,15 +0,0 @@
|
|||||||
{
|
|
||||||
"Kestrel": {
|
|
||||||
"EndPoints": {
|
|
||||||
"Http": {
|
|
||||||
"Url": "http://localhost:5000"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Logging": {
|
|
||||||
"LogLevel": {
|
|
||||||
"Default": "Information",
|
|
||||||
"Microsoft.AspNetCore": "Warning"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
37
src/appsettings.README.json
Normal file
37
src/appsettings.README.json
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
{
|
||||||
|
"Kestrel": {
|
||||||
|
"EndPoints": {
|
||||||
|
"Http": {
|
||||||
|
"Url": "Listening URL for the API server - allows setting the listening IP address and port number -> http://ip.ip.ip.ip:port/ or http://[ip::ip]:port/"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"AssetServer": {
|
||||||
|
"Enabled": true,
|
||||||
|
"ListenIP": ,
|
||||||
|
"Port": ",
|
||||||
|
"URLPrefix": "",
|
||||||
|
"Mode":
|
||||||
|
"ProviderURL":
|
||||||
|
"AutoEncryptRegexp":
|
||||||
|
"AutoEncryptKey": ,
|
||||||
|
"SubstituteMissingLocalAssets": ,
|
||||||
|
"UseCache":
|
||||||
|
},
|
||||||
|
"Logging": {
|
||||||
|
"LogLevel": {
|
||||||
|
"Default": "Information",
|
||||||
|
"Microsoft.AspNetCore": "Warning"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"AllowedHosts": "*"
|
||||||
|
}
|
||||||
|
|
||||||
|
"AssetServer": {
|
||||||
|
"Enabled": true,
|
||||||
|
"Port": 881, //Only for the asset server
|
||||||
|
"URLPrefix": "a.com", //
|
||||||
|
"Mode": "partial", //
|
||||||
|
"ProviderURL": "https://media.sodoff.spirtix.com/", //
|
||||||
|
"SubstituteMissingLocalAssets": true //
|
||||||
|
}
|
@ -2,10 +2,43 @@
|
|||||||
"Kestrel": {
|
"Kestrel": {
|
||||||
"EndPoints": {
|
"EndPoints": {
|
||||||
"Http": {
|
"Http": {
|
||||||
"Url": "http://localhost:5000"
|
"// Url": "Listening URL for the API server - allows setting the listening IP address and port number -> http://ip.ip.ip.ip:port/ or http://[ip::ip]:port/",
|
||||||
|
"Url": "http://*:5000"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"AssetServer": {
|
||||||
|
"// Enabled": "Set to false to disable the built-in asset server",
|
||||||
|
"Enabled": true,
|
||||||
|
|
||||||
|
"// ListenIP": "Listening IP address for the asset server, default is '*' which represents all IPv4 and IPv6 addresses",
|
||||||
|
"ListenIP": "*",
|
||||||
|
|
||||||
|
"// Port": "Listening port number for the asset server. Should be different than for the server API",
|
||||||
|
"Port": 5001,
|
||||||
|
|
||||||
|
"// URLPrefix": "Extra prefix in the URL; omitted while retrieving the path from the requested URL. For example, if set to '.com', then a request to http://localhost/.com/abc will return the 'abc' file from the assets folder",
|
||||||
|
"URLPrefix": ".com",
|
||||||
|
|
||||||
|
"// Mode": "Two modes: full - everything is local, partial - downloads assets from ProviderURL if not found locally",
|
||||||
|
"Mode": "partial",
|
||||||
|
|
||||||
|
"// ProviderURL": "Proxy URL used in partial mode",
|
||||||
|
"ProviderURL": "https://web.archive.org/web/20230713000000id_/https://media.jumpstart.com/",
|
||||||
|
|
||||||
|
"// AutoEncryptRegexp": "Regular expression matched against the URL local part. If there's a match, the returned file will be encrypted on-the-fly using 3DES with AutoEncryptKey as the key",
|
||||||
|
"AutoEncryptRegexp": "/(2\\.[5-9]|2\\.[1-9][0-9]|3\\.[0-9]+)\\.[0-9]/DWADragonsMain.xml$",
|
||||||
|
|
||||||
|
"// AutoEncryptKey": "3DES key for encrypted files",
|
||||||
|
"AutoEncryptKey": "C92EC1AA-54CD-4D0C-A8D5-403FCCF1C0BD",
|
||||||
|
|
||||||
|
"// SubstituteMissingLocalAssets": "When true, if the game requests a High asset and only Low is available, it will return Low instead of downloading (partial mode) or error 404 (full mode)",
|
||||||
|
"SubstituteMissingLocalAssets": true,
|
||||||
|
|
||||||
|
"// UseCache": "When true, downloading assets in partial mode will be stored in assets-cache for use in subsequent requests",
|
||||||
|
"UseCache": true
|
||||||
|
},
|
||||||
|
|
||||||
"Logging": {
|
"Logging": {
|
||||||
"LogLevel": {
|
"LogLevel": {
|
||||||
"Default": "Information",
|
"Default": "Information",
|
||||||
|
222
src/assets/DWADragonsUnity/WIN/3.31.0/DWADragonsMain.xml
Normal file
222
src/assets/DWADragonsUnity/WIN/3.31.0/DWADragonsMain.xml
Normal file
@ -0,0 +1,222 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<ProductConfig>
|
||||||
|
<!-- API SERVER CONFIG -->
|
||||||
|
|
||||||
|
<ContentServerURL>http://localhost:5000/ContentWebService.asmx/</ContentServerURL>
|
||||||
|
<ContentServerV2URL>http://localhost:5000/V2/ContentWebService.asmx/</ContentServerV2URL>
|
||||||
|
<ContentServerV3URL>http://localhost:5000/v3/ContentWebService.asmx/</ContentServerV3URL>
|
||||||
|
<ContentServerV4URL>http://localhost:5000/V4/ContentWebService.asmx/</ContentServerV4URL>
|
||||||
|
<TrackServerURL>http://localhost:5000/ContentWebService.asmx/</TrackServerURL>
|
||||||
|
|
||||||
|
<ItemStoreServerURL>http://localhost:5000/ItemStoreWebService.asmx/</ItemStoreServerURL>
|
||||||
|
<AchievementServerURL>http://localhost:5000/AchievementWebService.asmx/</AchievementServerURL>
|
||||||
|
<AchievementServerV2URL>http://localhost:5000/V2/AchievementWebService.asmx/</AchievementServerV2URL>
|
||||||
|
|
||||||
|
<MembershipServerURL>http://localhost:5000/MembershipWebService.asmx/</MembershipServerURL>
|
||||||
|
<AuthenticationServerURL>http://localhost:5000/AuthenticationWebService.asmx/</AuthenticationServerURL>
|
||||||
|
<AuthenticationServerV3URL>http://localhost:5000/v3/AuthenticationWebService.asmx/</AuthenticationServerV3URL>
|
||||||
|
<RegistrationServerV3URL>http://localhost:5000/v3/RegistrationWebService.asmx/</RegistrationServerV3URL>
|
||||||
|
<RegistrationServerV4URL>http://localhost:5000/V4/RegistrationWebService.asmx/</RegistrationServerV4URL>
|
||||||
|
<UserServerURL>http://localhost:5000/ProfileWebService.asmx/</UserServerURL>
|
||||||
|
|
||||||
|
<ConfigurationServerURL>http://localhost:5000/ConfigurationWebService.asmx/</ConfigurationServerURL>
|
||||||
|
<RatingServerV2URL>http://localhost:5000/V2/Ratingwebservice.asmx/</RatingServerV2URL>
|
||||||
|
<ChallengeServerURL>http://localhost:5000/ChallengeWebService.asmx/</ChallengeServerURL>
|
||||||
|
<MessagingServerURL>http://localhost:5000/MessagingWebService.asmx/</MessagingServerURL>
|
||||||
|
|
||||||
|
<!-- not implemented - social system -->
|
||||||
|
<GroupServerURL>http://localhost:5000/GroupWebService.asmx/</GroupServerURL>
|
||||||
|
<GroupServerV2URL>http://localhost:5000/V2/GroupWebService.asmx/</GroupServerV2URL>
|
||||||
|
<MessageServerURL>http://localhost:5000/MessageWebService.asmx/</MessageServerURL>
|
||||||
|
<MessageServerV2URL>http://localhost:5000/v2/MessageWebService.asmx/</MessageServerV2URL>
|
||||||
|
<MessageServerV3URL>http://localhost:5000/v3/MessageWebService.asmx/</MessageServerV3URL>
|
||||||
|
<InviteServerV2URL>http://localhost:5000/v2/InviteFriendWebService.asmx/</InviteServerV2URL>
|
||||||
|
<ChatServerURL>http://localhost:5000/ChatWebService.asmx/</ChatServerURL>
|
||||||
|
|
||||||
|
<!-- unused -->
|
||||||
|
<AnalyticsServerURL>http://localhost/AnalyticsWebService.asmx/</AnalyticsServerURL>
|
||||||
|
<MissionServerURL>http://localhost/MissionWebService.asmx/</MissionServerURL>
|
||||||
|
<AvatarWebServiceURL>http://localhost/AvatarWebService.asmx/</AvatarWebServiceURL>
|
||||||
|
<RatingServerURL>http://localhost/RatingWebService.asmx/</RatingServerURL>
|
||||||
|
<ScoreServerURL>http://localhost/ScoreWebService.asmx/</ScoreServerURL>
|
||||||
|
<MobileStoreURL>http://localhost/MobileStoreWebService.asmx/</MobileStoreURL>
|
||||||
|
<SubscriptionServerURL>http://localhost/SubscriptionWebService.asmx/</SubscriptionServerURL>
|
||||||
|
<PaymentServerURL>http://localhost/PaymentWebService.asmx/</PaymentServerURL>
|
||||||
|
<PaymentServerV2URL>http://localhost/V2/PaymentWebService.asmx/</PaymentServerV2URL>
|
||||||
|
<PrizeCodeServerURL>http://localhost/PrizeCodeWebService.asmx/</PrizeCodeServerURL>
|
||||||
|
<PrizeCodeServerV2URL>http://localhost/Common/V2/PrizeCodeWebService.asmx/</PrizeCodeServerV2URL>
|
||||||
|
<CalendarServerURL>http://localhost/ContentServer/CalendarWebService.asmx/</CalendarServerURL>
|
||||||
|
<PushNotificationURL>http://localhost/RegistrationWebService.asmx/</PushNotificationURL>
|
||||||
|
<LocaleServerURL>http://localhost/LocaleService.asmx/</LocaleServerURL>
|
||||||
|
<LocaleServerV2URL>http://localhost/V2/LocaleWebService.asmx/</LocaleServerV2URL>
|
||||||
|
<TokenExpiredURL>http://localhost/launch.aspx</TokenExpiredURL>
|
||||||
|
|
||||||
|
<!-- SMARTFOX SERVER CONFIG -->
|
||||||
|
|
||||||
|
<MMOServer>localhost</MMOServer>
|
||||||
|
<MMOServerPort>9933</MMOServerPort>
|
||||||
|
|
||||||
|
<MMOServerVersion>S2X</MMOServerVersion>
|
||||||
|
<MMOIdleTimeout>240</MMOIdleTimeout>
|
||||||
|
<MMODebug>false</MMODebug>
|
||||||
|
<MMOHttpPort>8080</MMOHttpPort>
|
||||||
|
<MMOUseBlueBox>false</MMOUseBlueBox>
|
||||||
|
<MMOBlueBoxPollingRate>500</MMOBlueBoxPollingRate>
|
||||||
|
<MMOUDPPollingRate>500</MMOUDPPollingRate>
|
||||||
|
<ZoneInfoUpdateInterval>300000</ZoneInfoUpdateInterval>
|
||||||
|
|
||||||
|
<!-- ASSET SERVER CONFIGURATION -->
|
||||||
|
|
||||||
|
<RootURL>http://localhost:5001/.com/DWADragonsUnity/WIN/{Version}/Mid/</RootURL>
|
||||||
|
<ContentDataURL>http://localhost:5001/.com/DWADragonsUnity/WIN/{Version}/Mid/contentdata</ContentDataURL>
|
||||||
|
<DataURL>http://localhost:5001/.com/DWADragonsUnity/WIN/{Version}/Mid/data</DataURL>
|
||||||
|
<SceneURL>http://localhost:5001/.com/DWADragonsUnity/WIN/{Version}/Mid/scene</SceneURL>
|
||||||
|
<SharedDataURL>http://localhost:5001/.com/DWADragonsUnity/WIN/{Version}/Mid/shareddata</SharedDataURL>
|
||||||
|
<SoundURL>http://localhost:5001/.com/DWADragonsUnity/WIN/{Version}/Mid/sound</SoundURL>
|
||||||
|
<MoviesURL>http://localhost:5001/.com/DWADragonsUnity/WIN/{Version}/Mid/movies</MoviesURL>
|
||||||
|
|
||||||
|
<LocalRootURL>.</LocalRootURL>
|
||||||
|
<LocalContentDataURL>./contentdata</LocalContentDataURL>
|
||||||
|
<LocalDataURL>./data</LocalDataURL>
|
||||||
|
<LocalSceneURL>./scene</LocalSceneURL>
|
||||||
|
<LocalSharedDataURL>./shareddata</LocalSharedDataURL>
|
||||||
|
<LocalSoundURL>./sound</LocalSoundURL>
|
||||||
|
<LocalMoviesURL>./movies</LocalMoviesURL>
|
||||||
|
|
||||||
|
<AppURL>.</AppURL>
|
||||||
|
<Token></Token>
|
||||||
|
|
||||||
|
<LogEventServer>127.0.0.1</LogEventServer>
|
||||||
|
|
||||||
|
<ConsolePassword>6c955c0b5efd67396e950f56542e86b6</ConsolePassword>
|
||||||
|
<UnityCacheSize>2000000000</UnityCacheSize>
|
||||||
|
<Manifests>dwavatar</Manifests>
|
||||||
|
<EnablePlayfab>false</EnablePlayfab>
|
||||||
|
|
||||||
|
<TokenExpiredText>
|
||||||
|
<Text>Your Viking is now idle. Click on the OK button to reconnect.</Text>
|
||||||
|
<ID>42286</ID>
|
||||||
|
</TokenExpiredText>
|
||||||
|
<LoginFromOtherLocationText>
|
||||||
|
<Text>You have been logged out because you have signed in from another computer or device.</Text>
|
||||||
|
<ID>9000</ID>
|
||||||
|
</LoginFromOtherLocationText>
|
||||||
|
<DisconnectText>
|
||||||
|
<Text>Your Viking is now idle. Click on the OK button to reconnect.</Text>
|
||||||
|
<ID>9001</ID>
|
||||||
|
</DisconnectText>
|
||||||
|
<DisconnectTitleText>
|
||||||
|
<Text>Notification</Text>
|
||||||
|
<ID>10674</ID>
|
||||||
|
</DisconnectTitleText>
|
||||||
|
<ProductRuleFailedText>
|
||||||
|
<Text>Download failed, please retry! Possible invalid DES secret in client!</Text>
|
||||||
|
<ID>42287</ID>
|
||||||
|
</ProductRuleFailedText>
|
||||||
|
|
||||||
|
<PlatformSettings Name="default">
|
||||||
|
<MaxMMOData DefaultMaxMMO="50" DefaultMaxFullMMO="50" />
|
||||||
|
<GraphicsSettings>
|
||||||
|
<Texture>
|
||||||
|
<Default>Mid</Default>
|
||||||
|
<Available>Low,Mid,High</Available>
|
||||||
|
</Texture>
|
||||||
|
<Shadow>
|
||||||
|
<Default>High</Default>
|
||||||
|
<Available>Off,Low,Mid,High</Available>
|
||||||
|
</Shadow>
|
||||||
|
<Effects>
|
||||||
|
<Default>Low</Default>
|
||||||
|
<Available>Off,Low,Mid,High</Available>
|
||||||
|
</Effects>
|
||||||
|
</GraphicsSettings>
|
||||||
|
<DownloadTextureSize>128</DownloadTextureSize>
|
||||||
|
</PlatformSettings>
|
||||||
|
|
||||||
|
<Locale>
|
||||||
|
<ID>en-US</ID>
|
||||||
|
</Locale>
|
||||||
|
<Locale>
|
||||||
|
<ID>es-MX</ID>
|
||||||
|
<Variant>es</Variant>
|
||||||
|
<Variant>es-ES</Variant>
|
||||||
|
<Variant>es-LA</Variant>
|
||||||
|
<Variant>es-US</Variant>
|
||||||
|
<Variant>es_ES</Variant>
|
||||||
|
<Variant>es_LA</Variant>
|
||||||
|
<Variant>es_MX</Variant>
|
||||||
|
<Variant>es_US</Variant>
|
||||||
|
<Variant>spanish</Variant>
|
||||||
|
</Locale>
|
||||||
|
<Locale>
|
||||||
|
<ID>pt-BR</ID>
|
||||||
|
<Variant>pt</Variant>
|
||||||
|
<Variant>pt-PT</Variant>
|
||||||
|
<Variant>pt_BR</Variant>
|
||||||
|
<Variant>pt_PT</Variant>
|
||||||
|
<Variant>brazilian</Variant>
|
||||||
|
</Locale>
|
||||||
|
<Locale>
|
||||||
|
<ID>zh-CN</ID>
|
||||||
|
<Variant>zh</Variant>
|
||||||
|
<Variant>zh-Hans</Variant>
|
||||||
|
<Variant>zh_CN</Variant>
|
||||||
|
<Variant>zh_Hans</Variant>
|
||||||
|
<Variant>schinese</Variant>
|
||||||
|
</Locale>
|
||||||
|
<Locale>
|
||||||
|
<ID>de-DE</ID>
|
||||||
|
<Variant>de</Variant>
|
||||||
|
<Variant>de-CH</Variant>
|
||||||
|
<Variant>de_DE</Variant>
|
||||||
|
<Variant>de_CH</Variant>
|
||||||
|
<Variant>german</Variant>
|
||||||
|
</Locale>
|
||||||
|
<Locale>
|
||||||
|
<ID>fr-CA</ID>
|
||||||
|
<Variant>fr</Variant>
|
||||||
|
<Variant>fr-FR</Variant>
|
||||||
|
<Variant>fr-CH</Variant>
|
||||||
|
<Variant>fr_CA</Variant>
|
||||||
|
<Variant>fr_FR</Variant>
|
||||||
|
<Variant>fr_CH</Variant>
|
||||||
|
<Variant>french</Variant>
|
||||||
|
</Locale>
|
||||||
|
<Locale>
|
||||||
|
<ID>ko-KR</ID>
|
||||||
|
<Variant>ko</Variant>
|
||||||
|
<Variant>ko_KR</Variant>
|
||||||
|
<Variant>koreana</Variant>
|
||||||
|
</Locale>
|
||||||
|
<Locale>
|
||||||
|
<ID>ru-RU</ID>
|
||||||
|
<Variant>ru</Variant>
|
||||||
|
<Variant>ru_RU</Variant>
|
||||||
|
<Variant>russian</Variant>
|
||||||
|
</Locale>
|
||||||
|
<Locale>
|
||||||
|
<ID>th-TH</ID>
|
||||||
|
<Variant>th</Variant>
|
||||||
|
<Variant>th-TH</Variant>
|
||||||
|
<Variant>th_TH</Variant>
|
||||||
|
</Locale>
|
||||||
|
<Locale>
|
||||||
|
<ID>ar-EG</ID>
|
||||||
|
<Variant>ar</Variant>
|
||||||
|
<Variant>ar-DZ</Variant>
|
||||||
|
<Variant>ar-BH</Variant>
|
||||||
|
<Variant>ar-IQ</Variant>
|
||||||
|
<Variant>ar-JO</Variant>
|
||||||
|
<Variant>ar-KW</Variant>
|
||||||
|
<Variant>ar-LB</Variant>
|
||||||
|
<Variant>ar-LY</Variant>
|
||||||
|
<Variant>ar-MA</Variant>
|
||||||
|
<Variant>ar-OM</Variant>
|
||||||
|
<Variant>ar-QA</Variant>
|
||||||
|
<Variant>ar-SA</Variant>
|
||||||
|
<Variant>ar-SY</Variant>
|
||||||
|
<Variant>ar-TN</Variant>
|
||||||
|
<Variant>ar-AE</Variant>
|
||||||
|
<Variant>ar-YE</Variant>
|
||||||
|
</Locale>
|
||||||
|
</ProductConfig>
|
408
src/assets/ServerDown.xml
Normal file
408
src/assets/ServerDown.xml
Normal file
@ -0,0 +1,408 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<ServerDown>
|
||||||
|
<Down>false</Down>
|
||||||
|
<CudosDown>true</CudosDown>
|
||||||
|
<Message>
|
||||||
|
<ProductGroupID>11</ProductGroupID>
|
||||||
|
<Locale>en-US</Locale>
|
||||||
|
<Title>Update</Title>
|
||||||
|
<!-->For Unplanned Maintenance <-->
|
||||||
|
<!--><Text><![CDATA[
|
||||||
|
Alert! We’ve encountered an unexpected weather delay! Our servers have been covered to protect them. Check back soon.
|
||||||
|
]]>
|
||||||
|
</Text> -->
|
||||||
|
<!-->For Planned Maintenance <-->
|
||||||
|
<Text><![CDATA[
|
||||||
|
The SoDOff server is down because the emulator is being updated. Check back in a few minutes.
|
||||||
|
]]>
|
||||||
|
</Text>
|
||||||
|
</Message>
|
||||||
|
<Message>
|
||||||
|
<ProductGroupID>9</ProductGroupID>
|
||||||
|
<Locale>en-US</Locale>
|
||||||
|
<Title>Update</Title>
|
||||||
|
<!-->For Unplanned Maintenance <-->
|
||||||
|
<!--><Text><![CDATA[
|
||||||
|
Oh no, looks like the Terrible Terrors are at it again! We hid our servers to protect them. Check back soon.
|
||||||
|
]]>
|
||||||
|
</Text> -->
|
||||||
|
<!-->For Planned Maintenance <-->
|
||||||
|
<Text><![CDATA[
|
||||||
|
The SoDOff server is down because the emulator is being updated. Check back in a few minutes.
|
||||||
|
]]>
|
||||||
|
</Text>
|
||||||
|
</Message>
|
||||||
|
<Message>
|
||||||
|
<ProductGroupID>1</ProductGroupID>
|
||||||
|
<Locale>en-US</Locale>
|
||||||
|
<Title>Update</Title>
|
||||||
|
<!-->For Unplanned Maintenance <-->
|
||||||
|
<!--><Text><![CDATA[
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Alert! We’ve encountered an unexpected weather delay! Our servers have been covered to protect them. Check back soon.
|
||||||
|
]]>
|
||||||
|
</Text><-->
|
||||||
|
<!-->For Planned Maintenance <-->
|
||||||
|
<Text><![CDATA[
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
The SoDOff server is down because the emulator is being updated. Check back in a few minutes.
|
||||||
|
]]>
|
||||||
|
</Text>
|
||||||
|
</Message>
|
||||||
|
<Message>
|
||||||
|
<ProductGroupID>17</ProductGroupID>
|
||||||
|
<Locale>en-US</Locale>
|
||||||
|
<Title>Update</Title>
|
||||||
|
<!-->For Unplanned Maintenance <-->
|
||||||
|
<!--><Text><![CDATA[
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Alert! We’ve encountered an unexpected weather delay! Our servers have been covered to protect them. Check back soon.
|
||||||
|
]]>
|
||||||
|
</Text><-->
|
||||||
|
<!-->For Planned Maintenance <-->
|
||||||
|
<Text><![CDATA[
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
The SoDOff server is down because the emulator is being updated. Check back in a few minutes.
|
||||||
|
]]>
|
||||||
|
</Text>
|
||||||
|
</Message>
|
||||||
|
<Message>
|
||||||
|
<ProductGroupID>15</ProductGroupID>
|
||||||
|
<Locale>en-US</Locale>
|
||||||
|
<Title>Update</Title>
|
||||||
|
<!-->For Unplanned Maintenance <-->
|
||||||
|
<!--><Text><![CDATA[
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Message from Aurrick: I broke the servers but don't worry. I'm stealing new ones. Back soon!
|
||||||
|
]]>
|
||||||
|
</Text><-->
|
||||||
|
<!-->For Planned Maintenance <-->
|
||||||
|
<Text><![CDATA[
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
The SoDOff server is down because the emulator is being updated. Check back in a few minutes.
|
||||||
|
]]>
|
||||||
|
</Text>
|
||||||
|
</Message>
|
||||||
|
<Message>
|
||||||
|
<ProductGroupID>14</ProductGroupID>
|
||||||
|
<Locale>en-US</Locale>
|
||||||
|
<Title>Update</Title>
|
||||||
|
<!-->For Unplanned Maintenance <-->
|
||||||
|
<!--><Text><![CDATA[
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Oh no, looks like the Shadow Punks have attacked the server! We hid our servers to protect them. Check back soon.
|
||||||
|
]]>
|
||||||
|
</Text><-->
|
||||||
|
<!-->For Planned Maintenance <-->
|
||||||
|
<Text><![CDATA[
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
The SoDOff server is down because the emulator is being updated. Check back in a few minutes.
|
||||||
|
]]>
|
||||||
|
</Text>
|
||||||
|
</Message>
|
||||||
|
<Message>
|
||||||
|
<ProductGroupID>12</ProductGroupID>
|
||||||
|
<Locale>en-US</Locale>
|
||||||
|
<Title>Update</Title>
|
||||||
|
<!-->For Unplanned Maintenance <-->
|
||||||
|
<!--><Text><![CDATA[
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Oh no! It looks like Dave is at it again with his Medusa Serum! We hid our servers to protect them. Check back soon!
|
||||||
|
]]>
|
||||||
|
</Text><-->
|
||||||
|
<!-->For Planned Maintenance <-->
|
||||||
|
<Text><![CDATA[
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
The SoDOff server is down because the emulator is being updated. Check back in a few minutes.
|
||||||
|
]]>
|
||||||
|
</Text>
|
||||||
|
</Message>
|
||||||
|
<Message>
|
||||||
|
<ProductGroupID>9</ProductGroupID>
|
||||||
|
<Locale>es-MX</Locale>
|
||||||
|
<Title>Update</Title>
|
||||||
|
<!-->For Unplanned Maintenance <-->
|
||||||
|
<!--><Text><![CDATA[
|
||||||
|
¡Oh no, parece que el Terrible Terror está haciendo desastres otra vez! Escondimos nuestros servidores para protegerlos.¡Regresa pronto!
|
||||||
|
]]>
|
||||||
|
</Text><-->
|
||||||
|
<!-->For Planned Maintenance <-->
|
||||||
|
<Text><![CDATA[
|
||||||
|
The SoDOff server is down because the emulator is being updated. Check back in a few minutes.
|
||||||
|
]]>
|
||||||
|
</Text>
|
||||||
|
</Message>
|
||||||
|
<Message>
|
||||||
|
<ProductGroupID>9</ProductGroupID>
|
||||||
|
<Locale>pt-BR</Locale>
|
||||||
|
<Title>Update</Title>
|
||||||
|
<!-->For Unplanned Maintenance <-->
|
||||||
|
<!--><Text><![CDATA[
|
||||||
|
Essa não! Pelo jeito, os Terrible Terrors estão aprontando novamente! Escondemos nossos servidores para protegê-los. Volte em breve!
|
||||||
|
]]>
|
||||||
|
</Text><-->
|
||||||
|
<!-->For Planned Maintenance <-->
|
||||||
|
<Text><![CDATA[
|
||||||
|
The SoDOff server is down because the emulator is being updated. Check back in a few minutes.
|
||||||
|
]]>
|
||||||
|
</Text>
|
||||||
|
</Message>
|
||||||
|
<Message>
|
||||||
|
<ProductGroupID>9</ProductGroupID>
|
||||||
|
<Locale>zh-CN</Locale>
|
||||||
|
<Title>Update</Title>
|
||||||
|
<!-->For Unplanned Maintenance <-->
|
||||||
|
<!--><Text><![CDATA[
|
||||||
|
恐怖龙又搞事啦!我们把服务器都藏起来,进行保护。回见喽!
|
||||||
|
]]>
|
||||||
|
</Text><-->
|
||||||
|
<!-->For Planned Maintenance <-->
|
||||||
|
<Text><![CDATA[
|
||||||
|
The SoDOff server is down because the emulator is being updated. Check back in a few minutes.
|
||||||
|
]]>
|
||||||
|
</Text>
|
||||||
|
</Message>
|
||||||
|
<Message>
|
||||||
|
<ProductGroupID>9</ProductGroupID>
|
||||||
|
<Locale>fr-CA</Locale>
|
||||||
|
<Title>Update</Title>
|
||||||
|
<!-->For Unplanned Maintenance <-->
|
||||||
|
<!--><Text><![CDATA[
|
||||||
|
Oh no, looks like the Terrible Terrors are at it again! We hid our servers to protect them. Check back soon!
|
||||||
|
]]>
|
||||||
|
</Text><-->
|
||||||
|
<!-->For Planned Maintenance <-->
|
||||||
|
<Text><![CDATA[
|
||||||
|
The SoDOff server is down because the emulator is being updated. Check back in a few minutes.
|
||||||
|
]]>
|
||||||
|
</Text>
|
||||||
|
</Message>
|
||||||
|
<Message>
|
||||||
|
<ProductGroupID>9</ProductGroupID>
|
||||||
|
<Locale>de-DE</Locale>
|
||||||
|
<Title>Update</Title>
|
||||||
|
<!-->For Unplanned Maintenance <-->
|
||||||
|
<!--><Text><![CDATA[
|
||||||
|
Oh no, looks like the Terrible Terrors are at it again! We hid our servers to protect them. Check back soon.
|
||||||
|
]]>
|
||||||
|
</Text><-->
|
||||||
|
<!-->For Planned Maintenance <-->
|
||||||
|
<Text><![CDATA[
|
||||||
|
The SoDOff server is down because the emulator is being updated. Check back in a few minutes.
|
||||||
|
]]>
|
||||||
|
</Text>
|
||||||
|
</Message>
|
||||||
|
<Message>
|
||||||
|
<ProductGroupID>9</ProductGroupID>
|
||||||
|
<Locale>ko-KR</Locale>
|
||||||
|
<Title>Update</Title>
|
||||||
|
<!-->For Unplanned Maintenance <-->
|
||||||
|
<!--><Text><![CDATA[
|
||||||
|
Oh no, looks like the Terrible Terrors are at it again! We hid our servers to protect them. Check back soon.
|
||||||
|
]]>
|
||||||
|
</Text><-->
|
||||||
|
<!-->For Planned Maintenance <-->
|
||||||
|
<Text><![CDATA[
|
||||||
|
The SoDOff server is down because the emulator is being updated. Check back in a few minutes.
|
||||||
|
]]>
|
||||||
|
</Text>
|
||||||
|
</Message>
|
||||||
|
<Message>
|
||||||
|
<ProductGroupID>9</ProductGroupID>
|
||||||
|
<Locale>ru-RU</Locale>
|
||||||
|
<Title>Update</Title>
|
||||||
|
<!-->For Unplanned Maintenance <-->
|
||||||
|
<!--><Text><![CDATA[
|
||||||
|
Oh no, looks like the Terrible Terrors are at it again! We hid our servers to protect them. Check back soon.
|
||||||
|
]]>
|
||||||
|
</Text><-->
|
||||||
|
<!-->For Planned Maintenance <-->
|
||||||
|
<Text><![CDATA[
|
||||||
|
The SoDOff server is down because the emulator is being updated. Check back in a few minutes.
|
||||||
|
]]>
|
||||||
|
</Text>
|
||||||
|
</Message>
|
||||||
|
<Message>
|
||||||
|
<ProductGroupID>10</ProductGroupID>
|
||||||
|
<Locale>en-US</Locale>
|
||||||
|
<!-->For Unplanned Maintenance <-->
|
||||||
|
<!--><Text>Alert! We’ve encountered an unexpected weather delay! Our servers have been covered to protect them. Check back soon.</Text><-->
|
||||||
|
<!-->For Planned Maintenance <-->
|
||||||
|
<Title>Update</Title>
|
||||||
|
<Text>The SoDOff server is down because the emulator is being updated. Check back in a few minutes.</Text>
|
||||||
|
</Message>
|
||||||
|
<Scheduled>
|
||||||
|
<!-- Date format needs to be MM/dd/yyyy hh:mm AM/PM PST TimeZone-->
|
||||||
|
<StartTime>07/30/2023 11:59 PM</StartTime>
|
||||||
|
<EndTime>12/31/2035 12:00 AM</EndTime>
|
||||||
|
<ModifiedTime>05/30/2023 10:48 AM</ModifiedTime>
|
||||||
|
<Message>
|
||||||
|
<ProductGroupID>12</ProductGroupID>
|
||||||
|
<Locale>en-US</Locale>
|
||||||
|
<Title>NOTICE</Title>
|
||||||
|
<Text>Welcome back dragon rider!
|
||||||
|
|
||||||
|
Welcome to SoDOff Experimental Server!
|
||||||
|
SoDOff is a School of Dragons server emulator. The emulator is in very early stages of development, many features are currently missing. Things can and WILL break!
|
||||||
|
|
||||||
|
Please note that we are not associated with JumpStart or DreamWorks.
|
||||||
|
|
||||||
|
- The SoDOff Team</Text>
|
||||||
|
</Message>
|
||||||
|
<Message>
|
||||||
|
<ProductGroupID>9</ProductGroupID>
|
||||||
|
<Locale>en-US</Locale>
|
||||||
|
<Title>NOTICE</Title>
|
||||||
|
<Text>Welcome back dragon rider!
|
||||||
|
|
||||||
|
Welcome to SoDOff Experimental Server!
|
||||||
|
SoDOff is a School of Dragons server emulator. The emulator is in very early stages of development, many features are currently missing. Things can and WILL break!
|
||||||
|
|
||||||
|
Please note that we are not associated with JumpStart or DreamWorks.
|
||||||
|
|
||||||
|
- The SoDOff Team
|
||||||
|
</Text>
|
||||||
|
</Message>
|
||||||
|
<Message>
|
||||||
|
<ProductGroupID>9</ProductGroupID>
|
||||||
|
<Locale>de-DE</Locale>
|
||||||
|
<Title>NOTIZ</Title>
|
||||||
|
<Text>Welcome back dragon rider!
|
||||||
|
|
||||||
|
Welcome to SoDOff Experimental Server!
|
||||||
|
SoDOff is a School of Dragons server emulator. The emulator is in very early stages of development, many features are currently missing. Things can and WILL break!
|
||||||
|
|
||||||
|
Please note that we are not associated with JumpStart or DreamWorks.
|
||||||
|
|
||||||
|
- The SoDOff Team
|
||||||
|
</Text>
|
||||||
|
</Message>
|
||||||
|
<Message>
|
||||||
|
<ProductGroupID>9</ProductGroupID>
|
||||||
|
<Locale>es-MX</Locale>
|
||||||
|
<Title>Apagado de Servidores</Title>
|
||||||
|
<Text>Welcome back dragon rider!
|
||||||
|
|
||||||
|
Welcome to SoDOff Experimental Server!
|
||||||
|
SoDOff is a School of Dragons server emulator. The emulator is in very early stages of development, many features are currently missing. Things can and WILL break!
|
||||||
|
|
||||||
|
Please note that we are not associated with JumpStart or DreamWorks.
|
||||||
|
|
||||||
|
- The SoDOff Team
|
||||||
|
</Text>
|
||||||
|
</Message>
|
||||||
|
<Message>
|
||||||
|
<ProductGroupID>9</ProductGroupID>
|
||||||
|
<Locale>fr-CA</Locale>
|
||||||
|
<Title>Arrêt des serveurs</Title>
|
||||||
|
<Text>Welcome back dragon rider!
|
||||||
|
|
||||||
|
Welcome to SoDOff Experimental Server!
|
||||||
|
SoDOff is a School of Dragons server emulator. The emulator is in very early stages of development, many features are currently missing. Things can and WILL break!
|
||||||
|
|
||||||
|
Please note that we are not associated with JumpStart or DreamWorks.
|
||||||
|
|
||||||
|
- The SoDOff Team
|
||||||
|
</Text>
|
||||||
|
</Message>
|
||||||
|
<Message>
|
||||||
|
<ProductGroupID>9</ProductGroupID>
|
||||||
|
<Locale>ko-KR</Locale>
|
||||||
|
<Title>서버 셧다운</Title>
|
||||||
|
<Text>Welcome back dragon rider!
|
||||||
|
|
||||||
|
Welcome to SoDOff Experimental Server!
|
||||||
|
SoDOff is a School of Dragons server emulator. The emulator is in very early stages of development, many features are currently missing. Things can and WILL break!
|
||||||
|
|
||||||
|
Please note that we are not associated with JumpStart or DreamWorks.
|
||||||
|
|
||||||
|
- The SoDOff Team
|
||||||
|
</Text>
|
||||||
|
</Message>
|
||||||
|
<Message>
|
||||||
|
<ProductGroupID>9</ProductGroupID>
|
||||||
|
<Locale>pt-BR</Locale>
|
||||||
|
<Title>Desligamento dos servidores</Title>
|
||||||
|
<Text>Welcome back dragon rider!
|
||||||
|
|
||||||
|
Welcome to SoDOff Experimental Server!
|
||||||
|
SoDOff is a School of Dragons server emulator. The emulator is in very early stages of development, many features are currently missing. Things can and WILL break!
|
||||||
|
|
||||||
|
Please note that we are not associated with JumpStart or DreamWorks.
|
||||||
|
|
||||||
|
- The SoDOff Team</Text>
|
||||||
|
</Message>
|
||||||
|
<Message>
|
||||||
|
<ProductGroupID>9</ProductGroupID>
|
||||||
|
<Locale>ru-RU</Locale>
|
||||||
|
<Title>Выключение серверов</Title>
|
||||||
|
<Text>Welcome back dragon rider!
|
||||||
|
|
||||||
|
Welcome to SoDOff Experimental Server!
|
||||||
|
SoDOff is a School of Dragons server emulator. The emulator is in very early stages of development, many features are currently missing. Things can and WILL break!
|
||||||
|
|
||||||
|
Please note that we are not associated with JumpStart or DreamWorks.
|
||||||
|
|
||||||
|
- The SoDOff Team</Text>
|
||||||
|
</Message>
|
||||||
|
<Message>
|
||||||
|
<ProductGroupID>9</ProductGroupID>
|
||||||
|
<Locale>th-TH</Locale>
|
||||||
|
<Title>การปิดเซิร์ฟเวอร์</Title>
|
||||||
|
<Text>Welcome back dragon rider!
|
||||||
|
|
||||||
|
Welcome to SoDOff Experimental Server!
|
||||||
|
SoDOff is a School of Dragons server emulator. The emulator is in very early stages of development, many features are currently missing. Things can and WILL break!
|
||||||
|
|
||||||
|
Please note that we are not associated with JumpStart or DreamWorks.
|
||||||
|
|
||||||
|
- The SoDOff Team</Text>
|
||||||
|
</Message>
|
||||||
|
<Message>
|
||||||
|
<ProductGroupID>9</ProductGroupID>
|
||||||
|
<Locale>zh-CN</Locale>
|
||||||
|
<Title>服务器关闭</Title>
|
||||||
|
<Text>Welcome back dragon rider!
|
||||||
|
|
||||||
|
Welcome to SoDOff Experimental Server!
|
||||||
|
SoDOff is a School of Dragons server emulator. The emulator is in very early stages of development, many features are currently missing. Things can and WILL break!
|
||||||
|
|
||||||
|
Please note that we are not associated with JumpStart or DreamWorks.
|
||||||
|
|
||||||
|
- The SoDOff Team</Text>
|
||||||
|
</Message>
|
||||||
|
<NoticeBeforeInDays>300</NoticeBeforeInDays>
|
||||||
|
<DisplayCount>-1</DisplayCount>
|
||||||
|
</Scheduled>
|
||||||
|
</ServerDown>
|
92
src/mods/README-MODDING.md
Normal file
92
src/mods/README-MODDING.md
Normal file
@ -0,0 +1,92 @@
|
|||||||
|
# Server Side Modding
|
||||||
|
|
||||||
|
## Mod Installation
|
||||||
|
|
||||||
|
Place mods as individual directories inside `src/mods`.
|
||||||
|
Each mod folder must contain a `manifest.xml` file at its top directory level.
|
||||||
|
For example: `src/mods/MyFirstMod/manifest.xml`
|
||||||
|
|
||||||
|
## `manifest.xml` syntax
|
||||||
|
|
||||||
|
The root node in `manifest.xml` is `<sodoffmod>`. It can include the following child nodes:
|
||||||
|
|
||||||
|
* `<items>` - item database manipulation
|
||||||
|
* `<store>` - store database manipulation (not implemented yet)
|
||||||
|
* ...
|
||||||
|
|
||||||
|
### Item Database Manipulation
|
||||||
|
|
||||||
|
`<items>` may contain `<item>` child nodes. Each of them defines one item modification. The modification type can be specified by the `action` attribute. The supported values are:
|
||||||
|
|
||||||
|
* `add` - add new item
|
||||||
|
* default if the `action` attribute is not present
|
||||||
|
* `remove` - remove item
|
||||||
|
* `replace` - replace item definition for an existed item ID
|
||||||
|
|
||||||
|
`<item>` may contain the following subnodes:
|
||||||
|
|
||||||
|
* `<id>` - item ID
|
||||||
|
* if not used, the item ID will be retrieved from the item definition within `<data>`
|
||||||
|
* `<storeID>` - specifies the store ID to which the item will be added
|
||||||
|
* can be used multiple times
|
||||||
|
* if not used, the item will not be added to any store
|
||||||
|
* `<data>` - item definition (syntax like the `<I>` node in [src/Resources/items.xml](../Resources/items.xml))
|
||||||
|
* can be omitted in the `remove` action
|
||||||
|
|
||||||
|
#### Example
|
||||||
|
|
||||||
|
* remove the Toothless ticket item (item ID `8034`)
|
||||||
|
* add a Night Furry Egg item (item ID `99999`) and add it to store (store ID `92`, for store description see comment in [src/Resources/store.xml](../Resources/store.xml))
|
||||||
|
* The item ID for new items should be unique to prevent mod collisions. The recommended format is: `prefix * 100000 + private_id`, where:
|
||||||
|
* `prefix` must be grater than 0 to avoid collision with the original game and official SoDOff items
|
||||||
|
* `prefix` is a unique mod author prefix
|
||||||
|
* `private_id` ranges from 0 to 99999 and is available for unrestricted use by the author
|
||||||
|
* for instance, if `prefix = 789` and `private_id = 123`, the item ID would be `78900123`
|
||||||
|
|
||||||
|
```
|
||||||
|
<sodoffmod>
|
||||||
|
<items>
|
||||||
|
<item action="remove">
|
||||||
|
<id>8034</id>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<storeID>92</storeID>
|
||||||
|
<data>
|
||||||
|
<an>RS_DATA/DragonEgg.unity3d/PfEggDevilishDervish</an>
|
||||||
|
<at>
|
||||||
|
<k>PetTypeID</k>
|
||||||
|
<v>17</v>
|
||||||
|
<id>99999</id>
|
||||||
|
</at>
|
||||||
|
<c>
|
||||||
|
<cid>456</cid>
|
||||||
|
<cn>Dragons Dragon Egg</cn>
|
||||||
|
<i xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
|
||||||
|
<id>99999</id>
|
||||||
|
</c>
|
||||||
|
<c>
|
||||||
|
<cid>550</cid>
|
||||||
|
<cn>Strike Class Eggs</cn>
|
||||||
|
<i xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
|
||||||
|
<id>99999</id>
|
||||||
|
</c>
|
||||||
|
<ct>0</ct>
|
||||||
|
<ct2>250</ct2>
|
||||||
|
<cp>0</cp>
|
||||||
|
<d>Tame the cunning and mischievous Night Furry in your stables</d>
|
||||||
|
<icn>RS_DATA/DragonEgg.unity3d/IcoEggDevilishDervish</icn>
|
||||||
|
<im>-1</im>
|
||||||
|
<id>99999</id>
|
||||||
|
<itn>Night Furry Egg</itn>
|
||||||
|
<l>false</l>
|
||||||
|
<s>false</s>
|
||||||
|
<as>false</as>
|
||||||
|
<sf>10</sf>
|
||||||
|
<u>-1</u>
|
||||||
|
<rf>0</rf>
|
||||||
|
<rtid>0</rtid>
|
||||||
|
</data>
|
||||||
|
</item>
|
||||||
|
</items>
|
||||||
|
</sodoffmod>
|
||||||
|
```
|
Loading…
x
Reference in New Issue
Block a user