zoukankan      html  css  js  c++  java
  • Steam饥荒

    存档回滚

    D:Program Files (x86)Steamuserdata***219740
    emote

    巨人国是survival_数字,海难是shipwreck_数字,哈姆雷特是porkland_数字。

    先新建一个相同dll的文档,然后把备份覆盖进去改掉数字插槽位置,重新启动即可。

    Lua脚本

    steam单机版时分不清改哪个文件,嫌麻烦可以卸载掉另外两个dll。

    dont_starvedata下面,DLC0001为巨人国,DLC0002为海难,DLC0003为Hamlet,其他为原版的素材及源码(其他三个dlc也会用一些公用的源码文件及素材)。

    快速采集

    首先进入饥荒单机版目录D:Program Files (x86)Steamsteamappscommondont_starve

    1.草:用记事本打开游戏目录dataDLC0001scriptsprefabsgrass.lua文件,在inst:AddComponent("pickable")的下一行插入inst.components.pickable.quickpick = true
    2.树枝:用记事本打开游戏目录dataDLC0001scriptsprefabssapling.lua文件,在inst:AddComponent("pickable")的下一行插入inst.components.pickable.quickpick = true
    3.浆果:用记事本打开游戏目录dataDLC0001scriptsprefabserrybush.lua文件,在inst:AddComponent("pickable")的下一行插入inst.components.pickable.quickpick = true

    远程采集和拾起物品

    用记事本打开游戏目录dataDLC0001scriptsactions.lua文件,将下列内容:
    PICK = Action(),
    PICKUP = Action(1),
    替换为:
    PICK = Action({},0, true, false, 20),
    PICKUP = Action({},1, true, false, 20),

     

    一斧砍倒一棵树、一镐开掉一块石

    这两个文件是共用的,dll中没有此文件

    datascriptsprefabsaxe.lua文件

    inst.components.tool:SetAction(ACTIONS.CHOP)替换为inst.components.tool:SetAction(ACTIONS.CHOP, 15)

    datascriptsprefabspickaxe.lua文件

    inst.components.tool:SetAction(ACTIONS.MINE)替换为inst.components.tool:SetAction(ACTIONS.MINE, 15)

    冰箱永久保鲜

    scripts uning.lua文件,将PERISH_FRIDGE_MULT = .5,替换为PERISH_FRIDGE_MULT = 0,

    如果将0改为负数比如-5,则可使不新鲜的食物回复新鲜度。

    其他各种东西的属性也在tuning.lua里更改

    旷工帽无限时间

    scriptsprefabshats.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, -- 手提灯时间延长十倍

    人物回血

     scriptsprefabsplayer_common.lua中

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

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

    墙壁永固(自己可砸,怪物无法破坏)

     scriptsprefabswalls.lua文件,在inst:AddTag("noauradamage")的下一行插入以下内容:

    inst.components.health:SetInvincible(true)

    DST  Dedicated Server

    创建服务器目录

    首先在联机版中新建一个存档,找到对应的位置D:UsersAutumnDocumentsKleiDoNotStarveTogether,对应的1-5插槽如下图。

    生成Token

    进入游戏后执行TheNet:GenereteClusterToken()会在指定Cluster插槽下面生成Token(服务器认证用)

    TheNet:GenerateClusterToken()

    bat配置服务器目录并启动

    然后,找到steamappscommonDon't Starve Together Dedicated Serverinscripts下的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 Filessteamcmdsteamcmd.exe +login anonymous +app_update 343050 validate +quit
    cd "D:Program Files (x86)SteamsteamappscommonDon't Starve Together Dedicated Serverin"
    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中

    SteamsteamappscommonDon't Starve Togetherdatadatabundlesscripts.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

  • 相关阅读:
    HDU-1702-ACboy needs your help again!(Stack)
    HDU1276-士兵队列训练问题 (Queue)
    HDU1285-确定比赛名次(拓扑+优先队列)
    The Preliminary Contest for ICPC Asia Nanjing 2019
    拓扑排序板子 hihocoder-1174
    BZOJ1066 [SCOI2007]蜥蜴
    BZOJ3888 [Usaco2015 Jan]Stampede
    BZOJ1718 [Usaco2006 Jan] Redundant Paths 分离的路径
    BZOJ1112 [POI2008]砖块Klo
    BZOJ1031 [JSOI2007]字符加密Cipher
  • 原文地址:https://www.cnblogs.com/aeolian/p/10577725.html
Copyright © 2011-2022 走看看