Mục lục
- Giao diện trực quan & hiệu ứng xoay thực tế
- Phần thưởng & xác suất có trọng số
- Hệ thống Cân bằng Kết quả bằng AI
- Giới hạn, Cooldown & bảo mật
- Trạng thái thông minh
- Bảng xếp hạng & theo dõi người thắng
- REST API & tích hợp bảo mật cao
- Filter cho Developer
- Ví dụ: Nhân đôi EXP cuối tuần + bonus VIP + giới hạn Cash
- Bắt đầu sử dụng
Giao diện trực quan & hiệu ứng xoay thực tế
- Thiết kế 6 ô màu (wedge) rõ ràng, mỗi màu đại diện cho một cấp phần thưởng.
- Hiệu ứng xoay vật lý với easing – vòng quay luôn dừng chính xác tại ô trúng thưởng do server xác định.
- Tích hợp Legend hiển thị phần thưởng tương ứng với từng màu – không tiết lộ tỉ lệ trúng.
- Nút SPIN có tooltip hướng dẫn và phản hồi trạng thái trực tiếp khi nhấn.
Phần thưởng & xác suất có trọng số
- Phần thưởng được xác định phía server bằng thuật toán weighted random với hệ số tùy chỉnh qua filter
init_manga_lw_weight_scale. - Tỉ lệ mặc định: 90% không trúng, 5% EXP thưởng thấp, 3% Coin thưởng trung bình, 1.5% Coin thưởng cao, 0.5% phần thưởng Cash hiếm và 0% phần thưởng đặc biệt.
- Hỗ trợ thưởng dạng EXP, Coin và Cash (có thể kết hợp nhiều loại).
- Khi người chơi trúng thưởng, hệ thống tự động cộng số dư và ghi log giao dịch.
- Không có bất kỳ xác suất nào được tiết lộ ra frontend — client chỉ nhận dữ liệu hiển thị cần thiết cho hiệu ứng quay.
Hệ thống Cân bằng Kết quả bằng AI
- AI Balancing System (New Option): hệ thống AI thông minh phân tích lịch sử quay và hành vi chi tiêu của từng người chơi để điều chỉnh xác suất phần thưởng một cách linh hoạt và công bằng.
- Người chơi thắng lớn liên tiếp sẽ bị giảm nhẹ tỉ lệ trúng giải cao, trong khi người thua nhiều sẽ nhận “phần thưởng an ủi” nhỏ giúp duy trì hứng thú quay tiếp.
- AI luôn đảm bảo hệ thống không bị lỗ, đồng thời giữ trải nghiệm tự nhiên – mọi lượt quay vẫn dựa trên xác suất gốc có trọng số.
- Tùy chọn bật/tắt qua
init_manga_lw_ai_assist; khi bật, hệ thống tự động lưu lịch sử quay vào bảng chuyên dụnginit_lw_historyđể phục vụ phân tích.
Giới hạn, Cooldown & bảo mật
- Chống spam bằng cooldown (mặc định 5 giây) dựa trên transient.
- Giới hạn lượt quay mỗi ngày qua filter
init_manga_lw_daily_limit. Nếu ≤ 0, hệ thống sẽ tắt hoàn toàn việc đếm theo ngày. - REST API xác thực chặt chẽ: yêu cầu đăng nhập, kiểm tra
X-WP-Nonce, số dư Coin/Cash và rollback an toàn khi lỗi. - Nếu giá lượt quay (spin price) = 0, hệ thống tự động vô hiệu hóa và trả thông báo rõ ràng.
Trạng thái thông minh
- Thay vì dùng thuộc tính
disabledmặc định, nút SPIN sử dụng class.is-disabledgiúp giữ lại tooltip và logic đăng nhập. - Trạng thái đang quay hiển thị qua
aria-busyvà class.is-busy, đảm bảo trải nghiệm mượt mà và dễ truy cập (accessibility). - Khi nhấn vào nút bị vô hiệu, hệ thống sẽ hiển thị thông báo thân thiện lấy từ tooltip của UIkit.
Bảng xếp hạng & theo dõi người thắng
- Mỗi lượt quay trúng sẽ tăng bộ đếm meta người dùng
init_lw_total_winsđể hiển thị trong bảng xếp hạng. - Hàm hỗ trợ
init_manga_lw_get_top_winners()trả về danh sách top người thắng gồm: ID, display_name, user_registered, wins. - Tích hợp cache để giảm tải database, kèm tùy chọn lọc theo vai trò (role) hoặc loại trừ ID người dùng.
REST API & tích hợp bảo mật cao
POST /wp-json/initmanga/v1/lucky-wheel/spin— endpoint duy nhất xử lý logic xác suất, trừ tiền, cộng thưởng, ghi log và trả về thông tin quay.- Tất cả tính toán được thực hiện hoàn toàn phía máy chủ. Frontend chỉ nhận góc dừng (deg) và nhãn phần thưởng.
- Tích hợp sẵn với hệ thống Inbox và toast notification hiện có trong Init Manga.
Filter cho Developer
init_manga_lw_weight_scale: điều chỉnh hệ số nội bộ để thay đổi độ chính xác xác suất (mặc định1000).init_manga_lw_daily_limit: cấu hình giới hạn lượt quay mỗi ngày; ≤ 0 để tắt hoàn toàn.init_manga_lw_spin_price: thay đổi giá mỗi lượt quay (đơn vị Coin).init_manga_lw_mutate_reward: cho phép chỉnh sửa phần thưởng (EXP/Coin/Cash) trước khi cộng — dùng để tạo sự kiện nhân đôi EXP, bonus VIP, hoặc giới hạn Cash tối đa.
Ví dụ: Nhân đôi EXP cuối tuần + bonus VIP + giới hạn Cash
add_filter('init_manga_lw_mutate_reward', function ($reward, $ctx) {
$exp = max(0, (int) ($reward['exp'] ?? 0));
$coin = max(0, (int) ($reward['coin'] ?? 0));
$cash = max(0, (int) ($reward['cash'] ?? 0));
$user_id = (int) ($ctx['user_id'] ?? 0);
// Nhân đôi EXP vào Thứ 7 & Chủ nhật
$wday = (int) wp_date('w', strtotime(($ctx['time_gmt'] ?? gmdate('Y-m-d H:i:s')) . ' UTC'));
if ($wday === 0 || $wday === 6) {
$exp *= 2;
}
// Bonus VIP: +100 Coin nếu user có meta is_vip = 1
if ($user_id && init_plugin_suite_user_engine_is_vip($user_id)) {
$coin += 100;
}
// Giới hạn phần thưởng Cash tối đa 500 mỗi lượt
$cash = min($cash, 500);
return [
'chance' => (float) ($reward['chance'] ?? 0),
'exp' => $exp,
'coin' => $coin,
'cash' => $cash,
];
}, 10, 2);
Bắt đầu sử dụng
- Thêm template
template-lucky-wheel.phpvà enqueue CSS/JS đi kèm. - Thiết lập giá lượt quay qua filter
init_manga_lw_spin_price(đặt = 0 để tắt tính năng). - Cấu hình phần thưởng và tỉ lệ qua option hoặc filter tùy chỉnh; hệ thống không bao giờ hiển thị xác suất ở phía client.
- Hiển thị bảng xếp hạng người thắng ở bất kỳ đâu bằng hàm
init_manga_lw_get_top_winners()kèm layout user card có sẵn.
Bình luận