Merge unstable into development (#2173)

* Remove more scene synchronized

* Fix worktop options not appearing

* Format code [skip actions]

* Fix delay with server tasks

* Format code [skip actions]

* Fully fix fairy clock (#2146)

* Fix scene transition

* fully fix fairy clock

* Re-add call to `Player#updatePlayerGameTime`

* Format code [skip actions]

* Initialize the script loader in `ResourceLoader#loadAll`

* Fix region removal checking

* Format code [skip actions]

* Use Lombok's `EqualsAndHashCode` for comparing scene regions

* Format code [skip actions]

* Move 'invalid gather object' to `trace`

* Add more information to the 'unknown condition handler' message

* Move invalid ability action to trace

* Make `KcpTunnel` public

* Validate the NPC being talked to

* Format code [skip actions]

* NPCs are not spawned server side; change logic to handle it

* Format code [skip actions]

* unload scene when there are no players (#2147)

* unload scene when there are no players

* Update src/main/java/emu/grasscutter/game/world/Scene.java

Co-authored-by: Magix <27646710+KingRainbow44@users.noreply.github.com>

---------

Co-authored-by: Magix <27646710+KingRainbow44@users.noreply.github.com>

* Check if a command should be copied or HTTP should be used

* Lint Code [skip actions]

* Fix character names rendering incorrectly

* Add basic troubleshooting command

* Implement handbook teleporting

also a few formatting changes and sort data by logical sense

* Fix listener `ConcurrentModificationException` issue

* Add color change to `Join the Community!`

* Lint Code [skip actions]

* Make clickable buttons appear clickable

* Remove 'Mechanicus' entities from the list of entities

* Format code [skip actions]

* Fix going back returning a blank screen

* Implement entity spawning

* Add setting level to entity card

* Add support for 'plain text' mode

* Make descriptions of objects scrollable

* Lint Code [skip actions]

* Format code [skip actions]

* Change the way existing hooks work

* Format code [skip actions]

* Upgrade Javalin to 5.5.0 & Fix project warnings

* Upgrade logging libraries

* Fix gacha mappings static file issue

* Add temporary backwards compatability for `ServerHelper`

* Format code [skip actions]

* Remove artifact signatures from VCS

* Fix forge queue data protocol definition

* Run `spotlessApply`

* Format code [skip actions]

* Download data required for building artifacts

* Add call for Facebook logins

* Add the wiki page as a submodule

* Format code [skip actions]

* Update translation (#2150)

* Update translation

* Update translation

* Separate the dispatch and game servers (pt. 1)

gacha is still broken, handbook still needs to be done

* Format code [skip actions]

* Separate the dispatch and game servers (pt. 2)

this commit fixes the gacha page

* Add description for '/troubleshoot'

* Set default avatar talent level to 10

* Separate the dispatch and game servers (pt. 3)

implement handbook across servers!

* Format code [skip actions]

* Update GitHub Actions to use 'download-file' over 'wget'

* Gm handbook lmao (#2149)

* Fix font issue

* Fix avatars

* Fix text overflow in commands

* Fix virtualized lists and items page 😭😭

* magix why 💀

* use hover style in all minicards

* button

* remove console.log

* lint

* Add icons

* magix asked

* Fix overflow padding issue

* Fix achievement text overflow

* remove icons from repo

* Change command icon

* Add the wiki page as a submodule

* total magix moment

* fix text overflow in commands

* Fix discord button

* Make text scale on Minicard

* import icons and font from another source

* Add hover effects to siebar buttons

* move font and readme to submodule repo

* Make data folder a submodule

* import icons and font from data submodule

* Update README.md

* total magix moment

* magix moment v2

* submodule change

* Import `.webp` files

* Resize `HomeButton`

* Fix 'Copy Command' reappearing after changing pages

---------

Co-authored-by: KingRainbow44 <kobedo11@gmail.com>

* Lint Code [skip actions]

* Download data for the build, not for the lint

* format imports

this is really just to see if build handbook works kek

* Implement proper handbook authentication (pt. 1)

* Implement proper handbook authentication (pt. 2)

* Format code [skip actions]

* Add quest data dumping for the handbook

* Change colors to fit _something suitable_

* Format code [skip actions]

* Fix force pushing to branches after linting

* Fix logic of `SetPlayerPropReq`

* Move more group loading to `trace`

* Add handbook IP authentication in hybrid mode

* Fix player level up not displaying on the client properly

* Format code [skip actions]

* Fix game time locking

* Format code [skip actions]

* Update player properties

* Format code [skip actions]

* Move `warn`s for groups to `debug`

* Fix player pausing

* Move more logs to `trace`

* Use `removeItemById` for deleting items via quests

* Clean up logger more

* Pause in-game time when the world is paused

* Format code [skip actions]

* More player property documentation

* Multi-threaded resource loading

* Format code [skip actions]

* Add quest widgets

* Add quests page (basic impl.)

* Add/fix colors

also fix tailwind

* Remove banned packets

client modifications already perform the job of blocking malicious packets from being executed, no point in having this if self-windy is wanted

* Re-add `BeginCameraSceneLookNotify`

* Fix being unable to attack (#2157)

* Add `PlayerOpenChestEvent`

* Add methods to get players from the server

* Add static methods to register an event handler

* Add `PlayerEnterDungeonEvent`

* Remove legacy documentation from `PlayerMoveEvent`

* Add `PlayerChatEvent`

* Add defaults to `Position`

* Clean up `.utils`

* Revert `Multi-threaded resource loading`

* Fix changing target UID when talking to the server

* Lint Code [skip actions]

* Format code [skip actions]

* fix NPC talk triggering main quest in 46101 (#2158)

Make it so that only talks where the param matches the talkId are checked.

* Format code [skip actions]

* Partially fix Chasing Shadows (#2159)

* Partially fix Chasing Shadows

* Go ahead and move it before the return before Magix tells me to.

* Format code [skip actions]

* Bring back period lol (#2160)

* Disable SNI for the HTTPS server

* Add `EntityCreationEvent`

* Add initial startup message

this is so the server appears like its preparing to start

* Format code [skip actions]

* Enable debug mode for plugin loggers if enabled for the primary logger

* Add documentation about `WorldAreaConfigData`

* Make more fields in excels accessible

* Remove deprecated fields from `GetShopRsp`

* Run `spotlessApply` on definitions

* Add `PlayerEnterAreaEvent`

* Optimize event calls

* Fix event invokes

* Format code [skip actions]

* Remove manual autofinish for main quests. (#2162)

* Add world areas to the textmap cache

* Format code [skip actions]

* Don't overdefine variables in extended classes (#2163)

* Add dumper for world areas

* Format code [skip actions]

* instantiate personalLineList (#2165)

* Fix protocol definitions

thank you Nazrin! (+ hiro for raw definitions)

* Fix the background color leaking from the character widget

* Change HTML spacing to 2 spaces

* Implement hiding widgets

* Change scrollbar to a vibrant color

* Add _some_ scaling to the home buttons and its text

* Build the handbook with Gradle

* Fix the 'finer details' with the handbook UI

* Lint Code [skip actions]

* Fix target destination for the Gradle-built handbook

* Implement fetching a player across servers & Add a chainable JsonObject

useful for plugins! might be used in grasscutter eventually

* Fix GitHub actions

* Fix event calling & canceling

* Run `spotlessApply`

* Rename fields (might be wrong)

* Add/update all/more protocol definitions

* Add/update all/more protocol definitions

* Remove outdated packet

* Fix protocol definitions

* Format code [skip actions]

* Implement some lua variables for less console spam (#2172)

* Implement some lua variables for less console spam

* Add GetHostQuestState

This fixes some chapter 3 stuff.

* Format code [skip actions]

* Fix merge import

* Format code [skip actions]

* Fully fix fairy clock for real this time (#2167)

* Fully fix fairy clock For real this time

* Make it so relogging keeps the time lock state.

* Refactor out questLockTime

* Per Hartie, the client packet needs to be changed too

* Update src/main/java/emu/grasscutter/game/world/World.java

Co-authored-by: Magix <27646710+KingRainbow44@users.noreply.github.com>

* Update src/main/java/emu/grasscutter/server/packet/recv/HandlerClientLockGameTimeNotify.java

* Remove all code not needed to get clock working

---------

Co-authored-by: Magix <27646710+KingRainbow44@users.noreply.github.com>

* Implement a proper ability system (#2166)

* Apply fix `21dec2fe`

* Apply fix `89d01d5f`

* Apply fix `d900f154`

this one was already implemented; updated to use call from previous commit

* Ability changing commit

TODO: change info to debug

* Remove use of deprecated methods/fields

* Temp commit v2
(Adding LoseHP and some fixes)

* Oopsie

* Probably fix monster battle

* Fix issue with reflecting into fields

* Fix some things

* Fix ability names for 3.6 resources

* Improve logging

---------

Co-authored-by: StartForKiller <jesussanz2003@gmail.com>

* Format code [skip actions]

* Add system for sending messages between servers

* Format some code

* Remove protocol definitions from Spotless

* Default debug to false; enable with `-debug`

* Implement completely useless global value copying

* HACK: Return the avatar which holds the weapon when the weapon is referred to by ID

* Add properties to `AbilityModifier`

* Change the way HTML is served after authentication

* Use thread executors to speed up the database loading process

* Format code [skip actions]

* Add system for setting handbook address and port

* Lint Code [skip actions]

* Format code [skip actions]

* Fix game-related data not saving

* Format code [skip actions]

* Fix handbook server details

* Lint Code [skip actions]

* Format code [skip actions]

* Use the headers provided by a context to get the IP address

should acknowledge #1975

* Format code [skip actions]

* Move more logs to `trace`

* Format code [skip actions]

* more trace

* Fix something and implement weapon entities

* Format code [skip actions]

* Fix `EntityWeapon`

* Remove deprecated API & Fix resource checking

* Fix unnecessary warning for first-time setup

* Implement handbook request limiting

* Format code [skip actions]

* Fix new avatar weapons being null

* Format code [skip actions]

* Fix issue with 35303 being un-completable & Try to fix fulfilled quest conditions being met

* Load activity config on server startup

* Require plugins to specify an API version and match with the server

* Add default open state ignore list

* Format code [skip actions]

* Quick fix for questing, needs more investigation
This would make the questing work again

* Remove existing hack for 35303

* Fix ignored open states from being set

* Format code [skip actions]

* fix the stupidest bug ive ever seen

* Optimize player kicking on server close

* Format code [skip actions]

* Re-add hack to fix 35303

* Update GitHub actions

* Format code [skip actions]

* Potentially fix issues with regions

* Download additional handbook data

* Revert "Potentially fix issues with regions"

This reverts commit 84e3823695.

---------

Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: scooterboo <lewasite@yahoo.com>
Co-authored-by: Tesutarin <105267106+Tesutarin@users.noreply.github.com>
Co-authored-by: Scald <104459145+Arikatsu@users.noreply.github.com>
Co-authored-by: StartForKiller <jesussanz2003@gmail.com>
This commit is contained in:
Magix
2023-05-31 20:48:16 -07:00
committed by GitHub
parent f46fd372d2
commit 9e5b57a043
3839 changed files with 1841548 additions and 37533 deletions

View File

@@ -1,21 +1,21 @@
[
{
"activityId" : 5072,
"activityType" : 2202,
"scheduleId": 5072001,
"meetCondList" : [
5072001,
5072002,
5072003,
5072004,
5072005,
5072006,
5072007,
5072008,
5072009,
5072013
],
"beginTime" : "2022-05-01T00:00:00+08:00",
"endTime" : "2023-05-01T00:00:00+08:00"
}
]
{
"activityId": 5072,
"activityType": 2202,
"scheduleId": 5072001,
"meetCondList": [
5072001,
5072002,
5072003,
5072004,
5072005,
5072006,
5072007,
5072008,
5072009,
5072013
],
"beginTime": "2022-05-01T00:00:00+08:00",
"endTime": "2023-05-01T00:00:00+08:00"
}
]

View File

@@ -1,22 +1,22 @@
[
{
"templateId" : 1,
"type" : "CENTER",
"frequency" : 1,
"templateId": 1,
"type": "CENTER",
"frequency": 1,
"content": "Welcome to Grasscutter PS!",
"beginTime": "2022-06-01T00:00:00+08:00",
"endTime": "2022-06-01T00:08:00+08:00",
"tick" : false,
"tick": false,
"interval": 1
},
{
"templateId" : 2,
"type" : "COUNTDOWN",
"frequency" : 1,
"templateId": 2,
"type": "COUNTDOWN",
"frequency": 1,
"content": "Welcome to Grasscutter PS!",
"beginTime": "2022-06-01T00:00:00+08:00",
"endTime": "2022-06-01T00:08:00+08:00",
"tick" : false,
"tick": false,
"interval": 1
}
]

View File

@@ -1,8 +1,225 @@
{
"monsterFightingVolume": 100,
"monsterIdsPerDifficulty": {
"0": [21010101, 20010101, 20010201, 20010202, 20010301, 20010401, 20010403, 20010501, 20010601, 20010604, 20010701, 20010702, 20010801, 20010802, 20010901, 20010902, 20010904, 20011001, 20011101, 20011103, 20011601, 20011701, 20011801, 20011901, 20050201, 20050202, 20050203, 20050301, 20050302, 20050401, 20050402, 20050403, 20050501, 20050502, 20050601, 20050602, 20050603, 20050701, 20050702, 20050703, 20050801, 20050802, 20050901, 21010201, 21010301, 21010401, 21010402, 21010501, 21010502, 21010601, 21010603, 21010701, 21010901, 21010902, 21011001, 21011002, 21011201, 21011301, 21011302, 21011401, 21011403, 21011501, 21011601, 21011602, 20011201, 20011202, 20011301, 20011304, 20011401, 20011501, 20011502, 25010101, 25010102, 25010103, 25010104, 25010105, 25010106, 25010201, 25010203, 25010204, 25010205, 25010206, 25010207, 25010208, 25010701, 25020101, 25020102, 25020201, 25020204, 25030101, 25030102, 25030103, 25030201, 25030301, 25040101, 25040102, 25040103, 25050101, 25050201, 25050301, 25050401, 25050402, 25050501, 25050502, 25060101, 25060102, 25070101, 25070201, 25070202, 21010102, 20010302, 20010402, 20010502, 20010602, 20010703, 20010803, 20010903, 20011002, 20011102, 21010302, 21010702, 21011202, 21011402, 20011203, 20011302, 20011402, 20011503, 21030102, 21030202, 21030302, 21030403, 21030502, 21030602],
"1": [21020101, 21020201, 21020202, 21020301, 21020601, 21020701, 21020703, 21030101, 21030103, 21030201, 21030203, 21030301, 21030303, 21030304, 21030401, 21030402, 21030501, 21030601, 21030603, 25010301, 25010302, 25010401, 25010501, 25010601, 26010101, 26010102, 26010201, 26010301, 21020102, 21020203, 21020702, 21020302, 21020602],
"2": [21020401, 21020501, 21020801, 20020101, 20070101, 22010101, 22010102, 22010103, 22010104, 22010201, 22010202, 22010203, 22010204, 22010301, 22010302, 22010303, 22010304, 22010401, 22010403, 22010404, 24010101, 24010201, 23010101, 23010201, 23010301, 23010401, 23010501, 23010601, 23020101, 23020102, 23030101, 23030102, 23040101, 23040102, 23050101, 20060101, 20060201, 20060301, 20060401, 20060501, 20060601, 21020402, 21020502, 21020802, 22010105, 22010205, 22010305, 22010402]
"0": [
21010101,
20010101,
20010201,
20010202,
20010301,
20010401,
20010403,
20010501,
20010601,
20010604,
20010701,
20010702,
20010801,
20010802,
20010901,
20010902,
20010904,
20011001,
20011101,
20011103,
20011601,
20011701,
20011801,
20011901,
20050201,
20050202,
20050203,
20050301,
20050302,
20050401,
20050402,
20050403,
20050501,
20050502,
20050601,
20050602,
20050603,
20050701,
20050702,
20050703,
20050801,
20050802,
20050901,
21010201,
21010301,
21010401,
21010402,
21010501,
21010502,
21010601,
21010603,
21010701,
21010901,
21010902,
21011001,
21011002,
21011201,
21011301,
21011302,
21011401,
21011403,
21011501,
21011601,
21011602,
20011201,
20011202,
20011301,
20011304,
20011401,
20011501,
20011502,
25010101,
25010102,
25010103,
25010104,
25010105,
25010106,
25010201,
25010203,
25010204,
25010205,
25010206,
25010207,
25010208,
25010701,
25020101,
25020102,
25020201,
25020204,
25030101,
25030102,
25030103,
25030201,
25030301,
25040101,
25040102,
25040103,
25050101,
25050201,
25050301,
25050401,
25050402,
25050501,
25050502,
25060101,
25060102,
25070101,
25070201,
25070202,
21010102,
20010302,
20010402,
20010502,
20010602,
20010703,
20010803,
20010903,
20011002,
20011102,
21010302,
21010702,
21011202,
21011402,
20011203,
20011302,
20011402,
20011503,
21030102,
21030202,
21030302,
21030403,
21030502,
21030602
],
"1": [
21020101,
21020201,
21020202,
21020301,
21020601,
21020701,
21020703,
21030101,
21030103,
21030201,
21030203,
21030301,
21030303,
21030304,
21030401,
21030402,
21030501,
21030601,
21030603,
25010301,
25010302,
25010401,
25010501,
25010601,
26010101,
26010102,
26010201,
26010301,
21020102,
21020203,
21020702,
21020302,
21020602
],
"2": [
21020401,
21020501,
21020801,
20020101,
20070101,
22010101,
22010102,
22010103,
22010104,
22010201,
22010202,
22010203,
22010204,
22010301,
22010302,
22010303,
22010304,
22010401,
22010403,
22010404,
24010101,
24010201,
23010101,
23010201,
23010301,
23010401,
23010501,
23010601,
23020101,
23020102,
23030101,
23030102,
23040101,
23040102,
23050101,
20060101,
20060201,
20060301,
20060401,
20060501,
20060601,
21020402,
21020502,
21020802,
22010105,
22010205,
22010305,
22010402
]
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
[
{
"objNames" : [
"objNames": [
"SceneObj_Chest_Default_Lv1",
"SceneObj_Chest_Locked_Lv1",
"SceneObj_Chest_Bramble_Lv1",
@@ -9,130 +9,130 @@
"SceneObj_EssenceChest_Default_Lv1",
"SceneObj_EssenceChest_Locked_Lv1"
],
"advExp" : 10,
"resin" : 0,
"mora" : 257,
"sigil" : 1,
"content" : [
"advExp": 10,
"resin": 0,
"mora": 257,
"sigil": 1,
"content": [
{
"itemId" : 104011,
"itemId": 104011,
"count": 3
},
{
"itemId" : 104001,
"itemId": 104001,
"count": 1
}
],
"randomCount": 4,
"randomContent": [
{
"itemId" : 11101,
"itemId": 11101,
"count": 1
},
{
"itemId" : 11201,
"itemId": 11201,
"count": 1
},
{
"itemId" : 12101,
"itemId": 12101,
"count": 1
},
{
"itemId" : 12201,
"itemId": 12201,
"count": 1
},
{
"itemId" : 13101,
"itemId": 13101,
"count": 1
},
{
"itemId" : 13201,
"itemId": 13201,
"count": 1
},
{
"itemId" : 14101,
"itemId": 14101,
"count": 1
},
{
"itemId" : 14201,
"itemId": 14201,
"count": 1
},
{
"itemId" : 15101,
"itemId": 15101,
"count": 1
},
{
"itemId" : 15201,
"itemId": 15201,
"count": 1
}
]
},
{
"objNames" : [
"objNames": [
"SceneObj_Chest_Default_Lv2",
"SceneObj_Chest_Locked_Lv2",
"SceneObj_Chest_Bramble_Lv2",
"SceneObj_Chest_Frozen_Lv2"
],
"advExp" : 20,
"resin" : 2,
"mora" : 756,
"sigil" : 2,
"content" : [
"advExp": 20,
"resin": 2,
"mora": 756,
"sigil": 2,
"content": [
{
"itemId" : 104012,
"itemId": 104012,
"count": 3
},
{
"itemId" : 104002,
"itemId": 104002,
"count": 1
}
],
"randomCount": 4,
"randomContent": [
{
"itemId" : 11201,
"itemId": 11201,
"count": 1
},
{
"itemId" : 11301,
"itemId": 11301,
"count": 1
},
{
"itemId" : 12201,
"itemId": 12201,
"count": 1
},
{
"itemId" : 12301,
"itemId": 12301,
"count": 1
},
{
"itemId" : 13201,
"itemId": 13201,
"count": 1
},
{
"itemId" : 13301,
"itemId": 13301,
"count": 1
},
{
"itemId" : 14201,
"itemId": 14201,
"count": 1
},
{
"itemId" : 14301,
"itemId": 14301,
"count": 1
},
{
"itemId" : 15201,
"itemId": 15201,
"count": 1
},
{
"itemId" : 15301,
"itemId": 15301,
"count": 1
}
]
},
{
{
"objNames": [
"SceneObj_Chest_Default_Lv3",
"SceneObj_Chest_Locked_Lv3",

View File

@@ -1,44 +1,484 @@
[
{"monsterId":28040101,"dropDataList":[{"itemId":100084,"minCount":1,"maxCount":1,"minWeight":0,"maxWeight":10000}]},
{"monsterId":28040102,"dropDataList":[{"itemId":100084,"minCount":1,"maxCount":1,"minWeight":0,"maxWeight":10000}]},
{"monsterId":28040103,"dropDataList":[{"itemId":100084,"minCount":1,"maxCount":1,"minWeight":0,"maxWeight":10000}]},
{"monsterId":28040104,"dropDataList":[{"itemId":100084,"minCount":1,"maxCount":1,"minWeight":0,"maxWeight":10000}]},
{"monsterId":28040105,"dropDataList":[{"itemId":100084,"minCount":1,"maxCount":1,"minWeight":0,"maxWeight":10000}]},
{"monsterId":28040106,"dropDataList":[{"itemId":100084,"minCount":1,"maxCount":1,"minWeight":0,"maxWeight":10000}]},
{"monsterId":28040107,"dropDataList":[{"itemId":100084,"minCount":1,"maxCount":1,"minWeight":0,"maxWeight":10000}]},
{"monsterId":28040108,"dropDataList":[{"itemId":100084,"minCount":1,"maxCount":1,"minWeight":0,"maxWeight":10000}]},
{"monsterId":28020301,"dropDataList":[{"itemId":100061,"minCount":2,"maxCount":2,"minWeight":0,"maxWeight":10000}]},
{"monsterId":28020302,"dropDataList":[{"itemId":100061,"minCount":1,"maxCount":1,"minWeight":0,"maxWeight":10000}]},
{"monsterId":28020101,"dropDataList":[{"itemId":100061,"minCount":1,"maxCount":1,"minWeight":0,"maxWeight":10000}]},
{"monsterId":28020102,"dropDataList":[{"itemId":100061,"minCount":1,"maxCount":1,"minWeight":0,"maxWeight":10000}]},
{"monsterId":28020103,"dropDataList":[{"itemId":100061,"minCount":1,"maxCount":1,"minWeight":0,"maxWeight":10000}]},
{"monsterId":28020104,"dropDataList":[{"itemId":100061,"minCount":1,"maxCount":1,"minWeight":0,"maxWeight":10000}]},
{"monsterId":28020105,"dropDataList":[{"itemId":100061,"minCount":1,"maxCount":1,"minWeight":0,"maxWeight":10000}]},
{"monsterId":28020106,"dropDataList":[{"itemId":100061,"minCount":1,"maxCount":1,"minWeight":0,"maxWeight":10000}]},
{"monsterId":28020701,"dropDataList":[{"itemId":100061,"minCount":1,"maxCount":1,"minWeight":0,"maxWeight":10000}]},
{"monsterId":28020702,"dropDataList":[{"itemId":100061,"minCount":1,"maxCount":1,"minWeight":0,"maxWeight":10000}]},
{"monsterId":28020303,"dropDataList":[{"itemId":100094,"minCount":1,"maxCount":1,"minWeight":0,"maxWeight":10000}]},
{"monsterId":28020304,"dropDataList":[{"itemId":100094,"minCount":2,"maxCount":3,"minWeight":0,"maxWeight":10000}]},
{"monsterId":28030401,"dropDataList":[{"itemId":100064,"minCount":1,"maxCount":1,"minWeight":0,"maxWeight":10000}]},
{"monsterId":28030402,"dropDataList":[{"itemId":100064,"minCount":1,"maxCount":1,"minWeight":0,"maxWeight":10000}]},
{"monsterId":28030403,"dropDataList":[{"itemId":100064,"minCount":1,"maxCount":1,"minWeight":0,"maxWeight":10000}]},
{"monsterId":28030404,"dropDataList":[{"itemId":100064,"minCount":1,"maxCount":1,"minWeight":0,"maxWeight":10000}]},
{"monsterId":28030405,"dropDataList":[{"itemId":100064,"minCount":1,"maxCount":1,"minWeight":0,"maxWeight":10000}]},
{"monsterId":28030406,"dropDataList":[{"itemId":100064,"minCount":1,"maxCount":1,"minWeight":0,"maxWeight":10000}]},
{"monsterId":28030407,"dropDataList":[{"itemId":100064,"minCount":1,"maxCount":1,"minWeight":0,"maxWeight":10000}]},
{"monsterId":28030408,"dropDataList":[{"itemId":100064,"minCount":1,"maxCount":1,"minWeight":0,"maxWeight":10000}]},
{"monsterId":28030409,"dropDataList":[{"itemId":100064,"minCount":1,"maxCount":1,"minWeight":0,"maxWeight":10000}]},
{"monsterId":28030301,"dropDataList":[{"itemId":100064,"minCount":1,"maxCount":1,"minWeight":0,"maxWeight":10000}]},
{"monsterId":28030302,"dropDataList":[{"itemId":100064,"minCount":1,"maxCount":1,"minWeight":0,"maxWeight":10000}]},
{"monsterId":28030303,"dropDataList":[{"itemId":100064,"minCount":1,"maxCount":1,"minWeight":0,"maxWeight":10000}]},
{"monsterId":28030304,"dropDataList":[{"itemId":100064,"minCount":1,"maxCount":1,"minWeight":0,"maxWeight":10000}]},
{"monsterId":28030305,"dropDataList":[{"itemId":100064,"minCount":1,"maxCount":1,"minWeight":0,"maxWeight":10000}]},
{"monsterId":28030306,"dropDataList":[{"itemId":100064,"minCount":1,"maxCount":1,"minWeight":0,"maxWeight":10000}]},
{"monsterId":28030307,"dropDataList":[{"itemId":100064,"minCount":1,"maxCount":1,"minWeight":0,"maxWeight":10000}]},
{"monsterId":28030308,"dropDataList":[{"itemId":100064,"minCount":1,"maxCount":1,"minWeight":0,"maxWeight":10000}]},
{"monsterId":28030309,"dropDataList":[{"itemId":100064,"minCount":1,"maxCount":1,"minWeight":0,"maxWeight":10000}]},
{"monsterId":28030310,"dropDataList":[{"itemId":100064,"minCount":1,"maxCount":1,"minWeight":0,"maxWeight":10000}]},
{"monsterId":28030311,"dropDataList":[{"itemId":100064,"minCount":1,"maxCount":1,"minWeight":0,"maxWeight":10000}]},
{
"monsterId": 28040101,
"dropDataList": [
{
"itemId": 100084,
"minCount": 1,
"maxCount": 1,
"minWeight": 0,
"maxWeight": 10000
}
]
},
{
"monsterId": 28040102,
"dropDataList": [
{
"itemId": 100084,
"minCount": 1,
"maxCount": 1,
"minWeight": 0,
"maxWeight": 10000
}
]
},
{
"monsterId": 28040103,
"dropDataList": [
{
"itemId": 100084,
"minCount": 1,
"maxCount": 1,
"minWeight": 0,
"maxWeight": 10000
}
]
},
{
"monsterId": 28040104,
"dropDataList": [
{
"itemId": 100084,
"minCount": 1,
"maxCount": 1,
"minWeight": 0,
"maxWeight": 10000
}
]
},
{
"monsterId": 28040105,
"dropDataList": [
{
"itemId": 100084,
"minCount": 1,
"maxCount": 1,
"minWeight": 0,
"maxWeight": 10000
}
]
},
{
"monsterId": 28040106,
"dropDataList": [
{
"itemId": 100084,
"minCount": 1,
"maxCount": 1,
"minWeight": 0,
"maxWeight": 10000
}
]
},
{
"monsterId": 28040107,
"dropDataList": [
{
"itemId": 100084,
"minCount": 1,
"maxCount": 1,
"minWeight": 0,
"maxWeight": 10000
}
]
},
{
"monsterId": 28040108,
"dropDataList": [
{
"itemId": 100084,
"minCount": 1,
"maxCount": 1,
"minWeight": 0,
"maxWeight": 10000
}
]
},
{
"monsterId": 28020301,
"dropDataList": [
{
"itemId": 100061,
"minCount": 2,
"maxCount": 2,
"minWeight": 0,
"maxWeight": 10000
}
]
},
{
"monsterId": 28020302,
"dropDataList": [
{
"itemId": 100061,
"minCount": 1,
"maxCount": 1,
"minWeight": 0,
"maxWeight": 10000
}
]
},
{
"monsterId": 28020101,
"dropDataList": [
{
"itemId": 100061,
"minCount": 1,
"maxCount": 1,
"minWeight": 0,
"maxWeight": 10000
}
]
},
{
"monsterId": 28020102,
"dropDataList": [
{
"itemId": 100061,
"minCount": 1,
"maxCount": 1,
"minWeight": 0,
"maxWeight": 10000
}
]
},
{
"monsterId": 28020103,
"dropDataList": [
{
"itemId": 100061,
"minCount": 1,
"maxCount": 1,
"minWeight": 0,
"maxWeight": 10000
}
]
},
{
"monsterId": 28020104,
"dropDataList": [
{
"itemId": 100061,
"minCount": 1,
"maxCount": 1,
"minWeight": 0,
"maxWeight": 10000
}
]
},
{
"monsterId": 28020105,
"dropDataList": [
{
"itemId": 100061,
"minCount": 1,
"maxCount": 1,
"minWeight": 0,
"maxWeight": 10000
}
]
},
{
"monsterId": 28020106,
"dropDataList": [
{
"itemId": 100061,
"minCount": 1,
"maxCount": 1,
"minWeight": 0,
"maxWeight": 10000
}
]
},
{
"monsterId": 28020701,
"dropDataList": [
{
"itemId": 100061,
"minCount": 1,
"maxCount": 1,
"minWeight": 0,
"maxWeight": 10000
}
]
},
{
"monsterId": 28020702,
"dropDataList": [
{
"itemId": 100061,
"minCount": 1,
"maxCount": 1,
"minWeight": 0,
"maxWeight": 10000
}
]
},
{
"monsterId": 28020303,
"dropDataList": [
{
"itemId": 100094,
"minCount": 1,
"maxCount": 1,
"minWeight": 0,
"maxWeight": 10000
}
]
},
{
"monsterId": 28020304,
"dropDataList": [
{
"itemId": 100094,
"minCount": 2,
"maxCount": 3,
"minWeight": 0,
"maxWeight": 10000
}
]
},
{
"monsterId": 28030401,
"dropDataList": [
{
"itemId": 100064,
"minCount": 1,
"maxCount": 1,
"minWeight": 0,
"maxWeight": 10000
}
]
},
{
"monsterId": 28030402,
"dropDataList": [
{
"itemId": 100064,
"minCount": 1,
"maxCount": 1,
"minWeight": 0,
"maxWeight": 10000
}
]
},
{
"monsterId": 28030403,
"dropDataList": [
{
"itemId": 100064,
"minCount": 1,
"maxCount": 1,
"minWeight": 0,
"maxWeight": 10000
}
]
},
{
"monsterId": 28030404,
"dropDataList": [
{
"itemId": 100064,
"minCount": 1,
"maxCount": 1,
"minWeight": 0,
"maxWeight": 10000
}
]
},
{
"monsterId": 28030405,
"dropDataList": [
{
"itemId": 100064,
"minCount": 1,
"maxCount": 1,
"minWeight": 0,
"maxWeight": 10000
}
]
},
{
"monsterId": 28030406,
"dropDataList": [
{
"itemId": 100064,
"minCount": 1,
"maxCount": 1,
"minWeight": 0,
"maxWeight": 10000
}
]
},
{
"monsterId": 28030407,
"dropDataList": [
{
"itemId": 100064,
"minCount": 1,
"maxCount": 1,
"minWeight": 0,
"maxWeight": 10000
}
]
},
{
"monsterId": 28030408,
"dropDataList": [
{
"itemId": 100064,
"minCount": 1,
"maxCount": 1,
"minWeight": 0,
"maxWeight": 10000
}
]
},
{
"monsterId": 28030409,
"dropDataList": [
{
"itemId": 100064,
"minCount": 1,
"maxCount": 1,
"minWeight": 0,
"maxWeight": 10000
}
]
},
{
"monsterId": 28030301,
"dropDataList": [
{
"itemId": 100064,
"minCount": 1,
"maxCount": 1,
"minWeight": 0,
"maxWeight": 10000
}
]
},
{
"monsterId": 28030302,
"dropDataList": [
{
"itemId": 100064,
"minCount": 1,
"maxCount": 1,
"minWeight": 0,
"maxWeight": 10000
}
]
},
{
"monsterId": 28030303,
"dropDataList": [
{
"itemId": 100064,
"minCount": 1,
"maxCount": 1,
"minWeight": 0,
"maxWeight": 10000
}
]
},
{
"monsterId": 28030304,
"dropDataList": [
{
"itemId": 100064,
"minCount": 1,
"maxCount": 1,
"minWeight": 0,
"maxWeight": 10000
}
]
},
{
"monsterId": 28030305,
"dropDataList": [
{
"itemId": 100064,
"minCount": 1,
"maxCount": 1,
"minWeight": 0,
"maxWeight": 10000
}
]
},
{
"monsterId": 28030306,
"dropDataList": [
{
"itemId": 100064,
"minCount": 1,
"maxCount": 1,
"minWeight": 0,
"maxWeight": 10000
}
]
},
{
"monsterId": 28030307,
"dropDataList": [
{
"itemId": 100064,
"minCount": 1,
"maxCount": 1,
"minWeight": 0,
"maxWeight": 10000
}
]
},
{
"monsterId": 28030308,
"dropDataList": [
{
"itemId": 100064,
"minCount": 1,
"maxCount": 1,
"minWeight": 0,
"maxWeight": 10000
}
]
},
{
"monsterId": 28030309,
"dropDataList": [
{
"itemId": 100064,
"minCount": 1,
"maxCount": 1,
"minWeight": 0,
"maxWeight": 10000
}
]
},
{
"monsterId": 28030310,
"dropDataList": [
{
"itemId": 100064,
"minCount": 1,
"maxCount": 1,
"minWeight": 0,
"maxWeight": 10000
}
]
},
{
"monsterId": 28030311,
"dropDataList": [
{
"itemId": 100064,
"minCount": 1,
"maxCount": 1,
"minWeight": 0,
"maxWeight": 10000
}
]
},
{
"monsterId": 21010101,
"dropDataList": [
@@ -9747,4 +10187,4 @@
}
]
}
]
]

File diff suppressed because it is too large Load Diff

View File

@@ -1,185 +1,265 @@
[
{
"dropId": 22010010,
"dropList": [
{ "ballId": 2024, "count": 1 }
]
},
{
"dropId": 22010030,
"dropList": [
{ "ballId": 2008, "count": 1 }
]
},
{
"dropId": 22010050,
"dropList": [
{ "ballId": 2024, "count": 3 },
{ "ballId": 2008, "count": 1 }
]
},
{
"dropId": 22010013,
"dropList": [
{ "ballId": 2019, "count": 1 }
]
},
{
"dropId": 22010033,
"dropList": [
{ "ballId": 2003, "count": 1 }
]
},
{
"dropId": 22010015,
"dropList": [
{ "ballId": 2021, "count": 1 }
]
},
{
"dropId": 22010035,
"dropList": [
{ "ballId": 2005, "count": 1 }
]
},
{
"dropId": 22010034,
"dropList": [
{ "ballId": 2004, "count": 1 }
]
},
{
"dropId": 22010037,
"dropList": [
{ "ballId": 2007, "count": 1 }
]
},
{
"dropId": 22010032,
"dropList": [
{ "ballId": 2002, "count": 1 }
]
},
{
"dropId": 22010022,
"dropList": [
{ "ballId": 2018, "count": 1 }
]
},
{
"dropId": 22010036,
"dropList": [
{ "ballId": 2006, "count": 1 }
]
},
{
"dropId": 22010026,
"dropList": [
{ "ballId": 2022, "count": 1 }
]
},
{
"dropId": 22010031,
"dropList": [
{ "ballId": 2001, "count": 1 }
]
},
{
"dropId": 22010014,
"dropList": [
{ "ballId": 2020, "count": 1 }
]
},
{
"dropId": 22010016,
"dropList": [
{ "ballId": 2022, "count": 1 }
]
},
{
"dropId": 22010012,
"dropList": [
{ "ballId": 2018, "count": 1 }
]
},
{
"dropId": 22010024,
"dropList": [
{ "ballId": 2004, "count": 1 }
]
},
{
"dropId": 22010011,
"dropList": [
{ "ballId": 2017, "count": 1 }
]
},
{
"dropId": 22010017,
"dropList": [
{ "ballId": 2023, "count": 1 }
]
},
{
"dropId": 22010021,
"dropList": [
{ "ballId": 2017, "count": 1 }
]
},
{
"dropId": 22010027,
"dropList": [
{ "ballId": 2007, "count": 1 }
]
},
{
"dropId": 22010040,
"dropList": [
{ "ballId": 2024, "count": 1 },
{ "ballId": 2008, "count": 1 }
]
},
{
"dropId": 22010025,
"dropList": [
{ "ballId": 2021, "count": 2 }
]
},
{
"dropId": 22010020,
"dropList": [
{ "ballId": 2024, "count": 1 }
]
},
{
"dropId": 22003100,
"dropList": [
]
},
{
"dropId": 22001000,
"dropList": [
]
},
{
"dropId": 22000100,
"dropList": [
]
},
{
"dropId": 22003000,
"dropList": [
]
},
{
"dropId": 22001100,
"dropList": [
]
},
{
"dropId": 22000000,
"dropList": [
]
}
]
{
"dropId": 22010010,
"dropList": [
{
"ballId": 2024,
"count": 1
}
]
},
{
"dropId": 22010030,
"dropList": [
{
"ballId": 2008,
"count": 1
}
]
},
{
"dropId": 22010050,
"dropList": [
{
"ballId": 2024,
"count": 3
},
{
"ballId": 2008,
"count": 1
}
]
},
{
"dropId": 22010013,
"dropList": [
{
"ballId": 2019,
"count": 1
}
]
},
{
"dropId": 22010033,
"dropList": [
{
"ballId": 2003,
"count": 1
}
]
},
{
"dropId": 22010015,
"dropList": [
{
"ballId": 2021,
"count": 1
}
]
},
{
"dropId": 22010035,
"dropList": [
{
"ballId": 2005,
"count": 1
}
]
},
{
"dropId": 22010034,
"dropList": [
{
"ballId": 2004,
"count": 1
}
]
},
{
"dropId": 22010037,
"dropList": [
{
"ballId": 2007,
"count": 1
}
]
},
{
"dropId": 22010032,
"dropList": [
{
"ballId": 2002,
"count": 1
}
]
},
{
"dropId": 22010022,
"dropList": [
{
"ballId": 2018,
"count": 1
}
]
},
{
"dropId": 22010036,
"dropList": [
{
"ballId": 2006,
"count": 1
}
]
},
{
"dropId": 22010026,
"dropList": [
{
"ballId": 2022,
"count": 1
}
]
},
{
"dropId": 22010031,
"dropList": [
{
"ballId": 2001,
"count": 1
}
]
},
{
"dropId": 22010014,
"dropList": [
{
"ballId": 2020,
"count": 1
}
]
},
{
"dropId": 22010016,
"dropList": [
{
"ballId": 2022,
"count": 1
}
]
},
{
"dropId": 22010012,
"dropList": [
{
"ballId": 2018,
"count": 1
}
]
},
{
"dropId": 22010024,
"dropList": [
{
"ballId": 2004,
"count": 1
}
]
},
{
"dropId": 22010011,
"dropList": [
{
"ballId": 2017,
"count": 1
}
]
},
{
"dropId": 22010017,
"dropList": [
{
"ballId": 2023,
"count": 1
}
]
},
{
"dropId": 22010021,
"dropList": [
{
"ballId": 2017,
"count": 1
}
]
},
{
"dropId": 22010027,
"dropList": [
{
"ballId": 2007,
"count": 1
}
]
},
{
"dropId": 22010040,
"dropList": [
{
"ballId": 2024,
"count": 1
},
{
"ballId": 2008,
"count": 1
}
]
},
{
"dropId": 22010025,
"dropList": [
{
"ballId": 2021,
"count": 2
}
]
},
{
"dropId": 22010020,
"dropList": [
{
"ballId": 2024,
"count": 1
}
]
},
{
"dropId": 22003100,
"dropList": [
]
},
{
"dropId": 22001000,
"dropList": [
]
},
{
"dropId": 22000100,
"dropList": [
]
},
{
"dropId": 22003000,
"dropList": [
]
},
{
"dropId": 22001100,
"dropList": [
]
},
{
"dropId": 22000000,
"dropList": [
]
}
]

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,58 +1,212 @@
[
{
"configId": 1,
"items": [75513, 75514, 75523, 75524, 75533, 75534, 75543, 75544, 75553, 75554]
},
{
"configId": 2,
"items": [77513, 77514, 77523, 77524, 77533, 77534, 77543, 77544, 77553, 77554]
},
{
"configId": 3,
"items": [82513, 82514, 82523, 82524, 82533, 82534, 82543, 82544, 82553, 82554]
},
{
"configId": 4,
"items": [81513, 81514, 81523, 81524, 81533, 81534, 81543, 81544, 81553, 81554]
},
{
"configId": 5,
"items": [ 79513, 79514, 79523, 79524, 79533, 79534, 79543, 79544, 79553, 79554 ]
},
{
"configId": 6,
"items": [ 72513, 72514, 72523, 72524, 72533, 72534, 72543, 72544, 72553, 72554 ]
},
{
"configId": 7,
"items": [ 76513, 76514, 76523, 76524, 76533, 76534, 76543, 76544, 76553, 76554 ]
},
{
"configId": 8,
"items": [ 74513, 74514, 74523, 74524, 74533, 74534, 74543, 74544, 74553, 74554 ]
},
{
"configId": 9,
"items": [ 88513, 88514, 88523, 88524, 88533, 88534, 88543, 88544, 88553, 88554 ]
},
{
"configId": 10,
"items": [ 89513, 89514, 89523, 89524, 89533, 89534, 89543, 89544, 89553, 89554 ]
},
{
"configId": 11,
"items": [ 80513, 80514, 80523, 80524, 80533, 80534, 80543, 80544, 80553, 80554 ]
},
{
"configId": 12,
"items": [ 73513, 73514, 73523, 73524, 73533, 73534, 73543, 73544, 73553, 73554 ]
},
{
"configId": 13,
"items": [ 71513, 71514, 71523, 71524, 71533, 71534, 71543, 71544, 71553, 71554 ]
},
{
"configId": 14,
"items": [ 90513, 90514, 90523, 90524, 90533, 90534, 90543, 90544, 90553, 90554 ]
}
{
"configId": 1,
"items": [
75513,
75514,
75523,
75524,
75533,
75534,
75543,
75544,
75553,
75554
]
},
{
"configId": 2,
"items": [
77513,
77514,
77523,
77524,
77533,
77534,
77543,
77544,
77553,
77554
]
},
{
"configId": 3,
"items": [
82513,
82514,
82523,
82524,
82533,
82534,
82543,
82544,
82553,
82554
]
},
{
"configId": 4,
"items": [
81513,
81514,
81523,
81524,
81533,
81534,
81543,
81544,
81553,
81554
]
},
{
"configId": 5,
"items": [
79513,
79514,
79523,
79524,
79533,
79534,
79543,
79544,
79553,
79554
]
},
{
"configId": 6,
"items": [
72513,
72514,
72523,
72524,
72533,
72534,
72543,
72544,
72553,
72554
]
},
{
"configId": 7,
"items": [
76513,
76514,
76523,
76524,
76533,
76534,
76543,
76544,
76553,
76554
]
},
{
"configId": 8,
"items": [
74513,
74514,
74523,
74524,
74533,
74534,
74543,
74544,
74553,
74554
]
},
{
"configId": 9,
"items": [
88513,
88514,
88523,
88524,
88533,
88534,
88543,
88544,
88553,
88554
]
},
{
"configId": 10,
"items": [
89513,
89514,
89523,
89524,
89533,
89534,
89543,
89544,
89553,
89554
]
},
{
"configId": 11,
"items": [
80513,
80514,
80523,
80524,
80533,
80534,
80543,
80544,
80553,
80554
]
},
{
"configId": 12,
"items": [
73513,
73514,
73523,
73524,
73533,
73534,
73543,
73544,
73553,
73554
]
},
{
"configId": 13,
"items": [
71513,
71514,
71523,
71524,
71533,
71534,
71543,
71544,
71553,
71554
]
},
{
"configId": 14,
"items": [
90513,
90514,
90523,
90524,
90533,
90534,
90543,
90544,
90553,
90554
]
}
]

View File

@@ -1,16 +1,15 @@
{
"212000002":"",
"1000100":"",
"7000600":"",
"7000700":"",
"7000800":"",
"7000900":"",
"7001000":"",
"7001100":"",
"7001200":"",
"7001300":"",
"7001400":"",
"212000002": "",
"1000100": "",
"7000600": "",
"7000700": "",
"7000800": "",
"7000900": "",
"7001000": "",
"7001100": "",
"7001200": "",
"7001300": "",
"7001400": "",
"23010000": "104002:80,104012:40",
"23010001": "104003:50,104013:25,107009:1,202:50000",
"23010100": "104002:40,202:30000",

File diff suppressed because it is too large Load Diff

View File

@@ -1,5 +1,5 @@
{
"scheduleId" : 45,
"scheduleStartTime" : "2022-06-01T00:00:00+08:00",
"nextScheduleChangeTime" : "2030-06-30T00:00:00+08:00"
"scheduleId": 45,
"scheduleStartTime": "2022-06-01T00:00:00+08:00",
"nextScheduleChangeTime": "2030-06-30T00:00:00+08:00"
}

View File

@@ -1,162 +1,162 @@
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400&display=swap">
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css">
<style>
body {
background-color: #f0f0f0;
}
<meta charset="utf-8">
<meta content="width=device-width, initial-scale=1, shrink-to-fit=no" name="viewport">
<link href="https://fonts.googleapis.com/css?family=Roboto:300,400&display=swap" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css"
rel="stylesheet">
<style>
body {
background-color: #f0f0f0;
}
p {
font-weight: 300;
}
p {
font-weight: 300;
}
a, a:hover {
text-decoration: none !important;
color: #626976;
}
a, a:hover {
text-decoration: none !important;
color: #626976;
}
.content {
padding: 3rem 0;
}
.content {
padding: 3rem 0;
}
.container {
color: #626976;
position: relative;
}
.container {
color: #626976;
position: relative;
}
h2 {
font-size: 20px;
}
h2 {
font-size: 20px;
}
h3 {
font-size: 16px;
}
h3 {
font-size: 16px;
}
table {
border-collapse: collapse;
width: 70%;
margin: 0 auto;
}
table {
border-collapse: collapse;
width: 70%;
margin: 0 auto;
}
table thead tr {
height: 60px;
background: #626976;
}
table thead tr {
height: 60px;
background: #626976;
}
table thead tr th {
font-size: 18px;
color: white;
}
table thead tr th {
font-size: 18px;
color: white;
}
table tbody tr {
height: 50px;
background-color: #f5f5f5;
}
table tbody tr {
height: 50px;
background-color: #f5f5f5;
}
tbody tr:nth-child(even) {
background-color: #fdfdfd;
}
tbody tr:nth-child(even) {
background-color: #fdfdfd;
}
table th, table td {
text-align: left;
padding: 0 8px;
}
</style>
<title>GM Handbook</title>
table th, table td {
text-align: left;
padding: 0 8px;
}
</style>
<title>GM Handbook</title>
</head>
<body>
<div class="content">
<div class="container">
<h2 class="mb-5">{{TITLE}}</h2>
<div class="container">
<h2 class="mb-5">{{TITLE}}</h2>
<h3>{{TITLE_COMMANDS}}</h3>
<hr/>
<table>
<thead>
<tr>
<th>{{HEADER_COMMAND}}</th>
<th>{{HEADER_DESCRIPTION}}</th>
</tr>
</thead>
{{COMMANDS_TABLE}}
</table>
<h3>{{TITLE_COMMANDS}}</h3>
<hr/>
<table>
<thead>
<tr>
<th>{{HEADER_COMMAND}}</th>
<th>{{HEADER_DESCRIPTION}}</th>
</tr>
</thead>
{{COMMANDS_TABLE}}
</table>
<h3>{{TITLE_AVATARS}}</h3>
<hr/>
<table>
<thead>
<tr>
<th>{{HEADER_ID}}</th>
<th>{{HEADER_AVATAR}}</th>
</tr>
</thead>
{{AVATARS_TABLE}}
</table>
<h3>{{TITLE_AVATARS}}</h3>
<hr/>
<table>
<thead>
<tr>
<th>{{HEADER_ID}}</th>
<th>{{HEADER_AVATAR}}</th>
</tr>
</thead>
{{AVATARS_TABLE}}
</table>
<h3>{{TITLE_ITEMS}}</h3>
<hr/>
<table>
<thead>
<tr>
<th>{{HEADER_ID}}</th>
<th>{{HEADER_ITEM}}</th>
</tr>
</thead>
{{ITEMS_TABLE}}
</table>
<h3>{{TITLE_ITEMS}}</h3>
<hr/>
<table>
<thead>
<tr>
<th>{{HEADER_ID}}</th>
<th>{{HEADER_ITEM}}</th>
</tr>
</thead>
{{ITEMS_TABLE}}
</table>
<h3>{{TITLE_SCENES}}</h3>
<hr/>
<table>
<thead>
<tr>
<th>{{HEADER_ID}}</th>
<th>{{HEADER_SCENE}}</th>
</tr>
</thead>
{{SCENES_TABLE}}
</table>
<h3>{{TITLE_SCENES}}</h3>
<hr/>
<table>
<thead>
<tr>
<th>{{HEADER_ID}}</th>
<th>{{HEADER_SCENE}}</th>
</tr>
</thead>
{{SCENES_TABLE}}
</table>
<h3>{{TITLE_MONSTERS}}</h3>
<hr/>
<table>
<thead>
<tr>
<th>{{HEADER_ID}}</th>
<th>{{HEADER_MONSTER}}</th>
</tr>
</thead>
{{MONSTERS_TABLE}}
</table>
</div>
<h3>{{TITLE_MONSTERS}}</h3>
<hr/>
<table>
<thead>
<tr>
<th>{{HEADER_ID}}</th>
<th>{{HEADER_MONSTER}}</th>
</tr>
</thead>
{{MONSTERS_TABLE}}
</table>
</div>
</div>
<footer>
<div class="copyright">
<div class="container">
<div class="row">
<div class="col-md-6">
<span>Template by BecodReyes. All rights reserved.</span>
<div class="copyright">
<div class="container">
<div class="row">
<div class="col-md-6">
<span>Template by BecodReyes. All rights reserved.</span>
</div>
<div class="col-md-6">
<ul style="float:right">
<li class="list-inline-item">
<a href="https://github.com/Grasscutters/Grasscutter">Github</a>
</li>
<li class="list-inline-item">·</li>
<li class="list-inline-item">
<a href="https://github.com/Grasscutters/Grasscutter/blob/stable/LICENSE">License</a>
</li>
</ul>
</div>
</div>
</div>
<div class="col-md-6">
<ul style="float:right">
<li class="list-inline-item">
<a href="https://github.com/Grasscutters/Grasscutter">Github</a>
</li>
<li class="list-inline-item">·</li>
<li class="list-inline-item">
<a href="https://github.com/Grasscutters/Grasscutter/blob/stable/LICENSE">License</a>
</li>
</ul>
</div>
</div>
</div>
</div>
</footer>
</body>
</html>

View File

@@ -1,106 +1,106 @@
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400&display=swap">
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css">
<style>
body {
background-color: #f0f0f0;
}
<meta charset="utf-8">
<meta content="width=device-width, initial-scale=1, shrink-to-fit=no" name="viewport">
<link href="https://fonts.googleapis.com/css?family=Roboto:300,400&display=swap" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css"
rel="stylesheet">
<style>
body {
background-color: #f0f0f0;
}
p {
font-weight: 300;
}
p {
font-weight: 300;
}
a, a:hover {
text-decoration: none !important;
color: #626976;
}
a, a:hover {
text-decoration: none !important;
color: #626976;
}
.content {
padding: 3rem 0;
}
.content {
padding: 3rem 0;
}
.container {
color: #626976;
position: relative;
}
.container {
color: #626976;
position: relative;
}
h2 {
font-size: 20px;
}
h2 {
font-size: 20px;
}
h3 {
font-size: 16px;
}
h3 {
font-size: 16px;
}
table {
border-collapse: collapse;
width: 70%;
margin: 0 auto;
}
table {
border-collapse: collapse;
width: 70%;
margin: 0 auto;
}
table thead tr {
height: 60px;
background: #626976;
}
table thead tr {
height: 60px;
background: #626976;
}
table thead tr th {
font-size: 18px;
color: white;
}
table thead tr th {
font-size: 18px;
color: white;
}
table tbody tr {
height: 50px;
background-color: #f5f5f5;
}
table tbody tr {
height: 50px;
background-color: #f5f5f5;
}
tbody tr:nth-child(even) {
background-color: #fdfdfd;
}
tbody tr:nth-child(even) {
background-color: #fdfdfd;
}
table th, table td {
text-align: left;
padding: 0 8px;
}
</style>
<title>Documentation</title>
table th, table td {
text-align: left;
padding: 0 8px;
}
</style>
<title>Documentation</title>
</head>
<body>
<div class="content">
<div class="container">
<h2 class="mb-5">{{TITLE}}</h2>
<div class="container">
<h2 class="mb-5">{{TITLE}}</h2>
<ul>
<li><a href="/documentation/handbook">{{ITEM_HANDBOOK}}</a></li>
<li><a href="/documentation/gachamapping">{{ITEM_GACHA_MAPPING}}</a></li>
</ul>
</div>
<ul>
<li><a href="/documentation/handbook">{{ITEM_HANDBOOK}}</a></li>
<li><a href="/documentation/gachamapping">{{ITEM_GACHA_MAPPING}}</a></li>
</ul>
</div>
</div>
<footer>
<div class="copyright">
<div class="container">
<div class="row">
<div class="col-md-6">
<span>Template by BecodReyes. All rights reserved.</span>
<div class="copyright">
<div class="container">
<div class="row">
<div class="col-md-6">
<span>Template by BecodReyes. All rights reserved.</span>
</div>
<div class="col-md-6">
<ul style="float:right">
<li class="list-inline-item">
<a href="https://github.com/Grasscutters/Grasscutter">Github</a>
</li>
<li class="list-inline-item">·</li>
<li class="list-inline-item">
<a href="https://github.com/Grasscutters/Grasscutter/blob/stable/LICENSE">License</a>
</li>
</ul>
</div>
</div>
</div>
<div class="col-md-6">
<ul style="float:right">
<li class="list-inline-item">
<a href="https://github.com/Grasscutters/Grasscutter">Github</a>
</li>
<li class="list-inline-item">·</li>
<li class="list-inline-item">
<a href="https://github.com/Grasscutters/Grasscutter/blob/stable/LICENSE">License</a>
</li>
</ul>
</div>
</div>
</div>
</div>
</footer>
</body>
</html>

View File

@@ -1,121 +1,140 @@
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400&display=swap">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css">
<style>
body {
background-color: #f0f0f0;
}
p {
font-weight:300;
}
a,a:hover {
text-decoration:none !important;
color:#626976;
}
.content {
padding:3rem 0;
}
.container {
color:#626976;
position: relative;
}
<head>
<meta charset="utf-8">
<meta content="width=device-width, initial-scale=1, shrink-to-fit=no" name="viewport">
<link href="https://fonts.googleapis.com/css?family=Roboto:300,400&display=swap" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css" rel="stylesheet">
<style>
body {
background-color: #f0f0f0;
}
h2 {
font-size:20px;
}
h3 {
font-size:16px;
}
</style>
<title>Banner Details</title>
<script type="text/javascript" src="/gacha/mappings"></script>
</head>
<body>
<div class="content">
<div class="container">
<h2 class="mb-5">{{TITLE}}</h2>
<h3 class="">{{AVAILABLE_FIVE_STARS}}</h3>
<hr />
<ul id="5-star-list">
</ul>
p {
font-weight: 300;
}
<h3 class="">{{AVAILABLE_FOUR_STARS}}</h3>
<hr />
<ul id="4-star-list">
</ul>
a, a:hover {
text-decoration: none !important;
color: #626976;
}
<h3 class="">{{AVAILABLE_THREE_STARS}}</h3>
<hr />
<ul id="3-star-list">
</ul>
</div>
</div>
<footer>
<div class="copyright">
<div class="container">
<div class="row">
<div class="col-md-6">
.content {
padding: 3rem 0;
}
.container {
color: #626976;
position: relative;
}
h2 {
font-size: 20px;
}
h3 {
font-size: 16px;
}
</style>
<title>Banner Details</title>
<script src="/gacha/mappings" type="text/javascript"></script>
</head>
<body>
<div class="content">
<div class="container">
<h2 class="mb-5">{{TITLE}}</h2>
<h3 class="">{{AVAILABLE_FIVE_STARS}}</h3>
<hr/>
<ul id="5-star-list">
</ul>
<h3 class="">{{AVAILABLE_FOUR_STARS}}</h3>
<hr/>
<ul id="4-star-list">
</ul>
<h3 class="">{{AVAILABLE_THREE_STARS}}</h3>
<hr/>
<ul id="3-star-list">
</ul>
</div>
</div>
<footer>
<div class="copyright">
<div class="container">
<div class="row">
<div class="col-md-6">
<span>
Template by BecodReyes. All rights reserved.
</span>
</div>
<div class="col-md-6">
<ul style="float:right">
<li class="list-inline-item">
<a href="https://github.com/Grasscutters/Grasscutter">Github</a>
</li>
<li class="list-inline-item">·</li>
<li class="list-inline-item">
<a href="https://github.com/Grasscutters/Grasscutter/blob/stable/LICENSE">License</a>
</li>
</ul>
</div>
</div>
</div>
<div class="col-md-6">
<ul style="float:right">
<li class="list-inline-item">
<a href="https://github.com/Grasscutters/Grasscutter">Github</a>
</li>
<li class="list-inline-item">·</li>
<li class="list-inline-item">
<a href="https://github.com/Grasscutters/Grasscutter/blob/stable/LICENSE">License</a>
</li>
</ul>
</div>
</div>
</footer>
</div>
</div>
</footer>
<script>
var fiveStarItems = {{FIVE_STARS}};
var fourStarItems = {{FOUR_STARS}};
var threeStarItems = {{THREE_STARS}};
var lang = "{{LANGUAGE}}".toLowerCase();
<script>
var fiveStarItems = {
{
FIVE_STARS
}
}
function getNameForId(itemId) {
if (mappings[lang] != null && mappings[lang][itemId] != null) {
return mappings[lang][itemId][0];
}
else if (mappings["en-us"] != null && mappings["en-us"][itemId] != null) {
return mappings["en-us"][itemId][0];
}
return itemId.toString();
}
var fourStarItems = {
{
FOUR_STARS
}
}
fiveStarList = document.getElementById("5-star-list");
fourStarList = document.getElementById("4-star-list");
threeStarList = document.getElementById("3-star-list");
var threeStarItems = {
{
THREE_STARS
}
}
fiveStarItems.forEach(element => {
var entry = document.createElement("li");
entry.innerHTML = getNameForId(element);
fiveStarList.appendChild(entry);
});
fourStarItems.forEach(element => {
var entry = document.createElement("li");
entry.innerHTML = getNameForId(element);
fourStarList.appendChild(entry);
});
threeStarItems.forEach(element => {
var entry = document.createElement("li");
entry.innerHTML = getNameForId(element);
threeStarList.appendChild(entry);
});
</script>
</body>
var lang = "{{LANGUAGE}}".toLowerCase();
function getNameForId(itemId) {
if (mappings[lang] != null && mappings[lang][itemId] != null) {
return mappings[lang][itemId][0];
} else if (mappings["en-us"] != null && mappings["en-us"][itemId] != null) {
return mappings["en-us"][itemId][0];
}
return itemId.toString();
}
fiveStarList = document.getElementById("5-star-list");
fourStarList = document.getElementById("4-star-list");
threeStarList = document.getElementById("3-star-list");
fiveStarItems.forEach(element => {
var entry = document.createElement("li");
entry.innerHTML = getNameForId(element);
fiveStarList.appendChild(entry);
});
fourStarItems.forEach(element => {
var entry = document.createElement("li");
entry.innerHTML = getNameForId(element);
fourStarList.appendChild(entry);
});
threeStarItems.forEach(element => {
var entry = document.createElement("li");
entry.innerHTML = getNameForId(element);
threeStarList.appendChild(entry);
});
</script>
</body>
</html>

View File

@@ -1,175 +1,185 @@
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400&display=swap">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css">
<style>
body {
background-color: #f0f0f0;
}
p {
font-weight:300;
}
a,a:hover {
text-decoration:none !important;
color:#626976;
}
.content {
padding:3rem 0;
}
.container {
color:#626976;
position: relative;
}
<head>
<meta charset="utf-8">
<meta content="width=device-width, initial-scale=1, shrink-to-fit=no" name="viewport">
<link href="https://fonts.googleapis.com/css?family=Roboto:300,400&display=swap" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css" rel="stylesheet">
<style>
body {
background-color: #f0f0f0;
}
h2 {
font-size:20px;
}
.custom-table {
min-width:900px;
}
.custom-table thead tr,.custom-table thead th {
padding-bottom:30px;
color:#000;
}
.custom-table tbody th,.custom-table tbody td {
color:#777;
font-weight:400;
padding-bottom:20px;
padding-top:20px;
font-weight:300;
border:none;
}
.yellow {
color: rgb(255, 162, 0);
}
.blue {
color: rgb(75, 107, 251);
}
.purple {
color: rgb(242, 40, 242);
}
</style>
<title>Gacha Records</title>
<!-- This file could be generated automatically using `java -jar grasscutter.jar -gachamap` -->
<!-- You can also modify the file manually to customize it -->
<!-- Otherwise you may onle see number IDs in the gacha record -->
<script type="text/javascript" src="/gacha/mappings"></script>
<script>
records = {{REPLACE_RECORDS}};
maxPage = {{REPLACE_MAXPAGE}};
p {
font-weight: 300;
}
mappings['default'] = mappings['en-us']; // make en-us as default/fallback option
</script>
</head>
<body>
<div class="content">
<div class="container">
<h2 class="mb-5">{{TITLE}}</h2>
<table id="container" class="table table-striped custom-table">
<thead>
<tr>
<th scope="col">{{DATE}}</th>
<th scope="col">{{ITEM}}</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
<div class="navbar">
<a href="" id="prev">&lt;&lt;&lt;</a>
<span id="curpage">1</span>
<a href="" id="next">&gt;&gt;&gt;</a>
</div>
</div>
a, a:hover {
text-decoration: none !important;
color: #626976;
}
.content {
padding: 3rem 0;
}
.container {
color: #626976;
position: relative;
}
h2 {
font-size: 20px;
}
.custom-table {
min-width: 900px;
}
.custom-table thead tr, .custom-table thead th {
padding-bottom: 30px;
color: #000;
}
.custom-table tbody th, .custom-table tbody td {
color: #777;
font-weight: 400;
padding-bottom: 20px;
padding-top: 20px;
font-weight: 300;
border: none;
}
.yellow {
color: rgb(255, 162, 0);
}
.blue {
color: rgb(75, 107, 251);
}
.purple {
color: rgb(242, 40, 242);
}
</style>
<title>Gacha Records</title>
<!-- This file could be generated automatically using `java -jar grasscutter.jar -gachamap` -->
<!-- You can also modify the file manually to customize it -->
<!-- Otherwise you may onle see number IDs in the gacha record -->
<script src="/gacha/mappings" type="text/javascript"></script>
<script>
records = '{{REPLACE_RECORDS}}'
maxPage = '{{REPLACE_MAXPAGE}}'
mappings['default'] = mappings['en-us']; // make en-us as default/fallback option
</script>
</head>
<body>
<div class="content">
<div class="container">
<h2 class="mb-5">{{TITLE}}</h2>
<table class="table table-striped custom-table" id="container">
<thead>
<tr>
<th scope="col">{{DATE}}</th>
<th scope="col">{{ITEM}}</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
<div class="navbar">
<a href="" id="prev">&lt;&lt;&lt;</a>
<span id="curpage">1</span>
<a href="" id="next">&gt;&gt;&gt;</a>
</div>
<footer>
<div class="copyright">
<div class="container">
<div class="row">
<div class="col-md-6">
</div>
</div>
<footer>
<div class="copyright">
<div class="container">
<div class="row">
<div class="col-md-6">
<span>
Template by BecodReyes. All rights reserved.
</span>
</div>
<div class="col-md-6">
<ul style="float:right">
<li class="list-inline-item">
<a href="https://github.com/Grasscutters/Grasscutter">Github</a>
</li>
<li class="list-inline-item">·</li>
<li class="list-inline-item">
<a href="https://github.com/Grasscutters/Grasscutter/blob/stable/LICENSE">License</a>
</li>
</ul>
</div>
</div>
</div>
<div class="col-md-6">
<ul style="float:right">
<li class="list-inline-item">
<a href="https://github.com/Grasscutters/Grasscutter">Github</a>
</li>
<li class="list-inline-item">·</li>
<li class="list-inline-item">
<a href="https://github.com/Grasscutters/Grasscutter/blob/stable/LICENSE">License</a>
</li>
</ul>
</div>
</div>
</footer>
</div>
</div>
</footer>
<script>
var lang = "{{LANGUAGE}}".toLowerCase();
<script>
var lang = "{{LANGUAGE}}".toLowerCase();
function itemMapper(itemID) {
if (mappings[lang] != null && mappings[lang][itemID] != null) {
var entry = mappings[lang][itemID];
if (entry){
return "<span class='" + entry[1] + "'>" + entry[0] + "</span>";
}
} else {
if (mappings['default'][itemID] != null) {
var entry = mappings['default'][itemID];
if (entry){
return "<span class='" + entry[1] + "'>" + entry[0] + "</span>";
}
}
}
return "<span class='blue'>" + itemID + "</span>";
function itemMapper(itemID) {
if (mappings[lang] != null && mappings[lang][itemID] != null) {
var entry = mappings[lang][itemID];
if (entry) {
return "<span class='" + entry[1] + "'>" + entry[0] + "</span>";
}
(function (){
var container = document.getElementById("container");
records.forEach(element => {
var e = document.createElement("tr");
e.innerHTML= "<td>" + (new Date(element.time).toLocaleString(lang)) + "</td><td>" + itemMapper(element.item) + "</td>";
container.appendChild(e);
});
// setup pagenation buttons
var page = parseInt(new window.URLSearchParams(window.location.search).get("p"));
if (!page) {
page = 0;
}
document.getElementById("curpage").innerText = page + 1;
var href = new URL(window.location);
href.searchParams.set("p", page - 1);
document.getElementById("prev").href = href.toString();
href.searchParams.set("p", page + 1);
document.getElementById("next").href = href.toString();
if (page <= 0) {
document.getElementById("prev").style.display = "none";
}
if (page >= maxPage - 1) {
document.getElementById("next").style.display = "none";
} else {
if (mappings['default'][itemID] != null) {
var entry = mappings['default'][itemID];
if (entry) {
return "<span class='" + entry[1] + "'>" + entry[0] + "</span>";
}
}
}
return "<span class='blue'>" + itemID + "</span>";
}
// setup gacha type info
var gachaType = new window.URLSearchParams(window.location.search).get("gachaType");
if (mappings[lang] != null && mappings[lang][gachaType] != null) {
var gachaString = mappings[lang][gachaType];
} else {
var gachaString = mappings['default'][gachaType];
if (gachaString == null) {
gachaString = gachaType;
}
}
document.getElementById("gacha-type").innerText = gachaString;
})();
</script>
(function () {
var container = document.getElementById("container");
records.forEach(element => {
var e = document.createElement("tr");
</body>
e.innerHTML = "<td>" + (new Date(element.time).toLocaleString(lang)) + "</td><td>" + itemMapper(element.item) + "</td>";
container.appendChild(e);
});
// setup pagenation buttons
var page = parseInt(new window.URLSearchParams(window.location.search).get("p"));
if (!page) {
page = 0;
}
document.getElementById("curpage").innerText = page + 1;
var href = new URL(window.location);
href.searchParams.set("p", page - 1);
document.getElementById("prev").href = href.toString();
href.searchParams.set("p", page + 1);
document.getElementById("next").href = href.toString();
if (page <= 0) {
document.getElementById("prev").style.display = "none";
}
if (page >= maxPage - 1) {
document.getElementById("next").style.display = "none";
}
// setup gacha type info
var gachaType = new window.URLSearchParams(window.location.search).get("gachaType");
if (mappings[lang] != null && mappings[lang][gachaType] != null) {
var gachaString = mappings[lang][gachaType];
} else {
var gachaString = mappings['default'][gachaType];
if (gachaString == null) {
gachaString = gachaType;
}
}
document.getElementById("gacha-type").innerText = gachaString;
})();
</script>
</body>
</html>

View File

@@ -0,0 +1,46 @@
<!DOCTYPE html>
<html lang="en">
<head>
<style>
body {
margin: 0;
width: 100vw;
height: 100vh;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
p {
margin: 2px;
}
</style>
<title>Handbook Authentication</title>
</head>
<body>
<script type="application/javascript">
if ("{{VALUE}}" === "true") {
parent.postMessage({
type: "handbook-auth",
token: "{{SESSION_TOKEN}}",
uid: "{{PLAYER_ID}}"
}, "*");
}
</script>
<p>Input your Player UID here.</p>
<form method="post">
<label>
<input
name="playerid"
type="number"
/>
</label>
<input type="submit" />
</form>
</body>
</html>

View File

@@ -63,7 +63,10 @@
"game_version": "Game version: %s",
"resources": {
"loading": "Loading resources...",
"finish": "Finished loading resources."
"finish": "Finished loading resources.",
"custom": "Find additional resources at: 'Anime-Game-Servers/CustomGCResources'.",
"missing_server": "To fully use questing, it is recommended to add the 'Server' folder.",
"missing_scenes": "To fully use questing, it is recommended to add the 'ScriptSceneData' folder."
}
}
},
@@ -84,6 +87,7 @@
"artifactId": "Invalid artifact ID.",
"avatarId": "Invalid avatar ID.",
"avatarLevel": "Invalid avatarLevel.",
"cfgId": "Invalid cfg ID.",
"entityId": "Invalid entity ID.",
"itemId": "Invalid item ID.",
"itemLevel": "Invalid itemLevel.",
@@ -166,6 +170,10 @@
"in_dungeon_error": "You are already in that dungeon.",
"description": "Enter a dungeon"
},
"entity": {
"description": "Modify an existing entity's properties",
"not_found_error": "Entity does not exist"
},
"give": {
"usage_relic": "Usage: give <artifactID> [mainPropID] [<appendPropID>[,<times>]]... [lv<level 0-20>]",
"illegal_relic": "This artifactID belongs to a blacklisted range, it may not be the one you wanted.",
@@ -184,8 +192,8 @@
"aliases": "Aliases: ",
"available_commands": "Available commands: ",
"tip_need_permission": "Permission: ",
"tip_need_no_permission": " None",
"tip_permission_targeted": " (Permission %s is also required to use on other players)",
"tip_need_no_permission": "None",
"tip_permission_targeted": "(Permission %s is also required to use on other players)",
"warn_player_has_no_permission": "Notice: You do not have permission to run this command.",
"description": "Sends the help message or shows information about a specified command"
},
@@ -230,7 +238,32 @@
"finished": "Finished quest %s.",
"not_found": "Quest not found.",
"invalid_id": "Invalid quest ID.",
"description": "Add or finish quests"
"description": "Add or finish quests",
"running": "Quest %s is %s (%s).",
"talking": "Talk %s is %s for main quest %s (%s).",
"state": {
"none": "unknown (none)",
"unstarted": "unfinished (not started, not completed)",
"unfinished": "unfinished (started, not completed)",
"finished": "finished (completed)",
"failed": "finished (completed, but failed)",
"exists": "found",
"not_exists": "not found"
},
"enabled": "Questing enabled."
},
"group": {
"invalid_groupid": "Invalid group ID.",
"invalid_suiteid": "Invalid suite ID.",
"group_not_found": "Group not found.",
"description": "Alter group loading",
"refreshed": "Group %s refreshed."
},
"cutscene": {
"description": "Plays a cutscene"
},
"sound": {
"description": "Plays a sound"
},
"reload": {
"reload_start": "Reloading config.",
@@ -343,6 +376,17 @@
"success": "Teleported %s to %s, %s, %s in scene %s.",
"description": "Change the player's position"
},
"trialAvatarActivity": {
"description": "Manipulate functionalities of Trial Avatar Activity. This includes toggling dungeon and reward states.",
"not_found": "Trial avatar activity player data not found. Maybe the activity is not enabled.",
"invalid_param": "Invalid parameter.",
"schedule_not_found": "Schedule %s not found.",
"success_schedule": "Changed schedule id to %s.",
"success_dungeon": "Togggled avatar %s's dungeon status.",
"success_dungeon_all": "Toggled all avatars' dungeon status.",
"success_reward": "Togggled avatar %s's reward status.",
"success_reward_all": "Togggled all avatars reward status."
},
"weather": {
"success": "Set weather ID to %s with climate type %s.",
"status": "Current weather ID is %s with climate type %s.",
@@ -362,6 +406,9 @@
"success": "Successful.",
"failure": "Failed, player not found.",
"description": "Unban a player"
},
"troubleshoot": {
"description": "Generate debugging information for troubleshooting."
}
},
"gacha": {
@@ -400,19 +447,23 @@
}
},
"plugin": {
"directory_failed": "Failed to create plugins directory: ",
"unable_to_load": "Unable to load plugin.",
"invalid_config": "Plugin %s has an invalid config file.",
"invalid_main_class": "Plugin %s has an invalid main class.",
"missing_config": "Plugin %s lacks a valid config file.",
"failed_to_load_plugin": "Failed to load plugin: %s",
"failed_to_load": "Failed to load a plugin.",
"failed_to_load_dependencies": "Failed to load plugins with dependencies.",
"loading_plugin": "Loading plugin: %s",
"failed_add_id": "Failed to add plugin identifier: %s",
"enabling_plugin": "Enabling plugin: %s",
"enabling_failed": "Failed to enable plugin: %s",
"disabling_plugin": "Disabling plugin: %s",
"disabling_failed": "Failed to disable plugin: %s"
"directory_failed": "Failed to create plugins directory: ",
"unable_to_load": "Unable to load plugin.",
"invalid_config": "Plugin %s has an invalid config file.",
"invalid_main_class": "Plugin %s has an invalid main class.",
"missing_config": "Plugin %s lacks a valid config file.",
"failed_to_load_plugin": "Failed to load plugin: %s",
"failed_to_load": "Failed to load a plugin.",
"failed_to_load_dependencies": "Failed to load plugins with dependencies.",
"loading_plugin": "Loading plugin: %s",
"failed_add_id": "Failed to add plugin identifier: %s",
"enabling_plugin": "Enabling plugin: %s",
"enabling_failed": "Failed to enable plugin: %s",
"disabling_plugin": "Disabling plugin: %s",
"disabling_failed": "Failed to disable plugin: %s",
"invalid_api": {
"not_present": "Plugin %s does not specify an API version.",
"lower": "Plugin %s is using API version %s, while the server is using API version %s."
}
}
}

View File

@@ -63,7 +63,10 @@
"game_version": "Versión del juego: %s",
"resources": {
"loading": "Cargando recursos...",
"finish": "Ha finalizado la carga de recursos."
"finish": "Ha finalizado la carga de recursos.",
"custom": "🇺🇸Find additional resources at: 'Anime-Game-Servers/CustomGCResources'.",
"missing_server": "🇺🇸To fully use questing, it is recommended to add the 'Server' folder.",
"missing_scenes": "🇺🇸To fully use questing, it is recommended to add the 'ScriptSceneData' folder."
}
}
},
@@ -84,6 +87,7 @@
"artifactId": "ID de artefacto no válido.",
"avatarId": "ID de avatar no válido.",
"avatarLevel": "avatarLevel inválido.",
"cfgId": "🇺🇸Invalid cfg ID.",
"entityId": "ID de entidad inválido.",
"itemId": "ID de objeto inválido.",
"itemLevel": "itemLevel inválido.",
@@ -166,6 +170,10 @@
"in_dungeon_error": "Ya estás en esa mazmorra.",
"description": "Te introduce en una mazmorra"
},
"entity": {
"description": "🇺🇸Modify an existing entity's properties",
"not_found_error": "🇺🇸Entity does not exist"
},
"give": {
"usage_relic": "Usa: give <artifactID> [mainPropID] [<appendPropID>[,<veces>]]... [lv<nivel 0-20>]",
"illegal_relic": "Este artifactID pertenece a un rango de la lista negra, puede que no sea el que buscas.",
@@ -230,7 +238,32 @@
"finished": "Misión %s finalizada.",
"not_found": "Misión no encontrada.",
"invalid_id": "ID de misión inválido.",
"description": "Añade o finaliza misiones"
"description": "Añade o finaliza misiones",
"running": "🇺🇸Quest %s is %s (%s).",
"talking": "🇺🇸Talk %s is %s for main quest %s (%s).",
"state": {
"none": "🇺🇸unknown (none)",
"unstarted": "🇺🇸unfinished (not started, not completed)",
"unfinished": "🇺🇸unfinished (started, not completed)",
"finished": "🇺🇸finished (completed)",
"failed": "🇺🇸finished (completed, but failed)",
"exists": "🇺🇸found",
"not_exists": "🇺🇸not found"
},
"enabled": "🇺🇸Questing enabled."
},
"group": {
"invalid_groupid": "ID de grupo invalida.",
"invalid_suiteid": "ID del conjunto invalida.",
"group_not_found": "Grupo no encontrado.",
"description": "Altera la carga de grupos",
"refreshed": "Grupo %s refrescado."
},
"cutscene": {
"description": "Reproduce una escena"
},
"sound": {
"description": "🇺🇸Plays a sound"
},
"reload": {
"reload_start": "Recargando configuración.",
@@ -321,7 +354,7 @@
"team": {
"invalid_usage": "Uso inválido.",
"invalid_index": "Index inválido.",
"add_too_much": "El servidor solo permite tener como máximo %s avatar(es) en tu equipo.",
"add_too_much": "El servidor solo permite tener como máximo %d avatar(es) en tu equipo.",
"failed_to_add_avatar": "Error al añadir el avatar con ID %s.",
"failed_to_parse_index": "Error al usar el index: %s",
"remove_too_much": "No puedes quitar todos tus avatares.",
@@ -329,7 +362,7 @@
"index_out_of_range": "El index especificado está fuera de rango.",
"failed_parse_avatar_id": "Error al usar el ID del avatar: %s",
"avatar_already_in_team": "El avatar ya está en el equipo.",
"avatar_not_found": "Avatar %s no encontrado.",
"avatar_not_found": "Avatar %d no encontrado.",
"description": "Modifica tu equipo manualmente."
},
"teleportAll": {
@@ -343,6 +376,17 @@
"success": "Teletransportado %s a %s, %s, %s en el escenario %s.",
"description": "Cambia la posición del jugador"
},
"trialAvatarActivity": {
"description": "Manipular las funcionalidades de la Actividad de Avatar de Prueba. Esto incluye alternar estados de mazmorra y recompensa.",
"not_found": "No se encontraron los datos del jugador de la actividad del avatar de prueba. Quizás la actividad no esté habilitada.",
"invalid_param": "🇺🇸Invalid parameter.",
"schedule_not_found": "Horario %s no encontrado.",
"success_schedule": "Cambió la identificación del horario a %s.",
"success_dungeon": "Se alteró el estado de la mazmorra del avatar %s.",
"success_dungeon_all": "Cambiado el estado de mazmorra de todos los avatares.",
"success_reward": "Se alteró el estado de recompensa del avatar %s.",
"success_reward_all": "Cambiado el estado de recompensa de todos los avatares."
},
"weather": {
"success": "Establece el ID del clima %s con el tipo de clima %s.",
"status": "El ID del clima actual es %s con tipo de clima %s.",
@@ -362,6 +406,9 @@
"success": "Exitoso.",
"failure": "Error, jugador no encontrado.",
"description": "Elimina el veto a un jugador"
},
"troubleshoot": {
"description": "🇺🇸Generate debugging information for troubleshooting."
}
},
"gacha": {
@@ -379,23 +426,23 @@
},
"documentation": {
"handbook": {
"title": "GM Handbook",
"title": "🇺🇸GM Handbook",
"title_commands": "Comandos",
"title_avatars": "Avatares",
"title_items": "Objetos",
"title_scenes": "Escenario",
"title_monsters": "Monstruos",
"header_id": "Id",
"header_id": "🇺🇸Id",
"header_command": "Comando",
"header_description": "Descripción",
"header_avatar": "Avatar",
"header_avatar": "🇺🇸Avatar",
"header_item": "Objeto",
"header_scene": "Escenario",
"header_monster": "Monstruo"
},
"index": {
"title": "Documentación",
"handbook": "GM Handbook",
"handbook": "🇺🇸GM Handbook",
"gacha_mapping": "JSON de mapeo del Gacha"
}
},
@@ -413,6 +460,10 @@
"enabling_plugin": "Activando plugin: %s",
"enabling_failed": "Error al activar el plugin: %s",
"disabling_plugin": "Desactivando el plugin: %s",
"disabling_failed": "Error al desactivar el plugin: %s"
"disabling_failed": "Error al desactivar el plugin: %s",
"invalid_api": {
"not_present": "🇺🇸Plugin %s does not specify an API version.",
"lower": "🇺🇸Plugin %s is using API version %s, while the server is using API version %s."
}
}
}

View File

@@ -63,7 +63,10 @@
"game_version": "Version du jeu: %s",
"resources": {
"loading": "Chargement des ressources...",
"finish": "Chargement des ressources terminé."
"finish": "Chargement des ressources terminé.",
"custom": "🇺🇸Find additional resources at: 'Anime-Game-Servers/CustomGCResources'.",
"missing_server": "🇺🇸To fully use questing, it is recommended to add the 'Server' folder.",
"missing_scenes": "🇺🇸To fully use questing, it is recommended to add the 'ScriptSceneData' folder."
}
}
},
@@ -84,6 +87,7 @@
"artifactId": "ID de l'artéfact invalide.",
"avatarId": "ID de l'avatar invalide.",
"avatarLevel": "avatarLevel invalide.",
"cfgId": "🇺🇸Invalid cfg ID.",
"entityId": "ID de l'entité invalide.",
"itemId": "ID de l'objet invalide.",
"itemLevel": "Niveau de l'objet invalide.",
@@ -166,6 +170,10 @@
"in_dungeon_error": "Vous êtes déjà dans ce donjon.",
"description": "Entrer dans un donjon"
},
"entity": {
"description": "🇺🇸Modify an existing entity's properties",
"not_found_error": "🇺🇸Entity does not exist"
},
"give": {
"usage_relic": "Utilisation: give <artifactID> [mainPropID] [<appendPropID>[,<times>]]... [lv<level 0-20>]",
"illegal_relic": "L'ID de cet artéfact appartient a une liste blacklistée, ce n'est peut-être pas celui que vous désirez.",
@@ -230,7 +238,32 @@
"finished": "Quête terminée : %s.",
"not_found": "Quête introuvable.",
"invalid_id": "ID de la quête invalide.",
"description": "Ajoute ou termine une quête"
"description": "Ajoute ou termine une quête",
"running": "🇺🇸Quest %s is %s (%s).",
"talking": "🇺🇸Talk %s is %s for main quest %s (%s).",
"state": {
"none": "🇺🇸unknown (none)",
"unstarted": "🇺🇸unfinished (not started, not completed)",
"unfinished": "🇺🇸unfinished (started, not completed)",
"finished": "🇺🇸finished (completed)",
"failed": "🇺🇸finished (completed, but failed)",
"exists": "🇺🇸found",
"not_exists": "🇺🇸not found"
},
"enabled": "Quêtes activées."
},
"group": {
"invalid_groupid": "🇺🇸Invalid group ID.",
"invalid_suiteid": "🇺🇸Invalid suite ID.",
"group_not_found": "🇺🇸Group not found.",
"description": "🇺🇸Alter group loading",
"refreshed": "🇺🇸Group %s refreshed."
},
"cutscene": {
"description": "Joue une cinématique"
},
"sound": {
"description": "🇺🇸Plays a sound"
},
"reload": {
"reload_start": "Rechargement de la configuration.",
@@ -321,7 +354,7 @@
"team": {
"invalid_usage": "Utilisation invalide.",
"invalid_index": "Index invalide.",
"add_too_much": "Ce serveur autorise à avoir au maximum %s avatar(s) dans votre équipe.",
"add_too_much": "Ce serveur autorise à avoir au maximum %d avatar(s) dans votre équipe.",
"failed_to_add_avatar": "Echec de l'ajout de l'avatar a l'ID %s dans votre équipe.",
"failed_to_parse_index": "Echec de l'analyse de l'index index: %s",
"remove_too_much": "Vous ne pouvez pas retirer tous les avatars.",
@@ -329,7 +362,7 @@
"index_out_of_range": "L'index spécifié est en dehors du champ.",
"failed_parse_avatar_id": "Echec de l'analyse de l'ID de l'avatar: %s",
"avatar_already_in_team": "L'avatar est déjà dans votre équipe.",
"avatar_not_found": "L'avatar %s est introuvable.",
"avatar_not_found": "L'avatar %d est introuvable.",
"description": "Modifie votre équipe manuellement."
},
"teleportAll": {
@@ -343,6 +376,17 @@
"success": "%s a été téléporté à %s, %s, %s dans la scène %s.",
"description": "Change la position du joueur"
},
"trialAvatarActivity": {
"description": "Manipuler les fonctionnalités de Trial Avatar Activity. Cela inclut le basculement des états de donjon et de récompense.",
"not_found": "Les données du lecteur d'activité d'avatar d'essai sont introuvables. Peut-être que l'activité n'est pas activée.",
"invalid_param": "Paramètre invalide.",
"schedule_not_found": "Horaire %s introuvable.",
"success_schedule": "ID de planification changé en %s.",
"success_dungeon": "Basculement du statut du donjon de l'avatar %s.",
"success_dungeon_all": "Basculement du statut de donjon de tous les avatars.",
"success_reward": "Basculement du statut de récompense de l'avatar %s.",
"success_reward_all": "Basculement du statut de récompense de tous les avatars."
},
"weather": {
"success": "L'ID de la météo à été défini a %s avec le type de climat %s.",
"status": "L'ID de la météo accutel est %s avec le type de climat %s.",
@@ -362,6 +406,9 @@
"success": "Succès.",
"failure": "Échec, joueur introuvable.",
"description": "Retire le bannissement d'un joueur"
},
"troubleshoot": {
"description": "🇺🇸Generate debugging information for troubleshooting."
}
},
"gacha": {
@@ -394,9 +441,9 @@
"header_monster": "Monstre"
},
"index": {
"title": "Documentation",
"title": "🇺🇸Documentation",
"handbook": "Manuel GM",
"gacha_mapping": "Gacha mapping JSON"
"gacha_mapping": "🇺🇸Gacha mapping JSON"
}
},
"plugin": {
@@ -413,6 +460,10 @@
"enabling_plugin": "Activation du plugin %s",
"enabling_failed": "Impossible d'activer le plugin %s",
"disabling_plugin": "Désactivation du plugin %s",
"disabling_failed": "Impossible de désactiver le plugin %s"
"disabling_failed": "Impossible de désactiver le plugin %s",
"invalid_api": {
"not_present": "🇺🇸Plugin %s does not specify an API version.",
"lower": "🇺🇸Plugin %s is using API version %s, while the server is using API version %s."
}
}
}

View File

@@ -1,7 +1,7 @@
{
"messages": {
"game": {
"address_bind": "Server di gioco avviato su \u001B[1m\u001B[33m%s:%s\u001B[0m",
"address_bind": "Server di gioco avviato su \u001b[1m\u001b[33m%s:%s\u001b[0m",
"port_bind": "Server di gioco avviato sulla porta %s",
"connect": "Client connesso da %s",
"disconnect": "Client disconnesso da %s",
@@ -9,7 +9,7 @@
"command_error": "Errore comando:"
},
"dispatch": {
"address_bind": "[Dispatch] Dispatch server avviato su \u001B[1m\u001B[33m%s:%s\u001B[0m",
"address_bind": "[Dispatch] Dispatch server avviato su \u001b[1m\u001b[33m%s:%s\u001b[0m",
"port_bind": "[Dispatch] Dispatch server avviato sulla porta %s",
"request": "[Dispatch] Client %s %s richiesta: %s",
"keystore": {
@@ -63,7 +63,10 @@
"game_version": "Versione del gioco: %s",
"resources": {
"loading": "Caricamento risorse...",
"finish": "Terminato il caricamento delle risorse."
"finish": "Terminato il caricamento delle risorse.",
"custom": "🇺🇸Find additional resources at: 'Anime-Game-Servers/CustomGCResources'.",
"missing_server": "🇺🇸To fully use questing, it is recommended to add the 'Server' folder.",
"missing_scenes": "🇺🇸To fully use questing, it is recommended to add the 'ScriptSceneData' folder."
}
}
},
@@ -80,19 +83,20 @@
"set_to": "%s impostato su %s.",
"set_for_to": "%s per %s impostato su %s.",
"invalid": {
"amount": "Importo non valido.",
"artifactId": "ID artefatto non valido.",
"avatarId": "ID avatar non valido.",
"avatarLevel": "Livello avatar non valido.",
"entityId": "ID entità non valido.",
"itemId": "ID articolo non valido.",
"itemLevel": "ItemLevel non valido.",
"itemRefinement": "Raffinamento articolo non valido.",
"statValue": "Valore statistica non valido.",
"value_between": "Valore non valido: %s deve essere compreso tra %s e %s.",
"playerId": "ID giocatore non valido.",
"uid": "UID non valido.",
"id": "ID non valido."
"amount": "Importo non valido.",
"artifactId": "ID artefatto non valido.",
"avatarId": "ID avatar non valido.",
"avatarLevel": "Livello avatar non valido.",
"cfgId": "🇺🇸Invalid cfg ID.",
"entityId": "ID entità non valido.",
"itemId": "ID articolo non valido.",
"itemLevel": "ItemLevel non valido.",
"itemRefinement": "Raffinamento articolo non valido.",
"statValue": "Valore statistica non valido.",
"value_between": "Valore non valido: %s deve essere compreso tra %s e %s.",
"playerId": "ID giocatore non valido.",
"uid": "UID non valido.",
"id": "ID non valido."
}
},
"execution": {
@@ -154,7 +158,8 @@
"displays": "Display cancellati per %s.",
"virtuals": "Virtuali cancellate per %s.",
"everything": "Cancellato tutto per %s.",
"description": "Elimina gli oggetti sbloccati non equipaggiati dal tuo inventario. Il valore predefinito è 4* livello 1 raffinamento 1 o inferiore, ma può essere impostato su un livello superiore." },
"description": "Elimina gli oggetti sbloccati non equipaggiati dal tuo inventario. Il valore predefinito è 4* livello 1 raffinamento 1 o inferiore, ma può essere impostato su un livello superiore."
},
"coop": {
"success": "Convocato %s nel mondo di %s.",
"description": "Forza qualcuno a unirsi al mondo degli altri. Se nessuno viene preso di mira, ti manda comunque in modalità cooperativa."
@@ -165,6 +170,10 @@
"in_dungeon_error": "Sei già in quel dungeon.",
"description": "Entra in un dungeon"
},
"entity": {
"description": "🇺🇸Modify an existing entity's properties",
"not_found_error": "🇺🇸Entity does not exist"
},
"give": {
"usage_relic": "Utilizzo: fornire <artifactID> [mainPropID] [<appendPropID>[,<times>]]... [lv<livello 0-20>]",
"illegal_relic": "Questo ID artefatto appartiene a un intervallo nella blacklist, potrebbe non essere quello che volevi.",
@@ -174,7 +183,7 @@
"given_avatar": "Dato %s con livello da %s a %s.",
"giveall_success": "Ha dato tutti gli oggetti con successo.",
"description": "Dà un oggetto a te o al giocatore specificato. Può anche dare tutte le armi, avatar e/o materiali, e può costruire artefatti personalizzati."
},
},
"heal": {
"success": "Tutti i personaggi sono stati curati.",
"description": "Guarisci tutti i personaggi della tua squadra attuale."
@@ -229,7 +238,32 @@
"finished": "Missione completata %s.",
"not_found": "Missione non trovata.",
"invalid_id": "ID missione non valido.",
"description": "Aggiungi o completa missioni"
"description": "Aggiungi o completa missioni",
"running": "🇺🇸Quest %s is %s (%s).",
"talking": "🇺🇸Talk %s is %s for main quest %s (%s).",
"state": {
"none": "🇺🇸unknown (none)",
"unstarted": "🇺🇸unfinished (not started, not completed)",
"unfinished": "🇺🇸unfinished (started, not completed)",
"finished": "🇺🇸finished (completed)",
"failed": "🇺🇸finished (completed, but failed)",
"exists": "🇺🇸found",
"not_exists": "🇺🇸not found"
},
"enabled": "🇺🇸Questing enabled."
},
"group": {
"invalid_groupid": "🇺🇸Invalid group ID.",
"invalid_suiteid": "🇺🇸Invalid suite ID.",
"group_not_found": "🇺🇸Group not found.",
"description": "🇺🇸Alter group loading",
"refreshed": "🇺🇸Group %s refreshed."
},
"cutscene": {
"description": "Riproduce un filmato"
},
"sound": {
"description": "🇺🇸Plays a sound"
},
"reload": {
"reload_start": "Ricarica configurazione.",
@@ -268,35 +302,35 @@
"error": "ERRORE: fase di costruzione %s non valida. Controlla lo stacktrace della console.",
"description": "Invia posta all'utente specificato. L'utilizzo di questo comando cambia in base al suo stato di composizione"
},
"sendMessage": {
"success": "Messaggio inviato.",
"description": "Invia un messaggio a un giocatore come server. Se usato senza target, invia a tutti i giocatori sul server."
},
"setConst": {
"range_error": "Il livello della costellazione deve essere compreso tra 0 e 6.",
"level_error": "Livello costellazione non valido.",
"fail": "Impossibile impostare la costellazione.",
"failed_success": "Le costellazioni per %s sono state impostate su %s. Ricarica la scena per vedere le modifiche.",
"success": "Le costellazioni per %s sono state impostate su %s.",
"successall": "Le costellazioni per tutti i personaggi sono state impostate su %s.",
"description": "Imposta il livello di costellazione per il tuo attuale personaggio attivo"
},
"setFetterLevel": {
"range_error": "Il livello di restrizione deve essere compreso tra 0 e 10.",
"success": "Livello di restrizione impostato su %s.",
"level_error": "Livello restrizione non valido.",
"description": "Imposta il tuo livello di restrizione per il tuo attuale personaggio attivo"
},
"setProp": {
"description": "Imposta le proprietà dell'intero account. Cose come godmode possono essere abilitate in questo modo, oltre a cambiare cose come il pavimento dell'abisso sbloccato e il progresso del pass battaglia.\n\tValori per <prop> (senza distinzione tra maiuscole e minuscole): GodMode | UnlimitedStamina | UnlimitedEnergy | TowerLevel | WorldLevel | BPLevel | SetOpenState | UnsetOpenState | UnlockMap\n\t(cont.) vedi PlayerProperty enum per altri possibili valori, nella forma PROP_MAX_SPRING_VOLUME -> max_spring_volume"
},
"setStats": {
"description": "Imposta la proprietà di combattimento per il tuo personaggio attivo corrente\n\tValori per <stat>: hp | maxhp | def | atk | em | er | crate | cdmg | cdr | heal | heali | shield | defi\n\t(cont.) Elemental DMG Bonus: epyro | ecryo | ehydro | egeo | edendro | eelectro | ephys\n\t(cont.) Elemental RES: respyro | rescryo | reshydro | resgeo | resdendro | reselectro | resphys",
"locked_to": "%s bloccato su %s.",
"locked_for_to": "%s per %s bloccato su %s.",
"unlocked": "%s sbloccato.",
"unlocked_for": "%s per %s sbloccato."
},
"sendMessage": {
"success": "Messaggio inviato.",
"description": "Invia un messaggio a un giocatore come server. Se usato senza target, invia a tutti i giocatori sul server."
},
"setConst": {
"range_error": "Il livello della costellazione deve essere compreso tra 0 e 6.",
"level_error": "Livello costellazione non valido.",
"fail": "Impossibile impostare la costellazione.",
"failed_success": "Le costellazioni per %s sono state impostate su %s. Ricarica la scena per vedere le modifiche.",
"success": "Le costellazioni per %s sono state impostate su %s.",
"successall": "Le costellazioni per tutti i personaggi sono state impostate su %s.",
"description": "Imposta il livello di costellazione per il tuo attuale personaggio attivo"
},
"setFetterLevel": {
"range_error": "Il livello di restrizione deve essere compreso tra 0 e 10.",
"success": "Livello di restrizione impostato su %s.",
"level_error": "Livello restrizione non valido.",
"description": "Imposta il tuo livello di restrizione per il tuo attuale personaggio attivo"
},
"setProp": {
"description": "Imposta le proprietà dell'intero account. Cose come godmode possono essere abilitate in questo modo, oltre a cambiare cose come il pavimento dell'abisso sbloccato e il progresso del pass battaglia.\n\tValori per <prop> (senza distinzione tra maiuscole e minuscole): GodMode | UnlimitedStamina | UnlimitedEnergy | TowerLevel | WorldLevel | BPLevel | SetOpenState | UnsetOpenState | UnlockMap\n\t(cont.) vedi PlayerProperty enum per altri possibili valori, nella forma PROP_MAX_SPRING_VOLUME -> max_spring_volume"
},
"setStats": {
"description": "Imposta la proprietà di combattimento per il tuo personaggio attivo corrente\n\tValori per <stat>: hp | maxhp | def | atk | em | er | crate | cdmg | cdr | heal | heali | shield | defi\n\t(cont.) Elemental DMG Bonus: epyro | ecryo | ehydro | egeo | edendro | eelectro | ephys\n\t(cont.) Elemental RES: respyro | rescryo | reshydro | resgeo | resdendro | reselectro | resphys",
"locked_to": "%s bloccato su %s.",
"locked_for_to": "%s per %s bloccato su %s.",
"unlocked": "%s sbloccato.",
"unlocked_for": "%s per %s sbloccato."
},
"spawn": {
"success": "Evocati %s di %s.",
"limit_reached": "Limite di evocazione della scena raggiunto. Generazione invece di %s entità.",
@@ -342,6 +376,17 @@
"success": "Teletrasportato %s in %s, %s, %s nella scena %s.",
"description": "Cambia la posizione del giocatore"
},
"trialAvatarActivity": {
"description": "Manipolare le funzionalità dell'attività Avatar di prova. Ciò include la commutazione degli stati dei sotterranei e delle ricompense.",
"not_found": "Dati giocatore attività avatar di prova non trovati. Forse l'attività non è abilitata.",
"invalid_param": "Parametro non valido.",
"schedule_not_found": "Programma %s non trovato.",
"success_schedule": "ID programma modificato in %s.",
"success_dungeon": "Stato del dungeon dell'avatar %s attivato.",
"success_dungeon_all": "Modificato lo stato dei dungeon di tutti gli avatar.",
"success_reward": "Stato della ricompensa dell'avatar %s attivato/disattivato.",
"success_reward_all": "Attivato/disattivato lo stato di ricompensa di tutti gli avatar."
},
"weather": {
"success": "Imposta l'ID meteo su %s con il tipo di clima %s.",
"status": "L'ID meteo attuale è %s con il tipo di clima %s.",
@@ -361,6 +406,9 @@
"success": "Successo.",
"failure": "Fallito, giocatore non trovato.",
"description": "Sbanna un giocatore"
},
"troubleshoot": {
"description": "🇺🇸Generate debugging information for troubleshooting."
}
},
"gacha": {
@@ -371,7 +419,7 @@
"available_three_stars": "Articoli a 3 stelle disponibili"
},
"records": {
"title": "Gacha Records",
"title": "🇺🇸Gacha Records",
"date": "Data",
"item": "oggetto"
}
@@ -387,7 +435,7 @@
"header_id": "ID",
"header_command": "Comando",
"header_description": "Descrizione",
"header_avatar": "Avatar",
"header_avatar": "🇺🇸Avatar",
"header_item": "Articolo",
"header_scene": "Scena",
"header_monster": "Mostro"
@@ -399,19 +447,23 @@
}
},
"plugin": {
"directory_failed": "Impossibile creare la directory dei plugin: ",
"unable_to_load": "Impossibile caricare il plug-in.",
"invalid_config": "Il plug-in %s ha un file di configurazione non valido.",
"invalid_main_class": "Il plug-in %s ha una classe principale non valida.",
"missing_config": "Il plug-in %s non ha un file di configurazione valido.",
"failed_to_load_plugin": "Impossibile caricare il plug-in: %s",
"failed_to_load": "Impossibile caricare un plug-in.",
"failed_to_load_dependencies": "Impossibile caricare i plugin con le dipendenze.",
"loading_plugin": "Caricamento plug-in: %s",
"failed_add_id": "Impossibile aggiungere l'identificatore del plug-in: %s",
"enabling_plugin": "Abilitazione plug-in: %s",
"enabling_failed": "Impossibile abilitare il plug-in: %s",
"disabling_plugin": "Disabilitazione plug-in: %s",
"disabling_failed": "Impossibile disabilitare il plug-in: %s"
"directory_failed": "Impossibile creare la directory dei plugin: ",
"unable_to_load": "Impossibile caricare il plug-in.",
"invalid_config": "Il plug-in %s ha un file di configurazione non valido.",
"invalid_main_class": "Il plug-in %s ha una classe principale non valida.",
"missing_config": "Il plug-in %s non ha un file di configurazione valido.",
"failed_to_load_plugin": "Impossibile caricare il plug-in: %s",
"failed_to_load": "Impossibile caricare un plug-in.",
"failed_to_load_dependencies": "Impossibile caricare i plugin con le dipendenze.",
"loading_plugin": "Caricamento plug-in: %s",
"failed_add_id": "Impossibile aggiungere l'identificatore del plug-in: %s",
"enabling_plugin": "Abilitazione plug-in: %s",
"enabling_failed": "Impossibile abilitare il plug-in: %s",
"disabling_plugin": "Disabilitazione plug-in: %s",
"disabling_failed": "Impossibile disabilitare il plug-in: %s",
"invalid_api": {
"not_present": "🇺🇸Plugin %s does not specify an API version.",
"lower": "🇺🇸Plugin %s is using API version %s, while the server is using API version %s."
}
}
}

View File

@@ -63,7 +63,10 @@
"game_version": "ゲームバージョン: %s",
"resources": {
"loading": "resourcesファイルをロード中...",
"finish": "resourcesファイルのロードが完了。"
"finish": "resourcesファイルのロードが完了。",
"custom": "🇺🇸Find additional resources at: 'Anime-Game-Servers/CustomGCResources'.",
"missing_server": "🇺🇸To fully use questing, it is recommended to add the 'Server' folder.",
"missing_scenes": "🇺🇸To fully use questing, it is recommended to add the 'ScriptSceneData' folder."
}
}
},
@@ -84,6 +87,7 @@
"artifactId": "聖遺物IDが無効な値です。",
"avatarId": "キャラIDが無効な値です。",
"avatarLevel": "キャラレベルが無効な値です。",
"cfgId": "🇺🇸Invalid cfg ID.",
"entityId": "エンティティIDが無効な値です。",
"itemId": "アイテムIDが無効な値です。",
"itemLevel": "アイテムレベルが無効な値です。",
@@ -166,6 +170,10 @@
"in_dungeon_error": "あなたはすでにその秘境にいます。",
"description": "秘境に入ります。"
},
"entity": {
"description": "🇺🇸Modify an existing entity's properties",
"not_found_error": "🇺🇸Entity does not exist"
},
"give": {
"usage_relic": "使用方法: give <聖遺物ID> [メインステータスID] [<サブステータスID>[,<強化回数>]]... [lv<レベル 0-20>]",
"illegal_relic": "この聖遺物IDはブラックリストに登録された範囲に属しています。必要な範囲ではない可能性があります。",
@@ -230,7 +238,32 @@
"finished": "クエスト %s を終了しました。",
"not_found": "クエストが見つかりません。",
"invalid_id": "クエストIDが無効です。",
"description": "クエストを追加または終了します。"
"description": "クエストを追加または終了します。",
"running": "🇺🇸Quest %s is %s (%s).",
"talking": "🇺🇸Talk %s is %s for main quest %s (%s).",
"state": {
"none": "🇺🇸unknown (none)",
"unstarted": "🇺🇸unfinished (not started, not completed)",
"unfinished": "🇺🇸unfinished (started, not completed)",
"finished": "🇺🇸finished (completed)",
"failed": "🇺🇸finished (completed, but failed)",
"exists": "🇺🇸found",
"not_exists": "🇺🇸not found"
},
"enabled": "🇺🇸Questing enabled."
},
"group": {
"invalid_groupid": "🇺🇸Invalid group ID.",
"invalid_suiteid": "🇺🇸Invalid suite ID.",
"group_not_found": "🇺🇸Group not found.",
"description": "🇺🇸Alter group loading",
"refreshed": "🇺🇸Group %s refreshed."
},
"cutscene": {
"description": "カットシーンを再生します"
},
"sound": {
"description": "🇺🇸Plays a sound"
},
"reload": {
"reload_start": "設定を再読み込みしています。",
@@ -343,6 +376,17 @@
"success": "%1$s を シーン %5$s の %2$s, %3$s, %4$s にテレポートさせました。",
"description": "プレイヤーの位置を変更します。"
},
"trialAvatarActivity": {
"description": "トライアル アバター アクティビティの機能を操作します。これには、ダンジョンと報酬の状態の切り替えが含まれます。",
"not_found": "試用アバター アクティビティ プレーヤー データが見つかりません。アクティビティが有効になっていない可能性があります。",
"invalid_param": "無効なパラメーター。",
"schedule_not_found": "スケジュール %s が見つかりません。",
"success_schedule": "スケジュール ID を %s に変更しました。",
"success_dungeon": "アバター %s のダンジョン ステータスを切り替えました。",
"success_dungeon_all": "すべてのアバターのダンジョン ステータスを切り替えました。",
"success_reward": "アバター %s の報酬ステータスを切り替えました。",
"success_reward_all": "すべてのアバターの報酬ステータスを切り替えました。"
},
"weather": {
"success": "天気のIDを気候タイプ %2$s の %1$s に設定しました。",
"status": "現在の天気のIDは気候タイプ %2$s の %1$s です。",
@@ -362,6 +406,9 @@
"success": "成功しました。",
"failure": "失敗しました。プレイヤーが見つかりません。",
"description": "プレイヤーのBANを解除します。"
},
"troubleshoot": {
"description": "🇺🇸Generate debugging information for troubleshooting."
}
},
"gacha": {
@@ -379,7 +426,7 @@
},
"documentation": {
"handbook": {
"title": "GM Handbook",
"title": "🇺🇸GM Handbook",
"title_commands": "コマンド",
"title_avatars": "キャラ",
"title_items": "アイテム",
@@ -395,7 +442,7 @@
},
"index": {
"title": "ドキュメント",
"handbook": "GM Handbook",
"handbook": "🇺🇸GM Handbook",
"gacha_mapping": "ガチャマップ JSON"
}
},
@@ -413,6 +460,10 @@
"enabling_plugin": "プラグインを有効にしています: %s",
"enabling_failed": "プラグインの有効化に失敗しました: %s",
"disabling_plugin": "プラグインを無効にしています: %s",
"disabling_failed": "プラグインの無効化に失敗しました: %s"
"disabling_failed": "プラグインの無効化に失敗しました: %s",
"invalid_api": {
"not_present": "🇺🇸Plugin %s does not specify an API version.",
"lower": "🇺🇸Plugin %s is using API version %s, while the server is using API version %s."
}
}
}

