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

注册 登录

QQ登录

只需一步,快速开始

楼主: yzzn2009
打印 上一主题 下一主题

[原创] 易宁:饥荒游戏实用修改技巧(非MOD模式,请自行备份)支持海难版——6月6日更新:简化修船工具制作材料(只用木板和绳子)

  [复制链接]

1

主题

41

帖子

87

积分

初级玩家

Rank: 2

贡献度
0
金元
870
积分
87
精华
0
注册时间
2013-10-14
5041#
发表于 2013-12-23 20:57 | 只看该作者
yzzn2009 发表于 2013-12-23 20:15
不是一句两句能说清的,“我的小屋”、“新移民”、“观赏蜘蛛”、“自动取款机”等都用到了创生并改造物 ...

是在物品栏创造,比如说大理石用石头在物品栏创造
回复 支持 反对

使用道具 举报

4

主题

2998

帖子

2236

积分

游戏达人

Rank: 7Rank: 7Rank: 7

贡献度
80
金元
19062
积分
2236
精华
1
注册时间
2010-11-27
5042#
 楼主| 发表于 2013-12-23 21:43 | 只看该作者
1692532967 发表于 2013-12-23 20:57
是在物品栏创造,比如说大理石用石头在物品栏创造

修改技巧中的“修改制作道具的配方”里有比较详细的介绍
回复 支持 反对

使用道具 举报

5

主题

691

帖子

655

积分

超级玩家

Rank: 5Rank: 5

贡献度
4
金元
6392
积分
655
精华
0
注册时间
2009-11-13
5043#
发表于 2013-12-23 21:48 | 只看该作者
好帖,多谢分享!
回复 支持 反对

使用道具 举报

4

主题

2998

帖子

2236

积分

游戏达人

Rank: 7Rank: 7Rank: 7

贡献度
80
金元
19062
积分
2236
精华
1
注册时间
2010-11-27
5044#
 楼主| 发表于 2013-12-24 06:03 | 只看该作者
本帖最后由 yzzn2009 于 2013-12-24 06:05 编辑

授人以渔:开端


        我们的修改技巧发展到今天,已经不单单只是修改,而是不断在加入一些创造性的内容,使饥荒世界不再是那个苦寒之地,逐渐演变成一片自由的乐土。我们可以生产销售产品,交女友,养孩子,建立海岛,空中巡逻,也可以创建小镇甚至变身为巨鹿,这都是用一行行枯燥的代码实现的,它就像乐高积木,每一片都平淡无奇,但组合在一起,却可以开创新的天地。几个月前,我对lua语言还一无所知,几个月后,却可以做出一些有趣的东西了。如果我可以,你也一定能做得到,更不要说还有这290余项的修改条目做你的案例。授人以鱼,不如授人以渔,相信许多人都是因为无从下手,才没有机会做出自己的作品的,今天讲一点修改的基础性问题,希望成为你走上创作之路的契机。


        饥荒游戏中的功能,都是用命令调用function来实现的,例如行走手杖,文件是游戏目录\data\scripts\prefabs\cane.lua,以local function fn(Sim)语句为分水岭,上面为function,下面为命令,我详细解释一下每句的意思。


local assets=        声明调用的动画文件
{
        Asset("ANIM", "anim/cane.zip"),        行走手杖动画
        Asset("ANIM", "anim/swap_cane.zip"),        行走手杖装备动画

}

local function onfinished(inst)        名为onfinished的function,是在物品结束时起作用的,括号中的inst为声明的主语,在游戏中inst就是该物品自己
    inst:Remove()        自己被删除
end        每一个function都必须用end结束,否则会报错。需要用end结束的还有if开头的语句等

local function onequip(inst, owner)         名为onequip的function,是在被装备时起作用的,括号中声明了inst(自己)、owner(所有者)两个主语
    owner.AnimState:OverrideSymbol("swap_object", "swap_cane", "swap_cane")        所有者装备时的动画,其中swap_object是手部,swap_cane是行走手杖装备时的动画
    owner.AnimState:Show("ARM_carry")         所有者显示携带物品的胳膊动画
    owner.AnimState:Hide("ARM_normal")         所有者隐藏正常胳膊的动画
end        结束onequip这个function

local function onunequip(inst, owner)          名为onunequip的function,是脱下装备时起作用的,括号中声明了inst(自己)、owner(所有者)两个主语
    owner.AnimState:Hide("ARM_carry")          所有者隐藏携带物品的胳膊动画
    owner.AnimState:Show("ARM_normal")          所有者显示正常胳膊的动画
