找回密码
 点一下
查看: 1593|回复: 22

几个关于脚本的问题。。。

[复制链接]
发表于 2012-8-1 23:31:42 | 显示全部楼层 |阅读模式
1.现在一共有4个boolean,它们的排列一共有16种,现在我想call TimerStart 来运行一个函数,函数和boolean组合是一一对应的。。比如说 0101的时候运行函数A,0111的时候运行函数B,如此。
那么除了用if语句逐一判断,还有没有更简洁的写法呢?

2.DisplayTimedTextToPlayer里面的参数x,y是不是一定要非负?用负数好像就是0的效果。。有没有方法可以在x,y为负的位置显示文本?

3.(补充一个。。突然想起来。。。)关于技能的施法动作的。。只用物体编辑器是不是无法精确地指定施法动作呢?比如说用Attack 2做施法动作。还有施法准备动作是不是固定就是spell channel。。要改只能用触发了?

貌似有点多。。

[s:190]多谢~~
发表于 2012-8-1 23:42:21 | 显示全部楼层
1:executefunc??

2:负的你想做什么!
回复

使用道具 举报

 楼主| 发表于 2012-8-1 23:47:34 | 显示全部楼层

回 美味豆沙包 的帖子

美味豆沙包:
1:executefunc??

2:负的你想做什么!
1.要和timer绑定循环运行的。。

2.感觉y=0还是太上面。。想调下来一点。。


现在的代码是这样的。。。有点乱
[jass]
    if ( flag = 1 ) then
        if ( IsKilledWhenHit ) then
            if ( RunFuncName == null ) then
                if ( EndFuncName == null ) then
                    call TimerStart( t, inv, true, function SimObjectMove_Action_tar_K )
                else
                    call TimerStart( t, inv, true, function SimObjectMove_Action_tar_KE )
                endif
            else
                if ( EndFuncName == null ) then
                    call TimerStart( t, inv, true, function SimObjectMove_Action_tar_KR )
                else
                    call TimerStart( t, inv, true, function SimObjectMove_Action_tar_KRE )
                endif
            endif
        else
            if ( RunFuncName == null ) then
                if ( EndFuncName == null ) then
                    call TimerStart( t, inv, true, function SimObjectMove_Action_tar )
                else
                    call TimerStart( t, inv, true, function SimObjectMove_Action_tar_E )
                endif
            else
                if ( EndFuncName == null ) then
                    call TimerStart( t, inv, true, function SimObjectMove_Action_tar_RE )
                else
                    call TimerStart( t, inv, true, function SimObjectMove_Action_tar_R )
                endif
            endif
        endif
    else
        if ( IsKilledWhenHit ) then
            if ( RunFuncName == null ) then
                if ( EndFuncName == null ) then
                    call TimerStart( t, inv, true, function SimObjectMove_Action_loc_K )
                else
                    call TimerStart( t, inv, true, function SimObjectMove_Action_loc_KE )
                endif
            else
                if ( EndFuncName == null ) then
                    call TimerStart( t, inv, true, function SimObjectMove_Action_loc_KR )
                else
                    call TimerStart( t, inv, true, function SimObjectMove_Action_loc_KRE )
                endif
            endif
        else
            if ( RunFuncName == null ) then
                if ( EndFuncName == null ) then
                    call TimerStart( t, inv, true, function SimObjectMove_Action_loc )
                else
                    call TimerStart( t, inv, true, function SimObjectMove_Action_loc_E )
                endif
            else
                if ( EndFuncName == null ) then
                    call TimerStart( t, inv, true, function SimObjectMove_Action_loc_R )
                else
                    call TimerStart( t, inv, true, function SimObjectMove_Action_loc_RE )
                endif
            endif
        endif
    endif[/jass]
回复

使用道具 举报

发表于 2012-8-2 00:12:50 | 显示全部楼层
1:
那将4个布尔值看成4位二进制数,转换为十进制整数
然后用CODE数组储存函数,最后使用整数作为数组索引...

如果想要更简单,可以选择Executefunc
不过话说既然你已经写出来了,就使用现在的这个吧,反正又不影响效率
甚至来说你这样写效率更高

2:
改界面吧,把界面改上去一点,字看起来就下去了
回复

使用道具 举报

 楼主| 发表于 2012-8-2 00:19:34 | 显示全部楼层

