本帖最后由 百晟 于 2019-3-2 17:27 编辑
代码中 if (base.Rate >= 12),这个条件是如果品阶小于12也就是圣物,就执行下面的代码return false;,也就是给系统返回一个假的判定让系统知道这个东西不能幽淬,同时在返回假的同时结束幽淬这个方法不在往下执行!如果品阶<12那就继续往下执行下面一行是这样的
float a = Mathf.Pow(0.9f + badd, (float)(base.Rate + this.YouPower));
创建一个变量a,为它赋值,值为0.9f + badd的(float)(base.Rate + this.YouPower)次方,
badd在幽淬方法参数中已经给赋值为0f,这里的f是浮点数的标志,base.Rate应该是你要淬炼的物品的品阶,而后面的this.YouPower是你要淬炼的物品的淬炼次数
也就是这么算,假如你淬炼一个没有淬炼的物品,品阶是6,没有被淬过,那么,a=0.9的6次方 等于:
a的值在幽淬方法里的成功率,1为百分之百0为百分之0
接下来:
if (irate > 0f)
{
a = irate;
}
这句话的意思是如果你给幽淬方法里的irate赋值大于0的话,那a的值就等于irate的值,我猜这个就是将来lue角本要用到的地方,也就是说lua脚本可能会有幽淬之法的链接,这个链接是一个方法,2-3个参数大概是这样:public bool SoulCrystalYouPowerUp(badd float, int),而你只需要改变括号中3个参数就可以定义幽淬的MOD
如果你没有修改irate的值,就不会执行上面的给a再次赋值,也就是说你如果想改幽淬的成功值,直接把这里public bool SoulCrystalYouPowerUp(float badd = 0f, float irate = 1f, int v = 1) float irate =1f 我这里是改好的,之前是零
接下来,是关键
if (World.RandomRate(a))如果World.RandomRate这个方法给出的值为真,那么淬炼就成功了,否则,幽淬这个方法就会给系统返回一个假,也就是淬炼不成功
World.RandomRate这个方法具体内容如下:
public static bool RandomRate(float a)
{
GException.G_Assert(World.m_bRandomInited, null);
float num = World.RandomRange(0f, 1f);
return num <= a;
}
这个方法中有一个参数,就是a的值,这里共3句,第一句我不太懂,应该是鼠标指上去,显示的成功率的消息条,但这不是关键,关键是我们要成功率
第二句float num = World.RandomRange(0f, 1f);定义一个浮点数num为0-1的随机数
第三句return num <= a;如果num的值小于等于a那么就返回真,否则返回假,如果你之前把a改为大于等于1,这里只会返回真
那么,成功率的关键就在于if (World.RandomRate(a))这句里的条件,是真就可以淬,是假就不能淬,如果省去以上麻烦,直接改这里为
if (true)也是会淬成功的,所以,成功值看你自己怎么设定,以上我说的你可以活用,可以按自己的想法设定随机或条件性成功值!
这个应该讲的很明白了吧,你可以自己去调整成功率!
|