다양한 방 관련 작업(및 그 이상)을 처리하는 Gorilla Tag용 PC 라이브러리
수동으로 설치하고 싶지 않다면 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
와 같은 싱글톤 개체에서 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 ) ;
}
}
}
모드를 사용하여 맞춤형 개인 로비에 참여하고 싶다면 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
이 프로젝트는 .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 또 다른 Axiom LLC.