• QQ21031394

    工作时间

    周一至周五:9:30-18:30

    周末及节日:根据情况调休

  • 手机版二维码

    随时手机查素材

  • 扫描二维码

    加入官方QQ群

站长推荐
Seago 一级会员
  • 未知地域
  • 84发帖数
  • 20主题数
  • 0关注数
  • 24粉丝

[Seago教程] 【通用】哈希表应用实例(一)

  [复制链接]
Seago 发表于 2020-8-27 18:08:36 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题 <
提莫作坊QQ群:提莫作坊www.tbwlm.cn

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
哈希表的应用实例(一)——计时器传递参数等问题
许多新手在制作触发器时往往会遇到一些列无法理解的问题。
如:一些稍微复杂的技能效果,常会遇到诸如伤害丢失、目标不正确或是自己单人测试没问题,但是多人测试其他玩家就会出现各种问题。通常编写的逻辑都没有问题,问题出在了对一些基本变量的有效范围理解不清,以致运行时的实际值和自己的预想值并不一样,所以最终的效果也就天差地别。
这里所说的基本变量指的是以【触发单位】为代表的,一系列和触发器紧密相关的取值方式。

首先来说说魔兽的运行方式。在初级阶段,我们可以简单的理解为单线程运行。何为单线程?就是说所有的触发、函数有严格的执行顺序,即使地图上可能存在有许多单位,这些单位相关的触发看似有同时触发的可能性,但也只是因为执行的时间极短,所以给人一种同时执行的错觉,本身还是有严格的执行顺序区分的。所以基于这点,在一些无法直接传递参数的地方,如选取单位组单位做动作,我们都可以通过全局变量等形式来传递参数。(不考虑被其他触发中断的情况,这点比较复杂,以后讨论。)因为是单线程执行的,所以别的动作需要等当前动作完成之后才会执行,因此在选取单位组单位做动作的时候可以认为此时这个用于传递参数的全局变量的值都是我们赋予的值,不会改变。

回到开头提到的问题,基本变量的实际值和自己预想的不一样,为什么会这样?很常见的情况是直接在计时器中使用了这些基本变量。以触发单位为例,在触发执行时,触发单位才有了实际意义。比如英雄发动技能效果,那么触发单位就是这个发动技能效果的英雄。触发执行完后,触发单位也就没有意义了
计时器呢?计时器的执行是脱离与触发器的。例如一个运行间隔是1秒钟的计时器,不循环,他的实际作用是告诉游戏引擎,在1秒钟之后要做一件事情,而不是让触发器运行1秒钟以后干什么,触发器的执行是一瞬间的事情,计时器安排的事情是独立于触发器的,无论这个间隔设置的多短,他始终是独立于触发器的。基于此理解,在计时器动作执行的时候,已经脱离了触发器了,自然触发单位之类的也就没有意义了,也就不再是自己预想的值了。


如何让计时器可以取到自己想要的值?哈希表。
相信大家都知道,计时器运行完之后,也需要销毁,需要排泄。自然也能理解,计时器也是个handle类型,也可以获取到他的handleId,也就是整数地址。而在计时器动作运行时,可以通过【到期的计时器】来获取到当前的计时器,进而可以获取到handleId。于是我们便可以用计时器的handleId来作为主索引,次索引可以根据自己的需求设置任意整数,这样我们就可以通过哈希表来传递计时器需要的参数了。用全局变量也可以达到类似的效果,但毕竟全局变量谁都可以访问,除非你只在一个地方使用,否则从计时器被创建到被执行时的期间内,你无法确定这个全局变量是否已经被赋予了新的值了。哈希表则不同了,我们使用的计时器的整数地址作为主索引,只要这个计时器没有被销毁,那么这个整数地址一定是唯一的,所以传递的值一定是我们当初指定的。
游客,如果您要查看本帖隐藏内容请回复

[发帖际遇]: Seago 在老提莫家吃蘑菇,花了 23 枚 绿钻. 幸运榜 / 衰神榜
楼主热帖
免责条款:本站仅提供学习的平台,所有资料均来自于网络,版权归原创者所有!本站不提供任何保证,并不承担任何法律责任,如果对您的版权或者利益造成损害,请提供相应的资质证明,我们将于3个工作日内予以删除。

本网站所收集的部分公开资料来源于互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。本站部分作品是由网友自主投稿和发布、编辑整理上传,对此类作品本站仅提供交流平台,不为其版权负责。如果您发现网站上有侵犯您的知识产权的作品,请与我们取得联系,我们会及时修改或删除。

本网站所提供的信息,只供参考之用。本网站不保证信息的准确性、有效性、及时性和完整性。本网站及其雇员一概毋须以任何方式就任何信息传递或传送的失误、不准确或错误,对用户或任何其他人士负任何直接或间接责任。在法律允许的范围内,本网站在此声明,不承担用户或任何人士就使用或未能使用本网站所提供的信息或任何链接所引致的任何直接、间接、附带、从属、特殊、惩罚性或惩戒性的损害赔偿。

精彩评论85

xueyuan1996 发表于 2020-8-27 18:19:06 | 显示全部楼层 <
大佬 学习了
GarVey 发表于 2020-8-27 18:21:25 来自手机 | 显示全部楼层 <
学习学习
han6991833 发表于 2020-8-27 19:39:14 来自手机 | 显示全部楼层 <
大佬,哈希表的帖子可以多来点。
 楼主| Seago 发表于 2020-8-27 19:51:12 | 显示全部楼层 <
han6991833 发表于 2020-8-27 19:39
大佬,哈希表的帖子可以多来点。

ok
jzclikeyz21 发表于 2020-8-28 00:04:45 | 显示全部楼层 <
感谢楼主的分享!
a505214683 发表于 2020-8-28 00:55:03 | 显示全部楼层 <
大佬 学习了
皮皮虎 发表于 2020-8-28 01:56:56 | 显示全部楼层 <

学习学习
雨散云飞 发表于 2020-8-29 11:38:22 | 显示全部楼层 <
继续看!!!
[img]https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fd.zdqx.com%2Fhyrz_161
mpdf1995 发表于 2020-8-29 14:16:54 | 显示全部楼层 <
厉害了我的楼主

强调下版规的规定,如有恶意灌水从重处罚:
=====发表主题规则=======
1.主题内容请一定要附带预览图片,谢谢;
2.搬运来的东西请尽量不要卖钱!;
3.发帖有任何疑问请联系QQ21031394;
=====发表回复规则=======
1.禁止直接复制标题内容的;
2.禁止纯数字或者纯字母的;
3.禁止乱打一通文不对题;
4.禁止屠版和刷分行为;
第一次扣分处理,第二次扣分+警告,警告三次禁言三天,绝不手软,情况严重的直接封号,请大家珍惜自己的账号!

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

猜你喜欢
天工维度唯一QQ群
786014245

欢迎进群交流,入群答案:编辑器

  • 官方在线客服

    QQ客服:小雪

    点击交谈

    QQ客服:砂糖

    点击交谈

    团队老大:荀公子

    商务合作
  • 上海市静安区共和新路4718号宏慧新汇园6号楼603室

  • 手机扫码查看手机版

    手机查找资源更方便

  • 扫一扫关注官方微信

    加入官方QQ群

Powered by 天天RPG&DZX3.4 ©2020-2021 Comsenz Inc.提百万设计( 沪ICP备18032615号-1 )营业执照