TShock从零开始的使用教学-基础-上

基础

包含问题Tshock插件与基础配置

壹.安装

一. 环境(.NET Framework 4.5,.Net Runtime,xnafx40_redist)

配置环境是启动服务器和游戏的前提条件,.Net Runtime与普通的.Net有些不同,安装时请确定.Net是.Net Runtime,泰拉瑞亚默认要求6.0
配置环境是启动服务器和游戏的前提条件,.Net Runtime与普通的.Net有些不同,安装时请确定.Net是.Net Runtime
.Net Runtime6.0安装地址
.NET Framework 4.5安装地址

.NET Framework 4.5

  1. 打开网站(.NET Framework 4.5)

  2. 往下翻找到下载,当然我们也可以使用直接链接

在这里由于我已经下载了,我就不演示了。

在这里插入图片描述

.Net Runtime6.0

  1. 打开网站(.Net Runtime6.0)
  2. 往下翻找到运行控制台应用,在这里我们默认选择下载x64
    当然我们也可以使用直接链接
    Tshock服务端采用的是控制台类型所以选择运行控制台应用

  1. 下载后运行,可以按照默认选择安装
    安装
    安装完后,会显示安装成功
    安装完后

xnafx40_redist

  1. 打开网站(xnafx40_redist)
    xnafx40_redist下载地址

    在这里我们不需要调整安装语言,因为他只有英语。
    接着我们直接点击安装。
  2. 安装完后运行
    在这里我们点击Nest
    在这里插入图片描述
  3. 接着再点击I accept the terms in the License Agreement
    点击完后我们就可以接着点击Nest,对于协议有能力的可以看一下。
    在这里插入图片描述
  4. 最后我们就可以正式开始安装
    在这里插入图片描述
    安装完后,我们直接点击Finish
    在这里插入图片描述

Tshock简单配置

下载

Tshock-github地址
Pt.0-1:下载解压安装说明​
首先进入github,搜索tshock,或者点击本处链接(可能需要steam++)
点击Releases
1

根据自己的版本下载链接中的TShock,直接解压至自己知道的目录即可
2

我这里以win为例子(其他版本差别不会很大)
注:请务必保留安装包下的最外层目录,防止引起混乱
现在你安装完毕的TShock应该是这个样子
在这里插入图片描述
压缩包默认只有这些东西

配置

  1. 了解启动程序
    更适用于没有.Net Runtime配置环境的可以使用它会自动配置.Net Runtime
    但自动配置时间很长,不推荐
    TShock.Installer.exe在这里插入图片描述
    适用于有.Net Runtime配置环境
    TShock.Server.exe
    在这里插入图片描述
  2. 配置文件
    运行完后,会增加文件
    在这里插入图片描述
    tshock里面储存的是配置文件
    默认有这些
Tshock 5.2 配置文件注释详解

config.json文件中配置信息包括:

