美文网首页
自定义动作

自定义动作

作者: LongFei_aot | 来源:发表于2017-01-01 01:19 被阅读0次

本文介绍如何向游戏中添加新动作。
在实践之前推荐阅读我写的动作详解,以了解动作的基本概念。

用到的MOD API:

  • AddAction 向游戏注册一个动作
  • AddComponentAction 将一个动作与component绑定(严格来说能干更多的事,但一般都是用于动作绑定)
  • AddStategraphActionHandler 将一个动作与state绑定

实例下载


添加动作

下面以给人物添加一个徒手砍树的动作为例子


徒手动作 砍下去

流程

  1. 编写一个动作 - 设置id,名字,触发效果
  2. 注册这个动作 - 让游戏知道有这个动作存在
  3. 将动作与组件绑定 - 设定动作的触发的条件
  4. 将动作与state绑定 - 设定动作触发时播放的动画

下面分别编写各部分代码,按顺序拼接起来写在modmain.lua里。

预定义

在下面会需要使用一些游戏中全局变量,这些全局变量在modmain的运行环境中不存在,需要从GLOBAL表中获取,预定义好,否则会报nil错误。

local ACTIONS = GLOBAL.ACTIONS
local ActionHandler = GLOBAL.ActionHandler

编写动作

local id = "PUNCHTREE" --必须大写,动作会被加入到ACTIONS表中,key就是id。
local name = "徒手砍树" --随意,会在游戏中能执行动作时,显示出动作的名字
local fn = function(act) -- 动作触发的函数。传入的是一个BufferedAction对象。可以通过它直接调用动作的执行者,目标,具体的动作内容等等,详情请查看bufferedaction.lua文件,也可以参考actions.lua里各个action的fn。
    if act.target.components.workable ~= nil and
        act.target.components.workable:CanBeWorked() and
        act.target.components.workable.action == ACTIONS.CHOP then
        act.target.components.workable:WorkedBy(act.doer,1)
        return true
    end
end

注册动作

AddAction(id,name,fn) -- 将上面编写的内容传入MOD API,添加动作
。

绑定组件

在这里需要动一动脑筋。选择要和哪个组件进行绑定,绑定成什么类型,设定怎样的条件可以触发动作,全凭个人喜好。

local type = "SCENE" -- 设置动作绑定的类型
local component = "workable" -- 设置动作绑定的组件
local testfn = function(inst, doer, actions, right) -- 设置动作的检测函数,如果满足条件,就向人物的动作可执行表中加入某个动作。right表示是否是右键动作。
    if inst:HasTag("CHOP_workable") and doer:HasTag("player") then
        table.insert(actions, ACTIONS.PUNCHTREE)
    end
end
AddComponentAction(type, component, testfn)

绑定state

在联机版中添加新动作需要对wilson和wilson_cient两个sg都进行state绑定。

此处选择的state最好是整个执行过程中某个阶段带有inst:PerformBufferedAction()语句的。这条语句是触发动作的fn用的。如果整个state里没有这句,则动作的fn是不会触发的,也就不会达到你预期的效果。

推荐使用的官方state: dostandingaction,doshortaction,dolongaction,dojostleaction

除此之外你也可以自行编写state,自己控制播放什么动画,何时触发动作的fn等等。需要注意的是主机端和客机端在这上面的代码是有区别,具体请参考官方的代码。

local state = "dojostleaction" -- 设定要绑定的state
AddStategraphActionHandler("wilson",ActionHandler(ACTIONS.PUNCHTREE, state))
AddStategraphActionHandler("wilson_client",ActionHandler(ACTIONS.PUNCHTREE,state))

相关文章

  • 搞定 Material Design 相关控件3:Snackba

    开始使用 基本使用 加入Action动作 自定义背景颜色 自定义提示文字颜色 自定义Action文字颜色 定义显示...

  • 自定义动作

    本文介绍如何向游戏中添加新动作。在实践之前推荐阅读我写的动作详解,以了解动作的基本概念。 用到的MOD API: ...

  • Django 进阶学习 - 动态actions

    Django后台默认只有一个动作Delete selected xxxxs, 那么如果自定义动作该怎么办, 也很容...

  • ZABBIX: 告警配置

    配置报警媒介,自定义脚本告警: 配置"动作","动作"需关联至指定的"报警媒介": 以上完成告警配置。 配置用户使...

  • zabbix自愈

    举例:自定义监控22号端口存活 为了让值显示明确意思,可以设置值映射 动作这里可以添加多个动作 远端重启服务,用s...

  • 侯海锋 从零开始微信公众号 自定义菜单使用说明

    1、自定义菜单介绍 公众帐号可以在会话界面底部设置自定义菜单,菜单项可按需设定,并可为其设置响应动作。用户可以通过...

  • 【插件】2019最新PS顶级酷炫插件动作笔刷合集

    NO:1 照片变水墨动作插件 神级专业的多功能艺术动作 印象深刻的水彩艺术作品 具有很多元素和选项可以自定义和改进...

  • Multitouch for Mac 1.15.2 共享版 –

    下载地址:风云社区 Multitouch(以前称为TouchOven)将自定义动作与特定魔术触控板或魔术鼠标手势联...

  • Green Dragon by topbot

    本脚本有多个自定义选项,可以提供非常好的个性化设置功能,主动检查更新脚本动作数据,动作数据不定期更新。本脚本目前只...

  • 11.自定义键盘动作

    11.1 问题 要自定义软键盘上Enter键的外观,或者改变用户按这个键所触发的动作,或者两者都要实现。 11.2...

网友评论

      本文标题:自定义动作

      本文链接:https://www.haomeiwen.com/subject/xbibvttx.html