铁血丹心

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

如何让主角突破生命上限

[复制链接]
发表于 2012-1-20 13:53 | 显示全部楼层 |阅读模式

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

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

x
每次那个苦逼历程啊!伤不起。
龙人和至尊版也下来玩过,都好难,只好试着翻下教程自已DIY。想把主角的血量也改也和NPC一样的2000下。请问如何才能办到?
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-1-20 16:05 | 显示全部楼层
CC.PersonAttribMax["生命最大值"]=2000; ---定义人物生命值的最大硬上限
JY.Person[0]["生命最大值"]=2000   ----猪脚生命上限
DIY才有用~

点评

看不太懂啊 还是没找到 怎么改生命最大值啊!  而且 我想改的是国庆版!    发表于 2012-1-29 12:35
去看看S大最新发布的源码版吧。里面有需要的~  发表于 2012-1-29 12:26
不行啊! 打完仗就跳出!  发表于 2012-1-29 11:53
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2012-1-20 16:34 | 显示全部楼层
回复 欲望魔鬼 的帖子

试过了,完全可行,多谢了。

点评

国庆版肯定可行,关键是要去验证的  发表于 2012-1-29 13:43
我试过了 在龙人版里 可以 国庆版里就不行  发表于 2012-1-29 13:38
完全不懂!   发表于 2012-1-29 13:38
那个是因为有生命最大值的验证,你可以用去验证的苍炎源码版试试就知道了  发表于 2012-1-29 13:28
我试了 不行啊 战斗结束后 就退出游戏!  发表于 2012-1-29 11:54
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-1-27 22:48 | 显示全部楼层
回复 欲望魔鬼 的帖子

内力怎样可以无视资质呢?
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-1-28 12:10 | 显示全部楼层
需要重新定义 AddPersonAttrib = function(id, str, value)
你下载个027的苍半代码里搜索这个函数,能看到~
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-1-28 13:59 | 显示全部楼层
回复 欲望魔鬼 的帖子

是哪个源码版吗?
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-1-29 12:28 | 显示全部楼层
AddPersonAttrib = function(id, str, value)

  local oldvalue = JY.Person[id][str]
  local attribmax = math.huge

  if str == "生命" then
    attribmax = JY.Person[id]["生命最大值"]
  elseif str == "内力" then
    attribmax = JY.Person[id]["内力最大值"]
  elseif CC.PersonAttribMax[str] ~= nil then
                attribmax = CC.PersonAttribMax[str]
        end

        if str == "内力最大值" then
                local nlmax = math.modf((JY.Person[id]["资质"] - 1) / 15)         --这里
                attribmax = 10000 - nlmax * 750

                for i = 1, 10 do
                        if JY.Person[id]["武功" .. i] == 85 or JY.Person[id]["武功" .. i] == 88 then
                                attribmax = attribmax + 750
                        end
                end
                                for i = 1, 10 do
                        if JY.Person[id]["武功" .. i] == 106 or JY.Person[id]["武功" .. i] == 107 or JY.Person[id]["武功" .. i] == 108 then
                                attribmax = attribmax + 750
                        end
                end

                if T1LEQ(id) or id == 53 then
                        attribmax = 10000
                end

                if id == 58 then
                        attribmax = attribmax + JY.Person[300]["声望"] * 200
                end

                if attribmax < 1000 then
                        attribmax = 1000
                end
                if attribmax > 10000 then
                        attribmax = 10000
                end
        end

        if str == "用毒能力" and id == 2 then
    attribmax = 500
        end
        if str == "用毒能力" and (id == 25 or id == 83 or id == 17) then
                attribmax = 400
        end
        if str == "医疗能力" and (id == 16 or id == 28 or id == 45) then
                attribmax = 500
        end
        if str == "医疗能力" and (id == 85 or id == 2) then                -- 加入灵素
                attribmax = 500
        end

  if id == 0 and (str == "医疗能力" or str == "用毒能力" or str == "解毒能力") then
    attribmax = 500
  end

  local newvalue = limitX(oldvalue + value, 0, attribmax)
  JY.Person[id][str] = newvalue
  local add = newvalue - oldvalue
  local showstr = ""
  if add > 0 then
    showstr = string.format("%s 增加 %d", str, add)
  elseif add < 0 then
    showstr = string.format("%s 减少 %d", str, -add)
  end
  return add, showstr
