找回密码
 点一下
查看: 1569|回复: 17

吐槽+提问:啊,WE为什么没有角度内任意点这个函数

[复制链接]
发表于 2012-6-10 13:12:59 | 显示全部楼层 |阅读模式
啊,想做个顶盾格挡技能,就是是在面前被敌人伤害会反弹伤害,
尼玛足足想了1个多小时才想出来,这不是重点,
做是做出来了,但尼玛又有时候不准,比如背着放刀阵旋风,丢来一锤子迅速转身这种情况就不会反弹伤害
我的思路就是确定两个单位的面向角度,下面就是触发:

[trigger]DUN
    事件
        事件<YDWE> -  任意单位 接受伤害
    条件
        ((触发单位) 的类型) 等于 戈恩卫队队长 1
        ((触发单位) 的 顶盾格挡  技能等级) 等于 1
    动作
        单位 - 设置 (触发单位) 的 生命值 为 (((触发单位) 的 生命值) + (0.10 x (单位所受伤害)))
        如果(所有的条件成立) 则运行 (Then - 动作) 否则运行 (Else - 动作)
            If - 条件
                And - 所有条件成立
                    条件
                        (转换 (转换角度 ((触发单位) 的面向角度) 为实数) 为整数) 大于或等于 0
                        ((转换 (转换角度 ((触发单位) 的面向角度) 为实数) 为整数) + 270) 大于或等于 (转换 (转换角度 ((伤害来源) 的面向角度) 为实数) 为整数)
                        ((转换 (转换角度 ((触发单位) 的面向角度) 为实数) 为整数) + 90) 小于或等于 (转换 (转换角度 ((伤害来源) 的面向角度) 为实数) 为整数)
                        (转换 (转换角度 ((触发单位) 的面向角度) 为实数) 为整数) 小于或等于 90
            Then - 动作
                如果(所有的条件成立) 则运行 (Then - 动作) 否则运行 (Else - 动作)
                    If - 条件
                        (随机整数,最小值: 1 最大值: 10) 小于或等于 5
                    Then - 动作
                        单位 - 设置 (触发单位) 的 生命值 为 (((触发单位) 的 生命值) + (0.30 x (单位所受伤害)))
                        单位 - 命令 (触发单位) 对 (伤害来源) 造成 (0.30 x (单位所受伤害)) 点伤害(是 攻击伤害, 不是远程攻击) 攻击类型: 英雄 伤害类型: 普通 武器类型: 无
                    Else - 动作
                        不做任何动作
            Else - 动作
                如果(所有的条件成立) 则运行 (Then - 动作) 否则运行 (Else - 动作)
                    If - 条件
                        And - 所有条件成立
                            条件
                                Or - 任意条件成立
                                    条件
                                        ((转换 (转换角度 ((触发单位) 的面向角度) 为实数) 为整数) + 90) 小于或等于 (转换 (转换角度 ((伤害来源) 的面向角度) 为实数) 为整数)
                                        ((转换 (转换角度 ((触发单位) 的面向角度) 为实数) 为整数) - 90) 大于或等于 (转换 (转换角度 ((伤害来源) 的面向角度) 为实数) 为整数)
                                (转换 (转换角度 ((触发单位) 的面向角度) 为实数) 为整数) 大于或等于 91
                                (转换 (转换角度 ((触发单位) 的面向角度) 为实数) 为整数) 小于或等于 180
                    Then - 动作
                        如果(所有的条件成立) 则运行 (Then - 动作) 否则运行 (Else - 动作)
                            If - 条件
                                (随机整数,最小值: 1 最大值: 10) 小于或等于 5
                            Then - 动作
                                单位 - 设置 (触发单位) 的 生命值 为 (((触发单位) 的 生命值) + (0.30 x (单位所受伤害)))
                                单位 - 命令 (触发单位) 对 (伤害来源) 造成 (0.30 x (单位所受伤害)) 点伤害(是 攻击伤害, 不是远程攻击) 攻击类型: 英雄 伤害类型: 普通 武器类型: 无
                            Else - 动作
                                不做任何动作
                    Else - 动作
                        如果(所有的条件成立) 则运行 (Then - 动作) 否则运行 (Else - 动作)
                            If - 条件
                                And - 所有条件成立
                                    条件
                                        Or - 任意条件成立
                                            条件
                                                ((转换 (转换角度 ((触发单位) 的面向角度) 为实数) 为整数) - 90) 大于或等于 (转换 (转换角度 ((伤害来源) 的面向角度) 为实数) 为整数)
                                                ((转换 (转换角度 ((触发单位) 的面向角度) 为实数) 为整数) + 90) 小于或等于 (转换 (转换角度 ((伤害来源) 的面向角度) 为实数) 为整数)
                                        (转换 (转换角度 ((触发单位) 的面向角度) 为实数) 为整数) 大于或等于 181
                                        (转换 (转换角度 ((触发单位) 的面向角度) 为实数) 为整数) 小于或等于 269
                            Then - 动作
                                如果(所有的条件成立) 则运行 (Then - 动作) 否则运行 (Else - 动作)
                                    If - 条件
                                        (随机整数,最小值: 1 最大值: 10) 小于或等于 5
                                    Then - 动作
                                        单位 - 设置 (触发单位) 的 生命值 为 (((触发单位) 的 生命值) + (0.30 x (单位所受伤害)))
                                        单位 - 命令 (触发单位) 对 (伤害来源) 造成 (0.30 x (单位所受伤害)) 点伤害(是 攻击伤害, 不是远程攻击) 攻击类型: 英雄 伤害类型: 普通 武器类型: 无
                                    Else - 动作
                                        不做任何动作
                            Else - 动作
                                如果(所有的条件成立) 则运行 (Then - 动作) 否则运行 (Else - 动作)
                                    If - 条件
                                        And - 所有条件成立
                                            条件
                                                (转换 (转换角度 ((伤害来源) 的面向角度) 为实数) 为整数) 小于或等于 (转换 (转换角度 (转换实数 180.00 为角度) 为实数) 为整数)
                                                (转换 (转换角度 ((伤害来源) 的面向角度) 为实数) 为整数) 大于或等于 (转换 (转换角度 (转换实数 0.00 为角度) 为实数) 为整数)
                                                (转换 (转换角度 ((触发单位) 的面向角度) 为实数) 为整数) 等于 270
                                    Then - 动作
                                        如果(所有的条件成立) 则运行 (Then - 动作) 否则运行 (Else - 动作)
                                            If - 条件
                                                (随机整数,最小值: 1 最大值: 10) 小于或等于 5
                                            Then - 动作
                                                单位 - 设置 (触发单位) 的 生命值 为 (((触发单位) 的 生命值) + (0.30 x (单位所受伤害)))
                                                单位 - 命令 (触发单位) 对 (伤害来源) 造成 (0.30 x (单位所受伤害)) 点伤害(是 攻击伤害, 不是远程攻击) 攻击类型: 英雄 伤害类型: 普通 武器类型: 无
                                            Else - 动作
                                                不做任何动作
                                    Else - 动作
                                        如果(所有的条件成立) 则运行 (Then - 动作) 否则运行 (Else - 动作)
                                            If - 条件
                                                And - 所有条件成立
                                                    条件
                                                        ((转换 (转换角度 ((触发单位) 的面向角度) 为实数) 为整数) - 90) 大于或等于 (转换 (转换角度 ((伤害来源) 的面向角度) 为实数) 为整数)
                                                        ((转换 (转换角度 ((触发单位) 的面向角度) 为实数) 为整数) - 270) 小于或等于 (转换 (转换角度 ((伤害来源) 的面向角度) 为实数) 为整数)
                                                        (转换 (转换角度 ((触发单位) 的面向角度) 为实数) 为整数) 大于或等于 271
                                                        (转换 (转换角度 ((触发单位) 的面向角度) 为实数) 为整数) 小于或等于 360
                                            Then - 动作
                                                如果(所有的条件成立) 则运行 (Then - 动作) 否则运行 (Else - 动作)
                                                    If - 条件
                                                        (随机整数,最小值: 1 最大值: 10) 小于或等于 5
                                                    Then - 动作
                                                        单位 - 设置 (触发单位) 的 生命值 为 (((触发单位) 的 生命值) + (0.30 x (单位所受伤害)))
                                                        单位 - 命令 (触发单位) 对 (伤害来源) 造成 (0.30 x (单位所受伤害)) 点伤害(是 攻击伤害, 不是远程攻击) 攻击类型: 英雄 伤害类型: 普通 武器类型: 无
                                                    Else - 动作
                                                        不做任何动作
                                            Else - 动作
                                                不做任何动作
