找回密码
 点一下
查看: 2267|回复: 9

求高手指点,如何做出属性影响伤害的剑刃风暴...

[复制链接]
发表于 2010-12-13 21:50:03 | 显示全部楼层 |阅读模式
   
我在论坛下载了一个澄海剑锋风暴的精演示.令我眼花缭乱的JASS代码.顿时无语.我希望做出一个伤害效果是剑圣的敏捷包括加成乘以X剑锋风暴技能等级的伤害效果.

我先看了一下演示,里面的伤害似乎是双重的.一个是剑刃风暴的技能伤害,另一个是剑刃风暴所附带出的马甲的闪电技能里面设置好的伤害.
仅仅是修改剑刃风暴自身的伤害的话,我觉得设置一个区域的选区单位进行伤害应该就可以了.可是如何让马甲的闪电技能也是属性伤害呢?当然,最重要的,我不会JASS.希望大大们能够帮忙解说一下,
如何用j写属性乘以技能等级的伤害公式呢........求解.希望高人们指点.谢谢.
我把j代码和演示也发上来.方便大家查看.
如何让属性影响剑刃的伤害呢.w3x (17 KB, 下载次数: 24)

[jass]function Trig_Whirlwind_Conditions takes nothing returns boolean
return ((GetSpellAbilityId()=='A002'))
endfunction
function Trig_Whirlwind_Actions takes nothing returns nothing
set udg_Whirlwind_Unit=GetTriggerUnit()
call EnableTrigger(gg_trg_WhirlwindBuff)
call TriggerSleepAction(10.00)
set udg_Whirlwind_Unit=null
call DisableTrigger(gg_trg_WhirlwindBuff)
endfunction
//===========================================================================
function InitTrig_Whirlwind takes nothing returns nothing
set gg_trg_Whirlwind=CreateTrigger()
call TriggerRegisterUnitEvent(gg_trg_Whirlwind,gg_unit_Obla_0048,EVENT_UNIT_SPELL_EFFECT)
call TriggerAddCondition(gg_trg_Whirlwind,Condition(function Trig_Whirlwind_Conditions))
call TriggerAddAction(gg_trg_Whirlwind,function Trig_Whirlwind_Actions)
endfunction
[/jass]

[jass]
function Trig_WhirlwindBuff_Func001C takes nothing returns boolean
return ((IsUnitAliveBJ(udg_Whirlwind_Unit)))
endfunction
function Trig_WhirlwindBuff_Actions takes nothing returns nothing
if (Trig_WhirlwindBuff_Func001C()) then
set bj_forLoopAIndex=1
set bj_forLoopAIndexEnd=4
loop
exitwhen bj_forLoopAIndex>bj_forLoopAIndexEnd
call AddSpecialEffectTargetUnitBJ("weapon",udg_Whirlwind_Unit,"Abilities\\Spells\\Human\\HolyBolt\\HolyBoltSpecialArt.mdl")
call DestroyEffect(bj_lastCreatedEffect)
set udg_Temp_Point=GetUnitLoc(udg_Whirlwind_Unit)
call CreateNUnitsAtLoc(1,'e000',GetOwningPlayer(udg_Whirlwind_Unit),udg_Temp_Point,GetRandomReal(0,360))
call RemoveLocation(udg_Temp_Point)
call UnitApplyTimedLifeBJ(1.00,'BHwe',bj_lastCreatedUnit)
set udg_Temp_Point=PolarProjectionBJ(GetUnitLoc(bj_lastCreatedUnit),100.00,GetRandomReal(0,360))
call IssuePointOrderByIdLoc(bj_lastCreatedUnit,852218,udg_Temp_Point)
call RemoveLocation(udg_Temp_Point)
set bj_forLoopAIndex=bj_forLoopAIndex+1
endloop
else
set udg_Whirlwind_Unit=null
call DisableTrigger(gg_trg_WhirlwindBuff)
endif
endfunction
//===========================================================================
function InitTrig_WhirlwindBuff takes nothing returns nothing
set gg_trg_WhirlwindBuff=CreateTrigger()
call DisableTrigger(gg_trg_WhirlwindBuff)
call TriggerRegisterTimerEventPeriodic(gg_trg_WhirlwindBuff,0.20)
call TriggerAddAction(gg_trg_WhirlwindBuff,function Trig_WhirlwindBuff_Actions)
endfunction
[/jass]
发表于 2010-12-13 21:53:24 | 显示全部楼层
还没有学Jass
如果里边有单位接受伤害事件之类的倒是比较简单
直接判断伤害来源单位的单位类型是否为剑刃风暴马甲
肯定返回时造成与剑圣属性值相关的伤害
因为澄海3C里边的技能触发所关联的单位都是地图上边的指定单位
回复

使用道具 举报

