Bắt đầu¶
GameServer bao gồm một engine lập trình kịch bản Lua 5.4. Các kịch bản đăng ký bộ xử lý sự kiện thông qua BridgeFunctionAttach() và được tải tự động khi khởi động qua ScriptCore.lua.
Kịch bản đầu tiên¶
Tạo một tệp có tên Welcome.lua trong thư mục kịch bản của bạn:
-- Welcome.lua - Gửi tin nhắn chào mừng khi người chơi đăng nhập
local function OnPlayerLogin(aIndex)
local player = GetUser(aIndex)
if player == nil then return end
GCNoticeSend(aIndex, 1, "Welcome to the server, " .. player.Name .. "!")
LogAdd(LOG_GREEN, "[Welcome] " .. player.Name .. " has logged in.")
end
-- Đăng ký bộ xử lý
BridgeFunctionAttach("OnCharacterEntry", OnPlayerLogin)
Khái niệm chính¶
Kiến trúc hướng sự kiện¶
Các bộ xử lý được gắn vào sự kiện thông qua BridgeFunctionAttach():
BridgeFunctionAttach("OnMonsterDie", function(aIndex, bIndex)
-- Hàm này chạy mỗi khi quái vật chết
-- aIndex = quái vật, bIndex = người giết
end)
Hàm GetUser()¶
Các bộ xử lý nhận một aIndex (chỉ số đối tượng). GetUser() trả về đối tượng đầy đủ:
local player = GetUser(aIndex)
if player then
-- Truy cập thuộc tính
print(player.Name) -- Tên nhân vật
print(player.Level) -- Cấp độ hiện tại
print(player.Map) -- Bản đồ hiện tại
print(player.Class) -- Lớp nhân vật
end
Giá trị trả về trong Hook¶
Một số hook sử dụng giá trị trả về để điều khiển hành vi trò chơi:
| Giá trị trả về | Ý nghĩa |
|---|---|
0 |
Chặn hành động mặc định |
1 |
Cho phép hành động mặc định |
BridgeFunctionAttach("OnItemDrop", function(aIndex, slot, item)
if item:IsSetItem() then
GCNoticeSend(aIndex, 1, "You cannot drop Ancient items!")
return 0 -- Chặn việc vứt đồ
end
return 1 -- Cho phép bình thường
end)
Bước tiếp theo¶
- Cấu trúc kịch bản — Tìm hiểu về
ScriptCore.luavàBridgeFunctionAttach - Tương thích phiên bản — Những API nào khả dụng theo từng phiên bản trò chơi
- Tham khảo API Server — Tham khảo hàm đầy đủ
- Ví dụ — Các ví dụ kịch bản thực tế