找回密码
 点一下
查看: 5580|回复: 12

霜冻吐息(霜冻闪电)和IssueInstantPointOrder、IssueIstantTargetOrder,解决下两个历史遗留问题。。

[复制链接]
发表于 2011-11-11 08:55:41 | 显示全部楼层 |阅读模式
由于没有合适的分类。。于是就自命不凡地选了“文献资料”。。其实我觉得“待分类”更好~
   

[jass]首先是霜冻吐息……
看过老狼的无限不冲突BUFF研究的同学都去找过“霜冻吐息”吧……
然后在物编里怎么找也找不到吧……找来找去似乎只有冰龙的“霜冻呼吸”名字比较接近。。
于是下面是真相:
在物编里,这个技能叫“霜冻闪电”,即下图选中的那个[/jass]
111.png

[jass]技能的效果图如下:[/jass]

333.png

[jass]但是在发布点命令的动作却找不到“霜冻闪电”呢。。。[/jass]
222.png

[jass]由此可见是物编里翻译错了。。
话说我之前在某帖里还大言不惭地说是某些人乱传。。。于是道个歉~[/jass]
                    

[jass]IssueInstant 的四个发布命令动作可以说是隐藏级别的了,原因是基本不会有人去用……而且BLZ还特地弄了别的函数进一步削减其作用。。
先看下这四个IssueInstant函数吧:[/jass]
[jass]native IssueInstantPointOrder takes unit whichUnit, string order, real x, real y, widget instantTargetWidget returns boolean
native IssueInstantTargetOrder takes unit whichUnit, string order, widget targetWidget, widget instantTargetWidget returns boolean
native IssueInstantPointOrderById takes unit whichUnit, integer order, real x, real y, widget instantTargetWidget returns boolean
native IssueInstantTargetOrderById takes unit whichUnit, integer order, widget targetWidget, widget instantTargetWidget returns boolean[/jass]
[jass]其实只有两个函数,只不过是前两个发布的是字符串命令,后两个发布的是数字命令。

于是N多人不懂比普通的点目标命令和单位目标命令多的这个instantTargetWidget到底是干嘛的。
BLZ这点做的很好~所有的名字命名都很全,基本看一眼就知道是干嘛的~额。。不知道是干嘛的也至少知道是哪方面的
以IssueInstantTargetOrder为例,其参数如下:
1. 命令发布者
2. 字符串命令
3. 目标1(widget类型,生命体,单位/物品/可破坏物)
4. 目标2(同样widget类型)
于是就可以得出这几个函数是用于要对两个目标发布命令的时候。

那么接下来就是要找哪里用得到了。。发现似乎只有在进行物品的丢弃/转交/出售(卖)的时候才会有间接目标存在;
比如命令A将攻击之爪交给B,B是转交命令的直接目标,而攻击之爪就是间接目标,作为转交物的存在。
在魔兽中,物品的丢弃/转交/出售(卖)都被视作物品持有者丢弃物品,
其字符串命令为"dropitem",数字命令为852001。
经过测试:instantTargetWidget是间接目标,即要转交的物品。

丢一个比较渣的演示上来吧:[/jass]

Instant命令测试.w3x (18 KB, 下载次数: 34)
[jass]直接读图测试即可~测试方法进图就能看到~

好了。。大家都已经知道为什么这四个函数会被遗弃了……
首先做图几乎用不到。。就算要用。。BLZ也已经弄了下面这些个动作代替了:[/jass]
[jass]native UnitDropItemPoint takes unit whichUnit, item whichItem, real x, real y returns boolean
native UnitDropItemTarget takes unit whichUnit, item whichItem, widget target returns boolean[/jass]

[trigger]对应的T动作:
        单位 - 命令 (触发单位) 丢弃物品 最后创建的物品 <New> 到坐标:(0.00,0.00)
        单位 - 命令 (触发单位) 把 (最后创建的物品) 给 没有单位
[/trigger]

