上篇随笔中我们分析了main函数的脚本初始化流程,触发器部分作为整个脚本设计的精华将在本篇做一个粗略的分析。

  InitCustomTriggers

 1 //===========================================================================
 2 // Trigger: Gold
 3 //===========================================================================
 4 function Trig_Gold_Func001002 takes nothing returns nothing
 5     call SetPlayerStateBJ( GetEnumPlayer(), PLAYER_STATE_RESOURCE_GOLD, 10000 )
 6 endfunction
 7
 8 function Trig_Gold_Func002002 takes nothing returns nothing
 9     call SetPlayerStateBJ( GetEnumPlayer(), PLAYER_STATE_RESOURCE_LUMBER, 10000 )
10 endfunction
11
12 function Trig_Gold_Actions takes nothing returns nothing
13     call ForForce( GetPlayersAllies(Player(0)), function Trig_Gold_Func001002 )
14     call ForForce( GetPlayersAllies(Player(0)), function Trig_Gold_Func002002 )
15 endfunction
16
17 //===========================================================================
18 function InitTrig_Gold takes nothing returns nothing
19     set gg_trg_Gold = CreateTrigger(  )
20     call TriggerAddAction( gg_trg_Gold, function Trig_Gold_Actions )
21 endfunction
22
23 //===========================================================================
24 function InitCustomTriggers takes nothing returns nothing
25     call InitTrig_Gold(  )
26     .
27     .
28     .
29 endfunction
30 //===========================================================================
31 function RunInitializationTriggers takes nothing returns nothing
32     call ConditionalTriggerExecute( gg_trg_Gold )
33     .
34     .
35     .
36 endfunction

上面我们截取了一个在场景初始化时给予玩家10000金币和10000木材的触发器作为介绍案例。

1、首先第一步我们需要有两个方法:

一个用来为指定玩家增加金币  - Trig_Gold_Func001002

另外一个用来给指定玩家增加木材 - Trig_Gold_Func002002

2、接下来由于给玩家增加金币和木材的操作需要在一个行为中完成,我们需要一个Action方法将具有该类行为的玩家进行统一设置 - Trig_Gold_Actions

(注:由于本Action操作于场景初始化的时候进行所以这里并没有涉及Condtion方法的实现)

3、触发器初始化函数的命名规范为:InitTrig_xxxx,这里我们实现了一个用于初始化触发器的InitTrig_Gold方法。在该方法中,我们实现了一个触发器实例,并把刚才实现的触发器行为绑定到该触发器。至此我们已经成功创建了一个可以为特定属性玩家增加金币和木材的触发器。

4、触发器我们已经创建好了,但要让其生效,在场景初始化的时候我们需要做两件事情:

  1)在InitCustomTriggers函数中对执行我们刚才实现的触发器初始化流程。

  2)在RunInitializationTriggers(执行触发器事件为"Map initialization"的触发器)中执行该触发器。

转载于:https://www.cnblogs.com/FireStudio/archive/2012/06/05/2536990.html

