手把手教你搭饥荒专用服务器(三)

您所在的位置:网站首页 精灵公主mod设置翻译在哪 手把手教你搭饥荒专用服务器(三)

手把手教你搭饥荒专用服务器(三)

2024-07-05 17:40| 来源: 网络整理| 查看: 265

友情链接:

手把手教你搭饥荒专用服务器(一)—服务器准备工作

手把手教你搭饥荒专用服务器(二)—环境配置及基本使用

手把手教你搭饥荒专用服务器(三)—MOD及其他高级设置

手把手教你搭饥荒专用服务器(四)—本地存档转专用存档

注:本篇含代码结构,在电脑上观看体验更佳

一、预备篇:存档路径及文件树

在讲解世界设置和MOD设置之前,讲一下之前已经生成好的世界的路径、文件树以及重要文件的作用,这里还是以A存档为例。

1、存档位置

如果是按照我的要求一步一步操作下来的话,云服务器饥荒存档路径为

1 /root/.klei/DoNotStarveTogether ##这个目录下有饥荒的所有存档

本地饥荒存档路径为

1 我的文档\Klei\DoNotStarveTogether ##如果找不到就在游戏主页面点击左下角的“数据”

2、MOD存放位置

本地MOD的存放路径为

1 *\Steam\steamapps\common\Don't Starve Together\mods ##这里的*指的是你本地安装STEAM的路径 2 D:\Steam\steamapps\common\Don't Starve Together\mods ##例如这是我的MOD位置

服务器MOD的存放路径为

1 /root/Steam/steamapps/common/Don't Starve Together Dedicated Server/mods

3、云服务器饥荒存档文件树

之前生成的文件树为以下结构

1 /root/.klei/DoNotStarveTogether/A ##这里以A存档为例 2 | cluster.ini ##服务器总配置文件,包括端口、密码等 3 | cluster_token.txt ##即第一节讲到的User Token 4 | startcaves.sh ##洞穴启动代码 5 | startmaster.sh ##地上启动代码 6 |——Master ##地上文件夹 7 | | modoverrides.lua ##地上的MOD配置文件 8 | | server.ini ##独立配置信息 9 | | leveldataoverride.lua ##资源配置文件 10 | |——backup文件夹 ##存放备份文件 11 | |——save文件夹 ##存放你的回退信息 12 | 13 |——Caves 14 | modoverrides.lua ##洞穴的MOD配置文件 15 | server.ini ##独立配置信息 16 | leveldataoverride.lua ##资源配置文件 17 | worldgenoverride.lua ##想要自己调整世界资源的建议删除,因为此配置信息优先级高于leveldataoverride.lua,就算你修改了资源,系统还是全默认资源 18 |——backup文件夹 ##存放备份文件 19 |——save文件夹 ##存放你的回退信息

★我将在本篇最底部附上配置文件的详细信息,喜欢全手动的小伙伴可以研究

二、世界资源设置方法—移植法

由于按照一键端生成的世界是全资源默认的纯净档,所以需要自己调整世界资源,我把此种方法称为移植法。

顾名思义既然要移植,就需要有一个现成的世界设置配置文件。(当然你可以自己配置,本篇末尾我给出了如何手动配置文件)

1、获取现成的世界资源配置文件

在你电脑上打开饥荒游戏,点击创建世界,选择一个没有用过的存档,我们以第一个为例, 按照你想要的资源进行调整,洞穴也要设置。MOD暂时可以一个都不选,我在下一块会详细讲MOD的设置。

点击创建世界,等到进入世界的时候,退出,这个时候你的配置文件已经生成啦!

2、上传你刚生成的资源文件

如何找到这个配置文件呢,返回到主页面,点击左下角的“数据”即可打开本地的存档目录

打开之后是这种结构:

因为我们是在第一个存档修改的,所以需要Cluster_1里面的文件

(1)地上资源:打开 Cluster_1 /Master/,里面的leveldataoverride.lua就是地上世界的资源配置文件啦,把这个文件覆盖上传到你服务器的/root/.klei/DoNotStarveTogether/A/Master文件夹下,地上资源就配置好啦。