[jass]最后说下为什么这个是历史遗留问题……
本来我是不会去研究的啦。。但是在WOW8看到有人问来着……
当然一开始我也看不懂那个参数。。并且原则上搜索优先,但是搜来的东西坑死我了……
最一开始的搜到的资料基本没有具体说明,后来终于见到一个回复说是两个目标我才懂了一点,但是自己始终测不出效果来,最后终于搜到了一个在威城网的解说:[/jass]
IssueInstantTargetOrder():该函数目前唯一的用途似乎只有命令单位将自己物品栏里的物品交给另一单位。其中的order参数应为"smart”, target widget参数是想被转移的物品,instant target widget参数为要被交给的目标。被命令的单位会直接走向目标单位然后将物品交给它。
[jass]呵呵……这个真的是坑死我了……坑了我3个小时。。按照这个说明还真的是怎么都试不出作用来……
最后在网上转了好多圈发现这个说明的出处是头目翻译的《魔兽争霸III技能指南》,原著是Wc3c的PitzerMike,于是通过头目的传送门过去看了下原文:[/jass]
IssueInstantTargetOrder: The only use of this function is to make units give items from their inventory to other units. The order in this case would be smart, the target widget is the item and the instant target widget is the target unit. The ordered unit will then move towards the target unit and hand the item over.
[jass]没有翻译上的问题。。
但是。。各种所谓的转帖也太不负责任了吧。。不说出处也就算了,本来就是资料共享的,但是转了也不自己试一下先……现在网上遍地都是上面的说法,神马U9、偶久、威城、Wc3c等看到的都是上面这个内容,而知道具体怎么操作的高手基本都不详细解释…………
要不是我偶然看到一个捕捉物品掉落命令的方法就不会有这帖了……[/jass]
                    

额。。没有了……
以上~

万恶的phpwind的换行BUG啊……
 楼主| 发表于 2011-11-11 08:55:50 | 显示全部楼层
抢个沙发前排看……

下午搜的时候看到一个老外说impale(穿刺)等小部分技能也可以用到IssueInstant命令。。。
还木有研究呢……过两天空了再说。。
也许会坑掉……


话说。。顶楼各种回车换行什么的都没有了……
额。。这个是新版phpwind的BUG吗…………[s:197]
这不是逼我换成JASS代码吗…………
回复

使用道具 举报

发表于 2011-11-11 21:08:30 | 显示全部楼层
看不懂啊龙兄。
回复

使用道具 举报

 楼主| 发表于 2011-11-11 23:51:18 | 显示全部楼层
565266718:看不懂啊龙兄。 (2011-11-11 21:08)
那就不需要懂了。。本来就是不需要用到的东西。。
平时都是用下面这两个的
[jass]native UnitDropItemPoint takes unit whichUnit, item whichItem, real x, real y returns boolean
native UnitDropItemTarget takes unit whichUnit, item whichItem, widget target returns boolean[/jass]
IssueInstant的四个函数简单来说是可以忽略的。。
只不过有些人就是想知道instantTargetWidget倒底是什么来着,然后除了头目翻译的技能指南里我还真没在别的地方见过较详细的解说,于是就研究了下……
  
PS:或者你可以下了图看下~


话说。。原来LS是…………
好吧。。除了常出没的我一般只认头像不认名的。。
回复

使用道具 举报

 楼主| 发表于 2011-11-12 09:45:11 | 显示全部楼层
好吧……坑掉了。。。
谁有兴趣谁研究吧~      

似乎除了各种丢弃物品以外没有能用到这四个函数的地方了。。
测试过的内容如下:
1. 单体卸载:指的是运输船之类的,命令是"unload",但是无效呢。。于是看了下数字命令,居然是0。。这个我猜测卸载是无具体命令的,因为0这个东西在程序里基本都代表“无”
2. 建造:本来想是不是可以让农民发布在某点建造某个建筑这样的命令,结果。。居然是每个建筑都有对应的建造命令,比如造塔是"scouttower",造农场是"farm"。。
3. 购买物品:同上……
4. 传送:于是后来我想到了让某位发个传送某个单位到某点的命令。。可惜木有这样的东西呢……魔兽所有的传送都不要间接目标,也就是被传送者都是指定好的。。不过想想也是呢,要先选单位再选传送点,这么麻烦的东西本来就不该有。。
5. 别的技能基本不用想了,基本都只需要施法者、命令和施法目标就行了,至于某个老外说的穿刺……虽然没研究,但是没必要了,肯定是技能命令+点/单位目标就够了……哪来的第二目标

顺便丢上来个额外的发现:传送门技能是真的木有命令……我感觉不是没捕捉到。。是真的没有;猜测应该是用类似单位进入区域事件然后直接转移触发单位的,毕竟技能设置里面也有关于区域大小的选项~
捕捉命令用的是下面这个T:
[trigger]未命名触发器 001
    事件
        单位 - 传送门 0005 <预设> 发布指定物体目标指令
        单位 - 传送门 0005 <预设> 发布指定点目标指令
        单位 - 传送门 0005 <预设> 发布无目标指令
        单位 - 传送门 0005 <预设> 准备施放技能
        单位 - 传送门 0005 <预设> 开始施放技能
        单位 - 传送门 0005 <预设> 发动技能效果
    条件
    动作
        游戏 - 对 玩家1(红色) 在屏幕位移(0.00,0.00)处显示文本: (转换 (发布的命令ID) 为命令字符串)
        游戏 - 对 玩家1(红色) 在屏幕位移(0.00,0.00)处显示文本: (转换 (传送门 0005 <预设> 的当前命令ID.) 为命令字符串)
        自定义代码:   call BJDebugMsg(I2S(GetUnitCurrentOrder(gg_unit_nwgt_0005)))