回 美味豆沙包 的帖子

美味豆沙包:
1:
那将4个布尔值看成4位二进制数,转换为十进制整数
然后用CODE数组储存函数,最后使用整数作为数组索引...

2:
.......
明白了!!忘记还有code型的变量了。。。四个if嵌套。。。太愚蠢了。。[s:202][s:202]

那个。。。还有个问题。。
3.(补充一个。。突然想起来。。。)关于技能的施法动作的。。只用物体编辑器是不是无法精确地指定施法动作呢?比如说用Attack 2做施法动作。还有施法准备动作是不是固定就是spell channel。。要改只能用触发了?
回复

使用道具 举报

发表于 2012-8-2 00:29:18 | 显示全部楼层
1:
话说既然你已经写出来了,就使用现在的这个吧,反正又不影响效率
甚至来说你这样写可能效率更高

2:
改界面吧,把界面改上去一点,字看起来就下去了

3:
施法准备动作并不是固定就是spell channel
施法动作可以在技能里面设置的(除了某些特殊技能和被动技能)

不过Attack-2确实是没办法精确指定的,因为所有的Attack - X动作都是随机选择的
要想精确指定2,只能用触发“按序号播放”了
回复

使用道具 举报

 楼主| 发表于 2012-8-2 00:37:01 | 显示全部楼层

回 美味豆沙包 的帖子

美味豆沙包:1:
话说既然你已经写出来了,就使用现在的这个吧,反正又不影响效率
甚至来说你这样写可能效率更高

2:
....... (2012-08-02 00:29) 
多谢~~
那个“施法准备动作并不是固定就是spell channel”是指可以自由更改吗?还是说是在几个特定的动作里挑选的?
回复

使用道具 举报

发表于 2012-8-2 00:38:53 | 显示全部楼层

回 yelite 的帖子

yelite:多谢~~
那个“施法准备动作并不是固定就是spell channel”是指可以自由更改吗?还是说是在几个特定的动作里挑选的?

(2012-08-02 00:37)嬀/color]
你可以在模型所拥有的所有动作里面选一个来用
回复

使用道具 举报

发表于 2012-8-2 00:42:47 | 显示全部楼层
在技能编辑器里面查看施法动作
QQ截图20120802004155.png
在模型视窗里面查看模型动作
QQ截图20120802004225.png
修改之
QQ截图20120802004407.png
回复

使用道具 举报

 楼主| 发表于 2012-8-2 00:45:20 | 显示全部楼层

回 美味豆沙包 的帖子

美味豆沙包:你可以在模型所拥有的所有动作里面选一个来用 (2012-08-02 00:38) 
啊????但是物体编辑器里只看到了施法动作啊。。。没看到有施法准备动作。。
回复

使用道具 举报

发表于 2012-8-2 00:46:10 | 显示全部楼层

回 yelite 的帖子

yelite:啊????但是物体编辑器里只看到了施法动作啊。。。没看到有施法准备动作。。(2012-08-02 00:45)嬀/color]
施法准备动作是指什么?
回复

使用道具 举报

 楼主| 发表于 2012-8-2 00:49:36 | 显示全部楼层

回 美味豆沙包 的帖子

美味豆沙包:施法准备动作是指什么? (2012-08-02 00:46) 
就是在魔法施放时间(开始施法前的准备时间)里做的动作。。。。。
我想。。大概也许应该是叫施法准备动作比较顺吧。。。
回复

使用道具 举报

发表于 2012-8-2 00:52:57 | 显示全部楼层

回 yelite 的帖子

yelite:就是在魔法施放时间(开始施法前的准备时间)里做的动作。。。。。(2012-08-02 00:49)嬀/color]
表示不懂......
回复

使用道具 举报

 楼主| 发表于 2012-8-2 01:00:55 | 显示全部楼层

回 美味豆沙包 的帖子

美味豆沙包:表示不懂...... (2012-08-02 00:52) 
就是EVENT_PLAYER_UNIT_SPELL_CAST
到EVENT_PLAYER_UNIT_SPELL_EFFECT(要么是EVENT_PLAYER_UNIT_SPELL_CHANNEL,这两个时间点一直搞不清。。)的这段时间里做的动作。。

魔兽自带的技能好像都没这个东西。。