1. 服务器设置:如服务器名称、描述、密码、端口号等。
2. 权限设置:定义不同的用户组和每个组的权限。
3. 插件设置:如果服务器使用额外的插件,它们的配置也可能在这里设置。
4. 玩家管理:比如自动踢出设置、玩家黑名单等。
5. 日志记录:服务器的日志记录设置,包括日志级别和日志文件的位置。
6. 安全设置:比如防止恶意行为的设置,如反作弊、防止恶意登录等。
7. 网络设置:如服务器的IP地址、最大玩家数量等。
8. 数据库设置:如果 TShock 使用数据库来存储玩家数据,这里会包含数据库的连接信息。
{
  "Settings": {
    "ServerPassword": "",    //服务器密码
    "ServerPort": 7777,    //服务器端口
    "MaxSlots": 8,    //最大人数
    "ReservedSlots": 20,    //服务器满员时,保留玩家可以加入的保留空位数量。
    "ServerName": "",    //服务器名称(请检查是否是 utf 编码,如果不是记事本打开另存为选择 utf-8)
    "UseServerName": false,    //是否使用服务器名称,如果使用,将显示上面服务器名称而不是世界名称
    "LogPath": "tshock/logs",    //日志路径,像默认填的 tshock/logs 就是指服务器根目录 \tshock\logs
    "DebugLogs": false,    //是否启用报错日志(一般不用开启)
    "DisableLoginBeforeJoin": false,    //启用此项将禁止用户在加入时使用帐户密码登录。
    "IgnoreChestStacksOnLoad": false,    //启用此项将允许箱子中的堆叠数量超出堆叠限制。
    "AutoSave": true,   //是否自动保存存档
    "AnnounceSave": true,    //是否自动保存存档时发送广播通知(开启后自动保存会在聊天框里显示 saving world...)
    "ShowBackupAutosaveMessages": true,    //是否显示自动保存提示(显示自动保存消息)
    "BackupInterval": 10,    //备份频率,填入的值为分钟,保存的文件在 \tshock\backups 文件夹中。
    "BackupKeepFor": 240,    //备份保存时间,填入的值为分钟
    "SaveWorldOnCrash": true,     //崩溃时是否自动保存
    "SaveWorldOnLastPlayerExit": true,    //是否在最后一个玩家退出后自动保存世界
    "InvasionMultiplier": 1,    //入侵乘数(人话:打事件进度条需要多少怪)计算入侵事件规模的公式为:100 + 乘数*(生命值大于 200 的在线玩家数量)
    "DefaultMaximumSpawns": 5,    //每波生成的默认最大怪物数。越高意味着该波中有更多的小怪。
    "DefaultSpawnRate": 600,    //波之间的延迟。较低的值会导致更多的怪物。
    "InfiniteInvasion": false,    //使入侵规模永不减小。运行指令 /invade,注意这会向地图的生成队列中添加超过 200 万个哥布林。
    "PvPMode": "normal",    //填入的值可为:"always"——强制开启;"disabled"——强制关闭;"normal"——正常模式
    "SpawnProtection": true,    //是否启用出生点保护(岩浆和水生成黑曜石可以恶意堵上)开启状态下玩家在出生点附近无法放置和破坏物块
    "SpawnProtectionRadius": 10,    //出生点保护范围(出生点为中心的正方形)
    "RangeChecks": true,    //是否启用根据玩家互连块位置之间的距离的反作弊范围检查
    "HardcoreOnly": false,    //是否启用强制硬核
    "MediumcoreOnly": false,    //是否启用强制中核
    "SoftcoreOnly": false,    //是否启用强制软核
    "DisableBuild": false,    //是否禁止建筑
    "DisableHardmode": false,    //如果为 true 禁止进入肉后
    "DisableDungeonGuardian": false,    //是否禁止生成地牢守卫
    "DisableClownBombs": false,    //是否禁止小丑炸弹爆炸
    "DisableSnowBalls": false,    //是否禁止雪球射弹生成
    "DisableTombstones": true,    //是否禁止墓碑生成
    "DisablePrimeBombs": false,    //是否禁止炸弹爆炸
    "ForceTime": "normal",    //day 永昼;night 永夜;normal 正常
    "DisableInvisPvP": false,    //是否在pvp中禁用隐身药水
    "MaxRangeForDisabled": 10,    //被禁用玩家可以移动的最大距离(以方块为单位)
    "RegionProtectChests": false,    //是否保护保护区域内的箱子
    "RegionProtectGemLocks": true,    //是否保护保护区域内的宝石锁
    "IgnoreProjUpdate": false,    //是否忽略检查玩家能否更新射弹
    "IgnoreProjKill": false,    //是否忽略检查玩家能否击毁射弹
    "AllowCutTilesAndBreakables": false,    //是否允许玩家破坏易碎方块(草或者花)
    "AllowIce": false,    //是否允许玩家在无法建筑的地方放冰块
    "AllowCrimsonCreep": true,    //是否开启猩红蔓延
    "AllowCorruptionCreep": true,    //是否开启猩红腐化蔓延
    "AllowHallowCreep": true,    //是否开启神圣蔓延
    "StatueSpawn200": 3,    //雕像在 200 格内生成最大数量
    "StatueSpawn600": 6,    //同上,但是是 600 格
    "StatueSpawnWorld": 10,    //雕像可以生成多少 npc
    "PreventBannedItemSpawn": false,    //是否开启防止被禁的物品生成或指令拿到
    "PreventDeadModification": true,    //是否开启阻止玩家在死亡后与世界互动
    "PreventInvalidPlaceStyle": true,    //是否开启防止玩家放置无效方块
    "ForceXmas": false,    //是否强制圣诞节
    "ForceHalloween": false,    //是否强制万圣节
    "AllowAllowedGroupsToSpawnBannedItems": false,    //是否允许管理员获取被禁的物品
    "RespawnSeconds": 0,    //玩家重生时间,单位为秒
    "RespawnBossSeconds": 0,    //附近有 Boss 时玩家重生时间,单位为秒
    "AnonymousBossInvasions": true,    //是否公告 Boss 重生或者入侵事件开始
    "MaxHP": 500,     //没有装备增益的情况下玩家最大生命值
    "MaxMP": 200,    //没有装备增益的情况下玩家最大魔法值
    "BombExplosionRadius": 5,    //炸弹影响范围
    "GiveItemsDirectly": false,    //如果设置为 true,给予玩家的物品将直接插入他们的库存中。需要 SSC。否则,给予玩家的物品将作为掉落物品生成。实验性功能。可能无法正常工作或导致物品丢失。
    "DefaultRegistrationGroupName": "default",    //新注册玩家默认权限组
    "DefaultGuestGroupName": "guest",    //未注册玩家默认权限组
    "RememberLeavePos": false,    //根据玩家的 IP 记忆玩家离开的位置,服务器重新启动会导致上述记忆丢失。开启此项可使玩家再次进入服务器时出生在上次离开的位置
    "MaximumLoginAttempts": 3,    //登录失败最大次数
    "KickOnMediumcoreDeath": false,    //是否踢出死亡的中核玩家
    "MediumcoreKickReason": "Death results in a kick",    //踢出死亡中核玩家的原因
    "BanOnMediumcoreDeath": false,    //是否在中核玩家死亡后 ban 掉他
    "MediumcoreBanReason": "Death results in a ban",    //中核玩家死亡后 ban 的原因
    "DisableDefaultIPBan": false,    //此项为true,则如果没有参数传递给 ban 命令,则默认禁用 IP 禁止。
    "EnableWhitelist": false,    //是否启用白名单
    "WhitelistKickReason": "You are not on the whitelist.",    //不在白名单中玩家被踢出原因
    "ServerFullReason": "Server is full",    //服务器已满玩家无法进入显示的原因
    "ServerFullNoReservedReason": "Server is full. No reserved slots open.",    //保留人数达到上限玩家无法进入显示的原因
    "KickOnHardcoreDeath": false,    //是否踢出死亡的硬核玩家
    "HardcoreKickReason": "Death results in a kick",    //踢出死亡硬核玩家的原因
    "BanOnHardcoreDeath": false,    //是否在硬核玩家死亡后 ban 掉他
    "HardcoreBanReason": "Death results in a ban",    //中核玩家死亡后 ban 的原因
    "KickProxyUsers": true,    //如果 GeoIP 可用,ban 掉通过代理链接服务器的玩家
    "RequireLogin": false,    //强制注册登录
    "AllowLoginAnyUsername": true,    //允许玩家登录的账号与角色名不符
    "AllowRegisterAnyUsername": false,    //允许玩家注册与角色名称不同的账号
    "MinimumPasswordLength": 4,    //新账号密码的最短长度(最大2147483647)
    "BCryptWorkFactor": 7,    //决定使用的 BCrypt 工作因子
    "DisableUUIDLogin": false,    //是否禁止用客户端 UUID 登录
    "KickEmptyUUID": false,    //踢出不把 UUID 上传服务器的玩家
    "TilePaintThreshold": 15,    //如果一秒刷漆超过此数量的方块,则禁止该玩家
    "KickOnTilePaintThresholdBroken": false,    //玩家超过一秒刷漆上限是否 ban
    "MaxDamage": 1175,    //玩家可以造成的最大伤害
    "MaxProjDamage": 1175,    //射弹最大伤害
    "KickOnDamageThresholdBroken": false,    //超过最大伤害是否踢出服务器
    "TileKillThreshold": 60,    //如果一秒破坏超过此数量的方块,则禁止该玩家
    "KickOnTileKillThresholdBroken": false,    //玩家超过一秒破坏方块上限是否 ban
    "TilePlaceThreshold": 32,    //如果一秒放置超过此数量的方块,则禁止该玩家
    "KickOnTilePlaceThresholdBroken": false,    //玩家超过一秒放置方块上限是否 ban
    "TileLiquidThreshold": 50,    //如果一秒放置超过此数量的液体,则禁止该玩家
    "KickOnTileLiquidThresholdBroken": false,    //玩家超过一秒放置液体上限是否 ban
    "ProjIgnoreShrapnel": true,    //射弹数量计算是否加上水晶子弹碎片
    "ProjectileThreshold": 50,    //如果一秒发射超过此数量的射弹,则禁止该玩家
    "KickOnProjectileThresholdBroken": false,    //玩家超过一秒发射射弹上限是否 ban
    "HealOtherThreshold": 50,    //如果一秒发送超过此数量的 HealOtherPlayer 数据包,则禁止该玩家
    "KickOnHealOtherThresholdBroken": false,    //玩家超过一秒发送 HealOtherPlayer 数据包上限是否 ban
    "SuppressPermissionFailureNotices": false,    //是否禁止显示权限失败通知(人话:权限不够打完指令也不告诉你)
    "DisableModifiedZenith": false,    //是否禁用修改后的天顶剑
    "DisableCustomDeathMessages": true,    //是否禁用自定义死亡消息
    "CommandSpecifier": "/",    //指令前缀(一个字符不能为中文)(如果设为* 那么打指令是这样的 * give)
    "CommandSilentSpecifier": ".",    //指令静音处理前缀(没有任何动静处理命令,恶搞必备)
    "DisableSpewLogs": true,    //是否阻止日志记录发送给有日志权限的玩家
    "DisableSecondUpdateLogs": false,    //防止 OnSecondUpdate 检查写入日志文件
    "SuperAdminChatRGB": [
      255,
      255,
      255
    ],    //管理员权限组在聊天框显示颜色
    "SuperAdminChatPrefix": "(Super Admin) ",    //管理员权限组在聊天框显示的前置字(低调点就不填或者空格,双引号里的括号能删)
    "SuperAdminChatSuffix": "",    //管理员权限组在聊天框后置显示的字
    "EnableGeoIP": false,    //是否根据玩家ip在加入服务器的时候广播国家/地区
    "DisplayIPToAdmins": false,    //向具有日志权限的玩家显示加入玩家的ip
    "ChatFormat": "{1}{2}{3}: {4}",    //聊天格式{0}=权限组名称 {1}=权限组前置字串 {2}=玩家名称 {3}=权限组后置字串 {4}=聊天信息(注意!双引号里那个冒号也能改!)
    "ChatAboveHeadsFormat": "{2}",    //用聊天泡泡时改变玩家名称
    "EnableChatAboveHeads": false,    //是否在玩家头上显示聊天信息(这玩意就是聊天泡泡)
    "BroadcastRGB": [
      127,
      255,
      212
    ],    //广播信息的 RGB 颜色
    "StorageType": "sqlite",    //数据库类型,可选:mysql;sqlite
    "SqliteDBPath": "tshock.sqlite",    //储存数据库路径(像tshock.sqlite的意思就是服务器根目录\tshock)
    "MySqlHost": "localhost:3306",    //mysql连接的ip和端口
    "MySqlDbName": "",    //mysql作为存储类型时用的数据库名称
    "MySqlUsername": "",    //mysql作为存储类型时用的账号
    "MySqlPassword": "",    //mysql作为存储类型时用的密码
    "UseSqlLogs": false,    //是否将日志存到数据库而不是txt
    "RevertToTextLogsOnSqlFailures": 10,    //SQL 日志必须在回复到文本日志之前无法插入日志的次数
    "RestApiEnabled": false,    //是否开启 Rest Api
    "RestApiPort": 7878,    // Rest Api 使用的端口
    "LogRest": false,    //是否记录 Rest Api 连线
    "EnableTokenEndpointAuthentication": false,    //是否通过权限认证才能使用
    "RESTMaximumRequestsPerInterval": 5,    //拒绝请求前连线池中最大的 rest 请求数(最小为5)
    "RESTRequestBucketDecreaseIntervalMinutes": 1,    // rest 请求连线池以分钟为单位所减少1单位数量的频率,最小为1(分钟)
    "ApplicationRestTokens": {}    //外部应用可对服务器查询的 rest 权限列表
  }
}

