Библиотека ПК для Gorilla Tag, которая обрабатывает различные вещи, связанные с комнатой (и многое другое?)
Если вы не хотите устанавливать этот мод вручную, вы можете установить этот мод с помощью Monke Mod Manager.
Если ваша игра не модифицирована с помощью BepinEx, СДЕЛАЙТЕ ЭТО ПЕРВОЙ! Просто перейдите к последней версии BepinEx и распакуйте BepinEx_x64_VERSION.zip непосредственно в папку вашей игры, затем запустите игру один раз, чтобы правильно установить BepinEx.
Затем перейдите к последней версии этого мода и распакуйте ее прямо в папку с игрой. Убедитесь, что он распакован непосредственно в папку вашей игры, а не в подпапку!
С выпуском Utilla 1.5.0 моды должны работать только в модифицированных игровых режимах, а не в каком-либо приватном лобби. Utilla предоставляет простые в использовании атрибуты, позволяющие сделать этот переход максимально безболезненным. См. этот коммит для примера обновления вашего мода для работы с новой системой.
Проверка того, находится ли игрок в модифицированной комнате, является очень важной частью обеспечения того, чтобы ваш мод не был использован для мошенничества. Utilla упрощает это, предоставляя атрибуты, которые срабатывают при присоединении к модифицированному лобби.
[ModdedGamemode]
должен быть применен к классу плагина вашего мода, чтобы использовать другие атрибуты. [ModdedGamemodeJoin]
и [ModdedGamemodeLeave]
можно применить к любому методу void внутри этого класса с необязательным строковым параметром, содержащим полную строку режима игры. Эти методы вызываются, когда модифицированная комната присоединяется или покидает ее соответственно.
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. Мод может регистрировать собственные игровые режимы через атрибут [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 обеспечивает трансляцию событий при присоединении к любой комнате. Не рекомендуется включать и отключать ваш мод, для этого используйте атрибуты, описанные выше. Utilla предоставляет два события для входа и выхода из комнаты: 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
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 ) ;
}
}
}
Если вы хотите присоединиться к пользовательским частным лобби с помощью вашего мода, 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
Если вы хотите использовать собственные очереди со своим модом, 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
Этот проект создан на C# с использованием .NET Standard.
Для справок создайте папку 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. Части содержащихся здесь материалов являются собственностью ООО «Другая Аксиома». ©2021 ООО «Другая Аксиома».