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)
|
private void ValidateAuthTicketResponse(ulong steamId, JoinResult response, ulong steamOwner)
|
||||||
{
|
{
|
||||||
var state = new MyP2PSessionState();
|
var state = new MyP2PSessionState();
|
||||||
//MySteamService.Static.Peer2Peer.GetSessionState(steamId, ref state);
|
MySteamServiceWrapper.Static.Peer2Peer.GetSessionState(steamId, ref state);
|
||||||
//var ip = new IPAddress(BitConverter.GetBytes(state.RemoteIP).Reverse().ToArray());
|
var ip = new IPAddress(BitConverter.GetBytes(state.RemoteIP).Reverse().ToArray());
|
||||||
string ip = "Can't acquire IP because Keen did a stupid";
|
|
||||||
|
|
||||||
Torch.CurrentSession.KeenSession.PromotedUsers.TryGetValue(steamId, out MyPromoteLevel promoteLevel);
|
Torch.CurrentSession.KeenSession.PromotedUsers.TryGetValue(steamId, out MyPromoteLevel promoteLevel);
|
||||||
|
|
||||||
|
@@ -37,14 +37,13 @@ namespace Torch.Commands
|
|||||||
[Permission(MyPromoteLevel.None)]
|
[Permission(MyPromoteLevel.None)]
|
||||||
public void GetIP(ulong steamId = 0)
|
public void GetIP(ulong steamId = 0)
|
||||||
{
|
{
|
||||||
Context.Respond("Keen broke this command. Fix coming Soon(tm)");
|
if (steamId == 0)
|
||||||
//if (steamId == 0)
|
steamId = Context.Player.SteamUserId;
|
||||||
// steamId = Context.Player.SteamUserId;
|
|
||||||
|
|
||||||
//VRage.GameServices.MyP2PSessionState statehack = new VRage.GameServices.MyP2PSessionState();
|
VRage.GameServices.MyP2PSessionState statehack = new VRage.GameServices.MyP2PSessionState();
|
||||||
//VRage.Steam.MySteamService.Static.Peer2Peer.GetSessionState(steamId, ref statehack);
|
MySteamServiceWrapper.Static.Peer2Peer.GetSessionState(steamId, ref statehack);
|
||||||
//var ip = new IPAddress(BitConverter.GetBytes(statehack.RemoteIP).Reverse().ToArray());
|
var ip = new IPAddress(BitConverter.GetBytes(statehack.RemoteIP).Reverse().ToArray());
|
||||||
//Context.Respond($"Your IP is {ip}");
|
Context.Respond($"Your IP is {ip}");
|
||||||
}
|
}
|
||||||
|
|
||||||
[Command("help", "Displays help for a command")]
|
[Command("help", "Displays help for a command")]
|
||||||
|
@@ -22,7 +22,7 @@ using VRage.Network;
|
|||||||
|
|
||||||
namespace Torch.Managers.ChatManager
|
namespace Torch.Managers.ChatManager
|
||||||
{
|
{
|
||||||
//[PatchShim]
|
[PatchShim]
|
||||||
internal static class ChatInterceptPatch
|
internal static class ChatInterceptPatch
|
||||||
{
|
{
|
||||||
private static ChatManagerServer _chatManager;
|
private static ChatManagerServer _chatManager;
|
||||||
@@ -30,7 +30,7 @@ namespace Torch.Managers.ChatManager
|
|||||||
|
|
||||||
internal static void Patch(PatchContext context)
|
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);
|
var patchMethod = typeof(ChatInterceptPatch).GetMethod(nameof(PrefixMessageProcessing), BindingFlags.Static | BindingFlags.NonPublic);
|
||||||
context.GetPattern(target).Prefixes.Add(patchMethod);
|
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\LoggingILGenerator.cs" />
|
||||||
<Compile Include="Managers\PatchManager\Transpile\MethodContext.cs" />
|
<Compile Include="Managers\PatchManager\Transpile\MethodContext.cs" />
|
||||||
<Compile Include="Managers\PatchManager\Transpile\MethodTranspiler.cs" />
|
<Compile Include="Managers\PatchManager\Transpile\MethodTranspiler.cs" />
|
||||||
|
<Compile Include="MySteamServiceWrapper.cs" />
|
||||||
<Compile Include="Patches\GameAnalyticsPatch.cs" />
|
<Compile Include="Patches\GameAnalyticsPatch.cs" />
|
||||||
<Compile Include="Patches\GameStatePatchShim.cs" />
|
<Compile Include="Patches\GameStatePatchShim.cs" />
|
||||||
<Compile Include="Patches\ObjectFactoryInitPatch.cs" />
|
<Compile Include="Patches\ObjectFactoryInitPatch.cs" />
|
||||||
|
@@ -25,6 +25,7 @@ using SpaceEngineers.Game.GUI;
|
|||||||
using Torch.Utils;
|
using Torch.Utils;
|
||||||
using VRage;
|
using VRage;
|
||||||
using VRage.Audio;
|
using VRage.Audio;
|
||||||
|
using VRage.Dedicated;
|
||||||
using VRage.FileSystem;
|
using VRage.FileSystem;
|
||||||
using VRage.Game;
|
using VRage.Game;
|
||||||
using VRage.Game.ObjectBuilder;
|
using VRage.Game.ObjectBuilder;
|
||||||
@@ -137,8 +138,11 @@ namespace Torch
|
|||||||
bool dedicated = Sandbox.Engine.Platform.Game.IsDedicated;
|
bool dedicated = Sandbox.Engine.Platform.Game.IsDedicated;
|
||||||
Environment.SetEnvironmentVariable("SteamAppId", _appSteamId.ToString());
|
Environment.SetEnvironmentVariable("SteamAppId", _appSteamId.ToString());
|
||||||
//KEEN WHY
|
//KEEN WHY
|
||||||
var service = Activator.CreateInstance(Type.GetType("VRage.Steam.MySteamService, VRage.Steam"), new object[] {dedicated, _appSteamId});
|
Activator.CreateInstance(Type.GetType("VRage.Steam.MySteamService, VRage.Steam"), new object[] {dedicated, _appSteamId});
|
||||||
MyServiceManager.Instance.AddService<IMyGameService>((IMyGameService)service);
|
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)
|
if (dedicated && !MyGameService.HasGameServer)
|
||||||
{
|
{
|
||||||
_log.Warn("Steam service is not running! Please reinstall dedicated server.");
|
_log.Warn("Steam service is not running! Please reinstall dedicated server.");
|
||||||
|
Reference in New Issue
Block a user