-
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
10 changed files
with
389 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
using System.ComponentModel; | ||
using Exiled.API.Interfaces; | ||
|
||
namespace DiscordLab.SCPSwap | ||
{ | ||
public class Config : IConfig | ||
{ | ||
public bool IsEnabled { get; set; } = true; | ||
public bool Debug { get; set; } = false; | ||
[Description("The channel where the swap logs will be sent.")] | ||
public ulong ChannelId { get; set; } = new(); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
<Project Sdk="Microsoft.NET.Sdk"> | ||
<PropertyGroup> | ||
<TargetFramework>net48</TargetFramework> | ||
<ImplicitUsings>enable</ImplicitUsings> | ||
<Nullable>disable</Nullable> | ||
<LangVersion>preview</LangVersion> | ||
<PlatformTarget>x64</PlatformTarget> | ||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks> | ||
<GenerateAssemblyInfo>false</GenerateAssemblyInfo> | ||
</PropertyGroup> | ||
<ItemGroup> | ||
<Reference Include="Assembly-CSharp-firstpass" HintPath="$(EXILED_REFERENCES)\Assembly-CSharp-firstpass.dll" Private="false" /> | ||
<Reference Include="Pooling" HintPath="$(EXILED_REFERENCES)\Pooling.dll" Private="false" /> | ||
<Reference Include="Mirror" HintPath="$(EXILED_REFERENCES)\Mirror.dll" Private="false" /> | ||
<Reference Include="UnityEngine" HintPath="$(EXILED_REFERENCES)\UnityEngine.dll" Private="false" /> | ||
<Reference Include="UnityEngine.CoreModule" HintPath="$(EXILED_REFERENCES)\UnityEngine.CoreModule.dll" Private="false" /> | ||
<Reference Include="UnityEngine.PhysicsModule" HintPath="$(EXILED_REFERENCES)\UnityEngine.PhysicsModule.dll" Private="false" /> | ||
</ItemGroup> | ||
<ItemGroup> | ||
<PackageReference Include="Costura.Fody" Version="6.0.0-beta0000" PrivateAssets="All" /> | ||
<PackageReference Include="Discord.Net.WebSocket" Version="3.15.3" /> | ||
<PackageReference Include="ExMod.Exiled" Version="9.0.0-alpha.2" /> | ||
<PackageReference Include="Fody" Version="6.8.2"> | ||
<PrivateAssets>all</PrivateAssets> | ||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> | ||
</PackageReference> | ||
</ItemGroup> | ||
<ItemGroup> | ||
<ProjectReference Include="..\DiscordLab.Bot\DiscordLab.Bot.csproj" /> | ||
</ItemGroup> | ||
</Project> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd"> | ||
<Costura> | ||
<IncludeAssemblies> | ||
Discord.Net.Websocket | ||
Microsoft.Bcl.AsyncInterfaces | ||
System.Collections.Immutable | ||
System.Threading.Tasks.Extensions | ||
System.ValueTuple | ||
</IncludeAssemblies> | ||
</Costura> | ||
</Weavers> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,176 @@ | ||
<?xml version="1.0" encoding="utf-8"?> | ||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> | ||
<!-- This file was generated by Fody. Manual changes to this file will be lost when your project is rebuilt. --> | ||
<xs:element name="Weavers"> | ||
<xs:complexType> | ||
<xs:all> | ||
<xs:element name="Costura" minOccurs="0" maxOccurs="1"> | ||
<xs:complexType> | ||
<xs:all> | ||
<xs:element minOccurs="0" maxOccurs="1" name="ExcludeAssemblies" type="xs:string"> | ||
<xs:annotation> | ||
<xs:documentation>A list of assembly names to exclude from the default action of "embed all Copy Local references", delimited with line breaks</xs:documentation> | ||
</xs:annotation> | ||
</xs:element> | ||
<xs:element minOccurs="0" maxOccurs="1" name="IncludeAssemblies" type="xs:string"> | ||
<xs:annotation> | ||
<xs:documentation>A list of assembly names to include from the default action of "embed all Copy Local references", delimited with line breaks.</xs:documentation> | ||
</xs:annotation> | ||
</xs:element> | ||
<xs:element minOccurs="0" maxOccurs="1" name="ExcludeRuntimeAssemblies" type="xs:string"> | ||
<xs:annotation> | ||
<xs:documentation>A list of runtime assembly names to exclude from the default action of "embed all Copy Local references", delimited with line breaks</xs:documentation> | ||
</xs:annotation> | ||
</xs:element> | ||
<xs:element minOccurs="0" maxOccurs="1" name="IncludeRuntimeAssemblies" type="xs:string"> | ||
<xs:annotation> | ||
<xs:documentation>A list of runtime assembly names to include from the default action of "embed all Copy Local references", delimited with line breaks.</xs:documentation> | ||
</xs:annotation> | ||
</xs:element> | ||
<xs:element minOccurs="0" maxOccurs="1" name="Unmanaged32Assemblies" type="xs:string"> | ||
<xs:annotation> | ||
<xs:documentation>Obsolete, use UnmanagedWinX86Assemblies instead</xs:documentation> | ||
</xs:annotation> | ||
</xs:element> | ||
<xs:element minOccurs="0" maxOccurs="1" name="UnmanagedWinX86Assemblies" type="xs:string"> | ||
<xs:annotation> | ||
<xs:documentation>A list of unmanaged X86 (32 bit) assembly names to include, delimited with line breaks.</xs:documentation> | ||
</xs:annotation> | ||
</xs:element> | ||
<xs:element minOccurs="0" maxOccurs="1" name="Unmanaged64Assemblies" type="xs:string"> | ||
<xs:annotation> | ||
<xs:documentation>Obsolete, use UnmanagedWinX64Assemblies instead.</xs:documentation> | ||
</xs:annotation> | ||
</xs:element> | ||
<xs:element minOccurs="0" maxOccurs="1" name="UnmanagedWinX64Assemblies" type="xs:string"> | ||
<xs:annotation> | ||
<xs:documentation>A list of unmanaged X64 (64 bit) assembly names to include, delimited with line breaks.</xs:documentation> | ||
</xs:annotation> | ||
</xs:element> | ||
<xs:element minOccurs="0" maxOccurs="1" name="UnmanagedWinArm64Assemblies" type="xs:string"> | ||
<xs:annotation> | ||
<xs:documentation>A list of unmanaged Arm64 (64 bit) assembly names to include, delimited with line breaks.</xs:documentation> | ||
</xs:annotation> | ||
</xs:element> | ||
<xs:element minOccurs="0" maxOccurs="1" name="PreloadOrder" type="xs:string"> | ||
<xs:annotation> | ||
<xs:documentation>The order of preloaded assemblies, delimited with line breaks.</xs:documentation> | ||
</xs:annotation> | ||
</xs:element> | ||
</xs:all> | ||
<xs:attribute name="CreateTemporaryAssemblies" type="xs:boolean"> | ||
<xs:annotation> | ||
<xs:documentation>This will copy embedded files to disk before loading them into memory. This is helpful for some scenarios that expected an assembly to be loaded from a physical file.</xs:documentation> | ||
</xs:annotation> | ||
</xs:attribute> | ||
<xs:attribute name="IncludeDebugSymbols" type="xs:boolean"> | ||
<xs:annotation> | ||
<xs:documentation>Controls if .pdbs for reference assemblies are also embedded.</xs:documentation> | ||
</xs:annotation> | ||
</xs:attribute> | ||
<xs:attribute name="IncludeRuntimeReferences" type="xs:boolean"> | ||
<xs:annotation> | ||
<xs:documentation>Controls if runtime assemblies are also embedded.</xs:documentation> | ||
</xs:annotation> | ||
</xs:attribute> | ||
<xs:attribute name="UseRuntimeReferencePaths" type="xs:boolean"> | ||
<xs:annotation> | ||
<xs:documentation>Controls whether the runtime assemblies are embedded with their full path or only with their assembly name.</xs:documentation> | ||
</xs:annotation> | ||
</xs:attribute> | ||
<xs:attribute name="DisableCompression" type="xs:boolean"> | ||
<xs:annotation> | ||
<xs:documentation>Embedded assemblies are compressed by default, and uncompressed when they are loaded. You can turn compression off with this option.</xs:documentation> | ||
</xs:annotation> | ||
</xs:attribute> | ||
<xs:attribute name="DisableCleanup" type="xs:boolean"> | ||
<xs:annotation> | ||
<xs:documentation>As part of Costura, embedded assemblies are no longer included as part of the build. This cleanup can be turned off.</xs:documentation> | ||
</xs:annotation> | ||
</xs:attribute> | ||
<xs:attribute name="DisableEventSubscription" type="xs:boolean"> | ||
<xs:annotation> | ||
<xs:documentation>The attach method no longer subscribes to the `AppDomain.AssemblyResolve` (.NET 4.x) and `AssemblyLoadContext.Resolving` (.NET 6.0+) events.</xs:documentation> | ||
</xs:annotation> | ||
</xs:attribute> | ||
<xs:attribute name="LoadAtModuleInit" type="xs:boolean"> | ||
<xs:annotation> | ||
<xs:documentation>Costura by default will load as part of the module initialization. This flag disables that behavior. Make sure you call CosturaUtility.Initialize() somewhere in your code.</xs:documentation> | ||
</xs:annotation> | ||
</xs:attribute> | ||
<xs:attribute name="IgnoreSatelliteAssemblies" type="xs:boolean"> | ||
<xs:annotation> | ||
<xs:documentation>Costura will by default use assemblies with a name like 'resources.dll' as a satellite resource and prepend the output path. This flag disables that behavior.</xs:documentation> | ||
</xs:annotation> | ||
</xs:attribute> | ||
<xs:attribute name="ExcludeAssemblies" type="xs:string"> | ||
<xs:annotation> | ||
<xs:documentation>A list of assembly names to exclude from the default action of "embed all Copy Local references", delimited with |</xs:documentation> | ||
</xs:annotation> | ||
</xs:attribute> | ||
<xs:attribute name="IncludeAssemblies" type="xs:string"> | ||
<xs:annotation> | ||
<xs:documentation>A list of assembly names to include from the default action of "embed all Copy Local references", delimited with |.</xs:documentation> | ||
</xs:annotation> | ||
</xs:attribute> | ||
<xs:attribute name="ExcludeRuntimeAssemblies" type="xs:string"> | ||
<xs:annotation> | ||
<xs:documentation>A list of runtime assembly names to exclude from the default action of "embed all Copy Local references", delimited with |</xs:documentation> | ||
</xs:annotation> | ||
</xs:attribute> | ||
<xs:attribute name="IncludeRuntimeAssemblies" type="xs:string"> | ||
<xs:annotation> | ||
<xs:documentation>A list of runtime assembly names to include from the default action of "embed all Copy Local references", delimited with |.</xs:documentation> | ||
</xs:annotation> | ||
</xs:attribute> | ||
<xs:attribute name="Unmanaged32Assemblies" type="xs:string"> | ||
<xs:annotation> | ||
<xs:documentation>Obsolete, use UnmanagedWinX86Assemblies instead</xs:documentation> | ||
</xs:annotation> | ||
</xs:attribute> | ||
<xs:attribute name="UnmanagedWinX86Assemblies" type="xs:string"> | ||
<xs:annotation> | ||
<xs:documentation>A list of unmanaged X86 (32 bit) assembly names to include, delimited with |.</xs:documentation> | ||
</xs:annotation> | ||
</xs:attribute> | ||
<xs:attribute name="Unmanaged64Assemblies" type="xs:string"> | ||
<xs:annotation> | ||
<xs:documentation>Obsolete, use UnmanagedWinX64Assemblies instead</xs:documentation> | ||
</xs:annotation> | ||
</xs:attribute> | ||
<xs:attribute name="UnmanagedWinX64Assemblies" type="xs:string"> | ||
<xs:annotation> | ||
<xs:documentation>A list of unmanaged X64 (64 bit) assembly names to include, delimited with |.</xs:documentation> | ||
</xs:annotation> | ||
</xs:attribute> | ||
<xs:attribute name="UnmanagedWinArm64Assemblies" type="xs:string"> | ||
<xs:annotation> | ||
<xs:documentation>A list of unmanaged Arm64 (64 bit) assembly names to include, delimited with |.</xs:documentation> | ||
</xs:annotation> | ||
</xs:attribute> | ||
<xs:attribute name="PreloadOrder" type="xs:string"> | ||
<xs:annotation> | ||
<xs:documentation>The order of preloaded assemblies, delimited with |.</xs:documentation> | ||
</xs:annotation> | ||
</xs:attribute> | ||
</xs:complexType> | ||
</xs:element> | ||
</xs:all> | ||
<xs:attribute name="VerifyAssembly" type="xs:boolean"> | ||
<xs:annotation> | ||
<xs:documentation>'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed.</xs:documentation> | ||
</xs:annotation> | ||
</xs:attribute> | ||
<xs:attribute name="VerifyIgnoreCodes" type="xs:string"> | ||
<xs:annotation> | ||
<xs:documentation>A comma-separated list of error codes that can be safely ignored in assembly verification.</xs:documentation> | ||
</xs:annotation> | ||
</xs:attribute> | ||
<xs:attribute name="GenerateXsd" type="xs:boolean"> | ||
<xs:annotation> | ||
<xs:documentation>'false' to turn off automatic generation of the XML Schema file.</xs:documentation> | ||
</xs:annotation> | ||
</xs:attribute> | ||
</xs:complexType> | ||
</xs:element> | ||
</xs:schema> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
using Discord.WebSocket; | ||
using DiscordLab.Bot.API.Interfaces; | ||
|
||
namespace DiscordLab.SCPSwap.Handlers | ||
{ | ||
public class DiscordBot : IRegisterable | ||
{ | ||
public static DiscordBot Instance { get; private set; } | ||
|
||
private SocketTextChannel Channel { get; set; } | ||
|
||
public void Init() | ||
{ | ||
Instance = this; | ||
} | ||
|
||
public void Unregister() | ||
{ | ||
Channel = null; | ||
} | ||
|
||
public SocketTextChannel GetChannel() | ||
{ | ||
if (Bot.Handlers.DiscordBot.Instance.Guild == null) return null; | ||
if (Plugin.Instance.Config.ChannelId == 0) return null; | ||
return Channel ??= Bot.Handlers.DiscordBot.Instance.Guild.GetTextChannel(Plugin.Instance.Config.ChannelId); | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
using Discord.WebSocket; | ||
using DiscordLab.Bot.API.Interfaces; | ||
using Exiled.API.Extensions; | ||
using Exiled.API.Features; | ||
using Exiled.Events.EventArgs.Player; | ||
|
||
namespace DiscordLab.SCPSwap.Handlers | ||
{ | ||
public class Events : IRegisterable | ||
{ | ||
public void Init() | ||
{ | ||
Exiled.Events.Handlers.Player.ChangingRole += OnChangingRole; | ||
} | ||
|
||
public void Unregister() | ||
{ | ||
Exiled.Events.Handlers.Player.ChangingRole -= OnChangingRole; | ||
} | ||
|
||
private void OnChangingRole(ChangingRoleEventArgs ev) | ||
{ | ||
if (!ev.Player.IsScp) return; | ||
if (!ev.NewRole.IsScp()) return; | ||
SocketTextChannel channel = DiscordBot.Instance.GetChannel(); | ||
if (channel == null) | ||
{ | ||
Log.Error("Either the guild is null or the channel is null. So the SCP log message has failed to send."); | ||
return; | ||
} | ||
|
||
channel.SendMessageAsync(Plugin.Instance.Translation.Message | ||
.Replace("{player}", ev.Player.Nickname) | ||
.Replace("{playerid}", ev.Player.UserId) | ||
.Replace("{oldrole}", ev.Player.Role.Name) | ||
.Replace("{newrole}", ev.NewRole.GetFullName()) | ||
); | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
using System.Globalization; | ||
using DiscordLab.Bot.API.Modules; | ||
using Exiled.API.Enums; | ||
using Exiled.API.Features; | ||
|
||
namespace DiscordLab.SCPSwap | ||
{ | ||
public class Plugin : Plugin<Config, Translation> | ||
{ | ||
public override string Name => "DiscordLab.SCPSwap"; | ||
public override string Author => "JayXTQ"; | ||
public override string Prefix => "DL.SCPSwap"; | ||
public override Version Version => new (1, 0, 0); | ||
public override Version RequiredExiledVersion => new (8, 11, 0); | ||
public override PluginPriority Priority => PluginPriority.Default; | ||
|
||
public static Plugin Instance { get; private set; } | ||
|
||
private HandlerLoader _handlerLoader; | ||
|
||
public override void OnEnabled() | ||
{ | ||
Instance = this; | ||
|
||
_handlerLoader = new (); | ||
_handlerLoader.Load(Assembly); | ||
|
||
base.OnEnabled(); | ||
} | ||
|
||
public override void OnDisabled() | ||
{ | ||
_handlerLoader.Unload(); | ||
_handlerLoader = null; | ||
|
||
base.OnDisabled(); | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
using System.Reflection; | ||
using System.Runtime.InteropServices; | ||
|
||
// General Information about an assembly is controlled through the following | ||
// set of attributes. Change these attribute values to modify the information | ||
// associated with an assembly. | ||
[assembly: AssemblyTitle("DiscordLab.SCPSwap")] | ||
[assembly: AssemblyDescription("")] | ||
[assembly: AssemblyConfiguration("")] | ||
[assembly: AssemblyCompany("")] | ||
[assembly: AssemblyProduct("DiscordLab.SCPSwap")] | ||
[assembly: AssemblyCopyright("Copyright © 2024")] | ||
[assembly: AssemblyTrademark("")] | ||
[assembly: AssemblyCulture("")] | ||
|
||
// Setting ComVisible to false makes the types in this assembly not visible | ||
// to COM components. If you need to access a type in this assembly from | ||
// COM, set the ComVisible attribute to true on that type. | ||
[assembly: ComVisible(false)] | ||
|
||
// The following GUID is for the ID of the typelib if this project is exposed to COM | ||
[assembly: Guid("3444CF96-2F51-42EA-A400-BDB24656E70E")] | ||
|
||
// Version information for an assembly consists of the following four values: | ||
// | ||
// Major Version | ||
// Minor Version | ||
// Build Number | ||
// Revision | ||
// | ||
// You can specify all the values or you can default the Build and Revision Numbers | ||
// by using the '*' as shown below: | ||
// [assembly: AssemblyVersion("1.0.*")] | ||
[assembly: AssemblyVersion("1.0.0.0")] | ||
[assembly: AssemblyFileVersion("1.0.0.0")] |
Oops, something went wrong.