View File

@@ -63,7 +63,10 @@
"game_version": "게임 버전: %s",
"resources": {
"loading": "리소스 로딩중...",
"finish": "리소스 로딩완료."
"finish": "리소스 로딩완료.",
"custom": "🇺🇸Find additional resources at: 'Anime-Game-Servers/CustomGCResources'.",
"missing_server": "🇺🇸To fully use questing, it is recommended to add the 'Server' folder.",
"missing_scenes": "🇺🇸To fully use questing, it is recommended to add the 'ScriptSceneData' folder."
}
}
},
@@ -84,6 +87,7 @@
"artifactId": "성유물ID가 잘못되었습니다.",
"avatarId": "캐릭터ID가 잘못되었습니다.",
"avatarLevel": "캐릭터 레벨이 잘못되었습니다.",
"cfgId": "🇺🇸Invalid cfg ID.",
"entityId": "엔티티ID가 잘못되었습니다.",
"itemId": "아이템ID가 잘못되었습니다.",
"itemLevel": "아이템 레벨이 잘못되었습니다.",
@@ -166,6 +170,10 @@
"in_dungeon_error": "이미 당신은 그 던전에 있습니다.",
"description": "던전에 진입합니다."
},
"entity": {
"description": "🇺🇸Modify an existing entity's properties",
"not_found_error": "🇺🇸Entity does not exist"
},
"give": {
"usage_relic": "사용법: give <성유물ID> [mainPropID] [<appendPropID>[,<times>]]... [lv<레벨 0-20>]",
"illegal_relic": "이 성유물ID는 블랙리스트 범위에 있습니다. 원하는 ID가 아닐 수 있습니다.",
@@ -230,7 +238,32 @@
"finished": "%s 퀘스트를 마쳤습니다.",
"not_found": "퀘스트를 찾을 수 없습니다.",
"invalid_id": "퀘스트ID를 찾을 수 없습니다.",
"description": "퀘스트를 추가하거나 완료합니다."
"description": "퀘스트를 추가하거나 완료합니다.",
"running": "🇺🇸Quest %s is %s (%s).",
"talking": "🇺🇸Talk %s is %s for main quest %s (%s).",
"state": {
"none": "🇺🇸unknown (none)",
"unstarted": "🇺🇸unfinished (not started, not completed)",
"unfinished": "🇺🇸unfinished (started, not completed)",
"finished": "🇺🇸finished (completed)",
"failed": "🇺🇸finished (completed, but failed)",
"exists": "🇺🇸found",
"not_exists": "🇺🇸not found"
},
"enabled": "🇺🇸Questing enabled."
},
"group": {
"invalid_groupid": "🇺🇸Invalid group ID.",
"invalid_suiteid": "🇺🇸Invalid suite ID.",
"group_not_found": "🇺🇸Group not found.",
"description": "🇺🇸Alter group loading",
"refreshed": "🇺🇸Group %s refreshed."
},
"cutscene": {
"description": "🇺🇸Plays a cutscene"
},
"sound": {
"description": "🇺🇸Plays a sound"
},
"reload": {
"reload_start": "구성 설정을 다시 불러오는중...",
@@ -262,10 +295,10 @@
"set_message_sender": "메세지 발송자가 '%s'으로 설정되었습니다.\n계속하려면 '/sendmail <itemID|itemName|finish> [amount] [level]'을 사용하십시오.",
"send": "%s 의 %s을 (레벨 %s)을 메세지에 첨부했습니다.\n계속 항목을 추가하거나, '/sendmail finish'을 사용해 메세지를 보낼 수 있습니다..",
"invalid_arguments_please_use": "잘못된 인수입니다.\n '/sendmail %s'을 사용하십시오",
"title": "<title>",
"message": "<message>",
"sender": "<sender>",
"arguments": "<itemID|itemName|finish> [amount] [level]",
"title": "🇺🇸<title>",
"message": "🇺🇸<message>",
"sender": "🇺🇸<sender>",
"arguments": "🇺🇸<itemID|itemName|finish> [amount] [level]",
"error": "오류: 잘못된 시공 단계 %s. Console에서 스택을 확인하십시오.",
"description": "지정된 사용자에게 메세지를 보냅니다. 이 명령어의 사용법은 세부 내용에 따라 달라집니다."
},
@@ -321,7 +354,7 @@
"team": {
"invalid_usage": "잘못된 사용.",
"invalid_index": "잘못된 목차.",
"add_too_much": "팀에 넣을 수 있는 캐릭터 수의 최대는 %s 명 입니다.",
"add_too_much": "팀에 넣을 수 있는 캐릭터 수의 최대는 %d 명 입니다.",
"failed_to_add_avatar": "추가하는데 실패했습니다 캐릭터 ID %s.",
"failed_to_parse_index": "분석에 실패함 index: %s",
"remove_too_much": "팀에는 최소 1명의 캐릭터가 편성 되어야 합니다.",
@@ -329,7 +362,7 @@
"index_out_of_range": "지정된 목차는 범위 밖에 있습니다.",
"failed_parse_avatar_id": "분석에 실패한 캐릭터 ID: %s",
"avatar_already_in_team": "해당 캐릭터는 이미 팀에 포함되어 있습니다.",
"avatar_not_found": "캐릭터 %s 발견되지 않음.",
"avatar_not_found": "캐릭터 %d 발견되지 않음.",
"description": "당신의 팀을 수정으로 수정합니다."
},
"teleportAll": {
@@ -343,6 +376,17 @@
"success": " %s 을(를) %s, %s, %s 로 이동시켰습니다. scene %s.",
"description": "플레이어의 위치를 이동시킵니다."
},
"trialAvatarActivity": {
"description": "평가판 아바타 활동의 기능을 조작합니다. 여기에는 던전 및 보상 상태 전환이 포함됩니다.",
"not_found": "평가판 아바타 활동 플레이어 데이터를 찾을 수 없습니다. 활동이 활성화되지 않았을 수 있습니다.",
"invalid_param": "잘못된 매개 변수.",
"schedule_not_found": "일정 %s을(를) 찾을 수 없습니다.",
"success_schedule": "일정 ID를 %s(으)로 변경했습니다.",
"success_dungeon": "아바타 %s의 던전 상태를 전환했습니다.",
"success_dungeon_all": "모든 아바타의 던전 상태를 전환했습니다.",
"success_reward": "아바타 %s의 보상 상태를 전환했습니다.",
"success_reward_all": "모든 아바타 보상 상태를 전환했습니다."
},
"weather": {
"success": "설정 날씨 ID %s 를 %s 로.",
"status": "현재 날씨 ID 는 %s 기후는 %s입니다.",
@@ -362,6 +406,9 @@
"success": "성공.",
"failure": "실패, 플레이어를 찾을 수 없습니다.",
"description": "플레이어에 대한 밴을 해제합니다"
},
"troubleshoot": {
"description": "🇺🇸Generate debugging information for troubleshooting."
}
},
"gacha": {
@@ -395,8 +442,8 @@
},
"index": {
"title": "문서",
"handbook": "GM Handbook",
"gacha_mapping": "Gacha mapping JSON"
"handbook": "🇺🇸GM Handbook",
"gacha_mapping": "🇺🇸Gacha mapping JSON"
}
},
"plugin": {
@@ -413,6 +460,10 @@
"enabling_plugin": "플러그인을 활성화했습니다: %s",
"enabling_failed": "플러그인을 활성화하는데 실패했습니다: %s",
"disabling_plugin": "플러그인을 비활성화했습니다: %s",
"disabling_failed": "플러그인을 비활성화하는데 실패했습니다: %s"
"disabling_failed": "플러그인을 비활성화하는데 실패했습니다: %s",
"invalid_api": {
"not_present": "🇺🇸Plugin %s does not specify an API version.",
"lower": "🇺🇸Plugin %s is using API version %s, while the server is using API version %s."
}
}
}