end        结束onunequip这个function


local function fn(Sim)        这是物品属性的function,上面那些function如果没有命令调用,就不会被执行。但fn这个function会在开始游戏时自动被执行
        local inst = CreateEntity()        声明自己等于创建实体,这是基本格式,一般都修改都不会碰
        local trans = inst.entity:AddTransform()        声明trans等于增加改变位置,也是基本格式
        local anim = inst.entity:AddAnimState()        声明anim等于自己的实体加入的动画,也是基本格式
    inst.entity:AddSoundEmitter()        自己的实体加入声音播放器,也是基本格式
    MakeInventoryPhysics(inst)        制作库存物品的物理性,这是在别的文件中打包做好的一套物理性语句,用这句就可以全部插入了。这样整套的物理性还包括人物物理性、建筑物理性等

    anim:SetBank("cane")        动画设置模型,cane为行走手杖,这里的anim在前面已经声明了,所以才可以用它做主语,如果没有声明,则需要写成inst.AnimState:SetBank("cane")
    anim:SetBuild("cane")        动画设置贴图,cane为行走手杖
    anim:PlayAnimation("idle")        动画设置播放idle(闲置)动画


    inst:AddComponent("weapon")        自己添加物品标签,一些原本不是武器的物品,通过添加这个标签,就可以作武器用了,比如“犬牙手雷”,当然还要有下面的标签参数
    inst.components.weapon:SetDamage(TUNING.CANE_DAMAGE)        自己武器标签设置伤害值为游戏目录\data\scripts\tuning.lua文件中的CANE_DAMAGE(行走拐杖伤害值),具体是34*0.5=17

    inst:AddComponent("inspectable")        自己添加查看标签,inspectable(查看)标签几乎是所有物品都有的,所以修改技巧中许多新增的代码就都插在这句下面

    inst:AddComponent("inventoryitem")        自己添加库存标签,有这句才能将行走手杖放进物品栏和背包中

    inst:AddComponent("equippable")        自己添加可装备标签

    inst.components.equippable:SetOnEquip( onequip )        自己可装备标签设置在装备时调用的function为onequip,有这句,名为onequip的function才会起作用
    inst.components.equippable:SetOnUnequip( onunequip )        自己可装备标签设置在脱下装备时调用的function为onunequip,有这句,名为onunequip的function才会起作用
    inst.components.equippable.walkspeedmult = TUNING.CANE_SPEED_MULT        自己可装备标签行走速度倍数,为游戏目录\data\scripts\tuning.lua文件中的CANE_SPEED_MULT(行走手杖速度倍数)具体为1.25倍

    return inst        循环自己
end        结束fn这个function


return Prefab( "common/inventory/cane", fn, assets)         这句是任何物品都必不可少的,循环物品相关资源的路径,一般不会动到


        以上就是饥荒游戏中一个典型物品的文件,首先了解了它的组成内容,才可以按自己想要的方式修改(插一句,行走手杖的代码中,名为onfinished的function因为没有命令调用,所以不会起作用,这是官方制作组留下的垃圾语句,像这样的垃圾在许多物品文件中都比比皆是,让那些以为官方做出来的东西就是最好的、修改不重要的人失望了)。我们可以修改标签参数中的数值,比如将inst.components.equippable.walkspeedmult = TUNING.CANE_SPEED_MULT替换为inst.components.equippable.walkspeedmult = TUNING.CANE_SPEED_MULT*2,就是将装备行走手杖的行走速度增加1倍;可以添加新的标签来扩展该物品功能,比如在inst:AddComponent("inspectable")的下一行插入inst:AddComponent("blinkstaff"),就可以让行走拐杖拥有鼠标右键点地实现瞬移的功能;还可以自己写function及命令,让行走手杖拥有更加强大的能力


        好了,如果你耐心看完了,相信游戏的代码开始对你不再那么神秘了,当然,一旦入门你会产生更多的疑问,那就去钻研、去探索、去追寻(请不要问我,实在没有时间),将修改技巧中的条目和原文件做对比,最终你会得到满意的答案。抓住这个契机,从此刻开始,未来是属于你的

回复 支持 反对

使用道具 举报

0

主题

149

帖子

135

积分

中级玩家

Rank: 3Rank: 3

贡献度
0
金元
1345
积分
135
精华
0
注册时间
2013-11-27
5045#
发表于 2013-12-24 06:58 | 只看该作者
yzzn2009 发表于 2013-12-24 06:03
授人以渔:开端

