| 
 | 
 
 
 楼主 |
发表于 2012-2-20 14:40
|
显示全部楼层
 
 
 
 本帖最后由 mkatxdx 于 2012-2-20 14:42 编辑  
 
回复 xiaoyaojx 的帖子 
 
我翻了源代码,这里面轻功升级部分能帮我看看嘛。。。为啥我用100资质算不出攻防轻升级总和30呢? 
 
另外,从函数看,100资质从1级开始升的轻功看上去和攻防没啥区别啊。但实际就是攻防能出9,轻功出不了9 
  
高手帮忙啊!! 
 
(在cy_fight.lua里面的代码) 
 
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 
 
 
 |   
 
 
 
 |