View File

@@ -63,7 +63,10 @@
"game_version": "Wersja gry: %s",
"resources": {
"loading": "Ładowanie zasobów...",
"finish": "Załadowano zasoby."
"finish": "Załadowano zasoby.",
"custom": "🇺🇸Find additional resources at: 'Anime-Game-Servers/CustomGCResources'.",
"missing_server": "🇺🇸To fully use questing, it is recommended to add the 'Server' folder.",
"missing_scenes": "🇺🇸To fully use questing, it is recommended to add the 'ScriptSceneData' folder."
}
}
},
@@ -84,6 +87,7 @@
"artifactId": "Błędne ID artefaktu.",
"avatarId": "Błędne ID postaci.",
"avatarLevel": "Błędny poziom postaci.",
"cfgId": "🇺🇸Invalid cfg ID.",
"entityId": "Błędne ID obiektu.",
"itemId": "Błędne ID przedmiotu.",
"itemLevel": "Błędny poziom przedmiotu.",
@@ -166,6 +170,10 @@
"in_dungeon_error": "Wskazany gracz już jest w tym lochu.",
"description": "Zmień loch, w którym ma się znajdować wskazany gracz."
},
"entity": {
"description": "🇺🇸Modify an existing entity's properties",
"not_found_error": "🇺🇸Entity does not exist"
},
"give": {
"usage_relic": "give <ID reliktu> [ID pierwszego przedmiotu] [<ID drugiego przedmiotu>[, <ile razy je połączyć>]]... [lv<poziom od 0 do 20>]",
"illegal_relic": "Ten ID reliktu znajduje się na czarnej liście i może być nie tym, czego szukasz.",
@@ -230,7 +238,32 @@
"finished": "Zadanie %s zostało zakończone.",
"not_found": "Nie ma zadania o podanym ID.",
"invalid_id": "Błędny format ID zadania.",
"description": "Dodaj lub wykonaj wskazane zadanie."
"description": "Dodaj lub wykonaj wskazane zadanie.",
"running": "🇺🇸Quest %s is %s (%s).",
"talking": "🇺🇸Talk %s is %s for main quest %s (%s).",
"state": {
"none": "🇺🇸unknown (none)",
"unstarted": "🇺🇸unfinished (not started, not completed)",
"unfinished": "🇺🇸unfinished (started, not completed)",
"finished": "🇺🇸finished (completed)",
"failed": "🇺🇸finished (completed, but failed)",
"exists": "🇺🇸found",
"not_exists": "🇺🇸not found"
},
"enabled": "🇺🇸Questing enabled."
},
"group": {
"invalid_groupid": "🇺🇸Invalid group ID.",
"invalid_suiteid": "🇺🇸Invalid suite ID.",
"group_not_found": "🇺🇸Group not found.",
"description": "🇺🇸Alter group loading",
"refreshed": "🇺🇸Group %s refreshed."
},
"cutscene": {
"description": "Odtwarza przerywnik filmowy"
},
"sound": {
"description": "🇺🇸Plays a sound"
},
"reload": {
"reload_start": "Ponowne ładowanie konfiguracji...",
@@ -321,7 +354,7 @@
"team": {
"invalid_usage": "Nieprawidłowe użycie komendy.",
"invalid_index": "Błędny indeks.",
"add_too_much": "Można mieć maksymalnie %s postaci w zespole.",
"add_too_much": "Można mieć maksymalnie %d postaci w zespole.",
"failed_to_add_avatar": "Błąd podczas dodawania awatara o ID \"%s\".",
"failed_to_parse_index": "Błąd podczas przetwarzania indeksu \"%s\".",
"remove_too_much": "Nie możesz usunąć wszystkich awatarów w zespole.",
@@ -329,7 +362,7 @@
"index_out_of_range": "Podany indeks nie mieści się w swoim zakresie.",
"failed_parse_avatar_id": "Błędny ID awatara \"%s\".",
"avatar_already_in_team": "Podany awatar jest już w zespole wybranego gracza.",
"avatar_not_found": "Awatar o ID \"%s\" nie istnieje.",
"avatar_not_found": "Awatar o ID \"%d\" nie istnieje.",
"description": "Modyfikuj zespół wybranego gracza."
},
"teleportAll": {
@@ -343,6 +376,17 @@
"success": "Gracz %s został przeniesiony do pozycji (%s, %s, %s) w scenie o ID %s.",
"description": "Przemieść wybranego gracza do podanej pozycji w podanej scenie."
},
"trialAvatarActivity": {
"description": "Manipuluj funkcjami Trial Avatar Activity. Obejmuje to przełączanie stanów lochów i nagród.",
"not_found": "Nie znaleziono danych gracza o aktywności awatara w wersji próbnej. Być może aktywność nie jest włączona.",
"invalid_param": "Niewłaściwy parametr.",
"schedule_not_found": "Nie znaleziono harmonogramu %s.",
"success_schedule": "Zmieniono identyfikator harmonogramu na %s.",
"success_dungeon": "Przełączono stan lochów awatara %s.",
"success_dungeon_all": "Zmieniono stan lochów wszystkich awatarów.",
"success_reward": "Zmieniono status nagrody awatara %s.",
"success_reward_all": "Zmieniono status nagrody dla wszystkich awatarów."
},
"weather": {
"success": "ID pogody został ustawiony na %s, a typ klimatu na %s.",
"status": "Bieżące ID pogody to %s, a typ klimatu to %s.",
@@ -362,6 +406,9 @@
"success": "Pomyślnie odbanowano podanego gracza.",
"failure": "Gracz o podanym ID nie istnieje.",
"description": "Odbanuj podanego gracza."
},
"troubleshoot": {
"description": "🇺🇸Generate debugging information for troubleshooting."
}
},
"gacha": {
@@ -413,6 +460,10 @@
"enabling_plugin": "Włączanie pluginu: %s",
"enabling_failed": "Nie udało się załączyć pluginu: %s",
"disabling_plugin": "Wyłączanie pluginu: %s",
"disabling_failed": "Nie udało się wyłączyć pluginu: %s"
"disabling_failed": "Nie udało się wyłączyć pluginu: %s",
"invalid_api": {
"not_present": "🇺🇸Plugin %s does not specify an API version.",
"lower": "🇺🇸Plugin %s is using API version %s, while the server is using API version %s."
}
}
}

