找回密码
 注册
搜索
查看: 834|回复: 11

SX2选择的混合逻辑判断

[复制链接]
门派:不明
发表于 2011-1-12 11:08:23 | 显示全部楼层 |阅读模式
现在大家通用的robot对于SX2的选择不知道和我以前用的是不是一样
先是选择任务难度,比如做到“极其厉害”或“颇为了得”,或者通杀
再是设置放弃列表,比如天山杖法放弃、盘根错节斧放弃、打狗棒法放弃等等
这样的双重判断虽然看起来够严密,其实真跑起来会发现不尽人意
这2重逻辑判断象2个筛子一样分别过滤,只有2个条件都通过的对象才去做
漏洞在于,其实你放弃列表里的对象在job难度不高的时候是干的过的
比如盘根错节斧虽然猛,但如果对手只是马马虎虎的程度,多半还是弄的过的
但由于盘根错节斧出现在你的放弃列表里,所以不论多高难度,都见了就跑
这样就把本来不用放弃的对手也放弃了,出于安全考虑,有些人的放弃列表甚至会很多
反过来,出于挂机效率考虑,如果放弃列表少,那么有些本来杀起来危险性很大的JOB也在拼了命做

我昨天花了4个多小时,开发了一个全新的SX2混合逻辑判断系统
将任务难度和对手skill综合判断考虑,做到具体情况具体分析
不仅杜绝了漏杀,而且也避免了打不过硬打的危险局面

判断思路是这样的:
第一步
设置一个全新的变量,比如叫"lev",该变量用于附值每个任务的不同难度水平
使每个难度水平都和一个固定的数值一一对应
触发句型:^???在你的耳边悄声说道:可能有个武功和你相比(%x)的家伙要来抢(这是接到SX2时NPC给你的提示)
指令行:#if (%ismember(@panduan,微不足道)) {lev=1}
@panduan是我自己用的机器里用于抓取触发句中(%x)这一函数的变量,对应的是从“微不足道”到“已入化境”这7个难度等级的描述,#if后面那些是一个判断公式,这句指令的意思就是当抓取到的描述是“微不足道”时,变量lev附值1
同理,将所有7个难度等级分别用lev进行附值为1-7,整理如下:
微不足道 lev=1
马马虎虎 lev=2
小有所成 lev=3
融会贯通 lev=4
颇为了得 lev=5
极其厉害 lev=6
已入化境 lev=7
先吃饭去,剩下的后面再写上来

评分

1

查看全部评分

门派:不明
发表于 2011-1-12 11:12:12 | 显示全部楼层
gaoxin之后又一机器人高手就这样诞生在慕容世家
门派:不明
发表于 2011-1-12 11:31:05 | 显示全部楼层
不错 楼主有心了 我慕容人才济济啊
门派:不明
 楼主| 发表于 2011-1-12 13:05:19 | 显示全部楼层

继续

第二步
设置一个全新的变量,比如叫"level",该变量用于附值不同警戒级别的放弃列表
使每个列表对应一个具体的固定数值
触发句型:^{> 你|你}定睛一看,原来是(%x),而且此人(%x),似乎用的是%x的(%x)!
指令行:sx2_skills=%3;#if (%ismember(@sx2_skills,天山杖法)) {sx2_lihai=1};#if (%ismember(@sx2_skills,@sx2pfmcancel)) {level=6}
@sx2_skills是个变量,用于抓取当前SX2杀手使用的具体skill,,@sx2pfmcancel变量是我用来储存最高警戒级别的放弃列表,对应这个放弃列表的@level变量附值为6(为什么是6下文会解释),@sx2_lihai变量相当于一个开关,用于判断这次job是继续战斗还是马上跑路
对于这句指令的具体解读就是:killer来了之后马上抓取他的skill,然后和你的各项预设值进行比对,如果对手skill是天山杖法,则战斗开关设为关闭,马上halt逃跑,如果对手的skill存在于你的最高警戒级别列表,则变量level附值6
同理,可以设置第二甚至第三个警戒列表,比如叫做“sx2pfmcancel2”和“sx2pfmcancel3”,用于储存你认为比较难对付和稍微有点危险的对手skill
比如sx2pfmcancel2设置为裂天斧、嵩山剑法、慕容刀法等,将其附值为5
而sx2pfmcancel3设置为玉箫剑法、玄铁剑法等,附值为4

第三步
以上2步的目的是分别对每一次具体Job的难度等级和对手所用的skill进行附值
第三步就是要把这2个判断结合到一起进行计算
设置一个新变量,比如叫“sx2nandu”,用于记录最终的难度计算结果
#math sx2nandu (@lev+@level);#if @sx2nandu>10 {sx2lihai=1}
这句指令的解读就是,将变量lev的值和变量level的值相加,使其成为变量sx2nandu的值,如果该值大于10,则战斗开关设为关闭,马上halt跑路
那么回过头来解释最高警戒列表的level值设置为6的意思就是,如果对手的skill存在于该列表,且武功水平达到颇为了得或以上级别,则该对象的综合难度系数超过10,属于需要放弃之列,同理level附值5的列表就是,该类对象如果难度为颇为了得及以下水平时则打,难度达到极其厉害或以上时则跑

评分

1

查看全部评分

门派:不明
发表于 2011-1-12 13:07:15 | 显示全部楼层
mymud上有这种robot,每种武功按照难度判断做还是跑
门派:不明
 楼主| 发表于 2011-1-12 13:27:01 | 显示全部楼层
[quote]13:12:40 【开始挑战】【颇为了得】使用【圣火令法】的【罗夹谷】
13:12:44 【挑战成功】 任务难度系数【10】,耗时【4】秒

13:27:13 【开始挑战】【极其厉害】使用【无上大力杵】的【庞柏后商】
13:27:27 【挑战成功】 任务难度系数【9】,耗时【14】秒
[/quote]
门派:不明
发表于 2011-1-12 13:38:33 | 显示全部楼层
已经做出来啦,高手啊            
门派:不明
发表于 2011-1-12 13:40:23 | 显示全部楼层
好帖!一定要顶起来!
鹰版、灿版,上元宝!!!
门派:不明
发表于 2011-1-12 14:13:43 | 显示全部楼层
原帖由 ttnan@ts 于 2011-1-12 13:05 发表
第二步
设置一个全新的变量,比如叫"level",该变量用于附值不同警戒级别的放弃列表
使每个列表对应一个具体的固定数值
触发句型:^{> 你|你}定睛一看,原来是(%x),而且此人(%x),似乎用的是%x的(%x)!
指令行: ...



太高科技了
这样的帖子要顶
门派:不明
发表于 2011-1-12 14:39:46 | 显示全部楼层
我慕容人才济济,可喜可贺,
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|书剑永恒MUD ( 闽ICP备14012032号|闽公网安备 35050202000162号 )

GMT+8, 2025-7-26 08:46 , Processed in 0.070254 second(s), 30 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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