|
楼主 |
发表于 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
|
|