找回密码
 点一下
查看: 20321|回复: 16

求教下,星际2编辑器能实现魔兽编辑器里的这种功能吗?

[复制链接]
发表于 2019-1-3 21:23:12 | 显示全部楼层 |阅读模式
求教下,星际2编辑器能实现魔兽编辑器里的这种功能吗?

魔兽3 里面 有哈希表    然后 用 gethandedid() 来获取 单位 或 各种单位的   ID   然后来实现数据的  保存   用这个  可以做各种延迟功能

比如  2秒后 删除某个单位 或 3秒后删除某个特效什么的     星际2 有这功能吗  各大佬给指点下贝
发表于 2019-1-4 17:44:07 来自手机 | 显示全部楼层
魔兽3编辑器能做到的银河都做的到
回复

使用道具 举报

发表于 2019-1-4 20:52:19 | 显示全部楼层
使用数据表,可以直接定义路径,不用在像魔兽那样用数组+哈希那么费劲了。而且除了计时器,别的东西都有自己的ID,可以直接获取,也无需再用H2I这种bug来完成了(貌似现在魔兽也有官方的Handel获取函数了)。可以很方便的使用等待,尽管有精度限制,但是几乎能满足一切要求。自定义动作组更有独立线程选项,无需弄一个0秒触发器来创建线程了。总之,星际2的编辑器比起魔兽3更加强大,更加易用(前提是学会,可是比魔兽3难学)。
回复

使用道具 举报

发表于 2019-1-12 07:18:39 | 显示全部楼层
Sc2里面依然可以获取单位的handle,函数叫做获取单位的标签(UnitGetTag)。

但是——

实际上大部分情况下你根本用不到这个。


因为你不需要写什么2秒钟后删除单位的触发器。

因为你可以自定义技能和buff,你可以直接创建这样一个buff:该buff到期后会删除它所附着的单位。

这样子就够了,你的触发器只需要写:“给单位这个buff,该buff持续2秒”就了事了,你根本不需要在数据表里记住这个单位。


此外,就算你想要在2秒钟后做一些更加复杂的操作,而不仅仅是删除单位,触发器也可以捕捉到buff消失的事件。所以不管怎样你都用不着特地去记录单位。
回复

使用道具 举报

 楼主| 发表于 2022-6-15 12:42:42 | 显示全部楼层
麦德三世 发表于 2019-1-12 07:18
Sc2里面依然可以获取单位的handle,函数叫做获取单位的标签(UnitGetTag)。

但是——

那如果想自己写一个   移动 单位  从某个点 到 某个点的 函数   就要用到计时器  要用计时器记录计时器 标签下的  单位 和 其他技能伤害等数据    该怎么办    上面有个人说 计时器的 handle id无法获取
回复

使用道具 举报

发表于 2022-6-20 18:45:57 | 显示全部楼层
elik720 发表于 2022-6-15 12:42
那如果想自己写一个   移动 单位  从某个点 到 某个点的 函数   就要用到计时器  要用计时器记录计时器  ...

用变量存啊,总往计时器想干嘛
回复

使用道具 举报

发表于 2022-7-4 00:33:26 来自手机 | 显示全部楼层
elik720 发表于 2022-6-15 12:42
那如果想自己写一个   移动 单位  从某个点 到 某个点的 函数   就要用到计时器  要用计时器记录计时器  ...

你最好先说明你的最终目的,这和魔兽的编辑器不一样,有现成的轮子,不需要你自己再去造了
回复

使用道具 举报

 楼主| 发表于 2022-7-8 15:55:38 | 显示全部楼层
滚筒洗衣机 发表于 2022-7-4 00:33
你最好先说明你的最终目的,这和魔兽的编辑器不一样,有现成的轮子,不需要你自己再去造了

我就是不会做   用魔兽3  很容易做   用星际2 不会做  ,比如  我要做一个支持多人的霜冻连环 ,  不用物遍做  ,用触发器做, 然后我发现  魔兽有一个函数  timestart(t1,0.05,true,function 函数2)  就是开启局部变量的计时器, 函数2里   因为是计时器到期,所以能获取到计时器本身,通过计时器ID下的,我可以把实现保存好的 比如 保存单位到计时器ID, 然后key1, 就可以获取单位,获取技能等级,获取计时器运行了几次的整数 等等,就是不用新建全局变量,能做很多技能.干净整洁
回复

使用道具 举报

 楼主| 发表于 2022-7-8 16:12:58 | 显示全部楼层
OB~ 发表于 2022-6-20 18:45
用变量存啊,总往计时器想干嘛

