3DMGAME 3DM首页 新闻中心 前瞻 | 评测 游戏库 热门 | 最新 攻略中心 攻略 | 秘籍 下载中心 游戏 | 汉化 购买正版 论坛

注册 登录

QQ登录

只需一步,快速开始

查看: 6291|回复: 2
打印 上一主题 下一主题

[修改] Dont_Starve修改3排背包,不用mod,手动修改文件

[复制链接]

1

主题

51

帖子

52

积分

初级玩家

Rank: 2

贡献度
0
金元
515
积分
52
精华
0
注册时间
2018-9-25
跳转到指定楼层
主题
发表于 2018-10-3 13:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本文是引用了易宁大大的文章(易宁:饥荒游戏实用修改技巧(请自行备份原文件),无需mod,直接修改lua文件

我用的是22版本的未加密版,其他版本应该也可以用,没试过,各位可自行修改测试

新人,没办法上图,只能麻烦各位自己看了

1.进入data\DLC0002\scripts\components,编辑inventory.lua文件,用记事本打开或其他编辑软件都行

修改
    local MAXSLOTS = 15 为 local MAXSLOTS = 90

这个文件可能在\data\DLC0001\scripts\components,data\scripts\components中都有,可能各个版本读取文件顺序不一样,可以3个都修改,DLC开头的是2种模式

2.进入\data\DLC0002\scripts\widgets,编辑inventorybar.lua,这个文件是控制下方物品栏的

修改(伸缩度)
    self.bg = self.root:AddChild(Image(HUD_ATLAS, "inventory_bg.tex"))
    self.bg:SetScale(1.15,1,1)

    self.bg = self.root:AddChild(Image(HUD_ATLAS, "inventory_bg.tex"))
    self.bg:SetScale(1.86,1.85,1)

修改
    local num_intersep = math.floor(num_slots / 5) + 1
    local total_w = (num_slots + num_equip)*(W) + (num_slots + num_equip - 2 - num_intersep) *(SEP) + INTERSEP*num_intersep

    for k, v in ipairs(self.equipslotinfo) do
        local slot = EquipSlot(v.slot, v.atlas, v.image, self.owner)
        self.equip[v.slot] = self.toprow:AddChild(slot)
        local x = -total_w/2 + (num_slots)*(W)+num_intersep*(INTERSEP - SEP) + (num_slots-1)*SEP + INTERSEP + W*(k-1) + SEP*(k-1)
        slot:SetPosition(x,0,0)
        table.insert(eslot_order, slot)

                local item = self.owner.components.inventory:GetEquippedItem(v.slot)
                if item then
                        slot:SetTile(ItemTile(item))
                end

    end   

    for k = 1,num_slots do
        local slot = InvSlot(k, HUD_ATLAS, "inv_slot.tex", self.owner, self.owner.components.inventory)
        self.inv[k] = self.toprow:AddChild(slot)
        local interseps = math.floor((k-1) / 5)
        local x = -total_w/2 + W/2 + interseps*(INTERSEP - SEP) + (k-1)*W + (k-1)*SEP
        slot:SetPosition(x,0,0)

                slot.top_align_tip = W*0.5 + YSEP

                local item = self.owner.components.inventory:GetItemInSlot(k)
                if item then
                        slot:SetTile(ItemTile(item))
                end

    end


    local num_intersep = math.floor(num_slots / 10) + 1
    -- 下面一行是计算物品栏x轴的基本坐标,61.7是90格的时候相应的位移,每增加30格61.7就要加上30.85,这些数字可能不精确,可以自行调整
    local total_w = (num_slots -61.7)*(W) + (num_slots -61.7 - 2 - num_intersep) *(SEP) + INTERSEP*num_intersep

    for k, v in ipairs(self.equipslotinfo) do
        local slot = EquipSlot(v.slot, v.atlas, v.image, self.owner)
        self.equip[v.slot] = self.toprow:AddChild(slot)
        -- 修改4格装备栏的x坐标,8是相对于屏幕的位置,也可以自行调整
        local x = -total_w/2 + (num_slots*0+8)*(W)+num_intersep*(INTERSEP - SEP) + (num_slots-1)*SEP + INTERSEP + W*(k-1) + SEP*(k-1)
        -- 设置x,y,z,z不用变,x后的341不变,上面一行就是计算x的变化,y轴,多一行30格的物品栏就要+80,就是只要多一行,y就要加80,当然要是觉得缝隙大了,可以小一些
        slot:SetPosition(x+341,260,0)
        table.insert(eslot_order, slot)

                local item = self.owner.components.inventory:GetEquippedItem(v.slot)
                if item then
                        slot:SetTile(ItemTile(item))
                end

    end   

    -- 下面3个for开头的,是对本来在一行的90格物品栏进行分层,每一层对应不同的x,y坐标,若添加120格,依次上推,每增加1个30格,就要多for循环一次
    for k = 1,30 do
        local slot = InvSlot(k, HUD_ATLAS, "inv_slot.tex", self.owner, self.owner.components.inventory)
        self.inv[k] = self.toprow:AddChild(slot)
        local interseps = math.floor((k-1) / 10)
        -- 此处为最下面的物品栏,不用改,照抄
        local x = -total_w/2 + W/2 + interseps*(INTERSEP - SEP) + (k-1)*W + (k-1)*SEP
        slot:SetPosition(x,0,0)

                local item = self.owner.components.inventory:GetItemInSlot(k)
                if item then
                        slot:SetTile(ItemTile(item))
                end

    end

    for k = 31,60 do
        local slot = InvSlot(k, HUD_ATLAS, "inv_slot.tex", self.owner, self.owner.components.inventory)
        self.inv[k] = self.toprow:AddChild(slot)
        local interseps = math.floor((k-1-30) / 10)
        -- 此处为中间的物品栏,需要在每个k-1后面再减去30;30是总数90除以分3栏得到的数字
        local x = -total_w/2 + W/2 + interseps*(INTERSEP - SEP) + (k-1-30)*W + (k-1-30)*SEP
        -- 此处修改y轴坐标,基本是多加一行就加80
        slot:SetPosition(x,80,0)

                local item = self.owner.components.inventory:GetItemInSlot(k)
                if item then
                        slot:SetTile(ItemTile(item))
                end

    end

    for k = 61,90 do
        local slot = InvSlot(k, HUD_ATLAS, "inv_slot.tex", self.owner, self.owner.components.inventory)
        self.inv[k] = self.toprow:AddChild(slot)
        local interseps = math.floor((k-1-60) / 10)
        -- 此处为最上层物品栏,每一个k-1要减去30*2,道理同上
        local x = -total_w/2 + W/2 + interseps*(INTERSEP - SEP) + (k-1-60)*W + (k-1-60)*SEP
        -- 此处修改y轴坐标,多加一行加80
        slot:SetPosition(x,160,0)

                local item = self.owner.components.inventory:GetItemInSlot(k)
                if item then
                        slot:SetTile(ItemTile(item))
                end

    end

这个地方修改跟易宁大大修改的多一个物品栏,对比可以看出不同,其实是在易宁大大的上面做了稍微修改,主要是文中中文地方
这个文件也是在\data\DLC0001\scripts\widgets和\data\scripts\widgets中都有,若不生效,可全部修改
回复

使用道具 举报

1

主题

51

帖子

52

积分

初级玩家

Rank: 2

贡献度
0
金元
515
积分
52
精华
0
注册时间
2018-9-25
舒服的沙发
 楼主| 发表于 2018-10-3 13:15 | 只看该作者
沙发是自己的
回复 支持 反对

使用道具 举报

54

主题

2830

帖子

3533

积分

游戏精英

Rank: 8Rank: 8

贡献度
74
金元
32373
积分
3533
精华
0
注册时间
2012-6-26
硬硬的板凳
发表于 2019-9-14 09:22 | 只看该作者
大佬好,但是我游戏崩溃了,不知道哪个mod冲突了!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|3DMGAME ( 京ICP备14006952号-1  沪公网安备 31011202006753号

GMT+8, 2025-2-24 09:35 , Processed in 0.093394 second(s), 15 queries , Memcache On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表