![]() |
|
|
#1 |
|
高级会员
![]() ![]() ![]() ![]()
注册: 07年06月12日
来自: 中国
帖子: 100
声望力: 20
声望:
42
![]() 现金:55两梁山币
资产:763两梁山币
致谢数: 0
获感谢文章数:1
获会员感谢数:1 |
三板斧代码解析(申请加精加声望)
由于叛师后三板斧就不能练了!所以将军府的弟子少了不少!三板斧也成了比较神秘的东西!最近有空,看了一下源码!与大家分享一下!
|
|
|
|
|
|
#2 |
|
高级会员
![]() ![]() ![]() ![]()
注册: 07年06月12日
来自: 中国
帖子: 100
声望力: 20
声望:
42
![]() 现金:55两梁山币
资产:763两梁山币
致谢数: 0
获感谢文章数:1
获会员感谢数:1 |
回复: 三板斧代码解析(申请加精加声望)
首先,我们看看与三板斧相关的变量: int success,hurt,diff,damage; int myexp=(int)me->query("combat_exp")/5000; (自身的武学变量赋值myexp=自身武学/5000) int mylev=(int)me->query_skill("axe"); (自身的等级变量赋值mylev =axe 有效等级) int mystr=(int)me->query("str")+(int)(me->query_skill("unarmed")/10-2); (自身的后天体格变量赋值mystr =(先天体格+(unarmed的有效等级/2-10))) int mykar=(int)me->query_kar(); (自身福缘变量赋值mykar=后天福缘) int targetlev(对方等级), targetstr(对方体格), targetkar(对方福缘),targetexp(对方武学), targeteffkee(对方气血); |
|
|
|
|
|
#3 |
|
高级会员
![]() ![]() ![]() ![]()
注册: 07年06月12日
来自: 中国
帖子: 100
声望力: 20
声望:
42
![]() 现金:55两梁山币
资产:763两梁山币
致谢数: 0
获感谢文章数:1
获会员感谢数:1 |
回复: 三板斧代码解析(申请加精加声望)
其次,再来看看三板斧使出后打中与打不中的分别描述: string *hitone = ({ "$n试图侧身避开,但为时已晚。大斧劈在肩上,留下一道深可见骨的伤口!\n", "$n高举手中兵刃试图架开,但挡不住$N的来势,被震得吐出一口鲜血!\n", "$n以攻为守,但去势不够凌厉。虽逼得$N回斧自护,但还是在$n肩膀带出一道伤口。\n",}); (第一招打中对方的描述) string *missone = ({ "$n轻轻一闪,大斧带着一阵劲风从身边斩下,但没伤到$n分毫。\n", "$n高举手中兵刃奋力一架,只听「当」的一声巨响,"$n巨斧已被弹开!\n", "$n不顾大斧来势,反而向$N疾攻,逼得$N不得不回斧自保, 这一势「开瓜」就此落空。\n", }); (第一招打不中对方的描述) string *hittwo = ({ "$n似乎没有觉出危险,顺手一挡。待到发觉来势之疾, 为时已晚。脸上已多了一条数寸长的伤口!\n", "$n没想道$N攻势如此之快,急忙低头闪避, 但无法躲开,被刀刃划得皮开肉绽!\n", "$n攻势已然发出,来不及回防,脸上被割掉一片皮,显然伤得不轻!\n", }); (第二招打中对方的描述) string *misstwo = ({ "$n脑袋微微一侧,避过了$N的攻势。\n", "$n似乎早已料到这一招,顺势在斧杆上一推,避了开去。\n", "眼看这招要把$n脑袋戳个对穿,突然间$n使个铁板桥,护手刀落了个空。\n", }); (第二招打不中对方的描述) string *hitthree = ({ "$n似乎已被这三斧连环的威势吓破了胆,懒懒散散地一歪,被大斧横劈在肩头。\n", "$n看准来势,以手中兵器架去,但已力不从心,被斧头震得虎口出血,显然内伤不轻!\n", "$n眼见来势凌厉,企图低头避过,但不料大斧随着下劈,从$n背上割下一大片皮肉!\n",}); (第三招打中对方的描述) string *missthree = ({ "$n似乎早已熟知大斧来路,斧未到,人已先轻飘飘地避开了。\n", "$n眼见躲不过来招,急忙在地上一滚。虽然避得狼狈,但丝毫没有受伤。\n", "$n不顾自身危险,中宫直进,向$N攻去,果然将来招化解了。\n",}); (第三招打不中对方的描述) string *hit=({ RED"$N道:也叫你尝尝这无敌三板斧的厉害!\n"NOR, RED"这无敌三板斧一气呵成,$n被攻了个措手不及,伤势甚为可怕!\n"NOR, RED"$N狂笑道:就凭你这点本事,也来跟我斗?\n"NOR,}); (打中对方的描述) |
|
|
|
|
|
#4 |
|
高级会员
![]() ![]() ![]() ![]()
注册: 07年06月12日
来自: 中国
帖子: 100
声望力: 20
声望:
42
![]() 现金:55两梁山币
资产:763两梁山币
致谢数: 0
获感谢文章数:1
获会员感谢数:1 |
回复: 三板斧代码解析(申请加精加声望)
再来看看打出三板斧的条件: if((string)me->query_skill_mapped("force")!="lengquan-force") return notify_fail("无敌三板斧必须以冷泉神功为底子。\n"); (使用三板斧必须要求enable force lengquan-force) if(me->query_skill("lengquan-force",1) < 100) return notify_fail("你的内功底子不足,无法运斧如风,施展不出无敌三板斧。\n"); (使用三板斧lengquan-force级别必须要大于100) if(me->query_skill("sanban-axe",1)<100) return notify_fail("你对宣花三斧不够熟悉,无法一气呵成地使出!\n"); (使用三板斧sanban-axe级别必须要大于100) if(me->query("max_force") < 1000 || me->query("force")<500) return notify_fail("你的内力不足,难以随意挥动一柄大斧。\n"); (使用三板斧内力要求左右两项必须各要大于1000/500) |
|
|
|
|
|
#5 |
|
高级会员
![]() ![]() ![]() ![]()
注册: 07年06月12日
来自: 中国
帖子: 100
声望力: 20
声望:
42
![]() 现金:55两梁山币
资产:763两梁山币
致谢数: 0
获感谢文章数:1
获会员感谢数:1 |
回复: 三板斧代码解析(申请加精加声望)
你一声暴喝:开瓜!剔牙!掏耳朵!三招一气呵成! 多酷的pfm 啊! 十几年前我玩451的时候, 就有个牛人用ji rain seal + pfm sanban 把我们当时站上所有的其他牛人都pk了一遍从此我们所有人都开始迷上了三板斧: 三板的命中率和sanban-axe 肯定有有关的。但具体关系是什么呢? 让我们看看pfm sanban 命中率的计算。 if( random(mylev+targetlev+mystr*3+targetstr*3) > (targetlev+targetstr*3)) {msg += hitone[random(sizeof(hitone))];success+=1; if(random(mykar+targetkar)>targetkar) hurt+=1;damage=15+random(mykar/3);} else msg+=missone[random(sizeof(missone))]; msg+=CYN"\n$N大斧已经带过,顺势以斧尾护手尖刀疾挑$n面门!\n"NOR; (第一板命中比axe有效等级和后天体格以及对方parry的有效等级;伤害程度比福缘) if( random(myexp+targetexp+mylev+targetlev) > (targetexp+targetlev)) {msg += hittwo[random(sizeof(hittwo))];success+=1; if(random(mykar+targetkar)>targetkar) hurt+=1; damage+=15+random(mykar/3);} else msg+=misstwo[random(sizeof(misstwo))]; msg+=CYN"\n$N迅疾无伦地翻转斧头,大斧向$n脑袋横劈过去!\n"NOR; (第二板命中比武学和axe有效等级以及对方parry的有效等级;伤害程度仍然比福缘) if(random(myexp+targetexp+mykar*10+targetkar*10)>(targetexp+targetkar)) {msg+=hitthree[random(sizeof(hitthree))];success+=1; if(random(mykar+targetkar)>targetkar) hurt+=1; damage+=15+random(mykar/3); } else msg+=missthree[random(sizeof(missthree))]; (第三板命中比武学和福缘;伤害比福缘) |
|
|
|
|
|
#6 |
|
高级会员
![]() ![]() ![]() ![]()
注册: 07年06月12日
来自: 中国
帖子: 100
声望力: 20
声望:
42
![]() 现金:55两梁山币
资产:763两梁山币
致谢数: 0
获感谢文章数:1
获会员感谢数:1 |
回复: 三板斧代码解析(申请加精加声望)
最后,看看使出三板斧后对自己的影响: 一方面是对自己气血的影响: diff=3-success; if (diff<0) diff = 0; if (success) hurt=damage*hurt/success; (伤害的计算) else hurt=0; me->add("force", -(150*success+70*diff)); targeteffkee=(int)target->query("eff_kee");(气血上限) target->receive_wound("kee", targeteffkee*hurt/100); target->receive_damage("kee", target->query("kee")*(damage-hurt)/100); (如果打中对方3下,自己内力减150*3+70*0=450; 如果打中对方2下,自己内力减150*2+70*1=370; 如果打中对方1下,自己内力减150*1+70*2=290) 另一方面:看看busy 的影响 if(success) {me->start_busy(1+random(4-(mykar+5)/10)); msg+=hit[random(sizeof(hit))]; } (如果后天福缘为40,打中对方的话,自己busy=1+(4-(40+5)/10))=0.95秒以下,随机) else {me->start_busy(random(4-(mykar+5)/10)); (如果后天福缘为40,打不中的话,自己busy=4-(40+5)/10=-0.5, 福缘高了以后基本不会busy) |
|
|
|
|
感谢 sky_yhm 此篇文章之用户: |
晴月 (2012-02-05) |
|
|
#7 |
|
高级会员
![]() ![]() ![]() ![]()
注册: 07年06月12日
来自: 中国
帖子: 100
声望力: 20
声望:
42
![]() 现金:55两梁山币
资产:763两梁山币
致谢数: 0
获感谢文章数:1
获会员感谢数:1 |
回复: 三板斧代码解析(申请加精加声望)
完毕!!!!!!!!!!!
|
|
|
|
|
|
#8 |
|
高级会员
![]() ![]() ![]()
注册: 11年12月29日
来自: 笑傲西游
帖子: 134
声望力: 16
声望:
50
![]() 现金:48两梁山币
资产:448两梁山币
致谢数: 0
获感谢文章数:0
获会员感谢数:0 |
回复: 三板斧代码解析(申请加精加声望)
谢谢分项 虽没学到三板 但看看也过瘾
|
|
|