API bảng xếp hạng API (Cloudsever: XXX) sẽ chỉ cho phép chúng ta đặt dữ liệu bằng cách sử dụng “key” và “score”. Và vì tên của người chơi có thể được lặp lại. Chúng ta nên sử dụng ID của người chơi làm key cho bảng xếp hạng.
Vấn đề là khi chúng ta muốn lấy lại dữ liệu từ bảng xếp hạng, chúng ta sẽ lấy ID người chơi. Nhưng thông thường chúng ta sẽ muốn hiển thị tên của người chơi trên bảng xếp hạng.
Một số nhà phát triển bản đồ sẽ sử dụng API “Player:getNickname()” để lấy tên của người chơi từ ID của người chơi. Nhưng phương pháp này sẽ không hoạt động nếu người chơi đó không đăng nhập vào bản đồ tại thời điểm đó.
Một số sẽ tạo một bảng mới để giữ danh sách ID của người chơi và tên của người chơi. Phương pháp này đòi hỏi nhiều nỗ lực hơn và cần thực hiện thêm một kết nối từ máy chủ và phải đợi một cuộc gọi Callback(). Và vì việc chờ đợi mỗi Callback() từ máy chủ Đám mây mất một thời gian dài (vài giây). Vì vậy, phương pháp này không tốt trong các tình huống thực tế.
Đây là giải pháp tốt hơn
Sử dụng API “CloudSever:getOrderDataIndexArea()”
https://dev-wiki.mini1.cn/cyclopdeia?wikiMenuId=3&wikiId=2067#getOrderDataIndexArea
API này có thể trả về dữ liệu xếp hạng n trong 1 Callback().
Và khi bạn sử dụng nó trong máy chủ đám mây bằng cách đặt ID của người chơi làm khóa, bạn sẽ có thể truy cập thuộc tính v.nick để lấy tên của người chơi ngay cả khi người chơi đó không có trên bản đồ tại thời điểm đó.
Vui lòng xem ví dụ này.
Lưu ý rằng giải pháp này sẽ chỉ hoạt động trên máy chủ đám mây. Bạn không thể truy cập v.nick ở chế độ chơi đơn hoặc phòng trực tuyến bình thường.
Đây là kịch bản ví dụ.
Đừng quên tạo bảng xếp hạng có tên “gold” trước khi sử dụng.
Và đây là video demo.