比如一个技能的魔法释放时间是1s
那么按下去以后要等待1秒,然后技能才放出来,在这一秒里stop是不会进入cd的。
回复

使用道具 举报

发表于 2012-8-2 01:04:56 | 显示全部楼层
yelite:就是在魔法施放时间(开始施法前的准备时间)里做的动作。。。。。
我想。。大概也许应该是叫施法准备动作比较顺吧。。。
(2012-08-02 00:49)
那个就是施法动作

施放魔法 -> 开始做“施法动作” -> 动作做完魔法放出去(通魔要自行调整动作时间)
当然“施法中”用的也是“施法动作”,引导技能比较容易看出来,普通技能“施法中”的时间约等于0。。。

嘛……如果LZ说的是施法前摇(通魔可设)的时间里的动作的话。。
似乎是没有的。。
额。。记不太清……谁有空的话开WE看一下吧~

PS:界面抬高不是会把魔兽自带的提示信息遮住吗……
如果只抬高小地图我觉得会很丑……



此楼回复的时候还没13楼。。
回复

使用道具 举报

发表于 2012-8-2 01:13:23 | 显示全部楼层

回 yelite 的帖子

yelite:就是EVENT_PLAYER_UNIT_SPELL_CAST
到EVENT_PLAYER_UNIT_SPELL_EFFECT(要么是EVENT_PLAYER_UNIT_SPELL_CHANNEL,这两个时间点一直搞不清。。)的这段时间里做的动作。。

魔兽自带的技能好像都没这个东西。。
.......(2012-08-02 01:00)嬀/color]
既然魔兽自带技能都没有这个”施法准备动作“,那很明显使用触发做出来的嘛
既然是触发做出来的,那自然怎么样都行,怎么可能只是”spell channel“呢......
回复

使用道具 举报

发表于 2012-8-2 01:17:08 | 显示全部楼层

回 chyj4747 的帖子

chyj4747:那个就是施法动作

施放魔法 -> 开始做“施法动作” -> 动作做完魔法放出去(通魔要自行调整动作时间)
当然“施法中”用的也是“施法动作”,引导技能比较容易看出来,普通技能“施法中”的时间约等于0。。。
.......(2012-08-02 01:04)嬀/color]
那么使用滤镜图片(文字)来显示吧
回复

使用道具 举报

 楼主| 发表于 2012-8-2 01:17:30 | 显示全部楼层

回 chyj4747 的帖子

chyj4747:

那个就是施法动作

施放魔法 -> 开始做“施法动作” -> 动作做完魔法放出去(通魔要自行调整动作时间)

.......

通魔的话是有两个时间,一个是魔法释放时间a,一个是施法持续时间b。
技能释放命令发出去了以后,先等待a,再做施法动作,等待b,然后SPELL_FINISH
观察下来有channel的模型都会在a时间里做出channel动作。


此楼回复的时候你还没编辑。。。。
回复

使用道具 举报

发表于 2012-8-2 01:18:30 | 显示全部楼层

回 yelite 的帖子

yelite:通魔的话是有两个时间,一个是魔法释放时间a,一个是施法持续时间b。
技能释放命令发出去了以后,先等待a,再做施法动作,等待b,然后SPELL_FINISH
观察下来有channel的模型都会在a时间里做出channel动作。(2012-08-02 01:17)嬀/color]
原来你是指通魔啊...
回复

使用道具 举报

 楼主| 发表于 2012-8-2 01:21:33 | 显示全部楼层

回 美味豆沙包 的帖子

美味豆沙包:原来你是指通魔啊... (2012-08-02 01:18) 
不是。。看到lsssss提到了通魔就拿它作例子了。。
每个技能都可以设置“魔法释放时间”的。。
chyj4747:

那个就是施法动作

施放魔法 -> 开始做“施法动作” -> 动作做完魔法放出去(通魔要自行调整动作时间)
当然“施法中”用的也是“施法动作”,引导技能比较容易看出来,普通技能“施法中”的时间约等于0。。。
.......

其实感觉魔法释放点好像是排在技能准备时间之前的(因为技能准备时间为0的技能也会前摇),是纯粹模型动作层面上的东西,没办法用触发捕捉的。。(没验证过。。)
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-24 08:53 , Processed in 0.083399 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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