Hytale之我见 专注hytale服务器技术

lua脚本创建武器

2019-12-16
hytaleme

介绍

假设这样的副本场景:玩家进入时给予一把武器,并给物品设置不可丢弃不可掉落,在玩家退出副本时删除玩家的这个武器。

通常最粗糙的实现方式就是一个大箱子,里面放一堆这种武器,大家自觉去取,但这个教程里,我们要用脚本进行严格精确地控制,确保武器不会多也不会少,带来更好的游戏体验。

(武器的攻击力,技能等可以直接在道具编辑界面设置的内容就不介绍了)

准备

  1. 首先打开官方文档页面,方便查看提供的接口:https://developers.mini1.cn/wiki/

  2. 准备一个编辑器,推荐vscode,或者简单点也可以用notepad++

开始

一. 给予武器代码

-- 参数含义:玩家id 物品id 数量 1代表优先快捷栏
Player:gainItems(playerId, weaponId, num, prioritytype)

二. 设置不可丢弃不可掉落代码

-- 设置不可丢弃
-- 参数含义:玩家id 物品id 1代表不可丢弃 是否设置
Player:setItemAttAction(playerId, weaponId, 1, true)
-- 设置不可掉落
-- 参数含义:玩家id 物品id 2代表不可掉落 是否设置
Player:setItemAttAction(playerId, weaponId, 2, true)

三. 删除武器代码

-- 删除武器
-- 参数含义:玩家id 物品id
Backpack:removeGridItemByItemID(playerId, weaponId)

整体代码浏览

-- 02. 创建武器教程

-- 按官方文档说明,这些用到的类必须要先生成
local Area = class.Area.new()
local Player = class.Player.new()
local Backpack = class.Backpack.new()

-- 副本出生点
local spawnPos = {x = 238, y = 137, z = 217}
-- 武器的道具ID
local weaponId = 4100
-- 副本id
local areaId = nil

-- 由于目前没直接获取area的接口,可以使用以下方式实现获取area,即通过位置查找区域
-- 区域请先在游戏内按f3新建出来,位置可以点击游戏右上角的地图来查看,随便找一个区域内的位置即可
ScriptSupportEvent:registerEvent([=[Game.Start]=], function ()
    local ret, id = Area:getAreaByPos(spawnPos)
    areaId = id
end)

-- 监听玩家进入区域事件
ScriptSupportEvent:registerEvent([=[Player.AreaIn]=], function (event)
    -- 如果进入的是副本区域,则给予武器
    if event.areaid == areaId then
        -- 参数含义:玩家id 物品id 数量 1代表优先快捷栏
        Player:gainItems(event.eventobjid, weaponId, 1, 1)

        -- 设置不可丢弃
        Player:setItemAttAction(event.eventobjid, weaponId, 1, true)
        -- 设置不可掉落
        Player:setItemAttAction(event.eventobjid, weaponId, 2, true)
    end
end)

-- 监听玩家离开区域事件
ScriptSupportEvent:registerEvent([=[Player.AreaOut]=], function (event)
    -- 如果离开的是副本区域,则删除武器
    if event.areaid == areaId then
        -- 删除武器
        Backpack:removeGridItemByItemID(event.eventobjid, weaponId)
    end
end)

PS

以上就是全部教程了,具体代码可能在下方评论区以链接形式贴出,由于目前迷你盒子内置浏览器有问题,请复制链接到手机浏览器中打开。

最后:

  1. 如果想要获取更多教程可以关注我
  2. 如果想要体验本教程的效果,可以收藏下面的教程专用地图:试炼场(此地图将包含所有的脚本教程),并在游戏内进入体验
  3. 点个赞呗~

相似文章

目录