diff --git a/README.md b/README.md
index f553021..1ab17f5 100644
--- a/README.md
+++ b/README.md
@@ -10,7 +10,7 @@
-[EN](README.md) | [简中](README_zh-Hans.md) | [繁中](README_zh-Hant.md)
+[EN](README.md) | [简中](README_zh-Hans.md) | [繁中](README_zh-Hant.md) | [VN](README_vn-vn.md)
---
diff --git a/README_vi-vn.md b/README_vi-vn.md
new file mode 100644
index 0000000..ca6d2f3
--- /dev/null
+++ b/README_vi-vn.md
@@ -0,0 +1,157 @@
+
+
+
+
+
+
+
+
+
+
+
+
+[EN](README.md) | [简中](README_zh-Hans.md) | [繁中](README_zh-Hant.md) | [VN](README_vn-vn.md)
+
+---
+
+Hướng Dẫn Bắt Đầu
+
+## Phiên bản ổn định
+1. Truy cập vào mục [release](https://github.com/Akebi-Group/Akebi-GC/releases)
+2. Tải về file chạy mới nhất
+## Phiên bản mới nhất
+1. Truy cập vào mục [Action](https://github.com/Akebi-Group/Akebi-GC/actions)
+1. Chọn Publish trong mục workflow
+1. Chọn workflow gần nhất được tích xanh ✔ (Lưu ý lựa chọn đúng phiên bản game **GLOBAL/CN/BETA**)
+
+
+
+4. Tải về Akebi-GC-release trong mục Artifacts
+
+
+
+
+## Tự xây dựng từ mã nguồn
+Tham khảo trang wiki - [Building](https://github.com/Akebi-Group/Akebi-GC/wiki/Building%EF%BD%9C%E5%BB%BA%E7%BD%AE)
+
+### Cài đặt
+1. Hãy chắc chắn rằng file `CLibrary.dll` ở trong cùng folder với file `injector.exe`.
+2. Chạy `injector.exe`.
+3. Sau khi đăng nhập vào game, bấm F1 để hiển thị giao diện Akebi.
+
+Tính Năng
+
+#### Cơ bản
+- Vượt chống can thiệp game
+- Giao diện trong game
+- Phím tắt
+- Thông báo tính năng
+
+#### Người chơi
+- Bất tử
+- Tăng sức tấn công: Đa mục tiêu/Mục tiêu cố định/Hoạt ảnh tấn công
+- Không thời gian hồi: Chiêu E/Ulti/Chạy/Ngắm bắn
+- Thể lực vô hạn
+- Bay tự do xuyên tường
+
+#### Thế giới
+- Seelie tự động bay
+- Thiết lập đội ngay lập tức
+- Tốc độ game
+- Quái không tấn công
+- Đóng băng quái
+- Tự động phá: Mỏ quặng/Giáp quái/Các vật dụng/Cây cối
+- Tự động nhặt/Mở rương
+- Nhặt đồ xa
+- Hội thoại tự động
+- Tự động chặt gỗ
+- Tự động nấu ăn
+- Giả thời gian
+- Tự động câu cá
+- Tự động giết quái
+- Hút quái
+- Hút item
+
+#### Dịch chuyển
+- Hòm/Thần đồng (Dịch chuyển đến nơi gần nhất)
+- Dịch chuyển tức thời (Dịch chuyển đến đánh dấu trên bản đồ thế giới)
+- Dịch chuyển tùy biến (Dịch chuyển theo danh sách)
+
+#### Hình ảnh
+- ESP (Nhìn xuyên tường vị trí của item,...)
+- Bản đồ tương tác tích hợp
+- Góc nhìn nguyên tố vô hạn
+- Tắt sương mù
+- Mở khóa FPS
+- Thay đổi độ rộng góc nhìn
+- Thông báo rương
+- Ẩn giao diện
+- Trình duyệt web trong game
+- Nhìn trộm
+- Thay đổi thông tin: UID/Nickname/Hạng mạo hiểm/Cấp thế giới/Avatar/Danh thiếp
+- Thay đổi thời tiết
+- Góc nhìn tự do
+- Paimon đi theo
+- Thay đổi Texture
+
+#### Gỡ lỗi
+- Quán lí Entities
+- Theo dỗi vị trí
+- Biểu đồ FPS
+- [Packet Sniffer](https://github.com/Akebi-Group/Akebi-PacketSniffer)
+
+Giới thiệu
+
+
+ Dịch chuyển tức thời
+
+
+
+ Bay tự do
+
+
+
+ Dịch chuyển đến Thần đồng
+
+
+
+ Dịch chuyển đến Rương
+
+
+
+ Đánh liên hoàn
+
+
+
+ Hội thoại tự động
+
+
+
+Báo cáo lỗi
+
+(VUI LÒNG SỬ DỤNG TIẾNG ANH!)
+
+Những điều lưu ý trước khi báo cáo lỗi
+
+1. Bạn tìm thấy lỗi.
+1. Trình bày rõ ràng điều gì đã xảy ra, và bạn nghĩ do vấn đề nào gây ra.
+1. Có thể thực hiện lại lỗi không? Có hoặc không. Nếu có: Hãy trình bày cách thực hiện rõ nhất có thể. Ví dụ: điều gì đã xảy ra khi gặp lỗi và tại sao.
+1. Hãy cho chúng tôi biết phiên bản Akebi bạn sử dụng. Sử dụng mã `SHA`/ Số phiên bản của commit gần nhất phiên bản mà bạn sử dụng. Ví dụ: `bd17a00ec388f3b93624280cde9e1c66e740edf9` / Release 0.7
+1. [Báo cáo lỗi](https://github.com/Akebi-Group/Akebi-GC/issues)
+
+Đóng góp cho dự án
+
+
+## Thêm tính năng
+1. Fork dự án
+1. Tạo Branch với tính năng của bạn (`git checkout -b feature/AmazingFeature`)
+1. Commit thay đổi của bạn (`git commit -m 'Add some AmazingFeature'`)
+1. Push lên Branch (`git push origin feature/AmazingFeature`)
+2. [Tạo Pull Request](https://github.com/Akebi-Group/Akebi-GC/pulls)
+
+## Góp ý
+
+(VUI LÒNG SỬ DỤNG TIẾNG ANH!)
+
+Để đóng góp ý tưởng cho dự án hãy tạo một [issue](https://github.com/Akebi-Group/Akebi-GC/issues) với tiêu đề là ý tưởng bạn muốn.
+Hãy **giải thích rõ ràng nhất có thể** để những người phát triển dự án có thể hiểu ý tưởng của bạn.
\ No newline at end of file
diff --git a/README_zh-Hans.md b/README_zh-Hans.md
index c5eeda3..4a76bf8 100644
--- a/README_zh-Hans.md
+++ b/README_zh-Hans.md
@@ -10,7 +10,7 @@
-[EN](README.md) | [简中](README_zh-Hans.md) | [繁中](README_zh-Hant.md)
+[EN](README.md) | [简中](README_zh-Hans.md) | [繁中](README_zh-Hant.md) | [VN](README_vn-vn.md)
---
diff --git a/README_zh-Hant.md b/README_zh-Hant.md
index f1b4b6d..e7660ba 100644
--- a/README_zh-Hant.md
+++ b/README_zh-Hant.md
@@ -10,7 +10,7 @@
-[EN](README.md) | [简中](README_zh-Hans.md) | [繁中](README_zh-Hant.md)
+[EN](README.md) | [简中](README_zh-Hans.md) | [繁中](README_zh-Hant.md) | [VN](README_vn-vn.md)
---
diff --git a/cheat-base/src/cheat-base/cheat/misc/Settings.cpp b/cheat-base/src/cheat-base/cheat/misc/Settings.cpp
index b875a0d..9028bf5 100644
--- a/cheat-base/src/cheat-base/cheat/misc/Settings.cpp
+++ b/cheat-base/src/cheat-base/cheat/misc/Settings.cpp
@@ -35,7 +35,7 @@ namespace cheat::feature
NF(f_HotkeyExit, "Hotkeys", "General::FastExit", Hotkey(VK_F12)),
NF(f_FontSize, "Font Size", "General::Theme", 16.0f),
- NF(f_ShowStyleEditor, "Show Colors Customization", "General::Theme", false),
+ NF(f_ShowStyleEditor, "Show Theme Customization", "General::Theme", false),
NFS(f_DefaultTheme, "Theme", "General::Theme", ""),
themesDir(util::GetCurrentPath() / "themes")
@@ -470,7 +470,31 @@ namespace cheat::feature
ImGui::BeginGroupPanel("Interface Customization");
{
ImGui::SetNextItemWidth(200);
- if (ImGui::BeginCombo("Themes", f_DefaultTheme.value().c_str()))
+ if (ConfigWidget(f_FontSize, 1, 8, 64, "Adjust interface font size."))
+ renderer::SetGlobalFontSize(static_cast(f_FontSize));
+
+ static std::string themeNameBuffer_;
+
+ ImGui::SetNextItemWidth(200);
+ ImGui::InputText("Theme Name", &themeNameBuffer_);
+
+ bool alreadyExist = m_Themes.count(themeNameBuffer_) > 0;
+
+ ImGui::SameLine();
+ if (ImGui::Button(alreadyExist ? "Replace Theme" : "Save Theme"))
+ {
+ ImGui::SameLine();
+ if (themeNameBuffer_.empty())
+ ImGui::Text("Theme name is not valid. Falling back into default theme");
+ ThemeExport(themeNameBuffer_);
+ hasLoaded = false;
+ f_DefaultTheme = themeNameBuffer_;
+ Init();
+ themeNameBuffer_.clear();
+ }
+
+ ImGui::SetNextItemWidth(200);
+ if (ImGui::BeginCombo("Theme Select", f_DefaultTheme.value().c_str()))
{
for (auto& [themeName, themeData] : m_Themes)
{
@@ -486,6 +510,7 @@ namespace cheat::feature
}
ImGui::EndCombo();
}
+
ImGui::SameLine();
if (ImGui::Button("Delete Theme"))
{
@@ -496,28 +521,7 @@ namespace cheat::feature
Init();
}
- static std::string themeNameBuffer_;
- ImGui::InputText("Theme Name", &themeNameBuffer_);
-
- if (ConfigWidget(f_FontSize, 1, 8, 64, "Adjust interface font size."))
- renderer::SetGlobalFontSize(static_cast(f_FontSize));
-
- ImGui::Spacing();
-
- ConfigWidget(f_ShowStyleEditor, "Show colors customization window.");
- ImGui::SameLine();
- bool alreadyExist = m_Themes.count(themeNameBuffer_) > 0;
- if (ImGui::Button(alreadyExist ? "Replace Theme" : "Save Theme"))
- {
- if (themeNameBuffer_.empty())
- return;
-
- ThemeExport(themeNameBuffer_);
- hasLoaded = false;
- f_DefaultTheme = themeNameBuffer_;
- Init();
- themeNameBuffer_.clear();
- }
+ ConfigWidget(f_ShowStyleEditor, "Show ImGui theme customization window.");
}
ImGui::EndGroupPanel();
}