Mục lục
Hướng dẫn script
Bài 6: Cách phát hiện lỗi (bug) và một số lưu ý
Tìm lỗi
Ngoài việc sử dụng api Chat:sendChat() ra thì chúng ta có thể sử dụng print() trong lua để đọc những nội dung được hiển thị từ hai api đó → tìm và sửa lỗi.
Khi khi dùng print(), bạn có thể cho các giá trị như chuỗi, số,… vào. Nội dung được print ra sẽ hiện ở 1 mục riêng, sử dụng biểu tượng dấu chấm than (!) ở góc trên bên phải màn hình để mở( biểu tượng này chỉ xuất hiện sau khi bật công tắc “test” lên ở góc trên bên phải của giao diện script)
Lưu ý về table
Khi chúng ta tạo 1 table, nếu như gán table đó cho một biến khác thì biến đó với table đó sẽ trở thành một, chúng ta có thể gọi các biến trong table kia bằng việc sử dụng biến vừa được gán giá trị của table vào (giống như một căn phòng 1 cửa, chúng ta tạo thêm một cửa khác → vào được căn phòng đó bằng cả hai cửa)
VD:
local a = {b = 1, c = 2} local g g = a print(g.b) – sau khi print, g sẽ print giá trị b của table a g.b = 2 – mình đang thay đổi giá trị của biến b trong table thành 2 print(a.b) – sau khi print, giá trị trả về là 2 vì table a và g là một -> thay đổi giá trị của b bằng biến g thì tức là đang thay đổi giá trị của biến b trong table a.
Lưu ý về api game
Sau khi tạo một funtion và gán function đó cho một sự kiện thì các bạn sẽ tạo một biến để chứa các thành phần trong sự kiện (khối trong sự kiện, người chơi trong sự kiện,…) như sau:
local function o(e) local Nguoi_choi_trong_su_kien = e.eventobjid local khoi_vuong_trong_su_kien = e.blockid end ScriptSupportEvent:registerEvent([=[Player.ClickBlock]=], o)
Các thành phần thường thấy trong api game
Các bạn sẽ sử dụng các “cú pháp” này để gọi ra các thành phần trong sự kiện (chi tiết trong wiki script)
- blockid
- eventobjid
- toobjid
- itemid
- x
- y
- z
- uielement
Lưu ý về api Chat:sendChat()
Theo phỏng đoán của mình thì api này sẽ chỉ gửi giá trị chuỗi, nên dù nhập đúng các thông tin cần thiết cho api như id người chơi thì api vẫn sẽ không hoạt động nếu bạn sử dụng api này để gửi một giá trị số → điều cần làm là chuyển giá trị đó sang chuỗi
VD:
local a = 1 Chat:sendChat(a) – không hoạt động Chat:sendChat(tostring(a)) – hoạt động
Câu lặp for i, v in pairs()
Sau khi thỉnh giáo thầy Kỳ Kỳ thì mình được biết là vòng lặp này lâu lâu sẽ lỗi nếu như các bạn dùng nó để lấy thông tin nên tốt hơn hết là thêm thời gian chờ giữa các vòng lặp bằng api Trigger:wait(thời gian chờ bạn muốn)
VD:
local Danh_sach_nguoi_choi = {“nguoiA”,” nguoiB”,” nguoiC”,” nguoiD”} for i, v in pairs(Danh_sach_nguoi_choi) do local result, x, y, z = Player:getPosition(v) Trigger:wait(0.1) end – khuyến khích thêm nếu phát hiện lỗi, không phát hiện thì không cần thêm
Với 5 bài đầu tiên thì các bạn có thể làm quen và sử dụng script nên mức độ quan trọng của các bài sau bài 5 không cao nên sẽ không có bài tập nhaa
— Cre:Vũ Hoàng 2024/06/21 17:31