47下载站移动版

主页 > 了不起的修仙模拟器 >

《了不起的修仙模拟器》游戏修改代码详细教程

下面先把我之前对幽淬成功率的详解复制过来,之后,我会详细给你们以实例为主讲解怎么读这些代码,下边是对于成功率的详细讲解
代码中 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次方     等于:

0.53144



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)也是会淬成功的,所以,成功值看你自己怎么设定,以上我说的你可以活用,可以按自己的想法设定随机或条件性成功值!
这个应该讲的很明白了吧,你可以自己去调整成功率!




相信此时大家也了解了大概,程序基础语言无外呼变量、常量、方法、判断、循环等,下面一个一个来,我用通俗的话讲,我们先搞懂这些,读DLL内部那些代码还有
游戏历练相关文件的那些代码就不是难事

变量:可分为全局变量和局部变量,通俗说变量是暂存在内存中的数值,如果你使用修改器修改,其实大部分修改就是去修改内存中的变量,当游戏去执行
某个操作或功能时,就会产生相应的变量在内存中,直到这个操作和功能结束才会释放这个变量,在这个变量生成的过程中去修改,我想就是劫持吧,我对
劫持修改不太了解,这里希望高手们看到别笑话!上面那段代码中的a就是一个局部变量,在幽淬的过程中a是存在的,淬完后a就被释放了

方法:你可以把它理解成一个模块或框架,方法可以返回值,也可以定义参数,公用的方法同时也可以外部调用,下面定义一个方法:
public bool lingcui(int a,float b = 0f){}
大家看到我写了三个单词 第一个单词public 是定义方法的开放属性,属于公有方法,也可以定义为私有方法,但私有方法只能内部访问,外部是访问不成的

第二个 bool 是这个方法的返回值类型,int 整数型  float浮点型也就是小数,还有这里bool 布尔型,通俗说就是只有两种情况真true和假false,
你在代码中看到true这个单词你就记得他表示真,看到false这个单词你就记得他表示假就成了,一般会出现在判断式里
后面lingcui这个是方法名称,这个在程序中是可以自由定义的
再之后括号里就是参数,我定义了两个参数整数参数a,没赋值,如果你直接调用这个方法就不给a赋值的话,程序就会提示你错误,如果你两个参数都赋了值,
直接调用这个方法,不添参数也会执行这个方法,第二个浮点数b就是给赋值为0f,大家知道在C类语言中数字后面加个f表示这个数是浮点数

判断 这个在程序中很有意思,说白了就是如果条件合适就执行下面的否则就执行下面的,给大家下面举个例子,设定a=1,如果我们给的数值b大于1,c就
等于真,如果小于或等于1, c就等于假,看例子:
int b = 10;
int a = 1;
bool c;
if(b > a)
    {
       c = true;

    } else {
       c = false;
    }


上面就是个简单的判断,看懂了吗?还有其它的判读,比如说如果if   否则如果elseif   否则 else 这样的多重判读,否则如果可以是若干个

判断还有一种通俗讲是对应判断  switch(),括号中给一个参数,看对应大括号里的哪个值case就执行哪个值的下边的代码直到遇到return,返回并执行完毕
常见游戏中有宝箱的脚本、寻觅弟子的脚本等

循环while(){}这个常用于多次执行同一件事,我给大家的修改代码中幽淬一次满12就是这个道理,小括号中是条件,也就是如果品阶小于12就执行大括号的
代码,执行完后再判断是不是还是小于12,如果是还执行,如果不是就不执行,这个是先判断后执行也可以先执行后判断,就是把while放到大括号后面

也就先说到这里吧,基本就是这些。