佳丽云

英雄无敌3-WoG中文站

 找回密码
 英雄注册|Register
查看: 1978|回复: 2

贤知的重新设置站堆位置函数,意义何在?

[复制链接]
  • TA的每日心情
    开心
    2015-12-9 01:09
  • 签到天数: 9 天

    连续签到: 1 天

    [LV.3]火元素使者

    1839

    回帖

    8223

    金币

    8

    精华

    版主

    Rank: 10Rank: 10Rank: 10

    积分
    10822

    社区QQ达人

    发表于 2016-4-20 10:09:29 | 显示全部楼层 |阅读模式
    本帖最后由 XEricSin 于 2016-4-20 10:10 编辑

    我看封神28号脚本里九头围攻动画相关命令有以下几句:

    !!FU16040:Px16/?y33;  //调用重新设置堆栈位置函数  By 007 @贤知有您
    !!FU16011:Px2/x16/?y35; //调用计算生物之间距离函数 By Besry
    。。。。
    !!VRz3:S^ThemadD.def^;  狂化
    !!FU16037:P0/3/y33/75/1/0/1;  //调用更换魔法动画函数 By 007

    可以看到,FU16037调用动画的时候是用的重新设置站堆位置后的格子坐标。
    这样改坐标用意何在呢?
    FU16037使用的动画def名称为ThemadD。我在封神的pac中发现了ThemadDThemadS,难道D是double,S是single?分别给双格生物和单格生物?
    再看FU16040更改位置函数,有个检测生物标记的部分!!BMx1:I?y1 F?i; 而且i是用作检测生物单双格标记,那么我猜测更改位置其实是只对双格生物有效,是在选择双格怪左边的格子。

    另外,FU16040中没有出现BM:P#的命令,也就是说其实没有真正重设生物位置,只是返回一个生物左边格子的坐标到y33


    **======================================================**

    **VRz3:S^Hawaiing007.def^;
    **FU16037:P0/3/93/100/0/0/0;  //调用更换魔法动画函数 By 007
    !?FU16037;
    **x1=借用的BM:V动画编号(0-82)注意不是所有编号都能正确播放动画(需修改播放标志)
    **x2=存储"外调的DEF动画名字"的z变量索引(不能使用负数z变量)
    **x3=播放的坐标位置(0-187)
    **x4=延时(播放速度,一般用100)
    **x5=播放标志,施放动画的位置(0-4)(BM:V时会考虑堆栈的体积)--默认用0
    **(经测试)  =0动画底部为基准,=1以动画中心为基准,=3?,=4英雄位置
    **x6=播放标志,是否透明化(0否,1是)
    **x7=是否自行修改播放标志(0否,1是)

    **FU16040:Px1/?y2;  //调用重新设置堆栈位置函数  By 007
    !?FU16040;
    **x1=生物堆栈
    **x2=重置位置
    **需结合特殊魔法动画使用
    !!FU|x1<0/x1>41:E;
    !!BMx1:I?y1 F?i;
    !!VRi:&1;
    !!UN:C6919200/4/?y2;     [调用内存]
    !!VRy3:Sx1 *1352 +21708 +y2;
    !!SN:E4481984/2/y3;
    !!BMx1:P?y4;
    !!VRy5:Sv1;
    !!VRx2&i=0:Sy4;
    !!if&i>0:;
    !!BMx1:N?y6;
    !!if&y6>0:;
    !!VRx2&y1=0:Sy4;
    !!VRx2&y1=1:Sy5;
    !!en:;
    !!if&y6=0:;
    !!VRx2&y4<=y5:Sy4;
    !!VRx2&y4>y5:Sy5;
    !!en:;
    !!en:;



  • TA的每日心情
    郁闷
    2015-6-6 16:12
  • 签到天数: 52 天

    连续签到: 1 天

    [LV.5]女巫

    4950

    回帖

    3万

    金币

    35

    精华

    超级版主

    Rank: 11Rank: 11Rank: 11Rank: 11

    积分
    34683

    论坛守望者论坛元老杰出贡献

    发表于 2016-4-20 11:31:01 | 显示全部楼层
    本帖最后由 贤知有您 于 2016-4-20 11:42 编辑

    逐渐淡忘关于内存函数的意义.
    内存函数与我渐行渐远.

    楼主猜得都已经差不多了,这个函数就是获得真正坐标的.
    实际上,BM:P在活动堆栈(生存)下获得坐标是没错的,只有在死亡后,并且是双格生物时可能就出现意外.
    之所以出现"意外",是因为双格生物在死亡时的朝向可能是反方向的.这时获得的坐标就有误(变成了另外一个坐标).
    而后续函数对于堆栈施放动画时,如果坐标偏差了,放置的动画就会发生偏差.

    楼主如果看不懂死亡后堆栈的坐标到底有啥问题,可以做这类测试:
    双格生物在对方背后攻击(产生了转身),并且被对手反击死亡(也就是死亡时是转身的状态)(或者直接砍死已经转身应对攻击的对方)
    这时检测一下这个死亡堆栈的BM:P.思考一下这个死亡堆栈的朝向问题.

    需要注意的是,这个函数就是为后面施放魔法而准备的.
  • TA的每日心情
    郁闷
    2015-6-6 16:12
  • 签到天数: 52 天

    连续签到: 1 天

    [LV.5]女巫

    4950

    回帖

    3万

    金币

    35

    精华

    超级版主

    Rank: 11Rank: 11Rank: 11Rank: 11

    积分
    34683

    论坛守望者论坛元老杰出贡献

    发表于 2016-4-20 11:47:35 | 显示全部楼层
    补充一下.
    这里是咨询沧海一粟的,因为函数应该是他编写的,我已经没啥印象了.

    按照理解,施放动画需要找到堆栈的最左端坐标(主要指双格部队时)?
    然后看函数
    !!BMx1:N?y6;
    !!if&y6>0:;
    !!VRx2&y1=0:Sy4; ----->左势力堆栈,用左端的坐标
    !!VRx2&y1=1:Sy5; ------->右势力堆栈,用左端的坐标(也就是非BM:P的坐标)
    !!en:;
    !!if&y6=0:;
    !!VRx2&y4<=y5:Sy4;
    !!VRx2&y4>y5:Sy5;
    !!en:;
    感觉上,不管y6值如何.
    !!VRx2&y4<=y5:Sy4;
    !!VRx2&y4>y5:Sy5;
    这段找到最左端坐标依然是正确的.

    @沧海一粟 还请老人家详解.


    ahome_bigavatar:guest
    ahome_bigavatar:welcomelogin
    您需要登录后才可以回帖 登录 | 英雄注册|Register

    本版积分规则

    捐赠
    关注我们,英3Mod一网打尽!

    WoG中文站 ( 辽B2-20210485-10 )|辽公网安备 21128202000228 号

    GMT+8, 2025-2-23 20:01 , Processed in 0.411437 second(s), 13 queries , Gzip On, File On.

    Powered by Discuz! X3.4

    Copyright © 2004-2022, Beijing Second Sight Technology Co., LTD.

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