(原)War3 脚本分析4-触发器相关推荐

  1. (原)War3 脚本分析5-基础脚本资源

    众所周知War3编辑器非常强大,这种强大不仅是因为其拥有诸如地形编辑器.开关编辑器.声音编辑器.物体编辑器.战役编辑器.AI编辑器.物体管理器.输入管理器等非常全面且易于使用的功能,更为重要的是在其基 ...

  2. (原)War3 脚本分析1-config函数

    魔兽争霸三地图编辑器版本:1.24e(6059) 分析了两个大学时代经常用于消磨时间的TD案例: 1.华理TD 2.人族无敌 config函数作为地图脚本的其中一个入口函数,承担着War3创建地图之后 ...

  3. 【Android 高性能音频】hello-oboe 示例解析 ( Oboe 源代码依赖 | CMakeList.txt 构建脚本分析 | Oboe 源代码构建脚本分析 )

    文章目录 一.Oboe 源码路径 二.阅读 CMakeList.txt 查看依赖 三.hello-oboe 中 NDK 的 CMakeList.txt 构建脚本 四.Oboe 源码 的 CMakeLi ...

  4. build/envsetup.sh脚本分析

    1. Android编译系统分析 编译脚本及系统变量 build/envsetup.sh脚本分析 在编译源代码之前通常需要在android源代码顶层目录执行 . ./build/envsetup.sh ...

  5. 【Tiny4412】Tiny4412烧写uboot脚本分析

    00. 目录 文章目录 00. 目录 01. sd_fusing.sh脚本分析 02. 附录 01. sd_fusing.sh脚本分析 # # Copyright (C) 2011 Samsung E ...

  6. busybox rootfs 启动脚本分析(一)

    imx6文件系统启动脚本分析.开机运行/sbin/init,读取/etc/inittab文件,进行初始化. 参考链接 http://blog.163.com/wghbeyond@126/blog/st ...

  7. tomcatSupplement(1)tomcat启动脚本分析(以Windows平台为例)

    [0]README 1)本文部分文字描述转自:"深入剖析tomcat",旨在学习"tomcat启动脚本分析"的相关知识: 2)for tomcat4 start ...

  8. 发一个自己写的抓包软件,支持插件化脚本分析

    市场上的抓包工具已经足够多,轻量级的,重量级的都有,典型的wireshark,smartsniff等, 各有优缺点,PowerSniff是为程序员准备的一款抓包工具,目标是使协议解析插件编写更简单.文 ...

  9. 动态代理原理源码分析

    看了这篇文章非常不错转载:https://www.jianshu.com/p/4e14dd223897 Java设计模式(14)----------动态代理原理源码分析 上篇文章<Java设计模 ...

  10. Linux内核 eBPF基础:kprobe原理源码分析:源码分析

    Linux内核 eBPF基础 kprobe原理源码分析:源码分析 荣涛 2021年5月11日 在 <Linux内核 eBPF基础:kprobe原理源码分析:基本介绍与使用>中已经介绍了kp ...

最新文章

  1. 公司用的 MySQL 团队开发规范,非常详细,
  2. “TNS-03505:无法解析名称”问题解决一例
  3. XSS 前端防火墙 —— 无懈可击的钩子
  4. javaScript call 函数的用法说明
  5. 她不理我了,怎么办?
  6. C# 线程的定义和使用
  7. 《JavaScript权威指南》学习笔记 第二天 下好一盘大棋
  8. 排序系列【比较排序系列之】直接插入排序
  9. 两款在线小游戏-e梦迷宫、恐龙跳一跳
  10. 程序员的算法课(20)-常用的图算法:最小生成树(MST)
  11. 条形码类型及其字符集和长度的说明
  12. android版信用卡还款提醒器
  13. 关于RJ45插座(HR911130C)硬件连接
  14. python怎么打下划线符号_详解 Python 中的下划线命名规则
  15. idea中java程序打jar包的两种方式(超详细)
  16. Markdown还能这么玩?这款开源神器绝了
  17. php上传图片按钮不灵,ctrl键失灵怎么办
  18. A006-AndroidManifest.xml解析
  19. 操作系统形式化验证实践教程(7) - C代码的自动验证
  20. jQuery前端开发学习指南(18)——利用jQuery实现元素的隐藏、显示和切换及其动画效果

热门文章

  1. Codeforces Gym 101142 C. CodeCoder vs TopForces(思维+图论)
  2. Java:单例模式的七种写法 (转)
  3. 分红酒 - 蓝桥杯 - 已更新
  4. Composer + thinkphp5.1安装与使用
  5. Go 2提上日程,官方团队呼吁社区给新特性提案提交反馈
  6. Emacs下使用Stardict
  7. oracle 11g新特性之IPS Packing demonstration
  8. 项目管理九大知识体系(转)
  9. Query全选全不选第二次失效问题解决办法
  10. 6.Docker技术入门与实战 --- Docker数据管理