配置文件 ssconfig.json:

{
  "Settings": {
    "Enabled": false,    //是否开启强制开荒
    "ServerSideCharacterSave": 5,    //保存服务器人物资料的时间频率(单位分钟)(强制开荒人物资料存在服务器)
    "LogonDiscardThreshold": 250,    //登录后不允许丢东西的时间(单位为毫秒)
    "StartingHealth": 100,    //强制开荒初始生命值
    "StartingMana": 20,    //强制开荒初始魔力值
    "StartingInventory": [    //强制开荒初始物品,预设为铜的工具。(id 与 wiki 不同,请到此站查询 id 和前缀 https://tshock.readme.io/docs/item-list-10,注意:该文档关于 tshock 的部分内容已经过时)
      {
        "netID": -15,    //物品 id
        "prefix": 0,    //物品前缀
        "stack": 1    //物品数量
      },
      {
        "netID": -13,
        "prefix": 0,
        "stack": 1
      },
      {
        "netID": -16,
        "prefix": 0,
        "stack": 1
      }
    ],
    "WarnPlayersAboutBypassPermission": true    //是否警告尝试绕过权限的玩家
  }
}

运行


这就是世界选择界面了,你可以通过输入序号来选择世界
输入“n”或“新”可以创建新世界,不过这个建议在Terraria游戏内进行
输入“d”或“删”可以删除世界
现在不妨输入1选择第一个世界,然后出现这个
这里是决定服务器中最多的玩家数,回车可以选择默认值8人
请添加图片描述

