Una biblioteca de PC para Gorilla Tag que maneja varias cosas relacionadas con la sala (¿y más?)
Si no desea instalar manualmente, puede instalar este mod con Monke Mod Manager
Si tu juego no está modificado con BepinEx, ¡HAZ ESO PRIMERO! Simplemente vaya a la última versión de BepinEx y extraiga BepinEx_x64_VERSION.zip directamente en la carpeta de su juego, luego ejecute el juego una vez para instalar BepinEx correctamente.
A continuación, ve a la última versión de este mod y extráelo directamente a la carpeta de tu juego. ¡Asegúrate de que se extraiga directamente en la carpeta de tu juego y no en una subcarpeta!
Con el lanzamiento de Utilla 1.5.0, se requiere que los mods solo funcionen en modos de juego modificados, en lugar de en cualquier lobby privado. Utililla proporciona atributos fáciles de usar para que esta transición sea lo más sencilla posible. Consulte esta confirmación para ver un ejemplo de cómo actualizar su mod para que funcione con el nuevo sistema.
Saber si el jugador está en una sala modificada es una parte muy importante para garantizar que tu modificación no se utilice para hacer trampa. Utililla facilita esto al proporcionar atributos que se activan cuando se une a un lobby modificado.
El [ModdedGamemode]
debe aplicarse a la clase de complemento de su mod para usar los otros atributos. [ModdedGamemodeJoin]
y [ModdedGamemodeLeave]
se pueden aplicar a cualquier método void dentro de esta clase, con un parámetro de cadena opcional que contiene la cadena completa del modo de juego. Estos métodos se llaman cuando se entra o se abandona una habitación modificada, respectivamente.
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 ;
}
}
}
Utililla 1.5.0 brinda soporte para modos de juego personalizados a Gorilla Tag. Un mod puede registrar modos de juego personalizados a través del atributo [ModdedGamemode]
y aparecerá junto a los modos de juego predeterminados en el juego.
[ 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 { }
Además, se puede utilizar un administrador de juegos completamente personalizado creando una clase que herede GorillaGameManager
. Crear un modo de juego personalizado requiere conocimientos avanzados del código de red de Gorilla Tag. Actualmente, el emparejamiento no funciona para modos de juego totalmente personalizados, pero aún se pueden usar mediante códigos de sala.
[ 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 ;
}
}
Utililla proporciona eventos para transmitir cuando se une a cualquier sala. No se recomiendan para habilitar y deshabilitar su mod, para eso use los atributos descritos anteriormente. Utilla proporciona dos eventos para entrar y salir de una sala, Utilla.Events.RoomJoined
y 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 } " ) ;
}
}
}
Utililla proporciona un evento que se activa después de que se inicializa Gorilla Tag; utilícelo si obtiene errores de referencia nula en objetos únicos como GorillaLocomotion.Player.Instance
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 ) ;
}
}
}
Si deseas unirte a salas privadas personalizadas con tu mod, Utililla también implementa métodos para eso.
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
Si desea utilizar colas personalizadas con su mod, Utililla también implementa métodos para eso.
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
Este proyecto está construido con C# usando .NET Standard.
Para obtener referencias, cree una carpeta Libs en la misma carpeta que la solución del proyecto. Dentro de esta carpeta deberás copiar:
0Harmony.dll
BepInEx.dll
BepInEx.Harmony.dll
desde Gorilla TagBepInExplugins
y
Assembly-CSharp.dll
PhotonRealtime.dll
PhotonUnityNetworking.dll
UnityEngine.dll
UnityEngine.CoreModule.dll
de Gorilla TagGorilla Tag_DataManaged
.
Este producto no está afiliado a Gorilla Tag ni a Another Axiom LLC y no está respaldado ni patrocinado de otro modo por Another Axiom LLC. Partes de los materiales contenidos en este documento son propiedad de Another Axiom LLC. ©2021 Otro Axiom LLC.