石器时代宠物等级,石器时代宠物等级轮回好不好?
有网友提问:石器时代转宠等级,今天小编来回答一下
,首先要把四大工程做完,不然进不了黑暗。
带MM去找刘金标(不要抓守护者,不然你就投胎了!),跟他说话,在弹出框里选择你要转的宠物就可以了。
最好121以上转宠物。转移宠物不需要算命。就算你够幸运,也不一定好。用现在流行的话来说就是“看你人品”
如果你对答案不满意,不妨看小编为你推送的这篇文章
最近石器M上线了,有不少新玩家加入了“石器时代”的大家庭!而“宠物转生”恰好是这个游戏本质中“重中之重”的基础!
Pk,刷副本,战队站!所有玩家都需要有一个好宠物!
所以我想分享一篇关于宠物转生“源代码”分析的文章!
第一个功能:
int pet trans _ PetTransManStatus(int to index,int petindex1,int petindex2)
{
int petrank=0,I;
int total1,total2,total,petLV,ans
int petID,enemynum,ret=-1;
int work[4]={0,0,0,0 };
int base[4]={0,0,0,0 };
#定义RAND(x,y)((x-1)1(int)((double)(y-(x-1))* RAND()/(RAND _ MAX 1.0)))
total 1=pet trans _ getpet base(petindex 1,work,petrank);
total 2=pet trans _ getpet Base(petindex 2,base,petrank);
petLV=CHAR_getInt( petindex2,CHAR _ LV);
//=================第一部分===========================
#ifdef _PET_2TRANS
ans=NPC _ PetTransManGetAns(total 1,total2,petLV,petrank,CHAR_getInt( petindex2,CHAR _ TRANSMIGRATION));
#否则
ans=NPC _ PetTransManGetAns(total 1,total2,petLV,petrank);
#endif
//=========================================================
total=total 1(total 2 * 4);
total 2=0;
for(I=0;i4;i ) {
功=功* 4;
total2=工作;
}
total=total1 total2
for(I=0;i4;i ) {
base=(ans *(基准工时))/total;
}
ENEMY num=ENEMY _ getenemy num();
petID=CHAR_getInt( petindex2,CHAR _ petID);
for(I=0;ienemynumi ) {
if( ENEMY_getInt(i,ENEMY_TEMPNO)==petID)
打破;
}
if( i==enemynum)
return-1;
ret=GetNewPet( toindex,petindex2,I,base);if( ret 0)
return-1;
返回ret
}
这个功能应该大致是宠物转生的。。功能。从红队第一部就可以判断出来。这个代码判断是转还是不转。我们现在只研究一个转弯的情况。
ans=NPC _ PetTransManGetAns(total 1,total2,petLV,petrank);
这个ans就不用说了,是一个影响转折的系数,从后面的用法就能看出来,而total 1和total2大致。。了一个MM和pet转移的组合值,后面有分析。petLv不用说。。宠物的等级,petrank。。宠物成长的一些东西,rank。。成长的价值,这背后有分析。
接下来,我们来看后一段:
total=total 1(total 2 * 4);
total 2=0;
for(I=0;i4;i ) {
功=功* 4;
total2=工作;
}
total=total1 total2
for(I=0;i4;i ) {
base=(ans *(基准工时))/total;
}
这里有两个关键变量,一个是total1,另一个是total2,是从这段代码推测出来的:
total 1=pet trans _ getpet base(petindex 1,work,petrank);
total 2=pet trans _ getpet Base(petindex 2,base,petrank);
Total1和total2分别引入到petindex2.petindex中。不用说,两者都。。一个宠物的指针,也就是这个宠物的代号。所以至少,可以解释这两个总数,一个是人类宠物,一个是轮回宠物。
再看这句话:
for(I=0;i4;i ) {
功=功* 4;
total2=工作;
}
total=total1 total2
for(I=0;i4;i ) {
base=(ans *(基准工时))/total;
}
Base是一个int数组。经过我的研究,这个数组长4位,下标从0到3,分别。。:血、攻、防、敏。看看这段代码你就知道了:
//最终启动的车削功能
ret=GetNewPet( toindex,petindex2,I,base);
//=============
(这个base最后作为参数传递给GetNewPet。GetNewPet就不用说了,GetNewPet获得新宠物的功能。)看GetNewpet的定义。
int GetNewPet( int toindex,int petindex,int array,int *work)
{
.前面的先省略了。
work[0]=( RAND(0,4)-2);
work[1]=( RAND(0,4)-2);
work[2]=( RAND(0,4)-2);
work[3]=( RAND(0,4)-2);
///而参数work只是前面传入的基数组。
CHAR_setInt( petindex,CHAR_VITAL,(PARAM _ CAL(E _ T _ base VITAL)* work[0]);
CHAR_setInt( petindex,CHAR_STR,(PARAM _ CAL(E _ T _ BASESTR)* work[1]);
CHAR_setInt( petindex,CHAR_TOUGH,(PARAM _ CAL(E _ T _ BASETGH)* work[2]);
CHAR_setInt( petindex,CHAR_DEX,(PARAM _ CAL(E _ T _ base DEX)* work[3]);
//看,char_serInt,字面意思是character_setInital,也就是特性初始化,work[0]对应BASEVITAL,work[1]对应BASESTR,work[2]对应basetgh,work [3]对应BASEDEX。很明显,BASEVITAL就是基础血量。BASESTR是基础攻击力,BASEDEX是基础敏捷。虽然我不太明白TGH的意思,但BASETGH是防御的意思。
}
因此,base=(ans *(基功))/total;这是关键。按照这个公式,俺们越大越好,总数越小越好。为什么?再次查看获取ans的代码:
int NPC_PetTransManGetAns( int总计1,int总计2,int LV,int rank)
#endif
{
int ans=0,TransLV=100
浮动总数=0.00;
int Fx=1;
if(LV 130)LV=130;
total=((float)total 1/100);//total1=200
合计=合计*合计*合计*合计*合计*合计;
if(合计1)合计=0;
else total=total * 1.3//?总计?=41.6旅程?=0
FX=(int)((5-rank)* 1.2)5;//rank=0~6 ?程Fx?=11(秩=0)旅程?=4(排名=6)
ans=(int)total total 2((LV-TransLV)/Fx);//42 150 30/11=194
#ifdef _PET_2TRANS
if( tran==0 ){
如果(ans 150)
ans=150
}
否则{
如果(ans 200)
ans=200
}
#否则
如果(ans 150 ) {
ans=150
}
#endif
打印(' \n ans=%d 'ans);
返回ans
}
没错,等级大于130,按130计算,同时:
total=((float)total 1/100);//total1=200
合计=合计*合计*合计*合计*合计*合计;
if(合计1)合计=0;
else total=total * 1.3
这个总数=total1/100,然后=自己的4次方,就会判断是否<1。因此,如果total 1 > 100,则total=total*1.3,否则,total=0。从这里可以判断出total 1是关于人类宠物的,因为只有人类宠物的基数才会有这么明确的标准来决定转生的成败。(结合
ans=(int)total total 2((LV-TransLV)/Fx);
所以base=(ans *(基数功))/total这个公式的合计就没那么简单了,因为它同时影响分子和分母。这个我们暂时不研究,因为假设太多了。
可以肯定的是,作品[]和基数[]越大越好。基数组已经很清楚了,工作数组也是4位的,它影响total2,从下面的代码可以看出:
total 2=0;
for(I=0;i4;我)
{
功=功* 4;
total2=工作;
}
所以大胆推测,工作也。。了改变宠物四维的东西,可以结合起来确定基本宠物四维的条件。越高越好,
最后,我们再来回顾一下整个函数getnewpet (toindex,petindex2,I,base)。
int GetNewPet( int toindex,int petindex,int array,int *work)
{
int * p;
int TP[E _ T _ DATAINTNUM];
int tarray,I;
int level,workrank,petrank=0;
int LevelUpPoint
结构{
int num
浮动排名;
}ranktbl[]={
{ 130, 2.5},
{ 100, 2.0},
{ 95, 1.5},
{ 85, 1.0},
{ 80, 0.5},
{ 0, 0.0},
};
这是一个ranktbl数组。这个数组一眼就能看出是什么意思。。。的是各年级段转身时得到的排名系数。rank也是等级系数,或者能力系数,证明了前面的:
total 1=pet trans _ getpet base(petindex 1,work,petrank);
total 2=pet trans _ getpet Base(petindex 2,base,petrank);
petRank参数就是0转时的成长系数,充分证明了0转pet的成长率和MM的成长率对转弯的影响,虽然这个大家都知道。
同时也再次证明了130+的宠物在转身时最高可以得到2.5。接下来:
level=1;
#定义RAND(x,y)((x-1)1(int)((double)(y-(x-1))* RAND()/(RAND _ MAX 1.0)))
#定义E_PAR( a) (*(p (a)))
#define ET_PAR( a) (*(tp (a)))
# define PARAM _ CAL(l)((level-1)* ET _ PAR(E _ T _ LVUPPOINT)ET _ PAR(E _ T _ INITNUM))
work[0]=( RAND(0,4)-2);
work[1]=( RAND(0,4)-2);
work[2]=( RAND(0,4)-2);
work[3]=( RAND(0,4)-2);
这段代码的前半部分被注释掉了。我不知道这是什么意思。后半段讲的是一个性格问题。前面说过,工作数组,也就是基数组,。。宠物的四个周长。这里,最初的四个周长随机增加(0-4的随机数)-2。是的,可能是负面的。不然就是性格问题。这也说明了所谓的爆发式增长。
LevelUpPoint=( work[0] 24)
(工作[1] 16)
(工作[2] 8)
(作品[3]0);
CHAR_setInt( petindex,CHAR_ALLOCPOINT,level up point);
从字面上来看,变量levelUpPoint是增长的关键。我个人理解为成长。我对这个地方的理解是得到默认的增长系数。我为什么这么猜?因为接下来要做的第一件事就是把这个点给setInt,然后设置int的四个维度,下面会讲到。这里至少说明了一个问题。增长率是默认的,它在之前开始,当然是由四个维度决定的。这基本上是
这个系数怎么算?呵呵,我按照这个公式给你解释一下:
内力增长系数=(血量* 2的24次方)+(攻击* 2的16次方)+(防御* 2的8次方)+敏感度,(当然这里的血量攻防敏感度不是指纯血量攻防敏感度,否则数量极大)
所以,从这里大胆的得出一个结论,血是关键,攻是关键,防和敏是次要。这个结论其实相信大家都发现了,比如人龙。一般来说,蓝龙长得最好,红龙次之,这就是原因。然后:
for(I=0;i 10i ){
int rnt=RAND( 0,3);
if(rnt==0)work[0];
if(rnt==1)work[1];
if(rnt==2)work[2];
if(rnt==3)work[3];
}
不看又是性格问题。这段代码重复10次,然后四个圆中的一个加1,给我的感觉是在微调四个圆的分布。但是,如果我不做好这段代码,很容易造出一个很NB的物品的畸形宠物。
CHAR_setInt( petindex,CHAR_VITAL,(PARAM _ CAL(E _ T _ base VITAL)* work[0]);
CHAR_setInt( petindex,CHAR_STR,(PARAM _ CAL(E _ T _ BASESTR)* work[1]);
CHAR_setInt( petindex,CHAR_TOUGH,(PARAM _ CAL(E _ T _ BASETGH)* work[2]);
CHAR_setInt( petindex,CHAR_DEX,(PARAM _ CAL(E _ T _ base DEX)* work[3]);
这段代码就是结尾。如前所述,它初始化四个函数。因为petindex是常量,是针对同一个宠物的,而且是在getNewPet函数的末尾,就不解释了。
这基本上是整个宠物换码最关键的部分。让我总结一下:
第一个关键点,130级,在这个代码里说的很清楚。
第二个关键点是MM和pet 0的增长率,这个增长率决定了总值,虽然不清楚它们是如何工作的。
第三个关键点,字符,getNewPoint函数中的两个随机数字符码,说明了一切。当然这个性格不是算命决定的,很可惜。算命恐怕和换宠物没关系,因为我没看到有这种码。
第四个关键点,一个回合后的血量和攻击,最终代码中对周围数组的这种位移操作说明了这一点。
好啦!老铁们,如果想详细的了解!可以登录这个论坛!我是在这里找到的!
要尊重其他人的劳动成果哦!
关于石器时代转宠等级更多网友观点如下
海棠文学小说网站是一个非常知名的小说阅读网,但是这个网站经常会出现过期,打不开的现象,而且网址也会经常的换
2023-01-05