View File

@@ -63,7 +63,10 @@
"game_version": "Versiunea de joc: %s",
"resources": {
"loading": "Se încarcă resursele...",
"finish": "Resursele au fost încărcate."
"finish": "Resursele au fost încărcate.",
"custom": "🇺🇸Find additional resources at: 'Anime-Game-Servers/CustomGCResources'.",
"missing_server": "🇺🇸To fully use questing, it is recommended to add the 'Server' folder.",
"missing_scenes": "🇺🇸To fully use questing, it is recommended to add the 'ScriptSceneData' folder."
}
}
},
@@ -84,6 +87,7 @@
"artifactId": "ID de artefact invalid.",
"avatarId": "ID de avatar invalid.",
"avatarLevel": "avatarLevel invalid.",
"cfgId": "🇺🇸Invalid cfg ID.",
"entityId": "ID de entitate invalid.",
"itemId": "ID-ul articolului invalid.",
"itemLevel": "itemLevel invalid.",
@@ -166,6 +170,10 @@
"in_dungeon_error": "Ești deja în acea temniță.",
"description": "Intră într-o temniță."
},
"entity": {
"description": "🇺🇸Modify an existing entity's properties",
"not_found_error": "🇺🇸Entity does not exist"
},
"give": {
"usage_relic": "Utilizare: give <artifactID> [mainPropID] [<appendPropID>[,<t>]]... [lv<nivel 0-20>]",
"illegal_relic": "Acest ID de artefact aparține unui interval de pe lista neagră, este posibil să nu fie cel pe care l-ați dorit.",
@@ -230,7 +238,32 @@
"finished": "Ați terminat misiunea %s.",
"not_found": "Misiunea nu a fost găsită.",
"invalid_id": "ID-ul misiunii nu a fost găsit.",
"description": "Adaugă sau termină misiuni"
"description": "Adaugă sau termină misiuni",
"running": "🇺🇸Quest %s is %s (%s).",
"talking": "🇺🇸Talk %s is %s for main quest %s (%s).",
"state": {
"none": "🇺🇸unknown (none)",
"unstarted": "🇺🇸unfinished (not started, not completed)",
"unfinished": "🇺🇸unfinished (started, not completed)",
"finished": "🇺🇸finished (completed)",
"failed": "🇺🇸finished (completed, but failed)",
"exists": "🇺🇸found",
"not_exists": "🇺🇸not found"
},
"enabled": "🇺🇸Questing enabled."
},
"group": {
"invalid_groupid": "🇺🇸Invalid group ID.",
"invalid_suiteid": "🇺🇸Invalid suite ID.",
"group_not_found": "🇺🇸Group not found.",
"description": "🇺🇸Alter group loading",
"refreshed": "🇺🇸Group %s refreshed."
},
"cutscene": {
"description": "🇺🇸Plays a cutscene"
},
"sound": {
"description": "🇺🇸Plays a sound"
},
"reload": {
"reload_start": "Se reîncarcă configurația.",
@@ -329,7 +362,7 @@
"index_out_of_range": "Indexul specificat este în afara intervalului.",
"failed_parse_avatar_id": "Nu a reușit să analizeze id-ul avatarului: %s",
"avatar_already_in_team": "Avatarul este deja în echipă.",
"avatar_not_found": "Avatarul %s nu a fost găsit.",
"avatar_not_found": "Avatarul %d nu a fost găsit.",
"description": "Modifică-ți echipa manual."
},
"teleportAll": {
@@ -343,6 +376,17 @@
"success": "Teleportat %s la %s, %s, %s în scena %s.",
"description": "Schimbă poziția jucătorului."
},
"trialAvatarActivity": {
"description": "Manipulați funcționalitățile activității de probă avatarului. Aceasta include comutarea stărilor de temniță și recompensă.",
"not_found": "Nie znaleziono danych gracza o aktywności awatara w wersji próbnej. Być może aktywność nie jest włączona.",
"invalid_param": "Niewłaściwy parametr.",
"schedule_not_found": "Nie znaleziono harmonogramu %s.",
"success_schedule": "Zmieniono identyfikator harmonogramu na %s.",
"success_dungeon": "Zmieniono stan lochów awatara %s.",
"success_dungeon_all": "Zmieniono stan lochów wszystkich awatarów.",
"success_reward": "Zmieniono status nagrody awatara %s.",
"success_reward_all": "Zmieniono status nagrody dla wszystkich awatarów."
},
"weather": {
"success": "A setat ID-ul meteo la %s cu tipul de climă %s",
"status": "ID-ul actual al vremii este %s cu tipul de climă %s",
@@ -362,6 +406,9 @@
"success": "Succes.",
"failure": "Eșec, jucătorul nu a fost găsit.",
"description": "Dezbancarea unui jucător"
},
"troubleshoot": {
"description": "🇺🇸Generate debugging information for troubleshooting."
}
},
"gacha": {
@@ -413,6 +460,10 @@
"enabling_plugin": "🇺🇸Enabling plugin: %s",
"enabling_failed": "🇺🇸Failed to enable plugin: %s",
"disabling_plugin": "🇺🇸Disabling plugin: %s",
"disabling_failed": "🇺🇸Failed to disable plugin: %s"
"disabling_failed": "🇺🇸Failed to disable plugin: %s",
"invalid_api": {
"not_present": "🇺🇸Plugin %s does not specify an API version.",
"lower": "🇺🇸Plugin %s is using API version %s, while the server is using API version %s."
}
}
}