[/trigger]
谁能想个准一点的方法啊。
发表于 2012-6-10 14:22:42 | 显示全部楼层
记录单位攻击这个单位或对这个单位使用技能的时候的位置 再计算角度?
回复

使用道具 举报

 楼主| 发表于 2012-6-10 14:53:35 | 显示全部楼层
我想过,但背对着放刀阵还是没解决
回复

使用道具 举报

发表于 2012-6-10 15:46:48 | 显示全部楼层
额. 要不单位收到伤害后记录 伤害来源 到 受到伤害单位 的角度 再比对 受到伤害单位 的面向角度什么的...
不过如果是那种飞行技能貌似就会有BUG..
回复

使用道具 举报

 楼主| 发表于 2012-6-10 17:47:55 | 显示全部楼层

回 y329987311 的帖子

y329987311:额. 要不单位收到伤害后记录 伤害来源 到 受到伤害单位 的角度 再比对 受到伤害单位 的面向角度什么的...
不过如果是那种飞行技能貌似就会有BUG.. (2012-06-10 15:46)
跟我这个一样嘛,
而且让我纠结的是两个单位之间的角度值居然是0~180和0~负180之间。。。。
而面向角度是0~.360
回复

使用道具 举报

发表于 2012-6-10 18:31:40 | 显示全部楼层
角度内任意点?

   很简单啊。


