Steam飢荒


存檔回滾

D:\Program Files (x86)\Steam\userdata\***\219740\remote

巨人國是survival_數字,海難是shipwreck_數字,哈姆雷特是porkland_數字。

先新建一個相同dll的文檔,然后把備份覆蓋進去改掉數字插槽位置,重新啟動即可。

Lua腳本

steam單機版時分不清改哪個文件,嫌麻煩可以卸載掉另外兩個dll。

dont_starve\data下面,DLC0001為巨人國,DLC0002為海難,DLC0003為Hamlet,其他為原版的素材及源碼(其他三個dlc也會用一些公用的源碼文件及素材)。

快速采集

首先進入飢荒單機版目錄D:\Program Files (x86)\Steam\steamapps\common\dont_starve\

1.草:用記事本打開游戲目錄\data\DLC0001\scripts\prefabs\grass.lua文件,在inst:AddComponent("pickable")的下一行插入inst.components.pickable.quickpick = true
2.樹枝:用記事本打開游戲目錄\data\DLC0001\scripts\prefabs\sapling.lua文件,在inst:AddComponent("pickable")的下一行插入inst.components.pickable.quickpick = true
3.漿果:用記事本打開游戲目錄\data\DLC0001\scripts\prefabs\berrybush.lua文件,在inst:AddComponent("pickable")的下一行插入inst.components.pickable.quickpick = true

遠程采集和拾起物品

用記事本打開游戲目錄\data\DLC0001\scripts\actions.lua文件,將下列內容:
PICK = Action(),
PICKUP = Action(1),
替換為:
PICK = Action({},0, true, false, 20),
PICKUP = Action({},1, true, false, 20),

 

一斧砍倒一棵樹、一鎬開掉一塊石

這兩個文件是共用的,dll中沒有此文件

\data\scripts\prefabs\axe.lua文件

inst.components.tool:SetAction(ACTIONS.CHOP)替換為inst.components.tool:SetAction(ACTIONS.CHOP, 15)

\data\scripts\prefabs\pickaxe.lua文件

inst.components.tool:SetAction(ACTIONS.MINE)替換為inst.components.tool:SetAction(ACTIONS.MINE, 15)

冰箱永久保鮮

scripts\tuning.lua文件,將PERISH_FRIDGE_MULT = .5,替換為PERISH_FRIDGE_MULT = 0,

如果將0改為負數比如-5,則可使不新鮮的食物回復新鮮度。

其他各種東西的屬性也在tuning.lua里更改

曠工帽無限時間

\scripts\prefabs\hats.lua中更改

inst.components.fueled:StartConsuming()  --開始消耗
inst.SoundEmitter:PlaySound("dontstarve/common/minerhatAddFuel")
改為
inst.components.fueled:StopConsuming()  --停止消耗
inst.SoundEmitter:PlaySound("dontstarve/common/minerhatAddFuel")

或者在tuning.lua中調節

MINERHAT_LIGHTTIME = (night_time+dusk_time)*2.6*10, -- 礦工帽時間延長十倍
LANTERN_LIGHTTIME = (night_time+dusk_time)*2.6*10, -- 手提燈時間延長十倍

人物回血

 scripts\prefabs\player_common.lua中

inst.components.health:SetMaxHealth(TUNING.WILSON_HEALTH)下面加如下代碼

inst.components.health:StartRegen(1, 10) -- 每十秒恢復一滴血

牆壁永固(自己可砸,怪物無法破壞)

 \scripts\prefabs\walls.lua文件,在inst:AddTag("noauradamage")的下一行插入以下內容:

inst.components.health:SetInvincible(true)

DST  Dedicated Server

創建服務器目錄

首先在聯機版中新建一個存檔,找到對應的位置D:\Users\Autumn\Documents\Klei\DoNotStarveTogether,對應的1-5插槽如下圖。

生成Token

進入游戲后執行TheNet:GenereteClusterToken()會在指定Cluster插槽下面生成Token(服務器認證用)

TheNet:GenerateClusterToken()

bat配置服務器目錄並啟動

然后,找到steamapps\common\Don't Starve Together Dedicated Server\bin\scripts下的launch_preconfigured_servers.bat

復制一份並修改為。這里的Cluster_2用第二個插槽作為服務器目錄,也可以復制為其他的名字(如MyDediServer)。

@ECHO OFF

set SteamAppId=322330
set SteamGameId=322330

cd ..
start "Don't Starve Together Overworld" /D "%~dp0.." "%~dp0..\dontstarve_dedicated_server_nullrenderer.exe" -cluster Cluster_2 -shard Master -console
start "Don't Starve Together Caves"     /D "%~dp0.." "%~dp0..\dontstarve_dedicated_server_nullrenderer.exe" -cluster Cluster_2 -shard Caves -console

