====== [Thành phần tập lệnh] Bảng Xếp Hạng Cơ Bản ====== Mục tiêu của thành phần tập lệnh này là cho phép nhà phát triển bản đồ có thể dễ dàng tạo được tính năng bảng xếp hạng trên bản đồ của họ. Vui lòng đưa ra ý kiến hoặc báo cáo lỗi hoặc yêu cầu các tính năng. ===== Tính năng của thành phần tập lệnh bảng xếp hạng này ===== * 1. Đơn giản và dễ dàng để tích hợp vào bản đồ của bạn (Chỉ trong 3 phút để tích hợp nó vào bản đồ của bạn). * 2. Nó sẽ tự động tải lên và tải xuống top 10 từ bảng xếp hạng và cập nhật UI cho bạn. * 3. Có thể hiển thị tên của người chơi trong cả phòng chơi đơn, phòng nhiều người chơi và phòng máy chủ đám mây. //Lưu ý: Nó sẽ cập nhật dữ liệu sau mỗi 12 giây. (điều này là vì sự an toàn của máy chủ.)// ===== Yêu cầu cho bản đồ của bạn trước khi sử dụng ===== * 1. Tạo biến "Bảng xếp hàng01" trên bản đồ của bạn. {{ :developer_center:developer_editor:basic_leaderboard_vn1.png?nolink&400 | }} * 2. Tạo "Biến điểm" của người chơi trên bản đồ của bạn. (Mỗi khi người chơi ghi điểm, bạn phải cập nhật biến số của người chơi này.) {{ :developer_center:developer_editor:basic_leaderboard_vn2.png?nolink&400 | }} * 3. Tạo một Giao diện tùy chỉnh (UI) để hiển thị Bảng xếp hạng. {{ :developer_center:developer_editor:basic_leaderboard_vn3.png?nolink&600 | }} ===== Cách sử dụng (3 phút) ===== {{ youtube>loQ0l1TiZfw }}\\ Tải xuống Tập lệnh và dán vào bản đồ của bạn (vào tập lệnh của UI 's script). {{ https://mini1.feishu.cn/file/VN8Ib3p0noHOaYxXFelcqzP3nhg?from=from_copylink |lbparkour.lua }} \\ Cẩn thận, không dán vào 1 dòng như thế này. Điều này là sai.\\ {{ :developer_center:developer_editor:basic_leaderboard_vn4.png?nolink&600 | }} Đúng rồi\\ {{ :developer_center:developer_editor:basic_leaderboard_vn5.png?nolink&600 | }} * 1. Sửa đổi tập lệnh và thay đổi dòng 2 thành tên bảng xếp hạng của bạn. * 2. Sửa đổi kịch bản và thay đổi dòng 1 thành tên điểm của người chơi. {{ :developer_center:developer_editor:basic_leaderboard_vn6.png?nolink&600 | }} * 3. Sửa đổi ID của phần tử UI tùy chỉnh. Nếu bạn không biết cách lấy ID của UI tùy chỉnh, vui lòng xem video. **{{ https://youtu.be/loQ0l1TiZfw |parkour_demo.mp4 }}** **Cách thay đổi ID UI** * 3.1. Sửa đổi tập lệnh và thay đổi dòng 3 thành ID UI 'ID * 3.2. Sửa đổi tập lệnh và thay đổi nó thành ID UI ID (tên) * 3.3. Sửa đổi tập lệnh và thay đổi nó thành ID UI ID (điểm) **Lưu ý:** Video trên cho thấy cách lấy UI ID chỉ từ phiên bản PC. Đối với điện thoại di động, Vui lòng xem phần dưới đây.\\ {{ :developer_center:developer_editor:basic_leaderboard_vn7.png?nolink&600 | }} Kết thúc, bạn có thể chạy bản đồ. Bảng xếp hạng sẽ hoạt động ngay bây giờ.\\ ---- ===== (Tùy chọn) Làm thế nào để có được UI ID trên điện thoại di động ===== Vui lòng xem tài liệu này. **https://dev-wiki.mini1.cn/cyclopdeia?wikiMenuId=3&wikiId=1374** {{ :developer_center:developer_editor:Basic_leaderboard_8.png?nolink&600 | }} ===== (Tùy chọn) Cài đặt nâng cao ===== {{ :developer_center:developer_editor:Basic_leaderboard_9.png?nolink&600 | }} * - NUM_RANK_GET Thay đổi biến này nếu bạn muốn nhận được nhiều hơn hoặc ít hơn dữ liệu xếp hạng. Mặc định là top 10.\\ * - LB_UPDATE_SEC Thay đổi biến này nếu bạn muốn bảng xếp hạng cập nhật thường xuyên hoặc chậm hơn (mặc định là cập nhật mỗi 12 giây). Nhưng hãy cẩn thận, đừng cập nhật bảng xếp hạng quá thường xuyên, bảng xếp hạng có thể bị lỗi. Bạn có thể xem thêm chi tiết trong tài liệu này. **https://dev-wiki.mini1.cn/cyclopdeia?wikiMenuId=2125&wikiId=2208**\\ Trên thực tế, tôi khuyên Bạn không nên thay đổi bất cứ điều gì ở giá trị này.\\ {{ :developer_center:developer_editor:Basic_leaderboard_10.png?nolink&600 | }} ===== (Tùy chọn) Hiển thị bộ đếm thời gian đồng bộ hóa bảng Xếp hạng ===== * Vì bảng xếp hạng của chúng Ta sẽ đồng bộ hóa sau mỗi N giây, chúng Ta nên thông báo cho người chơi biết điều này. Nếu không, người chơi có thể nhầm lẫn tại sao bảng xếp hạng không thay đổi. Chúng tôi khuyên bạn nên thêm đếm ngược số để người chơi biết khi nào bản cập nhật tiếp theo sẽ xảy ra. {{ :developer_center:developer_editor:basic_leaderboard_vn8.png?nolink&600 | }} ===== (Tùy chọn) Cải tiến trong tương lai ===== * Nhược điểm của bảng xếp hạng cơ bản này là không thể hiển thị dữ liệu trong thời gian thực. Vì chúng tôi cập nhật dữ liệu từ máy chủ cứ sau N giây (mặc định là 12 giây). Và có thời gian trễ (0 giây đến 10 phút) sau khi yêu cầu dữ liệu cho đến khi chúng tôi nhận lại dữ liệu từ máy chủ. * Sự cố này sẽ không xảy ra khi chúng tôi kiểm tra bản đồ của mình ở chế độ chơi đơn. Nhưng nó luôn xảy ra khi chạy trên máy chủ đám mây. * Để khắc phục sự cố cập nhật chậm trễ này, nhiều nhà phát triển trò chơi sẽ sử dụng 2 bản sao của kỹ thuật bảng xếp hạng. * Đầu tiên là dữ liệu bảng xếp hạng nhận được từ máy chủ. * Thứ hai là dữ liệu sao chép cục bộ trên máy đang chạy. * Chúng tôi sẽ cập nhật dữ liệu theo thời gian thực trong bản sao thứ hai và hiển thị cho người chơi. Và chúng tôi phải hợp nhất bản sao từ máy chủ (bản sao đầu tiên) mỗi khi chúng tôi lấy lại dữ liệu từ máy chủ. * Bằng cách thực hiện kỹ thuật này, chúng ta có thể hiển thị dữ liệu thời gian thực cho người chơi. Ví dụ người chơi nhận được điểm + 1, bảng xếp hạng sẽ ngay lập tức thay đổi. * Nhưng có một số vấn đề mà chúng ta phải quan tâm nếu chúng ta sử dụng kỹ thuật này. Bởi vì dữ liệu mà người chơi nhìn thấy trong bảng xếp hạng không phải là dữ liệu thực trên máy chủ. Chúng ta phải đảm bảo rằng chúng ta có thể tải lên điểm số thực của người chơi kịp thời trước khi người chơi thoát ra khỏi phòng. Nếu không, người chơi có thể hiểu rằng điểm của họ đã tải lên và thoát khỏi phòng. * Chủ đề này vượt xa phạm vi của tài liệu này. Chúng ta có thể nói về nó nhiều hơn trong tương lai... ---- ===== Mô tả mã ===== ==== Chức năng "callback2()" ==== * Chức năng này sẽ được gọi khi trò chơi nhận được dữ liệu bảng xếp hạng từ máy chủ. Đầu tiên, chúng ta sẽ kiểm tra xem "v.nick" có phải là nil hay không. "v.nick" là trường sẽ giữ tên của người chơi và nó sẽ có giá trị khi chỉ được sử dụng trên máy chủ đám mây. Khi chạy ở chế độ chơi đơn, nó sẽ là nil. Nếu "v.nick" là nil, chúng ta sẽ sử dụng tên người chơi từ "g _ nameList" thay thế. Để biết thêm chi tiết về máy chủ đám mây API và các API khác, vui lòng xem tài liệu này. **https://dev-wiki.mini1.cn/cyclopdeia?wikiMenuId=3&wikiId=2067** **!!! Và điều rất quan trọng cần biết là sau khi bạn gọi API máy chủ đám mây API để lấy dữ liệu từ bảng xếp hạng, bạn sẽ không nhận được cuộc gọi lại ngay lập tức. Cuộc gọi lại có thể trì hoãn trở lại trong vài giây hoặc đôi khi có thể là một phút.** ==== Chức năng "Game_Run()" ==== * Đây là chức năng chính. Những gì chúng tôi làm ở đây chỉ là tăng bộ đếm "gTick" cho đến khi nó đạt đến thời gian chúng ta mong muốn. Và sau đó chúng ta sử dụng API máy chủ đám mây API để tải lên và tải xuống dữ liệu từ máy chủ. ==== Chức năng "mysplitlb()" ==== * Đây là các chức năng tiện ích để kiểm tra và gỡ lỗi. ==== Chức năng "Player_NewInputContentLB()" ==== * Đây là các chức năng tiện ích để kiểm tra và gỡ lỗi. ==== Chức năng "Game_PlayerEnterLB()" ==== * Mỗi khi người chơi vào bản đồ, chúng tôi sẽ giữ tên của họ trong bảng "g _ nameList" để sử dụng trong hàm gọi lại ở trên. ----