魔剑士莉奈吧 关注:6,850贴子:37,095
  • 25回复贴,共1

求助,怎么通过修改文件上移立绘看狱卒

只看楼主收藏回复

通过修改createFigure这个函数,我已经能把立绘向上移动了,但是腿的下半截仍然是截断的,但是通过解包我看到图片里是带有狱卒的(?
求大佬教教




IP属地:北京1楼2025-08-06 01:39回复
    做了狱卒不给吃,那我缺的营养这一块谁给我补啊


    IP属地:北京来自Android客户端2楼2025-08-06 01:49
    回复
      2026-01-17 02:52:52
      广告
      不感兴趣
      开通SVIP免广告
      你太带派了


      IP属地:湖北来自Android客户端3楼2025-08-06 02:31
      回复


        ok了啊,家人们,狱卒有了,但是五官都飞出来了


        IP属地:北京4楼2025-08-06 03:17
        收起回复
          这游戏鞋子种类特别少,还限职业,基本全程只能穿靴子


          IP属地:福建来自Android客户端5楼2025-08-06 14:42
          收起回复
            你是,粥批!


            IP属地:湖北6楼2025-08-06 15:12
            收起回复
              错位已经解决了,现在试试能不能调节图片大小,不然上半截图片会出框


              IP属地:北京7楼2025-08-06 16:36
              回复
                改大小属实有点麻烦,暂且放弃了.最后只保留上调70单位高度。
                最终效果展示



                但是对于一些体型较大的角色,效果并不好。如果上调更多单位高度,应该也能显示出大体型角色的狱卒,不过其头部却会被遮挡。

                此贴至此终结,如果有大佬制作了缩小立绘的方法,或者有吧友想要进行此上调高度修改,欢迎随时与我交流。


                IP属地:北京8楼2025-08-06 18:12
                回复
                  2026-01-17 02:46:52
                  广告
                  不感兴趣
                  开通SVIP免广告
                  求楼主教教


                  IP属地:广东来自Android客户端9楼2025-08-06 21:06
                  收起回复
                    修改方法:
                    〇:首先请您了解,该修改并没有经过过深研究,只是随意改的,因此可能存在有错误和疏漏,对游戏造成的影响无法预知,请三思再改
                    ①:首先请准备能够拆包xp3与封包xp3的工具(我使用garbro 下载地址:https://github.com/crskycode/GARbro)
                    ②:
                    (日文版)使用工具对游戏根目录下的data.xp3进行解包,在拆包出来的文件中,找到script目录下的inventory.tjs,将inventory.tjs提取出来
                    (汉化补丁版)对汉化补丁进行解包,找到inventory.tjs并提取
                    ③:请使用任何能以文字格式打开inventory.tjs的软件打开此文件,例如TXT文本文档
                    ④:在inventory.tjs中搜索var adjustLeft,(大约位于3234行左右),应该能找到这行代码var adjustLeft = 20;
                    ⑤:在var adjustLeft = 20;的下方另起一行,写入var adjustTop = 70;
                    ⑥:搜索function loadSkinImages,(大约位于3638行),应该能找到function loadSkinImages(charaObj, pose, wholeImg)。把从function loadSkinImages(charaObj, pose, wholeImg)开始到function putMarker(mark)(约3766行)上面的部分完全删除

                    ⑦:用如下文段替换刚才删掉的部分
                    function loadSkinImages(charaObj, pose, wholeImg)//替换后
                    {
                    // 全身と各肌のレイヤーを読み込む
                    // 各身体パーツの基準位置・全身レイヤーの左端
                    // ここを基準にして各パーツを配置する
                    // 親となるアイテム画面レイヤーは左に大きく寄っており
                    // さらに配置されるパーツは若干枠からはみ出るのでこの位置が指定される
                    // なお、追加カットは左端は0で良い
                    var battlePose = master.isBattlePose(pose);// 戦闘ポーズ中かどうか
                    var bodyLeft = battlePose ? 0 : -parent.left - adjustLeft;
                    var bodyTop;
                    bodyTop=battlePose ? 0 : 0 - adjustTop;
                    if(!battlePose&&!master.inBattle){
                    if (parent.fixPortrait) {bodyTop = 0;}
                    }
                    // 画像のプレフィックス
                    var img = charaObj.img + (battlePose ? "ex" : "");
                    // 画像の配置場所の情報
                    var pos = battlePose ? charaObj.model.exPos : charaObj.model;
                    // いったん全て隠す
                    faceLayer.visible = false;
                    chestLayer.visible = false;
                    waistLayer.visible = false;
                    bustLayer.visible = false;
                    hipLayer.visible = false;
                    legLayer.visible = false;
                    armLayer.visible = false;
                    subArmLayer.visible = false;
                    gripLayer.visible = false;
                    hideGripLayer.visible = false;
                    magicLayer.visible = false;
                    // 重ね合わせ順を調整
                    armLayer.absolute = 100;
                    gripLayer.absolute = 900;
                    subArmLayer.absolute = pos.subArmOrder;
                    if(battlePose)
                    {
                    armLayer.absolute = pos.armOrder;
                    gripLayer.absolute = pos.gripOrder;
                    weaponPos.absolute = pos.weaponOrder;
                    subWeaponPos.absolute = pos.subWeaponOrder;
                    if(pose == "cast") weaponPos.absolute = pos.magicOrder;
                    else if(pose == "shot") weaponPos.absolute = pos.bowOrder;
                    else if(pose == "play") weaponPos.absolute = pos.harpOrder;
                    else if(pose == "beat") weaponPos.absolute = pos.drumOrder;
                    }
                    // 位置合わせ(と一部読み込み)
                    bodyLayer.setPos(bodyLeft, bodyTop);
                    faceLayer.setPos(pos.face[0] + bodyLeft, pos.face[1]+ bodyTop);
                    legLayer.setPos(pos.leg[0] + bodyLeft, pos.leg[1] + bodyTop);
                    chestLayer.setPos(pos.chest[0] + bodyLeft, pos.chest[1] + bodyTop);
                    armLayer.setPos(pos.arm[0] + bodyLeft, pos.arm[1] + bodyTop);
                    waistLayer.setPos(pos.waist[0] + bodyLeft, pos.waist[1] + bodyTop);
                    if(charaObj.sex == "女") bustLayer.setPos(pos.bust[0] + bodyLeft, pos.bust[1] + bodyTop);
                    hipLayer.setPos(pos.hip[0] + bodyLeft, pos.hip[1] + bodyTop);
                    subArmLayer.setPos(pos.subArm[0] + bodyLeft, pos.subArm[1] + bodyTop);
                    gripLayer.setPos(armLayer.left, armLayer.top);
                    if(battlePose)
                    {
                    weaponPos.left = pos.main[0];
                    weaponPos.top = pos.main[1];
                    subWeaponPos.left = pos.sub[0];
                    subWeaponPos.top = pos.sub[1];
                    }
                    else
                    {
                    mainGrip = [pos.main[0] + bodyLeft, pos.main[1] + bodyTop];
                    subGrip = [pos.sub[0] + bodyLeft, pos.sub[1] + bodyTop];
                    hideMainGrip = [pos.hideMain[0] + bodyLeft, pos.hideMain[1] + bodyTop];
                    hideSubGrip = [pos.hideSub[0] + bodyLeft, pos.hideSub[1] + bodyTop];
                    hideGripLayer.setPos(pos.hideArm[0] + bodyLeft, pos.hideArm[1] + bodyTop);
                    }
                    // 読み込み
                    bodyLayer.loadImages(img + "_body_" + charaObj.color);// 読み込み
                    faceLayer.loadImages(img + "_00");// 読み込み
                    if(wholeImg !== void)
                    {
                    // 完全指定ポーズ用の画像は chestLayer に読み込む。あとは何もしない
                    chestLayer.loadImages(img + "_" + wholeImg, charaObj);
                    return;// 指定ポーズの作成だったらここで終了
                    }
                    legLayer.loadImages(img + "_leg");
                    waistLayer.loadImages(img + "_waist", charaObj);
                    hipLayer.loadImages(img + "_hip", charaObj);
                    if(pose === void && charaObj.coveringBust())
                    {
                    chestLayer.loadImages(img + "_chest_hide", charaObj);
                    return;
                    }
                    if(charaObj.sex == "女") bustLayer.loadImages(img + "_bust", charaObj);
                    chestLayer.loadImages(img + "_chest", charaObj);
                    // 腕パーツの読み込み
                    var actionSuffix = "";// 追加カットがある時違う画像を呼び出すための接尾辞
                    if(pose == "cast")
                    {
                    magicLayer.loadImages(img + "_magic");
                    magicLayer.setPos(weaponPos.left, weaponPos.top);
                    magicLayer.absolute = weaponPos.absolute;
                    actionSuffix = "c";
                    }
                    else if(pose == "shot") actionSuffix = "s";
                    else if(pose == "play") actionSuffix = "p";
                    else if(pose == "beat") actionSuffix = "b";
                    if(battlePose)
                    {
                    armLayer.loadImages(img + "_arm_up" + actionSuffix);
                    }
                    else
                    {
                    armLayer.loadImages(img + "_arm_down");
                    }
                    subArmLayer.loadImages(img + "_arm_sub" + actionSuffix);
                    if(battlePose && pose != "cast")
                    {
                    gripLayer.loadImages(img + "_arm_grip" + actionSuffix);
                    }
                    }

                    (换行和缩进的轻微变形应该不影响使用)
                    ⑧:搜索function changeFace,(大约位于3991行),删掉从function changeFace(charaObj, faceNum, pose)到function makePortrait上面的部分

                    ⑨:用如下文段替代刚刚删掉的部分
                    function changeFace(charaObj, faceNum, pose)
                    {
                    // 表情を変える
                    var battlePose = master.isBattlePose(pose);// 戦闘ポーズ中かどうか
                    var img = charaObj.img + (battlePose ? "ex" : "");
                    var res = faceLayer.loadImages(img + "_" + "%02d".sprintf(+faceNum));
                    if(! res) faceLayer.loadImages(img + "_00");
                    var pos = battlePose ? charaObj.model.exPos : charaObj.model;
                    var bodyLeft = battlePose ? 0 : -parent.left - adjustLeft;
                    var bodyTop;
                    bodyTop=battlePose ? 0 : adjustTop;
                    if(!battlePose&&!master.inBattle){
                    if (parent.fixPortrait) {bodyTop = 0;}
                    }
                    if(!battlePose&&!master.inBattle)
                    faceLayer.setPos(pos.face[0] + bodyLeft, pos.face[1] - bodyTop);
                    }

                    ⑩:保存文件,并重新打包成xp3,命名为patchxx.xp3,(xx为任意两位数,例如56,78等),但需要注意,该数字必须大于汉化补丁等其它所有修改了inventory.tjs的补丁的patch数字。如果您的汉化补丁为patch99,请将汉化补丁重命名,并将其数字调低,以确保本修改具有最高优先级,将打包后的xp3放在游戏根目录下,和汉化补丁等放在一起。
                    ⑪:进游戏,享用🦶🦶🦶🦶🦶🦶🦶🦶🦶


                    IP属地:北京10楼2025-08-07 01:59
                    收起回复