那么这里直接回车吧
请添加图片描述


端口选择,就是你的服务器侦听的端口,回车是7777(Terraria经典默认服务器端口)
这个玩意影响到了你输入IP后的端口应该填什么,如果你不是独立ip,请输入服务提供商给你的端口


是否自动转发端口,这个一般都是默认回车就好了

输入服务器密码,一般在私人/群服务器玩耍时使用,按回车表示不设置密码
很明显,到目前为止,你应该可以发现在启动服务器并选择世界之后可以一路回车按到底对吧…
好了,你现在应该会看见窗口里出现

注意:现在不要关闭窗口,请记住黄字中"/setup"后面的数字,最小化窗口
注意:有时候电脑防火墙会自动在此时提示某应用程序将允许通过防火墙,选择允许即可
​获取服主权限
启动Terraria之后选择多人游戏,通过IP加入

按回车键即可打开聊天栏
输入/setup <你的setup码>
注意:每个TShock生成的setup-code都是不同的,这里仅做示例,不要指望用这里的验证码熊服
可以看到黄字的说明信息
现在,你将接触到tshock的第一个重要指令
/user add <用户名> <密码> <用户组>
用途是将一个用户加入到指定的用户组
例如/user add 肝帝熙恩 1234567 owner请添加图片描述
就可以获取永久服主权限了
然后拥有了账户肯定要登录对吧?
现在你将接触到tshock的第二个重要指令
/login [用户名] <密码>
用途是通过指定的用户名进行登录
例如此处我们输入
/login 肝帝熙恩 1234567