找回密码
 点一下
查看: 606|回复: 7

请问各位大佬怎么做解体重生的效果

[复制链接]
发表于 2021-6-10 14:20:29 | 显示全部楼层 |阅读模式
英雄单位学习解体重生后 每次死亡都会向周围半径600处发射5只软泥 软泥具有250的缓慢移动速度 和10点生命值 软泥可以以鼠标右键方式吞噬其他软泥 30秒后英雄以吞噬数量最多的那个软泥处重生 每吞噬一只软泥则增加20%的生命值和20%的魔法值,当只存在1只软泥时,复活的英雄只具有20%的生命值和魔法值,当1只以上软泥存活并没有吞噬任何一只软泥时,则英雄在随机一个软泥处复活,并且只有20%的生命值和魔法值 ,当软泥全部死亡,则英雄彻底死亡 只能使用祭坛或酒馆复活 效果触发的30秒 祭坛和酒馆无法复活该英雄 软泥无法被敌军控制,本来想用火土风暴来做 但是不会判定吞噬效果 而且火土风暴一定是要英雄活着才能释放 英雄死了就放不了了 求大佬解答 谢谢
发表于 2021-6-13 13:53:02 | 显示全部楼层
英雄0血 无敌隐藏 这个时候用变量记录,。创建互相吞噬单位的模型,不会JASS就全局整数  会JASS就单位绑定整数, 每吞噬一个 记录整数+1  比如整数是5  就是100%血量  这个真心好解决。 至于复活英雄 你这样没必要。 完全可以设置0血不死的效果 然后无敌隐藏,若 泥 全死 则杀死英雄.  你一定要让英雄死了会很麻烦。
回复

使用道具 举报

发表于 2021-6-13 13:58:01 | 显示全部楼层
效果是一样 , 至于0血不死 很简单 物品技能 有个加生命上线的 。 判断下 伤害是否超出 单位生命, 超出 就添加 这个物品 加生命上线的,加1点血就OK了  ,然后无敌隐藏 ,再删除这个技能 为了避免莫名BUG, 最好给单位之前豁免 这次伤害设定 ,或者 删技能前 给单位加1点血。 按着思路来说 这是最实在的
回复

使用道具 举报

发表于 2021-6-13 14:04:01 | 显示全部楼层
.... 最近做 魔兽AI 本体调用去了, 里面不能用BJ 函数 真是个困扰,直接 把BJ还原 成JASS......
回复

使用道具 举报

发表于 2021-6-13 14:06:21 | 显示全部楼层
function IsWpZDqytey takes rect r, real x, real y returns boolean //物品继承返回数据
return (GetRectMinX(r) <= x) and (x <= GetRectMaxX(r)) and (GetRectMinY(r) <= y) and (y <= GetRectMaxY(r))
endfunction


function IsWpZDqy takes item itemId,rect r returns boolean //判断物品是否在指定区域
if (itemId == null) then
return false
endif
if (IsItemOwned(itemId)) then  //若物品被持有也返回没有
return false
endif
return IsWpZDqytey(r, GetItemX(itemId), GetItemY(itemId))
endfunction

BJ也有这判定 但直接丢AI脚本里面 运行不了 直接 还原BJ函数了 这该死的包装
回复

使用道具 举报

发表于 2021-6-13 14:07:33 | 显示全部楼层
//------------------以指定坐标返回矩形区域指定大小----------------------
function GetRectQYdx takes real x, real y,real Rm returns rect
return Rect( x - Rm, y - Rm, x + Rm, y + Rm )
endfunction

再比如以坐标 返回矩形区域 ,调用YDWE 我还不如直接调用自己的-  -!
回复

使用道具 举报

发表于 2021-6-13 14:10:05 | 显示全部楼层

function  GetItemOfQuchuTye  takes unit whichUnit, integer itemId returns integer //物品取出继承
local integer index
local item    indexItem
set index = 0
loop
set indexItem = UnitItemInSlot(whichUnit, index)
if (indexItem != null) and (GetItemTypeId(indexItem) == itemId) then
return index + 1
endif
set index = index + 1
exitwhen index >= 6
endloop
return 0
endfunction


function GetItemOfQuchu takes unit whichUnit, integer itemId returns item //物品取出
local integer index = GetItemOfQuchuTye(whichUnit, itemId)
if (index == 0) then
return null
else
return UnitItemInSlot(whichUnit, index - 1)
endif
endfunction

这个就是BJ里的 判定单位是否 持有那个物品。直接 BJ转换的 AI里面用不了 我又还原了下- -...  大部分BJ 好像都能还原 除非直接 给的 BJ 本地函数 。
回复

使用道具 举报

发表于 2021-6-13 14:13:30 | 显示全部楼层
我现在地图 基本全是调用JASS  BJ包装的
全分解了 没一个红色 的......  就连播 音乐 图像 都把包装去掉了 .....  全是紫色 好看了 ......
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-22 12:11 , Processed in 0.034428 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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