我们要插入的是英语吗?我把整个拿去翻译,只有几个能翻译出来。
回复 支持 反对

使用道具 举报

0

主题

149

帖子

135

积分

中级玩家

Rank: 3Rank: 3

贡献度
0
金元
1345
积分
135
精华
0
注册时间
2013-11-27
5046#
发表于 2013-12-24 07:02 | 只看该作者
本帖最后由 无语。。。 于 2013-12-24 07:36 编辑

为什么我在\data\scripts\prefabs\cave_banana.lua里面的inst:AddComponent("inspectable")的下一行插入local function OnDeploy (inst, pt)
    local perd = SpawnPrefab("monkey")
    if perd then
        perd: PushEvent("growfromegg")
                perd.Transform:SetPosition(pt.x, pt.y, pt.z)
        inst.components.stackable:Get():Remove()
    end
end
    inst:AddComponent("deployable")
    inst.components.deployable.ondeploy = OnDeploy

它无视我!!!!!不过可以打开

回复 支持 反对

使用道具 举报

0

主题

23

帖子

73

积分

初级玩家

Rank: 2

贡献度
0
金元
730
积分
73
精华
0
注册时间
2013-5-12
5047#
发表于 2013-12-24 07:53 | 只看该作者
我想问问呢  其实那猎人可不可以改做变成
你点下路牌他会出现随机怪物。杀完自动给黄金。杀完那动物的奖励一样在 不过多加黄金给你
回复 支持 反对

使用道具 举报

0

主题

94

帖子

124

积分

中级玩家

Rank: 3Rank: 3

贡献度
0
金元
1242
积分
124
精华
0
注册时间
2013-8-29
5048#
发表于 2013-12-24 08:13 | 只看该作者
yzzn2009 发表于 2013-12-24 06:03
授人以渔:开端

好在我在香港读的是英语学校,英文全懂了
回复 支持 反对

使用道具 举报

0

主题

5

帖子

3

积分

新手玩家

Rank: 1

贡献度
0
金元
625
积分
3
精华
0
注册时间
2013-12-8
5049#
发表于 2013-12-24 12:19 | 只看该作者
宁哥,可不可以修改一下把坟墓墓碑用铲子铲掉或者锤子敲掉,基地有几个坟墓看着不太舒服,强迫症木有办法啊!!
回复 支持 反对

使用道具 举报

4

主题

2998

帖子

2236

积分

游戏达人

Rank: 7Rank: 7Rank: 7

贡献度
80
金元
19062
积分
2236
精华
1
注册时间
2010-11-27
5050#
 楼主| 发表于 2013-12-24 13:36 | 只看该作者
一语笑天下 发表于 2013-12-24 12:19
宁哥,可不可以修改一下把坟墓墓碑用铲子铲掉或者锤子敲掉,基地有几个坟墓看着不太舒服,强迫症木有办法啊 ...

原本修改技巧中是有去掉墓碑的,但存档会检查墓碑信息,容易导致报错,所以删除了条目
回复 支持 反对

使用道具 举报

0

主题

149

帖子

135

积分

中级玩家

Rank: 3Rank: 3

贡献度
0
金元
1345
积分
135
精华
0
注册时间
2013-11-27
5051#
发表于 2013-12-24 13:40 | 只看该作者
为什么我在\data\scripts\prefabs\cave_banana.lua里面的inst:AddComponent("inspectable")的下一行插入local function OnDeploy (inst, pt)
    local perd = SpawnPrefab("monkey")
    if perd then
        perd: PushEvent("growfromegg")
                perd.Transform:SetPosition(pt.x, pt.y, pt.z)
        inst.components.stackable:Get():Remove()
    end
end
    inst:AddComponent("deployable")
    inst.components.deployable.ondeploy = OnDeploy

它无视我!!!!!不过可以打开
回复 支持 反对

使用道具 举报

4

主题

2998

帖子

2236

积分

游戏达人

Rank: 7Rank: 7Rank: 7

贡献度
80
金元
19062
积分
2236
精华
1
注册时间
2010-11-27
5052#
 楼主| 发表于 2013-12-24 13:42 | 只看该作者
无语。。。 发表于 2013-12-24 07:02
为什么我在\data\scripts\prefabs\cave_banana.lua里面的inst:AddComponent("inspectable")的下一行插入loc ...

文件名不对,你是插在cave_banana_tree.lua文件里了吧,等于用香蕉树种猴子,香蕉树拿不起来,当然没有用了。香蕉与其他蔬菜都在veggies.lua文件中,但会导致任何蔬菜都会种猴子,还是选别的物品来种吧
回复 支持 反对

