elona吧 关注:76,081贴子:1,131,329

回复:E+代码分析讨论

取消只看楼主收藏回复

【代码分析】牧场/农场相关(版本1.66)
做自动牧场前的最后准备工作。由于没啥兴趣独自做详尽代码分析了,所以从今以后楼主简述结论。
化肥规律:24小时判定一次。每次判定时
可以腐烂的食物(材质属性编号为35,生的),或者以下物品。
43 木片
45 垃圾
51 骨
52 骸
220 死鱼
221 草
222 动物的骨
301 一大束花
330 树墩
575 粪便
转换1个为化肥。
果树规律为24小时增加一个果实,上限为10个。
结论:将果树建在化肥池正上方,可以实现连续转换。
农场牧场更新规律(缺少判断条件,未必正确):
每24小时可刷新一次。1.66后农场刷新次数翻倍,牧场刷新次数翻4倍。
农场每次刷新时:
每个格子的庄稼进入下一个生长状态。或者枯萎。
作物状态为:
0 种子
1 发芽
2 成熟
3 枯萎
6 催熟(用了化肥)
除催熟状态下,其他状态都有可能枯萎。
牧场更新规律:
每次刷新时,首先计算是否生成子代。子代的生成概率和以下因素有关:
1 亲代的种族繁殖力
2 牧场现有牲畜总数
亲代繁殖力越小,牲畜总数越大,生成概率越小。
但是再小的生成概率,也有可能繁殖1个子代(但该种情况无法繁殖出第二个子代)
子代一般与亲代属于同类怪物,但是一些特殊情况下子代会直接劣化为低级怪物。
然后计算牲**成物。(亲代子代都参与计算)
每个牲畜有两个变量来控制畜牧能力(可以通过刷毛查看大致值)
其中一个是击杀时相关,比如皮毛生成率,肉质提升,肉生成率等。
另一个是蛋奶产量相关。对于这个参数:
4-6代表不适合产蛋,7-9代表适合产蛋。
1-3代表不适合产奶,10-12代表适合产奶。
计算蛋奶产量时,会综合参考所有牲畜的该值之和。(如果是适合就该值+,不适合就-该值)
判定生成时,每个牲畜都有一次判定机会。
生成物会在牧场围栏里随机找一格,如果格子上已经有物品,那么判定不生成。
如果牲畜总数每超过10的倍数,那么都有1/4的概率判定不生成。
生成物判定分为5类,进入每类判定的概率相同,但是决定是否实际生成的概率却各不一样。(即有可能进入判定但是并不生成)
1 如果进入产蛋的分支,那么1/60概率生蛋,如果该牲畜是鸡,那么额外1/20概率生蛋。
另外当rnd(所有牲畜产蛋遗传值总和)>rnd(80)时,额外生成一个蛋。
2 如果进入产奶的分支,那么1/60概率产奶,如果该牲畜种族是羊,那么额外1/20概率产奶。
另外当rnd(所有牲畜产奶遗传值总和)>rnd(50)时,额外产一次奶。
3 如果进入产粪便的分支,那么1/80概率生成粪便。
4 如果进入产垃圾的分支,那么1/80概率生成遗骸或垃圾。
5 其余情况则什么都不生成。
综上,如果是产肉类牧场,那么牧场只有亲代没有子代时,产肉概率最大化。
如果是产蛋/奶类牧场,那么牧场畜牧总数最好不要超过10的整数倍,否则会有大的惩罚判定。
同时要密切关注子代的畜牧能力遗传因子。有劣化的基因直接干掉等着生成新的。
还有就是及时取出生成物(哪怕是粪便和垃圾),因为已有生成物越多,新生成的概率就越小。
最后想要提高牧场产出效率,记得选取优秀基因的子代置换为亲代,大概3轮就可以达到理论最佳基因。
附子代基因遗传规律。
初始怪物牧场能力遗传值一般为0.这个值每相邻三个为一类。从1-12共四类。
对于同类分为三档(以下由ABC来表示,比如7-9为适合产肉,那么9为A档,效果最好,7为C档,效果一般)
如果亲代遗传值>=B档,那么子代有1/5概率为A档,
如果亲代遗传值>=C档,那么子代有1/5概率为B档,
如果亲代遗传值>=C档,那么子代有1/5概率为C档,
每条独立判定,同时发生的话后面的判定结果覆盖前面的。如果三条都没发生,那么子代遗传值为0。
不同类别的遗传值不会遗传给子代,即不可能出现亲代适合产肉但是子代反而不适合。
另外当亲代遗传值为0时,将有1/5概率突变为各种类别的C档。
综上,理论上而言大约经过三代的努力,就可以从0遗传值的初始怪物更换为双A档的亲代怪物。


