0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【持ち込み対策のSSC編】Terrariaの鯖立てソフト、TShockのイロハ

Last updated at Posted at 2023-12-12

初めに

 お久しぶりです。前回の記事で「次回はそちらとSuper adminの付与、権限の付与といったアカウント関連の説明をします」と書きましたがそんなことはありませんでした。
 TShockを使うユーザは恐らく持ち込み制限のためのSSC、サーバサイドキャラクター目当てだと思いますので、その有効化方法とオススメ権限設定を共有することにします。

SSCについて

 SSCとはなんぞや?という方向けに簡単に説明すると、サーバー側でキャラ管理して持ち込み完全に排除しようぜ!というやつです。
 完全に鯖側で管理するので、参加者がどのキャラを使おうがそのキャラのプレイ時間すら増えません。持ち込みを撲滅せよ。

今回の説明について

 細かいこと分からなくていいから動かせるようにしたい!って人向けの解説なので詳細は省きます。自分で色々弄りたい人はこの辺見ながら/group addperm使って弄ってください。
 使用するバージョンはTShock-5.2-for-Terraria-1.4.4.9-win-x64-Releaseですが恐らく大きく今後も使いまわせます。

SSCの有効化

 まず前回の記事の通りに進めていればtshockのフォルダはこんな感じになってるはずです。
image.png
 この中からsscconfig.jsonを見つけてメモ帳等で開きます。
image.png

 開くとこんな感じ。この中の"Enabled: false""Enabled: true"に書き換えます。これで有効化完了です。前回と同じように鯖を立ててみましょう。
image.png

 試しにこのキャラで鯖に入ってみます。
image.png

すると一見そのまま入れているように見えますが...image.png

 このようにワールドへの干渉がブロックされます。移動してもワープで戻されます。(不具合で伐採だけ防げません)
image.png

ログイン

 これを解除するには、/register "password"でアカウントを作った後、/login "password"でそのアカウントにログインする必要があります。パスワードは任意の値に置き換えてください。例:/register test。この作業は初回だけです。
 入力後はこのように、持ち物等が全て初期状態になり、鯖側で作られたキャラを操作するようになります。
image.png

 この初期状態のライフや持ち物は先述したsscconfig.jsonの値を変更することで弄れます。
 HP上限とか上限突破させる場合はそれに合わせてconfig.jsonも弄ってね。

変更例

sscconfig.json
{
 "Settings": {
   "Enabled": true,
   "ServerSideCharacterSave": 5,
   "LogonDiscardThreshold": 250,
   "StartingHealth": 4000,
   "StartingMana": 200,
   "StartingInventory": [
     {
       "netID": 3510,
       "prefix": 0,
       "stack": 1
     }
   ],
   "WarnPlayersAboutBypassPermission": true
 }
}
config.json
{
 "Settings": {
   "ServerPassword": "",
   "ServerPort": 7777,
#--省略--
   "AnonymousBossInvasions": true,
   "MaxHP": 4000,
   "MaxMP": 200,
   "BombExplosionRadius": 5,
   "GiveItemsDirectly": false,
#--省略--
 }
}

image.png

itemID等に関しては公式wikiや下の日本語←→英語←→アイテムIDで相互変換できるサイト使ってください。URLが怪しいですが初心者が作ったサイトだから許して...

既存キャラのアイテムを引き継ぐには

 既に何度かマルチを行った後にtshock鯖に移行するなど、今後の持ち込みは防ぎたいけど今までのデータは持ち越したい場合は、先ほどやったようにログインしてもらった後に

/uploadssc "対象プレイヤーの名前"

を入力することで、サーバーにデータをアップロードして引き継いで使うことができます。

image.png

image.png

権限のオススメ設定

 これはSSCに限った話ではありませんが、tshockでは「権限」が重要になってきます。例:ワームホールポーションを使う許可を持たせる権限、tshock.tp.wormhole
 初期設定ではバニラと微妙に違うところがあるので、それらを修正したものを配布します。問題ないとは思いますが使用する際は自己責任でお願いします。

 https://drive.google.com/file/d/13CNu28EKzFSNAz0FoEcqVh-8pGg1qPuI/

 ダウンロードしたtshock.sqliteを以下のフォルダに上書きしてください。
image.png

 この設定ではログインしたプレイヤーはバニラと同等程度の権限を持っています。
 大抵のコマンドを使える管理者は/user group "キャラの名前" admin、ban権限を持った管理者は/user group "キャラの名前" trustedadminで設定できます。

終わりに

 以上でSSCを有効化した、持ち込み禁止のTShockの鯖建ては完了となります。
 何かありましたらコメント等で指摘お願いします。

おまけ おすすめconfig.json

 墓の生成がオフになってたり爆破採掘でロックされたりするのを防ぎ、できるだけバニラに近づけたconfigを添付しておきます。コピペでそのまま上書きしてください。

