Bỏ qua

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