View File

@@ -63,7 +63,10 @@
"game_version": "Версия игры: %s",
"resources": {
"loading": "Загружаем ресурсы...",
"finish": "Загрузка ресурсов завершена."
"finish": "Загрузка ресурсов завершена.",
"custom": "🇺🇸Find additional resources at: 'Anime-Game-Servers/CustomGCResources'.",
"missing_server": "🇺🇸To fully use questing, it is recommended to add the 'Server' folder.",
"missing_scenes": "🇺🇸To fully use questing, it is recommended to add the 'ScriptSceneData' folder."
}
}
},
@@ -84,6 +87,7 @@
"artifactId": "Некорректный ID артефакта.",
"avatarId": "Некорректный ID персонажа.",
"avatarLevel": "Некорректный уровень персонажа (avatarLevel).",
"cfgId": "🇺🇸Invalid cfg ID.",
"entityId": "Некорректный ID сущности.",
"itemId": "Некорректный ID предмета.",
"itemLevel": "Некорректный уровень предмета (itemLevel).",
@@ -166,6 +170,10 @@
"in_dungeon_error": "Вы уже в этом подземелье.",
"description": "Позволяет войти в подземелье"
},
"entity": {
"description": "🇺🇸Modify an existing entity's properties",
"not_found_error": "🇺🇸Entity does not exist"
},
"give": {
"usage_relic": "Применение: give <ID_артефакта> [ID_глав_хар-ки] [<ID доп_хар-ки>[,<раз>]]... [lv<уровень 0-20>]",
"illegal_relic": "Данный ID_артефакта находится в черном списке. Возможно, это не то, что вы хотите получить.",
@@ -230,7 +238,32 @@
"finished": "Квест %s был завершен.",
"not_found": "Квест не найден.",
"invalid_id": "Некорректный ID квеста.",
"description": "Добавляет (add) или завершает (finish) квесты"
"description": "Добавляет (add) или завершает (finish) квесты",
"running": "🇺🇸Quest %s is %s (%s).",
"talking": "🇺🇸Talk %s is %s for main quest %s (%s).",
"state": {
"none": "🇺🇸unknown (none)",
"unstarted": "🇺🇸unfinished (not started, not completed)",
"unfinished": "🇺🇸unfinished (started, not completed)",
"finished": "🇺🇸finished (completed)",
"failed": "🇺🇸finished (completed, but failed)",
"exists": "🇺🇸found",
"not_exists": "🇺🇸not found"
},
"enabled": "🇺🇸Questing enabled."
},
"group": {
"invalid_groupid": "🇺🇸Invalid group ID.",
"invalid_suiteid": "🇺🇸Invalid suite ID.",
"group_not_found": "🇺🇸Group not found.",
"description": "🇺🇸Alter group loading",
"refreshed": "🇺🇸Group %s refreshed."
},
"cutscene": {
"description": "Odtwarza przerywnik filmowy"
},
"sound": {
"description": "🇺🇸Plays a sound"
},
"reload": {
"reload_start": "Перезагружаем файл конфигурации.",
@@ -343,6 +376,17 @@
"success": "Игрок %s был телепортирован по координатам %s, %s, %s в сцене %s.",
"description": "Изменяет местоположение игрока"
},
"trialAvatarActivity": {
"description": "Управление функциями пробного аватара. Это включает в себя переключение состояний подземелий и наград.",
"not_found": "Данные об активности пробного аватара игрока не найдены. Возможно, активность не включена.",
"invalid_param": "Неверный параметр.",
"schedule_not_found": "Расписание %s не найдено.",
"success_schedule": "Идентификатор расписания изменен на %s.",
"success_dungeon": "Переключен статус подземелья аватара %s.",
"success_dungeon_all": "Переключен статус подземелий всех аватаров.",
"success_reward": "Переключен статус награды аватара %s.",
"success_reward_all": "Переключен статус вознаграждения всех аватаров."
},
"weather": {
"success": "Установлен ID погоды %s, тип климата: %s.",
"status": "Текущий ID погоды: %s, тип климата: %s.",
@@ -362,6 +406,9 @@
"success": "Успех.",
"failure": "Неудача, игрок не найден.",
"description": "Разблокировывает доступ к серверу (\"разбанивает\")"
},
"troubleshoot": {
"description": "🇺🇸Generate debugging information for troubleshooting."
}
},
"gacha": {
@@ -413,6 +460,10 @@
"enabling_plugin": "Включаем Плагин: %s",
"enabling_failed": "Ошибка включения Плагина: %s",
"disabling_plugin": "Отключаем Плагин: %s",
"disabling_failed": "Ошибка отключения Плагина: %s"
"disabling_failed": "Ошибка отключения Плагина: %s",
"invalid_api": {
"not_present": "🇺🇸Plugin %s does not specify an API version.",
"lower": "🇺🇸Plugin %s is using API version %s, while the server is using API version %s."
}
}
}