使用道具 举报

0

主题

5

帖子

3

积分

新手玩家

Rank: 1

贡献度
0
金元
625
积分
3
精华
0
注册时间
2013-12-8
5053#
发表于 2013-12-24 14:16 | 只看该作者
本帖最后由 一语笑天下 于 2013-12-24 14:18 编辑
yzzn2009 发表于 2013-12-24 13:42
文件名不对,你是插在cave_banana_tree.lua文件里了吧,等于用香蕉树种猴子,香蕉树拿不起来,当然没有用 ...

0.0。。。
回复 支持 反对

使用道具 举报

0

主题

60

帖子

95

积分

初级玩家

Rank: 2

贡献度
0
金元
949
积分
95
精华
0
注册时间
2013-7-23
5054#
发表于 2013-12-24 16:26 | 只看该作者
190号那个孩子那个,远古守卫者角我咋搞不到?是不是一个大角上面一只眼睛?
回复 支持 反对

使用道具 举报

0

主题

149

帖子

135

积分

中级玩家

Rank: 3Rank: 3

贡献度
0
金元
1345
积分
135
精华
0
注册时间
2013-11-27
5055#
发表于 2013-12-24 18:21 | 只看该作者
本帖最后由 无语。。。 于 2013-12-24 18:25 编辑
■華麗☆的★出 发表于 2013-12-24 16:26
190号那个孩子那个,远古守卫者角我咋搞不到?是不是一个大角上面一只眼睛? ...

修改巨型超市(在主角制造栏中增加商店选项,用黄金买珍贵物品)就可以购买,或者去远古洞穴打犀牛 如果没有钱,可以
    1.用记事本打开游戏目录\data\scripts\prefabs\cutreeds.lua文件,在inst:AddComponent("inspectable")的下一行插入以下内容:
local function OnDeploy (inst, pt)
    local perd = SpawnPrefab("minotaurhorn")
    if perd then
        perd: PushEvent("growfromegg")
                perd.Transform:SetPosition(pt.x, pt.y, pt.z)
        inst.components.stackable:Get():Remove()
    end
end
    inst:AddComponent("deployable")
    inst.components.deployable.ondeploy = OnDeploy

用芦苇种远古守卫者的角
远古守卫者的角就是犀牛角。
对了,把perd: PushEvent("growfromegg")这一句里面perd:后面的空格去掉,我加空格是因为会这样perdushEvent("growfromegg")

回复 支持 反对

使用道具 举报

2

主题

227

帖子

199

积分

中级玩家

Rank: 3Rank: 3

贡献度
2
金元
1910
积分
199
精华
0
注册时间
2013-6-16
5056#
发表于 2013-12-24 18:25 | 只看该作者
兔人在洞穴里也会睡觉吗
回复 支持 反对

使用道具 举报

0

主题

149

帖子

135

积分

中级玩家

Rank: 3Rank: 3

贡献度
0
金元
1345
积分
135
精华
0
注册时间
2013-11-27
5057#
发表于 2013-12-24 18:27 | 只看该作者
宁哥这样子可不可以perd: PushEvent("growfromegg")(中间加上空格)
回复 支持 反对

使用道具 举报

8

主题

718

帖子

883

积分

超级玩家

Rank: 5Rank: 5

贡献度
2
金元
8749
积分
883
精华
0
注册时间
2012-10-9
5058#
发表于 2013-12-24 18:39 | 只看该作者
没有5格货4格装备栏的修改么0.0
回复 支持 反对

使用道具 举报

7

主题

376

帖子

355

积分

高级玩家

Rank: 4

贡献度
7
金元
3270
积分
355
精华
0
注册时间
2013-10-28
5059#
发表于 2013-12-24 18:52 | 只看该作者
宁哥,您可以打近期修改的技巧完成的文件品发给我好吗,谢谢宁哥,祝好人一生平安!
回复 支持 反对

使用道具 举报

0

主题

80

帖子

112

积分

中级玩家

Rank: 3Rank: 3

贡献度
0
金元
1115
积分
112
精华
0
注册时间
2013-10-10
5060#
发表于 2013-12-24 18:59 来自手机 | 只看该作者
ExperienceLossPerHandicapLevelAsP ercentage=20.0
这句话什么意思 ?:不是饥荒里的
回复 支持 反对

使用道具 举报

4

主题

2998

帖子

2236

积分

游戏达人

Rank: 7Rank: 7Rank: 7