(2)洞穴资源:接下来我们再覆盖洞穴的资源配置文件,在游戏主页面点“数据”,打开你的本地存档,打开 Cluster_1 /Caves/ ,同理把洞穴文件夹下的 leveldataoverride.lua 覆盖 上传至你服务器的 /root/.klei/DoNotStarveTogether/A/ Caves ,至此,地上和洞穴世界的世界资源已经配置完成

3、为什么我登上去还是默认资源?

因为你在启动服务器时,一键端已经帮你生成好了一个默认世界,要想使你自己修改的世界生效的话,需要在游戏中重新生成世界。

方法:加入到你创建的游戏中,按键Tab键,在出现的面板里点···按钮,再点击生成世界即可。

★ 如果不想一键生成,世界资源手动配置方法附加在最底部

三、MOD设置方法—移植法

学会了世界资源的移植法,MOD移植法也是同一个道理,主要分为以下三步

1、获取现成的MOD配置资源

还是登陆游戏,选择创建游戏,我们还是以第一个存档为例,在模组里勾选你想添加的模组,点击回到世界。

进入游戏之后就可以退出了, 此时MOD的配置文件已经通过游戏生成好了。

2、将生成的MOD配置文件覆盖上传

按照之前的方法,打开游戏保存位置

因为我们是在第一个存档修改的,所以需要Cluster_1里面的文件

(1)地上MOD: 打开 Cluster_1 /Master/,里面的modoverrides.lua就是地上世界的资源配置文件,把这个文件覆盖上传到你服务器的/root/.klei/DoNotStarveTogether/A/Master文件夹下,地上MOD就配置好啦。

(2)洞穴MOD: 打开 Cluster_1 /Master/,里面的modoverrides.lua就是洞穴世界的资源配置文件,把这个文件覆盖上传到你服务器的/root/.klei/DoNotStarveTogether/A/Master文件夹下,洞穴MOD就配置好啦。

3、如何使MOD生效

MOD覆盖上传之后,这时候还没有生效,因为你只是把配置文件上传了,但是还没有上传MOD的源文件。顶部预备篇我们已经提到本地MOD和服务器MOD源文件的存放路径,把本地MOD上传至服务器即可。

1 *\Steam\steamapps\common\Don't Starve Together\mods ##这里的*指的是你本地安装STEAM的路径 2 ↓上传至服务器 3 /root/Steam/steamapps/common/Don't Starve Together Dedicated Server/mods ##这是服务器MOD目录

★ MOD手动配置方法同样附加在最底部

四、设置管理员(可选)

饥荒的管理员会有特殊操作权限,如果创建者不在而你因为特殊原因要回滚世界 ,就需要被赋予管理员权限才能执行回退世界的操作

1、首先获取自己的KLEI用户ID,我在第一节提到过 ,进游戏之后点“账户”即可查看

2、在服务器存档(比如之前建立的A存档)下新建一个文本文档,命名为adminlist.txt,将你的KLEI用户ID写进去就可以啦,保存退出。

五、设置白名单(可选)

如果人太多了,挤不进去怎么办

这就需要提前给自己预留一个位置,如果服务器可以容纳8个人,设置两个白名单的话,那么相当于这个服务器只能进入6个普通用户。就算两个白名单没有上线,也只能进6个

在存档根目录下新建whitelist.txt,在里面输入你的klei用户ID即可

六、如何BAN恶意操作用户

如果有人进来就烧家、喂你植物纤维的话

BAN他!

在存档根目录下新建blocklist.txt,在里面输入他的klei用户ID,它的ID可以在日志信息中找到

当然最简单的办法是在游戏中按下Tab,直接踢

只要掌握了如何修改资源和MOD,就可以正常游戏了,如果操作能力强的可以继续往下研究,我在本页底部会把每个配置文件的内容的作用列出来

正文结束 附:各配置文件信息及手动修改方法

所给的配置文件均在ubuntu系统下调试通过,可直接使用

 

1、世界地图资源(地上部分)

如需要自己配置,将以下内容保存为 leveldataoverride.lua,放入Master文件夹中