View File

@@ -2,10 +2,10 @@
"messages": {
"game": {
"address_bind": "游戏服务器启动于 \u001b[1m\u001b[33m%s:%s\u001b[0m",
"port_bind": "游戏服务器已在端口 %s 上启动",
"connect": "客户端 %s 已连接",
"disconnect": "客户端 %s 已断开连接",
"game_update_error": "游戏更新时发生错误",
"port_bind": "游戏服务器已在端口 %s 上启动",
"connect": "客户端 %s 已连接",
"disconnect": "客户端 %s 已断开连接",
"game_update_error": "游戏更新时发生错误",
"command_error": "命令发生错误:"
},
"dispatch": {
@@ -14,12 +14,12 @@
"request": "[Dispatch] 客户端 %s 请求:%s %s",
"keystore": {
"general_error": "[Dispatch] 加载 keystore 文件时发生错误!",
"password_error": "[Dispatch] 加载 keystore 失败。正在尝试使用 keystore 默认密码...",
"no_keystore_error": "[Dispatch] 未找到 SSL 证书!已降级到 HTTP 模式",
"default_password": "[Dispatch] 成功加载 keystore 默认密码。请考虑将 config.json 中默认密码设置为 123456"
"password_error": "[Dispatch] 加载 keystore 文件失败。正在尝试使用 keystore 默认密码...",
"no_keystore_error": "[Dispatch] 未找到 SSL 证书!已回滚到 HTTP 模式",
"default_password": "[Dispatch] 成功加载 keystore 默认密码。请考虑将 config.json 中默认密码设置为 123456"
},
"authentication": {
"default_unable_to_verify": "[Authentication] 称为 verifyUser 的方法在默认验证程序中不可用"
"default_unable_to_verify": "[Authentication] 一些称为 verifyUser 的方法在默认验证程序中不可用"
},
"no_commands_error": "仅 Dispatch 模式不支持使用命令",
"unhandled_request_error": "[Dispatch] 潜在的未处理请求:%s %s",
@@ -31,7 +31,7 @@
"login_token_error": "[Dispatch] 客户端 %s 通过 token 登录失败",
"login_token_success": "[Dispatch] 客户端 %s 已通过 token 登录UID 为 %s",
"login_password_error": "[Dispatch] 客户端 %s 无法通过密码登录",
"login_password_storage_error": "[Dispatch] 客户端 %s 无法登录! 因为数据库中没有密码",
"login_password_storage_error": "[Dispatch] 客户端 %s 数据库中没有密码而无法登录",
"combo_token_success": "[Dispatch] 客户端 %s 成功交换 token",
"combo_token_error": "[Dispatch] 客户端 %s 交换 token 失败",
"account_login_create_success": "[Dispatch] 客户端 %s 登录失败:已注册 UID 为 %s 的账号",
@@ -53,17 +53,20 @@
"starting": "正在启动 Grasscutter...",
"shutdown": "正在关闭...",
"done": "加载完成!输入 \"help\" 查看命令列表",
"error": "发生了一个错误",
"error": "发生了一个错误",
"welcome": "欢迎使用 Grasscutter",
"run_mode_error": "无效的服务器运行模式:%s",
"run_mode_error": "无效的服务器运行模式:%s",
"run_mode_help": "服务器运行模式必须为 'HYBRID'(混合)、'DISPATCH_ONLY'(仅 Dispatch) 或 'GAME_ONLY'(仅游戏)。Grasscutter 启动失败...",
"create_resources": "正在创建 resources 目录...",
"resources_error": "请将 BinOutput 和 ExcelBinOutput 复制到 resources 目录",
"resources_error": "请将 BinOutput 和 ExcelBinOutput 复制到 resources 目录",
"version": "Grasscutter 版本:%s-%s",
"game_version": "游戏版本:%s",
"resources": {
"loading": "正在加载 resources...",
"finish": "完成加载 resources"
"finish": "完成加载 resources",
"custom": "在 'Anime-Game-Servers/CustomGCResources' 找到额外的 resources",
"missing_server": "为完整使用任务,推荐添加 'Server' 目录",
"missing_scenes": "为完整使用任务,推荐添加 'ScriptSceneData' 目录"
}
}
},
@@ -78,28 +81,29 @@
"no_usage_specified": "未指定用法",
"no_description_specified": "未指定说明",
"set_to": "%s 已设为 %s。",
"set_for_to": "%s [来自 %s] 已设为 %s。",
"set_for_to": "%s [玩家 %s] 已设为 %s。",
"invalid": {
"amount": "无效的数量。",
"artifactId": "无效的圣遗物ID。",
"avatarId": "无效的角色ID。",
"artifactId": "无效的圣遗物 ID。",
"avatarId": "无效的角色 ID。",
"avatarLevel": "无效的角色等级。",
"entityId": "无效的实体ID。",
"itemId": "无效的物品ID。",
"cfgId": "无效的 cfg ID。",
"entityId": "无效的实体 ID。",
"itemId": "无效的物品 ID。",
"itemLevel": "无效的物品等级。",
"itemRefinement": "无效的物品精炼等级。",
"statValue": "无效的属性值。",
"value_between": "无效的数值:%s 必须在 %s 和 %s 之间。",
"playerId": "无效的玩家ID。",
"uid": "无效的UID。",
"id": "无效的ID。"
"playerId": "无效的玩家 ID。",
"uid": "无效的 UID。",
"id": "无效的 ID。"
}
},
"execution": {
"usage_prefix": "用法:",
"player_exist_error": "玩家不存在。",
"player_offline_error": "玩家已离线。",
"item_player_exist_error": "无效的物品/玩家UID。",
"item_player_exist_error": "无效的物品/玩家 UID。",
"player_exist_offline_error": "玩家不存在或已离线。",
"argument_error": "无效的参数。",
"clear_target": "目标已清除。",
@@ -117,7 +121,7 @@
"success": "成功"
},
"account": {
"invalid": "无效的UID。",
"invalid": "无效的 UID。",
"exists": "具有此用户名和/或 UID 的账号已存在。",
"create": "已创建 UID 为 %s 的账号。",
"delete": "账号已删除。",
@@ -126,22 +130,22 @@
},
"achievement": {
"success": {
"grant": "🇺🇸Granted the achievement to %s.",
"revoke": "🇺🇸Revoked the achievement from %s.",
"progress": "🇺🇸Set progress of %s's achievement(id: %s) to %s.",
"grantall": "🇺🇸Granted %s achievement(s) to %s.",
"revokeall": "🇺🇸Revoked %s achievement(s) from %s."
"grant": "已为 %s 授予成就。",
"revoke": "已撤销 %s 的成就。",
"progress": "已设置 %s 的成就进度(ID %s) %s",
"grantall": "已授予 %s 条成就 [玩家 %s]。",
"revokeall": "已撤销 %s 条成就 [玩家 %s]。"
},
"fail": {
"achievement_not_found": "🇺🇸Achievement not found.",
"already_achieved": "🇺🇸%s has already achieved the achievement.",
"not_yet_achieved": "🇺🇸%s hasn't achieved the achievement yet."
"achievement_not_found": "未找到成就。",
"already_achieved": "%s 已经达成了成就。",
"not_yet_achieved": "%s 还未达成成就。"
},
"description": "🇺🇸Grant, Revoke or Progress achievements."
"description": "达成、撤销成就或设置成就进度"
},
"announce": {
"send_success": "成功发送了一则公告,你可以通过 /a revoke %s 撤销。",
"refresh_success": "成功刷新了公告配置[共 %s 个]",
"refresh_success": "成功刷新了公告配置 [共 %s 个]",
"revoke_done": "尝试撤回公告 %s。",
"not_found": "找不到公告 %s。",
"description": "向所有在线玩家发送公告,或者管理服务器的公告"
@@ -166,11 +170,15 @@
"in_dungeon_error": "你已经在这个秘境中了。",
"description": "进入指定秘境"
},
"entity": {
"description": "编辑现存实体的属性",
"not_found_error": "实体不存在。"
},
"give": {
"usage_relic": "用法give <圣遗物ID> [主词条ID] [<副词条ID>[,<强化次数>]]... [lv<等级 0-20>]",
"illegal_relic": "此圣遗物ID属于黑名单范围也许不是你想要的。",
"usage_relic": "用法give <圣遗物 ID> [主词条 ID] [<副词条 ID>[,<强化次数>]]... [lv<等级 0-20>]",
"illegal_relic": "此圣遗物 ID 属于黑名单范围,也许不是你想要的。",
"given": "已将 %s 个 %s 给予 %s。",
"given_with_level_and_refinement": "已将 %s [等级 %s, 精炼 %s] %s 个给予 %s。",
"given_with_level_and_refinement": "已将 %s [等级 %s精炼 %s] %s 个给予 %s。",
"given_level": "已将 %s [等级 %s] %s 个给予 %s。",
"given_avatar": "已将角色 %s [等级 %s] 给与 %s。",
"giveall_success": "成功给予全部物品。",
@@ -185,7 +193,7 @@
"available_commands": "可用命令:",
"tip_need_permission": "所需权限:",
"tip_need_no_permission": "无",
"tip_permission_targeted": " (对其他玩家使用这个命令还需要权限 %s)",
"tip_permission_targeted": "(对其他玩家使用这个命令还需要权限 %s)",
"warn_player_has_no_permission": "注意:你没有执行这个命令的权限。",
"description": "发送帮助信息或显示指定命令的信息"
},
@@ -196,11 +204,11 @@
},
"killall": {
"scene_not_found_in_player_world": "未在玩家世界中找到此场景。",
"kill_monsters_in_scene": "已杀死 %s 个怪物 [场景ID: %s ]",
"kill_monsters_in_scene": "已杀死 %s 个怪物 [场景 ID%s]。",
"description": "杀死所有怪物"
},
"killCharacter": {
"success": "已杀死 %s 当前角色。",
"success": "已杀死 %s 当前角色。",
"description": "杀死玩家当前角色"
},
"language": {
@@ -222,15 +230,40 @@
"description": "添加或移除指定玩家的权限"
},
"position": {
"success": "坐标:%s, %s, %s\n旋转%s, %s, %s\n场景ID%s",
"success": "坐标:%s, %s, %s\n旋转%s, %s, %s\n场景 ID%s",
"description": "获取所在位置和旋转信息"
},
"quest": {
"added": "已添加任务 %s。",
"finished": "已完成任务 %s。",
"not_found": "任务不存在。",
"invalid_id": "无效的任务ID。",
"description": "添加或完成任务"
"invalid_id": "无效的任务 ID。",
"description": "添加或完成任务",
"running": "任务 %s 的状态为 %s (%s)。",
"talking": "对话 %s 的状态为 %s [主要任务 %s] (%s)。",
"state": {
"none": "未知(无)",
"unstarted": "未完成(未开始,未结束)",
"unfinished": "未完成(已开始,未结束)",
"finished": "已完成(已结束)",
"failed": "已完成(已结束,失败)",
"exists": "存在",
"not_exists": "未找到"
},
"enabled": "任务已启用。"
},
"group": {
"invalid_groupid": "无效的 group ID。",
"invalid_suiteid": "无效的 suite ID。",
"group_not_found": "Group 不存在。",
"description": "更改 group 的加载",
"refreshed": "Group %s 已刷新。"
},
"cutscene": {
"description": "播放过场动画"
},
"sound": {
"description": "播放声音"
},
"reload": {
"reload_start": "正在重载配置文件和数据...",
@@ -238,7 +271,7 @@
"description": "重载配置文件和数据"
},
"resetConst": {
"reset_all": "重置所有角色的命之座。",
"reset_all": "重置所有角色的命之座。",
"success": "已重置 %s 的命之座,重新登录后生效。",
"description": "重置当前角色的命之座,执行命令后需重新登录以生效"
},
@@ -247,25 +280,25 @@
"description": "重置指定玩家的商店刷新时间"
},
"sendMail": {
"give_usage": "使用:/give <UID> <物品ID|物品名称> [数量] [等级] [精炼等级]",
"give_usage": "使用:/give <UID> <物品 ID|物品名称> [数量] [等级] [精炼等级]",
"user_not_exist": "玩家 '%s' 不存在。",
"start_composition": "开始撰写邮件。\n请使用 '/sendmail <标题>' 继续。\n你可以随时使用 '/sendmail stop' 停止。",
"templates": "邮件模板尚未实装...",
"invalid_arguments": "无效的参数。",
"send_cancel": "取消发送邮件",
"send_cancel": "取消发送邮件",
"send_done": "已将邮件发送给 %s",
"send_all_done": "邮件已发送给所有人!",
"not_composition_end": "邮件撰写未到最后阶段。\n请使用 '/sendmail %s' 继续,或使用 '/sendmail stop' 停止。",
"please_use": "请使用 '/sendmail %s'",
"set_title": "成功将邮件标题设为 '%s'。\n使用 '/sendmail <正文>' 来设置邮件内容。",
"set_contents": "成功将邮件内容设为 '%s'。\n使用 '/sendmail <发件人>' 来设置发件人。",
"set_message_sender": "发件人已设为 '%s'。\n使用 '/sendmail <物品ID|物品名称|finish> [数量] [等级]' 来添加附件。",
"set_message_sender": "发件人已设为 '%s'。\n使用 '/sendmail <物品 ID|物品名称|finish> [数量] [等级]' 来添加附件。",
"send": "已添加 %s 个 %s [等级 %s] 附件。\n如果没有要继续添加的附件请使用 `/sendmail finish` 来发送邮件。",
"invalid_arguments_please_use": "无效的参数。\n请使用 '/sendmail %s'",
"title": "<标题>",
"message": "<正文>",
"sender": "<发件人>",
"arguments": "<物品ID|物品名称|finish> [数量] [等级]",
"arguments": "<物品 ID|物品名称|finish> [数量] [等级]",
"error": "错误:无效的撰写阶段 %s。需要 StackTrace 请查看控制台。",
"description": "向指定用户发送邮件。此命令的用法会根据撰写阶段而改变"
},
@@ -289,14 +322,14 @@
"description": "设置当前角色的好感度等级"
},
"setProp": {
"description": "设置账号的状态。比如可以通过此命令启用 godmode也可以解锁深渊或更改纪行等级\n\t可更改的状态列表godmode(上帝模式)|nostamina(无限体力)|unlimitedenergy(无限能量)|abyss(深渊)|worldlevel(世界等级)|bplevel(纪行等级)\n\t查看 PlayerProperty enum 以获得其他数值,格式为 PROP_MAX_SPRING_VOLUME -> max_spring_volume"
"description": "设置账号的状态。比如可以通过此命令启用 GodMode也可以解锁深渊或更改纪行等级\n\t可更改的状态列表(不区分大小写)GodMode(上帝模式)|UnlimitedStamina(无限体力)|UnlimitedEnergy(无限能量)|TowerLevel(深渊)|WorldLevel(世界等级)|BPLevel(纪行等级)|SetOpenState(设置开放状态)|UnsetOpenState(取消开放状态)|UnlockMap(解锁地图)\n\t查看 PlayerProperty enum 以获得其他数值,格式为 PROP_MAX_SPRING_VOLUME -> max_spring_volume"
},
"setStats": {
"description": "设置当前角色的属性\n\t可更改的属性列表hp(生命值)|maxhp(最大生命值)|def(防御力)|atk(攻击力)|em(元素精通)|er(元素充能效率)|crate(暴击率)|cdmg(暴击伤害)|cdr(冷却缩减)|heal(治疗加成)|heali(受治疗加成)|shield(护盾强效)|defi(无视防御)\n\t元素增伤epyro(火)|ecryo(冰)|ehydro(水)|egeo(岩)|edendro(草)|eelectro(雷)|ephys(物理)\n\t元素抗性respyro(火)|rescryo(冰)|reshydro(水)|resgeo(岩)|resdendro(草)|reselectro(雷)|resphys(物理)",
"locked_to": "%s 已锁定为%s。",
"locked_for_to": "%s [来自 %s] 已锁定为%s。",
"locked_to": "%s 已锁定为 %s。",
"locked_for_to": "%s [玩家 %s] 已锁定为 %s。",
"unlocked": "%s 已解锁。",
"unlocked_for": "%s [来自 %s] 已解锁。"
"unlocked_for": "%s [玩家 %s] 已解锁。"
},
"spawn": {
"success": "已生成 %s 个 %s。",
@@ -309,9 +342,9 @@
},
"talent": {
"out_of_range": "无效的天赋等级。天赋等级必须在 1-15 之间。",
"set_id": "修改技能 %s - \"%s\" %s。",
"set_id": "修改技能 %s - \"%s\" %s。",
"id_desc": "技能 %s - \"%s\" - \"%s\"",
"invalid_skill_id": "无效的技能ID。",
"invalid_skill_id": "无效的技能 ID。",
"invalid_level": "无效的天赋等级。",
"normal_attack_id": "普通攻击的 ID 为 %s。",
"e_skill_id": "元素战技的 ID 为 %s。",
@@ -322,12 +355,12 @@
"invalid_usage": "无效的用法。",
"invalid_index": "无效的索引。",
"add_too_much": "服务端仅允许你队伍里至多有 %s 名角色。",
"failed_to_add_avatar": "无法根据ID %s 添加角色。",
"failed_to_add_avatar": "无法根据 ID %s 添加角色。",
"failed_to_parse_index": "无法解析索引:%s",
"remove_too_much": "你不能删除那么多角色,你的队伍列表将为空。",
"ignore_index": "忽略的索引列表:%s",
"index_out_of_range": "你指定的索引超出了范围。",
"failed_parse_avatar_id": "无法解析的角色ID%s",
"failed_parse_avatar_id": "无法解析的角色 ID%s",
"avatar_already_in_team": "角色已经在你的队伍中了。",
"avatar_not_found": "无法找到该角色:%s",
"description": "手动修改你的队伍"
@@ -343,10 +376,21 @@
"success": "传送 %s 到坐标 %s, %s, %s场景为 %s。",
"description": "改变指定玩家的位置"
},
"trialAvatarActivity": {
"description": "控制试用角色的活动。可以切换秘境和奖励的状态",
"not_found": "未找到试用角色活动的玩家数据。也许该活动未被启用。",
"invalid_param": "无效的参数。",
"schedule_not_found": "未找到计划 %s。",
"success_schedule": "已将计划 ID 更改为 %s。",
"success_dungeon": "已切换角色 %s 的秘境状态。",
"success_dungeon_all": "已切换所有角色的秘境状态。",
"success_reward": "已切换角色 %s 的奖励状态。",
"success_reward_all": "已切换所有角色的奖励状态。"
},
"weather": {
"success": "已设置天气ID 为 %s气候类型为 %s。",
"status": "当前天气ID 为 %s气候类型为 %s。",
"description": "更改天气ID和气候类型\n\t天气ID可以在 ./Resources/ExcelBinOutput/WeatherExcelConfigData.json 中找到\n\t气候类型sunny(晴天), cloudy(多云), rain(雨), thunderstorm(雷雨), snow(雪), mist(雾)"
"success": "已设置天气 ID 为 %s气候类型为 %s。",
"status": "当前天气 ID 为 %s气候类型为 %s。",
"description": "更改天气 ID 和气候类型\n\t天气 ID 可以在 ./Resources/ExcelBinOutput/WeatherExcelConfigData.json 中找到\n\t气候类型sunny(晴天), cloudy(多云), rain(雨), thunderstorm(雷雨), snow(雪), mist(雾)"
},
"ban": {
"success": "成功封禁玩家。",
@@ -355,13 +399,16 @@
"description": "封禁玩家"
},
"unlockall": {
"success": "已为%s 解锁全部开放状态。",
"success": "已为 %s 解锁全部开放状态。",
"description": "为玩家解锁全部开放状态"
},
"unban": {
"success": "成功取消玩家的封禁。",
"failure": "取消玩家的封禁失败,因为玩家不存在。",
"description": "取消玩家的封禁"
},
"troubleshoot": {
"description": "生成问题排除用的 debug 信息"
}
},
"gacha": {
@@ -402,9 +449,9 @@
"plugin": {
"directory_failed": "无法创建插件目录:",
"unable_to_load": "无法加载插件。",
"invalid_config": "插件%s 的配置文件无效。",
"invalid_main_class": "插件%s 的主类无效。",
"missing_config": "插件%s 缺少有效的配置文件。",
"invalid_config": "插件 %s 的配置文件无效。",
"invalid_main_class": "插件 %s 的主类无效。",
"missing_config": "插件 %s 缺少有效的配置文件。",
"failed_to_load_plugin": "无法加载插件:%s",
"failed_to_load": "无法加载插件。",
"failed_to_load_dependencies": "无法加载插件依赖。",
@@ -413,6 +460,10 @@
"enabling_plugin": "启用插件:%s",
"enabling_failed": "无法启用插件:%s",
"disabling_plugin": "正在禁用插件:%s",
"disabling_failed": "无法禁用插件:%s"
"disabling_failed": "无法禁用插件:%s",
"invalid_api": {
"not_present": "🇺🇸Plugin %s does not specify an API version.",
"lower": "🇺🇸Plugin %s is using API version %s, while the server is using API version %s."
}
}
}

