The current BepInExPack is broken due to the Oakveil update, and mods installed through a mod manager may not work. Join the modding Discord for more information.
Decompiled source of BloodyPoint v2.0.5
BloodyPoints.dll
Decompiled 11 months agousing System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using System.Text.Json; using BepInEx; using BepInEx.Configuration; using BepInEx.Core.Logging.Interpolation; using BepInEx.Logging; using BepInEx.Unity.IL2CPP; using Bloodstone.API; using Bloody.Core; using Bloody.Core.API.v1; using Bloody.Core.GameData.v1; using Bloody.Core.Helper.v1; using Bloody.Core.Methods; using Bloody.Core.Models.v1; using Bloody.Core.Models.v1.Base; using BloodyPoints.Command; using BloodyPoints.DB; using BloodyPoints.Helpers; using HarmonyLib; using Il2CppSystem; using ProjectM; using ProjectM.Network; using Stunlock.Core; using Unity.Collections; using Unity.Entities; using Unity.Mathematics; using Unity.Transforms; using VampireCommandFramework; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETCoreApp,Version=v6.0", FrameworkDisplayName = "")] [assembly: AssemblyCompany("BloodyPoints")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyDescription("Mod so that personal or global waypoints can be created.")] [assembly: AssemblyFileVersion("2.0.5.0")] [assembly: AssemblyInformationalVersion("2.0.5+1.Branch.master.Sha.8f2fcf6648f04bba037eb95269f295cbd890f11c")] [assembly: AssemblyProduct("BloodyPoints")] [assembly: AssemblyTitle("BloodyPoints")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("2.0.5.0")] [module: UnverifiableCode] namespace BloodyPoints { [BepInPlugin("BloodyPoints", "BloodyPoints", "2.0.5")] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [Reloadable] public class Plugin : BasePlugin, IRunOnInitialized { public static Harmony harmony; public static readonly string ConfigPath = Path.Combine(Paths.ConfigPath, "BloodyPoints"); public static readonly string WaypointsJson = Path.Combine(ConfigPath, "waypoints.json"); public static readonly string GlobalWaypointsJson = Path.Combine(ConfigPath, "global_waypoints.json"); public static readonly string TotalWaypointsJson = Path.Combine(ConfigPath, "total_waypoints.json"); private static ConfigEntry<int> WaypointLimit; public static Logger Logger; public static SystemsCore SystemsCore; internal static Plugin Instance { get; private set; } public static ConfigEntry<bool> InCombat { get; private set; } public static ConfigEntry<bool> DraculaRoom { get; private set; } public static ConfigEntry<int> CoolDown { get; private set; } public static ConfigEntry<bool> Cost { get; private set; } public static ConfigEntry<string> PrefabName { get; private set; } public static ConfigEntry<int> PrefabGUID { get; private set; } public static ConfigEntry<int> Amount { get; private set; } public static ConfigEntry<bool> TeleportPlayer { get; private set; } public static ConfigEntry<bool> RequestTeleportPlayer { get; private set; } public override void Load() { //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Expected O, but got Unknown //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Expected O, but got Unknown //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Expected O, but got Unknown //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0065: Expected O, but got Unknown //IL_006c: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Expected O, but got Unknown //IL_00ca: Unknown result type (might be due to invalid IL or missing references) //IL_00d0: Expected O, but got Unknown //IL_0088: Unknown result type (might be due to invalid IL or missing references) //IL_008e: Expected O, but got Unknown Instance = this; Logger = new Logger(((BasePlugin)this).Log); CommandRegistry.RegisterCommandType(typeof(Bloodypoint)); harmony = new Harmony("BloodyPoints"); harmony.PatchAll(Assembly.GetExecutingAssembly()); EventsHandlerSystem.OnInitialize += new OnGameDataInitializedEventHandler(GameDataOnInitialize); EventsHandlerSystem.OnDestroy += new OnGameDataDestroyedEventHandler(GameDataOnDestroy); EventsHandlerSystem.OnSaveWorld += new SaveWorldEventHandler(SaveWorldInvoke); bool flag = default(bool); BepInExInfoLogInterpolatedStringHandler val; if (!Core.IsServer) { ManualLogSource log = ((BasePlugin)this).Log; val = new BepInExInfoLogInterpolatedStringHandler(27, 1, ref flag); if (flag) { ((BepInExLogInterpolatedStringHandler)val).AppendLiteral("Plugin "); ((BepInExLogInterpolatedStringHandler)val).AppendFormatted<string>("BloodyPoints"); ((BepInExLogInterpolatedStringHandler)val).AppendLiteral(" is only for server!"); } log.LogInfo(val); return; } InitConfig(); ManualLogSource log2 = ((BasePlugin)this).Log; val = new BepInExInfoLogInterpolatedStringHandler(18, 1, ref flag); if (flag) { ((BepInExLogInterpolatedStringHandler)val).AppendLiteral("Plugin "); ((BepInExLogInterpolatedStringHandler)val).AppendFormatted<string>("BloodyPoints"); ((BepInExLogInterpolatedStringHandler)val).AppendLiteral(" is loaded!"); } log2.LogInfo(val); } private void SaveWorldInvoke() { Bloodypoint.SaveWaypoints(); } private void GameDataOnDestroy() { } private void GameDataOnInitialize(World world) { SystemsCore = Core.SystemsCore; Initialize(); Bloodypoint.LoadWaypoints(); if (TeleportPlayer.Value) { CommandRegistry.RegisterCommandType(typeof(TTPCommands)); } } public void InitConfig() { WaypointLimit = ((BasePlugin)this).Config.Bind<int>("Config", "Waypoint Limit", 1, "Set a waypoint limit per user."); InCombat = ((BasePlugin)this).Config.Bind<bool>("Config", "In Combat", true, "Allows tp to be used when a player is in combat"); DraculaRoom = ((BasePlugin)this).Config.Bind<bool>("Config", "Dracula Room", false, "Allows you to create waypoints or tp from Dracula's room"); CoolDown = ((BasePlugin)this).Config.Bind<int>("Config", "CoolDown", 20, "Time in seconds for teleportation to cooldown"); Cost = ((BasePlugin)this).Config.Bind<bool>("Config", "Cost", true, "Activate cost to make tp"); PrefabName = ((BasePlugin)this).Config.Bind<string>("Config", "PrefabName", "Blood Essence", "PrefabGUID that the player will have to have in the inventory to make tp"); PrefabGUID = ((BasePlugin)this).Config.Bind<int>("Config", "PrefabGUID", 862477668, "PrefabGUID that the player will have to have in the inventory to make tp"); Amount = ((BasePlugin)this).Config.Bind<int>("Config", "Amount", 20, "Amount of PrefabGUID needed to make tp"); TeleportPlayer = ((BasePlugin)this).Config.Bind<bool>("Config", "TeleporPlayer", true, "Enable players to tp another player"); RequestTeleportPlayer = ((BasePlugin)this).Config.Bind<bool>("Config", "RequestTeleportPlayer", true, "Activate that players must accept a tp from another player who wants to tp their position."); if (!Directory.Exists(ConfigPath)) { Directory.CreateDirectory(ConfigPath); } } public static void Initialize() { Bloodypoint.WaypointLimit = WaypointLimit.Value; Bloodypoint.DraculaRoom = DraculaRoom.Value; } public override bool Unload() { //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Expected O, but got Unknown //IL_0037: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Expected O, but got Unknown //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Expected O, but got Unknown CommandRegistry.UnregisterAssembly(); Bloodypoint.SaveWaypoints(); ((BasePlugin)this).Config.Clear(); harmony.UnpatchSelf(); EventsHandlerSystem.OnInitialize -= new OnGameDataInitializedEventHandler(GameDataOnInitialize); EventsHandlerSystem.OnDestroy -= new OnGameDataDestroyedEventHandler(GameDataOnDestroy); EventsHandlerSystem.OnSaveWorld -= new SaveWorldEventHandler(SaveWorldInvoke); return true; } public void OnGameInitialized() { } } public static class MyPluginInfo { public const string PLUGIN_GUID = "BloodyPoints"; public const string PLUGIN_NAME = "BloodyPoints"; public const string PLUGIN_VERSION = "2.0.5"; } } namespace BloodyPoints.Helpers { internal class Helper { public static EntityManager entityManager = VWorld.Server.EntityManager; public static bool IsPlayerInCombat(Entity player) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) if (!BuffUtility.HasBuff(entityManager, player, PrefabIdentifier.op_Implicit(Database.Buff.InCombat))) { return BuffUtility.HasBuff(entityManager, player, PrefabIdentifier.op_Implicit(Database.Buff.InCombat_PvP)); } return true; } public static void TeleportTo(Entity userEntity, Entity characterEntity, float3 position) { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_006f: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Unknown result type (might be due to invalid IL or missing references) //IL_007c: Unknown result type (might be due to invalid IL or missing references) //IL_0081: Unknown result type (might be due to invalid IL or missing references) Entity val = ((EntityManager)(ref entityManager)).CreateEntity((ComponentType[])(object)new ComponentType[2] { ComponentType.ReadWrite<FromCharacter>(), ComponentType.ReadWrite<PlayerTeleportDebugEvent>() }); ((EntityManager)(ref entityManager)).SetComponentData<FromCharacter>(val, new FromCharacter { User = userEntity, Character = characterEntity }); ((EntityManager)(ref entityManager)).SetComponentData<PlayerTeleportDebugEvent>(val, new PlayerTeleportDebugEvent { Position = new float3(position.x, position.y, position.z), Target = (TeleportTarget)0 }); } public static bool checkDracualaRoom(WaypointData wp) { if ((wp.X == 18f || wp.X == 19f) && wp.Y == 16f) { return true; } if ((wp.Y == 1f || wp.Y == 2f) && wp.X == 24f) { return true; } return false; } public static bool DontMove(Entity userEntity, Entity charEntity) { return true; } public static bool CaMove(Entity charEntity) { return true; } } } namespace BloodyPoints.DB { public class Database { public static class Buff { public static PrefabGUID InCombat = Prefabs.Buff_InCombat; public static PrefabGUID InCombat_PvP = Prefabs.Buff_InCombat_PvPVampire; } public static JsonSerializerOptions JSON_options = new JsonSerializerOptions { WriteIndented = false, IncludeFields = false }; public static JsonSerializerOptions Pretty_JSON_options = new JsonSerializerOptions { WriteIndented = true, IncludeFields = true }; public static List<WaypointData> globalWaypoint { get; set; } public static List<WaypointData> waypoints { get; set; } public static Dictionary<ulong, int> waypoints_owned { get; set; } public static Dictionary<ulong, DateTime> UsersCooldown { get; set; } = new Dictionary<ulong, DateTime>(); internal static bool TryCoolDownTP(ulong steamid, out double diffInSeconds) { if (UsersCooldown.TryGetValue(steamid, out var value)) { diffInSeconds = (DateTime.Now - value).TotalSeconds; if (diffInSeconds >= (double)Plugin.CoolDown.Value) { diffInSeconds = 0.0; UsersCooldown[steamid] = DateTime.Now; return true; } return false; } diffInSeconds = 0.0; UsersCooldown[steamid] = DateTime.Now; return true; } } public class WaypointData { public string Name { get; set; } public ulong Owner { get; set; } public float X { get; set; } public float Y { get; set; } public float Z { get; set; } public WaypointData(string name, ulong owner, float x, float y, float z) { Name = name; Owner = owner; X = x; Y = y; Z = z; } public float3 getLocation() { //IL_0012: Unknown result type (might be due to invalid IL or missing references) return new float3(X, Y, Z); } } } namespace BloodyPoints.Command { [CommandGroup("bloodypoint", "blp")] internal class Bloodypoint { public static int WaypointLimit = 3; public static bool DraculaRoom = false; private static EntityManager entityManager = VWorld.Server.EntityManager; [Command("teleport", "tp", "<Name>", "Teleports you to the specific waypoint.", null, false)] public static void WaypoinCommand(ChatCommandContext ctx, string name) { //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_008e: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Unknown result type (might be due to invalid IL or missing references) //IL_0097: Unknown result type (might be due to invalid IL or missing references) //IL_00a6: Unknown result type (might be due to invalid IL or missing references) //IL_00ac: Unknown result type (might be due to invalid IL or missing references) //IL_00b2: Unknown result type (might be due to invalid IL or missing references) //IL_00e2: Unknown result type (might be due to invalid IL or missing references) //IL_022a: Unknown result type (might be due to invalid IL or missing references) //IL_0230: Unknown result type (might be due to invalid IL or missing references) //IL_023b: Unknown result type (might be due to invalid IL or missing references) //IL_035c: Unknown result type (might be due to invalid IL or missing references) //IL_036c: Unknown result type (might be due to invalid IL or missing references) //IL_0371: Unknown result type (might be due to invalid IL or missing references) //IL_01b1: Unknown result type (might be due to invalid IL or missing references) //IL_01c1: Unknown result type (might be due to invalid IL or missing references) //IL_01c6: Unknown result type (might be due to invalid IL or missing references) //IL_01de: Unknown result type (might be due to invalid IL or missing references) //IL_01ee: Unknown result type (might be due to invalid IL or missing references) //IL_02fd: Unknown result type (might be due to invalid IL or missing references) //IL_030d: Unknown result type (might be due to invalid IL or missing references) //IL_0312: Unknown result type (might be due to invalid IL or missing references) Entity PlayerEntity = ctx.Event.SenderCharacterEntity; ulong SteamID = ctx.Event.User.PlatformId; Users users = GameData.Users; User user = ctx.Event.User; UserModel userByCharacterName = users.GetUserByCharacterName(((FixedString64Bytes)(ref user.CharacterName)).Value); if (!DraculaRoom) { LocalToWorld componentData = ((EntityManager)(ref entityManager)).GetComponentData<LocalToWorld>(ctx.Event.SenderCharacterEntity); float3 position = ((LocalToWorld)(ref componentData)).Position; if (Helper.checkDracualaRoom(new WaypointData("test", 12345678901234567890uL, position.x, position.y, position.z))) { throw ctx.Error("You can't teleport from Dracula's room!"); } } if (Plugin.InCombat.Value && Helper.IsPlayerInCombat(PlayerEntity)) { throw ctx.Error("Unable to use waypoint! You're in combat!"); } WaypointData wp = Database.globalWaypoint.FirstOrDefault((WaypointData waypoint) => waypoint.Name.ToLower() == name.ToLower()); if (wp != null) { if (!DraculaRoom && Helper.checkDracualaRoom(wp)) { throw ctx.Error("You can't teleport to Dracula's room!"); } if (!Database.TryCoolDownTP(SteamID, out var diffInSeconds)) { throw ctx.Error("Unable to use waypoint! You must wait " + FontColorChatSystem.Green((Plugin.CoolDown.Value - Convert.ToInt32(diffInSeconds)).ToString()) + " seconds for your next tp!"); } if (Plugin.Cost.Value) { if (!TTPCommands.RetriveItemsFromInventory(userByCharacterName, out var message)) { throw ctx.Error(message); } BuffSystem.BuffPlayer(userByCharacterName.Character.Entity, ctx.Event.SenderUserEntity, Prefabs.Buff_Vampire_Dracula_BloodCurse, 5, false); Helper.DontMove(ctx.Event.SenderUserEntity, ctx.Event.SenderCharacterEntity); CoroutineHandler.StartGenericCoroutine((Action)delegate { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) Helper.TeleportTo(ctx.Event.SenderUserEntity, PlayerEntity, wp.getLocation()); Helper.CaMove(ctx.Event.SenderCharacterEntity); }, 5f); } else { Helper.TeleportTo(ctx.Event.SenderUserEntity, PlayerEntity, wp.getLocation()); } return; } wp = Database.waypoints.FirstOrDefault((WaypointData waypoint) => waypoint.Name.ToLower() == name.ToLower() && waypoint.Owner == SteamID); if (wp != null) { if (!DraculaRoom && Helper.checkDracualaRoom(wp)) { throw ctx.Error("You can't teleport to Dracula's room!"); } if (!Database.TryCoolDownTP(SteamID, out var diffInSeconds2)) { throw ctx.Error("Unable to use waypoint! You must wait " + FontColorChatSystem.Green((Plugin.CoolDown.Value - Convert.ToInt32(diffInSeconds2)).ToString()) + " seconds for your next tp!"); } if (Plugin.Cost.Value) { if (!TTPCommands.RetriveItemsFromInventory(userByCharacterName, out var message2)) { throw ctx.Error(message2); } BuffSystem.BuffPlayer(ctx.Event.SenderCharacterEntity, ctx.Event.SenderUserEntity, Prefabs.Buff_Vampire_Dracula_BloodCurse, 5, false); CoroutineHandler.StartGenericCoroutine((Action)delegate { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) Helper.TeleportTo(ctx.Event.SenderUserEntity, PlayerEntity, wp.getLocation()); }, 5f); } else { Action obj = delegate { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) Helper.TeleportTo(ctx.Event.SenderUserEntity, PlayerEntity, wp.getLocation()); }; BuffSystem.BuffPlayer(ctx.Event.SenderCharacterEntity, ctx.Event.SenderUserEntity, Prefabs.Buff_Vampire_Dracula_BloodCurse, 5, false); CoroutineHandler.StartGenericCoroutine(obj, 5f); } return; } throw ctx.Error("Cant find Teleport name " + name + "!"); } [Command("teleportplayer", "tpp", "<Name> <PlayerName>", "Teleports player to the specific waypoint. If we type \"all\" instead of the player's name it will teleport all online players to the specified point.", null, true)] public static void WaypointPlayerCommand(ChatCommandContext ctx, string name, string PlayerName) { //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_0267: Unknown result type (might be due to invalid IL or missing references) //IL_026c: Unknown result type (might be due to invalid IL or missing references) //IL_0276: Unknown result type (might be due to invalid IL or missing references) //IL_02bc: Unknown result type (might be due to invalid IL or missing references) //IL_02c8: Unknown result type (might be due to invalid IL or missing references) //IL_02cd: Unknown result type (might be due to invalid IL or missing references) //IL_02d2: Unknown result type (might be due to invalid IL or missing references) //IL_0291: Unknown result type (might be due to invalid IL or missing references) //IL_00ad: Unknown result type (might be due to invalid IL or missing references) //IL_00b2: Unknown result type (might be due to invalid IL or missing references) //IL_00bc: Unknown result type (might be due to invalid IL or missing references) //IL_034e: Unknown result type (might be due to invalid IL or missing references) //IL_0353: Unknown result type (might be due to invalid IL or missing references) //IL_0357: Unknown result type (might be due to invalid IL or missing references) //IL_0108: Unknown result type (might be due to invalid IL or missing references) //IL_010d: Unknown result type (might be due to invalid IL or missing references) //IL_0126: Unknown result type (might be due to invalid IL or missing references) //IL_0132: Unknown result type (might be due to invalid IL or missing references) //IL_0137: Unknown result type (might be due to invalid IL or missing references) //IL_013c: Unknown result type (might be due to invalid IL or missing references) //IL_00d7: Unknown result type (might be due to invalid IL or missing references) //IL_03a1: Unknown result type (might be due to invalid IL or missing references) //IL_03a6: Unknown result type (might be due to invalid IL or missing references) //IL_03aa: Unknown result type (might be due to invalid IL or missing references) //IL_01bb: Unknown result type (might be due to invalid IL or missing references) //IL_01c0: Unknown result type (might be due to invalid IL or missing references) //IL_01c4: Unknown result type (might be due to invalid IL or missing references) //IL_0212: Unknown result type (might be due to invalid IL or missing references) //IL_0217: Unknown result type (might be due to invalid IL or missing references) //IL_021b: Unknown result type (might be due to invalid IL or missing references) if (!DraculaRoom) { LocalToWorld componentData = ((EntityManager)(ref entityManager)).GetComponentData<LocalToWorld>(ctx.Event.SenderCharacterEntity); float3 position = ((LocalToWorld)(ref componentData)).Position; if (Helper.checkDracualaRoom(new WaypointData("test", 12345678901234567890uL, position.x, position.y, position.z))) { throw ctx.Error("You can't teleport from Dracula's room!"); } } if (PlayerName == "all") { Entity val = default(Entity); foreach (UserModel item in GameData.Users.Online) { Entity entity = item.Character.Entity; ulong SteamID2 = ctx.Event.User.PlatformId; if (Plugin.InCombat.Value && Helper.IsPlayerInCombat(entity)) { throw ctx.Error("Unable to use waypoint! " + item.CharacterName + " in combat!"); } Users users = GameData.Users; User user = ctx.Event.User; users.GetUserByCharacterName(((FixedString64Bytes)(ref user.CharacterName)).Value); if (BuffUtility.TryGetBuff(Core.SystemsCore.EntityManager, item.Character.Entity, PrefabIdentifier.op_Implicit(Prefabs.AB_Shapeshift_Bat_TakeFlight_Buff), ref val)) { throw ctx.Error("You cannot create a waypoint while flying"); } WaypointData waypointData = Database.globalWaypoint.FirstOrDefault((WaypointData waypoint) => waypoint.Name.ToLower() == name.ToLower()); if (waypointData != null) { if (DraculaRoom || !Helper.checkDracualaRoom(waypointData)) { Helper.TeleportTo(ctx.Event.SenderUserEntity, entity, waypointData.getLocation()); break; } throw ctx.Error("You can't teleport to Dracula's room!"); } waypointData = Database.waypoints.FirstOrDefault((WaypointData waypoint) => waypoint.Name.ToLower() == name.ToLower() && waypoint.Owner == SteamID2); if (waypointData != null) { if (DraculaRoom || !Helper.checkDracualaRoom(waypointData)) { Helper.TeleportTo(ctx.Event.SenderUserEntity, entity, waypointData.getLocation()); break; } throw ctx.Error("You can't teleport to Dracula's room!"); } } return; } UserModel userByCharacterName = GameData.Users.GetUserByCharacterName(PlayerName); Entity entity2 = userByCharacterName.Character.Entity; ulong SteamID = ctx.Event.User.PlatformId; if (Plugin.InCombat.Value && Helper.IsPlayerInCombat(entity2)) { throw ctx.Error("Unable to use waypoint! " + userByCharacterName.CharacterName + " in combat!"); } Entity val2 = default(Entity); if (BuffUtility.TryGetBuff(Core.SystemsCore.EntityManager, userByCharacterName.Character.Entity, PrefabIdentifier.op_Implicit(Prefabs.AB_Shapeshift_Bat_TakeFlight_Buff), ref val2)) { throw ctx.Error("You cannot create a waypoint while flying"); } _ = name + "_" + SteamID; WaypointData waypointData2 = Database.globalWaypoint.FirstOrDefault((WaypointData waypoint) => waypoint.Name.ToLower() == name.ToLower() && waypoint.Owner == SteamID); if (waypointData2 != null) { if (!DraculaRoom && Helper.checkDracualaRoom(waypointData2)) { throw ctx.Error("You can't teleport to Dracula's room!"); } Helper.TeleportTo(ctx.Event.SenderUserEntity, entity2, waypointData2.getLocation()); return; } waypointData2 = Database.waypoints.FirstOrDefault((WaypointData waypoint) => waypoint.Name.ToLower() == name.ToLower() && waypoint.Owner == SteamID); if (waypointData2 != null) { if (!DraculaRoom && Helper.checkDracualaRoom(waypointData2)) { throw ctx.Error("You can't teleport to Dracula's room!"); } Helper.TeleportTo(ctx.Event.SenderUserEntity, entity2, waypointData2.getLocation()); } } [Command("waypoint", "wp", "<Name>", "Creates the specified personal waypoint", null, false)] public static void WaypointSetCommand(ChatCommandContext ctx, string name) { //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_0095: Unknown result type (might be due to invalid IL or missing references) //IL_0120: Unknown result type (might be due to invalid IL or missing references) //IL_0125: Unknown result type (might be due to invalid IL or missing references) //IL_012a: Unknown result type (might be due to invalid IL or missing references) //IL_012e: Unknown result type (might be due to invalid IL or missing references) //IL_0133: Unknown result type (might be due to invalid IL or missing references) //IL_0179: Unknown result type (might be due to invalid IL or missing references) //IL_0180: Unknown result type (might be due to invalid IL or missing references) //IL_0187: Unknown result type (might be due to invalid IL or missing references) //IL_0199: Unknown result type (might be due to invalid IL or missing references) //IL_014a: Unknown result type (might be due to invalid IL or missing references) //IL_0151: Unknown result type (might be due to invalid IL or missing references) //IL_0158: Unknown result type (might be due to invalid IL or missing references) ulong SteamID = ctx.Event.User.PlatformId; Users users = GameData.Users; User user = ctx.Event.User; UserModel userByCharacterName = users.GetUserByCharacterName(((FixedString64Bytes)(ref user.CharacterName)).Value); Entity val = default(Entity); if (BuffUtility.TryGetBuff(Core.SystemsCore.EntityManager, userByCharacterName.Character.Entity, PrefabIdentifier.op_Implicit(Prefabs.AB_Shapeshift_Bat_TakeFlight_Buff), ref val)) { throw ctx.Error("You cannot create a waypoint while flying"); } if (Database.waypoints_owned.TryGetValue(SteamID, out var value) && !ctx.Event.User.IsAdmin && value >= WaypointLimit && value >= WaypointLimit) { throw ctx.Error("You already have reached your total waypoint limit."); } if (Database.globalWaypoint.FirstOrDefault((WaypointData waypoint) => waypoint.Name.ToLower() == name.ToLower()) != null) { throw ctx.Error("A global waypoint with the \"" + name + "\" name existed. Please rename your waypoint."); } if (Database.waypoints.FirstOrDefault((WaypointData waypoint) => waypoint.Name.ToLower() == name.ToLower() && waypoint.Owner == SteamID) != null) { throw ctx.Error("You already have a waypoint with the same name."); } LocalToWorld componentData = ((EntityManager)(ref entityManager)).GetComponentData<LocalToWorld>(ctx.Event.SenderCharacterEntity); float3 position = ((LocalToWorld)(ref componentData)).Position; if (!DraculaRoom && Helper.checkDracualaRoom(new WaypointData("test", 123456789123456789uL, position.x, position.y, position.z))) { throw ctx.Error("You can't create a waypoint in Dracula's room!"); } float3 location = default(float3); ((float3)(ref location))..ctor(position.x, position.y, position.z); AddWaypoint(SteamID, location, name, isGlobal: false); ctx.Reply("Successfully added Waypoint."); } [Command("waypointglobal", "wpg", "<Name>", "Creates the specified global waypoint", null, true)] public static void WaypointSetGlobalCommand(ChatCommandContext ctx, string name) { //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_006b: Unknown result type (might be due to invalid IL or missing references) //IL_00f1: Unknown result type (might be due to invalid IL or missing references) //IL_00f6: Unknown result type (might be due to invalid IL or missing references) //IL_00fb: Unknown result type (might be due to invalid IL or missing references) //IL_00ff: Unknown result type (might be due to invalid IL or missing references) //IL_0104: Unknown result type (might be due to invalid IL or missing references) //IL_014a: Unknown result type (might be due to invalid IL or missing references) //IL_0151: Unknown result type (might be due to invalid IL or missing references) //IL_0158: Unknown result type (might be due to invalid IL or missing references) //IL_0165: Unknown result type (might be due to invalid IL or missing references) //IL_011b: Unknown result type (might be due to invalid IL or missing references) //IL_0122: Unknown result type (might be due to invalid IL or missing references) //IL_0129: Unknown result type (might be due to invalid IL or missing references) Users users = GameData.Users; User user = ctx.Event.User; UserModel userByCharacterName = users.GetUserByCharacterName(((FixedString64Bytes)(ref user.CharacterName)).Value); Entity val = default(Entity); if (BuffUtility.TryGetBuff(Core.SystemsCore.EntityManager, userByCharacterName.Character.Entity, PrefabIdentifier.op_Implicit(Prefabs.AB_Shapeshift_Bat_TakeFlight_Buff), ref val)) { throw ctx.Error("You cannot create a waypoint while flying"); } ulong platformId = ctx.Event.User.PlatformId; _ = name + "_" + platformId; if (Database.globalWaypoint.FirstOrDefault((WaypointData waypoint) => waypoint.Name.ToLower() == name.ToLower()) != null) { throw ctx.Error("A global waypoint with the \"" + name + "\" name existed. Please rename your waypoint."); } if (Database.waypoints.FirstOrDefault((WaypointData waypoint) => waypoint.Name.ToLower() == name.ToLower()) != null) { throw ctx.Error("Already have a personal waypoint with the same name."); } LocalToWorld componentData = ((EntityManager)(ref entityManager)).GetComponentData<LocalToWorld>(ctx.Event.SenderCharacterEntity); float3 position = ((LocalToWorld)(ref componentData)).Position; if (!DraculaRoom && Helper.checkDracualaRoom(new WaypointData("test", 123456789123456789uL, position.x, position.y, position.z))) { throw ctx.Error("You can't create a waypoint in Dracula's room!"); } float3 location = default(float3); ((float3)(ref location))..ctor(position.x, position.y, position.z); AddWaypoint(platformId, location, name, isGlobal: true); ctx.Reply("Successfully added Global Waypoint."); } [Command("waypointremoveglobal", "wpgr", "<Name>", "Removes the specified global waypoint", null, true)] public static void WaypointremoveGlobalCommand(ChatCommandContext ctx, string name) { //IL_0013: Unknown result type (might be due to invalid IL or missing references) ulong platformId = ctx.Event.User.PlatformId; WaypointData waypointData = Database.globalWaypoint.FirstOrDefault((WaypointData waypoint) => waypoint.Name.ToLower() == name.ToLower()); if (waypointData != null) { RemoveWaypoint(platformId, name, waypointData, global: true); ctx.Reply("Successfully removed Waypoint."); return; } throw ctx.Error("There is no global waypoint with the name \"" + name + "\"."); } [Command("waypointremove", "wpr", "<Name>", "Removes the specified personal waypoint", null, false)] public static void WaypointRemoveCommand(ChatCommandContext ctx, string name) { //IL_0014: Unknown result type (might be due to invalid IL or missing references) ulong SteamID = ctx.Event.User.PlatformId; _ = name + "_" + SteamID; WaypointData waypointData = Database.waypoints.FirstOrDefault((WaypointData waypoint) => waypoint.Name.ToLower() == name.ToLower() && waypoint.Owner == SteamID); if (waypointData != null) { RemoveWaypoint(SteamID, name, waypointData, global: false); ctx.Reply("Successfully removed Waypoint."); return; } throw ctx.Error("There is no waypoint with the name \"" + name + "\"."); } [Command("list", "l", "", "Lists waypoints available to you", null, false)] public static void WaypointCommand(ChatCommandContext ctx) { //IL_00c7: Unknown result type (might be due to invalid IL or missing references) //IL_00cc: Unknown result type (might be due to invalid IL or missing references) int num = 0; foreach (WaypointData item in Database.globalWaypoint) { ctx.Reply(" - <color=#ffff00>[<color=#00dd00>Global</color>] " + item.Name + "</color>"); num++; } foreach (WaypointData item2 in Database.waypoints.Where((WaypointData x) => x.Owner == ctx.Event.User.PlatformId)) { ctx.Reply($" - <color=#ffff00>[<color=#00dd00>{ctx.Event.User.CharacterName}</color>] {item2.Name}</color>"); num++; } if (num == 0) { throw ctx.Error("No waypoint available."); } } public static void AddWaypoint(ulong owner, float3 location, string name, bool isGlobal) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Unknown result type (might be due to invalid IL or missing references) WaypointData item = new WaypointData(name, owner, location.x, location.y, location.z); if (isGlobal) { Database.globalWaypoint.Add(item); } else { Database.waypoints.Add(item); } if (!isGlobal && Database.waypoints_owned.TryGetValue(owner, out var value)) { Database.waypoints_owned[owner] = value + 1; } else { Database.waypoints_owned[owner] = 1; } } public static void RemoveWaypoint(ulong owner, string name, WaypointData waypointData, bool global) { if (global) { Database.globalWaypoint.Remove(waypointData); return; } Database.waypoints_owned[owner]--; if (Database.waypoints_owned[owner] < 0) { Database.waypoints_owned[owner] = 0; } Database.waypoints.Remove(waypointData); } public static void LoadWaypoints() { if (!File.Exists(Plugin.WaypointsJson)) { File.WriteAllText(Plugin.WaypointsJson, "[]"); } string json = File.ReadAllText(Plugin.WaypointsJson); try { Database.waypoints = JsonSerializer.Deserialize<List<WaypointData>>(json); Plugin.Logger.LogWarning("Waypoints DB Populated"); } catch { Database.waypoints = new List<WaypointData>(); Plugin.Logger.LogWarning("Waypoints DB Created"); } if (!File.Exists(Plugin.GlobalWaypointsJson)) { File.WriteAllText(Plugin.GlobalWaypointsJson, "[]"); } json = File.ReadAllText(Plugin.GlobalWaypointsJson); try { Database.globalWaypoint = JsonSerializer.Deserialize<List<WaypointData>>(json); Plugin.Logger.LogWarning("GlobalWaypoints DB Populated"); } catch { Database.globalWaypoint = new List<WaypointData>(); Plugin.Logger.LogWarning("GlobalWaypoints DB Created"); } if (!File.Exists(Plugin.TotalWaypointsJson)) { File.WriteAllText(Plugin.TotalWaypointsJson, "[]"); } json = File.ReadAllText(Plugin.TotalWaypointsJson); try { Database.waypoints_owned = JsonSerializer.Deserialize<Dictionary<ulong, int>>(json); Plugin.Logger.LogWarning("TotalWaypoints DB Populated"); } catch { Database.waypoints_owned = new Dictionary<ulong, int>(); Plugin.Logger.LogWarning("TotalWaypoints DB Created"); } } public static void SaveWaypoints() { File.WriteAllText(Plugin.WaypointsJson, JsonSerializer.Serialize(Database.waypoints)); File.WriteAllText(Plugin.GlobalWaypointsJson, JsonSerializer.Serialize(Database.globalWaypoint)); File.WriteAllText(Plugin.TotalWaypointsJson, JsonSerializer.Serialize(Database.waypoints_owned)); } } [CommandGroup("bloodypoint", "blp")] internal class TTPCommands { private static Dictionary<string, string> TeleportsRequest = new Dictionary<string, string>(); [Command("teleportoplayer", "tlp", "<PlayerName>", "Teleports you to the specific player.", null, false)] public static void TeleportToPlayerCommand(ChatCommandContext ctx, string name) { //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0111: Unknown result type (might be due to invalid IL or missing references) //IL_011c: Unknown result type (might be due to invalid IL or missing references) //IL_0121: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: Unknown result type (might be due to invalid IL or missing references) //IL_00ce: Unknown result type (might be due to invalid IL or missing references) //IL_00d3: Unknown result type (might be due to invalid IL or missing references) try { UserModel Target = GameData.Users.GetUserByCharacterName(name); Users users = GameData.Users; User user = ctx.User; UserModel Owner = users.GetUserByCharacterName(((FixedString64Bytes)(ref user.CharacterName)).Value); if (Plugin.RequestTeleportPlayer.Value) { if (!RequestTeleportToPlayer(Owner, Target, out var message)) { throw ctx.Error(message); } ctx.Reply(message); } else if (Plugin.Cost.Value) { if (!RetriveItemsFromInventory(Owner, out var message2)) { throw ctx.Error(message2); } Action obj = delegate { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) EntityManager entityManager2 = Plugin.SystemsCore.EntityManager; LocalToWorld componentData2 = ((EntityManager)(ref entityManager2)).GetComponentData<LocalToWorld>(Target.Character.Entity); float3 position2 = ((LocalToWorld)(ref componentData2)).Position; Helper.TeleportTo(((EntityModel)Owner).Entity, Owner.Character.Entity, position2); ctx.Reply("Successfully teleport the " + FontColorChatSystem.White(name ?? "") + " player to your position."); }; BuffSystem.BuffPlayer(Owner.Character.Entity, ((EntityModel)Owner).Entity, Prefabs.Buff_Vampire_Dracula_BloodCurse, 5, false); CoroutineHandler.StartGenericCoroutine(obj, 5f); } else { Action obj2 = delegate { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) EntityManager entityManager = Plugin.SystemsCore.EntityManager; LocalToWorld componentData = ((EntityManager)(ref entityManager)).GetComponentData<LocalToWorld>(Target.Character.Entity); float3 position = ((LocalToWorld)(ref componentData)).Position; Helper.TeleportTo(((EntityModel)Owner).Entity, Owner.Character.Entity, position); ctx.Reply("Successfully teleport the " + FontColorChatSystem.White(name ?? "") + " player to your position."); }; BuffSystem.BuffPlayer(Owner.Character.Entity, ((EntityModel)Owner).Entity, Prefabs.Buff_Vampire_Dracula_BloodCurse, 5, false); CoroutineHandler.StartGenericCoroutine(obj2, 5f); } } catch (Exception ex) { throw ctx.Error(ex.Message); } } [Command("teleportaccept", "tla", "<PlayerName>", "Accept teleport request from a player.", null, false)] public static void AceptTeleportCommand(ChatCommandContext ctx, string name) { //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_0153: Unknown result type (might be due to invalid IL or missing references) //IL_015e: Unknown result type (might be due to invalid IL or missing references) //IL_0163: Unknown result type (might be due to invalid IL or missing references) //IL_017b: Unknown result type (might be due to invalid IL or missing references) //IL_0186: Unknown result type (might be due to invalid IL or missing references) //IL_018b: Unknown result type (might be due to invalid IL or missing references) //IL_00dd: Unknown result type (might be due to invalid IL or missing references) //IL_00e8: Unknown result type (might be due to invalid IL or missing references) //IL_00ed: Unknown result type (might be due to invalid IL or missing references) //IL_0105: Unknown result type (might be due to invalid IL or missing references) //IL_0110: Unknown result type (might be due to invalid IL or missing references) //IL_0115: Unknown result type (might be due to invalid IL or missing references) try { Users users = GameData.Users; User user = ctx.User; UserModel Target = users.GetUserByCharacterName(((FixedString64Bytes)(ref user.CharacterName)).Value); UserModel Owner = GameData.Users.GetUserByCharacterName(name); if (!TeleportsRequest.TryGetValue(Owner.CharacterName, out var value) && value != Target.CharacterName) { throw ctx.Error("You do not have any teleport requests from " + FontColorChatSystem.White(name ?? "")); } if (Plugin.Cost.Value) { if (!RetriveItemsFromInventory(Owner, out var message)) { throw ctx.Error(message); } Action obj = delegate { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) EntityManager entityManager2 = Plugin.SystemsCore.EntityManager; LocalToWorld componentData2 = ((EntityManager)(ref entityManager2)).GetComponentData<LocalToWorld>(Target.Character.Entity); float3 position2 = ((LocalToWorld)(ref componentData2)).Position; Helper.TeleportTo(((EntityModel)Owner).Entity, Owner.Character.Entity, position2); ctx.Reply("Successfully teleport the " + FontColorChatSystem.White(name ?? "") + " player to your position."); }; BuffSystem.BuffPlayer(Owner.Character.Entity, ((EntityModel)Owner).Entity, Prefabs.Buff_Vampire_Dracula_BloodCurse, 5, false); BuffSystem.BuffPlayer(Target.Character.Entity, ((EntityModel)Target).Entity, Prefabs.Buff_Vampire_Dracula_BloodCurse, 5, false); CoroutineHandler.StartGenericCoroutine(obj, 5f); } else { Action obj2 = delegate { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) EntityManager entityManager = Plugin.SystemsCore.EntityManager; LocalToWorld componentData = ((EntityManager)(ref entityManager)).GetComponentData<LocalToWorld>(Target.Character.Entity); float3 position = ((LocalToWorld)(ref componentData)).Position; Helper.TeleportTo(((EntityModel)Owner).Entity, Owner.Character.Entity, position); ctx.Reply("Successfully teleport the " + FontColorChatSystem.White(name ?? "") + " player to your position."); }; BuffSystem.BuffPlayer(Owner.Character.Entity, ((EntityModel)Owner).Entity, Prefabs.Buff_Vampire_Dracula_BloodCurse, 5, false); BuffSystem.BuffPlayer(Target.Character.Entity, ((EntityModel)Target).Entity, Prefabs.Buff_Vampire_Dracula_BloodCurse, 5, false); CoroutineHandler.StartGenericCoroutine(obj2, 5f); } } catch (Exception ex) { throw ctx.Error(ex.Message); } } [Command("cast", null, null, "Used for debugging", null, true)] public static void CastCommand(ChatCommandContext ctx, int intprefabGuid) { //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_008b: Unknown result type (might be due to invalid IL or missing references) //IL_009c: Unknown result type (might be due to invalid IL or missing references) //IL_00a1: Unknown result type (might be due to invalid IL or missing references) PrefabGUID abilityGroup = default(PrefabGUID); ((PrefabGUID)(ref abilityGroup))..ctor(intprefabGuid); Users users = GameData.Users; User user = ctx.Event.User; UserModel userByCharacterName = users.GetUserByCharacterName(((FixedString64Bytes)(ref user.CharacterName)).Value); EntityManager entityManager = VWorld.Server.EntityManager; FromCharacter componentData = ((EntityManager)(ref entityManager)).GetComponentData<FromCharacter>(((EntityModel)userByCharacterName).Entity); CastAbilityServerDebugEvent val = default(CastAbilityServerDebugEvent); val.AbilityGroup = abilityGroup; val.AimPosition = new Nullable_Unboxed<float3>(ECSExtensions.Read<EntityInput>(((EntityModel)userByCharacterName).Entity).AimPosition); val.Who = ECSExtensions.Read<NetworkId>(ctx.Event.SenderCharacterEntity); CastAbilityServerDebugEvent val2 = val; Plugin.SystemsCore.DebugEventsSystem.CastAbilityServerDebugEvent(ECSExtensions.Read<User>(ctx.Event.SenderUserEntity).Index, ref val2, ref componentData); } internal static bool RequestTeleport(UserModel playerRequest, UserModel playerTarget, out string message) { //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_0088: Unknown result type (might be due to invalid IL or missing references) if (TeleportsRequest.TryGetValue(playerRequest.CharacterName, out var value)) { if (value == playerTarget.CharacterName) { message = "You already have an active request for the player " + FontColorChatSystem.White(playerTarget.CharacterName ?? "") + "."; return false; } TeleportsRequest.Remove(playerRequest.CharacterName); } TeleportsRequest.Add(playerRequest.CharacterName, playerTarget.CharacterName); ServerChatUtils.SendSystemMessageToClient(Plugin.SystemsCore.EntityManager, ((EntityModel)playerTarget).Internals.User.Value, FontColorChatSystem.White(playerRequest.CharacterName ?? "") + " has asked you to teleport to your position. If you want to accept it write " + FontColorChatSystem.White(".blp tla " + playerRequest.CharacterName)); message = "The teleport request has been successfully sent to player " + FontColorChatSystem.White(playerTarget.CharacterName ?? ""); return true; } internal static bool RequestTeleportToPlayer(UserModel playerRequest, UserModel playerTarget, out string message) { try { if (RequestTeleport(playerRequest, playerTarget, out var message2)) { message = message2; return true; } message = message2; return false; } catch (Exception ex) { message = ex.Message; return false; } } internal static bool RetriveItemsFromInventory(UserModel playerRequest, out string message) { //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0073: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_0130: Unknown result type (might be due to invalid IL or missing references) //IL_0099: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: Unknown result type (might be due to invalid IL or missing references) //IL_00a8: Unknown result type (might be due to invalid IL or missing references) //IL_00ad: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00b0: Unknown result type (might be due to invalid IL or missing references) //IL_00d2: Unknown result type (might be due to invalid IL or missing references) //IL_00d7: Unknown result type (might be due to invalid IL or missing references) //IL_00d8: Unknown result type (might be due to invalid IL or missing references) //IL_00da: Unknown result type (might be due to invalid IL or missing references) //IL_00df: Unknown result type (might be due to invalid IL or missing references) //IL_00f0: Unknown result type (might be due to invalid IL or missing references) try { ItemModel prefabById = GameData.Items.GetPrefabById(new PrefabGUID(Plugin.PrefabGUID.Value)); Entity entity = playerRequest.Character.Entity; int inventorySize = InventoryUtilities.GetInventorySize(Plugin.SystemsCore.EntityManager, entity); _ = Plugin.SystemsCore.GameDataSystem; int num = Plugin.Amount.Value; InventoryBuffer val = default(InventoryBuffer); for (int i = 0; i < inventorySize; i++) { if (!InventoryUtilities.TryGetItemAtSlot(Plugin.SystemsCore.EntityManager, entity, i, ref val)) { continue; } ItemModel prefabById2 = GameData.Items.GetPrefabById(val.ItemType); if (prefabById2 != null && prefabById2.PrefabName == prefabById.PrefabName) { if (val.Amount >= num) { InventoryUtilitiesServer.TryRemoveItemAtIndex(Plugin.SystemsCore.EntityManager, entity, val.ItemType, num, i, false); num = 0; break; } if (val.Amount < num) { InventoryUtilitiesServer.TryRemoveItemAtIndex(Plugin.SystemsCore.EntityManager, entity, val.ItemType, val.Amount, i, true); num -= val.Amount; } if (num == 0) { break; } } } if (num > 0) { message = "You do not have the necessary amount of " + Plugin.PrefabName.Value + " in your inventory to perform this action"; AdditemToInventory(playerRequest.CharacterName, ((EntityModel)prefabById).PrefabGUID, Plugin.Amount.Value - num); return false; } message = ""; return true; } catch (Exception ex) { message = ex.Message; return false; } } public static bool AdditemToInventory(string characterName, PrefabGUID prefabGUID, int quantity) { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) try { UserModel userByCharacterName = GameData.Users.GetUserByCharacterName(characterName); Entity val = default(Entity); if (!UserModelMethods.TryGiveItem(userByCharacterName, prefabGUID, quantity, ref val)) { UserModelMethods.DropItemNearby(userByCharacterName, prefabGUID, quantity); } return true; } catch (Exception ex) { Plugin.Logger.LogError("Error " + ex.Message); return false; } } } }