Update Zictionary scene + Small change in Vietnamese translation (#935)

* Squashed commit of the following:

commit f50627095805c090b49c1054645ad33cb896f4d0
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Sat Aug 5 09:49:59 2023 +0700

    Change icon in dict.lua

commit 1f7da069425f00f431c9299689897a665cb2d80d
Merge: b212fff8 7be2aa50
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Fri Aug 4 18:14:29 2023 +0700

    Merge https://github.com/26F-Studio/Techmino into VietnameseTranslation

commit 7be2aa50dd
Author: C₂₉H₂₅N₃O₅ <a1228465111@163.com>
Date:   Fri Aug 4 18:40:12 2023 +0800

    Font & Virtual Key Update (#932)

    - Changed the main font to Exo2
    - Changed the monospaced font to League Mono
    - Changed the virtual key design to increase legibility and match the font
    - Added a few symbols

commit ed9417dcdf
Author: C6H12O6 + NaCl + H2O <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Thu Aug 3 22:57:06 2023 +0700

    Reupdate Vietnamese translation (#930)

commit b212fff8d9
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Thu Aug 3 20:54:45 2023 +0700

    Small update

commit b59d1dc188
Merge: 8fcdbd9d 36522c71
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Thu Aug 3 19:40:20 2023 +0700

    Merge branch 'main' of https://github.com/26F-Studio/Techmino into VietnameseTranslation

commit 36522c7146
Author: MrZ_26 <1046101471@qq.com>
Date:   Thu Aug 3 16:04:04 2023 +0800

    修复词典用不了滚轮
    整理代码

commit 20b74ea78a
Author: MrZ_26 <1046101471@qq.com>
Date:   Thu Aug 3 13:46:27 2023 +0800

    词典交互和代码逻辑优化
    框架跟进

commit 0ae9cbcdaa
Author: MrZ_26 <1046101471@qq.com>
Date:   Thu Aug 3 10:11:27 2023 +0800

    删行末空格

commit c9cbb0e363
Author: MrZ_26 <1046101471@qq.com>
Date:   Wed Aug 2 21:45:31 2023 +0800

    修复fixed序列反了

commit 0595ce4ea6
Author: C6H12O6 + NaCl + H2O <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Wed Aug 2 10:44:01 2023 +0700

    Update Vietnamese translation (again) (#929)

commit 8fcdbd9df5
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Wed Aug 2 10:22:54 2023 +0700

    remove duplicate

commit 798ea1be4f
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Wed Aug 2 10:09:02 2023 +0700

    remove duplicate item in ZH file (thanks SundayLee)

commit e6f4f69f6f
Merge: 14630990 fa89ba55
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Wed Aug 2 10:00:17 2023 +0700

    Merge branch 'VietnameseTranslation' of https://github.com/SweetSea-ButImNotSweet/Techmino into VietnameseTranslation

commit 14630990be
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Tue Aug 1 23:43:35 2023 +0700

    Small change

commit 7a15406262
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Sat Jul 15 00:46:17 2023 +0700

    small update

commit 1d10f14c8e
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Mon Jul 10 21:08:10 2023 +0700

    Remove most of unnecessary keywords

commit 07341d48e4
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Mon Jul 10 14:38:46 2023 +0700

    Update the manual (Rebasing all old commits)

commit 2e2427f942
Author: MrZ_26 <1046101471@qq.com>
Date:   Wed Aug 2 10:34:19 2023 +0800

    框架跟进

commit aeddee2f03
Author: MrZ_26 <1046101471@qq.com>
Date:   Wed Aug 2 10:23:20 2023 +0800

    修复自定义页面编辑场地消行按钮用不了

commit 43037f8043
Author: NOT_A_ROBOT <not_a_normal_robot@protonmail.com>
Date:   Tue Aug 1 23:50:08 2023 +0700

    Shorten mission displays with RLE (#927) (may need optimization)

commit 0c3d552d08
Author: MrZ_26 <1046101471@qq.com>
Date:   Wed Aug 2 00:46:54 2023 +0800

    越南语语言文件小修正

commit fa89ba55aa
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Tue Aug 1 23:43:35 2023 +0700

    Small change

commit a1b6b8a434
Author: C6H12O6 + NaCl + H2O <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Tue Aug 1 23:39:04 2023 +0700

    Vietnamese Zictionary update [ONLY MERGE AFTER MERGING #926] (#915)

    * Tweak keywords

    * Small update

    * Update the manual

    * Remove most of unnecessary keywords

    * Revert change

    * Push updates

    * small update

    * Add tips that missing

    * Nvm, little change

    * Minor changes

    * Little update

    * Some updates

    * Small change in updatelog

    * Push update

    * small update

    * Small update

    * Update the translation, last time?

    * Push

    * Push small updates, READY!

    * Push updates

    * Clean up some missed items

    * small updates because of my flipped memory

    * Small changes + NEW TOOL!

    * Remove old info

    * Small updates

    * Small updates

    * Replace alnost "hố" --> "lỗ

    * Small updates

    * Sort group, adapt #926

    * small update

    * Fix some stupid mistake when do translating

    * Small change

    * small change

    * Clean up outdated comment

    * Fixed wrong group tag

    * Add a funny tip 🤪

    * Fix tip

    * Fix tip again

    * Fix tip again (x2)

commit 5061cad389
Author: C6H12O6 + NaCl + H2O <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Tue Aug 1 23:38:30 2023 +0700

    [HOTFIX] [MERGE NOW!] Fix bugs for #926 (#928)

    * Attempt to rework Zictionary scene

    * Rearrange the layout and handling most of thing

    * Remove ALPHA key, done keyboard handling, changed some key's behavior

    * Add Help text

    * Update Help text & fix some bugs

    * Update help text

    * Edit help text

    * Support gamepad

    * small changes in help text

    * small changes

    * Fix copy bug

    * small change

    * Add hint text to open Hint

    * Fix a bug that item accidentally selected when scrolling

    * Clean up a dumb function
    (Forget to cleanup in previous commit)

    * add backup solution, just in case

    * fix another bug

    * fix touch bug

    * Refix the scroll bug when touch

    * small code changes

    * small change in English file

    * Fix bugs, change text, adjust a icon

    * Change English text

    * Add Vietnamese translation

    * Add Chinese, adjust English & Vietnamese

    * Small change in secret Easter egg

    * Fix spelling mistake

commit a26c49451b
Author: C6H12O6 + NaCl + H2O <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Tue Aug 1 11:01:26 2023 +0700

    Fix tip again (x2)

commit d66b2d6131
Author: C6H12O6 + NaCl + H2O <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Tue Aug 1 10:39:08 2023 +0700

    Fix tip again

commit e95f87ace1
Author: C6H12O6 + NaCl + H2O <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Tue Aug 1 10:35:13 2023 +0700

    Fix tip

commit 1ccd211bfc
Author: C6H12O6 + NaCl + H2O <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Tue Aug 1 10:12:23 2023 +0700

    Add a funny tip 🤪

commit 86ce124dd0
Author: C6H12O6 + NaCl + H2O <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Mon Jul 31 22:49:09 2023 +0700

    Fixed wrong group tag

commit 7d62a04b17
Author: C6H12O6 + NaCl + H2O <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Mon Jul 31 22:47:02 2023 +0700

    Clean up outdated comment

commit fd3910fe14
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Mon Jul 31 15:37:10 2023 +0700

    small change

commit 4ab59ef4a2
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Mon Jul 31 12:13:45 2023 +0700

    Small change

commit bf5f7cb2c9
Merge: bb7b1b93 9d3fb33d
Author: C6H12O6 + NaCl + H2O <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Mon Jul 31 11:04:48 2023 +0700

    Merge branch '26F-Studio:main' into VietnameseTranslation

commit 9d3fb33d10
Author: C6H12O6 + NaCl + H2O <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Mon Jul 31 02:20:24 2023 +0700

    Improve Zictionary scene so we don't need to hyper tapping much than before (#926)

    * Attempt to rework Zictionary scene

    * Rearrange the layout and handling most of thing

    * Remove ALPHA key, done keyboard handling, changed some key's behavior

    * Add Help text

    * Update Help text & fix some bugs

    * Update help text

    * Edit help text

    * Support gamepad

    * small changes in help text

    * small changes

    * Fix copy bug

    * small change

    * Add hint text to open Hint

    * Fix a bug that item accidentally selected when scrolling

    * Clean up a dumb function
    (Forget to cleanup in previous commit)

    * add backup solution, just in case

    * fix another bug

    * fix touch bug

    * Refix the scroll bug when touch

    * small code changes

    * small change in English file

commit 4d82b182a6
Author: MrZ_26 <1046101471@qq.com>
Date:   Mon Jul 31 02:53:15 2023 +0800

    语言选择场景标题文本修改

commit bb7b1b93cb
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Sat Jul 29 10:36:53 2023 +0700

    Fix some stupid mistake when do translating

commit 5358538cb4
Merge: 23fd5cdb 78ac05ef
Author: C6H12O6 + NaCl + H2O <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Fri Jul 28 23:33:55 2023 +0700

    Merge branch '26F-Studio:main' into VietnameseTranslation

commit 23fd5cdbb9
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Fri Jul 28 23:33:19 2023 +0700

    small update

commit 4796a57bb4
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Fri Jul 28 23:23:18 2023 +0700

    Sort group, adapt #926

commit 78ac05efba
Author: MrZ_26 <1046101471@qq.com>
Date:   Wed Jul 26 02:02:42 2023 +0800

    框架跟进

commit cd7c58eb32
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Mon Jul 24 15:54:33 2023 +0700

    Small updates

commit 53857af2fa
Merge: a2cdd6f3 02cf7b71
Author: C6H12O6 + NaCl + H2O <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Sun Jul 23 21:59:57 2023 +0700

    Merge branch '26F-Studio:main' into VietnameseTranslation

commit a2cdd6f367
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Sun Jul 23 21:59:28 2023 +0700

    Replace alnost "hố" --> "lỗ

commit 02cf7b71c1
Merge: 091bb234 aefde7a7
Author: MrZ_26 <1046101471@qq.com>
Date:   Thu Jul 20 15:00:40 2023 +0800

    Merge remote-tracking branch 'tech/imple/revise-seq-generator'

commit 4629b4718f
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Mon Jul 17 22:17:15 2023 +0700

    Small updates

commit 9907971722
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Mon Jul 17 22:04:06 2023 +0700

    Small updates

commit 16d89195d5
Author: C6H12O6 + NaCl + H2O <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Mon Jul 17 09:58:28 2023 +0700

    Remove old info

commit 091bb23488
Author: MrZ_26 <1046101471@qq.com>
Date:   Mon Jul 17 10:47:23 2023 +0800

    词典标题栏不会溢出了

commit 0ec0d80e9c
Author: MrZ_26 <1046101471@qq.com>
Date:   Mon Jul 17 10:29:38 2023 +0800

    修复手柄摇杆左右的图标反了 close #912

commit d4d87ccb5c
Author: MrZ_26 <1046101471@qq.com>
Date:   Mon Jul 17 05:50:18 2023 +0800

    调整bagP1inf序列模式位置

commit c782c1fcdd
Author: MrZ_26 <1046101471@qq.com>
Date:   Mon Jul 17 05:47:20 2023 +0800

    修复四连块之外的ASC旋转中心不正确 close #910

commit f7cdae8677
Author: MrZ_26 <1046101471@qq.com>
Date:   Mon Jul 17 04:24:49 2023 +0800

    修复玩家死亡掉落动画任务能跨局把新开的局里的玩家移除 close #918

commit f41a68de0d
Author: MrZ_26 <1046101471@qq.com>
Date:   Mon Jul 17 04:19:32 2023 +0800

     添加bagPinf序列模式的图标

commit c38bb7986a
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Mon Jul 17 00:15:31 2023 +0700

    Small changes + NEW TOOL!

commit 80b56af045
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Sun Jul 16 12:42:02 2023 +0700

    small updates because of my flipped memory

commit 745f836ddf
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Sun Jul 16 12:30:22 2023 +0700

    Clean up some missed items

commit 9f45842046
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Sun Jul 16 12:23:14 2023 +0700

    Push updates

commit 9b7c09d89c
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Sun Jul 16 11:50:04 2023 +0700

    Push small updates, READY!

commit be11a9ada4
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Sun Jul 16 11:25:52 2023 +0700

    Push

commit 92361e073c
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Sun Jul 16 11:18:50 2023 +0700

    Update the translation, last time?

commit 146db2325d
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Sat Jul 15 09:15:08 2023 +0700

    Small update

commit 9ec237acc1
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Sat Jul 15 00:46:17 2023 +0700

    small update

commit c39c6c0701
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Sat Jul 15 00:42:14 2023 +0700

    Push update

commit 1273d54135
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Sat Jul 15 00:42:01 2023 +0700

    Small change in updatelog

commit b649d9864d
Merge: 58df11fe 3dc61688
Author: C6H12O6 + NaCl + H2O <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Fri Jul 14 19:52:50 2023 +0700

    Merge branch '26F-Studio:main' into VietnameseTranslation

commit 58df11feb3
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Fri Jul 14 10:12:33 2023 +0700

    Some updates

commit aefde7a777
Merge: 7e00a7d7 3dc61688
Author: Imple Lee <80144331+ImpleLee@users.noreply.github.com>
Date:   Thu Jul 13 14:15:51 2023 +0800

    Merge branch 'main' into imple/revise-seq-generator

commit 3dc61688c4
Author: Imple Lee <80144331+ImpleLee@users.noreply.github.com>
Date:   Thu Jul 13 13:26:17 2023 +0800

    add new generator: bagP1inf (#916)

commit 6502af6003
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Thu Jul 13 09:10:20 2023 +0700

    Little update

commit 42f0671223
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Thu Jul 13 07:38:06 2023 +0700

    Minor changes

commit 7f2f608fd4
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Thu Jul 13 00:40:08 2023 +0700

    Nvm, little change

commit 8e0315762f
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Thu Jul 13 00:32:27 2023 +0700

    Add tips that missing

commit 7e00a7d764
Author: Imple Lee <80144331+ImpleLee@users.noreply.github.com>
Date:   Wed Jul 12 07:42:50 2023 +0800

    use `trueNextCount` as replay-visible next count

commit 8304cf655b
Author: Imple Lee <80144331+ImpleLee@users.noreply.github.com>
Date:   Wed Jul 12 07:27:22 2023 +0800

    make sequence generator independent of player

commit 7d4d664b5b
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Tue Jul 11 23:17:38 2023 +0700

    small update

commit 34c125504b
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Tue Jul 11 20:47:14 2023 +0700

    Push updates

commit c25e7a3d5b
Author: Imple Lee <80144331+ImpleLee@users.noreply.github.com>
Date:   Tue Jul 11 20:05:31 2023 +0800

    fix noInitSZO

commit b7b02ab5bc
Author: Imple Lee <80144331+ImpleLee@users.noreply.github.com>
Date:   Tue Jul 11 19:50:52 2023 +0800

    simplify sequence generator

commit f0e2a6d162
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Mon Jul 10 21:08:22 2023 +0700

    Revert change

commit b1b39a3a67
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Mon Jul 10 21:08:10 2023 +0700

    Remove most of unnecessary keywords

commit 47b201ed71
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Mon Jul 10 14:38:46 2023 +0700

    Update the manual

commit 6c59718274
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Mon Jul 10 12:12:34 2023 +0700

    Small update

commit 974895ca03
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Mon Jul 10 12:03:28 2023 +0700

    Tweak keywords

* Edit the index in Zictionary, not much

* Revert a change in dict.lua

* Small change in Vietnamese translation

* Fix strange behaviors and update Vnese Zictionary

* Push a little change

* Last update?

* Rewritten sentences

* Fix stuck help text (by not clearing search result when trigger with F1 key

* Fix stuck help text
(by not clearing search result when trigger with F1 key)

* Fix a small bug

* Update Vietnamese translation

* small change

* Block performance loss

* Update Vietnamese translation (to 1/2 works now)

* Replace unfittable word

* Temp update

* Just a big update

* Update both manual and UI translation

* Smaller fallback

* uh forgetting changes

* remove "not" in a line which was for debugging

* Sync work

* Update debug code

* Update debug code

* Update Zictionary + update for hot reloading code

* Last update

* Last update again

* Last update, TB;DR

* Commenting out the hotload function

* Merge from the stash

* shorten file

* Fix cannot use Backspace key

* Edit comment

* last update
This commit is contained in:
C6H12O6 + NaCl + H2O
2023-08-28 00:55:34 +07:00
committed by GitHub
parent df79e99fa5
commit 7f8e3e647a
5 changed files with 1178 additions and 1088 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -92,7 +92,7 @@ return {
exportSuccess="Đã xuất thành công", exportSuccess="Đã xuất thành công",
importSuccess="Đã nhập thành công", importSuccess="Đã nhập thành công",
dataCorrupted="Dữ liệu bị hỏng", dataCorrupted="Dữ liệu bị hỏng",
pasteWrongPlace="Bạn đã dán ở nhầm nơi rồi", pasteWrongPlace="Bạn dán đúng nơi không đấy?",
noFile="Thiếu tệp", noFile="Thiếu tệp",
nowPlaying="Đang phát:", nowPlaying="Đang phát:",
@@ -115,21 +115,21 @@ return {
-- Server's warn/error messages -- Server's warn/error messages
Techrater={ Techrater={
internalError="Lỗi nội bộ", internalError="Lỗi nội bộ\nInternal error",
databaseError="Lỗi cơ sở dữ liệu", databaseError="Lỗi cơ sở dữ liệu\nDatabase error",
invalidFormat="Định dạng không hợp lệ", invalidFormat="Định dạng không hợp lệ\nInvalid format",
invalidArguments="Đối số không hợp lệ", invalidArguments="Đối số không hợp lệ\nInvalid arguments",
tooFrequent="Quá thường xuyên", tooFrequent="Quá thường xuyên\nToo frequent",
notAvailable="Không khả dụng", notAvailable="Không khả dụng\nNot available",
noPermission="Không có quyền", noPermission="Không có quyền\nNo permission",
roomNotFound="Không tìm thấy phòng", roomNotFound="Không tìm thấy phòng\nRoom not found",
-- Controllers -- Controllers
WebSocket={ WebSocket={
invalidConnection="Kết nối không hợp lệ", invalidConnection="Kết nối không hợp lệ\nInvalid connection",
invalidAction="Hành động không hợp lệ", invalidAction="Hành động không hợp lệ\nInvalid action",
playerNotFound="Không tìm thấy người chơi", playerNotFound="Không tìm thấy người chơi\nPlayer not found",
connectionFailed="Kết nối thất bại", connectionFailed="Kết nối thất bại\nConnection failed",
}, },
-- Filters -- Filters
CheckPermission={ CheckPermission={
@@ -139,7 +139,7 @@ return {
ConnectionManager={ ConnectionManager={
playerInvalid="Người chơi không hợp lệ", playerInvalid="Người chơi không hợp lệ",
playerNotFound="Không tìm thấy người chơi", playerNotFound="Không tìm thấy người chơi",
connectionReplaced="Đã thay đổi kết nối", connectionReplaced="Đã thay đổi kết nối\nConnection replaced",
}, },
NoticeManager={ NoticeManager={
noticeNotFound="Không có thông báo", noticeNotFound="Không có thông báo",
@@ -187,7 +187,7 @@ return {
serverDown="Ối! Server sập! Hãy quay lại sau", serverDown="Ối! Server sập! Hãy quay lại sau",
requestFailed="Yêu cầu thất bại", requestFailed="Yêu cầu thất bại",
onlinePlayerCount="Trực tuyến: $1", onlinePlayerCount="$1 người đang trực tuyến",
createRoomSuccessed="Tạo phòng thành công", createRoomSuccessed="Tạo phòng thành công",
playerKicked="$1 đã đá $2 khỏi phòng", playerKicked="$1 đã đá $2 khỏi phòng",
becomeHost="$1 giờ là chủ phòng", becomeHost="$1 giờ là chủ phòng",
@@ -205,8 +205,9 @@ return {
customBGloadFailed="Định dạng ảnh không được hỗ trợ", customBGloadFailed="Định dạng ảnh không được hỗ trợ",
errorMsg="Techmino bị lỗi và cần phải được khởi động lại\nBạn có thể gửi error log để giúp dev sửa game nhanh hơn.", errorMsg="Techmino bị lỗi và cần phải được khởi động lại\nBạn có thể gửi error log để giúp dev sửa game nhanh hơn.",
tryAnotherBuild="CO LOI KHI GIAI MA UTF-8! Neu dang choi Techmino tren Windows: hay doi tu x86 sang x64 va nguoc lai.",
modInstruction="Hãy chọn mod bạn muốn.\nMod cho phép bạn có thể tùy biến game, nhưng cũng có thể làm game sập.\nĐiểm sẽ không được lưu lại khi dùng mod.", modInstruction="Hãy chọn modifier bạn muốn.\nMod cho phép bạn có thể tùy biến game, nhưng cũng có thể làm game sập.\nKể cả thế, hãy thoải mái và chơi theo cách của bạn!\nBạn có thể dùng bàn phím để chọn mod (giữ Shift để chọn lùi)\nĐiểm sẽ không được lưu lại khi dùng mod.",
modInfo={ modInfo={
next="NEXT\nGhi đè số gạch hiển thị ở cột NEXT", next="NEXT\nGhi đè số gạch hiển thị ở cột NEXT",
hold="HOLD\nGhi đè số lượng gạch được giữ ở cột HOLD", hold="HOLD\nGhi đè số lượng gạch được giữ ở cột HOLD",
@@ -215,7 +216,7 @@ return {
hideBlock="Hide Current Piece\nGạch đang rơi trong bảng sẽ bị tàng hình", hideBlock="Hide Current Piece\nGạch đang rơi trong bảng sẽ bị tàng hình",
hideGhost="No Ghost\nBóng gạch sẽ bị tắt", hideGhost="No Ghost\nBóng gạch sẽ bị tắt",
hidden="Hide Locked Pieces\nGạch sẽ bị ẩn sau một khoảng thời gian", hidden="Hide Locked Pieces\nGạch sẽ bị ẩn sau một khoảng thời gian",
hideBoard="Hide Board\nChe một phần của bảng hay che nguyên bảng", hideBoard="Hide Board\nChe một phần hay nguyên bảng",
flipBoard="Flip Board\nXoay bảng hay lật bảng", flipBoard="Flip Board\nXoay bảng hay lật bảng",
dropDelay="Gravity\nĐiều chỉnh tốc độ rơi của gạch", dropDelay="Gravity\nĐiều chỉnh tốc độ rơi của gạch",
lockDelay="Lock Delay\nGhi đè thời gian chờ khoá của gạch", lockDelay="Lock Delay\nGhi đè thời gian chờ khoá của gạch",
@@ -244,7 +245,7 @@ return {
"Lỗi di chuyển:", "Lỗi di chuyển:",
}, },
radar={"DEF","OFF","ATK","SEND","SPD","DIG"}, radar={"DEF","OFF","ATK","SEND","SPD","DIG"},
radarData={"DPM","ADPM","APM","SPM","LPM","DPM"}, radarData={"DPM","ADPM","APM","SPM","L'PM","DPM"},
stat={ stat={
"Số lần bật trò chơi:", "Số lần bật trò chơi:",
"Số ván đã chơi:", "Số ván đã chơi:",
@@ -266,9 +267,11 @@ return {
"Chúng tôi đánh giá cao mọi đề xuất và báo cáo lỗi do các bạn gửi đến", "Chúng tôi đánh giá cao mọi đề xuất và báo cáo lỗi do các bạn gửi đến",
"Hãy đảm bảo trò chơi được tải về từ nguồn chính thức", "Hãy đảm bảo trò chơi được tải về từ nguồn chính thức",
"vì các nguồn khác có thể không an toàn.", "vì các nguồn khác có thể không an toàn.",
"Techmino chỉ hỏi quyền được rung điện thoại và kết nối Internet.",
"",
"Tác giả KHÔNG CHỊU TRÁCH NHIỆM với bất kỳ bản sửa đổi nào.", "Tác giả KHÔNG CHỊU TRÁCH NHIỆM với bất kỳ bản sửa đổi nào.",
FNNS and "" or "Trò chơi này hoàn toàn miễn phí! Nếu các bạn thích nó, các bạn có thể ủng hộ chúng tôi!", FNNS and "" or "Trò chơi này hoàn toàn miễn phí! Nếu các bạn thích nó, các bạn có thể ủng hộ chúng tôi!",
FNNS and "" or "Kiểm tra Zictionary để có thêm thông tin chi tiết", FNNS and "" or "Để biết t.tin chi tiết, hãy tra Zictionary",
}, },
staff={ staff={
"ĐƯỢC SÁNG TÁC BỞI MrZ", "ĐƯỢC SÁNG TÁC BỞI MrZ",
@@ -311,11 +314,12 @@ return {
"(旋律星萤)", "(旋律星萤)",
"(T0722)", "(T0722)",
"", "",
"Minh hoạ", "Hiệu ứng âm thanh & Voice Pack",
"Miya", "Miya",
"Mono",
"Xiaoya", "Xiaoya",
"葉枭", "Mono",
"MrZ",
"Trebor",
"", "",
"Thiết kế âm nhạc", "Thiết kế âm nhạc",
"MrZ", "MrZ",
@@ -388,7 +392,7 @@ return {
]], ]],
support="Hỗ trợ người làm game", support="Hỗ trợ người làm game",
dict={ dict={
sizeChanged="Đã đổi cỡ phông: $1", sizeChanged="Đã chỉnh cỡ phông: $1",
sizeReset="Đã đặt lại cỡ phông!", sizeReset="Đã đặt lại cỡ phông!",
helpText= helpText=
[[ [[
@@ -475,7 +479,7 @@ C. Tay cầm chơi game (Gamepad):
}, },
net_newRoom={ net_newRoom={
title="Cấu hình phòng", title="Cấu hình phòng",
roomName="Tên phòng (Mặc định: [username]'s room)", roomName="Tên phòng (Mặc định: \"[username]'s room\")",
password="Mật khẩu", password="Mật khẩu",
description="Mô tả phòng", description="Mô tả phòng",
@@ -550,7 +554,7 @@ C. Tay cầm chơi game (Gamepad):
block="Hiện gạch đang rơi", block="Hiện gạch đang rơi",
smooth="Rơi mượt", smooth="Rơi mượt",
upEdge="Gạch 3D", upEdge="Gạch 3D",
bagLine="Vạch tách Túi gạch", bagLine="Vạch chia túi gạch",
ghostType="Loại bóng gạch", ghostType="Loại bóng gạch",
ghost="Độ bóng", ghost="Độ bóng",
@@ -562,7 +566,7 @@ C. Tay cầm chơi game (Gamepad):
dropFX="H.ứng Thả nhẹ", dropFX="H.ứng Thả nhẹ",
moveFX="H.ứng Di chuyển", moveFX="H.ứng Di chuyển",
clearFX="H.ứng Xóa hàng", clearFX="H.ứng Xóa hàng",
splashFX="H.ứng Gạch “rụng”", splashFX="H.ứng Gạch \"rụng\"",
shakeFX="Độ nảy bảng", shakeFX="Độ nảy bảng",
atkFX="H.ứng Tấn công", atkFX="H.ứng Tấn công",
@@ -755,7 +759,7 @@ C. Tay cầm chơi game (Gamepad):
push="Thêm Hàng (K)", push="Thêm Hàng (K)",
del="Xoá Hàng (L)", del="Xoá Hàng (L)",
demo="Không hiện “×”", demo="Không hiện \"×\"",
newPg="Trang mới (N)", newPg="Trang mới (N)",
delPg="Xoá trang (M)", delPg="Xoá trang (M)",
@@ -883,7 +887,7 @@ C. Tay cầm chơi game (Gamepad):
['sprint_40l']= {"Sprint", "40L", "Xoá 40 hàng!"}, ['sprint_40l']= {"Sprint", "40L", "Xoá 40 hàng!"},
['sprint_100l']= {"Sprint", "100L", "Xoá 100 hàng!"}, ['sprint_100l']= {"Sprint", "100L", "Xoá 100 hàng!"},
['sprint_400l']= {"Sprint", "400L", "Xoá 400 hàng!"}, ['sprint_400l']= {"Sprint", "400L", "Xoá 400 hàng!"},
['sprint_1000l']= {"Sprint", "1,000L", "Xoá 1,000 hàng!"}, ['sprint_1000l']= {"Sprint", "1000L", "Xoá 1000 hàng!"},
['sprintPenta']= {"Sprint", "PENTOMINO", "Xoá 40 hàng với 18 pentomino"}, ['sprintPenta']= {"Sprint", "PENTOMINO", "Xoá 40 hàng với 18 pentomino"},
['sprintMPH']= {"Sprint", "MPH", "Memoryless\nPreviewless\nHoldless"}, ['sprintMPH']= {"Sprint", "MPH", "Memoryless\nPreviewless\nHoldless"},
['sprint123']= {"Sprint", "M123", "Xoá 40 hàng chỉ với monomino, domino, và trimino"}, ['sprint123']= {"Sprint", "M123", "Xoá 40 hàng chỉ với monomino, domino, và trimino"},
@@ -917,8 +921,8 @@ C. Tay cầm chơi game (Gamepad):
['round_h']= {"Turn-Based", "KHÓ", "Chơi theo lượt và đánh bại AI!"}, ['round_h']= {"Turn-Based", "KHÓ", "Chơi theo lượt và đánh bại AI!"},
['round_l']= {"Turn-Based", "RẤT KHÓ", "Chơi theo lượt và đánh bại AI!"}, ['round_l']= {"Turn-Based", "RẤT KHÓ", "Chơi theo lượt và đánh bại AI!"},
['round_u']= {"Turn-Based", "THÁCH ĐẤU", "Chơi theo lượt và đánh bại AI!"}, ['round_u']= {"Turn-Based", "THÁCH ĐẤU", "Chơi theo lượt và đánh bại AI!"},
['big_n']= {"Big", "THƯỜNG", "Chơi với một bảng nhỏ hơn!"}, ['big_n']= {"Big", "THƯỜNG", "Chơi với một bảng 5 × 10!"},
['big_h']= {"Big", "KHÓ", "Chơi với một bảng nhỏ hơn!"}, ['big_h']= {"Big", "KHÓ", "Chơi với một bảng 5 × 10!"},
['master_n']= {"Master", "THƯỜNG", "Dành cho người mới chơi 20G"}, ['master_n']= {"Master", "THƯỜNG", "Dành cho người mới chơi 20G"},
['master_h']= {"Master", "KHÓ", "Dành cho người chơi đã quen 20G"}, ['master_h']= {"Master", "KHÓ", "Dành cho người chơi đã quen 20G"},
['master_m']= {"Master", "M21", "Dành cho cao thủ 20G"}, ['master_m']= {"Master", "M21", "Dành cho cao thủ 20G"},
@@ -970,8 +974,8 @@ C. Tay cầm chơi game (Gamepad):
['tech_l_plus']= {"Tech", "RẤT KHÓ+", "Chỉ được clear Spin hoặc PC"}, ['tech_l_plus']= {"Tech", "RẤT KHÓ+", "Chỉ được clear Spin hoặc PC"},
['tech_finesse']= {"Tech", "HOÀN HẢO", "Không được phép có lỗi di chuyển!"}, ['tech_finesse']= {"Tech", "HOÀN HẢO", "Không được phép có lỗi di chuyển!"},
['tech_finesse_f']= {"Tech", "HOÀN HẢO+", "Không được phép có lỗi di chuyển hoặc loại Xoá hàng thường!"}, ['tech_finesse_f']= {"Tech", "HOÀN HẢO+", "Không được phép có lỗi di chuyển hoặc loại Xoá hàng thường!"},
--['tech_finesse_lock']= {"Tech", "FINESSE LOCK", "No finesse errors, combined with limited inputs!"}, ['tech_finesse_lock']= {"Tech", "FINESSE LOCK", "Không được mắc lỗi di chuyển hoặc bạn không thể điều khiển gạch!"},
--['tech_finesse_lock_f']= {"Tech", "FINESSE+ LOCK", "No normal clears or finesse errors combined with limited inputs!"}, ['tech_finesse_lock_f']= {"Tech", "FINESSE+ LOCK", "Không được mắc lỗi di chuyển hoặc bạn không thể điều khiển gạch! Và không thể dùng kiểu xóa thường!"},
['tsd_e']= {"TSD Challenge", "DỄ", "Chỉ được làm T-Spin Double!"}, -- Chỉ được clear… ['tsd_e']= {"TSD Challenge", "DỄ", "Chỉ được làm T-Spin Double!"}, -- Chỉ được clear…
['tsd_h']= {"TSD Challenge", "KHÓ", "Chỉ được làm T-Spin Double!"}, ['tsd_h']= {"TSD Challenge", "KHÓ", "Chỉ được làm T-Spin Double!"},
['tsd_u']= {"TSD Challenge", "THÁCH ĐẤU", "Chỉ được làm T-Spin Double!"}, ['tsd_u']= {"TSD Challenge", "THÁCH ĐẤU", "Chỉ được làm T-Spin Double!"},
@@ -994,9 +998,9 @@ C. Tay cầm chơi game (Gamepad):
-- Lưu ý dành cho những bạn sửa phần này: Nguyên đoạn này là lấy từ bản tiếng Anh -- Lưu ý dành cho những bạn sửa phần này: Nguyên đoạn này là lấy từ bản tiếng Anh
-- Nhưng User670 khi dịch từ tiếng Trung sang đã chọn lược bỏ bớt một số câu -- Nhưng User670 khi dịch từ tiếng Trung sang đã chọn lược bỏ bớt một số câu
":dcgpray:", ":dcgpray:",
"Không thể mở Techmino.app vì người làm game đã bay màu", "Không thể mở \"Techmino.app\" vì người làm game đã bay màu",
"Techmino.app là vi rút đấy. Xoá đi", "\"Techmino.app\" là vi rút đấy. Xoá đi",
"TechminOS", "\"TechminOS\"",
"(RURU)RFR2URU(RURF)", "(RURU)RFR2URU(RURF)",
"\\jezevec/\\jezevec/\\jezevec/", "\\jezevec/\\jezevec/\\jezevec/",
"\\osk/\\osk/\\osk/", "\\osk/\\osk/\\osk/",
@@ -1006,10 +1010,10 @@ C. Tay cầm chơi game (Gamepad):
"1 next 0 hold", "1 next 0 hold",
"1 next 1 hold!", "1 next 1 hold!",
"1 next 6 hold!", "1 next 6 hold!",
"20G thực chất là một chế độ mới đấy!",
"Kỷ lục Sprint 40 hàng: 14.188s (Lurny)",
"6 next 1 hold!", "6 next 1 hold!",
"6 next 6 hold?!", "6 next 6 hold?!",
"20G thực chất là một chế độ mới đấy!",
"Kỷ lục Sprint 40 hàng: 14.188s (Lurny)",
"Rất gần nhưng lại rất xa", "Rất gần nhưng lại rất xa",
"ALL SPIN!", "ALL SPIN!",
"Am G F G", "Am G F G",
@@ -1028,7 +1032,7 @@ C. Tay cầm chơi game (Gamepad):
"Đừng để những thứ nhỏ nhặt làm bạn nản chí!", "Đừng để những thứ nhỏ nhặt làm bạn nản chí!",
"Đây không phải là lỗi, đây là tính năng!", "Đây không phải là lỗi, đây là tính năng!",
"Hệ thống xoay gạch của Techmino rất đẹp trai!", "Hệ thống xoay gạch của Techmino rất đẹp trai!",
"Em rất tốt nhưng anh rất tiếc…", "Em rất tốt nhưng anh rất tiếc…", -- EXCELLENT! But… let's go better next time
"Đừng quên xem qua phần cài đặt!", "Đừng quên xem qua phần cài đặt!",
"Nếu bạn thấy có vấn đề gì, hãy lên trang GitHub báo lại cho chúng tôi!", "Nếu bạn thấy có vấn đề gì, hãy lên trang GitHub báo lại cho chúng tôi!",
"Game xếp gạch nhưng có thêm chế độ FFA!", "Game xếp gạch nhưng có thêm chế độ FFA!",
@@ -1064,7 +1068,7 @@ C. Tay cầm chơi game (Gamepad):
"Một số yêu cầu để đạt được rank X là rất khó, kể cả đối với những người giỏi nhất", "Một số yêu cầu để đạt được rank X là rất khó, kể cả đối với những người giỏi nhất",
"Bạn sẽ sớm được chơi với mọi người trên thế giới thôi", "Bạn sẽ sớm được chơi với mọi người trên thế giới thôi",
"Split clear sắp ra mắt!", "Split clear sắp ra mắt!",
"Techmino là sự kết hợp giữa technique” và “tetromino", "Techmino là sự kết hợp giữa \"technique\"\"tetromino\"",
"Hình như mình nghiện Techmino rồi!", "Hình như mình nghiện Techmino rồi!",
"Techmino trên Nspire-CX ư? Có thật đấy! Mà khoan đã, hai game này không giống nhau chút nào cả!", "Techmino trên Nspire-CX ư? Có thật đấy! Mà khoan đã, hai game này không giống nhau chút nào cả!",
"TetroDictionary đã ra mắt (có bản tiếng Việt rồi, nhưng mà hơi bruh, thôi vẫn đủ xài!)", "TetroDictionary đã ra mắt (có bản tiếng Việt rồi, nhưng mà hơi bruh, thôi vẫn đủ xài!)",
@@ -1113,7 +1117,7 @@ C. Tay cầm chơi game (Gamepad):
{C.N,"Lua",C.Z," No.1"}, {C.N,"Lua",C.Z," No.1"},
{C.P,"T-spin!"}, {C.P,"T-spin!"},
{C.R,"DMCA là gì?"}, {C.R,"DMCA là gì?"},
{C.R,"Luật sở hữu trí tuệ"}, {C.R,"\"Luật sở hữu trí tuệ\""},
{C.R,"DD",C.Z," Cannon=",C.P,"TS",C.R,"D",C.Z,"+",C.P,"TS",C.R,"D",C.Z," Cannon"}, {C.R,"DD",C.Z," Cannon=",C.P,"TS",C.R,"D",C.Z,"+",C.P,"TS",C.R,"D",C.Z," Cannon"},
{C.R,"DT",C.Z," Cannon=",C.P,"TS",C.R,"D",C.Z,"+",C.P,"TS",C.R,"T",C.Z," Cannon"}, {C.R,"DT",C.Z," Cannon=",C.P,"TS",C.R,"D",C.Z,"+",C.P,"TS",C.R,"T",C.Z," Cannon"},
{C.R,"LrL ",C.G,"RlR ",C.B,"LLr ",C.O,"RRl ",C.P,"RRR ",C.P,"LLL ",C.C,"FFF ",C.Y,"RfR ",C.Y,"RRf ",C.Y,"rFF"}, {C.R,"LrL ",C.G,"RlR ",C.B,"LLr ",C.O,"RRl ",C.P,"RRR ",C.P,"LLL ",C.C,"FFF ",C.Y,"RfR ",C.Y,"RRf ",C.Y,"rFF"},
@@ -1128,7 +1132,7 @@ C. Tay cầm chơi game (Gamepad):
-- English UK: /'tɛkminəʊ/; English US: /tɛkminoʊ/ -- English UK: /'tɛkminəʊ/; English US: /tɛkminoʊ/
"Techmino phát âm trong tiếng Anh là /'tɛkminəʊ/; còn tiếng Mỹ là /tɛkminoʊ/.", "Techmino phát âm trong tiếng Anh là /'tɛkminəʊ/; còn tiếng Mỹ là /tɛkminoʊ/.",
-- --
"Ủa Techmino phải đọc là Tét-mai-nô hay là Tét-mi-nô vậy?", "Ủa Techmino phải đọc là \"Tét-mai-nô\" hay là \"Tét-mi-nô\" vậy?",
-- Where to download Techmino? -- Where to download Techmino?
"Tải Techmino ở đâu vậy? Trên GitHub đấy!", "Tải Techmino ở đâu vậy? Trên GitHub đấy!",
-- Techmino's birthday -- Techmino's birthday
@@ -1140,14 +1144,14 @@ C. Tay cầm chơi game (Gamepad):
-- 2021 was the year of Techmino's online debut. -- 2021 was the year of Techmino's online debut.
"2021 là năm ra mắt chế độ trực tuyến của Techmino.", "2021 là năm ra mắt chế độ trực tuyến của Techmino.",
-- The Chinese name of this game is 'Block Research Institute'. -- The Chinese name of this game is 'Block Research Institute'.
"Tên chính thức của game là “方块研究所” (Block Research Institute).", "Tên chính thức của game là \"方块研究所\" (Block Research Institute).",
"Một tên khác của game này là Tiehu Minuo", "Một tên khác của game này là \"Tiehu Minuo\"",
-- This game is not called Teachmino -- This game is not called Teachmino
"Tên game không phải là Teachmino!", "Tên game không phải là Teachmino!",
-- --
"Muốn game có thứ gì đó đặc biệt lúc mở game? Hãy chỉnh đồng hồ trên điện thoại vào một ngày đặc biệt nào đó đi!", "Muốn game có thứ gì đó đặc biệt lúc mở game? Hãy chỉnh đồng hồ trên điện thoại vào một ngày đặc biệt nào đó đi!",
-- --
"Trừ khi bạn đang chơi Techmino: O-spin is a lie!)", "Trừ khi bạn đang chơi Techmino: \"O-spin is a lie!\")",
-- techminohaowan -- techminohaowan
"Hảo Techmino", "Hảo Techmino",
-- --
@@ -1159,14 +1163,14 @@ C. Tay cầm chơi game (Gamepad):
-- "Meow!" -- "Meow!"
"Meow!", "Meow!",
-- Getting popup messages in the middle of a game? Go to settings and disable them. -- Getting popup messages in the middle of a game? Go to settings and disable them.
"Thông báo tự dưng hiện lên giữa game? Vào cài đặt của app tạo ra popup và tắt nó đi.", "Thông báo tự dưng hiện lên giữa game? Vào cài đặt tắt nó đi!",
"Do Not Distrub (Không làm phiền) sẽ là cứu tinh của bạn khi có quá nhiều thông báo cùng làm phiền.", "Hãy bật Do Not Distrub (Không làm phiền) nếu bạn có quá nhiều thông báo.",
-- Don't play with your phone if your homework isn't finished. -- Don't play with your phone if your homework isn't finished.
"Đừng chơi điện thoại khi bài tập về nhà còn chưa hoàn thành.", "Đừng chơi điện thoại khi bài tập về nhà còn chưa hoàn thành.",
-- Enabling vibration on some mobile systems may cause severe lag." -- Enabling vibration on some mobile systems may cause severe lag."
"Bật rung trên điện thoại có thể khiến máy giật lag.", "Bật rung trên điện thoại có thể khiến máy phải thở oxy.",
-- Eat the button? Really? I suggest you play it back to see if you pressed it and how long it took you to press it" -- Eat the button? Really? I suggest you play it back to see if you pressed it and how long it took you to press it"
"Phím không ăn? Giỡn à? Xem lại replay để chắc rằng ông đã nhấn và xem thử mất bao nhiêu thời gian để ông nhấn phím đó.", "Phím không ăn? Đùa à? Xem lại replay để chắc rằng ông đã nhấn và xem thử mất bao nhiêu thời gian để ông nhấn phím đó.",
-- Probably someone will read the tip -- Probably someone will read the tip
"Chắc chắn có người đang đọc cái dòng chữ nhỏ đang chạy ở dưới này.", "Chắc chắn có người đang đọc cái dòng chữ nhỏ đang chạy ở dưới này.",
-- It seems like no one has reached a high level by playing with their feet yet. -- It seems like no one has reached a high level by playing with their feet yet.
@@ -1178,17 +1182,17 @@ C. Tay cầm chơi game (Gamepad):
-- Skilled players of the Classic Tetris game are also formidable; don't underestimate them -- Skilled players of the Classic Tetris game are also formidable; don't underestimate them
"Xếp gạch cổ điển cũng không đơn giản gì như xếp gạch hiện đại đâu. Đừng có mà xem thường những người chơi hệ cổ điển!", "Xếp gạch cổ điển cũng không đơn giản gì như xếp gạch hiện đại đâu. Đừng có mà xem thường những người chơi hệ cổ điển!",
-- Classic Tetris and Modern Tetris are two different games; being skilled in one doesn't mean you'll be skilled in the other. You have to start from scratch. -- Classic Tetris and Modern Tetris are two different games; being skilled in one doesn't mean you'll be skilled in the other. You have to start from scratch.
"Xếp gạch cổ điển và xếp gạch hiện đại là hai thể loại game khác nhau đấy! Giỏi một trong hai không có nghĩa là bạn giỏi cả bên còn lại đâu. Bạn phải học từ đầu đấy! Không đơn giản đâu.", "Xếp gạch cổ điển và xếp gạch hiện đại là hai thể loại game khác nhau đấy! Giỏi một trong hai chưa chắc bạn giỏi cả bên còn lại đâu. Bạn phải học lại từ đầu đấy",
-- To protect the players' well-being, the game has a temporary and simplified anti-addiction system! (But you probably won't trigger it, haha) -- To protect the players' well-being, the game has a temporary and simplified anti-addiction system! (But you probably won't trigger it, haha)
"Để tránh việc người chơi nào đó chơi quá lâu, game đã có hệ thống chống nghiện đơn giản tạm thời (Nhưng bạn có lẽ sẽ không bao giờ kích hoạt chúng đâu, haha)", "Để tránh việc người chơi nào đó chơi quá lâu, game đã có hệ thống chống nghiện đơn giản tạm thời (Nhưng bạn có lẽ sẽ không bao giờ kích hoạt chúng đâu, haha)",
-- Basic stacking and digging skills are crucial; those who neglect these two aspects often regret it (trust me) -- Basic stacking and digging skills are crucial; those who neglect these two aspects often regret it (trust me)
{"Kỹ năng xếp lên vào đào xuống là 2 kỹ năng RẤT quan trọng; những ai coi thường hoặc bỏ bê hai khía cạnh này thường hay bị bón hành súp mặt lờ (tin ",C.W,"MrZ",C.Z," đi!)"}, {"Kỹ năng xếp lên vào đào xuống là 2 kỹ năng RẤT quan trọng; những ai (đã/từng) coi thường/bỏ bê hai khía cạnh này thường hay bị bón hành súp mặt lờ (tin ",C.W,"MrZ",C.Z," đi!)"},
-- Even if you're topped out, don't give up; every line of garbage can potentially become your weapon. -- Even if you're topped out, don't give up; every line of garbage can potentially become your weapon.
"Ngay cả khi bạn sắp bị top out, đừng bỏ cuộc; vì từng hàng rác có tiềm năng trở thành vũ khí của bạn!", "Ngay cả khi bạn sắp bị top out, đừng bỏ cuộc; vì từng hàng rác có tiềm năng trở thành vũ khí của bạn!",
-- The video shown above is not a recording; it's the robot playing in real-time. -- The video shown above is not a recording; it's the robot playing in real-time.
"Cái ở trên là replay hả? Không, là AI đang chơi trong thời gian thực đấy!", "Cái ở trên là replay hả? Không, là AI đang chơi trong thời gian thực đấy!",
-- Extended gaming sessions will gradually deteriorate your performance! Remember to take breaks when playing for a long time~ -- Extended gaming sessions will gradually deteriorate your performance! Remember to take breaks when playing for a long time~
"Những lần chơi game kéo dài thường xuyên dần dần làm giảm hiệu suất chơi game (trong trường hợp tệ nhất bạn có thể bị stall). Nhớ nghỉ ngơi khi chơi lâu", "THường xuyên chơi game lâu có thể khiến bạn có thể bị đuối sức (cả thể chất và tinh thần, tệ nhất có thể bị stall). Hãy nhớ nghỉ giải lao sau khi chơi lâu nhé!",
-- Be careful of tenosynovitis! -- Be careful of tenosynovitis!
{C.R,"CẢNH BÁO! ",C.Z,"Bệnh viêm bao gân cổ tay!"}, {C.R,"CẢNH BÁO! ",C.Z,"Bệnh viêm bao gân cổ tay!"},
-- The button with a question mark in the bottom-right corner is the game manual (assuming you haven't enabled the concise mode). -- The button with a question mark in the bottom-right corner is the game manual (assuming you haven't enabled the concise mode).
@@ -1216,12 +1220,15 @@ C. Tay cầm chơi game (Gamepad):
-- --
-- IT JOKES -- IT JOKES
"git clone --recursive https://github.com/26F-Studio/Techmino.git", "git clone --recursive https://github.com/26F-Studio/Techmino.git",
"git merge --rebase", "git commit -m \".\"",
"git pull = git fetch + git merge",
"git push",
"git push -f",
"git stash", "git stash",
"git stash apply", "git stash apply",
"git submodule update", "git submodule update",
"git commit -m \".\"", "git merge --rebase",
"git push -f", "git merge --squash",
"Lua No.1", "Lua No.1",
"sudo rm -rf /*", "sudo rm -rf /*",
"shutdown /s /t 0", -- Turn off computer completely (no Fast Boot) "shutdown /s /t 0", -- Turn off computer completely (no Fast Boot)
@@ -1233,14 +1240,6 @@ C. Tay cầm chơi game (Gamepad):
"Techmino đã đột ngột dừng lại", "Techmino đã đột ngột dừng lại",
-- If you have a real interest in programming, I recommend Lua. Easy installation, simple syntax, and fast execution speed. Stay away from boring school programming (haha) -- If you have a real interest in programming, I recommend Lua. Easy installation, simple syntax, and fast execution speed. Stay away from boring school programming (haha)
{"Nếu bạn thực sự có hứng thú trong lập trình, tôi đề xuất sử dụng Lua. Dễ cài đặt, cú pháp đơn giản, tốc độ thực thi nhanh. Hãy tránh xa những tiết học lập trình chán ngắt ở trên trường luôn đi! (haha) - ",C.W,"MrZ",C.Z," said."}, {"Nếu bạn thực sự có hứng thú trong lập trình, tôi đề xuất sử dụng Lua. Dễ cài đặt, cú pháp đơn giản, tốc độ thực thi nhanh. Hãy tránh xa những tiết học lập trình chán ngắt ở trên trường luôn đi! (haha) - ",C.W,"MrZ",C.Z," said."},
-- COLD CLEAR PATH
"Đường dẫn của Cold Clear: "..(
SYSTEM=='Windows' and "<root>\\CCloader.dll" or
SYSTEM=='Linux' and "<root>/CCloader.so" or
SYSTEM=='Android' and "<root>/libAndroid/arm64-v8a (hoặc armeabi-v7a)/CCloader.so" or
SYSTEM=='OS X' and "<root/CCloader.dylib" or
"(… Tui… không biết :3)"
),
-- --
-- CHANGELOG -- CHANGELOG
{C.lW, "V0.0.091726",": ",C.Z, "Đã thêm hệ thống xoay TRS"}, {C.lW, "V0.0.091726",": ",C.Z, "Đã thêm hệ thống xoay TRS"},
@@ -1291,11 +1290,11 @@ C. Tay cầm chơi game (Gamepad):
{C.W,"MrZ",C.Z," còn có một biệt danh dễ thương hơn, đó là ",C.W,"Z-Chan"}, {C.W,"MrZ",C.Z," còn có một biệt danh dễ thương hơn, đó là ",C.W,"Z-Chan"},
"Có hơn 400 mẹo bạn có thể nhìn thấy ở đây, là cái dòng chữ này, nếu bạn đang chơi Techmino tiếng Trung", "Có hơn 400 mẹo bạn có thể nhìn thấy ở đây, là cái dòng chữ này, nếu bạn đang chơi Techmino tiếng Trung",
{C.lSea,"Sea: ",C.Z,"Tui không có đủ mặn để viết joke. Nên một số câu đùa đang chạy ở đây được viết bởi ",C.yellow,"Shard Nguyễn",C.Z,". Em cảm ơn anh!"}, {C.lSea,"Sea: ",C.Z,"Tui không có đủ mặn để viết joke. Nên một số câu đùa đang chạy ở đây được viết bởi ",C.yellow,"Shard Nguyễn",C.Z,". \"Em cảm ơn anh!\""},
{C.lSea,"Sea: ",C.Z,"Tui đang tự hỏi liệu còn bao nhiêu lỗi tui bỏ sót lúc dịch game không? Tính ra tui đã cập nhật đi cập nhật lại cũng 4-5 lần rồi."}, {C.lSea,"Sea: ",C.Z,"Tui đang tự hỏi liệu còn bao nhiêu lỗi tui bỏ sót lúc dịch game không? Tính ra tui đã cập nhật đi cập nhật lại cũng 4-5 lần rồi."},
{"Cộng đồng Tetris ",C.R,"Việt ",C.lY,"Nam ",C.Z,": https://discord.gg/jX7BX9g"}, -- Tetris Vietnam {"Cộng đồng Tetris ",C.R,"Việt ",C.lY,"Nam ",C.Z,": https://discord.gg/jX7BX9g"}, -- Tetris Vietnam
{C.W,"MrZ ",C.Z,"vẫn chưa biết chọn tên nào để đặt cho từ điển của Techmino. Hiện có 3 tên: Zictionary”, “TetroDictionary” và “Little Z Dictionary"}, {C.W,"MrZ ",C.Z,"vẫn chưa biết chọn tên nào để đặt cho từ điển của Techmino. Hiện có 3 tên: \"Zictionary\", \"TetroDictionary\"\"Little Z Dictionary\""},
"Ủa tao nhớ game này tên là xếp hình mà? Ừ thì đúng nhưng để giữ độ đồng nhất và tránh bị cấn mồm thì nên gọi game này là game xếp gạch.", "Ủa tao nhớ game này tên là xếp hình mà? Ừ thì đúng nhưng để giữ độ đồng nhất và tránh bị cấn mồm thì nên gọi game này là game xếp gạch.",
"Mình xin phép ủng hộ cho player này. Ủng hộ càng nhiều tỉ lệ thắng càng cao!", "Mình xin phép ủng hộ cho player này. Ủng hộ càng nhiều tỉ lệ thắng càng cao!",
{"Aiiiii mua cần phô mai ủng hộ ",C.yellow,"Chủ tiệm phô mai",C.Z," không?"}, -- A joke {"Aiiiii mua cần phô mai ủng hộ ",C.yellow,"Chủ tiệm phô mai",C.Z," không?"}, -- A joke

View File

@@ -1,119 +1,122 @@
Lối chơi: Lối chơi:
Hệ thống sẽ cung cấp bạn các tetromino (gạch 4 ô), Hệ thống sẽ cấp cho người chơi 7 loại tetromino (gạch 4 ô) bao gồm: Z, S, J, L, I, O, T;
có tổng 7 loại, và người chơi cần điều khiển chúng (di chuyển sang trái và phải; xoay 90, 180, hoặc 270 độ). và người chơi cần điều khiển chúng (di chuyển sang trái và phải; xoay 90 / 180 / 270 độ).
Cứ mỗi hàng được lấp đầy trong bảng bởi các viên gạch, chúng sẽ bị xóa ra khỏi bảng. Cứ mỗi hàng được lấp đầy trong bảng bởi các viên gạch, chúng sẽ bị xóa ra khỏi bảng.
Nếu có đối thủ, đối thủ sẽ bị tấn công mạnh hoặc nhẹ tùy theo số hàng bạn gửi. Nếu có đối thủ, đối thủ sẽ bị tấn công mạnh hoặc nhẹ tùy theo số hàng bạn gửi.
Chơi hết hoặc đạt mục tiêu của cấp độ để thắng. Chơi hết hoặc đạt mục tiêu của cấp độ để thắng.
Hệ thống xoay gạch: Hệ thống xoay gạch:
Mặc định sẽ sử dụng TRS (Techmino Rotation System - Hệ thống xoay gạch Techmino). Mặc định sẽ sử dụng TRS (Techmino Rotation System Hệ thống xoay gạch Techmino).
Game cho phép người chơi chọn các hệ thống xoay gạch phổ biến khác (thường không cần thiết) Game cho phép người chơi chọn các hệ thống xoay gạch phổ biến khác (thường không cần thiết)
Cách phát hiện spin: Cách phát hiện spin: bằng cách sử dụng hệ thống điểm.
Thỏa mãn quy tắc 3 góc” +2 điểm [*] +2 điểm nếu thỏa mãn quy tắc "3 góc"
Thỏa mãn quy tắc bất động” +2 điểm +2 điểm nếu thỏa mãn quy tắc "bất động"
- Cứ một trong hai điều kiện trên được thỏa mãn, thì sẽ được tính là Spin +1 điểm nếu chưa kiểm tra vị trí kick thứ hai trong bảng kick
Nếu việc xoay thỏa mãn ngay vị trí đầu tiên trong bảng đá tường, +1 điểm * Chỉ cần điều kiện 1 hay điều kiện 2 thỏa mãn thì cú xoay đó được tính là Spin *
- Spin sẽ là Mini nếu: Spin sẽ là Mini nếu xảy ra 1 trong 3 điều kiện sau:
Tổng điểm sau khi kiểm tra các quy tắc chỉ được 2 điểm Tổng điểm sau khi kiểm tra các quy tắc chỉ được 2 điểm,
HOẶC Gạch dùng để làm là S, Z, J, L hay T,
Gạch dùng để làm là S, Z, J, L hoặc T vẫn còn tàn dư của gạch đó sau khi xóa hàng. Gạch đó không được xóa hoàn toàn.
[*] LƯU Ý: quy tắc “góc sau lưng gạch” có thể ảnh hưởng đến kết quả kiểm tra của quy tắc “3 góc”!
Hệ thống tấn công: Hệ thống tấn công:
Kiểu xóa Đặc biệt (Special clear): Kiểu xóa Đặc biệt (Special clear):
Kiểu xóa Đặc biệt chỉ trường hợp bạn thực hiện Spin, Techrash/Techrash+, PC/HPC. Kiểu xóa Đặc biệt chỉ trường hợp bạn thực hiện Spin, Techrash, Techrash+ — xóa 5 hàng hoặc hơn, PC, HPC.
Kiểu xóa Đặc biệt có thể sạc đầy thanh B2B. Kiểu xóa Đặc biệt có thể sạc đầy thanh B2B.
Kiểu xóa Siêu cấp (Super clear): Kiểu xóa Siêu cấp (Super clear):
Kiểu xóa Siêu cấp chỉ trường hợp bạn thực hiện Kiểu xóa Đặc biệt khi thanh B2B không trống. Kiểu xóa Đặc biệt nhưng được thực hiện với B2B hoặc B3B
Kiểu xóa Đặc biệt (spin): gửi đòn tấn công (số hàng xóa × 2) hàng, Kiểu xóa Đặc biệt (spin): Gửi gấp đôi số hàng vừa xóa.
- B2B gửi thêm 1/1/2/4/8 cho Spin Đơn/Spin Đôi/Spin Tam/Techrash/Techrash+ B2B gửi thêm 1/1/2/4/8 cho Spin Đơn/Spin Đôi/Spin Tam/Techrash/Techrash+
- B2B2B gửi thêm (số hàng xóa × 0.5) trên B2B và +1 hàng để hủy rác tới B2B2B gửi thêm (số hàng xóa × 0.5) trên B2B và +1 hàng để đánh chặn
- Mini sẽ bị cắt còn 25% (hệ số × 0.25) Mini sẽ bị cắt chỉ còn ¼ so với giá trị ban đầu
Kiểu xóa Đặc biệt (Techrash/Techrash+ không dùng spin): Kiểu xóa Đặc biệt (Techrash/Techrash+ nhưng không spin):
- B2B gửi thêm 1 hàng B2B gửi thêm 1 hàng
- B2B2B sẽ boost 50% tấn công và +1 hàng để hủy rác tới B3B boost 50% tấn công và +1 hàng để đánh chặn
Kiểu xóa không Đặc biệt: Single/Double/Triple (Đơn/Đôi/Tam) gửi 1/2/3 hàng Kiểu xóa không Đặc biệt:
Single/Double/Triple (Đơn/Đôi/Tam) gửi 0/1/2 hàng
Combo (REN): Combo (REN):
Số combo = số lần bạn xóa hàng liên tiếp - 1 (ch nhn TỐI ĐA combo 12, từ combo 13 về sau sẽ tính thành combo 12). Lượng sát thương từ combo được tính bằng cách nhân tổng sát thương trước đó (được tính ở trên) nhân với "hệ số combo"
Toàn bộ sát thương kể trên (trừ tấn công từ PC/HPC) nhận thêm bonus (combo × 25%) HOẶC (combo × 15%) nếu chỉ xóa 1 hàng. Hệ số này có giá trị là 25% (hoặc 10% nếu bạn vừa xóa duy nhất 1 hàng) của tổng combo bạn có (tối đa là 12).
+1 hàng để tấn công từ Combo 2 trở đi. Lưu ý: Combo chỉ được bắt đầu tính từ lần xóa thứ 2 liên tiếp, không phải lần xóa đầu.
Hemi Perfect Clear (PC mà “vẫn còn gạch ở dưới”). Hemi Perfect Clear (xem trong Zictionary)
Nếu chỉ còn 1 hàng xóa, thì toàn bộ gạch còn lại không phải do người chơi đặt: +4 hàng để tấn công, +2 hàng để đánh chặn
+4 hàng để tấn công, +2 hàng để hủy rác tới
Perfect Clear (All Clear): Perfect Clear (All Clear): Gửi 8 → 16 hàng rác
- Gửi 8 → 16 hàng rác (6 + 2 * số PC đã làm; tính tối đa 5PC) HOẶC sát thương thường, tùy vào sát thương nào mạnh hơn. PC thứ nhất chỉ gửi 8 hàng rác, các PC sau đó sẽ thêm 2 hàng rác để tấn công (tổng hàng rác có thể gửi tối đa là 16 hàng)
- +2 hàng để hủy rác.
Sau khi tính toán xong, lượng sát thương sẽ bị làm tròn XUỐNG trước khi gửi. Sau khi tính toán xong, lượng sát thương sẽ bị làm tròn XUỐNG trước khi gửi.
Thanh Back to Back (B2B): Thanh Back to Back (B2B):
Thanh B2B có giá trị từ 0 tới 1,000. Kiểu xóa đặc biệt là B2B nếu thanh vượt qua vạch 50, B2B2B nếu qua vạch 800. Thanh B2B có giá trị từ 0 tới 1000 điểm.
Một người chơi đang ở trạng thái B2B khi thanh có 50 đến 800 điểm.
Một người chơi đang ở trang thái B3B khi thanh có hơn 800 điểm.
Nếu có hàng được xóa: Nếu có hàng được xóa:
Kiểu xóa đặc biệt: Kiểu xóa đặc biệt:
- Spin Đơn/Đôi/Tam/Techrash/Techrash+ + 50/100/180/800/1000 (×50% nếu là Mini) Spin Đơn/Đôi/Tam/Techrash/Techrash+ lần lượt cộng thêm 50/100/180/800/1000 (×50% nếu là Mini)
- Techrash/Techrash+ + 150/200/... — Techrash +150 điểm, nếu xóa hơn 4 hàng cùng lúc, mỗi hàng từ hàng thứ 5 trở đi cộng thêm 50 điểm.
- PC nếu số PC làm được trong một ván >4, +800 — PC từ thứ 4 trở đi có giá trị 800 điểm
- HPC, +100 — HPC cộng thên 100 điểm
Kiểu xóa thường -250 Kiểu xóa thường: -250 điểm
Nếu không: Spin (0 hàng) +20. Nếu có spin nhưng không có hàng nào được xóa:
LƯU Ý! Thanh B2B không thể sạc qua vạch 800 bằng cách này. Thanh B2B chỉ có ít hơn 800 điểm: mỗi spin có giá trị 20 điểm
— Thanh B2B có nhiều hơn 800 điểm: mỗi spin sẽ trừ đi 40 điểm cho tới khi thanh B2B còn 800 điểm.
Hệ thống tính điểm: Hệ thống tính điểm:
Cứ chơi càng hay thì điểm càng cao, thế thôi! Hệ thống này không được mô tả ở đây do độ phức tạp của nó, cộng thêm với việc nó có th thay đổi bất cứ lúc nào.
Thành thật mà nói, cứ chơi càng hay thì điểm càng cao.
Việc tính điểm cũng độc lập tùy vào từng chế độ.
Khoảng thời gian chờ trước khi tấn công: Khoảng thời gian chờ trước khi tấn công:
Sát thưng từ Đôi và Tam có hiệu lực nhanh nhất; Một đòn sát thương sẽ không có hiệu lực ngay lập tức để người chơi có chút thời gian phản ứng trước khi tràn vào bảng.
Theo sau là Techrash và Spin, chúng tờng gửi tấn công chậm hơn; Thời gian chờ của các đòn tấn công n sau, sắp xếp từ nhanh nhất tới lâu nhất:
Combo dài gửi lâu nhất; — Double và Triple (Đôi và Tam) là nhanh nhất
Với B2B và B2B2B, có thể kéo dài thời gian chờ cũng như có thể thêm hàng; — Theo sau là Techrash, Techrash+, spin; Mini, B2B và B3B có thêm thêm chút thời gian chờ nữa.
Minis cũng có thể kéo dài thời gian chờ thêm chút nữa. — Sát thương từ combo có thời gian chờ lâu nhất..
Phản công: Phản công:
Khi bạn gửi tấn công, nếu có rác trong hàng chờ, thì ưu tiên dùng hàng để hủy rác trước, sau đó mới dùng tới hàng để tấn công sau. Khi một người chơi cố tấn công, hàng dùng để đánh chặn sẽ dùng trước, trước khi dùng tới hàng để tấn công (với tỉ lệ là 1:1)
Tỉ lệ phản công sẽ là 1:1 Sát thương được gửi sớm nhất sẽ bị loại bỏ trước.
Bất kỳ hàng nào để phản công không dùng tới sẽ bỏ hết; cuối cùng, số hàng để tấn công còn lại sẽ gửi tới đối thủ. Bất kỳ hàng nào để đánh chặn không dùng tới sẽ bỏ hết, số hàng để tấn công còn lại sẽ gửi tới đối thủ.
Chế độ Battle Royale: Chế độ Battle Royale:
Một chế độ có nhiều người chơi (AI, không phải người thật) cùng đối đầu trong một phòng! Trong chế độ này, người chơi sẽ phải đối đầu với hàng chục bot trong cùng một lúc
Cứ sau một số người chơi bị loại nhất định, gạch sẽ rơi nhanh hơn, và rác cũng sẽ phát tác sớm hơn và dâng nhanh hơn. Sau khi một lượng bot bị loại, tốc độ rơi tăng dần, thời gian chờ trước khi tấn công giảm, và hàng rác sẽ trồi lên nhanh hơn
Đánh bật đối thủ khác để nhận một huy hiệu và toàn bộ huy hiệu của người chơi để tăng sức mạnh tấn công. Loại một con bot để nhận một huy hiệu và toàn bộ huy hiệu của chúng để tăng sức mạnh tấn công của bạn.
Người chơi có thể chọn 1 trong 4 chế độ tấn công sau đây: Người chơi có thể chọn 1 trong 4 chế độ tấn công sau đây:
- Ngẫu nhiên: Cứ mỗi lần tấn công, có 10% khả năng nhắm vào một người chơi ngẫu nhiên. 1. Ngẫu nhiên: Cứ mỗi lần tấn công, có 10% khả năng nhắm vào một bot ngẫu nhiên.
- Huy hiệu: Sau khi bạn tấn công/mục tiêu bị chết, tư động ngắm vào người chơi có nhiều huy hiệu nhất. 2. Huy hiệu: Sau khi bạn tấn công/mục tiêu bị chết, tư động nhắm vào bot có nhiều huy hiệu nhất.
- K.O.: Nhắm vào người chơi “đang thở máy, đang hấp hối”. 3. K.O.s: Nhắm vào bot “đang thở máy, đang hấp hối”. Tự động nhắm lại sau mỗi giây.
- Phản công: tấn công tất cả người chơi đang nhắm vào bạn 4. Phản công: tấn công tất cả bot đang nhắm vào bạn. Bạn sẽ gửi tấn công đến tất cả bọn chúng.
Bạn sẽ gửi tấn công đến tất cả bọn họ. Nếu bạn không nhắm vào mục tiêu nào, thì bạn sẽ tấn công một bot ngẫu nhiên (không nhắm)
Nếu bạn không nhắm vào mục tiêu nào, thì bạn sẽ tấn công một người chơi ngẫu nhiên (không nhắm)
Khi toàn bộ đối thủ đều bị đá bay, người sống sót cuối cùng sẽ chiến thắng. Người cuối cùng trụ lại thành công sẽ là người chiến thắng sau khi đã loại được toàn bộ đối thủ.
Chế độ Tự do: Chế độ Tự do:
Bạn có thể tự do tùy chỉnh nhiều thông số (nhưng không bao gồm các hiệu ứng đặc biệt từ các chế độ khác). Bạn có thể tự do tùy chỉnh nhiều thông số (nhưng không bao gồm các hiệu ứng đặc biệt từ các chế độ khác).
Bạn có thể vẽ một cái bảng để tập xóa hoặc làm mẫu để tập build. Bạn có thể vẽ một cái bảng để tập xóa (Clear mode) hoặc tập xây theo mẫu (Puzzle mode)
Ở trong chế độ Build (Puzzle):
Nhấn phím F1 để hiện/ẩn mẫu Ở chế độ Puzzle, bạn có thể nhấn F1 để chọn có hiện mẫu hay không. Để thắng được thì toàn bộ…
ô có X thì không được có gạch; ô có X thì không được có gạch;
ô trống thì có thể ở bất kỳ tình trạng nào; ô trống thì có thể ở bất kỳ tình trạng nào;
ô có màu thì gạch đặt vào ô phải khớp màu; ô có màu thì gạch đặt vào ô phải khớp màu;
ô có màu của hàng rác thì có thể là bất kỳ gạch nào nhưng không thể là không khí. ô có màu của hàng rác thì có thể là bất kỳ gạch nào (không phân biệt kiểu gạch) nhưng không thể là không khí.
Một khi bạn làm khớp với mẫu ban đầu, bạn thắng.

View File

@@ -8,6 +8,7 @@ local scene={}
local dict-- Dict list local dict-- Dict list
local result-- Result Lable local result-- Result Lable
local localeFile -- Language file name, used for force reload
local lastTickInput local lastTickInput
local searchWait-- Searching animation timer local searchWait-- Searching animation timer
@@ -59,25 +60,63 @@ local listBox =WIDGET.newListBox {name='listBox',x=20, y=180,w=280,h=526,font=30
gc.setColor(1,1,1,.4) gc.setColor(1,1,1,.4)
gc.rectangle('fill',0,0,280,35) gc.rectangle('fill',0,0,280,35)
end end
setFont(30)
-- Name & color -- Name & color
GC.shadedPrint(item.title,10,-3,'left',1,COLOR.D,typeColor[item.type]) GC.shadedPrint(item.title,10,-3,'left',1,COLOR.D,typeColor[item.type])
end} end}
-- Necessary local functions -- Necessary local functions
-- Update the infobox
local function _updateInfoBox(c)
local _t,t
if c==nil then
if listBox.selected==0 then
if text.dict.helpText then
_t,t=true,text.dict.helpText:repD(
CHAR.key.up,CHAR.key.down,CHAR.key.left,CHAR.key.right,
CHAR.controller.dpadU,CHAR.controller.dpadD,CHAR.controller.dpadL,CHAR.controller.dpadR,
CHAR.controller.xboxX,CHAR.controller.xboxY,CHAR.controller.xboxA,CHAR.controller.xboxB,
CHAR.icon.help,CHAR.icon.copy,CHAR.icon.globe,CHAR.key.winMenu
)
else -- Fallback
listBox.selected=lastSelected
scene.widgetList.help.color=COLOR.Z
MES.new("error","Cannot found the Help text! Maybe just a mistake?")
return
end
else
_t,t=pcall(function() return _getList()[listBox.selected].content end)
end
if _t then c=t else c={""} end
_t,t=nil,nil
end
local _w,c=FONT.get(currentFontSize):getWrap(c,840)
textBox:setTexts(c)
end
-- Clear the result -- Clear the result
local function _clearResult() local function _clearResult()
TABLE.cut(result) TABLE.cut(result)
listBox.selected=1 listBox.selected,lastSelected,searchWait,lastSearch=1,1,0,false
searchWait,lastSearch=0,false
scene.widgetList.copy.hide=false scene.widgetList.copy.hide=false
_updateInfoBox()
end end
-- Search through the dictionary -- Search through the dictionary
local function _search() local function _search()
local input=inputBox:getText():lower() local input=inputBox:getText()
local pos
_clearResult() _clearResult()
local first local first
if dict=='vi' then
local success,input=pcall(function() STRING.lowerUTF8(input) end)
if not success then input=input:lower() end
else
input=input:lower() end
for i=1,#dict do for i=1,#dict do
local pos=find(dict[i].title:lower(),input,nil,true) or find(dict[i].keywords:lower(),input,nil,true) if dict=='vi' then
pos=find(STRING.lowerUTF8(dict[i].title),input,nil,true) or find(STRING.lowerUTF8(dict[i].keywords),input,nil,true)
else
pos=find(dict[i].title:lower(),input,nil,true) or find(dict[i].keywords:lower(),input,nil,true)
end
if pos==1 and not first then if pos==1 and not first then
ins(result,1,dict[i]) ins(result,1,dict[i])
first=true first=true
@@ -90,12 +129,17 @@ local function _search()
if #result>0 then SFX.play('reach') end if #result>0 then SFX.play('reach') end
lastSearch=input lastSearch=input
_updateInfoBox()
end end
-- Jump over n items -- Jump over n items
local function _jumpover(key,n) local function _jumpover(key,n)
local dir=(key=='left' or key=='pageup') and 'up' or 'down' local dir=(key=='left' or key=='pageup') and 'up' or 'down'
for _=1,n or 1 do scene.widgetList.listBox:arrowKey(dir) end for _=1,n or 1 do scene.widgetList.listBox:arrowKey(dir) end
_updateInfoBox()
lastSelected=listBox.selected
scene.widgetList.copy.hide=false
end end
-- Copy the content -- Copy the content
@@ -107,58 +151,20 @@ local function _copy()
MES.new('info',text.copyDone) MES.new('info',text.copyDone)
end end
-- Update the infobox -- Changing font size, z=0 --> reset
local function _updateTextBox(c)
local _t,t
if c==nil then
if listBox.selected==0 then
if text.dict.helpText then
_t,t=true,text.dict.helpText:repD(
CHAR.key.up,CHAR.key.down,CHAR.key.left,CHAR.key.right,
CHAR.controller.dpadU,CHAR.controller.dpadD,CHAR.controller.dpadL,CHAR.controller.dpadR,
CHAR.controller.xboxX,CHAR.controller.xboxY,CHAR.controller.xboxA,CHAR.controller.xboxB,
CHAR.icon.help,CHAR.icon.copy,CHAR.icon.globe,CHAR.key.winMenu
)
else
_t,t=true,{
"OUCH! I can't seem to find any translated Help text anywhere.",
"\nI guess you'll have to switch to English and try again to read it instead!",
"\n\nOn another note, you could make an issue on GitHub or send this to Techmino's Discord server.",
"\nThe cause? I'm not sure... My guess is that there's something seriously wrong with the language files or the source code of this scene. BUT all the language files have a callback to English, and the original language - Chinese - has a version of the Help text! I'm not entirely certain if it worked or not, though.",
"\n\nOh, and it would be nice if you could let us know about it or you can fix it by yourself!",
"\n\n-- Sea, the one who rewrote the Zictionary scene and left this message just in case."
} end
else
_t,t=pcall(function() return _getList()[listBox.selected].content end)
end
if _t then c=t else c={""} end
_t,t=nil,nil
end
local _w,c=FONT.get(currentFontSize):getWrap(c,840)
textBox:setTexts(c)
end
-- Zoom and reset zoom
local function _resetZoom()
currentFontSize,textBox.font=25,25
textBox.lineH,textBox.capacity=35,math.ceil((textBox.h-10)/35)
_updateTextBox()
MES.new("check",text.dict.sizeReset,1.26)
end
local function _setZoom(z) local function _setZoom(z)
if z~=0 then currentFontSize=MATH.clamp(z~=0 and currentFontSize+z or 25,15,40)
currentFontSize=MATH.clamp(currentFontSize+z,15,40)
textBox.font=currentFontSize textBox.font=currentFontSize
textBox.lineH=currentFontSize*7/5 -- Recalculate the line's height textBox.lineH=currentFontSize*7/5 -- Recalculate the line's height
textBox.capacity=math.ceil((textBox.h-10)/textBox.lineH) textBox.capacity=math.ceil((textBox.h-10)/textBox.lineH)
_updateTextBox() _updateInfoBox()
MES.new("check",text.dict.sizeChanged:repD(currentFontSize),1.26) MES.new("check",z~=0 and text.dict.sizeChanged:repD(currentFontSize) or text.dict.sizeReset,1.26)
end
end end
-- Reset everything when opening Zictionary -- Reset everything when opening Zictionary
function scene.enter() function scene.enter()
dict=require("parts.language.dict_"..(SETTING.locale:find'zh' and 'zh' or SETTING.locale:find'ja' and 'ja' or SETTING.locale:find'vi' and 'vi' or 'en')) localeFile='parts.language.dict_'..(SETTING.locale:find'zh' and 'zh' or SETTING.locale:find'ja' and 'ja' or SETTING.locale:find'vi' and 'vi' or 'en')
dict=require(localeFile)
_scanDict(dict) _scanDict(dict)
inputBox:clear() inputBox:clear()
@@ -166,9 +172,9 @@ function scene.enter()
searchWait=0 searchWait=0
lastSelected=0 lastSelected=0
listBox.selected=1
listBox.scrollPos=0
lastSearch=false lastSearch=false
listBox:setList(_getList())
scene.widgetList.help.color=COLOR.Z
if not MOBILE then WIDGET.focus(inputBox) end if not MOBILE then WIDGET.focus(inputBox) end
BG.set('rainbow') BG.set('rainbow')
@@ -182,6 +188,8 @@ function scene.wheelMoved(_,y)
end end
end end
function scene.keyDown(key) function scene.keyDown(key)
local inputBoxFocus=WIDGET.isFocus(inputBox)
-- Switching selected items -- Switching selected items
if key=='up' or key=='down' then if key=='up' or key=='down' then
textBox:scroll(key=='up' and -1 or 1) textBox:scroll(key=='up' and -1 or 1)
@@ -194,10 +202,9 @@ function scene.keyDown(key)
_copy() _copy()
end end
elseif key=='-' or key=='=' then elseif (key=='-' or key=='=' or key=='0') and (inputBox:getText()=="" or not inputBoxFocus) and not MOBILE then
_setZoom((key=='-' or key=='kp-') and -5 or 5) WIDGET.unFocus(true)
elseif key=='0' then _setZoom(key=='0' and 0 or key=='-' and -5 or 5)
_resetZoom()
elseif key=='application' and listBox.selected>=0 then elseif key=='application' and listBox.selected>=0 then
local url=_getList()[listBox.selected].url local url=_getList()[listBox.selected].url
@@ -207,7 +214,7 @@ function scene.keyDown(key)
_clearResult() _clearResult()
inputBox:clear() inputBox:clear()
SFX.play('hold') SFX.play('hold')
_updateTextBox() _updateInfoBox()
end end
elseif key=='escape' then elseif key=='escape' then
if inputBox:hasText() then if inputBox:hasText() then
@@ -216,12 +223,40 @@ function scene.keyDown(key)
SCN.back() SCN.back()
end end
elseif key=='f1' then elseif key=='f1' then
listBox.selected=0 -- inputBox:clear()
inputBox:clear() -- _clearResult()
listBox.selected=listBox.selected==0 and lastSelected or 0
scene.widgetList.help.color=listBox.selected==0 and COLOR.W or COLOR.Z
searchWait=0 searchWait=0
_updateTextBox() _updateInfoBox()
-- ***ONLY USE FOR HOTLOADING ZICTIONARY WHILE IN GAME!***
-- ***Please commenting out this code if you don't use***
-- elseif key=='f5' then
-- local _
-- local success,_r=pcall(function()
-- package.loaded[localeFile]=nil
-- dict=require(localeFile)
-- _scanDict(dict)
-- end
-- )
-- if not success then
-- SFX.play('finesseError_long')
-- _,_r=FONT.get(30):getWrap(tostring(_r),1000)
-- MES.new("error","Hotload failed! May need restarting!\n\n"..table.concat(_r,"\n"))
-- else
-- local lastLscrollPos=listBox.scrollPos
-- local lastTscrollPos=textBox.scrollPos
-- listBox:setList(_getList())
-- if #inputBox:getText()>0 then _search() end
-- listBox.selected=lastSelected<#dict and lastSelected or #dict -- In case the last item is removed!
-- listBox.scrollPos=lastLscrollPos
-- _updateInfoBox()
-- textBox.scrollPos=lastTscrollPos
-- SFX.play('pc')
-- end
else else
if not WIDGET.isFocus(inputBox) then WIDGET.focus(inputBox) end if not inputBoxFocus then WIDGET.focus(inputBox) end
return true return true
end end
end end
@@ -238,10 +273,7 @@ function scene.gamepadDown(key)
elseif key=='dpleft' or key=='dpright' then elseif key=='dpleft' or key=='dpright' then
_jumpover(key:gsub('dp',''),Joystick:isGamepadDown('a') and 12) _jumpover(key:gsub('dp',''),Joystick:isGamepadDown('a') and 12)
elseif key=='y' then elseif key=='y' then
listBox.selected=0 scene.keyDown('f1')
inputBox:clear()
searchWait=0
_updateTextBox()
elseif key=='back' then elseif key=='back' then
SCN.back() SCN.back()
end end
@@ -264,26 +296,25 @@ function scene.update(dt)
_search() _search()
end end
end end
if listBox.selected~=lastSelected and listBox.selected~=0 then
if lastSelected~=listBox.selected then if listBox.selected==0 then scene.keyDown('f1') end
_updateTextBox()
lastSelected=listBox.selected lastSelected=listBox.selected
scene.widgetList.copy.hide=false scene.widgetList.copy.hide=false
_updateInfoBox()
end end
end end
function scene.draw() function scene.draw()
-- Order: list, info, keys
-- Draw background -- Draw background
gc.setColor(COLOR.dX) gc.setColor(COLOR.dX)
gc.rectangle('fill',1194,340,80,366,5) gc.rectangle('fill',1194,335,80,370,5)
gc.rectangle('fill',1194,180,80,80 ,5) -- Help key
-- Draw outline -- Draw outline
gc.setLineWidth(2) gc.setLineWidth(2)
gc.setColor(COLOR.Z) gc.setColor(COLOR.Z)
gc.rectangle('line',1194,340,80,366,5) gc.rectangle('line',1194,335,80,370,5)
gc.line(1194,560,1274,560) gc.line(1194,555,1274,555)
gc.rectangle('line',1194,180,80,80 ,5) -- Help key
setFont(30)
if searchWait>0 then if searchWait>0 then
local r=TIME()*2 local r=TIME()*2
@@ -299,17 +330,17 @@ scene.widgetList={
listBox, listBox,
inputBox, inputBox,
textBox, textBox,
WIDGET.newKey {name='link', x=1234,y=600,w=60,font=45,fText=CHAR.icon.globe, code=pressKey'application',hideF=function() return not (listBox.selected>0 and _getList()[listBox.selected].url) end}, WIDGET.newKey {name='link', x=1234,y=595,w=60,font=45,fText=CHAR.icon.globe, code=pressKey'application',hideF=function() return not (listBox.selected>0 and _getList()[listBox.selected].url) end},
WIDGET.newKey {name='copy', x=1234,y=670,w=60,font=40,fText=CHAR.icon.copy, code=pressKey'cC',hideF=function() return not (listBox.selected>0) end}, WIDGET.newKey {name='copy', x=1234,y=665,w=60,font=40,fText=CHAR.icon.copy, code=pressKey'cC',hideF=function() return not (listBox.selected>0) end},
WIDGET.newKey {name='zoomin', x=1234,y=380,w=60,font=40,fText="A", code=function() _setZoom(5) end}, WIDGET.newKey {name='zoomin', x=1234,y=375,w=60,font=40,fText=CHAR.icon.zoomIn, code=function() _setZoom(5) end},
WIDGET.newKey {name='zoomout', x=1234,y=450,w=60,font=40,fText="a", code=function() _setZoom(-5) end}, WIDGET.newKey {name='zoomout', x=1234,y=445,w=60,font=40,fText=CHAR.icon.zoomOut, code=function() _setZoom(-5) end},
WIDGET.newKey {name='resetzoom',x=1234,y=520,w=60,font=25,fText="100%", code=function() _resetZoom() end}, WIDGET.newKey {name='resetzoom',x=1234,y=515,w=60,font=40,fText=CHAR.icon.zoomDefault,code=function() _setZoom(0) end},
WIDGET.newKey {name='help', x=1234,y=220,w=60,font=40,fText=CHAR.icon.help, code=pressKey'f1'}, WIDGET.newKey {name='help', x=1234,y=220,w=60,font=40,fText=CHAR.icon.help, code=pressKey'f1'},
WIDGET.newButton{name='back', x=1165,y=60, w=170,h=80,sound='back',font=60,fText=CHAR.icon.back,code=backScene}, WIDGET.newButton{name='back', x=1185,y=60, w=170,h=80,sound='back',font=60,fText=CHAR.icon.back,code=backScene},
WIDGET.newText {name='buttontip',x=1274,y=110,w=762,h=60,font=40,align='R',fText=CHAR.controller.xboxY.."/[F1]: "..CHAR.icon.help} WIDGET.newText {name='buttontip',x=1274,y=110,w=762,h=60,font=40,align='R',fText=CHAR.controller.xboxY.."/[F1]: "..CHAR.icon.help}
} }
-- NOTE: The gap between Link-Copy, Page, Zoom, Help is 60*1.5-10=80 :) The gap between 2 buttons in one group is 60+10=70 -- NOTE: The gap between Link-Copy, Zoom is 60*1.5-10=80 :) The gap between 2 buttons in one group is 60+10=70
return scene return scene