Eine PC-Bibliothek für Gorilla Tag, die verschiedene raumbezogene Dinge (und mehr?) verwaltet.
Wenn Sie keine manuelle Installation wünschen, können Sie diesen Mod mit dem Monke Mod Manager installieren
Wenn Ihr Spiel nicht mit BepinEx modifiziert ist, TUN SIE DAS ZUERST! Gehen Sie einfach zur neuesten BepinEx-Version und extrahieren Sie BepinEx_x64_VERSION.zip direkt in den Ordner Ihres Spiels. Führen Sie dann das Spiel einmal aus, um BepinEx ordnungsgemäß zu installieren.
Gehen Sie als Nächstes zur neuesten Version dieses Mods und extrahieren Sie sie direkt in den Ordner Ihres Spiels. Stellen Sie sicher, dass es direkt in den Ordner Ihres Spiels und nicht in einen Unterordner extrahiert wird!
Mit der Veröffentlichung von Utilla 1.5.0 müssen Mods nur in modifizierten Spielmodi und nicht in einer privaten Lobby funktionieren. Utilla bietet einfach zu verwendende Attribute, um diesen Übergang so schmerzlos wie möglich zu gestalten. In diesem Commit finden Sie ein Beispiel für die Aktualisierung Ihres Mods, damit er mit dem neuen System funktioniert.
Die Kontrolle darüber, ob sich der Spieler in einem modifizierten Raum befindet, ist ein sehr wichtiger Teil, um sicherzustellen, dass Ihr Mod nicht zum Betrügen verwendet wird. Utilla macht dies einfach, indem es Attribute bereitstellt, die ausgelöst werden, wenn einer modifizierten Lobby beigetreten wird.
Der [ModdedGamemode]
muss auf die Plugin-Klasse Ihres Mods angewendet werden, um die anderen Attribute zu verwenden. [ModdedGamemodeJoin]
und [ModdedGamemodeLeave]
können auf jede void-Methode innerhalb dieser Klasse angewendet werden, mit einem optionalen String-Parameter, der den vollständigen Gamemode-String enthält. Diese Methoden werden aufgerufen, wenn ein modifizierter Raum betreten bzw. verlassen wird.
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 bietet Unterstützung für benutzerdefinierte Spielmodi für Gorilla Tag. Ein Mod kann benutzerdefinierte Spielmodi über das Attribut [ModdedGamemode]
registrieren und erscheint neben den Standardspielmodi im Spiel.
[ 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 { }
Darüber hinaus kann ein vollständig benutzerdefinierter Spielmanager verwendet werden, indem eine Klasse erstellt wird, die GorillaGameManager
erbt. Das Erstellen eines benutzerdefinierten Spielmodus erfordert fortgeschrittene Kenntnisse des Netzwerkcodes von Gorilla Tag. Derzeit funktioniert das Matchmaking nicht für vollständig benutzerdefinierte Spielmodi, diese können jedoch weiterhin über Raumcodes verwendet werden.
[ 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 bietet Ereignisse zur Übertragung, wenn einem Raum beigetreten wird. Es wird nicht empfohlen, Ihren Mod zu aktivieren und zu deaktivieren und dafür die oben beschriebenen Attribute zu verwenden. Utilla bietet zwei Ereignisse zum Betreten und Verlassen von Räumen: Utilla.Events.RoomJoined
und 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 stellt ein Ereignis bereit, das nach der Initialisierung des Gorilla-Tags ausgelöst wird. Verwenden Sie dieses, wenn bei Singleton-Objekten wie GorillaLocomotion.Player.Instance
Nullreferenzfehler auftreten
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 ) ;
}
}
}
Wenn Sie mit Ihrem Mod benutzerdefinierten privaten Lobbys beitreten möchten, implementiert Utilla auch dafür Methoden.
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
Wenn Sie mit Ihrem Mod benutzerdefinierte Warteschlangen verwenden möchten, implementiert Utilla auch dafür Methoden.
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
Dieses Projekt wurde mit C# unter Verwendung von .NET Standard erstellt.
Erstellen Sie für Referenzen einen Libs-Ordner im selben Ordner wie die Projektlösung. In diesen Ordner müssen Sie Folgendes kopieren:
0Harmony.dll
BepInEx.dll
BepInEx.Harmony.dll
von Gorilla TagBepInExplugins
und
Assembly-CSharp.dll
PhotonRealtime.dll
PhotonUnityNetworking.dll
UnityEngine.dll
UnityEngine.CoreModule.dll
von Gorilla TagGorilla Tag_DataManaged
.
Dieses Produkt ist nicht mit Gorilla Tag oder Another Axiom LLC verbunden und wird von Another Axiom LLC weder unterstützt noch anderweitig gesponsert. Teile der hierin enthaltenen Materialien sind Eigentum von Another Axiom LLC. ©2021 Another Axiom LLC.