贡献度
80
金元
19062
积分
2236
精华
1
注册时间
2010-11-27
5061#
 楼主| 发表于 2013-12-24 19:37 | 只看该作者
打死、烤肉酱 发表于 2013-12-24 18:25
兔人在洞穴里也会睡觉吗

是的,地上地下的时间是统一的
回复 支持 反对

使用道具 举报

4

主题

2998

帖子

2236

积分

游戏达人

Rank: 7Rank: 7Rank: 7

贡献度
80
金元
19062
积分
2236
精华
1
注册时间
2010-11-27
5062#
 楼主| 发表于 2013-12-24 19:38 | 只看该作者
■華麗☆的★出 发表于 2013-12-24 16:26
190号那个孩子那个,远古守卫者角我咋搞不到?是不是一个大角上面一只眼睛? ...

可以修改“巨型超市”购买,也可以在远古层打远古守护者(大犀牛)得到
回复 支持 反对

使用道具 举报

4

主题

2998

帖子

2236

积分

游戏达人

Rank: 7Rank: 7Rank: 7

贡献度
80
金元
19062
积分
2236
精华
1
注册时间
2010-11-27
5063#
 楼主| 发表于 2013-12-24 19:38 | 只看该作者
无语。。。 发表于 2013-12-24 18:27
宁哥这样子可不可以perd: PushEvent("growfromegg")(中间加上空格)

不能加空格
回复 支持 反对

使用道具 举报

4

主题

2998

帖子

2236

积分

游戏达人

Rank: 7Rank: 7Rank: 7

贡献度
80
金元
19062
积分
2236
精华
1
注册时间
2010-11-27
5064#
 楼主| 发表于 2013-12-24 19:42 | 只看该作者
Mue战天。 发表于 2013-12-24 18:52
宁哥,您可以打近期修改的技巧完成的文件品发给我好吗,谢谢宁哥,祝好人一生平安! ...

这是89685版的文件
http://pan.baidu.com/s/1F033C
回复 支持 反对

使用道具 举报

0

主题

149

帖子

135

积分

中级玩家

Rank: 3Rank: 3

贡献度
0
金元
1345
积分
135
精华
0
注册时间
2013-11-27
5065#
发表于 2013-12-24 19:50 | 只看该作者
宁哥,我已经会改一些简单的种植的了
回复 支持 反对

使用道具 举报

4

主题

2998

帖子

2236

积分

游戏达人

Rank: 7Rank: 7Rank: 7

贡献度
80
金元
19062
积分
2236
精华
1
注册时间
2010-11-27
5066#
 楼主| 发表于 2013-12-24 20:04 | 只看该作者
无语。。。 发表于 2013-12-24 19:50
宁哥,我已经会改一些简单的种植的了

加油!
回复 支持 反对

使用道具 举报

0

主题

235

帖子

222

积分

中级玩家

Rank: 3Rank: 3

贡献度
0
金元
2222
积分
222
精华
0
注册时间
2013-8-2
5067#
发表于 2013-12-24 20:11 | 只看该作者
yzzn2009 发表于 2013-12-24 06:03
授人以渔:开端

谢谢大神,我已经会改很多东西了
回复 支持 反对

使用道具 举报

2

主题

111

帖子

75

积分

初级玩家

Rank: 2

贡献度
2
金元
1265
积分
75
精华
0
注册时间
2013-8-15
5068#
发表于 2013-12-24 20:49 | 只看该作者
yzzn2009 发表于 2013-12-23 15:46
孩子不会下地洞,可以命令他停在洞口等待

我说的是,孩子就在洞穴上面会不会太危险....
你在洞穴,儿子就死悄悄咯............

回复 支持 反对

使用道具 举报

2

主题

227

帖子

199

积分

中级玩家

Rank: 3Rank: 3

贡献度
2
金元
1910
积分
199
精华
0
注册时间
2013-6-16
5069#
发表于 2013-12-24 21:24 | 只看该作者
怎么改孩子的移动速度
回复 支持 反对

使用道具 举报

0

主题

94

帖子

124

积分

中级玩家

Rank: 3Rank: 3

贡献度
0
金元
1242
积分
124
精华
0
注册时间
2011-2-12
5070#
发表于 2013-12-24 22:01 | 只看该作者
宁哥,能不能根据生存天数,杀死怪的数量和等级在人物死后弄一个评分系统啊 这样玩久了也不会腻啊 求了好几次了,再求
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-2-24 03:46 , Processed in 0.174918 second(s), 16 queries , Memcache On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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