From cd49a9843eb07d82c19a9dc55ce5d735ba373deb Mon Sep 17 00:00:00 2001 From: RaidMax Date: Mon, 18 Feb 2019 19:30:38 -0600 Subject: [PATCH] implement RSS feed in auto messages for issue #53 modified automessages to use async mesthods instead of synchronous --- Application/IW4MServer.cs | 10 +- IW4MAdmin.sln | 41 +- .../AutomessageFeed/AutomessageFeed.csproj | 21 + Plugins/AutomessageFeed/Configuration.cs | 24 + Plugins/AutomessageFeed/Plugin.cs | 85 + Plugins/Stats/Plugin.cs | 16 +- Plugins/Web/StatsWeb/StatsWeb.csproj | 1 + Plugins/Welcome/IW4Info.cs | 1385 +++++++++++++++++ SharedLibraryCore/Helpers/MessageToken.cs | 16 +- SharedLibraryCore/Utilities.cs | 4 +- 10 files changed, 1574 insertions(+), 29 deletions(-) create mode 100644 Plugins/AutomessageFeed/AutomessageFeed.csproj create mode 100644 Plugins/AutomessageFeed/Configuration.cs create mode 100644 Plugins/AutomessageFeed/Plugin.cs create mode 100644 Plugins/Welcome/IW4Info.cs diff --git a/Application/IW4MServer.cs b/Application/IW4MServer.cs index 4edfae33..f0a54ccc 100644 --- a/Application/IW4MServer.cs +++ b/Application/IW4MServer.cs @@ -637,7 +637,7 @@ namespace IW4MAdmin && BroadcastMessages.Count > 0 && ClientNum > 0) { - string[] messages = this.ProcessMessageToken(Manager.GetMessageTokens(), BroadcastMessages[NextMessage]).Split(Environment.NewLine); + string[] messages = (await this.ProcessMessageToken(Manager.GetMessageTokens(), BroadcastMessages[NextMessage])).Split(Environment.NewLine); foreach (string message in messages) { @@ -978,10 +978,10 @@ namespace IW4MAdmin override public void InitializeTokens() { - Manager.GetMessageTokens().Add(new SharedLibraryCore.Helpers.MessageToken("TOTALPLAYERS", (Server s) => Manager.GetClientService().GetTotalClientsAsync().Result.ToString())); - Manager.GetMessageTokens().Add(new SharedLibraryCore.Helpers.MessageToken("VERSION", (Server s) => Application.Program.Version.ToString())); - Manager.GetMessageTokens().Add(new SharedLibraryCore.Helpers.MessageToken("NEXTMAP", (Server s) => SharedLibraryCore.Commands.CNextMap.GetNextMap(s).Result)); - Manager.GetMessageTokens().Add(new SharedLibraryCore.Helpers.MessageToken("ADMINS", (Server s) => SharedLibraryCore.Commands.CListAdmins.OnlineAdmins(s))); + Manager.GetMessageTokens().Add(new SharedLibraryCore.Helpers.MessageToken("TOTALPLAYERS", (Server s) => Task.Run(() => (object)Manager.GetClientService().GetTotalClientsAsync()))); + Manager.GetMessageTokens().Add(new SharedLibraryCore.Helpers.MessageToken("VERSION", (Server s) => Task.Run(() => (object)Application.Program.Version.ToString()))); + Manager.GetMessageTokens().Add(new SharedLibraryCore.Helpers.MessageToken("NEXTMAP", (Server s) => Task.Run(() => (object)SharedLibraryCore.Commands.CNextMap.GetNextMap(s)))); + Manager.GetMessageTokens().Add(new SharedLibraryCore.Helpers.MessageToken("ADMINS", (Server s) => Task.Run(() => (object)SharedLibraryCore.Commands.CListAdmins.OnlineAdmins(s)))); } } } diff --git a/IW4MAdmin.sln b/IW4MAdmin.sln index 6a109f9d..2367bac8 100644 --- a/IW4MAdmin.sln +++ b/IW4MAdmin.sln @@ -52,6 +52,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Web", "Web", "{A848FCF1-852 EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "StatsWeb", "Plugins\Web\StatsWeb\StatsWeb.csproj", "{776B348B-F818-4A0F-A625-D0AF8BAD3E9B}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AutomessageFeed", "Plugins\AutomessageFeed\AutomessageFeed.csproj", "{F5815359-CFC7-44B4-9A3B-C04BACAD5836}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -290,8 +292,8 @@ Global {6C706CE5-A206-4E46-8712-F8C48D526091}.Debug|x64.Build.0 = Debug|Any CPU {6C706CE5-A206-4E46-8712-F8C48D526091}.Debug|x86.ActiveCfg = Debug|Any CPU {6C706CE5-A206-4E46-8712-F8C48D526091}.Debug|x86.Build.0 = Debug|Any CPU - {6C706CE5-A206-4E46-8712-F8C48D526091}.Prerelease|Any CPU.ActiveCfg = Debug|Any CPU - {6C706CE5-A206-4E46-8712-F8C48D526091}.Prerelease|Any CPU.Build.0 = Debug|Any CPU + {6C706CE5-A206-4E46-8712-F8C48D526091}.Prerelease|Any CPU.ActiveCfg = Prerelease|Any CPU + {6C706CE5-A206-4E46-8712-F8C48D526091}.Prerelease|Any CPU.Build.0 = Prerelease|Any CPU {6C706CE5-A206-4E46-8712-F8C48D526091}.Prerelease|Mixed Platforms.ActiveCfg = Debug|Any CPU {6C706CE5-A206-4E46-8712-F8C48D526091}.Prerelease|Mixed Platforms.Build.0 = Debug|Any CPU {6C706CE5-A206-4E46-8712-F8C48D526091}.Prerelease|x64.ActiveCfg = Debug|Any CPU @@ -310,7 +312,7 @@ Global {15A81D6E-7502-46CE-8530-0647A380B5F4}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU {15A81D6E-7502-46CE-8530-0647A380B5F4}.Debug|x64.ActiveCfg = Debug|Any CPU {15A81D6E-7502-46CE-8530-0647A380B5F4}.Debug|x86.ActiveCfg = Debug|Any CPU - {15A81D6E-7502-46CE-8530-0647A380B5F4}.Prerelease|Any CPU.ActiveCfg = Release|Any CPU + {15A81D6E-7502-46CE-8530-0647A380B5F4}.Prerelease|Any CPU.ActiveCfg = Prerelease|Any CPU {15A81D6E-7502-46CE-8530-0647A380B5F4}.Prerelease|Mixed Platforms.ActiveCfg = Release|Any CPU {15A81D6E-7502-46CE-8530-0647A380B5F4}.Prerelease|x64.ActiveCfg = Release|Any CPU {15A81D6E-7502-46CE-8530-0647A380B5F4}.Prerelease|x86.ActiveCfg = Release|Any CPU @@ -319,15 +321,13 @@ Global {15A81D6E-7502-46CE-8530-0647A380B5F4}.Release|x64.ActiveCfg = Release|Any CPU {15A81D6E-7502-46CE-8530-0647A380B5F4}.Release|x86.ActiveCfg = Release|Any CPU {42EFDA12-10D3-4C40-A210-9483520116BC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {42EFDA12-10D3-4C40-A210-9483520116BC}.Debug|Any CPU.Build.0 = Debug|Any CPU {42EFDA12-10D3-4C40-A210-9483520116BC}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU {42EFDA12-10D3-4C40-A210-9483520116BC}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {42EFDA12-10D3-4C40-A210-9483520116BC}.Debug|x64.ActiveCfg = Debug|Any CPU {42EFDA12-10D3-4C40-A210-9483520116BC}.Debug|x64.Build.0 = Debug|Any CPU {42EFDA12-10D3-4C40-A210-9483520116BC}.Debug|x86.ActiveCfg = Debug|Any CPU {42EFDA12-10D3-4C40-A210-9483520116BC}.Debug|x86.Build.0 = Debug|Any CPU - {42EFDA12-10D3-4C40-A210-9483520116BC}.Prerelease|Any CPU.ActiveCfg = Release|Any CPU - {42EFDA12-10D3-4C40-A210-9483520116BC}.Prerelease|Any CPU.Build.0 = Release|Any CPU + {42EFDA12-10D3-4C40-A210-9483520116BC}.Prerelease|Any CPU.ActiveCfg = Prerelease|Any CPU {42EFDA12-10D3-4C40-A210-9483520116BC}.Prerelease|Mixed Platforms.ActiveCfg = Release|Any CPU {42EFDA12-10D3-4C40-A210-9483520116BC}.Prerelease|Mixed Platforms.Build.0 = Release|Any CPU {42EFDA12-10D3-4C40-A210-9483520116BC}.Prerelease|x64.ActiveCfg = Release|Any CPU @@ -350,8 +350,8 @@ Global {776B348B-F818-4A0F-A625-D0AF8BAD3E9B}.Debug|x64.Build.0 = Debug|Any CPU {776B348B-F818-4A0F-A625-D0AF8BAD3E9B}.Debug|x86.ActiveCfg = Debug|Any CPU {776B348B-F818-4A0F-A625-D0AF8BAD3E9B}.Debug|x86.Build.0 = Debug|Any CPU - {776B348B-F818-4A0F-A625-D0AF8BAD3E9B}.Prerelease|Any CPU.ActiveCfg = Debug|Any CPU - {776B348B-F818-4A0F-A625-D0AF8BAD3E9B}.Prerelease|Any CPU.Build.0 = Debug|Any CPU + {776B348B-F818-4A0F-A625-D0AF8BAD3E9B}.Prerelease|Any CPU.ActiveCfg = Prerelease|Any CPU + {776B348B-F818-4A0F-A625-D0AF8BAD3E9B}.Prerelease|Any CPU.Build.0 = Prerelease|Any CPU {776B348B-F818-4A0F-A625-D0AF8BAD3E9B}.Prerelease|Mixed Platforms.ActiveCfg = Debug|Any CPU {776B348B-F818-4A0F-A625-D0AF8BAD3E9B}.Prerelease|Mixed Platforms.Build.0 = Debug|Any CPU {776B348B-F818-4A0F-A625-D0AF8BAD3E9B}.Prerelease|x64.ActiveCfg = Debug|Any CPU @@ -366,6 +366,30 @@ Global {776B348B-F818-4A0F-A625-D0AF8BAD3E9B}.Release|x64.Build.0 = Release|Any CPU {776B348B-F818-4A0F-A625-D0AF8BAD3E9B}.Release|x86.ActiveCfg = Release|Any CPU {776B348B-F818-4A0F-A625-D0AF8BAD3E9B}.Release|x86.Build.0 = Release|Any CPU + {F5815359-CFC7-44B4-9A3B-C04BACAD5836}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F5815359-CFC7-44B4-9A3B-C04BACAD5836}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F5815359-CFC7-44B4-9A3B-C04BACAD5836}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {F5815359-CFC7-44B4-9A3B-C04BACAD5836}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {F5815359-CFC7-44B4-9A3B-C04BACAD5836}.Debug|x64.ActiveCfg = Debug|Any CPU + {F5815359-CFC7-44B4-9A3B-C04BACAD5836}.Debug|x64.Build.0 = Debug|Any CPU + {F5815359-CFC7-44B4-9A3B-C04BACAD5836}.Debug|x86.ActiveCfg = Debug|Any CPU + {F5815359-CFC7-44B4-9A3B-C04BACAD5836}.Debug|x86.Build.0 = Debug|Any CPU + {F5815359-CFC7-44B4-9A3B-C04BACAD5836}.Prerelease|Any CPU.ActiveCfg = Debug|Any CPU + {F5815359-CFC7-44B4-9A3B-C04BACAD5836}.Prerelease|Any CPU.Build.0 = Debug|Any CPU + {F5815359-CFC7-44B4-9A3B-C04BACAD5836}.Prerelease|Mixed Platforms.ActiveCfg = Debug|Any CPU + {F5815359-CFC7-44B4-9A3B-C04BACAD5836}.Prerelease|Mixed Platforms.Build.0 = Debug|Any CPU + {F5815359-CFC7-44B4-9A3B-C04BACAD5836}.Prerelease|x64.ActiveCfg = Debug|Any CPU + {F5815359-CFC7-44B4-9A3B-C04BACAD5836}.Prerelease|x64.Build.0 = Debug|Any CPU + {F5815359-CFC7-44B4-9A3B-C04BACAD5836}.Prerelease|x86.ActiveCfg = Debug|Any CPU + {F5815359-CFC7-44B4-9A3B-C04BACAD5836}.Prerelease|x86.Build.0 = Debug|Any CPU + {F5815359-CFC7-44B4-9A3B-C04BACAD5836}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F5815359-CFC7-44B4-9A3B-C04BACAD5836}.Release|Any CPU.Build.0 = Release|Any CPU + {F5815359-CFC7-44B4-9A3B-C04BACAD5836}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {F5815359-CFC7-44B4-9A3B-C04BACAD5836}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {F5815359-CFC7-44B4-9A3B-C04BACAD5836}.Release|x64.ActiveCfg = Release|Any CPU + {F5815359-CFC7-44B4-9A3B-C04BACAD5836}.Release|x64.Build.0 = Release|Any CPU + {F5815359-CFC7-44B4-9A3B-C04BACAD5836}.Release|x86.ActiveCfg = Release|Any CPU + {F5815359-CFC7-44B4-9A3B-C04BACAD5836}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -380,6 +404,7 @@ Global {3F9ACC27-26DB-49FA-BCD2-50C54A49C9FA} = {26E8B310-269E-46D4-A612-24601F16065F} {A848FCF1-8527-4AA8-A1AA-50D29695C678} = {26E8B310-269E-46D4-A612-24601F16065F} {776B348B-F818-4A0F-A625-D0AF8BAD3E9B} = {A848FCF1-8527-4AA8-A1AA-50D29695C678} + {F5815359-CFC7-44B4-9A3B-C04BACAD5836} = {26E8B310-269E-46D4-A612-24601F16065F} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {84F8F8E0-1F73-41E0-BD8D-BB6676E2EE87} diff --git a/Plugins/AutomessageFeed/AutomessageFeed.csproj b/Plugins/AutomessageFeed/AutomessageFeed.csproj new file mode 100644 index 00000000..2c5d099a --- /dev/null +++ b/Plugins/AutomessageFeed/AutomessageFeed.csproj @@ -0,0 +1,21 @@ + + + + netcoreapp2.2 + true + + + + + + + + + + + + + + + + diff --git a/Plugins/AutomessageFeed/Configuration.cs b/Plugins/AutomessageFeed/Configuration.cs new file mode 100644 index 00000000..252189f7 --- /dev/null +++ b/Plugins/AutomessageFeed/Configuration.cs @@ -0,0 +1,24 @@ +using SharedLibraryCore; +using SharedLibraryCore.Interfaces; +using System; +using System.Collections.Generic; +using System.Text; + +namespace AutomessageFeed +{ + class Configuration : IBaseConfiguration + { + public bool EnableFeed { get; set; } + public string FeedUrl { get; set; } + + public IBaseConfiguration Generate() + { + EnableFeed = Utilities.PromptBool(Utilities.CurrentLocalization.LocalizationIndex["PLUGINS_AUTOMESSAGEFEED_PROMPT_ENABLE"]); + FeedUrl = Utilities.PromptString(Utilities.CurrentLocalization.LocalizationIndex["PLUGINS_AUTOMESSAGEFEED_URL"]); + + return this; + } + + public string Name() => "AutomessageFeedConfiguration"; + } +} diff --git a/Plugins/AutomessageFeed/Plugin.cs b/Plugins/AutomessageFeed/Plugin.cs new file mode 100644 index 00000000..ad6cca07 --- /dev/null +++ b/Plugins/AutomessageFeed/Plugin.cs @@ -0,0 +1,85 @@ +using SharedLibraryCore; +using SharedLibraryCore.Interfaces; +using System; +using System.Threading.Tasks; +using Microsoft.SyndicationFeed.Rss; +using SharedLibraryCore.Configuration; +using System.Xml; +using Microsoft.SyndicationFeed; +using System.Collections.Generic; +using SharedLibraryCore.Helpers; +using System.Text.RegularExpressions; + +namespace AutomessageFeed +{ + public class Plugin : IPlugin + { + public string Name => "Automessage Feed"; + + public float Version => (float)Utilities.GetVersionAsDouble(); + + public string Author => "RaidMax"; + + private Configuration _configuration; + private int _currentFeedItem; + + private async Task GetNextFeedItem(Server server) + { + var items = new List(); + + using (var reader = XmlReader.Create(_configuration.FeedUrl, new XmlReaderSettings() { Async = true })) + { + var feedReader = new RssFeedReader(reader); + + while (await feedReader.Read()) + { + switch (feedReader.ElementType) + { + case SyndicationElementType.Item: + var item = await feedReader.ReadItem(); + items.Add(Regex.Replace(item.Title, @"\<.+\>.*\", "")); + break; + } + } + } + + if (_currentFeedItem < items.Count) + { + _currentFeedItem++; + return items[_currentFeedItem - 1]; + } + + _currentFeedItem = 0; + return Utilities.CurrentLocalization.LocalizationIndex["PLUGINS_AUTOMESSAGEFEED_NO_ITEMS"]; + } + + public Task OnEventAsync(GameEvent E, Server S) + { + return Task.CompletedTask; + } + + public async Task OnLoadAsync(IManager manager) + { + var cfg = new BaseConfigurationHandler("AutomessageFeedPluginSettings"); + if (cfg.Configuration() == null) + { + cfg.Set((Configuration)new Configuration().Generate()); + await cfg.Save(); + } + + _configuration = cfg.Configuration(); + + manager.GetMessageTokens().Add(new MessageToken("FEED", GetNextFeedItem)); + } + + public Task OnTickAsync(Server S) + { + throw new NotImplementedException(); + } + + public Task OnUnloadAsync() + { + throw new NotImplementedException(); + } + } +} diff --git a/Plugins/Stats/Plugin.cs b/Plugins/Stats/Plugin.cs index 24affe60..a7f940b0 100644 --- a/Plugins/Stats/Plugin.cs +++ b/Plugins/Stats/Plugin.cs @@ -291,32 +291,32 @@ namespace IW4MAdmin.Plugins.Stats MetaService.AddMeta(getMessages); - string totalKills(Server server) + async Task totalKills(Server server) { using (var ctx = new DatabaseContext(disableTracking: true)) { - long kills = ctx.Set().Where(s => s.Active).Sum(s => s.TotalKills); + long kills = await ctx.Set().Where(s => s.Active).SumAsync(s => s.TotalKills); return kills.ToString("#,##0"); } } - string totalPlayTime(Server server) + async Task totalPlayTime(Server server) { using (var ctx = new DatabaseContext(disableTracking: true)) { - long playTime = ctx.Set().Where(s => s.Active).Sum(s => s.TotalPlayTime); + long playTime = await ctx.Set().Where(s => s.Active).SumAsync(s => s.TotalPlayTime); return (playTime / 3600.0).ToString("#,##0"); } } - string topStats(Server s) + async Task topStats(Server s) { - return String.Join(Environment.NewLine, Commands.TopStats.GetTopStats(s).Result); + return String.Join(Environment.NewLine, await Commands.TopStats.GetTopStats(s)); } - string mostPlayed(Server s) + async Task mostPlayed(Server s) { - return String.Join(Environment.NewLine, Commands.MostPlayed.GetMostPlayed(s).Result); + return String.Join(Environment.NewLine, await Commands.MostPlayed.GetMostPlayed(s)); } manager.GetMessageTokens().Add(new MessageToken("TOTALKILLS", totalKills)); diff --git a/Plugins/Web/StatsWeb/StatsWeb.csproj b/Plugins/Web/StatsWeb/StatsWeb.csproj index 3bd7e4f4..85f71f30 100644 --- a/Plugins/Web/StatsWeb/StatsWeb.csproj +++ b/Plugins/Web/StatsWeb/StatsWeb.csproj @@ -3,6 +3,7 @@ netcoreapp2.2 true RazorSdk + Debug;Release;Prerelease diff --git a/Plugins/Welcome/IW4Info.cs b/Plugins/Welcome/IW4Info.cs new file mode 100644 index 00000000..3d3d8249 --- /dev/null +++ b/Plugins/Welcome/IW4Info.cs @@ -0,0 +1,1385 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace IW4MAdmin.Plugins.Stats +{ + public class IW4Info + { + public enum Team + { + None, + Spectator, + Allies, + Axis + } + + public enum MeansOfDeath + { + NONE, + MOD_UNKNOWN, + MOD_PISTOL_BULLET, + MOD_RIFLE_BULLET, + MOD_GRENADE, + MOD_GRENADE_SPLASH, + MOD_PROJECTILE, + MOD_PROJECTILE_SPLASH, + MOD_MELEE, + MOD_BAYONET, + MOD_HEAD_SHOT, + MOD_CRUSH, + MOD_TELEFRAG, + MOD_FALLING, + MOD_SUICIDE, + MOD_TRIGGER_HURT, + MOD_EXPLOSIVE, + MOD_IMPACT, + MOD_BURNED, + MOD_HIT_BY_OBJECT, + MOD_DROWN, + MOD_GAS, + MOD_NUM, + MOD_EXPLOSIVE_BULLET + } + + public enum HitLocation + { + none, + helmet, + head, + neck, + torso_upper, + torso_lower, + right_arm_upper, + left_arm_upper, + right_arm_lower, + left_arm_lower, + right_hand, + left_hand, + right_leg_upper, + left_leg_upper, + right_leg_lower, + left_leg_lower, + right_foot, + left_foot, + gun, + shield + } + + public enum WeaponName + { + none = 0, + defaultweapon_mp = 1, + riotshield_mp = 2, + beretta_mp = 3, + beretta_akimbo_mp = 4, + beretta_fmj_mp = 5, + beretta_silencer_mp = 6, + beretta_tactical_mp = 7, + beretta_xmags_mp = 8, + beretta_akimbo_fmj_mp = 9, + beretta_akimbo_silencer_mp = 10, + beretta_akimbo_xmags_mp = 11, + beretta_fmj_silencer_mp = 12, + beretta_fmj_tactical_mp = 13, + beretta_fmj_xmags_mp = 14, + beretta_silencer_tactical_mp = 15, + beretta_silencer_xmags_mp = 16, + beretta_tactical_xmags_mp = 17, + usp_mp = 18, + usp_akimbo_mp = 19, + usp_fmj_mp = 20, + usp_silencer_mp = 21, + usp_tactical_mp = 22, + usp_xmags_mp = 23, + usp_akimbo_fmj_mp = 24, + usp_akimbo_silencer_mp = 25, + usp_akimbo_xmags_mp = 26, + usp_fmj_silencer_mp = 27, + usp_fmj_tactical_mp = 28, + usp_fmj_xmags_mp = 29, + usp_silencer_tactical_mp = 30, + usp_silencer_xmags_mp = 31, + usp_tactical_xmags_mp = 32, + deserteagle_mp = 33, + deserteagle_akimbo_mp = 34, + deserteagle_fmj_mp = 35, + deserteagle_tactical_mp = 36, + deserteagle_akimbo_fmj_mp = 37, + deserteagle_fmj_tactical_mp = 38, + coltanaconda_mp = 39, + coltanaconda_akimbo_mp = 40, + coltanaconda_fmj_mp = 41, + coltanaconda_tactical_mp = 42, + coltanaconda_akimbo_fmj_mp = 43, + coltanaconda_fmj_tactical_mp = 44, + deserteaglegold_mp = 45, + glock_mp = 46, + glock_akimbo_mp = 47, + glock_eotech_mp = 48, + glock_fmj_mp = 49, + glock_reflex_mp = 50, + glock_silencer_mp = 51, + glock_xmags_mp = 52, + glock_akimbo_fmj_mp = 53, + glock_akimbo_silencer_mp = 54, + glock_akimbo_xmags_mp = 55, + glock_eotech_fmj_mp = 56, + glock_eotech_silencer_mp = 57, + glock_eotech_xmags_mp = 58, + glock_fmj_reflex_mp = 59, + glock_fmj_silencer_mp = 60, + glock_fmj_xmags_mp = 61, + glock_reflex_silencer_mp = 62, + glock_reflex_xmags_mp = 63, + glock_silencer_xmags_mp = 64, + beretta393_mp = 65, + beretta393_akimbo_mp = 66, + beretta393_eotech_mp = 67, + beretta393_fmj_mp = 68, + beretta393_reflex_mp = 69, + beretta393_silencer_mp = 70, + beretta393_xmags_mp = 71, + beretta393_akimbo_fmj_mp = 72, + beretta393_akimbo_silencer_mp = 73, + beretta393_akimbo_xmags_mp = 74, + beretta393_eotech_fmj_mp = 75, + beretta393_eotech_silencer_mp = 76, + beretta393_eotech_xmags_mp = 77, + beretta393_fmj_reflex_mp = 78, + beretta393_fmj_silencer_mp = 79, + beretta393_fmj_xmags_mp = 80, + beretta393_reflex_silencer_mp = 81, + beretta393_reflex_xmags_mp = 82, + beretta393_silencer_xmags_mp = 83, + pp2000_mp = 84, + pp2000_akimbo_mp = 85, + pp2000_eotech_mp = 86, + pp2000_fmj_mp = 87, + pp2000_reflex_mp = 88, + pp2000_silencer_mp = 89, + pp2000_xmags_mp = 90, + pp2000_akimbo_fmj_mp = 91, + pp2000_akimbo_silencer_mp = 92, + pp2000_akimbo_xmags_mp = 93, + pp2000_eotech_fmj_mp = 94, + pp2000_eotech_silencer_mp = 95, + pp2000_eotech_xmags_mp = 96, + pp2000_fmj_reflex_mp = 97, + pp2000_fmj_silencer_mp = 98, + pp2000_fmj_xmags_mp = 99, + pp2000_reflex_silencer_mp = 100, + pp2000_reflex_xmags_mp = 101, + pp2000_silencer_xmags_mp = 102, + tmp_mp = 103, + tmp_akimbo_mp = 104, + tmp_eotech_mp = 105, + tmp_fmj_mp = 106, + tmp_reflex_mp = 107, + tmp_silencer_mp = 108, + tmp_xmags_mp = 109, + tmp_akimbo_fmj_mp = 110, + tmp_akimbo_silencer_mp = 111, + tmp_akimbo_xmags_mp = 112, + tmp_eotech_fmj_mp = 113, + tmp_eotech_silencer_mp = 114, + tmp_eotech_xmags_mp = 115, + tmp_fmj_reflex_mp = 116, + tmp_fmj_silencer_mp = 117, + tmp_fmj_xmags_mp = 118, + tmp_reflex_silencer_mp = 119, + tmp_reflex_xmags_mp = 120, + tmp_silencer_xmags_mp = 121, + mp5k_mp = 122, + mp5k_acog_mp = 123, + mp5k_akimbo_mp = 124, + mp5k_eotech_mp = 125, + mp5k_fmj_mp = 126, + mp5k_reflex_mp = 127, + mp5k_rof_mp = 128, + mp5k_silencer_mp = 129, + mp5k_thermal_mp = 130, + mp5k_xmags_mp = 131, + mp5k_acog_fmj_mp = 132, + mp5k_acog_rof_mp = 133, + mp5k_acog_silencer_mp = 134, + mp5k_acog_xmags_mp = 135, + mp5k_akimbo_fmj_mp = 136, + mp5k_akimbo_rof_mp = 137, + mp5k_akimbo_silencer_mp = 138, + mp5k_akimbo_xmags_mp = 139, + mp5k_eotech_fmj_mp = 140, + mp5k_eotech_rof_mp = 141, + mp5k_eotech_silencer_mp = 142, + mp5k_eotech_xmags_mp = 143, + mp5k_fmj_reflex_mp = 144, + mp5k_fmj_rof_mp = 145, + mp5k_fmj_silencer_mp = 146, + mp5k_fmj_thermal_mp = 147, + mp5k_fmj_xmags_mp = 148, + mp5k_reflex_rof_mp = 149, + mp5k_reflex_silencer_mp = 150, + mp5k_reflex_xmags_mp = 151, + mp5k_rof_silencer_mp = 152, + mp5k_rof_thermal_mp = 153, + mp5k_rof_xmags_mp = 154, + mp5k_silencer_thermal_mp = 155, + mp5k_silencer_xmags_mp = 156, + mp5k_thermal_xmags_mp = 157, + uzi_mp = 158, + uzi_acog_mp = 159, + uzi_akimbo_mp = 160, + uzi_eotech_mp = 161, + uzi_fmj_mp = 162, + uzi_reflex_mp = 163, + uzi_rof_mp = 164, + uzi_silencer_mp = 165, + uzi_thermal_mp = 166, + uzi_xmags_mp = 167, + uzi_acog_fmj_mp = 168, + uzi_acog_rof_mp = 169, + uzi_acog_silencer_mp = 170, + uzi_acog_xmags_mp = 171, + uzi_akimbo_fmj_mp = 172, + uzi_akimbo_rof_mp = 173, + uzi_akimbo_silencer_mp = 174, + uzi_akimbo_xmags_mp = 175, + uzi_eotech_fmj_mp = 176, + uzi_eotech_rof_mp = 177, + uzi_eotech_silencer_mp = 178, + uzi_eotech_xmags_mp = 179, + uzi_fmj_reflex_mp = 180, + uzi_fmj_rof_mp = 181, + uzi_fmj_silencer_mp = 182, + uzi_fmj_thermal_mp = 183, + uzi_fmj_xmags_mp = 184, + uzi_reflex_rof_mp = 185, + uzi_reflex_silencer_mp = 186, + uzi_reflex_xmags_mp = 187, + uzi_rof_silencer_mp = 188, + uzi_rof_thermal_mp = 189, + uzi_rof_xmags_mp = 190, + uzi_silencer_thermal_mp = 191, + uzi_silencer_xmags_mp = 192, + uzi_thermal_xmags_mp = 193, + p90_mp = 194, + p90_acog_mp = 195, + p90_akimbo_mp = 196, + p90_eotech_mp = 197, + p90_fmj_mp = 198, + p90_reflex_mp = 199, + p90_rof_mp = 200, + p90_silencer_mp = 201, + p90_thermal_mp = 202, + p90_xmags_mp = 203, + p90_acog_fmj_mp = 204, + p90_acog_rof_mp = 205, + p90_acog_silencer_mp = 206, + p90_acog_xmags_mp = 207, + p90_akimbo_fmj_mp = 208, + p90_akimbo_rof_mp = 209, + p90_akimbo_silencer_mp = 210, + p90_akimbo_xmags_mp = 211, + p90_eotech_fmj_mp = 212, + p90_eotech_rof_mp = 213, + p90_eotech_silencer_mp = 214, + p90_eotech_xmags_mp = 215, + p90_fmj_reflex_mp = 216, + p90_fmj_rof_mp = 217, + p90_fmj_silencer_mp = 218, + p90_fmj_thermal_mp = 219, + p90_fmj_xmags_mp = 220, + p90_reflex_rof_mp = 221, + p90_reflex_silencer_mp = 222, + p90_reflex_xmags_mp = 223, + p90_rof_silencer_mp = 224, + p90_rof_thermal_mp = 225, + p90_rof_xmags_mp = 226, + p90_silencer_thermal_mp = 227, + p90_silencer_xmags_mp = 228, + p90_thermal_xmags_mp = 229, + kriss_mp = 230, + kriss_acog_mp = 231, + kriss_akimbo_mp = 232, + kriss_eotech_mp = 233, + kriss_fmj_mp = 234, + kriss_reflex_mp = 235, + kriss_rof_mp = 236, + kriss_silencer_mp = 237, + kriss_thermal_mp = 238, + kriss_xmags_mp = 239, + kriss_acog_fmj_mp = 240, + kriss_acog_rof_mp = 241, + kriss_acog_silencer_mp = 242, + kriss_acog_xmags_mp = 243, + kriss_akimbo_fmj_mp = 244, + kriss_akimbo_rof_mp = 245, + kriss_akimbo_silencer_mp = 246, + kriss_akimbo_xmags_mp = 247, + kriss_eotech_fmj_mp = 248, + kriss_eotech_rof_mp = 249, + kriss_eotech_silencer_mp = 250, + kriss_eotech_xmags_mp = 251, + kriss_fmj_reflex_mp = 252, + kriss_fmj_rof_mp = 253, + kriss_fmj_silencer_mp = 254, + kriss_fmj_thermal_mp = 255, + kriss_fmj_xmags_mp = 256, + kriss_reflex_rof_mp = 257, + kriss_reflex_silencer_mp = 258, + kriss_reflex_xmags_mp = 259, + kriss_rof_silencer_mp = 260, + kriss_rof_thermal_mp = 261, + kriss_rof_xmags_mp = 262, + kriss_silencer_thermal_mp = 263, + kriss_silencer_xmags_mp = 264, + kriss_thermal_xmags_mp = 265, + ump45_mp = 266, + ump45_acog_mp = 267, + ump45_akimbo_mp = 268, + ump45_eotech_mp = 269, + ump45_fmj_mp = 270, + ump45_reflex_mp = 271, + ump45_rof_mp = 272, + ump45_silencer_mp = 273, + ump45_thermal_mp = 274, + ump45_xmags_mp = 275, + ump45_acog_fmj_mp = 276, + ump45_acog_rof_mp = 277, + ump45_acog_silencer_mp = 278, + ump45_acog_xmags_mp = 279, + ump45_akimbo_fmj_mp = 280, + ump45_akimbo_rof_mp = 281, + ump45_akimbo_silencer_mp = 282, + ump45_akimbo_xmags_mp = 283, + ump45_eotech_fmj_mp = 284, + ump45_eotech_rof_mp = 285, + ump45_eotech_silencer_mp = 286, + ump45_eotech_xmags_mp = 287, + ump45_fmj_reflex_mp = 288, + ump45_fmj_rof_mp = 289, + ump45_fmj_silencer_mp = 290, + ump45_fmj_thermal_mp = 291, + ump45_fmj_xmags_mp = 292, + ump45_reflex_rof_mp = 293, + ump45_reflex_silencer_mp = 294, + ump45_reflex_xmags_mp = 295, + ump45_rof_silencer_mp = 296, + ump45_rof_thermal_mp = 297, + ump45_rof_xmags_mp = 298, + ump45_silencer_thermal_mp = 299, + ump45_silencer_xmags_mp = 300, + ump45_thermal_xmags_mp = 301, + ak47_mp = 302, + ak47_acog_mp = 303, + ak47_eotech_mp = 304, + ak47_fmj_mp = 305, + ak47_gl_mp = 306, + gl_ak47_mp = 307, + ak47_heartbeat_mp = 308, + ak47_reflex_mp = 309, + ak47_shotgun_mp = 310, + ak47_shotgun_attach_mp = 311, + ak47_silencer_mp = 312, + ak47_thermal_mp = 313, + ak47_xmags_mp = 314, + ak47_acog_fmj_mp = 315, + ak47_acog_gl_mp = 316, + ak47_acog_heartbeat_mp = 317, + ak47_acog_shotgun_mp = 318, + ak47_acog_silencer_mp = 319, + ak47_acog_xmags_mp = 320, + ak47_eotech_fmj_mp = 321, + ak47_eotech_gl_mp = 322, + ak47_eotech_heartbeat_mp = 323, + ak47_eotech_shotgun_mp = 324, + ak47_eotech_silencer_mp = 325, + ak47_eotech_xmags_mp = 326, + ak47_fmj_gl_mp = 327, + ak47_fmj_heartbeat_mp = 328, + ak47_fmj_reflex_mp = 329, + ak47_fmj_shotgun_mp = 330, + ak47_fmj_silencer_mp = 331, + ak47_fmj_thermal_mp = 332, + ak47_fmj_xmags_mp = 333, + ak47_gl_heartbeat_mp = 334, + ak47_gl_reflex_mp = 335, + ak47_gl_silencer_mp = 336, + ak47_gl_thermal_mp = 337, + ak47_gl_xmags_mp = 338, + ak47_heartbeat_reflex_mp = 339, + ak47_heartbeat_shotgun_mp = 340, + ak47_heartbeat_silencer_mp = 341, + ak47_heartbeat_thermal_mp = 342, + ak47_heartbeat_xmags_mp = 343, + ak47_reflex_shotgun_mp = 344, + ak47_reflex_silencer_mp = 345, + ak47_reflex_xmags_mp = 346, + ak47_shotgun_silencer_mp = 347, + ak47_shotgun_thermal_mp = 348, + ak47_shotgun_xmags_mp = 349, + ak47_silencer_thermal_mp = 350, + ak47_silencer_xmags_mp = 351, + ak47_thermal_xmags_mp = 352, + m16_mp = 353, + m16_acog_mp = 354, + m16_eotech_mp = 355, + m16_fmj_mp = 356, + m16_gl_mp = 357, + gl_m16_mp = 358, + m16_heartbeat_mp = 359, + m16_reflex_mp = 360, + m16_shotgun_mp = 361, + m16_shotgun_attach_mp = 362, + m16_silencer_mp = 363, + m16_thermal_mp = 364, + m16_xmags_mp = 365, + m16_acog_fmj_mp = 366, + m16_acog_gl_mp = 367, + m16_acog_heartbeat_mp = 368, + m16_acog_shotgun_mp = 369, + m16_acog_silencer_mp = 370, + m16_acog_xmags_mp = 371, + m16_eotech_fmj_mp = 372, + m16_eotech_gl_mp = 373, + m16_eotech_heartbeat_mp = 374, + m16_eotech_shotgun_mp = 375, + m16_eotech_silencer_mp = 376, + m16_eotech_xmags_mp = 377, + m16_fmj_gl_mp = 378, + m16_fmj_heartbeat_mp = 379, + m16_fmj_reflex_mp = 380, + m16_fmj_shotgun_mp = 381, + m16_fmj_silencer_mp = 382, + m4_mp = 404, + m4_acog_mp = 405, + m4_eotech_mp = 406, + m4_fmj_mp = 407, + m4_gl_mp = 408, + gl_m4_mp = 409, + m4_heartbeat_mp = 410, + m4_reflex_mp = 411, + m4_shotgun_mp = 412, + m4_shotgun_attach_mp = 413, + m4_silencer_mp = 414, + m4_thermal_mp = 415, + m4_xmags_mp = 416, + m4_acog_fmj_mp = 417, + m4_acog_gl_mp = 418, + m4_acog_heartbeat_mp = 419, + m4_acog_shotgun_mp = 420, + m4_acog_silencer_mp = 421, + m4_acog_xmags_mp = 422, + m4_eotech_fmj_mp = 423, + m4_eotech_gl_mp = 424, + m4_eotech_heartbeat_mp = 425, + m4_eotech_shotgun_mp = 426, + m4_eotech_silencer_mp = 427, + m4_eotech_xmags_mp = 428, + m4_fmj_gl_mp = 429, + m4_fmj_heartbeat_mp = 430, + m4_fmj_reflex_mp = 431, + m4_fmj_shotgun_mp = 432, + m4_fmj_silencer_mp = 433, + m4_fmj_thermal_mp = 434, + m4_fmj_xmags_mp = 435, + m4_gl_heartbeat_mp = 436, + m4_gl_reflex_mp = 437, + m4_gl_silencer_mp = 438, + m4_gl_thermal_mp = 439, + m4_gl_xmags_mp = 440, + m4_heartbeat_reflex_mp = 441, + m4_heartbeat_shotgun_mp = 442, + m4_heartbeat_silencer_mp = 443, + m4_heartbeat_thermal_mp = 444, + m4_heartbeat_xmags_mp = 445, + m4_reflex_shotgun_mp = 446, + m4_reflex_silencer_mp = 447, + m4_reflex_xmags_mp = 448, + m4_shotgun_silencer_mp = 449, + m4_shotgun_thermal_mp = 450, + m4_shotgun_xmags_mp = 451, + m4_silencer_thermal_mp = 452, + m4_silencer_xmags_mp = 453, + m4_thermal_xmags_mp = 454, + fn2000_mp = 455, + fn2000_acog_mp = 456, + fn2000_eotech_mp = 457, + fn2000_fmj_mp = 458, + fn2000_gl_mp = 459, + gl_fn2000_mp = 460, + fn2000_heartbeat_mp = 461, + fn2000_reflex_mp = 462, + fn2000_shotgun_mp = 463, + fn2000_shotgun_attach_mp = 464, + fn2000_silencer_mp = 465, + fn2000_thermal_mp = 466, + fn2000_xmags_mp = 467, + fn2000_acog_fmj_mp = 468, + fn2000_acog_gl_mp = 469, + fn2000_acog_heartbeat_mp = 470, + fn2000_acog_shotgun_mp = 471, + fn2000_acog_silencer_mp = 472, + fn2000_acog_xmags_mp = 473, + fn2000_eotech_fmj_mp = 474, + fn2000_eotech_gl_mp = 475, + fn2000_eotech_heartbeat_mp = 476, + fn2000_eotech_shotgun_mp = 477, + fn2000_eotech_silencer_mp = 478, + fn2000_eotech_xmags_mp = 479, + fn2000_fmj_gl_mp = 480, + fn2000_fmj_heartbeat_mp = 481, + fn2000_fmj_reflex_mp = 482, + fn2000_fmj_shotgun_mp = 483, + fn2000_fmj_silencer_mp = 484, + fn2000_fmj_thermal_mp = 485, + fn2000_fmj_xmags_mp = 486, + fn2000_gl_heartbeat_mp = 487, + fn2000_gl_reflex_mp = 488, + fn2000_gl_silencer_mp = 489, + fn2000_gl_thermal_mp = 490, + fn2000_gl_xmags_mp = 491, + fn2000_heartbeat_reflex_mp = 492, + fn2000_heartbeat_shotgun_mp = 493, + fn2000_heartbeat_silencer_mp = 494, + fn2000_heartbeat_thermal_mp = 495, + fn2000_heartbeat_xmags_mp = 496, + fn2000_reflex_shotgun_mp = 497, + fn2000_reflex_silencer_mp = 498, + fn2000_reflex_xmags_mp = 499, + fn2000_shotgun_silencer_mp = 500, + fn2000_shotgun_thermal_mp = 501, + fn2000_shotgun_xmags_mp = 502, + fn2000_silencer_thermal_mp = 503, + fn2000_silencer_xmags_mp = 504, + fn2000_thermal_xmags_mp = 505, + masada_mp = 506, + masada_acog_mp = 507, + masada_eotech_mp = 508, + masada_fmj_mp = 509, + masada_gl_mp = 510, + gl_masada_mp = 511, + masada_heartbeat_mp = 512, + masada_reflex_mp = 513, + masada_shotgun_mp = 514, + masada_shotgun_attach_mp = 515, + masada_silencer_mp = 516, + masada_thermal_mp = 517, + masada_xmags_mp = 518, + masada_acog_fmj_mp = 519, + masada_acog_gl_mp = 520, + masada_acog_heartbeat_mp = 521, + masada_acog_shotgun_mp = 522, + masada_acog_silencer_mp = 523, + masada_acog_xmags_mp = 524, + masada_eotech_fmj_mp = 525, + masada_eotech_gl_mp = 526, + masada_eotech_heartbeat_mp = 527, + masada_eotech_shotgun_mp = 528, + masada_eotech_silencer_mp = 529, + masada_eotech_xmags_mp = 530, + masada_fmj_gl_mp = 531, + masada_fmj_heartbeat_mp = 532, + masada_fmj_reflex_mp = 533, + masada_fmj_shotgun_mp = 534, + masada_fmj_silencer_mp = 535, + masada_fmj_thermal_mp = 536, + masada_fmj_xmags_mp = 537, + masada_gl_heartbeat_mp = 538, + masada_gl_reflex_mp = 539, + masada_gl_silencer_mp = 540, + masada_gl_thermal_mp = 541, + masada_gl_xmags_mp = 542, + masada_heartbeat_reflex_mp = 543, + masada_heartbeat_shotgun_mp = 544, + masada_heartbeat_silencer_mp = 545, + masada_heartbeat_thermal_mp = 546, + masada_heartbeat_xmags_mp = 547, + masada_reflex_shotgun_mp = 548, + masada_reflex_silencer_mp = 549, + masada_reflex_xmags_mp = 550, + masada_shotgun_silencer_mp = 551, + masada_shotgun_thermal_mp = 552, + masada_shotgun_xmags_mp = 553, + masada_silencer_thermal_mp = 554, + masada_silencer_xmags_mp = 555, + masada_thermal_xmags_mp = 556, + famas_mp = 557, + famas_acog_mp = 558, + famas_eotech_mp = 559, + famas_fmj_mp = 560, + famas_gl_mp = 561, + gl_famas_mp = 562, + famas_heartbeat_mp = 563, + famas_reflex_mp = 564, + famas_shotgun_mp = 565, + famas_shotgun_attach_mp = 566, + famas_silencer_mp = 567, + famas_thermal_mp = 568, + famas_xmags_mp = 569, + famas_acog_fmj_mp = 570, + famas_acog_gl_mp = 571, + famas_acog_heartbeat_mp = 572, + famas_acog_shotgun_mp = 573, + famas_acog_silencer_mp = 574, + famas_acog_xmags_mp = 575, + famas_eotech_fmj_mp = 576, + famas_eotech_gl_mp = 577, + famas_eotech_heartbeat_mp = 578, + famas_eotech_shotgun_mp = 579, + famas_eotech_silencer_mp = 580, + famas_eotech_xmags_mp = 581, + famas_fmj_gl_mp = 582, + famas_fmj_heartbeat_mp = 583, + famas_fmj_reflex_mp = 584, + famas_fmj_shotgun_mp = 585, + famas_fmj_silencer_mp = 586, + famas_fmj_thermal_mp = 587, + famas_fmj_xmags_mp = 588, + famas_gl_heartbeat_mp = 589, + famas_gl_reflex_mp = 590, + famas_gl_silencer_mp = 591, + famas_gl_thermal_mp = 592, + famas_gl_xmags_mp = 593, + famas_heartbeat_reflex_mp = 594, + famas_heartbeat_shotgun_mp = 595, + famas_heartbeat_silencer_mp = 596, + famas_heartbeat_thermal_mp = 597, + famas_heartbeat_xmags_mp = 598, + famas_reflex_shotgun_mp = 599, + famas_reflex_silencer_mp = 600, + famas_reflex_xmags_mp = 601, + famas_shotgun_silencer_mp = 602, + famas_shotgun_thermal_mp = 603, + famas_shotgun_xmags_mp = 604, + famas_silencer_thermal_mp = 605, + famas_silencer_xmags_mp = 606, + famas_thermal_xmags_mp = 607, + fal_mp = 608, + fal_acog_mp = 609, + fal_eotech_mp = 610, + fal_fmj_mp = 611, + fal_gl_mp = 612, + gl_fal_mp = 613, + fal_heartbeat_mp = 614, + fal_reflex_mp = 615, + fal_shotgun_mp = 616, + fal_shotgun_attach_mp = 617, + fal_silencer_mp = 618, + fal_thermal_mp = 619, + fal_xmags_mp = 620, + fal_acog_fmj_mp = 621, + fal_acog_gl_mp = 622, + fal_acog_heartbeat_mp = 623, + fal_acog_shotgun_mp = 624, + fal_acog_silencer_mp = 625, + fal_acog_xmags_mp = 626, + fal_eotech_fmj_mp = 627, + fal_eotech_gl_mp = 628, + fal_eotech_heartbeat_mp = 629, + fal_eotech_shotgun_mp = 630, + fal_eotech_silencer_mp = 631, + fal_eotech_xmags_mp = 632, + fal_fmj_gl_mp = 633, + fal_fmj_heartbeat_mp = 634, + fal_fmj_reflex_mp = 635, + fal_fmj_shotgun_mp = 636, + fal_fmj_silencer_mp = 637, + fal_fmj_thermal_mp = 638, + fal_fmj_xmags_mp = 639, + fal_gl_heartbeat_mp = 640, + fal_gl_reflex_mp = 641, + fal_gl_silencer_mp = 642, + fal_gl_thermal_mp = 643, + fal_gl_xmags_mp = 644, + fal_heartbeat_reflex_mp = 645, + fal_heartbeat_shotgun_mp = 646, + fal_heartbeat_silencer_mp = 647, + fal_heartbeat_thermal_mp = 648, + fal_heartbeat_xmags_mp = 649, + fal_reflex_shotgun_mp = 650, + fal_reflex_silencer_mp = 651, + fal_reflex_xmags_mp = 652, + fal_shotgun_silencer_mp = 653, + fal_shotgun_thermal_mp = 654, + fal_shotgun_xmags_mp = 655, + fal_silencer_thermal_mp = 656, + fal_silencer_xmags_mp = 657, + fal_thermal_xmags_mp = 658, + scar_mp = 659, + scar_acog_mp = 660, + scar_eotech_mp = 661, + scar_fmj_mp = 662, + scar_gl_mp = 663, + gl_scar_mp = 664, + scar_heartbeat_mp = 665, + scar_reflex_mp = 666, + scar_shotgun_mp = 667, + scar_shotgun_attach_mp = 668, + scar_silencer_mp = 669, + scar_thermal_mp = 670, + scar_xmags_mp = 671, + scar_acog_fmj_mp = 672, + scar_acog_gl_mp = 673, + scar_acog_heartbeat_mp = 674, + scar_acog_shotgun_mp = 675, + scar_acog_silencer_mp = 676, + scar_acog_xmags_mp = 677, + scar_eotech_fmj_mp = 678, + scar_eotech_gl_mp = 679, + scar_eotech_heartbeat_mp = 680, + scar_eotech_shotgun_mp = 681, + scar_eotech_silencer_mp = 682, + scar_eotech_xmags_mp = 683, + scar_fmj_gl_mp = 684, + scar_fmj_heartbeat_mp = 685, + scar_fmj_reflex_mp = 686, + scar_fmj_shotgun_mp = 687, + scar_fmj_silencer_mp = 688, + scar_fmj_thermal_mp = 689, + scar_fmj_xmags_mp = 690, + scar_gl_heartbeat_mp = 691, + scar_gl_reflex_mp = 692, + scar_gl_silencer_mp = 693, + scar_gl_thermal_mp = 694, + scar_gl_xmags_mp = 695, + scar_heartbeat_reflex_mp = 696, + scar_heartbeat_shotgun_mp = 697, + scar_heartbeat_silencer_mp = 698, + scar_heartbeat_thermal_mp = 699, + scar_heartbeat_xmags_mp = 700, + scar_reflex_shotgun_mp = 701, + scar_reflex_silencer_mp = 702, + scar_reflex_xmags_mp = 703, + scar_shotgun_silencer_mp = 704, + scar_shotgun_thermal_mp = 705, + scar_shotgun_xmags_mp = 706, + scar_silencer_thermal_mp = 707, + scar_silencer_xmags_mp = 708, + scar_thermal_xmags_mp = 709, + tavor_mp = 710, + tavor_acog_mp = 711, + tavor_eotech_mp = 712, + tavor_fmj_mp = 713, + tavor_gl_mp = 714, + gl_tavor_mp = 715, + tavor_heartbeat_mp = 716, + tavor_reflex_mp = 717, + tavor_shotgun_mp = 718, + tavor_shotgun_attach_mp = 719, + tavor_silencer_mp = 720, + tavor_thermal_mp = 721, + tavor_xmags_mp = 722, + tavor_acog_fmj_mp = 723, + tavor_acog_gl_mp = 724, + tavor_acog_heartbeat_mp = 725, + tavor_acog_shotgun_mp = 726, + tavor_acog_silencer_mp = 727, + tavor_acog_xmags_mp = 728, + tavor_eotech_fmj_mp = 729, + tavor_eotech_gl_mp = 730, + tavor_eotech_heartbeat_mp = 731, + tavor_eotech_shotgun_mp = 732, + tavor_eotech_silencer_mp = 733, + tavor_eotech_xmags_mp = 734, + tavor_fmj_gl_mp = 735, + tavor_fmj_heartbeat_mp = 736, + tavor_fmj_reflex_mp = 737, + tavor_fmj_shotgun_mp = 738, + tavor_fmj_silencer_mp = 739, + tavor_fmj_thermal_mp = 740, + tavor_fmj_xmags_mp = 741, + tavor_gl_heartbeat_mp = 742, + tavor_gl_reflex_mp = 743, + tavor_gl_silencer_mp = 744, + tavor_gl_thermal_mp = 745, + tavor_gl_xmags_mp = 746, + tavor_heartbeat_reflex_mp = 747, + tavor_heartbeat_shotgun_mp = 748, + tavor_heartbeat_silencer_mp = 749, + tavor_heartbeat_thermal_mp = 750, + tavor_heartbeat_xmags_mp = 751, + tavor_reflex_shotgun_mp = 752, + tavor_reflex_silencer_mp = 753, + tavor_reflex_xmags_mp = 754, + tavor_shotgun_silencer_mp = 755, + tavor_shotgun_thermal_mp = 756, + tavor_shotgun_xmags_mp = 757, + tavor_silencer_thermal_mp = 758, + tavor_silencer_xmags_mp = 759, + tavor_thermal_xmags_mp = 760, + gl_mp = 761, + m79_mp = 762, + rpg_mp = 763, + at4_mp = 764, + stinger_mp = 765, + javelin_mp = 766, + barrett_mp = 767, + barrett_acog_mp = 768, + barrett_fmj_mp = 769, + barrett_heartbeat_mp = 770, + barrett_silencer_mp = 771, + barrett_thermal_mp = 772, + barrett_xmags_mp = 773, + barrett_acog_fmj_mp = 774, + barrett_acog_heartbeat_mp = 775, + barrett_acog_silencer_mp = 776, + barrett_acog_xmags_mp = 777, + barrett_fmj_heartbeat_mp = 778, + barrett_fmj_silencer_mp = 779, + barrett_fmj_thermal_mp = 780, + barrett_fmj_xmags_mp = 781, + barrett_heartbeat_silencer_mp = 782, + barrett_heartbeat_thermal_mp = 783, + barrett_heartbeat_xmags_mp = 784, + barrett_silencer_thermal_mp = 785, + barrett_silencer_xmags_mp = 786, + barrett_thermal_xmags_mp = 787, + wa2000_mp = 788, + wa2000_acog_mp = 789, + wa2000_fmj_mp = 790, + wa2000_heartbeat_mp = 791, + wa2000_silencer_mp = 792, + wa2000_thermal_mp = 793, + wa2000_xmags_mp = 794, + wa2000_acog_fmj_mp = 795, + wa2000_acog_heartbeat_mp = 796, + wa2000_acog_silencer_mp = 797, + wa2000_acog_xmags_mp = 798, + wa2000_fmj_heartbeat_mp = 799, + wa2000_fmj_silencer_mp = 800, + wa2000_fmj_thermal_mp = 801, + wa2000_fmj_xmags_mp = 802, + wa2000_heartbeat_silencer_mp = 803, + wa2000_heartbeat_thermal_mp = 804, + wa2000_heartbeat_xmags_mp = 805, + wa2000_silencer_thermal_mp = 806, + wa2000_silencer_xmags_mp = 807, + wa2000_thermal_xmags_mp = 808, + m21_mp = 809, + m21_acog_mp = 810, + m21_fmj_mp = 811, + m21_heartbeat_mp = 812, + m21_silencer_mp = 813, + m21_thermal_mp = 814, + m21_xmags_mp = 815, + m21_acog_fmj_mp = 816, + m21_acog_heartbeat_mp = 817, + m21_acog_silencer_mp = 818, + m21_acog_xmags_mp = 819, + m21_fmj_heartbeat_mp = 820, + m21_fmj_silencer_mp = 821, + m21_fmj_thermal_mp = 822, + m21_fmj_xmags_mp = 823, + m21_heartbeat_silencer_mp = 824, + m21_heartbeat_thermal_mp = 825, + m21_heartbeat_xmags_mp = 826, + m21_silencer_thermal_mp = 827, + m21_silencer_xmags_mp = 828, + m21_thermal_xmags_mp = 829, + cheytac_mp = 830, + cheytac_acog_mp = 831, + cheytac_fmj_mp = 832, + cheytac_heartbeat_mp = 833, + cheytac_silencer_mp = 834, + cheytac_thermal_mp = 835, + cheytac_xmags_mp = 836, + cheytac_acog_fmj_mp = 837, + cheytac_acog_heartbeat_mp = 838, + cheytac_acog_silencer_mp = 839, + cheytac_acog_xmags_mp = 840, + cheytac_fmj_heartbeat_mp = 841, + cheytac_fmj_silencer_mp = 842, + cheytac_fmj_thermal_mp = 843, + cheytac_fmj_xmags_mp = 844, + cheytac_heartbeat_silencer_mp = 845, + cheytac_heartbeat_thermal_mp = 846, + cheytac_heartbeat_xmags_mp = 847, + cheytac_silencer_thermal_mp = 848, + cheytac_silencer_xmags_mp = 849, + cheytac_thermal_xmags_mp = 850, + ranger_mp = 851, + ranger_akimbo_mp = 852, + ranger_fmj_mp = 853, + ranger_akimbo_fmj_mp = 854, + model1887_mp = 855, + model1887_akimbo_mp = 856, + model1887_fmj_mp = 857, + model1887_akimbo_fmj_mp = 858, + striker_mp = 859, + striker_eotech_mp = 860, + striker_fmj_mp = 861, + striker_grip_mp = 862, + striker_reflex_mp = 863, + striker_silencer_mp = 864, + striker_xmags_mp = 865, + striker_eotech_fmj_mp = 866, + striker_eotech_grip_mp = 867, + striker_eotech_silencer_mp = 868, + striker_eotech_xmags_mp = 869, + striker_fmj_grip_mp = 870, + striker_fmj_reflex_mp = 871, + striker_fmj_silencer_mp = 872, + striker_fmj_xmags_mp = 873, + striker_grip_reflex_mp = 874, + striker_grip_silencer_mp = 875, + striker_grip_xmags_mp = 876, + striker_reflex_silencer_mp = 877, + striker_reflex_xmags_mp = 878, + striker_silencer_xmags_mp = 879, + aa12_mp = 880, + aa12_eotech_mp = 881, + aa12_fmj_mp = 882, + aa12_grip_mp = 883, + aa12_reflex_mp = 884, + aa12_silencer_mp = 885, + aa12_xmags_mp = 886, + aa12_eotech_fmj_mp = 887, + aa12_eotech_grip_mp = 888, + aa12_eotech_silencer_mp = 889, + aa12_eotech_xmags_mp = 890, + aa12_fmj_grip_mp = 891, + aa12_fmj_reflex_mp = 892, + aa12_fmj_silencer_mp = 893, + aa12_fmj_xmags_mp = 894, + aa12_grip_reflex_mp = 895, + aa12_grip_silencer_mp = 896, + aa12_grip_xmags_mp = 897, + aa12_reflex_silencer_mp = 898, + aa12_reflex_xmags_mp = 899, + aa12_silencer_xmags_mp = 900, + m1014_mp = 901, + m1014_eotech_mp = 902, + m1014_fmj_mp = 903, + m1014_grip_mp = 904, + m1014_reflex_mp = 905, + m1014_silencer_mp = 906, + m1014_xmags_mp = 907, + m1014_eotech_fmj_mp = 908, + m1014_eotech_grip_mp = 909, + m1014_eotech_silencer_mp = 910, + m1014_eotech_xmags_mp = 911, + m1014_fmj_grip_mp = 912, + m1014_fmj_reflex_mp = 913, + m1014_fmj_silencer_mp = 914, + m1014_fmj_xmags_mp = 915, + m1014_grip_reflex_mp = 916, + m1014_grip_silencer_mp = 917, + m1014_grip_xmags_mp = 918, + m1014_reflex_silencer_mp = 919, + m1014_reflex_xmags_mp = 920, + m1014_silencer_xmags_mp = 921, + spas12_mp = 922, + spas12_eotech_mp = 923, + spas12_fmj_mp = 924, + spas12_grip_mp = 925, + spas12_reflex_mp = 926, + spas12_silencer_mp = 927, + spas12_xmags_mp = 928, + spas12_eotech_fmj_mp = 929, + spas12_eotech_grip_mp = 930, + spas12_eotech_silencer_mp = 931, + spas12_eotech_xmags_mp = 932, + spas12_fmj_grip_mp = 933, + spas12_fmj_reflex_mp = 934, + spas12_fmj_silencer_mp = 935, + spas12_fmj_xmags_mp = 936, + spas12_grip_reflex_mp = 937, + spas12_grip_silencer_mp = 938, + spas12_grip_xmags_mp = 939, + spas12_reflex_silencer_mp = 940, + spas12_reflex_xmags_mp = 941, + spas12_silencer_xmags_mp = 942, + rpd_mp = 943, + rpd_acog_mp = 944, + rpd_eotech_mp = 945, + rpd_fmj_mp = 946, + rpd_grip_mp = 947, + rpd_heartbeat_mp = 948, + rpd_reflex_mp = 949, + rpd_silencer_mp = 950, + rpd_thermal_mp = 951, + rpd_xmags_mp = 952, + rpd_acog_fmj_mp = 953, + rpd_acog_grip_mp = 954, + rpd_acog_heartbeat_mp = 955, + rpd_acog_silencer_mp = 956, + rpd_acog_xmags_mp = 957, + rpd_eotech_fmj_mp = 958, + rpd_eotech_grip_mp = 959, + rpd_eotech_heartbeat_mp = 960, + rpd_eotech_silencer_mp = 961, + rpd_eotech_xmags_mp = 962, + rpd_fmj_grip_mp = 963, + rpd_fmj_heartbeat_mp = 964, + rpd_fmj_reflex_mp = 965, + rpd_fmj_silencer_mp = 966, + rpd_fmj_thermal_mp = 967, + rpd_fmj_xmags_mp = 968, + rpd_grip_heartbeat_mp = 969, + rpd_grip_reflex_mp = 970, + rpd_grip_silencer_mp = 971, + rpd_grip_thermal_mp = 972, + rpd_grip_xmags_mp = 973, + rpd_heartbeat_reflex_mp = 974, + rpd_heartbeat_silencer_mp = 975, + rpd_heartbeat_thermal_mp = 976, + rpd_heartbeat_xmags_mp = 977, + rpd_reflex_silencer_mp = 978, + rpd_reflex_xmags_mp = 979, + rpd_silencer_thermal_mp = 980, + rpd_silencer_xmags_mp = 981, + rpd_thermal_xmags_mp = 982, + sa80_mp = 983, + sa80_acog_mp = 984, + sa80_eotech_mp = 985, + sa80_fmj_mp = 986, + sa80_grip_mp = 987, + sa80_heartbeat_mp = 988, + sa80_reflex_mp = 989, + sa80_silencer_mp = 990, + sa80_thermal_mp = 991, + sa80_xmags_mp = 992, + sa80_acog_fmj_mp = 993, + sa80_acog_grip_mp = 994, + sa80_acog_heartbeat_mp = 995, + sa80_acog_silencer_mp = 996, + sa80_acog_xmags_mp = 997, + sa80_eotech_fmj_mp = 998, + sa80_eotech_grip_mp = 999, + sa80_eotech_heartbeat_mp = 1000, + sa80_eotech_silencer_mp = 1001, + sa80_eotech_xmags_mp = 1002, + sa80_fmj_grip_mp = 1003, + sa80_fmj_heartbeat_mp = 1004, + sa80_fmj_reflex_mp = 1005, + sa80_fmj_silencer_mp = 1006, + sa80_fmj_thermal_mp = 1007, + sa80_fmj_xmags_mp = 1008, + sa80_grip_heartbeat_mp = 1009, + sa80_grip_reflex_mp = 1010, + sa80_grip_silencer_mp = 1011, + sa80_grip_thermal_mp = 1012, + sa80_grip_xmags_mp = 1013, + sa80_heartbeat_reflex_mp = 1014, + sa80_heartbeat_silencer_mp = 1015, + sa80_heartbeat_thermal_mp = 1016, + sa80_heartbeat_xmags_mp = 1017, + sa80_reflex_silencer_mp = 1018, + sa80_reflex_xmags_mp = 1019, + sa80_silencer_thermal_mp = 1020, + sa80_silencer_xmags_mp = 1021, + sa80_thermal_xmags_mp = 1022, + mg4_mp = 1023, + mg4_acog_mp = 1024, + mg4_eotech_mp = 1025, + mg4_fmj_mp = 1026, + mg4_grip_mp = 1027, + mg4_heartbeat_mp = 1028, + mg4_reflex_mp = 1029, + mg4_silencer_mp = 1030, + mg4_thermal_mp = 1031, + mg4_xmags_mp = 1032, + mg4_acog_fmj_mp = 1033, + mg4_acog_grip_mp = 1034, + mg4_acog_heartbeat_mp = 1035, + mg4_acog_silencer_mp = 1036, + mg4_acog_xmags_mp = 1037, + mg4_eotech_fmj_mp = 1038, + mg4_eotech_grip_mp = 1039, + mg4_eotech_heartbeat_mp = 1040, + mg4_eotech_silencer_mp = 1041, + mg4_eotech_xmags_mp = 1042, + mg4_fmj_grip_mp = 1043, + mg4_fmj_heartbeat_mp = 1044, + mg4_fmj_reflex_mp = 1045, + mg4_fmj_silencer_mp = 1046, + mg4_fmj_thermal_mp = 1047, + mg4_fmj_xmags_mp = 1048, + mg4_grip_heartbeat_mp = 1049, + mg4_grip_reflex_mp = 1050, + mg4_grip_silencer_mp = 1051, + mg4_grip_thermal_mp = 1052, + mg4_grip_xmags_mp = 1053, + mg4_heartbeat_reflex_mp = 1054, + mg4_heartbeat_silencer_mp = 1055, + mg4_heartbeat_thermal_mp = 1056, + mg4_heartbeat_xmags_mp = 1057, + mg4_reflex_silencer_mp = 1058, + mg4_reflex_xmags_mp = 1059, + mg4_silencer_thermal_mp = 1060, + mg4_silencer_xmags_mp = 1061, + mg4_thermal_xmags_mp = 1062, + m240_mp = 1063, + m240_acog_mp = 1064, + m240_eotech_mp = 1065, + m240_fmj_mp = 1066, + m240_grip_mp = 1067, + m240_heartbeat_mp = 1068, + m240_reflex_mp = 1069, + m240_silencer_mp = 1070, + m240_thermal_mp = 1071, + m240_xmags_mp = 1072, + m240_acog_fmj_mp = 1073, + m240_acog_grip_mp = 1074, + m240_acog_heartbeat_mp = 1075, + m240_acog_silencer_mp = 1076, + m240_acog_xmags_mp = 1077, + m240_eotech_fmj_mp = 1078, + m240_eotech_grip_mp = 1079, + m240_eotech_heartbeat_mp = 1080, + m240_eotech_silencer_mp = 1081, + m240_eotech_xmags_mp = 1082, + m240_fmj_grip_mp = 1083, + m240_fmj_heartbeat_mp = 1084, + m240_fmj_reflex_mp = 1085, + m240_fmj_silencer_mp = 1086, + m240_fmj_thermal_mp = 1087, + m240_fmj_xmags_mp = 1088, + m240_grip_heartbeat_mp = 1089, + m240_grip_reflex_mp = 1090, + m240_grip_silencer_mp = 1091, + m240_grip_thermal_mp = 1092, + m240_grip_xmags_mp = 1093, + m240_heartbeat_reflex_mp = 1094, + m240_heartbeat_silencer_mp = 1095, + m240_heartbeat_thermal_mp = 1096, + m240_heartbeat_xmags_mp = 1097, + m240_reflex_silencer_mp = 1098, + m240_reflex_xmags_mp = 1099, + m240_silencer_thermal_mp = 1100, + m240_silencer_xmags_mp = 1101, + m240_thermal_xmags_mp = 1102, + aug_mp = 1103, + aug_acog_mp = 1104, + aug_eotech_mp = 1105, + aug_fmj_mp = 1106, + aug_grip_mp = 1107, + aug_heartbeat_mp = 1108, + aug_reflex_mp = 1109, + aug_silencer_mp = 1110, + aug_thermal_mp = 1111, + aug_xmags_mp = 1112, + aug_acog_fmj_mp = 1113, + aug_acog_grip_mp = 1114, + aug_acog_heartbeat_mp = 1115, + aug_acog_silencer_mp = 1116, + aug_acog_xmags_mp = 1117, + aug_eotech_fmj_mp = 1118, + aug_eotech_grip_mp = 1119, + aug_eotech_heartbeat_mp = 1120, + aug_eotech_silencer_mp = 1121, + aug_eotech_xmags_mp = 1122, + aug_fmj_grip_mp = 1123, + aug_fmj_heartbeat_mp = 1124, + aug_fmj_reflex_mp = 1125, + aug_fmj_silencer_mp = 1126, + aug_fmj_thermal_mp = 1127, + aug_fmj_xmags_mp = 1128, + aug_grip_heartbeat_mp = 1129, + aug_grip_reflex_mp = 1130, + aug_grip_silencer_mp = 1131, + aug_grip_thermal_mp = 1132, + aug_grip_xmags_mp = 1133, + aug_heartbeat_reflex_mp = 1134, + aug_heartbeat_silencer_mp = 1135, + aug_heartbeat_thermal_mp = 1136, + aug_heartbeat_xmags_mp = 1137, + aug_reflex_silencer_mp = 1138, + aug_reflex_xmags_mp = 1139, + aug_silencer_thermal_mp = 1140, + aug_silencer_xmags_mp = 1141, + aug_thermal_xmags_mp = 1142, + c4_mp = 1143, + claymore_mp = 1144, + airdrop_marker_mp = 1145, + semtex_mp = 1146, + frag_grenade_mp = 1147, + flash_grenade_mp = 1148, + smoke_grenade_mp = 1149, + concussion_grenade_mp = 1150, + throwingknife_mp = 1151, + onemanarmy_mp = 1152, + flare_mp = 1153, + scavenger_bag_mp = 1154, + frag_grenade_short_mp = 1155, + briefcase_bomb_mp = 1157, + briefcase_bomb_defuse_mp = 1158, + killstreak_uav_mp = 1159, + killstreak_helicopter_mp = 1160, + killstreak_ac130_mp = 1161, + killstreak_predator_missile_mp = 1162, + killstreak_helicopter_minigun_mp = 1163, + killstreak_nuke_mp = 1164, + killstreak_precision_airstrike_mp = 1165, + killstreak_counter_uav_mp = 1166, + killstreak_sentry_mp = 1167, + airdrop_sentry_marker_mp = 1168, + killstreak_helicopter_flares_mp = 1169, + killstreak_emp_mp = 1170, + airdrop_mega_marker_mp = 1171, + killstreak_stealth_airstrike_mp = 1172, + killstreak_harrier_airstrike_mp = 1173, + ac130_25mm_mp = 1174, + ac130_40mm_mp = 1175, + ac130_105mm_mp = 1176, + remotemissile_projectile_mp = 1177, + stealth_bomb_mp = 1178, + artillery_mp = 1179, + harrier_missile_mp = 1180, + harrier_20mm_mp = 1181, + harrier_ffar_mp = 1182, + heli_remote_mp = 1187, + pavelow_minigun_mp = 1188, + nuke_mp = 1190, + barrel_mp = 1191, + lightstick_mp = 1192, + throwingknife_rhand_mp = 1193, + deserteaglegold_akimbo_mp, + deserteaglegold_fmj_mp, + deserteaglegold_tactical_mp, + deserteaglegold_akimbo_fmj_mp, + deserteaglegold_fmj_tactical_mp, + ak47classic_mp, + ak47classic_acog_mp, + ak47classic_eotech_mp, + ak47classic_fmj_mp, + ak47classic_gl_mp, + gl_ak47classic_mp, + ak47classic_heartbeat_mp, + ak47classic_reflex_mp, + ak47classic_shotgun_mp, + ak47classic_shotgun_attach_mp, + ak47classic_silencer_mp, + ak47classic_thermal_mp, + ak47classic_xmags_mp, + ak47classic_acog_fmj_mp, + ak47classic_acog_gl_mp, + ak47classic_acog_heartbeat_mp, + ak47classic_acog_shotgun_mp, + ak47classic_acog_silencer_mp, + ak47classic_acog_xmags_mp, + ak47classic_eotech_fmj_mp, + ak47classic_eotech_gl_mp, + ak47classic_eotech_heartbeat_mp, + ak47classic_eotech_shotgun_mp, + ak47classic_eotech_silencer_mp, + ak47classic_eotech_xmags_mp, + ak47classic_fmj_gl_mp, + ak47classic_fmj_heartbeat_mp, + ak47classic_fmj_reflex_mp, + ak47classic_fmj_shotgun_mp, + ak47classic_fmj_silencer_mp, + ak47classic_fmj_thermal_mp, + ak47classic_fmj_xmags_mp, + ak47classic_gl_heartbeat_mp, + ak47classic_gl_reflex_mp, + ak47classic_gl_silencer_mp, + ak47classic_gl_thermal_mp, + ak47classic_gl_xmags_mp, + ak47classic_heartbeat_reflex_mp, + ak47classic_heartbeat_shotgun_mp, + ak47classic_heartbeat_silencer_mp, + ak47classic_heartbeat_thermal_mp, + ak47classic_heartbeat_xmags_mp, + ak47classic_reflex_shotgun_mp, + ak47classic_reflex_silencer_mp, + ak47classic_reflex_xmags_mp, + ak47classic_shotgun_silencer_mp, + ak47classic_shotgun_thermal_mp, + ak47classic_shotgun_xmags_mp, + ak47classic_silencer_thermal_mp, + ak47classic_silencer_xmags_mp, + ak47classic_thermal_xmags_mp, + ak74u_mp, + ak74u_acog_mp, + ak74u_eotech_mp, + ak74u_fmj_mp, + ak74u_gl_mp, + gl_ak74u_mp, + ak74u_heartbeat_mp, + ak74u_reflex_mp, + ak74u_shotgun_mp, + ak74u_shotgun_attach_mp, + ak74u_silencer_mp, + ak74u_thermal_mp, + ak74u_xmags_mp, + ak74u_acog_fmj_mp, + ak74u_acog_gl_mp, + ak74u_acog_heartbeat_mp, + ak74u_acog_shotgun_mp, + ak74u_acog_silencer_mp, + ak74u_acog_xmags_mp, + ak74u_eotech_fmj_mp, + ak74u_eotech_gl_mp, + ak74u_eotech_heartbeat_mp, + ak74u_eotech_shotgun_mp, + ak74u_eotech_silencer_mp, + ak74u_eotech_xmags_mp, + ak74u_fmj_gl_mp, + ak74u_fmj_heartbeat_mp, + ak74u_fmj_reflex_mp, + ak74u_fmj_shotgun_mp, + ak74u_fmj_silencer_mp, + ak74u_fmj_thermal_mp, + ak74u_fmj_xmags_mp, + ak74u_gl_heartbeat_mp, + ak74u_gl_reflex_mp, + ak74u_gl_silencer_mp, + ak74u_gl_thermal_mp, + ak74u_gl_xmags_mp, + ak74u_heartbeat_reflex_mp, + ak74u_heartbeat_shotgun_mp, + ak74u_heartbeat_silencer_mp, + ak74u_heartbeat_thermal_mp, + ak74u_heartbeat_xmags_mp, + ak74u_reflex_shotgun_mp, + ak74u_reflex_silencer_mp, + ak74u_reflex_xmags_mp, + ak74u_shotgun_silencer_mp, + ak74u_shotgun_thermal_mp, + ak74u_shotgun_xmags_mp, + ak74u_silencer_thermal_mp, + ak74u_silencer_xmags_mp, + ak74u_thermal_xmags_mp, + m16_fmj_thermal_mp, + m16_fmj_xmags_mp, + m16_gl_heartbeat_mp, + m16_gl_reflex_mp, + m16_gl_silencer_mp, + m16_gl_thermal_mp, + m16_gl_xmags_mp, + m16_reflex_silencer_mp, + m16_heartbeat_reflex_mp, + m16_heartbeat_shotgun_mp, + m16_heartbeat_silencer_mp, + m16_heartbeat_thermal_mp, + m16_heartbeat_xmags_mp, + m16_reflex_shotgun_mp, + m16_reflex_xmags_mp, + m16_shotgun_silencer_mp, + m16_shotgun_thermal_mp, + m16_shotgun_xmags_mp, + m16_silencer_thermal_mp, + m16_silencer_xmags_mp, + m16_thermal_xmags_mp, + m40a3_mp, + peacekeeper_mp, + dragunov_mp, + cobra_player_minigun_mp, + destructible_car, + sentry_minigun_mp, + cobra_20mm_mp, + shield + } + + public enum MapName + { + mp_unknown, + mp_terminal, + mp_rust + } + } +} diff --git a/SharedLibraryCore/Helpers/MessageToken.cs b/SharedLibraryCore/Helpers/MessageToken.cs index 6f2dd65c..a0754737 100644 --- a/SharedLibraryCore/Helpers/MessageToken.cs +++ b/SharedLibraryCore/Helpers/MessageToken.cs @@ -1,20 +1,24 @@ using System; +using System.Threading; +using System.Threading.Tasks; namespace SharedLibraryCore.Helpers { public class MessageToken { public string Name { get; private set; } - Func Value; - public MessageToken(string Name, Func Value) + private readonly Func> _asyncValue; + + + public MessageToken(string Name, Func> Value) { this.Name = Name; - this.Value = Value; + _asyncValue = Value; } - - public string Process(Server server) + + public Task ProcessAsync(Server server) { - return this.Value(server); + return _asyncValue(server); } } } diff --git a/SharedLibraryCore/Utilities.cs b/SharedLibraryCore/Utilities.cs index 3c757e28..f4380aa7 100644 --- a/SharedLibraryCore/Utilities.cs +++ b/SharedLibraryCore/Utilities.cs @@ -183,7 +183,7 @@ namespace SharedLibraryCore return CurrentLocalization.LocalizationIndex[$"GLOBAL_PERMISSION_{perm.ToString().ToUpper()}"]; } - public static String ProcessMessageToken(this Server server, IList tokens, String str) + public async static Task ProcessMessageToken(this Server server, IList tokens, String str) { MatchCollection RegexMatches = Regex.Matches(str, @"\{\{[A-Z]+\}\}", RegexOptions.IgnoreCase); foreach (Match M in RegexMatches) @@ -195,7 +195,7 @@ namespace SharedLibraryCore if (found != null) { - str = str.Replace(Match, found.Process(server)); + str = str.Replace(Match, (await found.ProcessAsync(server)).ToString()); } }