IP属地:湖南87楼2017-05-15 00:01
收起回复
    【魔改】为TALK定制换行符

    玩过Talk的朋友都知道一行如果写的太长的话,显示起来会是这个样子~

    增加了{tab}功能符,可以在同行之内实现换行。

    效果就是上面这个样子~
    最后圈两位Talk大佬,感谢喵神和白金铃TALK,写的灰常棒!
    @星梦冰仙 @暴菜魔王


    IP属地:湖南88楼2017-05-15 18:43
    收起回复
      2025-05-24 19:13:15
      广告
      【ME】反编译版角色名称数组cdatan查找规律
      首先放结论。cdatan文字型数组比数值型数组更难建立指针关系的地方在于:
      【cdatan中每个变量都有自己的基址,且变量之间的位置可能在内存空间中分散排列,这种分散是无确切定向规律的,也不一定非要顺序依次排列,因此很难建立关系】
      下面说ME建立指针关系的办法。
      根据57L的理论,先按照传统方法找到PC的名称基址(即储存PC名称的内存地址)。
      然后可以得到 P2 +CN修正=>PC名称基址 中的CN修正。
      那么这里CN修正的下一个32位字节,就储存着其余变量的指针表。
      因此 P2+CN修正+4=>指针表基址(红色方框的地址即为指针表基址)

      从下一个指针03143D70开始,依次储存着cdatan(1,0),cdatan(2,0)....cdatan(9,0),cdatan(0,1)...一直到cdatan(9,244)变量基址的指针。(10*245数组空间)所以,
      对于cdatan中除cdatan(0,0)(储存PC名称)外任何一个变量cdatan(x,y),其内存地址即为:
      指针表基址+4*(x+10*y)=>cdatan(x,y)内存地址
      以上便是查找方法了。总结一下:
      P2 +CN修正=>PC名称基址 先推导出CN修正
      P2+CN修正+4=>指针表基址 再找到指针表
      指针表基址+4*(x+10*y)=>cdatan(x,y)内存地址 最后得知任意变量内存地址
      然后我们想知道每个编号y的角色其姓名的话,只要再加一步查询cdatan(0,y)的值:
      cdatan(0,y)内存地址=>编号y角色姓名
      就好啦~


      IP属地:湖南90楼2017-05-17 12:34
      回复
        【魔改】攻击队友无提示框。
        练习主动魔法的时候,太强的敌人不好练,太弱的敌人施展不开。
        最佳的靶子其实还是自家喵神...我是说自家里培养的非常好的宠物队友。
        不仅PC练得嗨皮,宠物还能堆技能经验,一举两得,岂不美哉。
        唯一不太友好的是,每次攻击队友都会弹框提示玩家:你真的要攻击喵神么?
        这种感觉就像是碰到删垃圾软件的时候对方提示“你真的要抛弃小...么?”一样可耻的卖萌。
        所以,果断做个功能砍掉这个提示框。
        原理灰常简单,和快速购买去确认框方法完全一样,所以其实这么实用的东西早就该做的。
        诶,总之这下练起那些五花八门的攻击&DEBUFF魔法就方便多啦~


        IP属地:湖南91楼2017-05-19 18:43
        收起回复
          【魔改】自动S/L
          演示视频:http://player.youku.com/player.php/sid/XMjc3NDMxNTEwNA==/v.swf
          每次生成种子时判定是否有药草种子,如果没有就自动读档,否则自动存档。直到所有收获神雕像全部使用完毕。
          想了想,这么丧心病狂的补丁还是没有算入PK正式版里。就让我一个人来承受ANO的怒火吧!


          IP属地:湖南92楼2017-05-19 23:54
          收起回复
            【魔改】自家招募功能扩展

            依然是自用向,暂时不会做到PK里。
            效果有以下几个:
            1 自家招募不仅局限于地上1层。(图中为地下一层)
            2 招募名单人员数量大幅增加。(图中共计超过16*4=64人)
            3 可招募类型增加(如训练师和纪念品商等)


            IP属地:湖南93楼2017-05-23 07:42
            回复
              【魔改】冒险者列表显示性别及黑星数量

              受到 @迷狼恋蟒 的启发,在冒险者列表中添加了性别显示和黑星数量。
              配合93L自家扩展招募,75L归还魔法强化。
              可以近乎实现全地图无缝查找+追杀冒险者黑星。
              然而LZ做完才发现自己的冒险者们根本就没有黑星...
              那么,就顺便杀一波高等男冒险者和低等女冒险者,尝试制造出女强男弱的和谐景象好了。(有多无聊)


              IP属地:湖南94楼2017-05-23 21:32
              收起回复
                【魔改】剧情及物品汉化


                Custom有个好处是剧情文本,物品信息是单独分离出文件的...所以理论上,替换文件中的相关文本后,就可以实现诸如上述效果...
                诶,不过LZ毕竟不是搞汉化的,关于这方面的研究就到此为止好啦w


                IP属地:湖南95楼2017-05-25 01:31
                回复
                  2025-05-24 19:07:15
                  广告
                  【魔改】合成之壶优化
                  增加合成之壶光标记忆功能,每次打开时光标回归上次合成位置。
                  增加快速合成功能,使用t键略过所有选择直接完成一次合成。(适用重复性一次合成一个物品)

                  提高单次合成最大数量(从10上升到100).(适用重复性一次合成多个物品)


                  IP属地:湖南98楼2017-05-27 08:05
                  回复
                    【魔改】自动化拾取物品。
                    结合82L的路径设计配合破墙功能,地城自动化拾取物品基础版算是搞定啦。
                    http://player.youku.com/player.php/sid/XMjc5MDcyMTg4OA==/v.swf

                    一发陨石清场,然后PK帮你拾取战利品~再也不用担心错过稀有物品啦~
                    P.S. 目前还不能做到识别敌对NPC,所以使用的时候最好保证完全清场哦。


                    IP属地:湖南99楼2017-05-28 18:23
                    收起回复
                      【魔改】左下雷达小地图醒目显示楼梯
                      雷达地图中,以楼梯为中心的3*3格子改为醒目颜色提示。下楼为绿色,上楼为红色。
                      配合楼上自动拾取物品&采集。地城收益不要太轻松哦。


                      IP属地:湖南100楼2017-05-29 07:25
                      回复
                        【魔改】自动SL奇妙卷轴

                        使用奇妙卷轴时,学习到*号追踪(可自由选取,共15个栏位)的魔法才会存档,否则就自动读档。直到所有的奇妙卷轴全部用光为止~
                        目前性价比最高的自动化功能,没有之一w然而依然是归属不公开发布的隐藏模式。


                        IP属地:湖南101楼2017-05-31 06:02
                        回复
                          怪物召唤魔法解析。
                          还是直接摆结论。
                          通用下载地址下载 怪物召唤表For1.66.xlsx.

                          打开后,可以通过修改召唤强度来查询生成各种怪物的概率。
                          每次执行怪物召唤魔法时,随机生成1-3个怪物。怪物类型取决于召唤强度。
                          召唤强度计算公式为spellpower÷50+spellpower×spellpower÷20000+等级÷2(飞机的魔法表V1.53放大了spellpower的影响,V1.66以此处为准)
                          每种怪物被召唤的概率= 该种怪物概率/当前全部可召唤怪物概率
                          比如上图的意思就是在召唤强度500时,召唤金铃的概率就是11/631=1.74%
                          仅当召唤强度>角色等级时,该种怪物才有可能被召唤。
                          同时除个别怪物外,绝大多数怪物召唤概率随召唤强度增加而下降。
                          还有就是召唤会有筛选条件。比如1.66共计902种怪物,但是实际最大可召唤的只有580种。
                          迷路的幼猫虽然生成概率很高,但是被作者强行限定无法通过魔法召唤。
                          因此就有了:用卷轴生成幼猫很容易,但是用魔法生成幼猫却完全不可能的现象。
                          因此总的结论是:
                          a 当召唤强度很低时(比如小于100),能召唤的怪物十分有限,同时等级怪物概率极高。
                          b 当召唤强度很高时(比如大于500),基本能召唤到全部的怪物,同时绝大部分怪物概率都下降为1。
                          即每个怪物被召唤的概率是相同的。
                          c 根据筛选条件,实际能够生成的怪物仅有581-1(幼猫)=580种。


                          IP属地:湖南102楼2017-06-02 09:23
                          收起回复
                            【魔改】自动SL援军卷轴
                            使用援军卷轴时,如果生成的怪物有袜子,则存档,否则就自动读档。直到所有的援军卷轴全部用光为止~
                            依然是隐藏模式,刷袜子最佳方法,没有之一。


                            IP属地:湖南103楼2017-06-11 13:49
                            回复
                              2025-05-24 19:01:15
                              广告
                              【魔改】坐标显示系列。
                              实时显示PC坐标:

                              任务人坐标

                              同城冒险者查看时高亮,选中时PC直接传送到冒险者周围1格。(打住院后自然就不能传送啦)
                              位置列显示性别,黑星数,好感度以及NPC编号
                              声望列下方显示该页冒险者男女比例。


                              IP属地:湖南104楼2017-06-11 14:17
                              回复