老版啟動代碼

D:\Program Files\steamcmd\steamcmd.exe +login anonymous +app_update 343050 validate +quit
cd "D:\Program Files (x86)\Steam\steamapps\common\Don't Starve Together Dedicated Server\bin"
start dontstarve_dedicated_server_nullrenderer -console -cluster publicDSTServer -shard Master
start dontstarve_dedicated_server_nullrenderer -console -cluster publicDSTServer -shard Caves

啟動該bat文件

管理員列表

在cluster_token.txt同級新建一個文件adminlist.txt,每一行為keli的userID

修改服務器源碼

首先關掉服務器和游戲(服務器的文件也是從本地游戲中獲取),否則修改無法保存到zip中

\Steam\steamapps\common\Don't Starve Together\data\databundles\scripts.zip直接打開,像單機版修改即可。內容可能會有差異,但是大體相同(親測)。

Linux下搭建DST Dedicate Server

運行庫的安裝

       libstdc++6:i386(Cntos系統libstdc++.i686)
       libgcc1:i386(Centos系統glibc.i686)
       libcurl4-gnutls-dev:i386(Centos系統libcurl.i686)
       steamcmd命令的安裝

用yum命令安裝libstdc++、libgcc、libcurl。如果安裝失敗可以挨個安裝,如果存在Protected multilib versions,在后面加--setopt=protected_multilib=false。

yum install glibc.i686 libstdc++.i686 libcurl.i686 -y

新建用戶並進入用戶的根目錄

useradd steam   #添加用戶
passwd steam   #設置密碼

su steam   #切換用戶
cd ~  #進入到用戶主文件夾
# 或者
cd /home/steam   #不切換用戶直接進入steam用戶根目錄下面

下載steamcmd

網上下載steam官方提供的steamcmd命令安裝包,並解壓

wget http://media.steampowered.com/installer/steamcmd_linux.tar.gz
tar -xvzf steamcmd_linux.tar.gz

運行steamcmd.sh文件,下載一些文件。

./steamcmd.sh

下載完成后如下圖,繼續操作。

登錄Steam賬號

輸入Steam賬戶名密碼

login 用戶名 密碼

登錄過程中會發送一封郵件到你的郵箱,查看驗證碼並輸入。

設置游戲目錄

這里的目錄為steam游戲的目錄不是飢荒的專屬目錄。

force_install_dir <目錄>

安裝飢荒服務器程序,Steam游戲Appid查詢網址http://steamdb.sinaapp.com/

app_update 游戲的steam appid (Steam Application ID ) [validate]

quit命令退出steam操作台

配置飢荒專用服務器

mkdir -p ~/.klei/DoNotStarveTogether/Documents   #在用戶主目錄下創建存檔文件夾,klei文件夾和DoNotStarveTogether文件夾是飢荒默認的不可更改,此處Document即為Cluster
cd ~/.klei/DoNotStarveTogether/Documents/   #這里注意一定要切換到steam用戶
#創建adminlist.txt和cluster_token.txt用於存放之前獲得的UserID和令牌號
vim adminlist.txt
vim cluster_token.txt
#創建服務器端的設置文件,cluster.ini注意此文件必須要用utf8(無bom)進行存儲,否則部分設置無效,最好下個notepad++
vim cluster.ini

下面的這些步驟直接在DST中復制即可

配置cluster.ini文件

[GAMEPLAY]
max_players = 3   #最大人數
pvp = false   #是否開啟pvp
game_mode = survival   #游戲模式(生存,荒野等)
pause_when_empty = true   #服務器無人時,自動暫停
vote_kick_enabled = false   #投票踢人
 
[NETWORK]

cluster_description =  #服務器介紹
cluster_name = #服務器名字
cluster_password = #服務器的密碼
cluster_intention = cooperative   ##游戲的意圖(合作,競爭,無盡)
 
[MISC]
max_snapshots = 6
console_enabled = true   #是否開啟控制台
 
#IP端口設置,一般不用改
[SHARD]
shard_enabled = true
bind_ip = 127.0.0.1
master_ip = 127.0.0.1
master_port = 10889
cluster_key = supersecretkey

創建主世界Master

mkdir Master
cd Master

 創建server.ini和worldgenoverride.lua用於存儲服務器信息和世界信息

server.ini

vim server.ini    #配置服務器信息

[NETWORK]
server_port = 11000
 
[SHARD]
is_master = true
 
[STEAM]
master_server_port = 27018
authentication_port = 8768
 
[ACCOUNT]
encode_user_path = true

worldgenoverride.lua

