diff --git a/docs/ko-kr/1.1-사용자_설명서.md b/docs/ko-kr/1.1-사용자_설명서.md index 85fc120138..e133b110d1 100644 --- a/docs/ko-kr/1.1-사용자_설명서.md +++ b/docs/ko-kr/1.1-사용자_설명서.md @@ -7,6 +7,7 @@ - 스테이지 자동 선택이 필요 없다면 MAA에서 `현재/최근`을 선택하고 게임에서 수동으로 스테이지를 찾아 **작전개시** 버튼과 **대리지휘** 버튼이 표시되는 화면으로 이동해 주세요. - 해당 화면이 아닐 경우 `현재/최근`은 게임의 “지난 전투”를 선택하게 됩니다. (작전 메인 페이지의 우측 하단에 있는 기록에 따라 다름) - `작업 설정`-`이성 사용`에서 `스테이지 코드 수동 입력`을 활성화해 드롭다운 목록에서 스테이지를 선택하는 대신 코드를 직접 입력할 수도 있습니다. (예시: `1-7`, `S3-2`, `CE-6` 등) +
예시 보기 ![예시 보기](https://user-images.githubusercontent.com/5153875/196309375-73a93b83-e59b-441c-913f-122d4a9fc46c.png) @@ -20,12 +21,13 @@ - `횟수 제한` 스테이지를 플레이할 횟수를 지정합니다. (예시: 15회 플레이 후 중지) - `드롭 제한` 지정된 재료의 드롭 수를 지정합니다. (예시: 5개의 원암 드롭 후 중지) -| 예 | 회복제 | 오리지늄 | 횟수 제한 | 드롭 제한 | 설명果 | -|:--:|:--------:|:------:|:--------:|:---------:|-----------------------------------------------------------------------------------------------------------------------------------------------| -| A | 999 | 10 | 1 | ✖ | 이성 회복제/순오리지늄을 **1회** 이상 사용하고 `횟수 제한:1`이 충족되면 즉시 종료됩니다. 이성, 이성 회복제, 순오리지늄이 전부 부족하다면 바로 종료됩니다.| -| B | x | x | 100 | ✖ | 100회 시행하는 것으로 되어 있지만, 현재 가지고 있는 이성을 전부 소모하면 `이성 회복제`나 `순오리지늄`을 사용할 수 없어 이성이 부족해 종료됩니다.| -| C | 1 | x | 100 | ✖ | 100회 시행하는 것으로 되어 있지만, 이성 회복제를 1번 사용한 후에는 현재 가지고 있는 이성을 전부 소모하면 `이성 회복제: 1`과 `순오리지늄: 0`에 도달했으므로 종료됩니다.| -| D | 999 | ✖ | 100 | 3원암 큐브 | 100회 시행하며 최대 999개의 이성 회복제를 사용하는 것으로 되어 있지만, 시행 중 3개의 원암 큐브를 얻으면 `드롭 제한:원암 큐브 3개`에 도달했으므로 종료됩니다.| +| 예 | 회복제 | 오리지늄 | 횟수 제한 | 드롭 제한 | 설명果 | +| :-: | :----: | :------: | :-------: | :--------: | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| A | 999 | 10 | 1 | ✖ | 이성 회복제/순오리지늄을**1회** 이상 사용하고 `횟수 제한:1`이 충족되면 즉시 종료됩니다. 이성, 이성 회복제, 순오리지늄이 전부 부족하다면 바로 종료됩니다. | +| B | x | x | 100 | ✖ | 100회 시행하는 것으로 되어 있지만, 현재 가지고 있는 이성을 전부 소모하면 `이성 회복제`나 `순오리지늄`을 사용할 수 없어 이성이 부족해 종료됩니다. | +| C | 1 | x | 100 | ✖ | 100회 시행하는 것으로 되어 있지만, 이성 회복제를 1번 사용한 후에는 현재 가지고 있는 이성을 전부 소모하면 `이성 회복제: 1`과 `순오리지늄: 0`에 도달했으므로 종료됩니다. | +| D | 999 | ✖ | 100 | 3원암 큐브 | 100회 시행하며 최대 999개의 이성 회복제를 사용하는 것으로 되어 있지만, 시행 중 3개의 원암 큐브를 얻으면 `드롭 제한:원암 큐브 3개`에 도달했으므로 종료됩니다. | + - `드롭 제한`과 `스테이지 선택`은 연관되어 있지 않습니다. - `드롭 제한`은 재료의 개수를 기준으로 작업을 종료하는 스위치일 뿐 재료를 지정한다고 해서 스테이지를 자동으로 설정해주는 것은 아닙니다. - `대리지휘`를 체크하는 것을 깜빡해 벌어지는 참사가 일어나지 않도록 자동으로 체크해 드립니다~ @@ -50,6 +52,7 @@ #### 주의사항 - 교대 전략은 다중 시설이 아닌 단일 시설 내에서의 최적의 방안을 바탕으로 합니다. 단일 시설 내의 `샤마르-테킬라` 조합, `버메일-씬` 조합 등은 제대로 인식되지만 `로즈몬티스`나 `피누스 실베스트리스` 등의 다중 시설간 조합은 아직 지원되지 않습니다. +- 만약 다중 시설간 조합을 원할 경우, `커스텀 기반시설`을 이용하세요. - `드론 사용처`가 `무역소-용문폐`로 지정되어 있을 경우, `샤마르`를 인식하고 드론을 아껴둘 것입니다. - 응접실에서 단 한 종류의 단서가 부족하다면 해당 진영의 오퍼레이터가 선택됩니다. 그렇지 않은 경우 일반적인 오퍼레이터가 선택됩니다. - 응접실이 꽉 차 있을 때만 단서를 내보낼 것입니다. 최대 3개의 단서가 전달됩니다. `resource/tasks.json`에서 `SelectClue`-`maxTimes` 필드를 수정해 단서의 전달 개수를 조절할 수 있습니다. @@ -69,6 +72,7 @@ - MAA 설정에서 `팬텀/미즈키` 테마를 선택하고, 해당 테마를 게임 내에서 "고정시켜" 주세요. 그렇지 않으면 최신 테마가 표시되어 문제가 발생할 수 있습니다. - 고정시키지 않는 경우 기능 가동 전에 해당 테마의 메인 화면(탐색 시작/탐색 계속 버튼 표시)인지 확인해 주세요. - 설정과 다른 테마의 진행 중인 탐험이 있을 경우 수동으로 종료하고 진행해 주세요. +
고정 방법 ![고정 방법](https://user-images.githubusercontent.com/5153875/196175536-4df46097-dde7-48e2-9c8d-ca4b5c12a3ee.png) diff --git a/docs/ko-kr/1.4-Mac용_에뮬레이터_지원.md b/docs/ko-kr/1.4-Mac용_에뮬레이터_지원.md new file mode 100644 index 0000000000..e28625b605 --- /dev/null +++ b/docs/ko-kr/1.4-Mac용_에뮬레이터_지원.md @@ -0,0 +1,44 @@ +# Mac용 에뮬레이터 지원 + +_N.B.: 문제가 발생했을 경우 [1.2-FAQ](1.2-FAQ.md) 를 먼저 읽어주시기 바랍니다._ + +## 애플 실리콘 칩 + +### ✅ [PlayCover](https://playcover.io) (이 소프트웨어에서 가장 원할하게 실행됨 🚀) + +베타 버전과 호환되며, 오류가 발생할 경우 `ios` 로 표시된 이슈를 제출해주기 바랍니다. + +P.S.: `macOS` 의 작동 방식에 의해, `PlayCover` 를 최소화하고 다른 창으로 전환할 경우 오류가 발생할 수 있습니다. 또한 스크린샷 오류로 인해 `MAA`가 충돌할 수 있습니다. 참고하기 👉🏻️[issue](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues/4371#issuecomment-1527977512) + +1. 요구사항: v4.13.0-rc.1 이상의 MAA 버전 +2. [PlayCover의 포크 버전](https://github.com/hguandl/PlayCover/releases)을 다운로드하여 설치합니다. +3. [부호화된 버전의 명일방주](https://decrypt.day/app/id1454663939)를 다운로드한 다음, PlayCover에 설치합니다. +4. PlayCover에서 명일방주를 우클릭하고, `Setting` - `Jailbreak Bypass` 를 선택한 다음, `Enable PlayChain`, `Enable Jailbreak Bypass (Alpha)`, `Insert Introspection Library`, `MaaTools` 를 선택, 마지막으로 `OK` 누르기. +5. 명일방주를 재시작하면, `[localhost:${port number}]` 가 위에 표시되며, 시작이 성공적으로 되었다는것을 의미합니다. +6. MAA에서, `Settings` - `Connection Settings`을 클릭하고, `Minitouch` 에서 `MacPlayTools`를 선택합니다. `Connection Address` 를 `[]`(빈칸)에 넣어줍니다 . +7. 마지막으로, MAA에 성공적으로 연결하게 되었고, 만약 이미지 인식에 오류가 발생할 경우, PlayCover에서 해상도를 1080p로 설정하면 됩니다. +8. 3-5 단계를 반복할 필요는 없습니다. 그 이후에 명일방주를 실행하면 됩니다. 만약 명일방주가 업데이트되었을 경우 2단계를 반복해야 합니다. + +### ✅ [AVD](https://developer.android.com/studio/run/managing-avds) + +호환됩니다. + +## Intel Chips + +### ✅ [Bluestacks-CN 5](https://www.bluestacks.cn/) + +완벽하게 호환됩니다. `설정` - `엔진 설정` - `ADB 연결 허용` 으로 ADB를 켜줘야 합니다. + +### ✅ [Bluestacks 5](https://www.bluestacks.com/tw/index.html) + +완벽하게 호환됩니다. `설정` - `엔진 설정` - `ADB 연결 허용` 으로 ADB를 켜줘야 합니다. + +### ✅ [Nox](https://www.yeshen.com/) + +완벽하게 호환됩니다. MAAX는 현재 ADB 포트를 자동으로 감지할 수 없으므로, MAA 내의 `설정` - `연결 설정` 에서 ADB 포트 `127.0.0.1:62001` 을 직접 입력해줘야 합니다. 포트를 기본값인 `5555`로 둬서는 안됩니다. 자세한 내용은[ FAQ](1.2-FAQ.md#common-adb-ports-for-popular-android-emulators) 에서 확인할 수 있습니다. + +P.S.: Mac의 녹스 adbin 파일 경로는 `/Applications/NoxAppPlayer.app/Contents/MacOS/adb` 입니다. 상위 경로 `MacOS` 에서 `adb devices` 명령을 사용하여 ADB 경로를 얻을 수 있습니다. + +### ✅ [AVD](https://developer.android.com/studio/run/managing-avds) + +호환됩니다. diff --git a/docs/ko-kr/2.5-해외_클라이언트_현지화.md b/docs/ko-kr/2.5-해외_클라이언트_현지화.md new file mode 100644 index 0000000000..a85fbae29d --- /dev/null +++ b/docs/ko-kr/2.5-해외_클라이언트_현지화.md @@ -0,0 +1,132 @@ +# 해외 클라이언트 현지화 + +## 준비 + +이 튜토리얼을 시작하기 전에 다음 사항이 준비되었는지 확인해야 합니다. + +1. 필요한 소프트웨어를 설치하고 올바르게 구성했습니다. ZH-CN 클라이언트 또는 해당 클라이언트의 `readme.md` 에 지원되는 기능이 제대로 작동하는지 확인할 수 있는 정보가 있서야 합니다. +2. `3.4-TASK_SCHEMA.md` 를 읽고 각 필드의 의미와 사용법을 기본적으로 이해해야 합니다. 코드에서 `@` 와 `#` 의 의미와 용법도 이해해야 합니다. +3. ZH-CN 클라이언트의 `task.json` 파일과 템플릿 이미지는 해외 클라이언트에 대해 언급되지 않았거나 누락된 경우의 대안으로 사용된다는 점을 이해해야합니다. 해외 클라이언트에 대한 `task.json` 의 내용은 ZH-CN 작업 필드에 따라 다시 작성해야 합니다. +4. 영어 실력이 있고, 영어 로그를 읽을 수 있으며, 로그를 통해 누락된 사진과 다른 정보를 찾을 수 있는 역량이 있으면 좋습니다. ~~번역기 돌려주는것만으로도 환영합니다.~~ +5. 작업 체인에 따라 개별적으로 수정을 수행하는 것이 좋습니다. 예를 들어, Award 작업을 수정하려면 `next` 필드의 순서에 따라 `template image`, `text`, 그리고 `roi` 를 단계적으로 수정해야 합니다. 이렇게 하면 수정 후 모든 작업이 정상적으로 작동하고 오류를 쉽게 발견할 수 있습니다. 또한 이렇게 하면 한 번에 너무 많은 콘텐츠가 수정될 때 소프트웨어가 어떤 작업에 고정되어 있는지 혼동하거나 잊어버리는 것을 방지할 수 있습니다. + +### 변경 전 준비사항 + +변경하기 전에 다음과 같은 몇 가지 준비 사항에 유의해야 합니다: + +1. ZH-CN 클라이언트의 `task.json` 을 참조하여 해외 클라이언트를 위한 템플릿 이미지와 텍스트 콘텐츠를 준비했는지 확인해야 합니다. +2. 이러한 이미지와 텍스트 콘텐츠에 올바르게 접근할 수 있는지 확인해야 합니다. + +## 스크린샷 얻기 + +고품질의 스크린샷을 얻으려면 다음 지침을 따르세요: + +1. 에뮬레이터와 함께 제공된 스크린샷 도구를 사용하여 스크린샷을 만들고 저장합니다. +2. 스크린샷의 크기가 `1280*720` 이상이고 종횡비는 반드시 `16:9` 이어야 합니다. +3. 스크린샷에 작업 표시줄, 상태 표시줄 또는 알림 표시줄과 같은 관련 없는 내용이 포함되어 있지 않은지 확인해야 합니다. +4. 스크린샷에 인식해야 할 내용이 모두 포함되어 있는지 확인해야합니다. + +이미지를 잘라내고 관심 텍스트/이미지 영역(ROI)을 얻으려면, `Python` 과 `OpenCV` 를 설치하고, `MaaAssistantArknights/tools/CropRoi/main.py` 파일을 다운로드해야 합니다. + +그런 다음, 다음 단계를 수행합니다. + +1. `main.py`와 같은 디렉토리에 `src` 와 `dst` 폴더를 새로 만듭니다. +2. 크기를 조정해야 하거나 새로운 ROI 값이 필요한 텍스트/이미지의 **전체 스크린샷**을 `src` 폴더에 넣습니다. +3. `main.py`를 실행합니다. +4. 마우스를 드래그하여 대상 범위를 선택하고, 관련 없는 내용이 포함되지 않도록 합니다. +5. 범위가 결정되면 `S`를 눌러 저장하고 `Q`를 눌러 종료합니다. 잘라낸 이미지가 dst 폴더에 저장됩니다. + +예를 들어, 자르기를 완료한 후의 출력은 다음과 같습니다: + +```log +src: Screenshot_xxx.png +dst: Screenshot_xxx.png_426,272,177,201.png +original roi: 476, 322, 77, 101, +amplified roi: 426, 272, 177, 201 +``` + +이 예시에서, `Screenshot_xxx.png` 는 `src` 폴더에 배치된 전체 스크린샷의 이름이고, `Screenshot_xxx.png_426,272,177,201.png` 는 잘라낸 이미지의 이름입니다. + +원래의 `original roi` 는 마우스가 선택한 영역이고, `amplified roi` 는 확대된 영역입니다. 확대된 영역이 필요하므로, `amplified roi` 값을 사용하여 task.json 의 roi 필드를 입력해야 합니다. + +## Modify the template image + +Before modifying the template image, you need to open the template image folder of the corresponding client and the template image folder of the ZH-CN client. + +For example: + +- The location of the template image folder for EN client is `MaaAssistantArknights\resource\global\YoStarEN\resource\template`. +- The location of the template image folder for the ZH-CN client is `MaaAssistantArknights\resource\template`. + +Refer to the template images mentioned in the `task.json` file, compare the template images of the ZH-CN client and the overseas client, and identify any missing templates in the overseas client. + +Typically, template images containing text need to be replaced with screenshots, with the exception of images such as logos. If the size of the image is significantly larger than the corresponding template image in the ZH-CN client, you may need to modify the size of the `roi`. + +Once you have captured and renamed the template image, you can place it in the template image folder of the corresponding client. + +## Modify the text content + +Before modifying the text content, you will need to open the `task.json` file for both the corresponding server and ZH-CN client. + +For example: + +- The location of `task.json` in EN client is `MaaAssistantArknights\resource\global\YoStarEN\resource\tasks.json`. +- The location of `task.json` for ZH-CN client is `MaaAssistantArknights\resource\tasks.json`. + +To modify the text, locate the corresponding task and change the `text` field to the content displayed in the corresponding server. Keep in mind that the identified content can be a substring of the full content within the game. In general, you should replace any `text` containing text unless it is recognized as a pure ASCII character. + +If the text length is significantly longer than the ZH-CN client version, you may need to modify the size of the `roi` field. For example, if the difference in length between the `"任务"`(Mission in chinese) and the English word `"Mission"` is too large, you may need to modify the size of the `roi` for that mission in the overseas client. + +If the task does not exist in the `task.json` file of the corresponding overseas server, you will need to add it. Simply fill in the `text` field with the appropriate content. + +## Modify ROI range + +To modify the ROI range: + +1. Open the `task.json` file for the corresponding server, for example, the location of the EN client's `task.json` file is `MaaAssistantArknights\resource\global\YoStarEN\resource\tasks.json`. +2. Find the task that corresponds to the ROI range you need to modify, and use a screenshot of the overseas game interface to adjust the size of the `roi` range according to the amplified ROI. +3. Normally, you should not need to modify the `roi` range, but you may need to do so if the difference in size between the text and the Chinese client version is too large. +4. If the task does not exist in the `task.json` file of the corresponding overseas client, add the task and write the `roi` field with the appropriate values. + +## Save the settings and restart the software + +After making the changes, you will need to save the settings and restart the software in order for the changes to take effect. To do this, you can either restart the software and reload the file, or create a new `DEBUG.txt` file in the software directory. This will cause the template and files to be reloaded every time you click the "Link Start" button, so you will not need to restart the software. + +To check for success: + +1. Test the operation of the software to ensure that it is functioning properly on the overseas server. +2. If it is not working properly, you will need to check if the changes are correct, or check the log output to determine what went wrong. + +## Interpreting the logs + +If you have modified the `task.json` file but the program is still not functioning correctly, it may be helpful to check the logs to find any errors and modify the corresponding task accordingly. The log file is typically located in the root directory of the software, and is named `asst.log`. If you compiled MAA yourself, it may be located in the `\x64\Release` or `\x64\RelWithDebInfo` directory, depending on the compilation mode you selected when compiling. + +Interpreting the logs can be helpful in identifying any issues with the program. Here is an example log: + +```log +[2022-12-18 17:43:17.535][INF][Px7ec][Tx15c8] {"taskchain":"Award","details":{"to_be_recognized":["Award@ReturnTo","Award","ReceiveAward","DailyTask","WeeklyTask","Award@CloseAnno","Award@CloseAnnoTexas","Award@TodaysSupplies","Award@FromStageSN"],"cur_retry":10,"retry_times":20},"first":["AwardBegin"],"taskid":2,"class":"asst::ProcessTask","subtask":"ProcessTask","pre_task":"AwardBegin"} +[2022-12-18 17:43:18.398][INF][Px7ec][Tx15c8] Call ` C:\Program Files\BlueStacks_nxt\. \HD-Adb.exe -s 127.0.0.1:5555 exec-out "screencap | gzip -1" ` ret 0 , cost 862 ms , stdout size: 2074904 , socket size: 0 +[2022-12-18 17:43:18.541][TRC][Px7ec][Tx15c8] OcrPack::recognize | roi: [ 500, 50, 300, 150 ] +[2022-12-18 17:43:18.541][TRC][Px7ec][Tx15c8] Ocr Pipeline with asst::WordOcr | enter +[2022-12-18 17:43:18.634][TRC][Px7ec][Tx15c8] Ocr Pipeline with asst::WordOcr | leave, 93 ms +[2022-12-18 17:43:18.634][TRC][Px7ec][Tx15c8] OcrPack::recognize | raw: [{ : [ 0, 0, 300, 150 ], score: 0.000000 }] +[2022-12-18 17:43:18.634][TRC][Px7ec][Tx15c8] OcrPack::recognize | proc: [] +[2022-12-18 17:43:18.637][TRC][Px7ec][Tx15c8] asst::ProcessTask::_run | leave, 1101 ms +[2022-12-18 17:43:18.638][TRC][Px7ec][Tx15c8] ready to sleep 500 +[2022-12-18 17:43:19.144][TRC][Px7ec][Tx15c8] end of sleep 500 +[2022-12-18 17:43:19.144][TRC][Px7ec][Tx15c8] asst::ProcessTask::_run | enter +``` + +In this log, you can see that: + +- `"taskchain"` represents the task currently in progress. +- `"details"` is the content of the task, including the fields to be recognized (`to_be_recognized`) and the current number of retries (`cur_retry`) and the total number of retries (`retry_times`). +- `"first"` represents the start of the task. +- `"taskid"` is the task number. +- `"class"` and `subtask` represent the class and subtask of the task, respectively. +- `"pre_task"` represents the previous task. + In addition, the execution of the command (e.g. `Call`) and the `OCR` information (e.g. `OcrPack::recognize`) are recorded in the log. + +For example, in this log, `"to_be_recognized"`,`"cur_retry":3,"retry_times":20` means that the task has been attempted to be recognized 10 times, and the maximum number of times is 20. After the maximum number of times is reached, the task will be skipped and an error will be reported, and the next task will be performed. If there are no issues with the previous task, it is likely that there is a problem with the recognition here. To troubleshoot this issue, you can check the tasks mentioned in the log to see if there is a corresponding template file, if the `text` field of the corresponding task is incorrect, or if the `roi` range for task recognition is incorrect, and make any necessary modifications. + +By looking at the corresponding template image, you may find that there is a template for this image in the EN client template folder, but the size is larger than the image in template folder for the ZH-CN client . This could cause the `roi` in ZH-CN client to not be recognized in the EN client, so you may need to modify the corresponding task's `roi` in the EN client's `task.json` file to match the size of the image in the EN client.