View File

@@ -63,7 +63,10 @@
"game_version": "遊戲版本:%s",
"resources": {
"loading": "加載資源中...",
"finish": "資源加載完成.。"
"finish": "資源加載完成.。",
"custom": "🇺🇸Find additional resources at: 'Anime-Game-Servers/CustomGCResources'.",
"missing_server": "🇺🇸To fully use questing, it is recommended to add the 'Server' folder.",
"missing_scenes": "🇺🇸To fully use questing, it is recommended to add the 'ScriptSceneData' folder."
}
}
},
@@ -84,6 +87,7 @@
"artifactId": "無效的聖遺物ID。",
"avatarId": "無效的角色ID。",
"avatarLevel": "無效的角色等級。",
"cfgId": "🇺🇸Invalid cfg ID.",
"entityId": "無效的實體ID。",
"itemId": "無效的物品ID。",
"itemLevel": "無效的物品等級。",
@@ -166,6 +170,10 @@
"in_dungeon_error": "你已經在祕境中了。",
"description": "進入指定祕境。"
},
"entity": {
"description": "🇺🇸Modify an existing entity's properties",
"not_found_error": "🇺🇸Entity does not exist"
},
"give": {
"usage_relic": "用法: give <artifactID> [mainPropID] [<appendPropID>[,<times>]]... [lv<level 0-20>]",
"illegal_relic": "你不可以取得這個聖遺物因為該聖遺物ID在黑名單列表內。",
@@ -230,7 +238,32 @@
"finished": "已完成任務 %s",
"not_found": "未找到任務",
"invalid_id": "無效的任務ID",
"description": "添加或完成任務"
"description": "添加或完成任務",
"running": "🇺🇸Quest %s is %s (%s).",
"talking": "🇺🇸Talk %s is %s for main quest %s (%s).",
"state": {
"none": "🇺🇸unknown (none)",
"unstarted": "🇺🇸unfinished (not started, not completed)",
"unfinished": "🇺🇸unfinished (started, not completed)",
"finished": "🇺🇸finished (completed)",
"failed": "🇺🇸finished (completed, but failed)",
"exists": "🇺🇸found",
"not_exists": "🇺🇸not found"
},
"enabled": "🇺🇸Questing enabled."
},
"group": {
"invalid_groupid": "🇺🇸Invalid group ID.",
"invalid_suiteid": "🇺🇸Invalid suite ID.",
"group_not_found": "🇺🇸Group not found.",
"description": "🇺🇸Alter group loading",
"refreshed": "🇺🇸Group %s refreshed."
},
"cutscene": {
"description": "🇺🇸Plays a cutscene"
},
"sound": {
"description": "🇺🇸Plays a sound"
},
"reload": {
"reload_start": "正在重新加載設定檔。",
@@ -343,6 +376,17 @@
"success": "傳送 %s 到座標 %s,%s,%s ,場景為 %s 。",
"description": "將玩家的位置傳送到你所指定的座標。"
},
"trialAvatarActivity": {
"description": "操縱試用角色活動的功能。這包括切換地牢和獎勵的狀態。",
"not_found": "未找到試用角色活動玩家數據。也許該活動未被啟用。",
"invalid_param": "無效的參數。",
"schedule_not_found": "未找到計劃 %s。",
"success_schedule": "已將計劃 ID 更改為 %s。",
"success_dungeon": "已切換角色 %s 的地牢狀態。",
"success_dungeon_all": "已切換所有角色的地牢狀態。",
"success_reward": "已切換角色 %s 的獎勵狀態。",
"success_reward_all": "已切換所有角色的獎勵狀態。"
},
"weather": {
"success": "已設定天氣ID 為 %s氣候型別為 %s。",
"status": "當前天氣ID 為 %s氣候型別為 %s。",
@@ -362,6 +406,9 @@
"success": "撤銷停權成功。",
"failure": "撤銷停權失敗,玩家帳號不存在。",
"description": "撤銷停權指定玩家。"
},
"troubleshoot": {
"description": "🇺🇸Generate debugging information for troubleshooting."
}
},
"gacha": {
@@ -413,6 +460,10 @@
"enabling_plugin": "🇺🇸Enabling plugin: %s",
"enabling_failed": "🇺🇸Failed to enable plugin: %s",
"disabling_plugin": "🇺🇸Disabling plugin: %s",
"disabling_failed": "🇺🇸Failed to disable plugin: %s"
"disabling_failed": "🇺🇸Failed to disable plugin: %s",
"invalid_api": {
"not_present": "🇺🇸Plugin %s does not specify an API version.",
"lower": "🇺🇸Plugin %s is using API version %s, while the server is using API version %s."
}
}
}

