Compare commits

...

8 Commits

Author SHA1 Message Date
MrZ_26
e49f8d428a 修主菜单按钮问题 2024-03-01 09:10:37 +08:00
MrZ_26
6ece5c5f1f 版本推进 2024-02-29 15:48:48 +08:00
MrZ_26
b75359472b 主菜单联网游戏按钮和公告按钮改为不可用 2024-02-29 15:48:34 +08:00
MrZ_26
1c190d9544 暂停界面可以按自定义的重开键 2024-02-29 15:41:56 +08:00
SweetSea
1859e5bb96 Fix Disable theme and Lock B.G.'s weird behaviors (#1091) 2024-02-22 11:07:41 +08:00
Nguyễn Quốc Hưng
7e1a5805b3 Fix ASC and ASC+ (#1089) 2024-02-08 19:43:38 +08:00
Nguyễn Quốc Hưng
6c63fe0ab7 Cleaning-up Vietnamese translation (#1086)
* Cleaning-up the translation

* Update app_piano.lua

* Update lang_vi.lua

* Update TVN's link

I feel bruh because I should at least realize that TVN server lost it's Tier-3 boost a long time ago

* Small changes in dict.lua

* Small update in dict_vi.lua

* Remove a redundant "do-end"
2024-02-08 19:42:36 +08:00
C₂₉H₂₅N₃O₅
85fc9f660e Symbol update and more (#1085)
* Symbol update and more

- Added a few more icon symbols
- Added symbols for playing cards
- Added a note for translators in the English Zictionary
2024-01-22 00:03:08 +08:00
16 changed files with 162 additions and 115 deletions

View File

@@ -831,7 +831,7 @@ end
local ASC
do
local L={'+0+0','+1+0','+0-1','+1-1','+0-2','+1-2','+2+0','+2-1','+2-2','-1+0','-1-1','+0+1','+1+1','+2+1','-1-2','-2+0','+0+2','+1+2','+2+2','-2-1','-2-2'}
local L={'+0+0','+1+0','+0-1','+1-1','+0-2','+1-2','+2+0','+2-1','+2-2','-1+0','-1-1','+0+1','+1+1','+2+1','-1-2','-2+0','+0+2','+1+2','+2+2','-2-1','-2-2','-1+1'}
local R=_flipList(L)
local F={'+0+0'}
local centerPos=TABLE.copy(defaultCenterPos)
@@ -870,7 +870,7 @@ end
local ASC_plus
do
local L={'+0+0','+1+0','+0-1','+1-1','+0-2','+1-2','+2+0','+2-1','+2-2','-1+0','-1-1','+0+1','+1+1','+2+1','-1-2','-2+0','+0+2','+1+2','+2+2','-2-1','-2-2'}
local L={'+0+0','+1+0','+0-1','+1-1','+0-2','+1-2','+2+0','+2-1','+2-2','-1+0','-1-1','+0+1','+1+1','+2+1','-1-2','-2+0','+0+2','+1+2','+2+2','-2-1','-2-2','-1+1'}
local R=_flipList(L)
local F={'+0+0','-1+0','+1+0','+0-1','-1-1','+1-1','+0-2','-1-2','+1-2','-2+0','+2+0','-2-1','+2-1','-2+1','+2+1','+0+2','-1+2','+1+2'}
local centerPos=TABLE.copy(ASC.centerPos)
@@ -1078,4 +1078,4 @@ for name,rs in next,RSlist do
end
end
return RSlist
return RSlist

View File

@@ -1,5 +1,5 @@
local L={
zChan={-- F0000~F003F
zChan={-- F0000 - F003F
none= 0xF0000,
normal= 0xF0001,
full= 0xF0002,
@@ -15,7 +15,7 @@ local L={
angry= 0xF000C,
shocked= 0xF000D,
ellipses= 0xF000E,
sweat_drop= 0xF000F,
sweatDrop= 0xF000F,
cry= 0xF0010,
cracked= 0xF0011,
qualified= 0xF0012,
@@ -24,7 +24,7 @@ local L={
thinking= 0xF0015,
spark= 0xF0016,
},
mino={-- F0040~F007F
mino={-- F0040 - F007F
Z=0xF0040,
S=0xF0041,
J=0xF0042,
@@ -57,7 +57,7 @@ local L={
I2=0xF005B,
O1=0xF005C,
},
icon={-- F0080~F00FF
icon={-- F0080 - F00FF
menu= 0xF0080,
music= 0xF0081,
language= 0xF0082,
@@ -154,8 +154,12 @@ local L={
rewind30= 0xF00DD,
foward10= 0xF00DE,
foward30= 0xF00DF,
fontUp= 0xF00E0,
fontDown= 0xF00E1,
erase= 0xF00E2,
auto= 0xF00E3,
},
key={-- F0100~F017F
key={-- F0100 - F017F
macCmd= 0xF0100,
macOpt= 0xF0101,
macCtrl= 0xF0102,
@@ -196,7 +200,7 @@ local L={
macPgdnAlt= 0xF0125,
iecPower= 0xF0126,
},
controller={-- F0180~F01FF
controller={-- F0180 - F01FF
xbox= 0xF0180,
lt= 0xF0181,
rt= 0xF0182,
@@ -236,7 +240,7 @@ local L={
psCreate= 0xF01A4,
psOption= 0xF01A5,
},
mahjong={-- F0200~F027F
mahjong={-- F0200 - F027F
m1= 0xF0200,
m2= 0xF0201,
m3= 0xF0202,
@@ -323,6 +327,67 @@ local L={
s1j= 0xF0253,
s1jBase= 0xF0254,
s1jComb= 0xF0255,
},
cards={-- F0300 - F070F
cardBack= 0xF0300,
clubA= 0xF0301,
club2= 0xF0302,
club3= 0xF0303,
club4= 0xF0304,
club5= 0xF0305,
club6= 0xF0306,
club7= 0xF0307,
club8= 0xF0308,
club9= 0xF0309,
club10= 0xF030A,
clubJ= 0xF030B,
clubC= 0xF030C,
clubQ= 0xF030D,
clubK= 0xF030E,
heartA= 0xF0401,
heart2= 0xF0402,
heart3= 0xF0403,
heart4= 0xF0404,
heart5= 0xF0405,
heart6= 0xF0406,
heart7= 0xF0407,
heart8= 0xF0408,
heart9= 0xF0409,
heart10= 0xF040A,
heartJ= 0xF040B,
heartC= 0xF040C,
heartQ= 0xF040D,
heartK= 0xF040E,
diamondA= 0xF0501,
diamond2= 0xF0502,
diamond3= 0xF0503,
diamond4= 0xF0504,
diamond5= 0xF0505,
diamond6= 0xF0506,
diamond7= 0xF0507,
diamond8= 0xF0508,
diamond9= 0xF0509,
diamond10= 0xF050A,
diamondJ= 0xF050B,
diamondC= 0xF050C,
diamondQ= 0xF050D,
diamondK= 0xF050E,
jokerBlack= 0xF050F,
clubA= 0xF0601,
club2= 0xF0602,
club3= 0xF0603,
club4= 0xF0604,
club5= 0xF0605,
club6= 0xF0606,
club7= 0xF0607,
club8= 0xF0608,
club9= 0xF0609,
club10= 0xF060A,
clubJ= 0xF060B,
clubC= 0xF060C,
clubQ= 0xF060D,
clubK= 0xF060E,
jokerWhite= 0xF060F,
}
}

Binary file not shown.

View File

@@ -161,8 +161,12 @@ do-- function applySettings()
if SETTING.bg=='on' then
BG.unlock()
BG.setDefault(SETTING.defaultBG)
if SETTING.lockBG then
BG.lock()
elseif reason=='lockBG' then -- Don't load theme too soon!
THEME.set(THEME.calculate(),GAME.playing)
end
BG.set()
if SETTING.lockBG then BG.lock() end
elseif SETTING.bg=='off' then
BG.unlock()
BG.set('fixColor',SETTING.bgAlpha,SETTING.bgAlpha,SETTING.bgAlpha)

View File

@@ -1,5 +1,6 @@
-- Automatically generated by a Python script, from a markdown source file.
-- The script can be found here: https://github.com/user670/techmino-dictionary-converter/blob/master/tool.py
-- **NOTE TO TRANSLATORS**: In English (and in this file) the symbol ~ (tilde) is commonly used to express "approximately". Some languages use this symbol to express ranges or "from/up to a value", but it is not commonly used in English.
return {
{"Translator Note 1",
"",

View File

@@ -706,10 +706,10 @@ Một kỹ thuật di chuyển gạch vào vị trí mong muốn với chuỗi p
Bạn sẽ không bị mất Finesse khi bạn nhét gạch hay thực hiện Spin vì Techmino chỉ kiểm tra những vị trí không yêu cầu soft drop
Techmino cũng có finesse rate (%) (tỉ lệ *không* mắc lỗi di chuyển), được tính như sau:
- 100% (Hoàn hảo - Perfect) khi số lần nhấn phím bằng hoặc ít hơn mức chuẩn
- 50% (Tuyệt vời - Great) khi số lần nhấn phím cao hơn mức chuẩn 1 phím
- 25% (Xấu - Bad) khi số lần nhấn phím cao hơn mức chuẩn 2 phím
- 0% (Truợt - Miss) khi số lần nhấn phím cao hơn mức chuẩn 3 phím
- 100% (Perfect) khi số lần nhấn phím bằng hoặc ít hơn mức chuẩn
- 50% (Great) khi số lần nhấn phím cao hơn mức chuẩn 1 phím
- 25% (Bad) khi số lần nhấn phím cao hơn mức chuẩn 2 phím
- 0% (Miss) khi số lần nhấn phím cao hơn mức chuẩn 3 phím
Một Bad hoặc Miss sẽ phá combo finesse.
Lưu ý:
@@ -774,7 +774,7 @@ Phương pháp này lần đầu tiên được tìm thấy bởi Cheez-fish - n
{"APL",
"nhom05g attackperline efficiency; số hàng tấn công; số hàng đã xóa; độ hiệu quả",
"term",
"Attack per line (cleared) | Số hàng tấn công / Số hàng đã xóa\n\nCòn được biết với tên \"efficiency\" (độ hiệu quả). Phản ánh độ hiệu quả khi tấn công sau mỗi lần xóa hàng.\nVí dụ Tetris và T-spin có độ hiệu quả cao hơn so với xóa 2 / 3 hàng.",
"Attack per line (cleared)\n\tSố hàng tấn công / Số hàng đã xóa\n\nCòn được biết với tên \"efficiency\" (độ hiệu quả). Phản ánh độ hiệu quả khi tấn công sau mỗi lần xóa hàng.\nVí dụ Tetris và T-spin có độ hiệu quả cao hơn so với xóa 2 / 3 hàng.",
},
{"Tấn công&Phg thủ",
"nhom05g attacking defending phòng thủ; tấn công & phòng thủ; tấn công và phòng thủ",
@@ -847,7 +847,7 @@ Trong hầu hết các game, tấn công và phòng thủ là tương đương n
{"Fin, Neo, Iso",
"nhom05i fin neo iso",
"pattern",
"Tên của 3 kiểu T-spin sử dụng wall-kick table đặc biệt của gạch T. Các game khác nhau có cách phản công khác nhau với loại này: có game tính là Mini-spin, nhưng cũng có game không tính luôn =))).\n\nTrên thực tế chúng không được sử dụng nhiều vì game thường sẽ nerf loại T-spin này; hơn nữa setup của ba loại này khá là phức tạp."
"Tên của 3 kiểu T-spin sử dụng wall-kick table đặc biệt của gạch T. Chúng không được sử dụng nhiều trong game bởi vì độ phức tạp và thường hay bị nerf bởi đa số game."
},
{"Freestyle",
"nhom05i",
@@ -894,7 +894,7 @@ Trong hầu hết các game, tấn công và phòng thủ là tương đương n
{"Back to Back",
"nhom05j b2b btb backtoback",
"term",
"Hay còn gọi là B2B. Xóa 2 hoặc nhiều lần xóa theo kiểu nâng cao (như Tetris hay Spin) liên tiếp (nhưng không được xóa theo kiểu 'bình thường' giữa chừng).\nKhông như combo, Back To Back sẽ không bị mất khi đặt gạch.\n\nỞ Techmino, B2B được tính bằng thanh năng lượng, chứ không tính theo số lần xóa theo kiểu nâng cao.\nCũng trong Techmino, nhiều B2B liên tiếp được tính là Back-to-back-to-back (B3B) (xem mục B2B2B để biết thêm).\n\nTechmino cũng tính cả PC và HPC liên tiếp là B2B và B3B",
"Hay còn gọi là B2B. Xóa 2 hoặc nhiều lần xóa theo kiểu nâng cao (như Tetris hay Spin) liên tiếp (nhưng không được kiểu xóa bình thường giữa chừng).\nKhông như combo, Back To Back sẽ không bị mất khi đặt gạch.\n\nỞ Techmino, B2B được tính bằng thanh năng lượng, chứ không tính theo số lần xóa kiểu đặc biệt.\nCũng trong Techmino, nhiều B2B liên tiếp được tính là Back-to-back-to-back (B3B) (xem mục B2B2B để biết thêm).\n\nTechmino cũng tính cả PC và HPC liên tiếp là B2B và B3B",
},
{"B2B2B",
"nhom05j b3b backtobacktoback",
@@ -932,13 +932,13 @@ Trong hầu hết các game, tấn công và phòng thủ là tương đương n
[[
Đây là skin được dùng trong những phiên bản đời đầu của Tetris
Trước đây, tất cả máy tính đều sử dụng Giao diện Dòng lệnh (Command-Line Interfaces, gần giống như cmd trên Windows, Terminal trên Mac, hay Console trên Linux), cho nên mỗi ô gạch đều được hiển thị dưới dạng 2 ngoặc vuông (như thế này: [ ]).
Trước đây, tất cả máy tính đều sử dụng Giao diện Dòng lệnh (Command-Line Interfaces), cho nên mỗi ô gạch đều được hiển thị dưới dạng 2 ngoặc vuông (như thế này: ]]..CHAR.icon.bone..[[).
Trông nó nhìn rất giống cục xương, nên đôi khi được gọi là skin bone block (gạch xương).
Trong Techmino, bone block được mô tả là "một skin gạch duy nhất, lạ mắt mà tất cả các gạch đều sử dụng".
Skin khác nhau sẽ có skin bone block khác nhau.
Cũng trong Techmino nhưng ở tiếng Việt, từ "gạch []" được dùng để chỉ bone block.
Cũng trong Techmino nhưng ở tiếng Việt, từ "gạch ]]..CHAR.icon.bone..[[" được dùng để chỉ bone block.
]],
},
{"=[NHÓM 06]=",

View File

@@ -1,8 +1,5 @@
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={
@@ -153,11 +150,8 @@ 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",
playerNotFound="Không tìm thấy người chơi",
invalidEmailPass="Email hoặc người chơi không hợp lệ",
invalidCode="Mã không hợp lệ",
invalidAccessToken="Mã xác thực không hợp lệ",
},
@@ -181,13 +175,7 @@ return {
versionNotMatch="Phiên bản không khớp",
notFinished="Sắp ra mắt!",
-- 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.",
wrongCode="Mã xác minh không hợp lệ",
wsFailed="Kết nối WebSocket đã thất bại: $1",
wsClose="WebSocket đã đóng: $1",
@@ -213,7 +201,7 @@ return {
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.",
tryAnotherBuild="CO LOI KHI GIAI MA UTF-8! Neu dang choi Techmino tren Windows: hay doi tu x86 sang x64 va nguoc lai.",
tryAnotherBuild="LOI UTF-8! Neu dang choi Techmino tren Windows: hay doi tu x86 sang x64 va nguoc lai.",
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={
@@ -237,7 +225,7 @@ return {
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",
pushSpeed="Garbage Speed\nGhi đè tốc độ xuất hiện rác",
boneBlock="[ ]\nChơi với skin [ ]",
},
pauseStat={
@@ -539,9 +527,6 @@ C. Tay cầm chơi game (Gamepad):
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="Đ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",
@@ -629,7 +614,6 @@ C. Tay cầm chơi game (Gamepad):
apply="Chọn",
},
setting_control={
-- title="Cài đặt Điều khiển",
title="Điều chỉnh thông số",
preview="Xem trước",
@@ -832,14 +816,6 @@ C. Tay cầm chơi game (Gamepad):
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",
-- },
account={
title="Tài khoản",
},
@@ -1083,7 +1059,7 @@ C. Tay cầm chơi game (Gamepad):
"Split clear sắp ra mắt!",
"Techmino là sự kết hợp giữa \"technique\"\"tetromino\"",
"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 ư? Ừ, nhưng đó là một game khác được viết bởi MrZ!",
"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",
"Toàn bộ nhạc game này đã có mặt trên Soundcloud rồi đấy!",
@@ -1107,7 +1083,6 @@ C. Tay cầm chơi game (Gamepad):
"Bạn có thể mở thư mục chứa dữ liệu từ trang Thống kê",
"Bạn có thể thực hiện Spin với tất cả cả miếng gạch trong game này",
"Bạn có thể đặt hướng xuất hiện cho từng miếng gạch",
"ZS JL T O I",
{C.C,"Also try 15puzzle!"},
{C.C,"Also try Ballance!"},
{C.C,"Also try Minecraft!"},
@@ -1143,16 +1118,12 @@ C. Tay cầm chơi game (Gamepad):
"Phát âm từ Techmino như thế nào mới đúng?",
-- 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ʊ/.",
--
"Ủa Techmino phải đọc là \"Tét-mai-nô\" hay là \"Tét-mi-nô\" vậy?",
-- Where to download Techmino?
"Tải Techmino ở đâu vậy? Trên GitHub đấy!",
-- Techmino's birthday
"Ngày sinh nhật của Techmino? Hiện tại (đang giả định) là 26/T6.",
-- How to O-spin: Rotate 626 times in one second (mistaken)
"Cách O-spin? Nhấn phím xoay 626 lần trong 1 giây (ĐÙA ĐẤY ĐỪNG TIN!)",
-- Hope you all like Z... Oh no, like Techmino
{"Mình mong các bạn sẽ thích ",C.W,"Z",C.Z,"… Ối! Không phải, thích ",C.G,"Techmino",C.Z," cơ! Nhầm nhầm nhầm!"},
-- 2021 was the year of Techmino's online debut.
"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'.
@@ -1161,8 +1132,8 @@ C. Tay cầm chơi game (Gamepad):
"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!",
--
"Trừ khi bạn đang chơi Techmino: \"O-spin is a lie!\")",
-- O-spin is a lie!
{C.Y,"O-spin",C.Z," is a ",C.R,"lie",C.Z,"!"},
-- techminohaowan
"Hảo Techmino",
--
@@ -1174,7 +1145,7 @@ C. Tay cầm chơi game (Gamepad):
-- "Meow!"
"Meow!",
-- 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 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!",
"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.
"Đừng chơi điện thoại khi bài tập về nhà còn chưa hoàn thành.",
@@ -1187,7 +1158,7 @@ C. Tay cầm chơi game (Gamepad):
-- It seems like no one has reached a high level by playing with their feet yet.
"Hình như tới giờ chưa ai chơi xếp gạch giỏi bằng chân…",
-- Moderate gaming is good for the brain. Addiction to games is harmful. Plan your time
"Chơi game vừa phải có thể tốt cho bộ não. Nhưng nếu nghiện thì toeng! Nhớ lập th!ời gian biểu nhé!",
"Chơi game vừa phải có thể tốt cho bộ não. Nhưng nếu nghiện thì toang! Nhớ lập thời gian biểu nhé!",
-- The ability to dig is extremely important in battles!!!
"Khả năng đào xuống (downstacking) của bạn là RẤT QUAN TRỌNG trong chiến đấu!!!",
-- Skilled players of the Classic Tetris game are also formidable; don't underestimate them
@@ -1197,7 +1168,7 @@ C. Tay cầm chơi game (Gamepad):
-- 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)",
-- 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 (đã/từng) coi thường hay 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 coi thường hay 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.
"Đừng bỏ cuộc khi đống hàng rác đang làm bạn sắp bị top out, bởi bạn có thể biến chúng trở thành đòn phản công.",
-- The video shown above is not a recording; it's the robot playing in real-time.
@@ -1239,7 +1210,6 @@ C. Tay cầm chơi game (Gamepad):
"git stash",
"git stash apply",
"git submodule update",
"git merge --rebase",
"git merge --squash",
"sudo rm -rf /*",
"shutdown /s /t 0", -- Turn off computer completely (no Fast Boot)
@@ -1253,26 +1223,25 @@ C. Tay cầm chơi game (Gamepad):
{"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."},
--
-- CHANGELOG
{C.lW, "V0.0.091726",": ",C.Z, "Đã thêm hệ thống xoay TRS"},
{C.lW, "V0.7.9" ,": ",C.Z, "Đã thêm ",C.yellow,"O-spin"},
{C.lW, "V0.7.19" ,": ",C.Z, "Đã thêm hệ thống voice"},
{C.lW, "V0.7.22" ,": ",C.Z, "Đã thêm hiệu ứng rơi mượt"},
{C.lW, "V0.8.5" ,": ",C.Z, "Đã thêm map và sắp xếp lại các chế độ"},
{C.lW, "V0.8.19" ,": ",C.Z, "Đã thêm Pentomino"},
{C.lW, "V0.9.0" ,": ",C.Z, "Đã thêm chế độ tự do và khả năng tùy biến chuỗi gạch"},
{C.lW, "V0.10.0" ,": ",C.Z, "Đã thêm hệ thống replay"},
{C.lW, "V0.11.1" ,": ",C.Z, "Đã thêm Little Z Dictionary (Zictionary)"},
{C.lW, "V0.12.2" ,": ",C.Z, "Đã thêm hệ thống mod"},
{C.lW, "V0.0.091726",": ",C.Z, "Thêm hệ thống xoay TRS"},
{C.lW, "V0.7.9" ,": ",C.Z, "Thêm ",C.yellow,"O-spin"},
{C.lW, "V0.7.19" ,": ",C.Z, "Thêm hệ thống voice"},
{C.lW, "V0.7.22" ,": ",C.Z, "Thêm hiệu ứng rơi mượt"},
{C.lW, "V0.8.5" ,": ",C.Z, "Thêm map và sắp xếp lại các chế độ"},
{C.lW, "V0.8.19" ,": ",C.Z, "Thêm Pentomino"},
{C.lW, "V0.9.0" ,": ",C.Z, "Thêm chế độ tự do và cho phép tùy biến chuỗi gạch"},
{C.lW, "V0.10.0" ,": ",C.Z, "Thêm hệ thống replay"},
{C.lW, "V0.11.1" ,": ",C.Z, "Thêm Little Z Dictionary (Zictionary)"},
{C.lW, "V0.12.2" ,": ",C.Z, "Thêm hệ thống mod"},
{C.lW, "V0.13.0" ,": ",C.Z, "Thử nghiệm chế độ trực tuyến"},
{C.lW, "V0.13.2" ,": ",C.Z, "Đã thêm khả năng tùy biến chiều cao bảng"},
{C.lW, "V0.13.3" ,": ",C.Z, "Đã thêm console"},
{C.lW, "V0.14.5" ,": ",C.Z, "Đã thêm BGM đầu tiên được remix bởi cộng đồng"},
{C.lW, "V0.15.5" ,": ",C.Z, "Đã thêm menu replay"},
{C.lW, "V0.16.0" ,": ",C.Z, "Đã thêm hệ thống xoay BiRS"},
{C.lW, "V0.16.2" ,": ",C.Z, "Đã thêm studio SFX với phong cách hit pad"},
{C.lW, "V0.17.0" ,": ",C.Z, "Đã thêm hõ trợ điều khiển bằng joystick"},
{C.lW, "V0.13.2" ,": ",C.Z, "Thêm khả năng thay đổi chiều cao bảng"},
{C.lW, "V0.13.3" ,": ",C.Z, "Thêm console"},
{C.lW, "V0.14.5" ,": ",C.Z, "Thêm BGM đầu tiên được remix bởi cộng đồng"},
{C.lW, "V0.15.5" ,": ",C.Z, "Thêm menu replay"},
{C.lW, "V0.16.0" ,": ",C.Z, "Thêm hệ thống xoay BiRS"},
{C.lW, "V0.16.2" ,": ",C.Z, "Thêm studio SFX với phong cách hit pad"},
{C.lW, "V0.17.0" ,": ",C.Z, "Thêm khả năng điều khiển bằng joystick"},
{C.lW, "V0.17.3" ,": ",C.Z, "Dừng phát triển Techmino, tập trung phát triển game mới"},
{C.lW, "V0.17.12" ,": ",C.Z, "Đã thêm ngôn ngữ tiếng Việt"},
--
-- MATH FORMULAS
"(a+b)²=a²+2ab+b²",
@@ -1298,15 +1267,13 @@ C. Tay cầm chơi game (Gamepad):
--
-- SEA'S JOKE
{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.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ộng đồng Tetris ",C.R,"Việt ",C.lY,"Nam ",C.Z,": https://discord.gg/hoiphuhovietnam"}, -- Tetris Vietnam (TVN)
{"\"Tetris Việt Nam\"? Không, đó là \"Hội phụ hồ Việt Nam\""},
{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.",
{"Cộng đồng Tetris ",C.R,"Việt ",C.lY,"Nam ",C.Z,": https://discord.gg/jX7BX9g"}, -- Tetris Vietnam (TVN)
{"\"Tetris Việt Nam\"? Không, đó là \"Hội phụ hồ Việt Nam\" (https://discord.gg/hoiphuhovietnam)"},
"\"Zictionary\" có 2 tên gọi khác, đó là: \"TetroDictionary\"\"Little Z Dictionary\"",
"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 in TVN
-- Who will you choose? A girl that can break up to you and make you sad

View File

@@ -98,6 +98,7 @@ function scene.enter()
end
function scene.leave()
showingKey=false
TABLE.clear(textObj)
TABLE.clear(pianoVK)
collectgarbage()
@@ -217,8 +218,7 @@ generateVKey=function()
if activateState~=nil then self.activateState=activateState
elseif (self.activateState==1 and activationTime==maxTime) or not self.activateState then self.activateState=0 end
-- LIKELY NOT POSSIBLE TO DO
-- Holding key: self.activateState=activateState and activateState or not activationTime>maxTime and self.activateState or 0 end
-- TODO: when the note can be extended longer, this will need remaking
if dt then
if self.activateState>0 then self.ATV=min(activationTime+dt*60,maxTime)
elseif activationTime>0 then self.ATV=max(activationTime-dt*30,0)
@@ -238,4 +238,4 @@ generateVKey=function()
pianoVK.shift:setObject(CHAR.key.shift)
end
return scene
return scene

View File

@@ -350,7 +350,7 @@ scene.widgetList={
WIDGET.newSwitch{name='phyHold', x=560, y=1030,lim=200, disp=CUSval('phyHold'),code=CUSrev('phyHold'),hideF=function() return CUSTOMGAME_LOCAL.customenv.holdCount==0 end},
-- BG & BGM
WIDGET.newSelector{name='bg', x=840, y=1100,w=250,color='Y',list=BG.getList(),disp=CUSval('bg'),code=function(i) CUSTOMGAME_LOCAL.customenv.bg=i BG.set(i) end},
WIDGET.newSelector{name='bg', x=840, y=1100,w=250,color='Y',list=BG.getList(),disp=CUSval('bg'),code=function(i) CUSTOMGAME_LOCAL.customenv.bg=i BG.set(i) end,hideF=SETval('lockBG')},
WIDGET.newSelector{name='bgm', x=1120,y=1100,w=250,color='Y',list=BGM.getList(),disp=CUSval('bgm'),code=function(i) CUSTOMGAME_LOCAL.customenv.bgm=i BGM.play(i) end},
}

View File

@@ -76,7 +76,7 @@ local function _updateContentBox()
local _t,t
_t,t=pcall(function() return _getList()[listBox.selected].content end)
if not _t then t={"???"} end
local _w,c=FONT.get(currentFontSize):getWrap(t,840)
local _w,c=getFont(currentFontSize):getWrap(t,840)
contentBox:setTexts(c)
end
-- Clear the result
@@ -204,13 +204,12 @@ function scene.keyDown(key)
elseif key=='f1' then
SCN.go(
'textReader',nil,
(text.dict.helpText:repD(
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)
):split('\n'),
currentFontSize,
CHAR.icon.help,CHAR.icon.copy,CHAR.icon.globe,CHAR.key.winMenu),
20,
'rainbow'
)
@@ -226,7 +225,7 @@ function scene.keyDown(key)
-- )
-- if not success then
-- SFX.play('finesseError_long')
-- _,_r=FONT.get(30):getWrap(tostring(_r),1000)
-- _,_r=getFont(30):getWrap(tostring(_r),1000)
-- MES.new("error","Hotload failed! May need restarting!\n\n"..table.concat(_r,"\n"))
-- else
-- local lastLscrollPos=listBox.scrollPos
@@ -313,12 +312,12 @@ scene.widgetList={
WIDGET.newKey{name='link',x=1234,y=520,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=590,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=300,w=60,font=40,fText=CHAR.icon.zoomIn,code=function() _setZoom(5) end},
WIDGET.newKey{name='zoomout',x=1234,y=370,w=60,font=40,fText=CHAR.icon.zoomOut,code=function() _setZoom(-5) end},
WIDGET.newKey{name='fontup',x=1234,y=300,w=60,font=40,fText=CHAR.icon.fontUp,code=function() _setZoom(5) end},
WIDGET.newKey{name='fontdown',x=1234,y=370,w=60,font=40,fText=CHAR.icon.fontDown,code=function() _setZoom(-5) end},
WIDGET.newKey{name='resetzoom',x=1234,y=440,w=60,font=40,fText=CHAR.icon.zoomDefault,code=function() _setZoom(0) end},
WIDGET.newButton{name='back',x=1185,y=60,w=170,h=80,sound='back',font=60,fText=CHAR.icon.back,code=backScene},
WIDGET.newKey{name='help',x=1170,y=140,w=200,h=60,font=40,fText=CHAR.controller.xboxY.."/[F1]: "..CHAR.icon.help,code=pressKey'f1'},
}
-- 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
-- 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

View File

@@ -212,7 +212,7 @@ end
scene.widgetList={
WIDGET.newButton{name='offline',x=-1200,y=210,w=800,h=100,color='lR',font=45,align='R',edge=30,code=pressKey'1'},
WIDGET.newButton{name='qplay', x=-1200,y=330,w=800,h=100,color='lM',font=40,align='R',edge=30,code=pressKey'q'},
WIDGET.newButton{name='online', x=-1200,y=450,w=800,h=100,color='lV',font=45,align='R',edge=30,code=pressKey'a'},
WIDGET.newButton{name='online', x=-1200,y=450,w=800,h=100,color='D',font=45,align='R',edge=30,code=pressKey'a'},
WIDGET.newButton{name='custom', x=-1200,y=570,w=800,h=100,color='lS',font=45,align='R',edge=30,code=pressKey'z'},
WIDGET.newButton{name='setting',x=2480,y=210,w=800,h=100, color='lO',font=40,align='L',edge=30,code=pressKey'-'},
@@ -221,7 +221,7 @@ scene.widgetList={
WIDGET.newButton{name='replays',x=2480,y=570,w=800,h=100, color='lC',font=40,align='L',edge=30,code=pressKey','},
WIDGET.newButton{name='music', x=90,y=80,w=100, color='lY',code=pressKey'2',font=70,fText=CHAR.icon.music},
WIDGET.newButton{name='notice', x=210,y=80,w=100, color='lA',code=pressKey'3',font=70,fText=CHAR.key.winMenu},
WIDGET.newButton{name='notice', x=210,y=80,w=100, color='D',code=pressKey'3',font=70,fText=CHAR.key.winMenu},
WIDGET.newButton{name='lang', x=330,y=80,w=100, color='lN',code=pressKey'4',font=70,fText=CHAR.icon.language},
WIDGET.newButton{name='about', x=-110,y=670,w=600,h=70, color='lB',align='R',edge=20,code=pressKey'x',font=50,fText=CHAR.icon.info},
WIDGET.newButton{name='manual', x=1390,y=670,w=600,h=70, color='lR',align='L',edge=20,code=pressKey'm',font=50,fText=CHAR.icon.help},

View File

@@ -165,6 +165,8 @@ function scene.keyDown(key,isRep)
SFX.play('clear_3')
SYSFX.newShade(1.2,555,200,620,380,.6,.6,.6)
end
elseif KEY_MAP.keyboard[key]==0 then -- custom restart key
scene.keyDown('r')
else
return true
end
@@ -187,6 +189,14 @@ end
scene.mouseUp=scene.touchUp
scene.mouseDown=scene.touchDown
function scene.gamepadDown(key)
if key=='back' then
scene.keyDown('escape')
elseif KEY_MAP.joystick[key]==0 then
scene.keyDown('r')
end
end
function scene.update(dt)
if not (GAME.result or GAME.replaying) then
GAME.pauseTime=GAME.pauseTime+dt

View File

@@ -135,7 +135,7 @@ scene.widgetList={
disp=SETval('lockBG'),
code=function()
SETTING.lockBG=not SETTING.lockBG
applySettings()
applySettings('lockBG')
end,
hideF=function() return SETTING.bg~='on' end
},
@@ -150,7 +150,7 @@ scene.widgetList={
MES.new('warn',text.settingWarn2,6.26)
end
else
THEME.set(THEME.calculate())
THEME.set(THEME.calculate(),GAME.playing)
WIDGET.setWidgetList(scene.widgetList)
end
end

View File

@@ -58,7 +58,7 @@ function THEME.calculate(Y,M,D)
)
end
function THEME.set(theme)
function THEME.set(theme,keepBGM)
if type(theme)=='string' and theme:sub(1,6)=='season' then
BG.setDefault(SETTING.defaultBG)
BGM.setDefault(({season1='null',season2='nil',season3='vaccum',season4='space'})[theme])
@@ -99,7 +99,7 @@ function THEME.set(theme)
THEME.cur=theme
BG.set()
BGM.play()
if not keepBGM then BGM.play() end
return true
end

View File

@@ -5,21 +5,21 @@
新增:
新模式:拼花-棋盘 (by NOT_A_ROBOT) #999
新模式:拼花-反大于号 (by NOT_A_ROBOT) #999
新模式:消四挖掘 (从隐藏改为地图可见)
新增skip暂存模式
新模式:消四挖掘 (by Gompyn) (从隐藏改为地图可见)
首次hold致死也会有额外的I_S时间了 (by Gompyn) #1061 #1055
暂停界面也可以使用设置的重开键(优先级较低)
自定义游戏可以保存录像并回放了 (by Gompyn) #1007
支持自定义菜单背景(by Squishy) #1070
TAS工具添加自动跳过功能 (by NOT_A_ROBOT) #992
越南语词典和帮助 (by Shard Nguyễn, Squishy and TVN community) #1012
新增skip暂存模式
改动:
越南语词典和帮助 (by Shard Nguyễn, Squishy and TVN community) #1012
20g段位模式铁门未达标时显示具体信息 (by NOT_A_ROBOT) #985
优化科研-操作限制模式的限制规则
操作次数限制模式从地图移除且目标改为消40行录像将无法正常播放
自定义游戏可以保存录像并回放了 (by Gompyn) #1007
自定义场地高度上限改为126 #1045
首次hold致死也会有额外的I_S时间了 #1061 #1055
操作次数限制模式从地图移除且目标改为消40行(录像将无法正常播放)
降低100行竞速B评价要求 (226s → 260s)
回放时模式名称下边不再显示当前模式本地pb
调整c4w_n模式排行榜成绩格式改为时间在前
自定义场地高度上限改为126 #1045
文本层面统一HPC为Half PC
删除五连块和三连块模式图标的图片文件
场地编辑界面显示隐形块
@@ -31,6 +31,7 @@
自定义游戏没有正确传递hold开关 #779
调整语音音量时测试音频太乱 #823
游戏中用f11切换全屏会影响背景 (by Squishy) #603 #1070
修卡块旋转音效播放条件错误
dropper小程序玩不了
词典滚动列表框报错

View File

@@ -1,7 +1,7 @@
return {
["apkCode"]=1715,
["code"]=1715,
["string"]="V0.17.15",
["room"]="ver A-11",
["apkCode"]=1716,
["code"]=1716,
["string"]="V0.17.16",
["room"]="ver A-12",
["name"]="暂停 Break",
}