ไลบรารี PC สำหรับ Gorilla Tag ที่จัดการสิ่งต่าง ๆ ที่เกี่ยวข้องกับห้อง (และอีกมากมาย?)
หากคุณไม่ต้องการติดตั้งด้วยตนเอง คุณสามารถติดตั้งม็อดนี้ด้วย Monke Mod Manager
หากเกมของคุณไม่ได้ม็อดด้วย BepinEx ให้ทำสิ่งนั้นก่อน! เพียงไปที่ BepinEx รุ่นล่าสุด และแยก BepinEx_x64_VERSION.zip ลงในโฟลเดอร์เกมของคุณโดยตรง จากนั้นรันเกมหนึ่งครั้งเพื่อติดตั้ง BepinEx อย่างถูกต้อง
จากนั้น ไปที่รุ่นล่าสุดของม็อดนี้ และแตกไฟล์ลงในโฟลเดอร์เกมของคุณโดยตรง ตรวจสอบให้แน่ใจว่าได้แตกไฟล์ลงในโฟลเดอร์เกมของคุณโดยตรง และไม่ใช่ในโฟลเดอร์ย่อย!
ในการเปิดตัว Utilla 1.5.0 ม็อดจะต้องทำงานในโหมดเกมที่มีการม็อดเท่านั้น แทนที่จะทำงานในล็อบบี้ส่วนตัว Utilla มีคุณลักษณะที่ใช้งานง่ายเพื่อทำให้การเปลี่ยนแปลงนี้ไม่เจ็บปวดเท่าที่จะเป็นไปได้ ดูคอมมิตนี้สำหรับตัวอย่างการอัปเดตม็อดของคุณให้ทำงานกับระบบใหม่
การจัดการว่าผู้เล่นอยู่ในห้องที่มีการดัดแปลงหรือไม่นั้นเป็นส่วนสำคัญมากในการทำให้แน่ใจว่าม็อดของคุณจะไม่ถูกใช้ในการโกง Utilla ทำให้สิ่งนี้เป็นเรื่องง่ายโดยการระบุคุณสมบัติที่จะทริกเกอร์เมื่อมีการเข้าร่วมล็อบบี้ที่ดัดแปลง
ต้องใช้ [ModdedGamemode]
กับคลาสปลั๊กอินของ mod ของคุณเพื่อใช้คุณสมบัติอื่น ๆ [ModdedGamemodeJoin]
และ [ModdedGamemodeLeave]
สามารถใช้กับวิธี void ใดก็ได้ภายในคลาสนี้ โดยมีพารามิเตอร์สตริงทางเลือกที่มีสตริง gamemode ที่สมบูรณ์ วิธีการเหล่านี้จะถูกเรียกเมื่อมีการเข้าร่วมหรือออกจากห้องดัดแปลงตามลำดับ
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 จัดให้มีกิจกรรมที่จะออกอากาศเมื่อมีการเข้าร่วมห้องใดห้องหนึ่ง ไม่แนะนำให้เปิดใช้งานและปิดใช้งาน mod ของคุณสำหรับคุณสมบัติการใช้งานตามที่อธิบายไว้ข้างต้น 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 ให้ใช้สิ่งนี้หากคุณได้รับข้อผิดพลาดในการอ้างอิงที่เป็นค่าว่างบนออบเจ็กต์ซิงเกิลตัน เช่น 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 วัสดุบางส่วนที่มีอยู่ในที่นี้เป็นทรัพย์สินของ Another Axiom LLC ©2021 Another Axiom LLC.