View File

@@ -1,7 +1,7 @@
<Configuration>
<variable name="LOG_LEVEL" value="${LOG_LEVEL:-INFO}" />
<variable name="LOG_LEVEL" value="${LOG_LEVEL:-INFO}"/>
<appender name="STDOUT" class="emu.grasscutter.utils.JlineLogbackAppender">
<appender name="STDOUT" class="emu.grasscutter.utils.objects.JLineLogbackAppender">
<encoder>
<pattern>%d{HH:mm:ss} &lt;%highlight(%level):%gray(%class{0})&gt; %msg%n</pattern>
</encoder>
@@ -18,22 +18,22 @@
</encoder>
</appender>
<appender name="SERVEREVENT" class="emu.grasscutter.utils.ServerLogEventAppender">
<appender name="SERVEREVENT" class="emu.grasscutter.utils.objects.ServerLogEventAppender">
<encoder>
<pattern>%d{HH:mm:ss} &lt;%highlight(%level):%gray(%class{0})&gt; %msg%n</pattern>
</encoder>
</appender>
<logger name="io.javalin" level="OFF" />
<logger name="org.quartz" level="OFF" />
<logger name="org.reflections" level="OFF" />
<logger name="org.eclipse.jetty" level="OFF" />
<logger name="io.javalin" level="OFF"/>
<logger name="org.quartz" level="OFF"/>
<logger name="org.reflections" level="OFF"/>
<logger name="org.eclipse.jetty" level="OFF"/>
<logger name="emu.grasscutter" level="${LOG_LEVEL}" />
<logger name="emu.grasscutter" level="${LOG_LEVEL}"/>
<root level="INFO">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILE" />
<appender-ref ref="SERVEREVENT" />
<appender-ref ref="STDOUT"/>
<appender-ref ref="FILE"/>
<appender-ref ref="SERVEREVENT"/>
</root>
</Configuration>