中国星际RPG联盟

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 3666|回复: 0
打印 上一主题 下一主题

杀敌加钱

[复制链接]
跳转到指定楼层
楼主
发表于 2014-1-15 16:08:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
作者:castelu

杀敌加钱是指每杀死若干个单位,奖励玩家金钱的触发
它是普通触发里一个非常麻烦且历史遗留的问题,主要是因为如果你用
玩家名称 kills 数量类型 数量 单位名称
做条件,会发现动作触发里没有将Kills归0的触发,这与Score和Deaths不同,所以一循环就会产生不停加钱的BUG

要实现杀敌加钱,有下面几种思路,分别列举了它们的优缺点,可以看看

一、穷举法
意思就是不要使用循环触发,根据玩家的杀敌数一条一条地手动写下来,例如:
Current Player kills at least 100 Zergling
Modify resources for Current Player: Add 资源数量 资源类型
Current Player kills at least 200 Zergling
Modify resources for Current Player: Add 资源数量 资源类型
……
这种方法适用于每批量杀敌数是比较大数字的地图,如果是小数字,会累死人,优点是比较精确,缺点是这种方法无法写到无穷大
很多老图中见过这种写法

二、分数法
分数是以前流行的解决杀敌加钱的常用方法
原理是用分数大致代替杀敌数,因为分数是可以在动作触发里设置减少的
星际单位的分数是星际自带的,具体请看帖子:
http://www.scrpg.net/thread-431-1-1.html
分数法的触发写法是
Current Player total score is at least 分数
Modify score for Current Player: Set to 0 total
Modify resources for Current Player: Add 资源数量 资源类型
Preserve trigger
直接用分数代替杀敌数的好处是基本解决了问题,但是存在误差,因为不同单位的分数可能相同,分数与杀敌数不是一一对应的关系

三、分数+Deaths计数+加速触发
这种方法是普通触发下近乎完美的解决方案,老鼠发明的
原理是,排除玩家造兵产生的分数并且在游戏开始将玩家的分数清0以后,当玩家的分数增加时,可以认定玩家杀死了单位
那么具体分数加了多少可以忽略,只要分数增加,就表示玩家有了杀敌数,于是我们写出这样的触发
Current Player total score is at least 1
Modify score for Current Player: Set to 0 total
Modify resources for Current Player: Add 资源数量 资源类型
Preserve trigger
这就表示,玩家至少每杀死1个单位时,增加多少钱
那么,如果要做到每杀死k个单位,如何实现呢
这时用利用Deaths计数的变量属性,于是我们写出这样的触发
触发1(设置Deaths):
Current Player total score is at least 1
Modify score for Current Player: Set to 0 total
Modify death counts for Current Player: Add 1 for 单位名称
Preserve trigger
触发2(使用Deaths):
Current Player has suffered at least 单位数量 deaths of 单位名称
Modify death counts for Current Player: Set to 0 for 单位名称
Modify resources for Current Player: Add 资源数量 资源类型
Preserve trigger
这样做完了以后,还需要加上加速触发,为了防止单位杀敌过快,而触发运行速度跟不上节奏的BUG
同理,如果单位的攻击方式带有AOE的,则这种方法会产生一定的误差
老鼠的解决方法是根据单位分数的分级多写几条触发
比如分数大于10000的写一条,之后再写一条大于5000,再写一条3000,再写最小单位分数的触发。从上到下触发。这样AOE伤害死掉的分数也可以计算进去。如果被杀单位单一的话,可以用它的分数的倍数来写,但还是无法做到完美

四、EUD改分数
在普通触发的范围里,第三种方法应该是近乎完美的方法,而在EUD触发的范围里,也只是简化了第三种方法而已
因为杀敌加钱的难点在于Kills无法归0,那么如果我们用EUD把每个单位的分数改成1,则分数就等于Kills了,这样我们就可以利用分数的归0方法来完美代替Kills
这种方法的缺点是,你要用EUD设置每一个在地图上出现的敌人的分数

演示地图是从staredit上面找来的,据说完美实现了杀敌加钱,你们可以下载来看看

五、EUD设置杀敌数
可以将分数解放出来,同时避免了设置每个敌人的分数
用法:
Comment("", 0, 参数1, 数量, 参数2, 3);
参数1:玩家1=5289164,以后每个玩家按4递增
参数2:设置=0,增加=1,减少=2

Kills to Cash Perfect.scx

46 KB, 下载次数: 2, 下载积分: 水晶 -2 克

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

QQ|网站统计|手机版|小黑屋|中国星际RPG联盟    

GMT+8, 2024-4-29 23:06 , Processed in 1.171875 second(s), 24 queries .

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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