config.json
{
 "Settings": {
   "ServerPassword": "",
   "ServerPort": 7777,
   "MaxSlots": 8,
   "ReservedSlots": 20,
   "ServerName": "",
   "UseServerName": false,
   "LogPath": "tshock/logs",
   "DebugLogs": false,
   "DisableLoginBeforeJoin": false,
   "IgnoreChestStacksOnLoad": false,
   "WorldTileProvider": "default",
   "AutoSave": true,
   "AnnounceSave": true,
   "ShowBackupAutosaveMessages": true,
   "BackupInterval": 10,
   "BackupKeepFor": 240,
   "SaveWorldOnCrash": true,
   "SaveWorldOnLastPlayerExit": true,
   "InvasionMultiplier": 1,
   "DefaultMaximumSpawns": 5,
   "DefaultSpawnRate": 600,
   "InfiniteInvasion": false,
   "PvPMode": "normal",
   "SpawnProtection": false,
   "SpawnProtectionRadius": 10,
   "RangeChecks": true,
   "HardcoreOnly": false,
   "MediumcoreOnly": false,
   "SoftcoreOnly": false,
   "DisableBuild": false,
   "DisableHardmode": false,
   "DisableDungeonGuardian": false,
   "DisableClownBombs": false,
   "DisableSnowBalls": false,
   "DisableTombstones": false,
   "DisablePrimeBombs": false,
   "ForceTime": "normal",
   "DisableInvisPvP": false,
   "MaxRangeForDisabled": 10,
   "RegionProtectChests": false,
   "RegionProtectGemLocks": true,
   "IgnoreProjUpdate": false,
   "IgnoreProjKill": false,
   "AllowCutTilesAndBreakables": false,
   "AllowIce": false,
   "AllowCrimsonCreep": true,
   "AllowCorruptionCreep": true,
   "AllowHallowCreep": true,
   "StatueSpawn200": 3,
   "StatueSpawn600": 6,
   "StatueSpawnWorld": 10,
   "PreventBannedItemSpawn": false,
   "PreventDeadModification": true,
   "PreventInvalidPlaceStyle": true,
   "ForceXmas": false,
   "ForceHalloween": false,
   "AllowAllowedGroupsToSpawnBannedItems": false,
   "RespawnSeconds": 0,
   "RespawnBossSeconds": 0,
   "AnonymousBossInvasions": true,
   "MaxHP": 600,
   "MaxMP": 200,
   "BombExplosionRadius": 5,
   "GiveItemsDirectly": false,
   "DefaultRegistrationGroupName": "default",
   "DefaultGuestGroupName": "guest",
   "RememberLeavePos": false,
   "MaximumLoginAttempts": 3,
   "KickOnMediumcoreDeath": false,
   "MediumcoreKickReason": "Death results in a kick",
   "BanOnMediumcoreDeath": false,
   "MediumcoreBanReason": "Death results in a ban",
   "DisableDefaultIPBan": false,
   "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,
   "HardcoreBanReason": "Death results in a ban",
   "KickProxyUsers": true,
   "RequireLogin": false,
   "AllowLoginAnyUsername": true,
   "AllowRegisterAnyUsername": false,
   "MinimumPasswordLength": 4,
   "BCryptWorkFactor": 7,
   "DisableUUIDLogin": false,
   "KickEmptyUUID": false,
   "TilePaintThreshold": 15,
   "KickOnTilePaintThresholdBroken": false,
   "MaxDamage": 3000,
   "MaxProjDamage": 3000,
   "KickOnDamageThresholdBroken": false,
   "TileKillThreshold": 200,
   "KickOnTileKillThresholdBroken": false,
   "TilePlaceThreshold": 320,
   "KickOnTilePlaceThresholdBroken": false,
   "TileLiquidThreshold": 500,
   "KickOnTileLiquidThresholdBroken": false,
   "ProjIgnoreShrapnel": true,
   "ProjectileThreshold": 100,
   "KickOnProjectileThresholdBroken": false,
   "HealOtherThreshold": 100,
   "KickOnHealOtherThresholdBroken": false,
   "SuppressPermissionFailureNotices": false,
   "DisableModifiedZenith": false,
   "DisableCustomDeathMessages": true,
   "CommandSpecifier": "/",
   "CommandSilentSpecifier": ".",
   "DisableSpewLogs": true,
   "DisableSecondUpdateLogs": false,
   "SuperAdminChatRGB": [
     255,
     255,
     255
   ],
   "SuperAdminChatPrefix": "(Super Admin) ",
   "SuperAdminChatSuffix": "",
   "EnableGeoIP": false,
   "DisplayIPToAdmins": false,
   "ChatFormat": "{1}{2}{3}: {4}",
   "ChatAboveHeadsFormat": "{2}",
   "EnableChatAboveHeads": true,
   "BroadcastRGB": [
     127,
     255,
     212
   ],
   "StorageType": "sqlite",
   "SqliteDBPath": "tshock.sqlite",
   "MySqlHost": "localhost:3306",
   "MySqlDbName": "",
   "MySqlUsername": "",
   "MySqlPassword": "",
   "UseSqlLogs": false,
   "RevertToTextLogsOnSqlFailures": 10,
   "RestApiEnabled": false,
   "RestApiPort": 7878,
   "LogRest": false,
   "EnableTokenEndpointAuthentication": false,
   "RESTMaximumRequestsPerInterval": 5,
   "RESTRequestBucketDecreaseIntervalMinutes": 1,
   "ApplicationRestTokens": {}
 }
}
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?