部屋に関するさまざまなこと (その他?) を扱う、Gorilla Tag 用の PC ライブラリ
手動でインストールしたくない場合は、Monke Mod Manager を使用してこの MOD をインストールできます。
ゲームが BepinEx で MOD されていない場合は、最初にそれを行ってください。最新の BepinEx リリースにアクセスし、BepinEx_x64_VERSION.zip をゲームのフォルダーに直接抽出し、ゲームを 1 回実行して BepinEx を適切にインストールするだけです。
次に、この MOD の最新リリースに移動し、ゲームのフォルダーに直接抽出します。サブフォルダーではなく、ゲームのフォルダーに直接抽出されていることを確認してください。
Utilla 1.5.0 のリリースにより、MOD はプライベート ロビーではなく、MOD が適用されたゲームモードでのみ機能する必要があります。 Utilla は、この移行をできるだけ簡単に行うために、使いやすい属性を提供します。新しいシステムで動作するように MOD を更新する例については、このコミットを参照してください。
プレイヤーが MOD を導入した部屋にいるかどうかを処理することは、MOD が不正行為に使用されないようにする上で非常に重要です。 Utilla は、MOD ロビーが参加したときにトリガーする属性を提供することで、これを容易にします。
他の属性を使用するには、 [ModdedGamemode]
MOD のプラグイン クラスに適用する必要があります。 [ModdedGamemodeJoin]
および[ModdedGamemodeLeave]
は、完全なゲームモード文字列を含むオプションの文字列パラメータを使用して、このクラス内の任意の void メソッドに適用できます。これらのメソッドは、MOD が追加されたルームに参加するとき、または部屋から離れるときにそれぞれ呼び出されます。
using System ;
using BepInEx ;
using Utilla ;
namespace ExamplePlugin
{
[ BepInPlugin ( " org.legoandmars.gorillatag.exampleplugin " , " Example Plugin " , " 1.0.0 " ) ]
[ BepInDependency ( " org.legoandmars.gorillatag.utilla " , " 1.5.0 " ) ] // Make sure to add Utilla 1.5.0 as a dependency!
[ ModdedGamemode ] // Enable callbacks in default modded gamemodes
public class ExamplePlugin : BaseUnityPlugin
{
bool inAllowedRoom = false ;
private void Update ( )
{
if ( inAllowedRoom )
{
// Do mod stuff
}
}
[ ModdedGamemodeJoin ]
private void RoomJoined ( string gamemode )
{
// The room is modded. Enable mod stuff.
inAllowedRoom = true ;
}
[ ModdedGamemodeLeave ]
private void RoomLeft ( string gamemode )
{
// The room was left. Disable mod stuff.
inAllowedRoom = false ;
}
}
}
Utilla 1.5.0 では、Gorilla Tag にカスタム ゲームモードのサポートが追加されました。 MOD は[ModdedGamemode]
属性を通じてカスタム ゲームモードを登録でき、ゲーム内のデフォルト ゲームモードの隣に表示されます。
[ BepInPlugin ( " org.legoandmars.gorillatag.exampleplugin " , " Example Plugin " , " 1.0.0 " ) ]
[ BepInDependency ( " org.legoandmars.gorillatag.utilla " , " 1.5.0 " ) ] // Make sure to add Utilla 1.5.0 as a dependency!
[ ModdedGamemode ( " mygamemodeid " , " MY GAMEMODE " , Models . BaseGamemode . Casual ) ] // Enable callbacks in a new casual gamemode called "MY GAMEMODE"
public class ExamplePlugin : BaseUnityPlugin { }
さらに、 GorillaGameManager
を継承するクラスを作成することで、完全にカスタムのゲーム マネージャーを使用できます。カスタム ゲームモードを作成するには、Gorilla Tag のネットワーク コードに関する高度な知識が必要です。現在、マッチメイキングは完全にカスタムのゲームモードでは機能しませんが、ルームコードを通じて引き続き使用できます。
[ BepInPlugin ( " org.legoandmars.gorillatag.exampleplugin " , " Example Plugin " , " 1.0.0 " ) ]
[ BepInDependency ( " org.legoandmars.gorillatag.utilla " , " 1.5.0 " ) ] // Make sure to add Utilla 1.5.0 as a dependency!
[ ModdedGamemode ( " mygamemodeid " , " MY GAMEMODE " , typeof ( MyGameManager ) ) ] // Enable callbacks in a new custom gamemode using MyGameManager
public class ExamplePlugin : BaseUnityPlugin { }
public class MyGameManager : GorillaGameManager
{
// The game calls this when this is the gamemode for the room.
public override void StartPlaying ( )
{
// Base needs to run for base GorillaGamanger functionality to run.
base . StartPlaying ( ) ;
}
// Called by game when you leave a room or gamemode is changed.
public override void StopPlaying ( )
{
// Base needs to run for the game mode stop base GorillaGameManager functionality from running.
base . StopPlaying ( ) ;
}
// Called by the game when you leave a room after StopPlaying, use this for all important clean up and resetting the state of your game mode.
public override void Reset ( )
{
}
// Gamemode names must not have spaces and must not contain "CASUAL", "INFECTION", "HUNT", or "BATTLE".
// Names that contain the name of other custom gamemodes will confilict.
public override string GameModeName ( )
{
return " CUSTOM " ;
}
// GameModeType is an enum which is really an int, so any int value will work.
// Make sure to use a unique value not taken by other game modes.
public override GameModeType GameType ( )
{
return ( GameModeType ) 765 ;
}
public override int MyMatIndex ( Player forPlayer )
{
return 3 ;
}
}
Utilla は、ルームに参加したときにブロードキャストするイベントを提供します。上記で説明した属性を使用するために、MOD を有効または無効にすることはお勧めできません。 Utilla は、ルームへの参加と退出のための 2 つのイベント、 Utilla.Events.RoomJoined
とUtilla.Events.RoomLeft
を提供します。
using System ;
using BepInEx ;
using Utilla ;
namespace ExamplePlugin
{
[ BepInPlugin ( " org.legoandmars.gorillatag.exampleplugin " , " Example Plugin " , " 1.0.0 " ) ]
[ BepInDependency ( " org.legoandmars.gorillatag.utilla " , " 1.5.0 " ) ] // Make sure to add Utilla as a dependency!
public class ExamplePlugin : BaseUnityPlugin
{
void Awake ( )
{
Utilla . Events . RoomJoined += RoomJoined ;
Utilla . Events . RoomLeft += RoomLeft ;
}
private void RoomJoined ( object sender , Events . RoomJoinedArgs e )
{
UnityEngine . Debug . Log ( $" Private room: { e . isPrivate } , Gamemode: { e . Gamemode } " ) ;
}
private void RoomLeft ( object sender , Events . RoomJoinedArgs e )
{
UnityEngine . Debug . Log ( $" Private room: { e . isPrivate } , Gamemode: { e . Gamemode } " ) ;
}
}
}
Utilla は、Gorilla Tag の初期化後にトリガーされるイベントを提供します。GorillaLocomotion.Player.Instance などのGorillaLocomotion.Player.Instance
オブジェクトで null 参照エラーが発生する場合は、これを使用します。
using System ;
using BepInEx ;
using Utilla ;
namespace ExamplePlugin
{
[ BepInPlugin ( " org.legoandmars.gorillatag.exampleplugin " , " Example Plugin " , " 1.0.0 " ) ]
[ BepInDependency ( " org.legoandmars.gorillatag.utilla " , " 1.5.0 " ) ] // Make sure to add Utilla as a dependency!
public class ExamplePlugin : BaseUnityPlugin
{
void Awake ( )
{
Utilla . Events . GameInitialized += GameInitialized ;
}
private void GameInitialized ( object sender , EventArgs e )
{
// Player instance has been created
UnityEngine . Debug . Log ( GorillaLocomotion . Player . Instance . jumpMultiplier ) ;
}
}
}
MOD にカスタムのプライベート ロビーを参加させたい場合、Utilla はそのためのメソッドも実装します。
Utilla . Utils . RoomUtils . JoinPrivateLobby ( ) // Joins a private lobby with a random 6 character code
Utilla . Utils . RoomUtils . JoinPrivateLobby ( " TestLobby " ) // Joins a private lobby with the code TestLobby
Utilla . Utils . RoomUtils . JoinPrivateLobby ( " TestLobby " , true ) // Joins a private casual lobby with the code TestLobby
MOD でカスタム キューを使用したい場合、Utilla はそのためのメソッドも実装します。
Utilla . Utils . RoomUtils . JoinModdedLobby ( " TestQueue " ) // Joins a random room in the queue TestQueue
Utilla . Utils . RoomUtils . JoinModdedLobby ( " TestQueue " , true ) // Joins a random casual room in the queue TestQueue
このプロジェクトは、.NET Standard を使用して C# で構築されています。
参照用に、プロジェクト ソリューションと同じフォルダーに Libs フォルダーを作成します。このフォルダー内に以下をコピーする必要があります。
0Harmony.dll
BepInEx.dll
BepInEx.Harmony.dll
Gorilla TagBepInExplugins
から、および
Assembly-CSharp.dll
PhotonRealtime.dll
PhotonUnityNetworking.dll
UnityEngine.dll
UnityEngine.CoreModule.dll
Gorilla TagGorilla Tag_DataManaged
から。
この製品は、Gorilla Tag または Another Axiom LLC と提携しておらず、Another Axiom LLC による承認やスポンサーも受けていません。ここに含まれる資料の一部は、Another Axiom LLC の所有物です。 ©2021 Another Axiom LLC.