Add MySteamService wrapper, add UGC service to init, fix chat intercept
This commit is contained in:
@@ -210,9 +210,8 @@ namespace Torch.Server.Managers
|
||||
private void ValidateAuthTicketResponse(ulong steamId, JoinResult response, ulong steamOwner)
|
||||
{
|
||||
var state = new MyP2PSessionState();
|
||||
//MySteamService.Static.Peer2Peer.GetSessionState(steamId, ref state);
|
||||
//var ip = new IPAddress(BitConverter.GetBytes(state.RemoteIP).Reverse().ToArray());
|
||||
string ip = "Can't acquire IP because Keen did a stupid";
|
||||
MySteamServiceWrapper.Static.Peer2Peer.GetSessionState(steamId, ref state);
|
||||
var ip = new IPAddress(BitConverter.GetBytes(state.RemoteIP).Reverse().ToArray());
|
||||
|
||||
Torch.CurrentSession.KeenSession.PromotedUsers.TryGetValue(steamId, out MyPromoteLevel promoteLevel);
|
||||
|
||||
|
@@ -37,14 +37,13 @@ namespace Torch.Commands
|
||||
[Permission(MyPromoteLevel.None)]
|
||||
public void GetIP(ulong steamId = 0)
|
||||
{
|
||||
Context.Respond("Keen broke this command. Fix coming Soon(tm)");
|
||||
//if (steamId == 0)
|
||||
// steamId = Context.Player.SteamUserId;
|
||||
if (steamId == 0)
|
||||
steamId = Context.Player.SteamUserId;
|
||||
|
||||
//VRage.GameServices.MyP2PSessionState statehack = new VRage.GameServices.MyP2PSessionState();
|
||||
//VRage.Steam.MySteamService.Static.Peer2Peer.GetSessionState(steamId, ref statehack);
|
||||
//var ip = new IPAddress(BitConverter.GetBytes(statehack.RemoteIP).Reverse().ToArray());
|
||||
//Context.Respond($"Your IP is {ip}");
|
||||
VRage.GameServices.MyP2PSessionState statehack = new VRage.GameServices.MyP2PSessionState();
|
||||
MySteamServiceWrapper.Static.Peer2Peer.GetSessionState(steamId, ref statehack);
|
||||
var ip = new IPAddress(BitConverter.GetBytes(statehack.RemoteIP).Reverse().ToArray());
|
||||
Context.Respond($"Your IP is {ip}");
|
||||
}
|
||||
|
||||
[Command("help", "Displays help for a command")]
|
||||
|
@@ -22,7 +22,7 @@ using VRage.Network;
|
||||
|
||||
namespace Torch.Managers.ChatManager
|
||||
{
|
||||
//[PatchShim]
|
||||
[PatchShim]
|
||||
internal static class ChatInterceptPatch
|
||||
{
|
||||
private static ChatManagerServer _chatManager;
|
||||
@@ -30,7 +30,7 @@ namespace Torch.Managers.ChatManager
|
||||
|
||||
internal static void Patch(PatchContext context)
|
||||
{
|
||||
var target = typeof(MyMultiplayerBase).GetMethod("OnChatMessageRecieved_Server", BindingFlags.Static | BindingFlags.NonPublic);
|
||||
var target = typeof(MyMultiplayerBase).GetMethod("OnChatMessageReceived_Server", BindingFlags.Static | BindingFlags.NonPublic);
|
||||
var patchMethod = typeof(ChatInterceptPatch).GetMethod(nameof(PrefixMessageProcessing), BindingFlags.Static | BindingFlags.NonPublic);
|
||||
context.GetPattern(target).Prefixes.Add(patchMethod);
|
||||
}
|
||||
|
24
Torch/MySteamServiceWrapper.cs
Normal file
24
Torch/MySteamServiceWrapper.cs
Normal file
@@ -0,0 +1,24 @@
|
||||
using System;
|
||||
using System.Reflection;
|
||||
using System.Windows.Data;
|
||||
using VRage.GameServices;
|
||||
|
||||
namespace Torch
|
||||
{
|
||||
/// <summary>
|
||||
/// Provides static accessor for MySteamService because Keen made it internal
|
||||
/// </summary>
|
||||
public class MySteamServiceWrapper
|
||||
{
|
||||
private static readonly MethodInfo _getGameService;
|
||||
|
||||
public static IMyGameService Static => (IMyGameService)_getGameService.Invoke(null, null);
|
||||
|
||||
static MySteamServiceWrapper()
|
||||
{
|
||||
var type = Type.GetType("VRage.Steam.MySteamService, VRage.Steam");
|
||||
var prop = type.GetProperty("Static", BindingFlags.Static | BindingFlags.Public);
|
||||
_getGameService = prop.GetGetMethod();
|
||||
}
|
||||
}
|
||||
}
|
@@ -241,6 +241,7 @@
|
||||
<Compile Include="Managers\PatchManager\Transpile\LoggingILGenerator.cs" />
|
||||
<Compile Include="Managers\PatchManager\Transpile\MethodContext.cs" />
|
||||
<Compile Include="Managers\PatchManager\Transpile\MethodTranspiler.cs" />
|
||||
<Compile Include="MySteamServiceWrapper.cs" />
|
||||
<Compile Include="Patches\GameAnalyticsPatch.cs" />
|
||||
<Compile Include="Patches\GameStatePatchShim.cs" />
|
||||
<Compile Include="Patches\ObjectFactoryInitPatch.cs" />
|
||||
|
@@ -25,6 +25,7 @@ using SpaceEngineers.Game.GUI;
|
||||
using Torch.Utils;
|
||||
using VRage;
|
||||
using VRage.Audio;
|
||||
using VRage.Dedicated;
|
||||
using VRage.FileSystem;
|
||||
using VRage.Game;
|
||||
using VRage.Game.ObjectBuilder;
|
||||
@@ -137,8 +138,11 @@ namespace Torch
|
||||
bool dedicated = Sandbox.Engine.Platform.Game.IsDedicated;
|
||||
Environment.SetEnvironmentVariable("SteamAppId", _appSteamId.ToString());
|
||||
//KEEN WHY
|
||||
var service = Activator.CreateInstance(Type.GetType("VRage.Steam.MySteamService, VRage.Steam"), new object[] {dedicated, _appSteamId});
|
||||
MyServiceManager.Instance.AddService<IMyGameService>((IMyGameService)service);
|
||||
Activator.CreateInstance(Type.GetType("VRage.Steam.MySteamService, VRage.Steam"), new object[] {dedicated, _appSteamId});
|
||||
var service = MySteamServiceWrapper.Static;
|
||||
MyServiceManager.Instance.AddService<IMyGameService>(service);
|
||||
var serviceInstance = MySteamUgcService.Create(MyPerServerSettings.AppId, service);
|
||||
MyServiceManager.Instance.AddService<IMyUGCService>(serviceInstance);
|
||||
if (dedicated && !MyGameService.HasGameServer)
|
||||
{
|
||||
_log.Warn("Steam service is not running! Please reinstall dedicated server.");
|
||||
|
Reference in New Issue
Block a user