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