end

点评

试过了啊 还是不行啊! 具体怎么操作的!  发表于 2012-1-29 21:44
你把源码版的warendperson*函数复制到国庆版的DIY文件里,就可以了  发表于 2012-1-29 19:44
国庆版一改就跳出的,龙人版没事,不知道怎么回事~  发表于 2012-1-29 13:58
请问高人  国庆的 血量上限2000的 代码能否给一下!  发表于 2012-1-29 13:20
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-1-29 21:45 | 显示全部楼层
War_EndPersonData(isexp,warStatus);    --战斗后设置人物参数

    lib.ShowSlow(50,1);

    if JY.Scene[JY.SubScene]["进门音乐"]>=0 then
        PlayMIDI(JY.Scene[JY.SubScene]["进门音乐"]);
    else
        PlayMIDI(0);
    end


是复制这段吗?  复制到哪里啊

点评

错了 是这段 老长了 function War_EndPersonData(isexp,warStatus) --战斗以后设置人物参数 --敌方人员参数恢复 for i=0,WAR.PersonNum-1 do local pid=WAR.Person[i]["人物编号   发表于 2012-1-29 22:08
我会了! 是这段 复制! dofile ".\\script\\CC.PersonAttribMax.lua";  发表于 2012-1-29 22:07
你DIY2001的时候,总有添加代码的文件吧,就是那个文件  发表于 2012-1-29 22:03
就是这个函数,复制到你2001的DIY文件里就行  发表于 2012-1-29 22:01
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-1-29 22:09 | 显示全部楼层
function War_EndPersonData(isexp,warStatus)            --战斗以后设置人物参数
--敌方人员参数恢复
    for i=0,WAR.PersonNum-1 do
        local pid=WAR.Person[i]["人物编号"]
        if not instruct_16(pid) then
            JY.Person[pid]["生命"]=JY.Person[pid]["生命最大值"];
            JY.Person[pid]["内力"]=JY.Person[pid]["内力最大值"];
            JY.Person[pid]["体力"]=CC.PersonAttribMax["体力"];
            JY.Person[pid]["受伤程度"]=0;
            JY.Person[pid]["中毒程度"]=0;
        end
    end

    --我方人员参数恢复,输赢都有
    for i=0,WAR.PersonNum-1 do
        local pid=WAR.Person[i]["人物编号"]
        if instruct_16(pid) then
                        if warStatus==1 then
                                JY.Person[pid]["生命"]=JY.Person[pid]["生命"]+math.modf((JY.Person[pid]["生命最大值"]-JY.Person[pid]["生命"])*0.3)
                                JY.Person[pid]["内力"]=JY.Person[pid]["内力"]+math.modf((JY.Person[pid]["内力最大值"]-JY.Person[pid]["内力"])*0.3)
                                JY.Person[pid]["体力"]=JY.Person[pid]["体力"]+math.modf((100-JY.Person[pid]["体力"])*0.3)
                                JY.Person[pid]["受伤程度"]=math.modf(JY.Person[pid]["受伤程度"]/2)
                                JY.Person[pid]["中毒程度"]=math.modf(JY.Person[pid]["中毒程度"]/2)
                        else
                                if JY.Person[pid]["生命"]<JY.Person[pid]["生命最大值"]/4 then
                                        JY.Person[pid]["生命"]=math.modf(JY.Person[pid]["生命最大值"]/4);
                                end
                                if JY.Person[pid]["体力"]<10 then
                                        JY.Person[pid]["体力"]=10 ;
                                end                               
                        end
        end
    end
   
        JY.Person[50]["武功1"]=26
        JY.Wugong[13]["名称"]="铁掌"
         
        if WAR.ZDDH==82 then SetS(10,0,18,0,1) end          
        if WAR.ZDDH==217 and warStatus==1 then SetS(10,0,16,0,1) end
        if WAR.ZDDH==44 then
               instruct_3(55,6,1,0,0,0,0,-2,-2,-2,0,-2,-2)
                instruct_3(55,7,1,0,0,0,0,-2,-2,-2,0,-2,-2)
        end
        if WAR.ZDDH==45 then instruct_3(55,9,1,0,0,0,0,-2,-2,-2,0,-2,-2) end
        if WAR.ZDDH==46 then instruct_3(55,13,0,0,0,0,0,-2,-2,-2,0,-2,-2) end  
       
        --[[for i=0,190 do
              if JY.Person[i]["代号"]~=i then
                     say(CC.EXITSAY)
                         JY.Status=GANE_END
                  end
        end]]
       
    if warStatus==2 and isexp==0 then  --输,没有经验,退出
        return ;
    end

    local liveNum=0;          --计算我方活着的人数
    for i=0,WAR.PersonNum-1 do
        if WAR.Person[i]["我方"]==true and JY.Person[WAR.Person[i]["人物编号"]]["生命"]>0  then
            liveNum=liveNum+1;
        end
    end
    local canyu=false;
    --分配战斗经验---基本经验,战斗数据中的
    if warStatus==1 then     --赢了才有
          if WAR.Data["经验"]<1000 then WAR.Data["经验"]=1000 end
          --if WAR.Data["代号"]==226 then WAR.Data["经验"]=10000 end
        for i=0,WAR.PersonNum-1 do
            local pid=WAR.Person[i]["人物编号"]
            if WAR.Person[i]["我方"]==true and inteam(pid) then
                if JY.Person[pid]["生命"]>0 then
                                        if pid==0 then
                                                canyu=true;
                                        end
                                        for ii=1,10 do
                                           if JY.Person[pid]["武功"..ii]==98 then
                          WAR.Person[i]["经验"]=WAR.Person[i]["经验"] + math.modf(WAR.Data["经验"]*1.5/liveNum);
                                           end
                                        end     
                                              WAR.Person[i]["经验"]=WAR.Person[i]["经验"] + math.modf(WAR.Data["经验"]/liveNum)
                                       
                end
            end
        end
    end


    --每个人经验增加,以及升级 XLDS
    for i=0,WAR.PersonNum-1 do
        local pid=WAR.Person[i]["人物编号"];
        AddPersonAttrib(pid,"物品修炼点数",math.modf(WAR.Person[i]["经验"]*8/10));
        AddPersonAttrib(pid,"修炼点数",math.modf(WAR.Person[i]["经验"]*8/10));
        if JY.Person[pid]["修炼点数"]<0 then JY.Person[pid]["修炼点数"]=0 end
          
        if WAR.Person[i]["我方"]==true and inteam(pid) then

            DrawStrBoxWaitKey( string.format(CC.WARS124,JY.Person[pid]["姓名"],WAR.Person[i]["经验"]),C_WHITE,CC.DefaultFont);
                        AddPersonAttrib(pid,"经验",math.modf(WAR.Person[i]["经验"]/2));

                        local r=War_AddPersonLVUP(pid);     --人物升级

                        if r==true then
                                DrawStrBoxWaitKey( string.format(CC.WARS125,JY.Person[pid]["姓名"]),C_WHITE,CC.DefaultFont);
                        end
                else                       
                        AddPersonAttrib(pid,"经验",WAR.Person[i]["经验"]);
        end

        War_PersonTrainBook(pid);            --修炼秘籍
        War_PersonTrainDrug(pid);            --修炼药品
    end
        --[[if warStatus==1 and canyu and JY.Person[0]["经验"]==60000 and JY.Person[0]["武功1"]<109 and JY.Person[0]["武功7"]>0 then
                CreatKf(WAR.Data["经验"]/100);
        end]]--
        if WAR.ZDDH==48 then
           SetS(57,52,29,1,0)
       SetS(57,52,30,1,0)
    elseif WAR.ZDDH==175 then
           instruct_3(32,12,1,0,0,0,0,0,0,0,-2,-2,-2);
        --elseif WAR.ZDDH==217 then
           --SetS(10,0,16,0,1)
        elseif WAR.ZDDH==82 then          
           SetS(10,0,18,0,1)
        elseif WAR.ZDDH==214 then
           SetS(10,0,19,0,1)
        end
       
        if WAR.ZDDH==217 and warStatus==1 then
            SetS(65,1,1,5,517)
        end
end

function War_AddPersonLVUP(pid)      --人物是否升级 Level
--人物是否升级
--pid 人id
--返回 true 升级,false不升级
    local tmplevel=JY.Person[pid]["等级"];
    if tmplevel>=CC.Level then     --级别到顶
        return false;
    end

    if JY.Person[pid]["经验"]<CC.Exp[tmplevel] then     --经验不够升级
        return false
    end

    while true do          --判断可以升几级
        if tmplevel >= CC.Level then
            break;
        end
        if JY.Person[pid]["经验"]>=CC.Exp[tmplevel] then
                        --JY.Person[pid]["经验"]=JY.Person[pid]["经验"]-CC.Exp[tmplevel]
            tmplevel=tmplevel+1;
        else
            break;
        end
    end
    local leveladd=tmplevel-JY.Person[pid]["等级"];   --升级次数
    JY.Person[pid]["等级"]=JY.Person[pid]["等级"]+leveladd;
    AddPersonAttrib(pid,"生命最大值", (JY.Person[pid]["生命增长"]+Rnd(3))*leveladd*3);
    JY.Person[pid]["生命"]=JY.Person[pid]["生命最大值"];
    JY.Person[pid]["体力"]=CC.PersonAttribMax["体力"];
    JY.Person[pid]["受伤程度"]=0;
    JY.Person[pid]["中毒程度"]=0;

    local function cleveradd()
                local ca
                local rndnum;
                if CC.Debug then
                        rndnum=math.random(1);
                else
                        rndnum=math.random(1);
                end
                --if JY.Person[pid]["资质"]>100 then JY.Person[pid]["资质"]=100 end
                --ca=JY.Person[pid]["资质"]+Rnd(120-JY.Person[pid]["资质"]);
                ca=JY.Person[pid]["资质"]/(rndnum+4);
                --ca=ca/7
                return ca
        end
       
        local function mymodf(x)
                local x1=math.modf(x)
                if math.random()<x-x1 then return x1
                else return x1 end
        end
        --[[
    if JY.Person[pid]["资质"]<30 then
        cleveradd=1+Rnd(15);
    elseif JY.Person[pid]["资质"]<50 then
        cleveradd=2+Rnd(6);
    elseif JY.Person[pid]["资质"]<70 then
        cleveradd=3+Rnd(5);
    elseif JY.Person[pid]["资质"]<90 then
        cleveradd=4+Rnd(4);
    else
        cleveradd=5+Rnd(3);
    end
        ]]--
    --cleveradd=Rnd(cleveradd)+1;        --按照资质计算的增长点,越高则技能增加越多,而内力增加越少。
        local theadd=cleveradd()
    AddPersonAttrib(pid,"内力最大值",  math.modf(leveladd*((10-JY.Person[pid]["生命增长"])*7+210/(theadd+1))));   --聪明人不练内力
    if pid==0 and GetS(4,5,5,5)==5 then
           AddPersonAttrib(pid,"内力最大值",50*leveladd)
        end
        JY.Person[pid]["内力"]=JY.Person[pid]["内力最大值"];

        --local totaladd=3*leveladd;
        
        for i=1,leveladd do       
                local ups=math.modf((JY.Person[pid]["资质"]-1)/15)+1;

                        if pid==35 and GetD(82,1,0)==1 then  --TLV
                           ups=3
                        end
               
                        if pid==55 and JY.Person[pid]["等级"]>20 then
                           ups=6
                        end
                       
                        if T1LEQ(pid) then ups=8 end
                       
                if JY.Thing[202][WZ7]==2 then ups=ups+1 end
                if JY.Thing[202][WZ7]==3 then ups=ups+2 end
               
        AddPersonAttrib(pid,"攻击力",ups);
        AddPersonAttrib(pid,"防御力",ups);
        AddPersonAttrib(pid,"轻功",ups);
               
                local a1=JY.Person[pid]['攻击力'];
                local a2=JY.Person[pid]['防御力'];
                local a3=JY.Person[pid]['轻功'];
                local a4='攻击力'
               
                if a2>=a1 and a2>=a3 then a4='防御力' end
                if a3>=a2 and a3>=a1 then a4='轻功' end
               
                AddPersonAttrib(pid,a4,1);
               
                if JY.Thing[202][WZ7]>1 then
                        local ran=math.random(3);
                        if ran==1 then
                           AddPersonAttrib(pid,"攻击力",1);
                        elseif ran==2 then
                           AddPersonAttrib(pid,"防御力",1);
                        else
                           AddPersonAttrib(pid,"轻功",1);
                        end
                end
                if JY.Thing[202][WZ7]>2 then
                    local ran=math.random(3);
                        if ran==1 then
                           AddPersonAttrib(pid,"攻击力",1);
                        elseif ran==2 then
                           AddPersonAttrib(pid,"防御力",1);
                        else
                           AddPersonAttrib(pid,"轻功",1);
                        end
                end               
        end       
               
        --[[
        if add_a>=CC.PersonAttribMax['攻击力'] then
                add_a=0
        end
        if add_b>=CC.PersonAttribMax['防御力'] then
                add_b=0
        end
        if add_c>=CC.PersonAttribMax['轻功'] then
                add_c=0
        end
        ]]--
        --add_c=add_c*0.6;
        --local total=add_a+add_b+add_c+1;
        --add_a=mymodf(totaladd*add_a/total);
        --add_b=mymodf(totaladd*add_b/total);
        --add_c=mymodf(totaladd*add_c/total);
        --[[local rnn=math.random(3);
        if rnn==1 then
                add_a=add_a+1;
        elseif rnn==2 then
                add_b=add_b+1;
        else
                add_c=add_c+1;
        end
        rnn=math.random(3);
        if rnn==1 then
                add_a=add_a+1;
        elseif rnn==2 then
                add_b=add_b+1;
        else
                add_c=add_c+1;
        end
      if T1LEQ(pid) then
         totaladd=0
       for i=1,leveladd do
           totaladd=28;
      
       add_a=math.random(totaladd)
       if add_a>totaladd/2 then
          add_a=totaladd/2
       end
       add_b=math.random(totaladd-add_a)
       add_c=totaladd-add_a-add_b
       AddPersonAttrib(pid,"攻击力",add_b)
       AddPersonAttrib(pid,"防御力",add_c)
       AddPersonAttrib(pid,"轻功",add_a)
       end
      else           
    AddPersonAttrib(pid,"攻击力",add_a);
    AddPersonAttrib(pid,"防御力",add_b);
    AddPersonAttrib(pid,"轻功",add_c);
      end]]
        --[[
    AddPersonAttrib(pid,"攻击力",  mymodf(cleveradd()*leveladd));
    AddPersonAttrib(pid,"防御力",  mymodf(cleveradd()*leveladd));
    AddPersonAttrib(pid,"轻功",  mymodf(cleveradd()*leveladd*0.6));
        ]]--
    if JY.Person[pid]["医疗能力"]>=20 then
        AddPersonAttrib(pid,"医疗能力",  math.random(2));
    end
    if JY.Person[pid]["用毒能力"]>=20 then
        AddPersonAttrib(pid,"用毒能力",  math.random(2));
    end
    if JY.Person[pid]["解毒能力"]>=20 then
        AddPersonAttrib(pid,"解毒能力",  math.random(2));
    end
   
   if pid==75 then       
    if JY.Person[pid]["拳掌功夫"]>=0 then
        AddPersonAttrib(pid,"拳掌功夫",  math.random(3)*leveladd);
    end
    if JY.Person[pid]["御剑能力"]>=0 then
        AddPersonAttrib(pid,"御剑能力",  (5+math.random(3))*leveladd);
    end
    if JY.Person[pid]["耍刀技巧"]>=0 then
        AddPersonAttrib(pid,"耍刀技巧",  (5+math.random(3))*leveladd);
    end
    if JY.Person[pid]["特殊兵器"]>=0 then
        AddPersonAttrib(pid,"特殊兵器",  (5+math.random(3))*leveladd);
    end
   end
       
    if JY.Person[pid]["暗器技巧"]>=20 then
        AddPersonAttrib(pid,"暗器技巧",  math.random(2));
    end
  

    return true;

end

点评

果然很长的一段,的确能用。  发表于 2012-1-30 00:24
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。

本版积分规则

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

GMT+8, 2024-11-23 15:02

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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