魔法门吧 关注:26,414贴子:413,158

想要爽快玩678Merged整合版的,跟我学,教你爽。

只看楼主收藏回复

第一课,前言
大部分人都知道,魔法门678整合版,其实用的是8的框架和UI,里面加入了作者设计的一些参数和引用了67的图像纹理等等。
作者设计的参数,基本上都是没有加密的,以txt和lua文件的形式,赤裸裸的放在游戏目录下。所以,今天就先分享一下,我个人的修改。大家可以按照这个思路去进行自己的修改。如果有更好的思路的,欢迎留言跟贴。
谢谢大家。


IP属地:贵州1楼2021-05-04 21:22回复
    第一部分,开始选人界面。
    这个相关的数据,是存放在data/tables文件夹下面,一个叫做character selection。txt的文件里。
    打开之后(记得复制一份备份),可以看到下面的数据:

    是不是感觉特别的凌乱啊?没关系,按下Ctrl+A,把它们复制到excel表格里,就清晰多了。

    左边的0到10这一列,代表的是11个种族(race),分别是Human(0)Vampire(1)DarkElf(2)Minotaur(3)Troll(4)Dragon(5)Undead(6)Elf(7)Goblin(8)Dwarf(9)Zombie(10)
    (来源于文件是Race skills。不过我们现在还不修改它。只用它来获取种族和代号的对应)
    右边打叉的部分代表这个种族可以选择的职业(class),短横线就是不可以选择的。
    大多数不可以选择的都是进阶职业。比如234列,显示人类这个种族(race)可以选择弓箭手(archer)职业,但是更高级的职业warrior acher,以及更进一步的职业master archer或者sniper就不能在开始阶段选择。
    右边的类似。
    在10这一行结束后,下面是每个世界(贾达密,安塔瑞琪,恩诺斯)开始时可以选择的职业和种族。最下面那个between time不知道啥意思。或许是一周目结束后??先不管他。
    以贾达密为例。贾达密大陆Jadam右边的是portaits exceptional。意思是例外的头像。没测试,估计是某些头像(选我吧!)在这个世界不能用。
    下一行,可选的职业available classes。编号来自class extra.txt文件。如图

    可以看到,最左侧编号0,4,8,10,12,16,20,22.。。。等等职业都是基础职业,其他的都是需要专职才能得到的职业。
    再下一行,可选的种族。available races。可以看到,每个大陆可选择的种族是不一样的。
    接下来就是爽的时刻了。
    你可以简单地把文件里每一个短横杠替换成x,再在每个大陆那里把所有的职业class全填上(52个,不算多),下一行所有的种族也全填上(0到10)。
    这样,在创建游戏时,你就可以随意创建一个任意种族任意职业——甚至一开始就是最高级职业——的角色了。不需要转职做任务,直接就是最高级职业,享受最高级职业的HP和SP系数,享受不受种族职业限制学习技能的快感。。。
    那么问题来了,即便这样,每个角色可学的技能,也是有限的,受到职业的限制(骑士学魔法?,人类学精灵百宝囊?哼哼)。那怎么样才能够不受限制地任意学习技能呢?
    我们下次再讲。
    喜欢的请点个赞。


    IP属地:贵州2楼2021-05-04 21:52
    收起回复
      2025-06-24 13:31:14
      广告
      第二部分,开局爽起来!
      上一部分我们说了,破除开局对于角色的种族和职业限制的方法。
      今天来看一看,破除种族职业对技能的限制的方法。
      打开class starting skills.txt这个文件。可以看到很多的段横杠-,F和C。
      同理,复制到excel里,

      就可以很清楚地看到这个结构。
      最上面一行是所有职业,最左边一列是技能名词。短横杠-代表不能选择;F代表这个职业默认的两项技能。C代表可以选择的技能(最多9项)
      所以,选一个你喜欢的职业(比如说我用的就是最右面的Peasant农民),把想开始就具有的技能画上F(两个)和C(最多9个,建议选一些游戏开始时很难学到的技能,比如说飞龙(Dragon)黑暗精灵(Dark Elf),吸血鬼(Vampire),光明黑暗魔法(Light,Dark)等等),然后把整个Excel文档Ctrl+A,Ctrl+C,复制回原来的class starting skills。txt,保存(记得备份原文件)。
      这样,你一开始就可以创建一个全职业全种族全技能通吃的角色了。。。
      比如说,一个龙(农)民,可以使用所有的技能(但是由于动画限制,即使飞龙可以使用了武器,把武器装备在龙身上时,还是会显示贴图错误或者游戏错误跳出。牛头人戴帽子同理。所以不建议龙拿武器)。
      那么,这角色是不是样样懂样样松呢???怎么样创建一个全知全能的角色呢?。。。我们下次分解。。


      IP属地:贵州3楼2021-05-05 15:29
      收起回复
        上一次讲漏了一点,怎么样角色全技能?
        打开class skill.txt文件,照样把所有内容复制到excel,得到下图:

        第一行,代表的是各个职业。
        第一列,代表的是各项技能。
        游戏内台词有交际术,但是这里没有。这里有偷窃术,但是整合版作者不想人用,所以在这里没人可以学,但是游戏里可以学,没测试有作用没有。
        在中间部分出现的BEMG,分别代表四个级别,Beginner刚学习,Expert专家,Master大师,Grandmaster宗师。
        在你希望的职业那里,把横杠换成对应的字母就可以了。比如说我希望我的农民职业能够通吃所有宗师技能,所以peasant那一列,全部都是G。
        但是要注意一点,如果全攻击技能(剑斧头长矛等等)和全魔法(9系+飞龙暗精吸血鬼),会让游戏里技能左边过长,挡住最下面几个技能(飞龙黑暗等等)看不见,也就不能增加技能了。没有太好解决办法,别太贪心吧,放弃一些,或者用CE直接改到63宗师吧。。但感觉还是要自己慢慢探索慢慢学比较好玩。
        这是技能的学习潜力。。
        接下来是初始的属性。
        打开Class starting Stats。txt文件(其实文件取名错了,应该是Race Starting Stats。txt才更合理)复制到excel,看到下图:

        第一行是种族,human到zombie。右边的那些n/u不必管他。
        最左边,分别是7种属性。每两行控制一种属性。
        写有属性名字的那些行,代表初始属性和初始上限值。默认的human应该是11/25.我就改成了11/500.但是注意,在造人界面,可以得到的属性上限是200左右。即使我这里改成了500,也就只能加到200左右。
        下一行,+add,代表一开始的属性点,每使用1点,可以获得多少属性点。默认的人类是1,精灵Elf是1/2(表示两个额外属性点增加1点力量属性),矮人是2(1点额外属性点增加2点力量属性)。我们所需要修改的就是这里,可以把这个数字改大一些,比如100,那么你花两点额外属性点可以让你的角色的该项属性达到200左右。
        属性值够了,生命值怎么办?打开Class HP SP。txt文件,
        这个数据比较少,不需要复制到excel了。
        左边的是职业,最上面一行是基础Hp,HP因子,基础SP,SP因子,以及影响SP的属性(I代表智力,P代表个性,IP就代表智力个性对SP都有影响)。
        不用多想了,把你希望的职业,这几个属性都改高一些吧。比如说我的农民,两个Base改到200,两个factor改到50,初始裸装就有1000多的血/魔。36级有3000左右的血/魔。


        但是有个问题,就是属性只能加到200左右,也就是总共花费14个额外属性点。这样有一个花不出去,无法完成创建角色。所以可以把某一个属性的+add值弄得别太大,50,左右即可。这样就可以创建成功了。
        这是创建人物界面。可以看到人类角色农民职业,已经解锁了全技能(有些技能去游戏里学就好了。而且确定可以宗师),属性200左右。

        好了,创建角色阶段,爽的方法已经讲完了,下一步,就是游戏时,怎么去爽了。。。


        IP属地:贵州4楼2021-05-07 11:17
        回复
          为什么一个回复的都没有呢?是被隐藏了嘛??


          IP属地:贵州5楼2021-05-07 17:14
          收起回复
            我们已经建立好了一个/一组超一流的队伍。但是在茫茫荒野之中,全部只靠自己,那是非常脆弱的一件事情。我们势必需要一些随从NPC来帮自己的忙。
            那么,常见的随从NPC,给我们起到的作用,一般来说就是增加属性/技能,释放魔法(魔力神眼,天赐神力,时空之门,凌波微步等),但是效果都限,比如说增加魔法技能点数的有三种NPC,魔法大师,神秘大师,魔法学徒,增加魔法点数分别+4,3,2点。能不能更有效呢?
            打开scripts\global文件夹,下面都是一些.lua文件。不用担心,可以直接用记事本打开。
            我们打开这里的NPCFollowersSkills。lua文件。
            ctrl+F搜索这一行:function events.WalkToMap(t)
            得到这一行:
            function events.WalkToMap(t)
            t.Days = math.max(1, t.Days-CountCrossMapBonus())
            第二行语句的意思是,(步行)旅行穿越地图的时间,取1和“实际时间减去随从帮忙减少的时间”中最大的那个。
            删除后面t.Days-CountCrossMapBonus()这一串,就可以实现任何跨越地图(步行)都只需要1天了。最少1天是游戏内部设置,暂时没找到修改方法。
            搜索function events.GetTravelDaysCost(t),得到:
            local Type = Game.Houses[t.House].Type
            if Type == 27 then
            t.Days = math.max(0, t.Days - CountBSBonuses(StableBonuses))
            else
            t.Days = math.max(0, t.Days - CountBSBonuses(BoatBonuses))
            这样的语句。跟上面类似,这是坐车或者坐船去的时间。删除t.Days - CountBSBonuses(StableBonuses)或者t.Days - CountBSBonuses(BoatBonuses)都可以实现坐船坐车1天到达。
            这种修改有个弊端,就是到达任何地方所需要的时间都是一样的,没法体现出各个地区的距离差距(甜水镇到克里格斯要一天,到新索匹格也只要一天??)。所以慎用。
            (对了,这里虽然是修改的随从的能力,但你不需要领航员也可以获得这个修改效果)

            搜索
            ----Values----
            会得到下面的这样结构,从这里开始,都是各个具体的属性加成了。
            ------------------------------------------------
            ----Values----
            ------------------------------------------------
            我们看第一项:
            ---- Find gold bonuses
            GoldFindBonuses = {[31] = 0.10, [32] = 0.20, [45] = 0.10}
            获得的黄金奖励(就是捡尸体了)。编号31,32,45的这三种NPC,分别让你的获得的黄金增加10%,20%,10.
            ---- Skill bonuses
            SkillBonuses = {
            下面都是各个技能。比如第一项:
            [const.Skills.Learning] = {[4]= 5, [13] = 10, [14] = 15},
            意思是增加学习术点数,编号4,13,14的NPC,可以分别把你的学习术提高5%,10%,15%。可以叠加。你完全可以把等号=后面的数值改大一些。比如100?上限多少我不负责哈。
            [const.Skills.Staff]= {[15] = 20, [16] = 30, [46] = 20},
            [const.Skills.Sword]= {[15] = 20, [16] = 30, [46] = 20},
            [const.Skills.Dagger]= {[15] = 20, [16] = 30, [46] = 20},
            [const.Skills.Axe]= {[15] = 20, [16] = 30, [46] = 20},
            [const.Skills.Spear]= {[15] = 20, [16] = 30, [46] = 20},
            [const.Skills.Bow]= {[15] = 20, [16] = 30, [46] = 20},
            [const.Skills.Mace]= {[15] = 20, [16] = 30, [46] = 20},
            [const.Skills.Leather]= {[46] = 20},
            [const.Skills.Chain]= {[46] = 20},
            [const.Skills.Plate]= {[46] = 20},
            这里是所有的武器和防具。注意到有个[46]号NPC,可以同时增加你的武器和护具的技能点。你只需要在游戏里找到他(英文名squire,中文好像是侍从?),就可以了。
            或者,把leather,Chain,Plate这里的格式改得和上面一样就可以了(好像没看到shield盾牌??)
            接下来的,就是魔法(9种),经商,拆卸,感知,鉴定,对应的NPC和增加的点数。按你想要的修改即可。


            接下来是步行穿越地图和坐车船穿越地图的几个NPC的值。如果改了上面的值,那他们就废了。如果上面没改,那这里改一下等号=后面的数值即可。
            ---- Crossing map bonuses
            -- ProfID == Amount of days to subtract
            CrossMapBonuses = {
            [5] = 10,
            [6] = 20,
            [7] = 30,
            [44] = 10
            }
            ------------------------------------------------
            ---- Travel days bonuses
            -- ProfID == Amount of days to subtract
            BoatBonuses = {[8] = 20, [9] = 30, [44] = 10, [45] = 20}
            StableBonuses = {[35] = 20, [44] = 10}
            下面是属性增加的NPC。不过只增加抗性和幸运。跟上面一样修改[ ]=之后的数字即可。
            ---- Stat bonuses
            -- StatID = {ProfID = Bonus}
            StatsBonuses = {
            [const.Stats.AirResistance]= {[37] = 200},
            [const.Stats.FireResistance]= {[37] = 200},
            [const.Stats.WaterResistance]= {[37] = 200},
            [const.Stats.EarthResistance]= {[37] = 200},
            [const.Stats.Luck] = {[27] = 100, [28] = 200}
            }
            接下来是团队Buff魔法,只有一个魔力神眼。
            ---- Constant party buffs
            -- ProfID = {Buff = PartyBuff, Skill = , Power = }
            FollowersBuffs = {
            [38] = {Buff = const.PartyBuff.WizardEye, Skill = 4, Power = 2}
            }
            skill指的是技能点数(1-60),power指的是威力(1=普通2=专家3=大师4=宗师)
            这是说38号使用的是专家4级的魔力神眼。
            再往下的就是要点击头像才能使用的NPC能力了。包括治疗,时空之门等等。
            第一个是大厨(制造食物的),主要是这一段:
            local Amount = Game.NPC[cNPC].Profession == 34 and 2 or 1
            if Party.Food > 14 then
            编号34的大厨,每天制造1或2的食物,最多14份。
            可以把2 or 1改大,成为你想要的数字。(山下殿堂出来之后很好用),也可以把14这个上限改大(比如说14444),让他造一大堆食物。
            这里的判断语句比较复杂,我没太看懂。
            其中
            if Prof == 12 then
            CastSpellDirect(88,10,10)
            elseif Prof == 11 then
            CastSpellDirect(77,10,10)
            88号魔法是divine intervention,普渡众生,77号是powercure指的是疗伤圣法(我去spells2文件一个一个数的。这个没排顺序)。Power10不知道啥意思,反正总是能够回满血。。
            下面这两个没啥好说的,就是可以释放大师级5级的Heriosm和Bless魔法(中文对应哪个?圣灵佑佐?天赋神力?)自己改一下数值就行了。
            -- Cast heroism
            evt.Global[1720] = function()
            CastFollowersSpell(51, 50, 3)
            end
            -- Cast bless
            evt.Global[1719] = function()
            CastFollowersSpell(46, 50, 3)
            end
            下面是时空之门(护门大师的技能)。
            -- Cast town portal
            evt.Global[1718] = function()
            local NPC = GetCurrentNPC()
            if CanUseProf(NPC) then
            if Party.EnemyDetectorRed or Party.EnemyDetectorYellow then
            Message(Game.GlobalTxt[480])
            else
            SetProfUsed()
            ExitCurrentScreen(false, true)
            CastSpellDirect(31, 10, 4)
            end
            else
            Message(Game.GlobalTxt[561])
            end
            end
            值得考虑的是,这一句:
            if Party.EnemyDetectorRed or Party.EnemyDetectorYellow then
            Message(Game.GlobalTxt[480])
            else
            这是说角色状态灯是红色或者黄色(就是周围有敌人)的时候,不能放时空之门。删除这一句,护门大师就可以随意飞了。
            另外注意到,医疗,时空之门,以及前面的制造食物,都有这样一句:SetProfUsed()
            删除之后,应该就可以每天随意使用了?(这一句没验证过,还不敢确定)
            最后两个就没啥难度了。
            -- Cast water walk
            evt.Global[1717] = function()
            CastFollowersSpell(27, 30, 4)
            end
            -- Cast fly
            evt.Global[1716] = function()
            CastFollowersSpell(21, 20, 4)
            end
            就是使用凌波微步和飞行奇术的NPC。按自己喜好,修改一下威力和技能就行了。。和上面规则一样。
            如此一来,我们就有了非常强力的帮手的帮助,还在担心无法完成拯救科诺尼的壮举吗?
            那我们下一话,就来看看,怎么变成一拳超人吧。


            IP属地:贵州6楼2021-05-08 14:34
            收起回复
              上面漏说了一点。
              NPC的编号,在data\table\这个文件夹下面,NPC professions。txt这个文件里。稍稍翻翻字典就可以把NPC编号和中文译名对应上。
              另外,我有个猜想,可以创建一个超级无敌的NPC。相信你们也想到了,自己试试吧。。。


              IP属地:贵州7楼2021-05-08 14:41
              收起回复
                有没有办法不闪退,这样才玩得爽


                IP属地:广东来自Android客户端8楼2021-05-08 18:21
                收起回复
                  2025-06-24 13:25:14
                  广告
                  有没有办法做到抗性跟金龙一样,免疫魔法,其他抗性90


                  IP属地:北京9楼2021-05-08 19:49
                  收起回复
                    牛逼啊爽歪歪,先顶一个


                    IP属地:贵州来自iPhone客户端10楼2021-05-08 20:14
                    收起回复
                      终于能回复了,顶一个


                      IP属地:澳大利亚来自手机贴吧12楼2021-05-08 20:30
                      收起回复
                        呕心沥血之作!!穿越三大陆不再是梦! 维尔丹老巫女去死吧!!
                        今天终于修改了一下地图的连接。
                        目的是
                        1. 节省走路时间。
                        2. 把有些开始不能去的地方,改为了可以步行走过去。
                        3. 链接了有一些气质相似的地方,比如拜尔德斯和幽灵沼泽,巨人领地和天堂谷等等。
                        怎么修改呢?
                        打开data\tables文件夹,下面有一个outdoor travels。txt文件。

                        这里最左面的是假设你的队伍所在的地图的代码。最右边是这个地图的名称。
                        可以参考这张图
                        其中的odm文件就是大地图文件,也就是走过去需要花时间的地图的游戏内部文件名。
                        其中默认是没有贾达密大陆的。
                        从第一张图可以看到,恩诺斯大陆的编号是最规则的,
                        按照从左到右是abcde,从上到下是123的规则,分别是outa1=甜水镇,outa2=天堂谷。。。oute3=新索匹格的排列。
                        第二列up指的是从这张地图的上方走出去,会到达哪张地图。由图可知,甜水镇上方是没有地图的,所以这一项默认是空的。而自由天堂outc2上方可以到达冰冻高原outc1,左方布莱克郡outb2.。。第三列指的是到达下一张地图的上下左右哪个位置(不过这个有一点bug,后面说),比如outc1后面就是down,指的是到达冰冻高原的下方。
                        诸如此类。最右方straight travel不知道是啥意思,不过有一些地图必须要全部打X,才能够走过去,我索性全部都画上X了。
                        恩诺斯的地图很规整,所以几乎没有做调整。有一些空,比如甜水镇,克里格斯,冰冻高原北部,甜水镇,天堂谷西部,是留空的,留待会儿穿越地图用。另外有一些被水域包裹的地图,比如魔鬼水域,浓雾岛,是没有陆地通向地图边缘的,所以这些地方就留空也无妨。
                        8代的修改类似。9块大陆,以鸦岸为中心,整整齐齐分成了9快,从左到右从上到下依次是低语森林,阿尔瓦,铁砂荒漠,绞刑峡谷,鸦岸,阴影塔,回烟回廊,雷格那,壁上群岛。还有一个没有直接道路通过去的行星之界。
                        按照这个思路,我也把贾达密大陆的大陆做了梳理。

                        最麻烦的是7代。大家看地图
                        不单不像6,8代那样规规矩矩地把地图分成几块,而且有些边缘地带(布拉卡达,埃里,泰塔利亚,迪雅,拜尔德斯)有好几个方向指向同一张地图(比如泰塔利亚有两个方向朝向埃拉西亚,拜尔德斯也是),而有些地图,比如巨人领地,尼根山脉,翡翠岛,埃弗蒙岛,根本没有与外界连接。甚至两个岛都没有可以落脚的地面。
                        所以我做了一些修改,让一开始就可以通过埃里向右走向巨人领地(埃里南面不是有个泰坦城堡么?通向巨人领地很合理吧?)而巨人领地西面可以通向尼根山脉(这里有个bug,过去之后山太高,飞不起来,会卡在山中,只能不停地神奇跳跃跳出来)。
                        而所有的岛屿,魔鬼水域,浓雾岛,匕伤群岛,雷格那岛,翡翠岛,埃弗蒙岛,都会在进入的时候溺水,这时候必须马上飞起来或者凌波微步,不然就淹死了。。。不过俺的角色不怕。
                        还有行星之界也修改了进去的地图链接,三个世界都有。但是地图边缘没设置出来的路。要一路自己杀出来。。
                        有兴趣试一下的同学,在百度盘下载来试试看吧。或者有什么好的建议请留言,我再修改。。。今天真的是累了。
                        盘点百度点康/s/4oGdgJns
                        自己把前面的中文换一下吧。
                        下一步要开始修改其他东西了。


                        IP属地:贵州13楼2021-05-09 00:29
                        收起回复
                          吉姆老爹的mod是用钥匙来连接哈蒙代尔的一个水井,可以参考一下


                          IP属地:北京14楼2021-05-10 13:41
                          收起回复
                            怎么给自己的城堡加3个吊灯呀,我在自己的家里还的开光明之火吗


                            IP属地:北京15楼2021-05-10 13:43
                            回复
                              2025-06-24 13:19:14
                              广告
                              真正爆爽的地方来了。。。
                              魔法门魔法门,什么最牛逼?当然是魔法啊!!魔法的威力怎么修改呢?
                              打开tables文件夹下spell2.txt文件。这里描述了所有的魔法威力。

                              当然这样是不能用的。照例复制到excel里。

                              可以看到,第一行是魔法的描述,spellpoitsnormal,spellpointsexpert,spellpointsmaster,spellpointsgm分别是普通,专家,大师,宗师级别的魔法消耗;delay是魔法的恢复时间。damageadd是伤害/回血附加值(设为C)damagedicedices是伤害/回血的骰子面数(设为B)。
                              DnD系统里,伤害数字的计算是这样的。假设长剑的攻击力是ADB+C的计算模式,意思是有A个骰子,每个骰子有B面,C是固定的附加伤害。
                              举例,某一把长剑攻击力是1D8+2, 就是说有一个1面骰子,丢出去,最低是1,最高是8,再加2固定,那就是3-10的伤害范围;如果是2D4+2,那就是2个4面骰子,伤害是(1,4)+(1,4)+2=(2,8)+2=4-10的伤害。
                              在魔法门最早的版本中,一般的魔法威力描述是, “XXX魔法每个级别可以造成5点伤害,再加上20点)。在这里,这个5就是上面的B,而技能级别就是A(这个在文档里不能修改,但是可以在游戏中添加技能点来提高)。
                              说了这么多,大家应该有思路了。我这里修改的是,第2-第9列,魔法消耗和魔法延迟除以10,伤害附加值和骰子面数乘以10.
                              好了,去爽吧。。。


                              IP属地:贵州16楼2021-05-12 09:54
                              回复