我给你举个例子  ,同样是 技能1   ,  单位A释放持续了20秒,每秒伤害 单位A的敏捷X3.   你用变量保存了伤害,   第10秒的时候,单位B也释放了技能1  , 然后这个变量就变成了单位B的敏捷x3了,他就对不上了.    还有第一个单位释放的时候,计时器就在运行了,循环判断中了,如果单位B释放的时候也是同一个计时器必然冲突,如果是20个单位同时施放技能呢,而如果数据绑定到计时器,同时100个单位施放持续性的技能,施放的时候控制投射物到处巡逻也不会冲突啊
回复

使用道具 举报

发表于 2022-7-14 13:12:37 来自手机 | 显示全部楼层
我没用过计时器,我都是用等待,而且星际有局部变量,正常情况下不会冲突,况且你这个技能用物编更容易实现,星际比魔兽捕捉伤害容易太多,没必要啥都用触发
回复

使用道具 举报

发表于 2022-7-14 19:21:49 | 显示全部楼层
本帖最后由 Prinny 于 2022-7-27 15:03 编辑
elik720 发表于 2022-6-15 12:42
那如果想自己写一个   移动 单位  从某个点 到 某个点的 函数   就要用到计时器  要用计时器记录计时器  ...

1)SC2的数据表支持自己组织计时器句柄,并且可以互相返回;
2)全局数据表指定单位标签参与的字段里,去存储这个计时器,然后无论单位如何变化都能根据单位取出这个单位对应的计时器;

看你这个帖子很久了,给你做好了计时器句柄和互相返回函数:
https://bbs.islga.org/forum.php? ... 1&extra=#pid5456038
函数名字叫“互动T_” ,注册或设置自定义值(给计时器打标记)后,能返回句柄标签,用这个标签得到计时器


回复

使用道具 举报

发表于 2022-7-21 23:13:37 | 显示全部楼层
本帖最后由 Nostalie 于 2022-8-15 13:16 编辑

单用物编,或者单用触发器都没这个问题。
如果你都用触发器不断更改位置来做发射物而不是物编自带的发射效果
你只需要等待直到发射物到达去做下一步就行了,不需要别的全局变量什么。。。

但是如果是用触发器执行发射效果,又要通过触发器影响发射效果的后续效果就有点难度。
主要是触发器并不能直接抓取一整颗小果树。
你可能不知道后续的伤害效果源于哪次发射。

但是物编里有用户数据效果这种东西
他自己的作用范围本身就是自己的效果树。支持累加器也就自然可以通过触发器影响。之后回归物编就好了。

所以你说的计时器
在触发器里就是等待。
在物编里类似效果用户数据。当然这两者可以一起用。
大多数情况下物编就能解决。








回复

使用道具 举报

发表于 2022-8-15 13:22:28 | 显示全部楼层
本帖最后由 Nostalie 于 2022-8-15 13:56 编辑

最近做到一个技能,又思考了下这个问题
你的要求(鉴于之前群里的提问):
开一个计时器(能够传各种参数),在计时器到期时执行一个函数。

最符合的的触发器方法应该是
1,开始计时器。(保存计时器到全局变量或者数据表(哈希表))
2,执行自定义动作(要勾选创建线程,这样触发器在遇到动作里的等待不会跟着等待。参数是计时器和其他你想传的参数)。3,然后在自定义动作动作里等待计时器。之后根据传入参数执行所需的动作。
计时器其实是引用。局部变量计时器变量和全局变量其实是可以指向一个的。所以在这个动作外依然可以修改该传入的计时器。
如果是固定某时间,或者等待某条件立刻执行。
直接自定义动作(创建线程)动作里等待或者等待条件就好了。
并不需要计时器。计时器的意义在于能存到全局变量,很方便其他触发器对他进行修改。








回复

使用道具 举报

发表于 2022-9-2 14:33:05 | 显示全部楼层
本帖最后由 OB~ 于 2022-9-2 19:22 编辑
elik720 发表于 2022-7-8 16:12
我给你举个例子  ,同样是 技能1   ,  单位A释放持续了20秒,每秒伤害 单位A的敏捷X3.   你用变量保存了伤 ...

我就奇了怪了,总想计时器,你用变量存,是存目标和施法者,变量不是有数组吗,为什么会被覆盖,你下面又计时器,星际里面计时器就是个计时的东西,时间到了可以被另一个触发器响应,你说的技能有什么关系。你这个技能物编做就一个应用行为,改下行为的伤害修正源就完事了。你到底要做什么直接说,别类似啊,直接完整描述你的具体效果。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-4-19 22:25 , Processed in 0.097112 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表