1 return { 2 desc="标准《饥荒》体验。", 3 hideminimap=false, 4 id="SURVIVAL_TOGETHER", 5 location="forest", 6 max_playlist_position=999, 7 min_playlist_position=0, 8 name="默认", 9 numrandom_set_pieces=4, 10 override_level_string=false, 11 overrides = { ##以下为修改世界的各种选项 12 ## 默认的资源等级分别为 "never", "rare", "default", "often", "always" 13 14 ## 环境配置 15 task_set = "default", ## 默认为"classic", "default", "cave_default" 16 start_location = "default", ## 默认为"caves", "default", "plus", "darkness" 17 world_size = "default", ## 默认为"small", "medium", "default", "huge" 18 branching = "default", ## 默认为"never", "least", "default", "most" 19 loop = "default", ## 默认为"never", "default", "always" 20 autumn = "default", ## 默认为"noseason", "veryshortseason", "shortseason", "default", "longseason", "verylongseason", "random" 21 winter = "default", ## 默认为"noseason", "veryshortseason", "shortseason", "default", "longseason", "verylongseason", "random" 22 spring = "default", ## 默认为"noseason", "veryshortseason", "shortseason", "default", "longseason", "verylongseason", "random" 23 summer = "default", ## 默认为"noseason", "veryshortseason", "shortseason", "default", "longseason", "verylongseason", "random" 24 season_start = "default", ## 默认为"default", "winter", "spring", "summer", "autumnorspring", "winterorsummer", "random" 25 day = "default", ## 默认为"default", "longday", "longdusk", "longnight", "noday", "nodusk", "nonight", "onlyday", "onlydusk", "onlynight" 26 weather = "default", 27 earthquakes = "default", 28 lightning = "default", 29 frograin = "default", 30 wildfires = "default", 31 touchstone = "default", 32 regrowth = "default", ## 默认为"veryslow", "slow", "default", "fast", "veryfast" 33 cavelight = "default", ## 默认为"veryslow", "slow", "default", "fast", "veryfast" 34 boons = "default", 35 prefabswaps_start = "default", ## 默认为"classic", "default", "highly random" 36 prefabswaps = "default", ## 默认为"none", "few", "default", "many", "max" 37 38 ## 资源设置 39 flowers = "default", 40 grass = "default", 41 sapling = "default", 42 marshbush = "default", 43 tumbleweed = "default", 44 reeds = "default", 45 trees = "default", 46 flint = "default", 47 rock = "default", 48 rock_ice = "default", 49 meteorspawner = "default", 50 meteorshowers = "default", 51 mushtree = "default", 52 fern = "default", 53 flower_cave = "default", 54 wormlights = "default", 55 56 ## 随机设置 57 berrybush = "default", 58 carrot = "default", 59 mushroom = "default", 60 cactus = "default", 61 banana = "default", 62 lichen = "default", 63 64 ## 动物设置 65 rabbits = "default", 66 moles = "default", 67 butterfly = "default", 68 birds = "default", 69 buzzard = "default", 70 catcoon = "default", 71 perd = "default", 72 pigs = "default", 73 lightninggoat = "default", 74 beefalo = "default", 75 beefaloheat = "default", 76 hunt = "default", 77 alternatehunt = "default", 78 penguins = "default", 79 cave_ponds = "default", 80 ponds = "default", 81 bees = "default", 82 angrybees = "default", 83 tallbirds = "default", 84 slurper = "default", 85 bunnymen = "default", 86 slurtles = "default", 87 rocky = "default", 88 monkey = "default", 89 90 ## 怪物设置 91 spiders = "default", 92 cave_spiders = "default", 93 hounds = "default", 94 houndmound = "default", 95 merm = "default", 96 tentacles = "default", 97 chess = "default", 98 lureplants = "default", 99 walrus = "default", 100 liefs = "default", 101 deciduousmonster = "default", 102 krampus = "default", 103 bearger = "default", 104 deerclops = "default", 105 goosemoose = "default", 106 dragonfly = "default", 107 bats = "default", 108 fissure = "default", 109 worms = "default", 110 }, 111 } 2、世界地图资源(洞穴部分)

如需要自己配置,将以下内容保存为  leveldataoverride.lua ,放入Caves文件夹中

1 return { 2 background_node_range={ 0, 1 }, 3 desc="探查洞穴…… 一起!", 4 hideminimap=false, 5 id="DST_CAVE", 6 location="cave", 7 max_playlist_position=999, 8 min_playlist_position=0, 9 name="洞穴", 10 numrandom_set_pieces=0, 11 override_level_string=false, 12 overrides = { ##以下为修改世界的各种选项 13 ## 默认的资源等级分别为"never", "rare", "default", "often", "always" 14 15 ## 环境配置 16 task_set = "cave_default", ## 默认为"classic", "default", "cave_default" 17 start_location = "default", ##默认为 "caves", "default", "plus", "darkness" 18 world_size = "default", ## 默认为"small", "medium", "default", "huge" 19 branching = "default", ## 默认为"never", "least", "default", "most" 20 loop = "default", ## 默认为"never", "default", "always" 21 autumn = "default", ## 默认为"noseason", "veryshortseason", "shortseason", "default", "longseason", "verylongseason", "random" 22 winter = "default", ## 默认为"noseason", "veryshortseason", "shortseason", "default", "longseason", "verylongseason", "random" 23 spring = "default", ## 默认为"noseason", "veryshortseason", "shortseason", "default", "longseason", "verylongseason", "random" 24 summer = "default", ## 默认为"noseason", "veryshortseason", "shortseason", "default", "longseason", "verylongseason", "random" 25 season_start = "default", ## 默认为"default", "winter", "spring", "summer", "autumnorspring", "winterorsummer", "random" 26 day = "default", ## 默认为"default", "longday", "longdusk", "longnight", "noday", "nodusk", "nonight", "onlyday", "onlydusk", "onlynight" 27 weather = "default", 28 earthquakes = "default", 29 lightning = "default", 30 frograin = "default", 31 wildfires = "default", 32 touchstone = "default", 33 regrowth = "default", ## 默认为"veryslow", "slow", "default", "fast", "veryfast" 34 cavelight = "default", ## 默认为"veryslow", "slow", "default", "fast", "veryfast" 35 boons = "default", 36 prefabswaps_start = "default", ## 默认为"classic", "default", "highly random" 37 prefabswaps = "default", ## 默认为"none", "few", "default", "many", "max" 38 39 ## 资源配置 40 flowers = "default", 41 grass = "default", 42 sapling = "default", 43 marshbush = "default", 44 tumbleweed = "default", 45 reeds = "default", 46 trees = "default", 47 flint = "default", 48 rock = "default", 49 rock_ice = "default", 50 meteorspawner = "default", 51 meteorshowers = "default", 52 mushtree = "default", 53 fern = "default", 54 flower_cave = "default", 55 wormlights = "default", 56 57 ## 随机配置 58 berrybush = "default", 59 carrot = "default", 60 mushroom = "default", 61 cactus = "default", 62 banana = "default", 63 lichen = "default", 64 65 ## 动物配置 66 rabbits = "default", 67 moles = "default", 68 butterfly = "default", 69 birds = "default", 70 buzzard = "default", 71 catcoon = "default", 72 perd = "default", 73 pigs = "default", 74 lightninggoat = "default", 75 beefalo = "default", 76 beefaloheat = "default", 77 hunt = "default", 78 alternatehunt = "default", 79 penguins = "default", 80 cave_ponds = "default", 81 ponds = "default", 82 bees = "default", 83 angrybees = "default", 84 tallbirds = "default", 85 slurper = "default", 86 bunnymen = "default", 87 slurtles = "default", 88 rocky = "default", 89 monkey = "default", 90 91 ## 怪物配置 92 spiders = "default", 93 cave_spiders = "default", 94 hounds = "default", 95 houndmound = "default", 96 merm = "default", 97 tentacles = "default", 98 chess = "default", 99 lureplants = "default", 100 walrus = "default", 101 liefs = "default", 102 deciduousmonster = "default", 103 krampus = "default", 104 bearger = "default", 105 deerclops = "default", 106 goosemoose = "default", 107 dragonfly = "default", 108 bats = "default", 109 fissure = "default", 110 worms = "default", 111 }, 112 } 3、通用配置文件(即根目录下cluster.ini) 1 [GAMEPLAY] 2 max_players = 16 # 最大游戏人数 3 pvp = true # 能不能攻击其他玩家,能不能给其他玩家喂屎 4 game_mode = survival # 游戏模式,可选 survival, endless or wilderness,与玩家死亡后的负面影响有关 5 pause_when_empty = false # 没人服务器暂停,刷天数必备 6 vote_kick_enabled = false # 投票踢人 7 8 [STEAM] 9 steam_group_only = false # 只允许某 Steam 组的成员加入 10 steam_group_id = 0 # 指定某个 Steam 组,填写组 ID 11 steam_group_admins = false # 开启后,Steam 组的管理员拥有服务器的管理权限 12 13 14 [NETWORK] 15 cluster_description = ~ # 游戏房间描述 16 cluster_name = ~ # 游戏房间名称 17 cluster_intention = social # 游戏偏好,可选 cooperative, competitive, social, madness,随便设置,没用 18 cluster_password = # 游戏密码,不设置表示无密码 19 offline_server = false # 是否离线服务器,只有局域网用户能加入,并且所有依赖于 Steam 的任何功能都无效,比如说饰品掉落 20 tick_rate = 15 # 每秒通信次数,越高游戏体验越好,但是会加大服务器负担 21 whitelist_slots = 0 # 为白名单用户保留的游戏位 22 lan_only_cluster = false # 局域网游戏 23 24 25 [MISC] 26 console_enabled = true # 是否开启控制台 27 max_snapshots = 6 # 最大快照数,决定了可回滚的天数 28 29 30 [SHARD] 31 shard_enabled = true # 是否允许地上及洞穴互通,开启洞穴的话必须填true 32 bind_ip = 127.0.0.1 # 服务器监听的地址,单服务器搭建填 127.0.0.1,双服务器搭建填0.0.0.0 33 master_ip = 127.0.0.1 # 主世界服务器的 IP,单服务器搭建填127.0.0.1,双服务器搭建填写服务器的公网IP 34 master_port = 10889 # 监听 master 服务器的 UDP 端口 35 cluster_key = supersecretkey # 游戏通讯密码,每台服务器必须相同 4、独立配置文件(Master和Caves下的server.ini)

(1) 地上部分,保存为 server.ini,并放到 Master 文件夹内:

1 [NETWORK] 2 server_port = 11000 # 监听的 UDP 端口,只能介于 10998 - 11018 之间,确保每个实例都不相同 3 4 5 [SHARD] 6 is_master = true # 是否是 master 服务器,只能存在一个 true,其他全是 false 7 8 9 [STEAM] 10 master_server_port = 27018 # Steam 用的端口,确保每个实例都不相同 11 authentication_port = 8768 # Steam 用的端口,确保每个实例都不相同 12 13 14 [ACCOUNT] 15 encode_user_path = true

(2) 洞穴部分,保存为 server.ini,放到 Caves 文件夹内:

1 [NETWORK] 2 server_port = 11001 # 监听的 UDP 端口,只能介于 10998 - 11018 之间,确保每个实例都不相同 3 4 5 [SHARD] 6 is_master = false # 是否是 master 服务器,只能存在一个 true,其他全是 false 7 name = Caves # 从世界的名称 8 id = 3156403571 # 随机生成,不用加入该属性 9 10 [STEAM] 11 master_server_port = 27019 # Steam 用的端口,确保每个实例都不相同 12 authentication_port = 8769 # Steam 用的端口,确保每个实例都不相同 13 14 15 [ACCOUNT] 16 encode_user_path = true 5、MOD配置文件

因为MOD设置地上和洞穴是一样的,配置完一个之后一式两份拷贝到 Master 和 Caves 就可以了。

这里给出我配置的MOD文件作为参考

1 return { 2 ["workshop-1079538195"]={ 3 configuration_options={ 4 beebox=true, 5 birdcage=true, 6 cartographydesk=true, 7 cookpot=true, 8 dragonflychest=true, 9 dragonflyfurnace=true, 10 endtable=true, 11 firesuppressor=true, 12 icebox=true, 13 lightning_rod=true, 14 meatrack=true, 15 modsupport=true, 16 moondial=true, 17 mushroom_farm=true, 18 mushroom_light=true, 19 nightlight=true, 20 perdshrine=true, 21 pottedfern=true, 22 rainometer=true, 23 researchlab=true, 24 researchlab2=true, 25 researchlab3=true, 26 researchlab4=true, 27 resurrectionstatue=true, 28 saltlick=true, 29 scarecrow=true, 30 sculptingtable=true, 31 succulent_potted=true, 32 townportal=true, 33 treasurechest=true, 34 wardrobe=true, 35 winterometer=true 36 }, 37 enabled=true 38 }, 39 ["workshop-1166220990"]={ configuration_options={ attract=2, language=2 }, enabled=true }, 40 ["workshop-1185229307"]={ configuration_options={ }, enabled=true }, 41 ["workshop-1699194522"]={ configuration_options={ Language=true }, enabled=true }, 42 ["workshop-1829477822"]={ configuration_options={ }, enabled=true }, 43 ["workshop-1914860022"]={ configuration_options={ }, enabled=true }, 44 ["workshop-1914899068"]={ 45 configuration_options={ 46 [""]=0, 47 BATTLE_HAT_ABSORPTION=80, 48 BATTLE_HAT_HP=12000, 49 BATTLE_SPEAR_DAMAGE=42.5, 50 BATTLE_SPEAR_USES=400, 51 HAMBAT_DAMAGE=110.5, 52 HAMBAT_PERISHABLE="NO", 53 hat_goldnugget=1, 54 hat_rocks=1, 55 spear_flint=1, 56 spear_goldnugget=1, 57 spear_twigs=1 58 }, 59 enabled=true 60 }, 61 ["workshop-347079953"]={ 62 configuration_options={ DFV_Language="CN", DFV_MinimalMode="default" }, 63 enabled=true 64 }, 65 ["workshop-362175979"]={ configuration_options={ ["Draw over FoW"]="disabled" }, enabled=true }, 66 ["workshop-374550642"]={ configuration_options={ MAXSTACKSIZE=250 }, enabled=true }, 67 ["workshop-375850593"]={ configuration_options={ }, enabled=true }, 68 ["workshop-375859599"]={ 69 configuration_options={ 70 divider=5, 71 random_health_value=0, 72 random_range=0, 73 send_unknwon_prefabs=false, 74 show_type=0, 75 unknwon_prefabs=1, 76 use_blacklist=true 77 }, 78 enabled=true 79 }, 80 ["workshop-378160973"]={ 81 configuration_options={ 82 ENABLEPINGS=true, 83 FIREOPTIONS=2, 84 OVERRIDEMODE=false, 85 SHAREMINIMAPPROGRESS=true, 86 SHOWFIREICONS=true, 87 SHOWPLAYERICONS=true, 88 SHOWPLAYERSOPTIONS=2 89 }, 90 enabled=true 91 }, 92 ["workshop-462434129"]={ 93 configuration_options={ 94 MOD_RESTART_ALLOW_KILL=true, 95 MOD_RESTART_ALLOW_RESTART=true, 96 MOD_RESTART_ALLOW_RESURRECT=true, 97 MOD_RESTART_CD_BONUS=0, 98 MOD_RESTART_CD_KILL=0, 99 MOD_RESTART_CD_MAX=0, 100 MOD_RESTART_CD_RESTART=0, 101 MOD_RESTART_CD_RESURRECT=0, 102 MOD_RESTART_FORCE_DROP_MODE=0, 103 MOD_RESTART_IGNORING_ADMIN=true, 104 MOD_RESTART_MAP_SAVE=1, 105 MOD_RESTART_RESURRECT_HEALTH=100, 106 MOD_RESTART_TRIGGER_MODE=1, 107 MOD_RESTART_WELCOME_TIPS=true, 108 MOD_RESTART_WELCOME_TIPS_TIME=6 109 }, 110 enabled=true 111 }, 112 ["workshop-466732225"]={ configuration_options={ }, enabled=true }, 113 ["workshop-588560555"]={ configuration_options={ }, enabled=true }, 114 ["workshop-661253977"]={ 115 configuration_options={ amudiao=true, baodiao=1, kong=0, rendiao=2, zbdiao=true }, 116 enabled=true 117 }, 118 ["workshop-666155465"]={ 119 configuration_options={ 120 chestB=-1, 121 chestG=-1, 122 chestR=-1, 123 food_estimation=-1, 124 food_order=0, 125 food_style=1, 126 lang="chs", 127 show_food_units=-1, 128 show_uses=-1 129 }, 130 enabled=true 131 }, 132 ["workshop-679636739"]={ configuration_options={ }, enabled=true }, 133 ["workshop-770901818"]={ 134 configuration_options={ days=2, enable_houndattack=true, format="complex" }, 135 enabled=true 136 } 137 }

如需转载,请注明出处:wuter.cn



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3