设置一下角度君就无压力了
回复

使用道具 举报

 楼主| 发表于 2012-6-10 18:55:02 | 显示全部楼层

回 okolek 的帖子

okolek:
角度内任意点?

   很简单啊。


.......
说的什么已近超出我的认知范围
回复

使用道具 举报

 楼主| 发表于 2012-6-10 18:57:20 | 显示全部楼层
演示,演示啊,我要演示
回复

使用道具 举报

发表于 2012-6-10 21:57:27 | 显示全部楼层
既然lz用的是YDWE,那么就有两单位之间的角度这个东西……

角度的判断应该这么写

OR
    ((从触发单位到伤害来源的角度) - (触发单位的面向角度))的绝对值小于等于60
    ((从触发单位到伤害来源的角度) - (触发单位的面向角度)+360)的绝对值小于等于60
     ((从触发单位到伤害来源的角度) - (触发单位的面向角度)-360)的绝对值小于等于60
回复

使用道具 举报

发表于 2012-6-10 22:34:50 | 显示全部楼层
亮点之间的角度不是老狼UI就有吗?

话说你不打算发动技能效果的时候稍微捕捉下角度吗?
回复

使用道具 举报

 楼主| 发表于 2012-6-11 01:29:30 | 显示全部楼层

回 lo 的帖子

lo:既然lz用的是YDWE,那么就有两单位之间的角度这个东西……

角度的判断应该这么写

OR
....... (2012-06-10 21:57)
我去,不是两个单位之间的角度,是两个单位的面向角度
而且两个单位单位之间的角度不随模型旋转而改变,
回复

使用道具 举报

 楼主| 发表于 2012-6-11 01:41:13 | 显示全部楼层

回 破喉咙 的帖子

破喉咙:亮点之间的角度不是老狼UI就有吗?

话说你不打算发动技能效果的时候稍微捕捉下角度吗? (2012-06-10 22:34)
喉咙桑啊,因为如果背对着放刀阵这样的技能,没有面对着,捕捉了也没用,
(指定目标技能施放时捕捉角度还是有可行性的)再因为我很懒就懒得捕捉了
回复

使用道具 举报

 楼主| 发表于 2012-6-11 01:44:52 | 显示全部楼层
抱歉3连,啊啊啊啊啊啊啊 ,我问的不是技能纠错问题,我写的触发没问题,我是想问有没有更好的办法,或者能弄个角度内任意点这样的函数,啊啊啊啊啊啊啊[s:202] ,到底你们又没有好好看内容啊,我似乎有点过分了?SORRY
回复

使用道具 举报

发表于 2012-6-11 02:02:10 | 显示全部楼层
LZ参考下我很早以前做的步兵顶盾?
http://bbs.islga.org/read-htm-tid-726908-page-1.html
当时小德叫我弄移植的所以是JASS写的,判断方向的函数如果要用的话复制黏贴即可~
还有一个更早的附带一点T的版本,直接搜步兵顶盾就行~

不过我当时没测那么仔细。。不知道迅速转身这种会不会有问题……
回复

使用道具 举报

 楼主| 发表于 2012-6-11 02:22:05 | 显示全部楼层

回 chyj4747 的帖子

chyj4747:LZ参考下我很早以前做的步兵顶盾?
http://bbs.islga.org/read-htm-tid-726908-page-1.html
当时小德叫我弄移植的所以是JASS写的,判断方向的函数如果要用的话复制黏贴即可~
还有一个更早的附带一点T的版本,直接搜步兵顶盾就行~

....... (2012-06-11 02:02)
谢谢CHY的无私帮助,
这是前言,
我不会JASS,
所以把JASS复制到我图里,我会感觉怪怪的,就是很怕会坏掉,而且没法修补,额
所以我还是不复制了,嗯
回复

使用道具 举报

发表于 2012-6-11 08:32:01 | 显示全部楼层
不要急着下结论嘛,至少试试看啊……

不过放个锤子之后迅速闪烁到单位背面的话我是没办法的……因为这个并不是判断伤害的方向,而是判断受伤害瞬间伤害来源对于触发单位的方向……
回复

使用道具 举报

 楼主| 发表于 2012-6-11 18:30:39 | 显示全部楼层
诶,喵咪的方法还可以哈,比我那一堆一堆乱七八糟的好多了哎
顺便学习下,呼呼
回复

使用道具 举报

发表于 2012-6-17 07:00:22 | 显示全部楼层
  少年。你大概忘了修改分类了?
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-28 13:26 , Processed in 0.039782 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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