Công cụ thành viên

Công cụ trang web


script:bai8

Cách trở thành người được động vật yêu quý

Mô Tả:

Khi người chơi đổi từ vật phẩm hiện tại (với ID được chỉ định) sang một vật phẩm khác (với ID được chỉ định), các sinh vật trong khu vực xung quanh sẽ được thu hút và di chuyển đến vị trí hiện tại của người chơi.

Script

-- ID của vật phẩm dùng để thu hút
local Id_vatpham = 236
-- ID của sinh vật muốn thu hút
local Id_sinhvat = 3409

– Hàm xử lý sự kiện khi người chơi cầm vật phẩm

local function khi_nguoi_choi_cam_vat_pham(e)
    -- Lấy ID của vật phẩm hiện tại người chơi đang cầm
    local result, id = Player:getCurToolID(e.eventobjid)
 
    -- Kiểm tra nếu vật phẩm đang cầm là vật phẩm dùng để thu hút
    if id == Id_vatpham then
        -- Lặp lại cho đến khi người chơi chuyển sang vật phẩm khác
        while Trigger:wait(0.5) do
            -- Lấy lại ID của vật phẩm người chơi đang cầm
            local result, id = Player:getCurToolID(e.eventobjid)
 
            -- Nếu người chơi không còn cầm vật phẩm dùng để thu hút, thoát vòng lặp
            if id ~= Id_vatpham then
                break
            end
 
            -- Lấy vị trí hiện tại của người chơi
            local result, x, y, z = Actor:getPosition(e.eventobjid)
 
            -- Tạo một khu vực hình chữ nhật xung quanh người chơi
            local result, areaid = Area:createAreaRect({x = x, y = y, z = z}, {x = 10, y = 10, z = 10})
 
            -- Lấy danh sách sinh vật trong khu vực vừa tạo
            local result, creaturelist = Area:getAreaCreatures(areaid)
 
            -- Duyệt qua từng sinh vật trong danh sách
            for i, creature in pairs(creaturelist) do
                -- Di chuyển sinh vật đến vị trí của người chơi (di chuyển với tốc độ là 3)
                local r = Actor:tryMoveToPos(creature, x, y, z, 3)
                print("Di chuyển sinh vật " .. creature .. " đến vị trí của người chơi: " .. tostring(r))
            end
        end
    end
end



– Gán sự kiện khi người chơi chọn shortcut vào function (để xử lý khi người chơi đổi vật phẩm)

ScriptSupportEvent:registerEvent('Player.SelectShortcut', khi_nguoi_choi_cam_vat_pham)


Giải Thích Chi Tiết

Các hành động được thực hiện trong hàm khi_nguoi_choi_cam_vat_pham:
- Kiểm tra xem người chơi có đang cầm vật phẩm dùng để thu hút không.

if id ~= Id_vatpham then
end

- Nếu đúng, lặp lại cho đến khi người chơi đổi vật phẩm.

while Trigger:wait(0.5) do
   -- Lấy lại ID của vật phẩm người chơi đang cầm
   local result, id = Player:getCurToolID(e.eventobjid)
 
   -- Nếu người chơi không còn cầm vật phẩm dùng để thu hút, thoát vòng lặp
    if id ~= Id_vatpham then
           break
     end

- Tại mỗi lần lặp, lấy vị trí của người chơi và tạo một khu vực hình chữ nhật xung quanh vị trí đó.

 -- Lấy vị trí hiện tại của người chơi
local result, x, y, z = Actor:getPosition(e.eventobjid)
-- Tạo một khu vực hình chữ nhật xung quanh người chơi
local result, areaid = Area:createAreaRect({x = x, y = y, z = z}, {x = 10, y = 10, z = 10})

- Lấy danh sách sinh vật trong khu vực và cố gắng di chuyển từng sinh vật đến vị trí của người chơi

-- Lấy danh sách sinh vật trong khu vực vừa tạo
local result, creaturelist = Area:getAreaCreatures(areaid)
 
-- Duyệt qua từng sinh vật trong danh sách
for i, creature in pairs(creaturelist) do
-- Di chuyển sinh vật đến vị trí của người chơi (di chuyển với tốc độ là 3)
local r = Actor:tryMoveToPos(creature, x, y, z, 3)
print("Di chuyển sinh vật " .. creature .. " đến vị trí của người chơi: " .. tostring(r))
end

Cre:Vũ Hoàng 2024/07/11 05:05

script/bai8.txt · Sửa đổi lần cuối: 2024/07/11 05:05 bởi leo