铁血丹心

 找回密码
 我要成为铁血侠客
搜索
查看: 1887|回复: 4

[问题求助] 衡山剑法hengshan-sword的代码中特功判断的问题!

[复制链接]
发表于 2010-2-3 09:26 | 显示全部楼层 |阅读模式

马上注册,结交更多侠友!

您需要 登录 才可以下载或查看,没有账号?我要成为铁血侠客

x
请看特功的这一段代码
mixed hit_ob(object me, object victim,int damage_bonus)
        
{        
        int i, level;
        object target;
object weapon;
        level   = (int) me->query_skill("hengshan-sword",1);
//        target = me->select_opponent();
        weapon = me->query_temp("weapon");

        if( random(12)==1 || random(level) > 180)
        {
        if (userp(victim))
        victim->receive_wound("qi", (damage_bonus+level+100) );        
        return HIY "「云雾十三式!!」寒光陡闪,$N猛地反刺中了$n。\n" NOR;
        }
if (damage_bonus < 60) damage_bonus=60;
        if( random(12)==1 || random(level) > 120)
        {

        victim->receive_wound("qi", damage_bonus );        
        return RED "$N手中的剑越使越快,如梦如幻! 一股鲜血从$n的身上刺出 !\n" NOR;
  }
}

第一种情况的判断有问题:
if( random(12)==1 || random(level) > 180)
        {
        if (userp(victim))
        victim->receive_wound("qi", (damage_bonus+level+100) );        
        return HIY "「云雾十三式!!」寒光陡闪,$N猛地反刺中了$n。\n" NOR;
        }
如果对手不是玩家,还是会有信息return HIY "「云雾十三式!!」寒光陡闪,$N猛地反刺中了$n。\n" NOR返回,但是却没有造成任何伤害,还不会继续作后面的判断就返回了。
是否应该加上一对括号如下面:
if( random(12)==1 || random(level) > 180)
        {
        if (userp(victim))
        {
              victim->receive_wound("qi", (damage_bonus+level+100) );        
              return HIY "「云雾十三式!!」寒光陡闪,$N猛地反刺中了$n。\n" NOR;
        }
         }
令到,如果对方不是玩家,就继续下面的判断,让后面的特功有可能发挥功效!
因为实际使用过程中老是出了第一种特功的信息,却没有造成任何的伤害!

[发帖际遇]: 玲芸在高昌迷宫中迷路,花费银两11向李文秀问路。
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2010-2-3 18:25 | 显示全部楼层
虽然看不懂。。但是帮顶,个人还是很喜欢莫大和衡山剑法的

[发帖际遇]: 发现闯王宝藏后,侥幸躲过了“雪山飞狐”,罗罗诺亚九死一生揣了几块金银逃下山,赚了银两10两。
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2010-2-4 12:14 | 显示全部楼层
return HIY "「云雾十三式!!」寒光陡闪,$N猛地反刺中了$n。\n" NOR; 后面就终止了额。

[发帖际遇]: hxsd在老顽童处骗取《养蜂秘法》,翻印成《如何饲养文化型蜜蜂》出版后获利银两19。
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2010-2-4 16:03 | 显示全部楼层
原帖由 hxsd 于 2010-2-4 12:14 发表
return HIY "「云雾十三式!!」寒光陡闪,$N猛地反刺中了$n。\n" NOR; 后面就终止了额。


问题就出在这里了!
看代码:if( random(12)==1 || random(level) > 180)
        {
        if (userp(victim))
        victim->receive_wound("qi", (damage_bonus+level+100) );        
        return HIY "「云雾十三式!!」寒光陡闪,$N猛地反刺中了$n。\n" NOR;
        }

如果用来打npc时,
if (userp(victim))   不成立,victim->receive_wound("qi", (damage_bonus+level+100) ); 不会生效,
但是return HIY "「云雾十三式!!」寒光陡闪,$N猛地反刺中了$n。\n" NOR;却不受if (userp(victim))不成立的影响,返回信息的同时,令到特功判断函数结束。

由于这个判断在前,令到打npc时,特别是级数练高之后,往往就会返回HIY "「云雾十三式!!」寒光陡闪,$N猛地反刺中了$n。\n" NOR
而实际上,并没有造成特功伤害!而且特功判断因此结束,后面的非玩家判断的特功
if (damage_bonus < 60) damage_bonus=60;
        if( random(12)==1 || random(level) > 120)
        {

        victim->receive_wound("qi", damage_bonus );        
        return RED "$N手中的剑越使越快,如梦如幻! 一股鲜血从$n的身上刺出 !\n" NOR;
  }
没法生效!

所以希望能加一对括号,令到if (userp(victim))不成立时,HIY "「云雾十三式!!」寒光陡闪,$N猛地反刺中了$n。\n" NOR也不会生效,就能继续后面的特功判断!
或者直接去掉if (userp(victim))的判断更好!嘿嘿!

[发帖际遇]: 与韦小宝赌骰子,韦小宝出老千,被玲芸发现,韦小宝为了堵住他的嘴赠送银两24两。
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2010-2-5 09:17 | 显示全部楼层
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。

本版积分规则

小黑屋|手机版|铁血丹心

GMT+8, 2024-5-17 11:18

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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