Pal5Q-MOD 使用说明

    xiaoxiao2026-05-18  1

    仙五前MOD增强工具


    下载地址

    目前工具的最新版为1.1。打开mod.xml可查看version,如果小于此值可以选择更新!

    下载地址 备用地址

    此工具用于对主程序进行Patch,从而开放更加强大的MOD功能!除说明文件外,压缩包内有3个文件,下面分别进行介绍。

    Pal5Q-MOD.exe

    请把此文件放在游戏主目录下,每次打开游戏时,只需打开此文件即可。发布MOD时,通知玩家打开此程序进入游戏,而非Pal5Q.exe。 此程序会解析mod.xml文件,将主程序复制一份(~Pal5Q~.exe)作为临时主程序,根据偏移修改内容,然后运行之。 程序运行需要.NET 4.0,win7及以上windows系统都有包含。如果无法运行,需要下载.NET Framework。

    mod.xml

    请将此文件放置于Config\Data下。这是MOD的核心文件,MOD制作者通过对此文件内容进行修改来控制游戏数据。下面对文件中的一些标签作简要说明。

    validate

    <validate 描述="主程序MD5验证">6A00439F50B95662E8974A2039A080CB</validate>

    这是1.04版本的主程序MD5值。Pal5Q-MOD.exe运行时,验证用户Pal5Q.exe的MD5值是否与此相同,如不同,则拒绝执行后续步骤。

    log

    <log pause="0" 描述="日志文件存放地址(相对主程序)"> </log>

    日志文件存放地址。例如,按如下输入:

    <log pause="0" 描述="日志文件存放地址(相对主程序)">Config\Data\log.txt</log>

    则后续解析步骤的错误事件都将记录于Config\Data文件夹内。如果留空,错误事件将直接输出到控制台。 此元素有属性pause,值设为1时,MOD工具运行结束时不会立即退出,可供MOD制作者查看可能输出在控制台的错误信息。发布时,建议将此值设置为0。

    data

    有很多row作为子元素。每一行都是一条记录,其中属性有效和值可供修改。当有效设置为0时,Pal5Q-MOD.exe会忽略此条记录,即保持原游戏默认值;否则将修改为指定值,即将描述中的x换成值。例如:

    <row id="118" 有效="0" 偏移="2146296" 类型="sbyte" 值="1" 描述="贴有编号469(聚气)的角色扣血时,气增加x。"/>

    若将有效设置为1,而值设置为2,则聚气的效果变成:

    贴有编号469(聚气)的角色扣血时,气增加2。

    请注意:值的取值集合受类型限定! 如下表:

    类型取值范围备注sbyte-128到127之间的整数包含两端byte0到255之间的整数包含两端int-2147483648到2147483647之间的整数包含两端uint0到4294967295之间的整数包含两端float不太大即可,可保证6位有效数字double保证15位有效数字map:n参见map标签其中n表示map的idbytesbyte的数组base64,不需要管

    如果值不在需求范围内,条目会被忽略,写入错误信息到日志。

    也有的记录条目不允许修改值,例如:

    <row id="200" 有效="1" 偏移="1866349" 类型="byte" 值="0xC4" 描述="是否修复状态消失BUG。“有效”设置为0则不修复,设置为1则修复。请勿修改其他选项!"/>

    对于这样的条目,描述或者附近的注释都会有说明,注意即可。

    部分条目效果介绍

    <row id="0" 有效="0" 偏移="2986396" 类型="bytes" 值="PZinTAKQdQXoB/v//4vN" 描述="打开控制台" />

    此项设置有效为1可打开游戏内控制台,具体可见此帖11楼及以后。

    <!--扩展MOD相关 下一行的“有效”设置为1则打开MOD扩展,设置为0则关闭MOD扩展。请勿修改其他选项!--> <row id="1" 有效="0" 偏移="2873606" 类型="bytes" 值="(略)"/>

    此项设置有效为1可打开MOD扩展功能,详情在下一个文件中介绍。

    <row id="200" 有效="1" 偏移="1866349" 类型="byte" 值="0xC4" 描述="是否修复状态消失BUG。“有效”设置为0则不修复,设置为1则修复。请勿修改其他选项!"/>

    此项设置有效为1可修复仙五前的状态消失BUG,具体见仙五前资料百科。

    <row id="201" 有效="1" 偏移="1861656" 类型="byte" 值="1" 描述="施加已有状态时,回合取代还是回合叠加。“有效”设置为0则取代,设置为1则叠加。请勿修改其他选项!"/>

    此项设置有效为1可以将回合取代修改为回合叠加。举例:

    夏侯瑾轩使用灵砚绘虎为我方全体加10回合强袭,接着又因为仙福的效果而获得了3回合强袭,原游戏回合取代的结果是强袭回合数变为3,若此项有效则强袭回合数变为13。

    <row id="202" 有效="1" 偏移="0x20BEF8" 类型="bytes" 值="gH0QAHVCkA==" 描述="即死的扣血是否可因玄甲而减半。“有效”设置为1则不能,从而修复BUG。请勿修改其他选项!"/>

    若满足玄甲触发条件的角色被施加了即死状态,原游戏将扣除一半精,结果人物精不为0但失去行动能力,从而出现BUG。将此条设置有效可以避免此BUG。

    ref

    有的条目不止一处偏移需要修改,但有部分属性需维持一致,故使用参照值。总而言之,此项可直接忽略。

    map

    当data条目的类型为map:n时,其值只能取于id为n的map诸条目中的key值。例如:

    <row id="100" 有效="0" 偏移="2146011" 类型="map:1" 值="精" 描述="对于贴有编号457(玄甲)的角色,当x小于……"/> <row id="101" 有效="0" 偏移="2146036" 类型="map:1" 值="精上限" 描述="……x的1/4时,受伤减半。"/>

    此处两条的类型为map:1,于是查看id=1的map:

    <map id="1" 描述="角色的成员函数"> <row type="int" key="精" value="0xAC"/> <row type="int" key="精上限" value="0xB0"/> <row type="int" key="神" value="0xB4"/> <row type="int" key="神上限" value="0xB8"/> </map>

    从而值只能填以下四者之一:精、精上限、神、神上限。MOD工具在解析时,向主程序写入的值从key转换为对应value。

    实际在处理map:2或map:3时,请选择map表中有的、最接近需要的一项浮点数填写。

    macro.lua

    此文件原存于游戏目录script\mainline下,用于自定义lua函数以供使用。如果前述mod.xml中开启了MOD扩展功能并要使用Pal5Q-MOD来载入游戏,请先将此文件放置到script\mainline下;否则请不要放置到script\mainline下,否则无论哪种情况都会引起BUG。

    开启扩展功能后,以下函数被新增,可供lua使用:

    battle.AtkToNpc(id) --玩家攻击指定id的npc(此函数不在macro中定义,可以直接使用) battle.GetRndNpc() --和游戏一样,但此函数被我覆盖,所以需要重新定义 player.GetHP(id, flag) --和游戏一样,但此函数被我覆盖,所以需要重新定义 npc.GetHP(id, flag) --和游戏一样,但此函数被我覆盖,所以需要重新定义 player.GetMaxHP(id) --玩家精上限 npc.GetMaxHP(id) --npc精上限 player.GetMP(id, flag) --和游戏一样,但此函数被我覆盖,所以需要重新定义 player.GetMaxMP(id) --玩家神上限 player.GetQuickness(id) --玩家身法 player.GetLuckyness(id) --玩家运势 npc.GetAtk(id) --npc攻击 player.GetDef(id) --玩家防御 npc.GetDef(id) --npc防御 npc.GetMagicAtk(id) --npc仙攻 player.GetMagicDef(id) --玩家仙防 npc.GetMagicDef(id) --npc仙防 player.GetHit(id) --玩家命中 npc.GetHit(id) --npc命中 player.GetMiss(id) --玩家闪避 npc.GetMiss(id) --npc闪避 player.GetBlock(id) --玩家招架 player.GetCrtical(id) --玩家暴击 npc.GetCrtical(id) --npc暴击 player.GetCombo(id) --玩家连击 player.GetMagicBonus(id, attr) --玩家某系加成(比如夏侯、火返回30) player.GetMagicResistance(id, attr) --玩家某系抗性(比如夏侯、火返回30) npc.GetMagicResistance(id, attr) --npc某系抗性 player.GetStateResistance(id, attr) --玩家状态抗性(仅0-9和29) npc.GetStateResistance(id, attr) --npc状态抗性 player.CheckClothesFuZhou(id, fuzhouID) --玩家衣服上是否有指定符咒(1有0无) player.CheckWeaponFuZhou(id, fuzhouID) --玩家武器上是否有指定符咒 player.CheckFuZhou(id, fuzhouID) --玩家是否有指定符咒。一般用这个就好了 player.GetDP(id) --玩家气 player.GetStrength(id) --玩家力 player.GetStamina(id) --玩家体 player.GetSpeed(id) --玩家速。注意原游戏里面有SetSpeed,和速属性无关 player.GetMagic(id) --玩家术 player.GetLuck(id) --玩家运 player.GetXiuWei(id, attr) --玩家某系修为 player.GetWeapon(id) --玩家武器编号(无返回0) player.GetClothes(id) --玩家衣服编号 player.GetShoe(id) --玩家鞋子编号 player.GetAccouters(id) --返回两个值,分别为两个首饰的编号

    如果觉得函数名字不合适,可以自行于macro.lua中修改,但请勿修改函数定义!

    作者:风靡义磊 有任何问题或建议,请于此处交流!

    转载请注明原文地址: https://ju.6miu.com/read-1309804.html
    最新回复(0)