Vietnamese translation of Zictionary (#903)

Co-authored-by: Hưng Nguyễn <>
This commit is contained in:
Nguyễn Quốc Hưng
2023-07-03 08:53:55 +07:00
committed by GitHub
parent ed11faf909
commit b3a8724538
7 changed files with 2415 additions and 151 deletions

Binary file not shown.

View File

@@ -348,7 +348,7 @@ FNNS and {"Support 3",
{"Tetris (N3TWORK)",
"tetris n3twork mobile phone",
"game",
"iOS/Android | Singleplayer\nThe mobile Tetris game from N3TWORK Inc. It has a 3-minute ultra mode, a marathon mode, and a 100-player Royale mode.\n[The UI is great, but its controls are not so good.]",
"iOS/Android | Singleplayer\nA Tetris game, formerly developed by N3TWORK; but now development rights have been in the hands of PlayStudio from the end of November 2021. It has a Quick Play (3-minutes Ultra) mode, a Marathon mode, a 100-player Royale mode, and an Adventure mode (a mode in which you complete an objective in a limited number of moves).\n\nFrom November/December 2022 onwards, all new accounts only has access to Marathon and Adventure modes.\n[The user interface is great, but its controls are not very good.]",
},
{"Tetris Beat",
"n3twork rhythm",

2124
parts/language/dict_vi.lua Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1,4 +1,8 @@
local C=COLOR
-- There are some strings, due to game's history, temproary be commented just in case
-- If it is not used anymore, it will be removed, in one day…
return {
fallback='en',
loadText={
@@ -71,16 +75,16 @@ return {
switchSpawnSFX="Vui lòng bật Spawn SFX để chơi!",
needRestart="Khởi động lại để áp dụng mọi thay đổi.",
loadError_errorMode="'$1' tải lên thất bại: không có chế độ tải lên '$2'",
loadError_read="'$1' tải lên thất bại: đọc thất bại",
loadError_noFile="'$1' tải lên thất bại: không có file",
loadError_other="'$1' tải lên thất bại: $2",
loadError_unknown="'$1' tải lên thất bại: không rõ lý do",
loadError_errorMode="Tải '$1' thất bại: không có chế độ tải '$2'",
loadError_read="Tải tệp '$1' thất bại: đọc thất bại",
loadError_noFile="Tải tệp '$1' thất bại: không có tệp",
loadError_other="Tải tệp '$1' thất bại: $2",
loadError_unknown="Tải tệp '$1' thất bại: không rõ lý do",
saveError_duplicate="'$1' lưu thất bại: trùng tên file",
saveError_encode="'$1' lưu thất bại: mã hoá thất bại",
saveError_other="'$1' lưu thất bại: $2",
saveError_unknown="'$1' lưu thất bại: không rõ lý do",
saveError_duplicate="Lưu tệp '$1' thất bại: trùng tên tệp",
saveError_encode="Lưu tệp '$1' thất bại: mã hoá thất bại",
saveError_other="Lưu tệp '$1' thất bại: $2",
saveError_unknown="Lưu tệp '$1' thất bại: không rõ lý do",
copyDone="Đã sao chép!",
saveDone="Đã lưu dữ liệu",
@@ -140,12 +144,13 @@ return {
noticeNotFound="Không có thông báo",
},
PlayerManager={
-- invalidEmail="Email không hợp lệ",
-- playerNotFound="Không tìm thấy người chơi",
-- invalidEmailPass="Email hoặc người chơi không hợp lệ",
-- emailExists="Email đã tồn tại",
-- emailSendError="Lỗi gửi email",
invalidCode="Mã không hợp lệ",
invalidEmail="Email không hợp lệ",
playerNotFound="Không tìm thấy người chơi",
invalidEmailPass="Email hoặc người chơi không hợp lệ",
emailExists="Email đã tồn tại",
emailSendError="Lỗi gửi email",
invalidAccessToken="Mã xác thực không hợp lệ",
},
-- Strategies
PlayerRole={
@@ -167,17 +172,18 @@ return {
versionNotMatch="Phiên bản không khớp",
notFinished="Sắp ra mắt!",
noUsername="Vui lòng nhập email của bạn",
wrongEmail="Địa chỉ email không hợp lệ",
wrongCode="Mã xác minh không hợp lệ",
noPassword="Vui lòng nhập mật khẩu của bạn",
diffPassword="Mật khẩu không đúng",
checkEmail="Yêu cầu đăng ký đã được gửi.",
-- Deprecated
-- noUsername="Vui lòng nhập email của bạn",
-- wrongEmail="Địa chỉ email không hợp lệ",
-- wrongCode="Mã xác minh không hợp lệ",
-- noPassword="Vui lòng nhập mật khẩu của bạn",
-- diffPassword="Mật khẩu không đúng",
-- checkEmail="Yêu cầu đăng ký đã được gửi.",
wsFailed="Kết nối WebSocket đã thất bại: $1",
wsClose="WebSocket đã đóng: $1",
netTimeout="Kết nối đã quá hạn",
serverDown="Ối! Server bị sập rồi",
serverDown="Ối! Server sập! Hãy quay lại sau",
requestFailed="Yêu cầu thất bại",
onlinePlayerCount="Trực tuyến: $1",
@@ -193,13 +199,13 @@ return {
keySettingInstruction="Nhấn một phím để gán phím đó\nescape (esc): Huỷ\nbackspace: Xoá",
keySettingInstruction="Nhấn một phím để gán phím đó\nescape (esc): Hủy\nbackspace: Xoá",
customBGhelp="Kéo một tấm ảnh vào đây để áp dụng ảnh nền tuỳ chỉnh",
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.",
modInstruction="Hãy chọn mod bạn muốn.\nMod sẽ cho bạn thay đổi trò chơi, và có thể làm sập trò chơi.\nĐiểm sẽ không được lưu lại khi dùng mod.",
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.",
modInfo={
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",
@@ -218,8 +224,8 @@ return {
forceB2B="B2B Only\nKết thúc trò chơi khi cột B2B giảm xuống dưới vạch ban đầu",
forceFinesse="Finesse Only\nKết thúc trò chơi khi có lỗi di chuyển",
tele="Teleport\nDAS = 0, ARR = 0",
noRotation="No Rotation\nKhông được xoay gạch",
noMove="No Movement\nKhông được di chuyển trái phải",
noRotation="No Rotation\nKhông thể xoay gạch",
noMove="No Movement\nKhông thể di chuyển trái phải",
customSeq="Randomizer\nGhi đè trình xáo gạch",
pushSpeed="Garbage Speed\nGhi đề tốc độ xuất hiện của hàng rác",
boneBlock="[ ]\nChơi với skin [ ]",
@@ -231,7 +237,7 @@ return {
"Hàng/Đào:",
"Gửi/Gửi khi đào:",
"Nhận:",
"Clear:",
"Xóa (hàng):",
"Spin:",
"B2B/B3B/PC/HPC:",
"Lỗi di chuyển:",
@@ -246,22 +252,22 @@ return {
"Gạch/Hàng/Gửi:",
"Nhận/Phản/Đẩy:",
"Đào/Gửi khi đào:",
"Eff./Dig Eff.:",
"H.quả/H.quả khi Đào:",
"B2B/B3B:",
"PC/HPC:",
"Lỗi di chuyển/Tỉ lệ:",
},
aboutTexts={
"Đây chỉ là một trò chơi xếp gạch *thông thường*. Không, thật đấy, chỉ có vậy thôi",
"Lấy cảm hứng từ C2/IO/JS/WWC/KOS etc.",
"Lấy cảm hứng từ C2/IO/JS/WWC/KOS v.v.",
"",
"Chạy bằng LÖVE",
"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",
"vì các nguồn khác có thể không an toàn.",
"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 "Kiểm tra Zictionary để có thêm thông tin chi tiết",
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",
},
staff={
"ĐƯỢC SÁNG TÁC BỞI MrZ",
@@ -424,7 +430,7 @@ return {
},
net_rooms={
password="Mật khẩu",
refreshing="Đang làm mới...",
refreshing="Đang làm mới",
noRoom="Hiện không có phòng nào",
refresh="Làm mới",
new="Phòng mới",
@@ -461,7 +467,7 @@ return {
b2bKill="Không phá B2B",
lockout="Thua khi Lock Out",
easyFresh="Lock Reset Thường",
deepDrop="Thả Sâu",
deepDrop="Thả rơi sâu",
bone="Dùng skin []",
eventSet="Rule Set",
@@ -475,7 +481,7 @@ return {
net_game={
ready="Sẵn sàng",
spectate="Theo dõi",
cancel="Huỷ sẵn sàng",
cancel="Huỷ",
},
setting_game={
title="Cài đặt trò chơi",
@@ -483,16 +489,20 @@ return {
sound="Âm thanh→",
style="Trang trí",
ctrl="Cài đặt điều khiển",
key="Cài đặt bố cục phím",
touch="Cài đặt cảm ứng",
-- ctrl="Cài đặt điều khiển",
-- key="Cài đặt bố cục phím",
-- touch="Cài đặt cảm ứng",
ctrl="Điều chỉnh thg. số", -- ctrl="Điều chỉnh độ nhạy"
key="Sửa bố cục bàn phím",
touch="Sửa bố cục cảm ứng",
showVK="Bật điều khiển bằng cảm ứng", -- Pull from Galaxy
reTime="Đếm ngược bắt đầu",
RS="Hệ thống xoay gạch",
menuPos="Vị trí nút Menu",
sysCursor="Sử dụng con trỏ chuột của hệ thống",
autoPause="Tạm dừng khi nhấn ngoài game",
autoSave="Tự động lưu các thành tích",
autoPause="Tạm dừng khi ngoài game",
autoSave="Tự động lưu thành tích mới",
simpMode="Chế độ Đơn giản",
},
setting_video={
@@ -503,7 +513,7 @@ return {
block="Hiện gạch đang rơi",
smooth="Rơi mượt",
upEdge="Gạch 3D",
bagLine="Vạch tách Bag",
bagLine="Vạch tách Túi gạch",
ghostType="Loại bóng gạch",
ghost="Độ bóng",
@@ -511,21 +521,21 @@ return {
grid="Lưới",
lineNum="# hàng",
lockFX="Lock FX",
dropFX="Drop FX",
moveFX="Move FX",
clearFX="Clear FX",
splashFX="Splash FX",
shakeFX="Độ Nảy Bảng",
atkFX="Atk FX",
lockFX="H.ứng Khóa gạch",
dropFX="H.ứng Thả nhẹ",
moveFX="H.ứng Di chuyển",
clearFX="H.ứng Xóa hàng",
splashFX="H.ứng Gạch “rụng”",
shakeFX="Độ nảy bảng",
atkFX="H.ứng Tấn công",
frame="Tần suất cập nhật khung hình (%)",
text="Hiển thị loại xoá hàng",
score="Hiển thị điểm thành phần",
bufferWarn="Hiển thị số hàng rác",
showSpike="Hin thị Spike",
nextPos="Hin thị chỗ Spawn",
text="Hiện loại xoá hàng",
score="Hiện điểm thành phần",
bufferWarn="Hiện số hàng rác",
showSpike="Hin độ lớn spike",
nextPos="Hin chỗ spawn",
highCam="Trượt bảng",
warn="Cảnh báo nguy hiểm",
@@ -534,7 +544,7 @@ return {
clean="Vẽ nhanh",
fullscreen="Toàn màn hình",
portrait="Để dọc",
msaa="MSAA level",
msaa="Khử r.cưa (MSAA)",
bg_on="Ảnh nền thường",
bg_off="Không ảnh nền",
@@ -553,40 +563,41 @@ return {
bgm="Nhạc nền",
sfx="Hiệu ứng",
stereo="Stereo",
spawn="Spawn SFX",
warn="Cảnh báo SFX",
spawn="Hiệu ứng spawn",
warn="Hiệu ứng cảnh báo",
vib="Rung",
voc="Giọng",
autoMute="Tắt tiếng nếu nhấn ngoài game",
autoMute="Tắt tiếng nếu đang ở ngoài game",
fine="Âm thanh báo lỗi di chuyển",
sfxPack="Gói SFX",
vocPack="Gói Voice",
apply="Chọn",
},
setting_control={
title="Cài đặt Điều khiển",
-- title="Cài đặt Điều khiển",
title="Đ.chỉnh thg. số",
preview="Xem trước",
das="DAS",arr="ARR",
dascut="DAS cut",
dropcut="Auto-lock cut",
sddas="Soft Drop DAS",sdarr="Soft Drop ARR",
ihs="Initial Hold",
irs="Initial Rotation",
ims="Initial Movement",
sddas="DAS thả nhẹ",sdarr="ARR thả nhẹ",
ihs="Giữ tức thì",
irs="Xoay tức thì",
ims="Di chuyển tức thì",
reset="Đặt lại",
},
setting_key={
a1="Sang Trái",
a2="Sang Phải",
a3="Xoay Phải",
a4="Xoay Trái",
a5="Xoay 180°",
a6="Thả Mạnh",
a7="Thả Nhẹ",
a8="Giữ (Hold)",
a9="Chức năng 1 (F1)",
a1 ="Sang Trái",
a2 ="Sang Phải",
a3 ="Xoay Phải",
a4 ="Xoay Trái",
a5 ="Xoay 180°",
a6 ="Thả Mạnh",
a7 ="Thả Nhẹ",
a8 ="Giữ",
a9 ="Chức năng 1 (F1)",
a10="Chức năng 2 (F2)",
a11="Trái tức thì",
a12="Phải tức thì",
@@ -613,11 +624,26 @@ return {
shape="Hình dạng",
},
setting_touchSwitch={
b1= "Sang Trái:", b2="Sang Phải:", b3="Xoay Phải:", b4="Xoay Trái:",
b5= "Xoay 180°:", b6="Thả Mạnh:", b7="Thả Nhẹ:", b8="Giữ:",
b9= "Chức năng 1 (F1):", b10="Chức năng 2 (F2):", b11="Trái tức thì:", b12="Phải tức thì:",
b13="Thả nhanh:", b14="Xuống 1:", b15="Xuống 4:", b16="Xuống 10:",
b17="Thả Trái:", b18="Thả Phải:", b19="Zangi Trái:", b20="Zangi Phải:",
b1 ="Sang Trái:",
b2 ="Sang Phải:",
b3 ="Xoay Phải:",
b4 ="Xoay Trái:",
b5 ="Xoay 180° (F):",
b6 ="Thả Mạnh:",
b7 ="Thả Nhẹ:",
b8 ="Giữ (H):",
b9 ="Chức năng 1 (F1):",
b10="Chức năng 2 (F2):",
b11="Trái tức thì:",
b12="Phải tức thì:",
b13="Thả Nhanh:",
b14="Xuống 1:",
b15="Xuống 4:",
b16="Xuống 10:",
b17="Thả Trái:",
b18="Thả Phải:",
b19="Zangi Trái:",
b20="Zangi Phải:",
norm="Thường",
pro="Nâng cao",
@@ -651,7 +677,7 @@ return {
reset="Đặt lại (del)",
advance="More (A)",
mod="Mods (F1)",
mod="Mod (F1)",
field="Cài đặt bảng (F)",
sequence="C. đặt Trình xáo gạch (S)",
mission="Cài đặt Nhiệm vụ (M)",
@@ -680,7 +706,7 @@ return {
lockout="Thua khi Lock Out",
easyFresh="Lock Reset Thường",
deepDrop="Thả Sâu",
bone="Dùng skin []",
bone="Dùng gạch []",
},
custom_field={
title="Chế độ Tự do",
@@ -749,17 +775,17 @@ return {
title="Đăng Nhập",
ticket="Mã uỷ quyền",
authorize="Mở trang uỷ quyền",
-- paste="Paste Ticket",
paste="Dán mã",
submit="Gửi",
},
reset_password={
title="Đặt lại Mật khẩu",
send="Gửi mã",
code="Mã xác nhận",
password="Mật khẩu",
password2="Nhập lại Mật khẩu",
setPW="Đặt mật khẩu",
},
-- reset_password={
-- title="Đặt lại Mật khẩu",
-- send="Gửi mã",
-- code="Mã xác nhận",
-- password="Mật khẩu",
-- password2="Nhập lại Mật khẩu",
-- setPW="Đặt mật khẩu",
-- },
account={
title="Tài khoản",
},
@@ -806,7 +832,7 @@ return {
unlock="Tiến trình",
data="Thống kê",
setting="Cài đặt",
vk="Bố cục phím ảo",
vk="Bố cục cảm ứng",
couldSave="Lưu qua Cloud (CẢNH BÁO: ĐANG THỬ NGHIỆM)",
notLogin="[Đăng nhập để lưu]",
@@ -820,7 +846,7 @@ return {
['sprint_40l']= {"Sprint", "40L", "Xoá 40 hàng!"},
['sprint_100l']= {"Sprint", "100L", "Xoá 100 hàng!"},
['sprint_400l']= {"Sprint", "400L", "Xoá 400 hàng!"},
['sprint_1000l']= {"Sprint", "1,000L", "Xoá 1,000 hàng!"},
['sprint_1000l']= {"Sprint", "1,000L", "Xoá 1,000 hàng!"},
['sprintPenta']= {"Sprint", "PENTOMINO", "Xoá 40 hàng với 18 pentomino"},
['sprintMPH']= {"Sprint", "MPH", "Memoryless\nPreviewless\nHoldless"},
['sprint123']= {"Sprint", "M123", "Xoá 40 hàng chỉ với monomino, domino, và trimino"},
@@ -835,92 +861,92 @@ return {
['dig_eff_400l']= {"Dig", "EFFICIENCY 400L","Đào 400 hàng rác càng ít gạch càng tốt!"},
['dig_quad_10l']= {"Dig", "TECHRASH 10L", "Đào 10 hàng rác nhưng chỉ dùng techrash!"},
['drought_n']= {"Drought", "100L", "Không có thanh dài"},
['drought_l']= {"Drought+", "100L", "W T F"},
['drought_l']= {"Drought+", "100L", "C L G T"},
['marathon_n']= {"Marathon", "THƯỜNG", "Xoá 200 hàng với tốc độ nhanh dần"},
['marathon_h']= {"Marathon", "KHÓ", "Xoá 200 hàng với tốc độ cao"},
['solo_e']= {"Battle", "DỄ", "Đánh bại AI!"},
['marathon_h']= {"Marathon", "KHÓ", "Xoá 200 hàng với tốc độ cao"},
['solo_e']= {"Battle", "DỄ", "Đánh bại AI!"},
['solo_n']= {"Battle", "THƯỜNG", "Đánh bại AI!"},
['solo_h']= {"Battle", "KHÓ", "Đánh bại AI!"},
['solo_h']= {"Battle", "KHÓ", "Đánh bại AI!"},
['solo_l']= {"Battle", "RẤT KHÓ", "Đánh bại AI!"},
['solo_u']= {"Battle", "THÁCH ĐẤU", "Đánh bại AI!"},
['techmino49_e']= {"Tech 49", "DỄ", "Cuộc chiến 49 người.\nNgười trụ lại cuối cùng giành chiến thắng"},
['techmino49_h']= {"Tech 49", "KHÓ", "Cuộc chiến 49 người.\nNgười trụ lại cuối cùng giành chiến thắng"},
['techmino49_u']= {"Tech 49", "THÁCH ĐẤU", "Cuộc chiến 49 người.\nNgười trụ lại cuối cùng giành chiến thắng"},
['techmino99_e']= {"Tech 99", "DỄ", "Cuộc chiến 99 người.\nNgười trụ lại cuối cùng giành chiến thắng"},
['techmino99_h']= {"Tech 99", "KHÓ", "Cuộc chiến 99 người.\nNgười trụ lại cuối cùng giành chiến thắng"},
['techmino99_u']= {"Tech 99", "THÁCH ĐẤU", "Cuộc chiến 99 người.\nNgười trụ lại cuối cùng giành chiến thắng"},
['round_e']= {"Turn-Based", "DỄ", "Chơi theo lượt và đánh bại AI!"},
['solo_u']= {"Battle", "THÁCH ĐẤU", "Đánh bại AI!"},
['techmino49_e']= {"Tech 49", "DỄ", "Cuộc chiến 49 người.\nNgười trụ lại cuối cùng giành chiến thắng"},
['techmino49_h']= {"Tech 49", "KHÓ", "Cuộc chiến 49 người.\nNgười trụ lại cuối cùng giành chiến thắng"},
['techmino49_u']= {"Tech 49", "THÁCH ĐẤU", "Cuộc chiến 49 người.\nNgười trụ lại cuối cùng giành chiến thắng"},
['techmino99_e']= {"Tech 99", "DỄ", "Cuộc chiến 99 người.\nNgười trụ lại cuối cùng giành chiến thắng"},
['techmino99_h']= {"Tech 99", "KHÓ", "Cuộc chiến 99 người.\nNgười trụ lại cuối cùng giành chiến thắng"},
['techmino99_u']= {"Tech 99", "THÁCH ĐẤU", "Cuộc chiến 99 người.\nNgười trụ lại cuối cùng giành chiến thắng"},
['round_e']= {"Turn-Based", "DỄ", "Chơi theo lượt và đánh bại AI!"},
['round_n']= {"Turn-Based", "THƯỜNG", "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_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_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_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 nhỏ hơn!"},
['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_final']= {"Master", "FINAL", "Dành cho các pháp sư 20G"},
['master_ph']= {"Master", "PHANTASM", "Hả???"},
['master_ph']= {"Master", "PHANTASM", "Hả???"},
['master_g']= {"Master", "GRADED", "Lấy điểm cao nhất có thể!"},
['master_ex']= {"GrandMaster", "EXTRA", "Cũng là lấy điểm cao nhất có thể nhưng mà gắt hơn!"},
['master_instinct']={"Master", "INSTINCT", "Lấy điểm cao nhất có thể nhưng với gạch tàng hình!"},
['strategy_e']= {"Strategy", "DỄ", "Quyết định nhanh hoặc là thua"},
['strategy_h']= {"Strategy", "KHÓ", "Quyết định nhanh hoặc là thua"},
['strategy_u']= {"Strategy", "THÁCH ĐẤU", "Quyết định nhanh hoặc là thua"},
['strategy_e_plus']={"Strategy", "DỄ+", "Quyết định nhanh và không được Hold!"},
['strategy_h_plus']={"Strategy", "KHÓ+", "Quyết định nhanh và không được Hold!"},
['strategy_u_plus']={"Strategy", "THÁCH ĐẤU+", "Quyết định nhanh và không được Hold!"},
['blind_e']= {"Invisible", "DỄ", "Dành cho người mới"},
['blind_n']= {"Invisible", "THƯỜNG", "Dành cho người đã quen"},
['blind_h']= {"Invisible", "KHÓ", "Dành cho người đã có kinh nghiệm"},
['blind_l']= {"Invisible", "KHÓ+", "Dành cho người chơi chuyên nghiệp"},
['strategy_e']= {"Strategy", "DỄ", "Quyết định nhanh hoặc là thua"},
['strategy_h']= {"Strategy", "KHÓ", "Quyết định nhanh hoặc là thua"},
['strategy_u']= {"Strategy", "THÁCH ĐẤU", "Quyết định nhanh hoặc là thua"},
['strategy_e_plus']={"Strategy", "DỄ+", "Quyết định nhanh và không được Hold!"},
['strategy_h_plus']={"Strategy", "KHÓ+", "Quyết định nhanh và không được Hold!"},
['strategy_u_plus']={"Strategy", "THÁCH ĐẤU+", "Quyết định nhanh và không được Hold!"},
['blind_e']= {"Invisible", "DỄ", "Dành cho người mới"},
['blind_n']= {"Invisible", "THƯỜNG", "Dành cho người đã quen"},
['blind_h']= {"Invisible", "KHÓ", "Dành cho người đã có kinh nghiệm"},
['blind_l']= {"Invisible", "KHÓ+", "Dành cho người chơi chuyên nghiệp"},
['blind_u']= {"Invisible", "?", "Bạn đã sẵn sàng chưa?"},
['blind_wtf']= {"Invisible", "CLGT?", "Bạn chưa đủ trình cho màn này đâu!"},
['classic_e']= {"Classic", "DỄ", "Chế độ cổ điển từ thập niên 80"},
['classic_h']= {"Classic", "KHÓ", "Chế độ cổ điển từ thập niên 80 với tốc độ cao hơn"},
['blind_wtf']= {"Invisible", "CLGT?", "Bạn chưa đủ trình cho màn này đâu!"},
['classic_e']= {"Classic", "DỄ", "Chế độ cổ điển từ thập niên 80"},
['classic_h']= {"Classic", "KHÓ", "Chế độ cổ điển từ thập niên 80 với tốc độ cao hơn"},
['classic_l']= {"Classic", "RẤT KHÓ", "Chế độ cổ điển từ thập niên 80 với tốc độ rất cao"},
['classic_u']= {"Classic", "THÁCH ĐẤU", "Chế độ cổ điển từ thập niên 80 với tốc độ nhanh như chớp"},
['survivor_e']= {"Survival", "DỄ", "Bạn có thể trụ được bao lâu?"},
['classic_u']= {"Classic", "THÁCH ĐẤU", "Chế độ cổ điển từ thập niên 80 với tốc độ nhanh như chớp"},
['survivor_e']= {"Survival", "DỄ", "Bạn có thể trụ được bao lâu?"},
['survivor_n']= {"Survival", "THƯỜNG", "Bạn có thể trụ được bao lâu?"},
['survivor_h']= {"Survival", "KHÓ", "Bạn có thể trụ được bao lâu?"},
['survivor_h']= {"Survival", "KHÓ", "Bạn có thể trụ được bao lâu?"},
['survivor_l']= {"Survival", "RẤT KHÓ", "Bạn có thể trụ được bao lâu?"},
['survivor_u']= {"Survival", "THÁCH ĐẤU", "Bạn có thể trụ được bao lâu?"},
['attacker_h']= {"Attacker", "KHÓ", "Luyện tập kỹ năng tấn công!"},
['attacker_u']= {"Attacker", "THÁCH ĐẤU", "Luyện tập kỹ năng tấn công!"},
['survivor_u']= {"Survival", "THÁCH ĐẤU", "Bạn có thể trụ được bao lâu?"},
['attacker_h']= {"Attacker", "KHÓ", "Luyện tập kỹ năng tấn công!"},
['attacker_u']= {"Attacker", "THÁCH ĐẤU", "Luyện tập kỹ năng tấn công!"},
['defender_n']= {"Defender", "THƯỜNG", "Luyện tập kỹ năng phòng thủ!"},
['defender_l']= {"Defender", "RẤT KHÓ", "Luyện tập kỹ năng phòng thủ!"},
['dig_h']= {"Driller", "KHÓ", "Luyện tập kỹ năng đào xuống!"},
['dig_u']= {"Driller", "THÁCH ĐẤU", "Luyện tập kỹ năng đào xuống!"},
['dig_h']= {"Driller", "KHÓ", "Luyện tập kỹ năng đào xuống!"},
['dig_u']= {"Driller", "THÁCH ĐẤU", "Luyện tập kỹ năng đào xuống!"},
['c4wtrain_n']= {"C4W Training", "THƯỜNG", "Combo vô tận"},
['c4wtrain_l']= {"C4W Training", "RẤT KHÓ", "Combo vô tận"},
['pctrain_n']= {"PC Training", "THƯỜNG", "Luyện tập Perfect Clear"},
['pctrain_l']= {"PC Training", "RẤT KHÓ", "Luyện tập Perfect Clear nhưng khó hơn"},
['pc_n']= {"PC Challenge", "THƯỜNG", "Lấy càng nhiều PC càng tốt trong 100 hàng!"},
['pc_h']= {"PC Challenge", "KHÓ", "Lấy càng nhiều PC càng tốt trong 100 hàng!"},
['pc_h']= {"PC Challenge", "KHÓ", "Lấy càng nhiều PC càng tốt trong 100 hàng!"},
['pc_l']= {"PC Challenge", "RẤT KHÓ", "Lấy càng nhiều PC càng tốt trong 100 hàng!"},
['pc_inf']= {"Inf. PC Challenge", "", "Lấy càng nhiều PC càng tốt"},
['tech_n']= {"Tech", "THƯỜNG", "Cố gắng không phá B2B!"},
['tech_n_plus']= {"Tech", "THƯỜNG+", "Chỉ được clear Spin hoặc PC"},
['tech_h']= {"Tech", "KHÓ", "Cố gắng không phá B2B!"},
['tech_h_plus']= {"Tech", "KHÓ+", "Chỉ được clear Spin hoặc PC"},
['tech_h']= {"Tech", "KHÓ", "Cố gắng không phá B2B!"},
['tech_h_plus']= {"Tech", "KHÓ+", "Chỉ được clear Spin hoặc PC"},
['tech_l']= {"Tech", "RẤT KHÓ", "Cố gắng không phá B2B!"},
['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_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!"},
['tsd_e']= {"TSD Challenge", "DỄ", "Chỉ được clear T-Spin Double!"},
['tsd_h']= {"TSD Challenge", "KHÓ", "Chỉ được clear T-Spin Double!"},
['tsd_u']= {"TSD Challenge", "THÁCH ĐẤU", "Chỉ được clear T-Spin Double!"},
['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!"},
['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_u']= {"TSD Challenge", "THÁCH ĐẤU", "Chỉ được làm T-Spin Double!"},
['backfire_n']= {"Backfire", "THƯỜNG", "Sống sót những hàng rác do chính bạn gửi"},
['backfire_h']= {"Backfire", "KHÓ", "Sống sót những hàng rác do chính bạn gửi"},
['backfire_h']= {"Backfire", "KHÓ", "Sống sót những hàng rác do chính bạn gửi"},
['backfire_l']= {"Backfire", "RẤT KHÓ", "Sống sót những hàng rác do chính bạn gửi"},
['backfire_u']= {"Backfire", "THÁCH ĐẤU", "Sống sót những hàng rác do chính bạn gửi"},
['backfire_u']= {"Backfire", "THÁCH ĐẤU", "Sống sót những hàng rác do chính bạn gửi"},
['sprintAtk']= {"Sprint", "100 Attack", "Gửi 100 hàng!"},
['sprintEff']= {"Sprint", "Efficiency", "Gửi càng nhiều hàng càng tốt trong 40 hàng"},
['zen']= {'Zen', "200", "Xoá 200 hàng nhưng không có thời gian giới hạn"},
['ultra']= {'Ultra', "EXTRA", "Lấy càng nhiều điểm càng tốt trong 2 phút"},
['infinite']= {"Infinite", "", "Chỉ là một chế độ tự do"},
['infinite_dig']= {"Infinite: Dig", "", "Đào, đào nữa, đào mãi"},
['marathon_inf']= {"Marathon", "VÔ TẬN", "Marathon vô hạn."},
['infinite']= {"Infinite", "", "Chỉ là một chế độ tự do"},
['infinite_dig']= {"Infinite: Dig", "", "Đào, đào nữa, đào mãi"},
['marathon_inf']= {"Marathon", "VÔ TẬN", "Marathon không có điểm dừng."},
['custom_clear']= {"Custom", "NORMAL"},
['custom_puzzle']= {"Custom", "PUZZLE"},
@@ -961,7 +987,7 @@ return {
"Đừ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!",
"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",
"Đừ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!",
"Game xếp gạch nhưng có thêm chế độ FFA!",
@@ -972,16 +998,16 @@ return {
"Khuyến khích đeo tai nghe để có trải nghiệm tốt hơn",
"Hello world!",
"Chỉ có 2 loại trimino là I3 và L3",
" if a==true",
"if a==true",
"Việc tăng tần số khung hình sẽ mang trải nghiệm tốt hơn cho bạn",
"Initial [insert action] system có thể cứu bạn đấy",
"[Hành động] tức thì có thể cứu bạn đấy!",
"B2B2B2B là gì? Ăn được không?",
"Nó vừa load cutscene, vừa load game đấy!",
"Bạn có thể xoá 40 hàng mà không cần dùng nút trái/phải",
"Bạn có thể xoá 40 hàng mà không cần dùng nút xoay",
"Hãy tham gia Discord của chúng tôi!",
"l-=-1",
"Nổi lửa lên em, NỔI LỬA LÊN EM",
"Nổi lửa lên em, NỔI LỬA LÊN EM!",
"Việc giảm tần số khung hình sẽ mang trải nghiệm tệ hơn cho bạn",
"LrL RlR LLr RRl RRR LLL FFF RfR RRf rFF",
"Lua No.1",
@@ -1004,10 +1030,10 @@ return {
"sudo rm -rf /*",
"Techmino là sự kết hợp giữa “technique” và “tetromino”",
"Hình như mình nghiện Techmino rồi!",
"Techmino trên Nspire-CX: Vâng, nó tồn tại",
"TetroDictionary (không phải tiếng Việt) đã ra mắt",
"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!)",
"Những cái tên xuất hiện ở phần nền trong trang Đội Ngũ là danh sách các nhà tài trợ của chúng tôi",
"Nhạc game này đã có mặt trên Soundcloud!",
"Toàn bộ nhạc game này đã có mặt trên Soundcloud rồi đấy!",
"The stacker future is yours in Techmino!",
"Bạn có biết: Có một số chế độ đã bị ẩn khỏi map không?",
"Có tất cả 18 miếng pentomino khác nhau",
@@ -1020,7 +1046,7 @@ return {
"Thế còn 23 PC trong 100 hàng?",
"26 TSD có nổi không thế?",
"Game rác v*i c*t",
" while (false)",
"while (false)",
"Bạn là Nhất!",
"Bạn có thể giúp chúng tôi viết BGM và SFX!",
"Bạn có thể cắm bàn phím vào điện thoại hoặc máy tính bảng (đối với iOS thì không)",

View File

@@ -0,0 +1,111 @@
Lối chơi:
Hệ thống sẽ cung cấp bạn các tetromino (gạch 4 ô),
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 độ).
Cứ mỗi hàng được lấp đầy trong bảng, chúng sẽ bị xóa.
Nếu có đối thủ, đối thủ sẽ bị tấn công mạnh nhẹ thế nào tùy vào kiểu xóa bạn vừa thực hiện.
Chơi hết hoặc đạt mục tiêu của cấp độ để chiến thắng.
Hệ thống xoay gạch:
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)
Cách phát hiện spin:
Thỏa mãn quy tắc “3 góc” +2 điểm
Thỏa mãn quy tắc “bất động” +2 điểm
- Cứ một trong hai điều kiện trên được thỏa mãn, thì sẽ được tính là Spin
Nếu việc xoay không đạt điều kiện thứ hai của hệ thống xoay, +1 điểm
- Spin sẽ là Mini nếu chỉ được 2 điểm;
gạch dùng để làm là S, Z, J, L hoặc T VÀ gạch đó không được xóa hết sau khi xóa hàng.
Hệ thống tấn công:
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 (hoặc xóa hơn 4 hàng cùng lúc), PC, hoặc HPC.
Kiểu xóa Đặc biệt có thể làm đầy thanh B2B.
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 (spin): gửi đòn tấn công (số hàng xóa × 2) hàng,
- 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
- Mini sẽ bị cắt còn 25% (hệ số × 0.25)
Kiểu xóa Đặc biệt (Techrash/Techrash+ không dùng spin):
- Techrash gửi 4 hàng; Techrash+ gửi hơn 4 hàng (chưa biết chính xác là bao nhiêu 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
Kiểu xóa không Đặc biệt: gửi (số hàng vừa xóa - 0,5) hàng
Combo (REN):
Số combo = số lần bạn xóa hàng liên tiếp - 1 (dừng tính ở combo 12, từ combo 13 trở đi sẽ tính là combo 12).
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.
+1 hàng để tấn công từ Combo 2 trở đi.
Hemi Perfect Clear (PC mà “vẫn còn gạch ở dưới.”). 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 để hủy rác tới
Perfect Clear (All Clear):
- 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.
- +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.
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.
Nếu có hàng được xóa:
Kiểu xóa đặc biệt:
- Spin Đơn/Đôi/Tam/Techrash/Techrash+ + 50/100/180/800/1000 (×50% nếu là Mini)
- Techrash/Techrash+ + 150/200/...
- PC nếu số PC làm được trong một ván >4, +800
- HPC, +100
Kiểu xóa thường -250
Nếu không:
- Spin (0 hàng) +20.
Thanh B2B không thể làm đầy qua vạch 800 bằng cách này.
Hệ thống tính điểm:
[Sea: hệ thống tính điểm rất phức tạp + bản dịch tiếng Anh không ghi thông tin nên chẳng biết phải viết gì.
Nên thành ra mình tạm thời hoàn toàn không biết gì về cách tính điểm
Và mình cũng không thể đọc được bản tiếng Trung, nên đành để trống vậy
Mình sẽ cập nhật phần này ở những phiên bản sau của Techmino]
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;
Theo sau là Techrash và Spin, chúng thường gửi tấn công chậm hơn;
Combo dài gửi lâu 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;
Minis cũng góp phần kéo dài thời gian chờ nữa.
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.
Tỉ lệ phản công sẽ là 1:1
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ủ của bạn.
Chế độ Battle Royale:
Một chế độ có nhiều người chơi cùng chơi trong một ván cùng lúc (nhưng mà là AI, chứ không phải người thật).
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.
Đá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.
Người chơi có thể chọn 1 trong 4 chế độ tấn công sau đây:
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 người chơi ngẫu nhiên.
2. Huy hiệu: Sau khi bạn tấn công, hoặc 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.
3. K.O.: Nhắm vào người chơi có bảng cao nhất sau khi bạn tấn công hoặc đối thủ bạn đang nhắm đã chết.
4. Phản công: tấn công tất cả người chơi đang khóa vào chính mình.
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 người chơi ngẫu nhiên (không nhắm)
Khi toàn bộ đối thủ bị triệt hạ, thì người sống sót tận cùng sẽ chiến thắng.
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ể vẽ một cái bảng để tập xóa hoặc làm mẫu để tập build.
Ở trong chế độ Build (Puzzle):
Nhấn phím F1 để hiện/ẩn mẫu
ô có X thì không được có gạch;
ô 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 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í.
Một khi bạn làm khớp với mẫu ban đầu, bạn thắng.
.

View File

@@ -59,10 +59,13 @@ end
local function _search()
local input=inputBox:getText():lower()
_clearResult()
-- This change was made by Sea. Should the search function prioritize the best match result and move it to the top of the search result
-- Usually yes except Vietnamese version of Zictionary
local prioritizeBestMatch=not SETTING.locale:find"vi"
local first
for i=1,#dict do
local pos=find(dict[i].title:lower(),input,nil,true) or find(dict[i].keywords,input,nil,true)
if pos==1 and not first then
local pos=find(dict[i].title:lower(),input,nil,true) or find(dict[i].keywords:lower(),input,nil,true)
if pos==1 and not first and prioritizeBestMatch then
ins(result,1,dict[i])
first=true
elseif pos then
@@ -76,7 +79,7 @@ local function _search()
end
function scene.enter()
dict=require("parts.language.dict_"..(SETTING.locale:find'zh' and 'zh' or SETTING.locale:find'ja' and 'ja' or 'en'))
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'))
_scanDict(dict)
inputBox:clear()

View File

@@ -2,7 +2,7 @@ local scene={}
function scene.enter()
BG.set('cubes')
local fileData=FILE.load('parts/language/manual_'..(SETTING.locale:find'zh' and 'zh' or SETTING.locale:find'ja' and 'ja' or 'en')..'.txt','-string')
local fileData=FILE.load('parts/language/manual_'..(SETTING.locale:find'zh' and 'zh' or SETTING.locale:find'ja' and 'ja' or SETTING.locale:find'vi' and 'vi' or 'en')..'.txt','-string')
if fileData then
scene.widgetList.texts:setTexts(fileData:split('\n'))
else