vim worldgenoverride.lua    #配置世界信息
return {
        override_enabled = true,
        preset = "SURVIVAL_TOGETHER",
        misc = {
                world_size = "huge",
        },
        monsters = {
                walrus = "often",
        },
}

創建地穴世界

cd ..
mkdir Caves
cd Caves

server.ini

[NETWORK]
server_port = 11001
 
[SHARD]
is_master = false
name = Caves
id = 1811570792
 
[STEAM]
master_server_port = 27019
authentication_port = 8769
 
[ACCOUNT]
encode_user_path = true

worldgenoverride.lua

return {
        override_enabled = true,
        preset = "DST_CAVE",
        misc = {
                world_size = "huge"
        }
}

運行如下命令

cd /home/steam/DST_aeolian/bin
./dontstarve_dedicated_server_nullrenderer

運行出現如下即說明c依賴沒有缺失。

運行時可能會出現問題

問題1、

報錯./dontstarve_dedicated_server_nullrenderer: error while loading shared libraries: libcurl-gnutls.so.4: cannot open shared object file: No such file or directory

CentOS特有的錯,Unbantu不存在

解決辦法

$ cd /usr/lib/
$ ln -s libcurl.so.4 libcurl-gnutls.so.4

問題2、

查看依賴包

cd /home/steam/DST_aeolian/bin
ldd dontstarve_dedicated_server_nullrenderer    #查看依賴的包

有三個依賴包沒有

解決辦法

第一個libc.so.6依賴包在/home/steam/lib32下面復制過去即可,剩下兩個用--setopt=protected_multilib=false安裝運行庫(即第一步)

升級Glibc(勿用,我用這個把系統裝崩了,不知道為啥)

訪問http://ftp.gnu.org/gnu/glibc/glibc-2.15.tar.gz下載響應安裝包(根據具體問題選擇對應的glibc版本);

下載后執行以下命令:

  tar zxvf glibc-2.15.tar.gz
  cd glibc-2.15
  mkdir glibc-build-2.15
  cd glibc-build-2.15
  ../configure --prefix=/opt/glibc-2.15
  make
  make install

問題3、

運行screen命令,首先yum install screen命令安裝screen命令

cd /home/steam/steamapps/DST_aeolian/bin
/usr/bin/screen -S "DST" /bin/sh -c './dontstarve_dedicated_server_nullrenderer -console'

若是出現Cannot open your terminal'/dev/pts/1' - please check.運行如下文件

script /dev/null

啟動

進入到用戶主文件夾,編寫startDST.sh  shell啟動腳本,一定要用steam用戶執行

cd ~
vim startDST.sh
startDST.sh內容如下
#!/bin/bash
#前面的文件夾更改后,下面的相應值也需要更改
steamcmd_dir="$HOME/steamcmd"
install_dir="$HOME/DST_aeolian"
cluster_name="Documents"
cd "$install_dir/bin"
 
run_shared=(./dontstarve_dedicated_server_nullrenderer)
run_shared+=(-console)
run_shared+=(-cluster "$cluster_name")
run_shared+=(-monitor_parent_process $$)
 
#不想開啟洞穴就把&和后面的都去掉
"${run_shared[@]}" -shard Master | sed 's/^/Master: /' &
"${run_shared[@]}" -shard Caves  | sed 's/^/Caves:  /'

賦權限,運行,可能出現的問題bash: ./startDSTServer.sh: /bin/bash^M: bad interpreter: No such file or directory

chmod 777 startDST.sh
./startDST.sh

可能遇到問題

1.執行命令后出現steamclient.so: cannot open shared object file: No such file or directory

解決辦法

locate -b 'steamclient.so'查看so文件位置,cp到/home/steam/DST_aeolian/bin/lib32下面。

若移動后啟動出現steamclient.so: wrong ELF class: ELFCLASS64,則cp另一個32/64位的so文件到/home/steam/DST_aeolian/bin/lib32下面

2.出現bad thread local

我的是因為Cluster所屬用戶不是steam而是root。

解決辦法是用root執行 chown -R steam /publicDSTServer

 

看到Slave LUA is now ready!就說明你成功了。

 

永久運行

su steam #使用steam用戶登錄
cd ~/aeolian/bin/   #~為/home/steam
nohup ./startDSTServer &  #永久運行

 或者

screen -s 'DST' ./startDSTServer

 

 

覺得好的話支持一下哦~后期會一直更新

網上的資料:

https://wenku.baidu.com/view/53b888eb0912a216157929b7.html

https://www.gamersky.com/handbook/201501/513086.shtml

https://blog.csdn.net/qq_35543890/article/details/81257937

https://dontstarve.fandom.com/wiki/Guides/Don%E2%80%99t_Starve_Together_Dedicated_Servers


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM