找回密码
 注册
搜索
查看: 1529|回复: 5
收起左侧

我的杀人、助攻系统哪里错了呢?

[复制链接]

该用户从未签到

8

威严

2179

帖子

4216

点数

七彩门番

RULE BREAKER

Rank: 5Rank: 5

积分
3795

永恒の早喵

QQ
发表于 2011-3-30 17:01:12 | 显示全部楼层 |阅读模式
Killing
事件
条件
动作
设置 PlayerDeath[(((死亡单位) 的所有者) 的玩家索引号)] = (PlayerDeath[(((死亡单位) 的所有者) 的玩家索引号)] + 1)
设置 XinyangIncome = (((死亡单位) 的等级) + 10)
特殊效果 - 删除 (新建特效 Objects\Spawnmodels\NightElf\NEDeathMedium\NEDeath.mdl 并绑定到 (死亡单位) 的 overhead 附加点上)
如果(所有的条件成立) 则运行 (Then - 动作) 否则运行 (Else - 动作)
If - 条件
((死亡单位) 是 玩家2(蓝色) 的同盟单位) 等于 TRUE
Then - 动作
设置 PlayerDeath[2] = (PlayerDeath[2] + 1)
设置 MultiBoardItem = (MultiBoard 的第 7 行,第 3 列项)
多面板 - 设置 MultiBoardItem 的项目文本为 (|CFF0041FF + (转换 PlayerDeath[2] 为字符串))
多面板 - 删除 MultiBoardItem
设置 MultiBoardItem = (MultiBoard 的第 (((((死亡单位) 的所有者) 的玩家索引号) / 2) + 6) 行,第 3 列项)
Else - 动作
设置 PlayerDeath[1] = (PlayerDeath[1] + 1)
设置 MultiBoardItem = (MultiBoard 的第 1 行,第 3 列项)
多面板 - 设置 MultiBoardItem 的项目文本为 (|CFFFF0000 + (转换 PlayerDeath[1] 为字符串))
多面板 - 删除 MultiBoardItem
设置 MultiBoardItem = (MultiBoard 的第 (((((死亡单位) 的所有者) 的玩家索引号) + 1) / 2) 行,第 3 列项)
多面板 - 设置 MultiBoardItem 的项目文本为 (PlayerColor[(((死亡单位) 的所有者) 的玩家索引号)] + (转换 PlayerDeath[(((死亡单位) 的所有者) 的玩家索引号)] 为字符串))
多面板 - 删除 MultiBoardItem
-------- 自杀 --------
如果(所有的条件成立) 则运行 (Then - 动作) 否则运行 (Else - 动作)
If - 条件
Or - 任意条件成立
条件
(凶手单位) 等于 没有单位
(凶手单位) 等于 (死亡单位)
Then - 动作
游戏 - 对 (所有玩家) 发送显示 30.00 秒的文本信息: ((PlayerColor[(((死亡单位) 的所有者) 的玩家索引号)] + (((死亡单位) 的所有者) 的名字)) + |r自杀了!)
设置 PlayerReviving[(((死亡单位) 的所有者) 的玩家索引号)] = (((死亡单位) 的英雄等级) x 2)
Else - 动作
-------- 同队杀 --------
如果(所有的条件成立) 则运行 (Then - 动作) 否则运行 (Else - 动作)
If - 条件
((凶手单位) 是 ((死亡单位) 的所有者) 的同盟单位) 等于 TRUE
Then - 动作
游戏 - 对 (所有玩家) 发送显示 30.00 秒的文本信息: ((PlayerColor[(((死亡单位) 的所有者) 的玩家索引号)] + (((死亡单位) 的所有者) 的名字)) + (|r被 + ((PlayerColor[(((凶手单位) 的所有者) 的玩家索引号)] + (((凶手单位) 的所有者) 的名字)) + |r反补了!)))
设置 PlayerReviving[(((死亡单位) 的所有者) 的玩家索引号)] = (((死亡单位) 的英雄等级) x 2)
Else - 动作
如果(所有的条件成立) 则运行 (Then - 动作) 否则运行 (Else - 动作)
If - 条件
KillingN[(((死亡单位) 的所有者) 的玩家索引号)] 大于或等于 0
Then - 动作
设置 KillingN[(((死亡单位) 的所有者) 的玩家索引号)] = 0
Else - 动作
设置 KillingN[(((死亡单位) 的所有者) 的玩家索引号)] = (KillingN[(((死亡单位) 的所有者) 的玩家索引号)] - 15)
设置 PlayerReviving[(((死亡单位) 的所有者) 的玩家索引号)] = (((死亡单位) 的英雄等级) x 4)
设置 PlayerKill[(((凶手单位) 的所有者) 的玩家索引号)] = (PlayerKill[(((凶手单位) 的所有者) 的玩家索引号)] + 1)
-------- 敌人杀 --------
如果(所有的条件成立) 则运行 (Then - 动作) 否则运行 (Else - 动作)
If - 条件
((凶手单位) 的所有者) 不等于 中立敌对
Then - 动作
计时器 - 启动 TimerDoubleKill[(((凶手单位) 的所有者) 的玩家索引号)],应用计时方式: 一次性,计时周期为 45.00 秒
如果(所有的条件成立) 则运行 (Then - 动作) 否则运行 (Else - 动作)
If - 条件
((凶手单位) 是 玩家2(蓝色) 的同盟单位) 等于 TRUE
Then - 动作
如果(所有的条件成立) 则运行 (Then - 动作) 否则运行 (Else - 动作)
If - 条件
((凶手单位) 的所有者) 等于 玩家2(蓝色)
Then - 动作
Else - 动作
设置 PlayerKill[2] = (PlayerKill[2] + 1)
设置 MultiBoardItem = (MultiBoard 的第 7 行,第 2 列项)
多面板 - 设置 MultiBoardItem 的项目文本为 (|CFF0041FF + (转换 PlayerKill[2] 为字符串))
多面板 - 删除 MultiBoardItem
设置 MultiBoardItem = (MultiBoard 的第 (((((凶手单位) 的所有者) 的玩家索引号) / 2) + 6) 行,第 2 列项)
Else - 动作
如果(所有的条件成立) 则运行 (Then - 动作) 否则运行 (Else - 动作)
If - 条件
((凶手单位) 的所有者) 等于 玩家1(红色)
Then - 动作
Else - 动作
设置 PlayerKill[1] = (PlayerKill[1] + 1)
设置 MultiBoardItem = (MultiBoard 的第 1 行,第 2 列项)
多面板 - 设置 MultiBoardItem 的项目文本为 (|CFFFF0000 + (转换 PlayerKill[1] 为字符串))
多面板 - 删除 MultiBoardItem
设置 MultiBoardItem = (MultiBoard 的第 (((((凶手单位) 的所有者) 的玩家索引号) + 1) / 2) 行,第 2 列项)
多面板 - 设置 MultiBoardItem 的项目文本为 (PlayerColor[(((凶手单位) 的所有者) 的玩家索引号)] + (转换 PlayerKill[(((凶手单位) 的所有者) 的玩家索引号)] 为字符串))
多面板 - 删除 MultiBoardItem
Else - 动作
如果(所有的条件成立) 则运行 (Then - 动作) 否则运行 (Else - 动作)
If - 条件
(((凶手单位) 的所有者) 的玩家索引号) 大于 2
Then - 动作
如果(所有的条件成立) 则运行 (Then - 动作) 否则运行 (Else - 动作)
If - 条件
KillingN[(((凶手单位) 的所有者) 的玩家索引号)] 小于或等于 0
Then - 动作
设置 KillingN[(((凶手单位) 的所有者) 的玩家索引号)] = 0
Else - 动作
设置 KillingN[(((凶手单位) 的所有者) 的玩家索引号)] = (KillingN[(((凶手单位) 的所有者) 的玩家索引号)] + 50)
如果(所有的条件成立) 则运行 (Then - 动作) 否则运行 (Else - 动作)
If - 条件
(TimerDoubleKill[(((凶手单位) 的所有者) 的玩家索引号)] 的剩余时间) 大于 0.00
Then - 动作
设置 DoubleN[(((凶手单位) 的所有者) 的玩家索引号)] = (DoubleN[(((凶手单位) 的所有者) 的玩家索引号)] + 1)
如果(所有的条件成立) 则运行 (Then - 动作) 否则运行 (Else - 动作)
If - 条件
DoubleN[(((凶手单位) 的所有者) 的玩家索引号)] 等于 1
Then - 动作
游戏 - 对 (所有玩家) 发送显示 30.00 秒的文本信息: ((PlayerColor[(((凶手单位) 的所有者) 的玩家索引号)] + (((凶手单位) 的所有者) 的名字)) + |r完成了一次|cff0000ff双杀|r!)
Else - 动作
游戏 - 对 (所有玩家) 发送显示 30.00 秒的文本信息: ((PlayerColor[(((凶手单位) 的所有者) 的玩家索引号)] + (((凶手单位) 的所有者) 的名字)) + |r完成了一次|CFF7fff7f多杀|R!)
Else - 动作
设置 DoubleN[(((凶手单位) 的所有者) 的玩家索引号)] = 0
设置 Integer = ((250 + KillingN[(((死亡单位) 的所有者) 的玩家索引号)]) + ((((死亡单位) 的英雄等级) - ((凶手单位) 的英雄等级)) x 10))
如果(所有的条件成立) 则运行 (Then - 动作) 否则运行 (Else - 动作)
If - 条件
Integer 小于 0
Then - 动作
游戏 - 对 (所有玩家) 发送显示 30.00 秒的文本信息: ((PlayerColor[(((死亡单位) 的所有者) 的玩家索引号)] + (((死亡单位) 的所有者) 的名字)) + (|r被 + ((PlayerColor[(((凶手单位) 的所有者) 的玩家索引号)] + (((凶手单位) 的所有者) 的名字)) + |r击杀,不过这次
Else - 动作
游戏 - 对 (所有玩家) 发送显示 30.00 秒的文本信息: ((PlayerColor[(((凶手单位) 的所有者) 的玩家索引号)] + (((凶手单位) 的所有者) 的名字)) + (|r推倒了 + ((PlayerColor[(((死亡单位) 的所有者) 的玩家索引号)] + (((死亡单位) 的所有者) 的名字)) + (|r,霸占|cffff
循环动作[循环整数A]从 3 到 12, 运行 (Loop - 动作)
Loop - 动作
如果(所有的条件成立) 则运行 (Then - 动作) 否则运行 (Else - 动作)
If - 条件
(PlayerkillwithGroup[((触发玩家) 的玩家索引号)] 为空) 等于 FALSE
Then - 动作
设置 PlayerKillwithN[(循环整数A)] = (PlayerkillwithGroup[((触发玩家) 的玩家索引号)] 中第一个单位)
单位组 - 把 PlayerKillwithN[(循环整数A)] 从 PlayerkillwithGroup[((触发玩家) 的玩家索引号)] 移除
玩家 - 增加 100 (PlayerKillwithN[(循环整数A)] 的所有者) 的 现有黄金
Else - 动作
游戏 - 对 (所有玩家) 发送文本信息: (<空字符串> + (感谢 + ((((PlayerKillwithN[3] 的所有者) 的名字) + ((PlayerKillwithN[4] 的所有者) 的名字)) + (((PlayerKillwithN[5] 的所有者) 的名字) + (((PlayerKillwithN[6] 的所有者) 的名字) + (((PlayerKillwithN[7] 的所有者
玩家 - 增加 Integer ((凶手单位) 的所有者) 的 现有黄金
玩家 - 增加 (0 - Integer) ((死亡单位) 的所有者) 的 现有黄金
Else - 动作
设置 Integer = (200 + (((死亡单位) 的英雄等级) x 5))
游戏 - 对 (所有玩家) 发送显示 30.00 秒的文本信息: ((PlayerColor[(((死亡单位) 的所有者) 的玩家索引号)] + (((死亡单位) 的所有者) 的名字)) + (|r被 + ((PlayerColor[(((凶手单位) 的所有者) 的玩家索引号)] + (((凶手单位) 的所有者) 的名字)) + (|r推倒并意外怀孕
玩家 - 增加 (0 - Integer) ((死亡单位) 的所有者) 的 现有黄金
如果(所有的条件成立) 则运行 (Then - 动作) 否则运行 (Else - 动作)
If - 条件
(((凶手单位) 的所有者) 的玩家索引号) 等于 2
Then - 动作
玩家组 - 选取 PlayerGroupAllian 内所有玩家 (玩家 - 设置 (选取玩家) 的 现有黄金 为 (((选取玩家) 现有黄金) + (Integer / (PlayerGroupAllian 中的玩家数量))))
Else - 动作
玩家组 - 选取 PlayerGroupHorder 内所有玩家 (玩家 - 设置 (选取玩家) 的 现有黄金 为 (((选取玩家) 现有黄金) + (Integer / (PlayerGroupHorder 中的玩家数量))))
-------- 信仰 --------
如果(所有的条件成立) 则运行 (Then - 动作) 否则运行 (Else - 动作)
If - 条件
((死亡单位) 是 玩家2(蓝色) 的同盟单位) 等于 TRUE
Then - 动作
玩家 - 增加 XinyangIncome 玩家1(红色) 的 现有木材
游戏 - 对 (所有玩家) 发送显示 5.00 秒的文本信息: (博丽神社信仰上升 + ((转换 XinyangIncome 为字符串) + 点))
Else - 动作
玩家 - 增加 XinyangIncome 玩家2(蓝色) 的 现有木材
游戏 - 对 (所有玩家) 发送显示 5.00 秒的文本信息: (泄矢神社信仰上升 + ((转换 XinyangIncome 为字符串) + 点))




Killing with1
事件
条件
((伤害来源) 是 ((触发单位) 的所有者) 的敌对单位) 等于 TRUE
动作
如果(所有的条件成立) 则运行 (Then - 动作) 否则运行 (Else - 动作)
If - 条件
((伤害来源) 在 PlayerkillwithGroup[((触发玩家) 的玩家索引号)] 中) 等于 TRUE
Then - 动作
计时器 - 启动 Playerkillwithtime[((触发玩家) 的玩家索引号)],应用计时方式: 一次性,计时周期为 15.00 秒
触发器 - 为 Killing with2 <预设> 添加事件: (时间 - Playerkillwithtime[((触发玩家) 的玩家索引号)] 到期)
Else - 动作
单位组 - 为 PlayerkillwithGroup[((触发玩家) 的玩家索引号)] 添加 (伤害来源)
计时器 - 启动 Playerkillwithtime[((触发玩家) 的玩家索引号)],应用计时方式: 一次性,计时周期为 15.00 秒
触发器 - 为 Killing with2 <预设> 添加事件: (时间 - Playerkillwithtime[((触发玩家) 的玩家索引号)] 到期)



Killing with2
事件
条件
动作
单位组 - 清空 PlayerkillwithGroup[((触发玩家) 的玩家索引号)] 内所有单位



就是这样,事件是单位受到伤害,是在选英雄的时候为这些触发添加事件的。
然后,杀人没问题,可是助攻出不来哦!而且,多杀、双杀都无效……啊,到底错在哪里呢?
希望高人指点,谢谢了!

该用户从未签到

6

威严

1298

帖子

3955

点数

白玉楼半灵

炮灰敢死队

Rank: 4

积分
2551
发表于 2011-3-30 21:00:49 | 显示全部楼层
呃……一大片……有时间再帮你看看好了……
传说中的骗子和坑王以及受难者
回复

使用道具 举报

该用户从未签到

8

威严

2179

帖子

4216

点数

七彩门番

RULE BREAKER

Rank: 5Rank: 5

积分
3795

永恒の早喵

QQ
 楼主| 发表于 2011-3-31 16:58:15 | 显示全部楼层
谢谢了{:4_139:}
回复

使用道具 举报

该用户从未签到

2

威严

37

帖子

1328

点数

人形

概念「绝对干涉」

Rank: 2

积分
260
发表于 2011-4-7 10:51:29 | 显示全部楼层
强力,技术宅
概念「绝对干涉」
回复

使用道具 举报

该用户从未签到

6

威严

1298

帖子

3955

点数

白玉楼半灵

炮灰敢死队

Rank: 4

积分
2551
发表于 2011-4-7 20:38:38 | 显示全部楼层
其实我的意思就是

“我不会有时间看这么长一大串的东西的”
传说中的骗子和坑王以及受难者
回复

使用道具 举报

该用户从未签到

5

威严

17

帖子

1978

点数

妖精女仆

Rank: 3Rank: 3

积分
900
发表于 2011-5-22 23:46:50 | 显示全部楼层
本帖最后由 _KcN_ 于 2011-5-25 11:53 编辑

我上辈子一定是欠了LZ的 回了这个帖子
直接复制下来没有缩进有木有...
前面无数层的IF嵌套有木有...
还有变量没有说明有木有...
还有这么多东西全写到一个触发里也太乱了吧...回头自己都看不懂的口牙...魂淡...
LZ说双杀3杀跟助攻有问题 其他我就都无视了
于是直接从
If - 条件
(TimerDoubleKill[(((凶手单位) 的所有者) 的玩家索引号)] 的剩余时间) 大于 0.00
这里开始看
后面这里if DoubleN[xxx]==1 双杀 else 3杀 不太对吧
怎么想也要写成 if DoubleN[xxx]==0 什么都不干
else if DoubleN[xxx]==1 双杀
else 3杀
后面这里if TimerDoubleKill[xxx]>0
then 一大堆
else set DoubleN[xxx]= 0
不太行吧
应该写个新触发 TimerDoubleKill[xxx]到期的话就set DoubleN[xxx]= 0 吧

然后是助攻这一段 看了一会发现这是完全坑爹啊...魂淡...
复制的不完全啊... 好多地方丢了好多东西 我勒个去?
于是直接下了个图 拆了J文件 J文件更乱啊有木有?
我大概其看了一下 PlayerKillWithGroup这个单位组应该是选取死亡英雄附近范围内的存活己方英雄的匹配单位吧?
T里面没有写 可能是没复制上
J里面很乱 但是我也没看到有这种倾向的语句啊?
然后后面大概是这个意思吧?
loop A从3到12 (为什么要3-12...)
if PlayerkillwithGroup[xxx]不为空
把PlayerkillwithGroup里的单位一个一个赋给PlayerkillwithN然后从PlayerkillwithGroup里剔除  (这里要先把凶手单位剔除吧...)
然后给PlayerkillwithN数组里的人发钱然后通告表扬
这样助攻大丈夫? 因为具体LZ说的"助攻出不来"到底是怎么个出不来法 到底是怎么个效果我也不知道
不过助攻系统还是直接照搬dota的算了吧...

PS:口胡!
PS:支持原创地图...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|东方幻想乡 ( ICP15046467-1 )

GMT+8, 2024-11-22 00:43 , Processed in 0.061591 second(s), 30 queries .