发表于 2010-12-14 00:30:04 | 显示全部楼层
WorldEditTestMap.w3x (22 KB, 下载次数: 73) 自己做的
回复

使用道具 举报

 楼主| 发表于 2010-12-14 14:16:43 | 显示全部楼层
先感谢LS,不过我还有另外一个疑问,就是澄海的剑刃风暴是有附带的闪电球的扩散攻击.那个东西如何做出属性影响伤害呢?
回复

使用道具 举报

发表于 2010-12-14 16:15:37 | 显示全部楼层
引用第3楼4133789于2010-12-14 14:16发表的  :
先感谢LS,不过我还有另外一个疑问,就是澄海的剑刃风暴是有附带的闪电球的扩散攻击.那个东西如何做出属性影响伤害呢?
判断接受伤害的单位是否拥有那个闪电的魔法效果,然后造成伤害
回复

使用道具 举报

发表于 2010-12-14 16:43:29 | 显示全部楼层
开启周期事件--单位组伤害 你看可以不
回复

使用道具 举报

发表于 2010-12-14 16:55:32 | 显示全部楼层
以下是你贴的Jass的T翻译版。我承认我无聊了。竟然一字一句地翻译了。。

[trigger]
Whirlwind
    事件
        单位 - 任意单位 发动技能效果
    条件
        (施放技能) 等于 剑刃风暴
    动作
        设置 Whirlwind_Unit = (触发单位)
        触发器 - 开启 WhirlwindBuff <预设>
        等待 10.00 秒
        设置 Whirlwind_Unit = 没有单位
        触发器 - 关闭 WhirlwindBuff <预设>
[/trigger]

[trigger]
WhirlwindBuff
    事件
        时间 - 每 0.20 秒触发事件
    条件
    动作
        如果所有条件成立则做动作1,否则做动作2
            If - 条件
                (Whirlwind_Unit 是存活的) 等于 TRUE
            Then - 动作
                For循环整数A从 1 到 4, 做动作
                    Loop - 动作
                        特殊效果 - 创建并绑定特效到 weapon 对 Whirlwind_Unit ,使用模型: Abilities\\Spells\\Human\\HolyBolt\\HolyBoltSpecialArt.mdl
                        特殊效果 - 删除 (最后创建的特效)
                        设置 Temp_Point = (Whirlwind_Unit 的位置)
                        单位 - 创建 1 个 小精灵 给 (Whirlwind_Unit 的所有者) 在 Temp_Point ,面向角度为 (随机实数,最小值: 0.00 最大值: 360.00) 度
                        点 - 清除 Temp_Point
                        单位 - 设置 1.00 秒 水元素 类型的生命周期对 (最后创建的单位)
                        设置 Temp_Point = (从 ((最后创建的单位) 的位置) 开始,距离 100.00 ,方向为 (随机实数,最小值: 0.00 最大值: 360.00) 度的位移处)
                        单位 - 对 (最后创建的单位) 发布 不死族恐惧魔王 - 腐臭蜂群 命令到目标点: Temp_Point
                        点 - 清除 Temp_Point
            Else - 动作
                设置 Whirlwind_Unit = 没有单位
                触发器 - 关闭 WhirlwindBuff <预设>
[/trigger]
回复

使用道具 举报

 楼主| 发表于 2010-12-14 17:38:24 | 显示全部楼层
感谢诸位.我自己去尝试.
回复

使用道具 举报

发表于 2011-1-23 18:58:20 | 显示全部楼层
三围*技能等级=伤害怎么做呐?
回复

使用道具 举报

发表于 2011-1-23 23:31:33 | 显示全部楼层
三围*技能等级=伤害怎么做呐?
利用论坛左上角的搜索功能 搜索属性之类的关键词就有相关答案
属性伤害其实就是一个单位动作
[trigger]Damage
    事件
        单位 - 任意单位 发动技能效果
    条件
        (施放技能) 等于 战争践踏
    动作
        单位组 - 选取 (半径为 (218.00 + (50.00 x (转换 (战争践踏  的等级对 (触发单位)) 为实数))) 圆心为 ((触发单位) 的位置) 且满足 ((((匹配单位) 是 建筑) 等于 FALSE) and ((((匹配单位) 是存活的) 等于 TRUE) and ((((匹配单位)  内所有单位做动作
            Loop - 动作
                单位 - 命令 (触发单位) 对 (选取单位) 造成 (转换 ((战争践踏  的等级对 (触发单位)) x ((触发单位) 的力量值(包括 加成))) 为实数) 点伤害,攻击类型: 法术 伤害类型: 破坏

[/trigger]

伤害范围内敌对单位的演示地图.w3x

28 KB, 下载次数: 39

这个是复杂化了的现成演示

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-24 20:14 , Processed in 0.050974 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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