[/trigger]
于是果断没显示任何命令……

点评

这个建造的命令是单位id 转成字符串应该就是单位名称  发表于 2014-11-18 09:03
回复

使用道具 举报

发表于 2011-11-12 13:32:38 | 显示全部楼层
喵呜~
喵呜喵呜~

单体卸载的话应该可以用
单位目标指令里面有他,而且对单位释放后也能正常从原地卸载下来



喵呜~
喵呜
说到传送门,发现如果对面传送门周围都堆满了单位的话,就不能传送了
估计和这个大小有关吧


喵呜……
似乎和传送门所指定的目标矩形区域大小有关呢……
回复

使用道具 举报

 楼主| 发表于 2011-11-12 14:40:29 | 显示全部楼层
喵呜~:喵呜~
喵呜喵呜~

单体卸载的话应该可以用
单位目标指令里面有他,而且对单位释放后也能正常从原地卸载下来
....... (2011-11-12 13:32)
我知道。。unload的数字命令是852047,但是捕捉的时候真的捕捉到的是0(但是字符命令能捕捉到是unload)。。难道是捕捉方式的问题吗……
等下我去截张图过来……


另外T里那个发布的卸载是用
IssueTargetOrder,
我之前用
IssueInstant的两个函数都试过。。卸载命令无效呢……
估计卸载的原设就是原地卸载吧~

点评

用单位当前指令肯定捕获不到吧...和某些开关技能和狂战士都一样...发布的命令id当做整数直接转换成字符串应该可以  详情 回复 发表于 2013-3-1 12:17
回复

使用道具 举报

 楼主| 发表于 2011-11-12 15:05:35 | 显示全部楼层
[trigger]未命名触发器 001
    事件
        单位 - 任意单位 发布指定物体目标指令
        单位 - 任意单位 发布指定点目标指令
        单位 - 任意单位 发布无目标指令
    条件
    动作
        游戏 - 对 玩家1(红色) 在屏幕位移(0.00,0.00)处显示文本: (转换 (发布的命令ID) 为命令字符串)
        游戏 - 对 玩家1(红色) 在屏幕位移(0.00,0.00)处显示文本: (转换 ((触发单位) 的当前命令ID.) 为命令字符串)
        自定义代码:   call BJDebugMsg(I2S(GetUnitCurrentOrder(GetTriggerUnit())))
[/trigger]
发现卸载的时候似乎船是没有当前命令的。。
QQ截图未命名.png
最上面的851971是之前发布的smart命令。。。
第二个unload响应的是第一个动作(估计如果捕捉发布的数字命令的话同样能捕捉到)
第二个动作和最后一个都无法捕捉到,于是只有一个unload,数字命令也是0
然后后面的stop命令是圣骑的。。被卸载的单位会发布stop命令


[trigger]未命名触发器 001
    事件
        单位 - 任意单位 发布指定物体目标指令
        单位 - 任意单位 发布指定点目标指令
        单位 - 任意单位 发布无目标指令
    条件
    动作
        游戏 - 对 玩家1(红色) 在屏幕位移(0.00,0.00)处显示文本: (转换 (圣骑士 0000 <预设> 的当前命令ID.) 为命令字符串)
        自定义代码:   call BJDebugMsg(I2S(GetUnitCurrentOrder(gg_unit_Hpal_0000)))
[/trigger]
QQ截图未命名2.png QQ截图未命名3.png
圣骑也会发布一次装载命令呢……
不过神奇的是那个0命令。。。不知道圣骑被装载和卸载前接受了一次什么命令。。


其它的我不研究了……
好像偏离主题了呢~
回复

使用道具 举报

发表于 2012-4-4 10:12:35 | 显示全部楼层
好吧,真的没有耐心看完了
回复

使用道具 举报

发表于 2013-3-1 12:17:24 | 显示全部楼层
chyj4747 发表于 2011-11-12 14:40
我知道。。unload的数字命令是852047,但是捕捉的时候真的捕捉到的是0(但是字符命令能捕捉到是unload)。 ...

用单位当前指令肯定捕获不到吧...和某些开关技能和狂战士都一样...发布的命令id当做整数直接转换成字符串应该可以
回复

使用道具 举报

发表于 2014-8-15 19:20:35 | 显示全部楼层
表示不理解
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-21 19:36 , Processed in 0.249336 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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