2
2.2. Multi server support
SaarChaffee edited this page 2023-06-29 15:49:21 +08:00
This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

2.2. Multi-server support 多服务器支持

Support a new server 增加新的服务器支持

GUI

Copy ./module/config/argparser.py to argparser_xx.py and change the args.

Create a dictionary in ./module/config/dictionary.py that translate your language to english.

Copy alas_cn.py to alas_xx.py and import argparser_xx.py . Then, edit server name.

Format of .pyw file name: <sctipt_name>_<server_name>.pyw

Script name is used to load ini file under ./config, For example, alas_cn.pyw and alas_en.pyw both loads ./config/alas.ini, but in different languages.

Assets

Copy folder ./assets/cn to ./assets/<your server>, and replace the image. This will cost a lot of time to find, crop and test. Fortunately, if a image does not contain any charactors, it may works in all servers.

Add server name to dev_tools/button_extract.py VALID_SERVER = ['cn', 'en', 'jp'].

After replacing an image, don't forget to run ./dev_tools/button_extract.py

Class methods

Some method may be different in different servers. This decoractor is use to calls different function with a same name according to config (AzurLaneConfig instance).

from module.base.decorator import Config
from module.base.base import ModuleBase

class AnotherModule(ModuleBase):
    @Config.when(SERVER='en')
    def function(self):
        # This method will be called only in EN server
        pass

    @Config.when(SERVER=None)
    def function(self):
        # This method will be called in other server
        pass

OCR

There area also some modules difficult to change: the commission module.

In ./module/reward/commission.py, I use cnocr to recognize commission name in chinese, it may not works well in other languages.

Set server 设置服务器

这段代码所设置的服务器,将在全局生效。未设置服务器时,默认为 cn

可以设置的服务器有 cnenjp

import module.config.server as server
server.server = 'cn'  # Edit your server here.

注意

你需要在导入任意 Alas 模块之前设置服务器。在模块导入时,就会读取服务器设置,如果服务器设置晚于模块导入,设置不生效。

使用例子:

import numpy as np
from tqdm import tqdm

import module.config.server as server

server.server = 'cn'  # Edit your server here.

from module.logger import logger
from module.statistics.battle_status import BattleStatusStatistics
from module.statistics.get_items import GetItemsStatistics
from module.statistics.utils import *

Timezone awareness 考虑时区

一些用户可能不与服务器在同一时区,所以不能简单地使用本地时间或本地日期。

以下是一些服务器的时区:

Server Timezone
CN UTC+8
EN UTC-7
JP UTC+9

在 module/config/config.py 类 AzurLaneConfig 中有处理时区的函数。

get_server_timezone(self)

返回当前服务器的时区。

get_server_last_update(self, since)

返回服务器上次刷新时,所对应的本地时间。这个时间可以直接与本地时间进行比较。since 是含有一个或多个元素的集合,表示服务器在一天内刷新的整点时间。

>>> # 2020-06-06 12:56:45 UTC+2
>>> import module.config.server as server
>>> server.server = 'en'
>>> from module.config.config import AzurLaneConfig
>>> cfg = AzurLaneConfig()
>>> cfg.get_server_last_update(since=(0,))
2020-06-06 09:00:00