abnerfs / cs2-rockthevote Goto Github PK
View Code? Open in Web Editor NEWGeneral purpose cs2 map voting plugin, made with love from scratch
General purpose cs2 map voting plugin, made with love from scratch
eg:
top,top-left,top-right,
left-top,left-center,left-bottom,
right-top,right-center,right-bottom,
center-top,center-bottom
Hello, there would be another function if match point were to automatically vote and then the map would be changed when a winning team was determined. E.g. if you could set, if 10 rounds the CT team or T team wins, then there will be an automatic vote. When a team has won the 11th round, the selected map comes.
That would be great if it worked for my community server.
Kind regards, Mario
Lines 55 to 63 in da9d230
I believe the option to activate voting via HudMenu in the !votemap
command would be interesting.
Could you add a time to "EndOfMapVote" in the config so that the map is not changed immediately when the mach is finished, but e.g. after 20 seconds. That you can still examine your statistics.
Greetings Mario
When the setting "ChangeMapImmediatly":
is set to false, the map doesn't change at the end of the match. When set to true the map changes as soon as the vote for a new map has finished.
Hey @abnerfs !
Wondering if you would be able to add extending the map by x minutes at the top of votes similar to the pic below.
Thanks! 😁
Hello i have "MapsToShow": 6, in my cfg file but in vote shows only 4.
23:15:04 [INFO] (cssharp:PluginContext) Loading plugin RockTheVote
23:15:04 [EROR] (cssharp:PluginManager) Failed to load plugin from /home/container/game/csgo/addons/counterstrikesharp/plugins/RockTheVote/RockTheVote.dll
System.NullReferenceException: Object reference not set to an instance of an object.
at cs2_rockthevote.Core.MapCooldown.<.ctor>b__5_0(Object e, Map[] maps) in /home/runner/work/cs2-rockthevote/cs2-rockthevote/Core/MapCooldown.cs:line 24
at cs2_rockthevote.MapLister.LoadMaps() in /home/runner/work/cs2-rockthevote/cs2-rockthevote/CrossCutting/MapLister.cs:line 46
at cs2_rockthevote.MapLister.OnLoad(Plugin plugin) in /home/runner/work/cs2-rockthevote/cs2-rockthevote/CrossCutting/MapLister.cs:line 59
at cs2_rockthevote.DependencyManager`2.OnPluginLoad(TPlugin plugin) in /home/runner/work/cs2-rockthevote/cs2-rockthevote/CrossCutting/DependencyManager.cs:line 51
at cs2_rockthevote.Plugin.Load(Boolean hotReload) in /home/runner/work/cs2-rockthevote/cs2-rockthevote/Plugin.cs:line 62
at CounterStrikeSharp.API.Core.Plugin.PluginContext.Load(Boolean hotReload) in /home/runner/work/CounterStrikeSharp/CounterStrikeSharp/managed/CounterStrikeSharp.API/Core/Plugin/PluginContext.cs:line 218
at CounterStrikeSharp.API.Core.Plugin.Host.PluginManager.LoadPlugin(String path) in /home/runner/work/CounterStrikeSharp/CounterStrikeSharp/managed/CounterStrikeSharp.API/Core/Plugin/Host/PluginManager.cs:line 125
at CounterStrikeSharp.API.Core.Plugin.Host.PluginManager.Load() in /home/runner/work/CounterStrikeSharp/CounterStrikeSharp/managed/CounterStrikeSharp.API/Core/Plugin/Host/PluginManager.cs:line 93
Hi,
Here is the hungarian translation. Cheers
Tom1st
hu.json
Won't load in latest counter strike sharp version please fix
Adding workshop IDs individually might be inefficient. Why not simplify it by using "ws:" similar to https://github.com/justinnobledev/cs2-mapchooser? 😄
The end-of-map vote ends, but the map does not change to the map that won the vote.
Simply switch to the same map you are running on.
Log error:
2024-03-28 23:51:09.293 -03:00 [EROR] (cssharp:Core) Error invoking callback
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation.
---> System.NullReferenceException: Object reference not set to an instance of an object.
at cs2_rockthevote.ChangeMapManager.<ChangeNextMap>b__17_0() in /home/runner/work/cs2-rockthevote/cs2-rockthevote/Core/ChangeMapManager.cs:line 81
at InvokeStub_Action.Invoke(Object, Object, IntPtr*)
at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr)
--- End of inner exception stack trace ---
at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr)
at System.Delegate.DynamicInvokeImpl(Object[] args)
at CounterStrikeSharp.API.Core.FunctionReference.<CreateWrappedCallback>b__18_0(fxScriptContext* context) in /home/runner/work/CounterStrikeSharp/CounterStrikeSharp/managed/CounterStrikeSharp.API/Core/FunctionReference.cs:line 100
Plugin Version: 1.8.4
CSSharp Version: 202 (1.0.202+696ecad)
Map list:
de_mirage
de_vertigo
de_inferno
de_anubis
de_dust2
de_ancient
de_nuke
de_overpass
hi,
i try to edit the maplist.txt for workshop map.
they are no exemple
can you give an exemple plz
de_vertigo
cs_italy
de_inferno
cs_office
de_mirage
de_ancient
de_nuke
de_anubis
de_overpass
de_dust2
but for the workshop map ? number map name ?
Supporting multiple map pools with the ability to switch map pool by command but also set a default.
Also, I wondered if it was worth switching to a json format instead of a txt which may help in supporting multiples?
I'm happy to help out here if you'd be happy to accept contributions?
Would be useful for custom servers, kz, surf, bhop etc because rounds are not being used in such mods.
I'm getting the following error while a server start:
[EROR] (cssharp:Core) Error invoking callback System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.NullReferenceException: Object reference not set to an instance of an object. at cs2_rockthevote.GameRules.get_WarmupRunning() in /home/runner/work/cs2-rockthevote/cs2-rockthevote/CrossCutting/GameRules.cs:line 50 at cs2_rockthevote.EndOfMapVote.<>c__DisplayClass13_0.<OnLoad>b__0(EventRoundStart ev, GameEventInfo info) in /home/runner/work/cs2-rockthevote/cs2-rockthevote/Features/EndOfMapVote.cs:line 62 at InvokeStub_GameEventHandler
1.Invoke(Object, Object, IntPtr*)
at System.Reflection.MethodInvoker.Invoke(Object obj, IntPtr* args, BindingFlags invokeAttr)
--- End of inner exception stack trace ---`
I have put 0, but its not disabling. I want to let the same map to show in vote (not to extend, but to change for the same map).
Expected outcome: Dust2 being played, the endmap vote begins, and there's Dust2 in the vote to replay the map.
Current outcome: Dust2 being played, but it's not appearing in the map voting selection; instead, Dust2 only appears in the vote after a different map is played again.
Configured MapsToShow: 9
but server is showing only 6.. restarted multiple times..
With "VotePercentage": 60
in config and 2 players on the server, if one player does !rtv the vote still goes through. It should have to wait until both players do !rtv for the vote to go through. This might be accounting for a player who already did !rtv but then left the server, but I'm not sure.
Add a new option to the config to start voting for the map at a certain round. For example, if 24 rounds are set, as in competitive mode. And set the start of voting in the config for round 12, then during the change of teams, voting will appear.
timeleft
00:29:21 [EROR] (cssharp:Core) Error invoking callback
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation.
---> System.NullReferenceException: Object reference not set to an instance of an object.
at cs2_rockthevote.TimeLeftCommand.CommandHandler(CCSPlayerController player) in /home/runner/work/cs2-rockthevote/cs2-rockthevote/Features/TimeLeftCommand.cs:line 86
at cs2_rockthevote.Plugin.OnTimeLeft(CCSPlayerController player, CommandInfo command) in /home/runner/work/cs2-rockthevote/cs2-rockthevote/Features/TimeLeftCommand.cs:line 15
at CounterStrikeSharp.API.Core.Commands.CommandManager.HandleCommandInternal(Int32 playerSlot, IntPtr commandInfo) in /home/runner/work/CounterStrikeSharp/CounterStrikeSharp/managed/CounterStrikeSharp.API/Core/Commands/CommandManager.cs:line 162
at InvokeStub_Action`2.Invoke(Object, Object, IntPtr*)
at System.Reflection.MethodInvoker.Invoke(Object obj, IntPtr* args, BindingFlags invokeAttr)
--- End of inner exception stack trace ---
at System.Reflection.MethodInvoker.Invoke(Object obj, IntPtr* args, BindingFlags invokeAttr)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.Delegate.DynamicInvokeImpl(Object[] args)
at CounterStrikeSharp.API.Core.FunctionReference.<>c__DisplayClass7_0.<.ctor>b__0(fxScriptContext* context) in /home/runner/work/CounterStrikeSharp/CounterStrikeSharp/managed/CounterStrikeSharp.API/Core/FunctionReference.cs:line 106
Time Remaining: 0:33
!timeleft instat crashing server
I tested this and its random. Sometimes i have normal 6 maps in vote, sometimes 4, 5.
How do I put the maps from the workshop?
Do I just have to enter the ID? ► Server crash
Is it really necessary to download a map to the server, and then put it in the list by the name of the card? ► I tried, but the server crashed
This is the console log when doing !nominate
09:20:48 [EROR] (cssharp:Core) Error invoking callback
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation.
---> System.NullReferenceException: Object reference not set to an instance of an object.
at CounterStrikeSharp.API.Modules.Menu.ChatMenuInstance.Display() in /home/runner/work/CounterStrikeSharp/CounterStrikeSharp/managed/CounterStrikeSharp.API/Modules/Menu/ChatMenu.cs:line 42
at CounterStrikeSharp.API.Modules.Menu.MenuManager.OpenChatMenu(CCSPlayerController player, ChatMenu menu) in /home/runner/work/CounterStrikeSharp/CounterStrikeSharp/managed/CounterStrikeSharp.API/Modules/Menu/MenuManager.cs:line 50
at cs2_rockthevote.NominationCommand.OpenNominationMenu(CCSPlayerController player) in /home/runner/work/cs2-rockthevote/cs2-rockthevote/Features/NominationCommand.cs:line 117
at cs2_rockthevote.NominationCommand.CommandHandler(CCSPlayerController player, String map) in /home/runner/work/cs2-rockthevote/cs2-rockthevote/Features/NominationCommand.cs:line 107
at cs2_rockthevote.Plugin.OnNominate(CCSPlayerController player, CommandInfo command) in /home/runner/work/cs2-rockthevote/cs2-rockthevote/Features/NominationCommand.cs:line 17
at CounterStrikeSharp.API.Core.Commands.CommandManager.HandleCommandInternal(Int32 playerSlot, IntPtr commandInfo) in /home/runner/work/CounterStrikeSharp/CounterStrikeSharp/managed/CounterStrikeSharp.API/Core/Commands/CommandManager.cs:line 159
at System.RuntimeMethodHandle.InvokeMethod(Object target, Void** arguments, Signature sig, Boolean isConstructor)
at System.Reflection.MethodBaseInvoker.InvokeDirectByRefWithFewArgs(Object obj, Span`1 copyOfArgs, BindingFlags invokeAttr)
--- End of inner exception stack trace ---
at System.Reflection.MethodBaseInvoker.InvokeDirectByRefWithFewArgs(Object obj, Span`1 copyOfArgs, BindingFlags invokeAttr)
at System.Reflection.MethodBaseInvoker.InvokeWithFewArgs(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.Delegate.DynamicInvokeImpl(Object[] args)
at CounterStrikeSharp.API.Core.FunctionReference.<CreateWrappedCallback>b__18_0(fxScriptContext* context)
I have in config file "TriggerRoundsBeforEnd": 10 in "EndOfMapVote". but the voting still takes two rounds to complete the map. I have maxrounds 46. I using plugin on retake server.
// This configuration was automatically generated by CounterStrikeSharp for plugin 'RockTheVote', at 2024/02/21 08:19:19
{
"Version": 9,
"Rtv": {
"Enabled": true,
"EnabledInWarmup": true,
"NominationEnabled": true,
"MinPlayers": 3,
"MinRounds": 0,
"ChangeMapImmediatly": true,
"HideHudAfterVote": true,
"MapsToShow": 6,
"VoteDuration": 20,
"VotePercentage": 60,
"HudMenu": true
},
"Votemap": {
"Enabled": false,
"VotePercentage": 60,
"ChangeMapImmediatly": true,
"EnabledInWarmup": true,
"MinPlayers": 0,
"MinRounds": 0
},
"EndOfMapVote": {
"Enabled": true,
"MapsToShow": 6,
"HudMenu": true,
"ChangeMapImmediatly": false,
"VoteDuration": 20,
"HideHudAfterVote": true,
"TriggerSecondsBeforeEnd": 250,
"TriggerRoundsBeforEnd": 10
},
"Timeleft": {
"ShowToAll": true
},
"Nextmap": {
"ShowToAll": true
}
}```
A lot of people have Multi-Mode server set-ups, with dedicated mapcycles for each mode (usually loaded as mapgroups).
It would be amazing if a plugin like this one would allow to use the mapgroups as the voting list rather than a hardcoded file.
Any chance you'd consider this?
Would be nice to have a shared api to check if the vote is on or not. Useful for plugins that need show other menus
{
"rtv.prefix": "{red}[RockTheVote]{default}",
"votemap.prefix": "{red}[Votemap]{default}",
"timeleft.prefix": "{red}[Timeleft]{default}",
"timeleft.remaining-rounds": "{0} Manches restantes",
"timeleft.remaining-time-hour": "Temps restant {0}:{1}:{2}",
"timeleft.remaining-time-minute": "Temps restant {0} minute(s) et {1} seconde(s)",
"timeleft.remaining-time-second": "Temps restant {0} seconde(s)",
"timeleft.no-time-limit": "Il n'y a pas de limite de temps",
"timeleft.last-round": "Ceci est la dernière manche",
"timeleft.time-over": "Plus de temps, ceci est la dernière manche",
"votemap.player-voted": "Le joueur {green}{0}{default} vote pour {green}{1}{default}",
"votemap.already-voted": "Tu as déjà voté {green}{0}{default}",
"votemap.in-the-map": "pour la carte {0}",
"votemap.changing-map": "Changement de carte pour {green}{0}",
"votemap.changing-map-next-round": "La carte sera changé {green}{0}{default} à la prochaine manche...",
"general.votes-needed": "({0} voté, {1} nécessaire)",
"general.invalid-map": "carte invalide",
"nominate.nominated": "Le joueur {green}{0}{default} à nommé {green}{1}{default}, maintenant il y a {2} vote(s)",
"nominate.already-nominated": "Tu as déjà nommé la carte {green}{0}{default}, elle a {1} vote(s)",
"general.validation.current-map": "Tu ne peux pas choisir la carte actuelle",
"general.validation.minimum-rounds": "Le nombre minimum de manche pour utiliser la commande est {0}",
"general.validation.warmup": "Commande désactivée pendant l'échauffement.",
"general.validation.minimum-players": "Le minimum de joueur requis pour utiliser la commande est {0}",
"general.validation.disabled": "Commande désactivée pour l'instant",
"rtv.rocked-the-vote": "Le joueur {green}{0}{default} veux un Rock the vote",
"rtv.already-rocked-the-vote": "Tu as déjà lancé un Roke the vote",
"rtv.votes-reached": "Nombre de vote requis, démarrage du vote...",
"rtv.disabled": "Rtv est désactivé",
"emv.you-voted": "Tu as voté pour {0}",
"emv.vote-ended": "Vote terminé la prochaine carte sera {green}{0}{default} ({1:N2}% of {2} vote(s))",
"emv.vote-ended-no-votes": "pas de vote, la prochaine carte sera {green}{0}",
"general.changing-map": "Changement de carte pour {green}{0}",
"general.changing-map-next-round": "La carte va être changé pour {green}{0}{default} au prochain tour...",
"emv.hud.menu-title": "Voter pour la prochaine carte:",
"emv.hud.hud-timer": "Voter pour la prochaine carte: {0}s",
"emv.hud.finished": "Vote terminé, prochaine carte: {0}",
"nextmap": "La prochaine carte sera {green}{0}",
"nextmap.decided-by-vote": "La nouvelle carte sera décidé par vote"
}
When type rtv
06:22:02 [EROR] (cssharp:Core) Error invoking callback
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation.
---> System.InvalidOperationException: Cannot transcode invalid UTF-8 JSON text to UTF-16 string.
---> System.Text.DecoderFallbackException: Unable to translate bytes [D3] at index 6 from specified code page to Unicode.
at System.Text.DecoderExceptionFallbackBuffer.Throw(Byte[] bytesUnknown, Int32 index)
at System.Text.DecoderExceptionFallbackBuffer.Fallback(Byte[] bytesUnknown, Int32 index)
at System.Text.Encoding.GetCharCountWithFallback(ReadOnlySpan1 bytes, Int32 originalBytesLength, DecoderNLS decoder) at System.Text.Encoding.GetCharCountWithFallback(Byte* pBytesOriginal, Int32 originalByteCount, Int32 bytesConsumedSoFar) at System.Text.UTF8Encoding.GetCharCount(Byte* bytes, Int32 count) at System.String.CreateStringFromEncoding(Byte* bytes, Int32 byteLength, Encoding encoding) at System.Text.Encoding.GetString(ReadOnlySpan
1 bytes)
at System.Text.Json.JsonReaderHelper.TranscodeHelper(ReadOnlySpan1 utf8Unescaped) --- End of inner exception stack trace --- at System.Text.Json.JsonReaderHelper.TranscodeHelper(ReadOnlySpan
1 utf8Unescaped)
at System.Text.Json.JsonDocument.GetString(Int32 index, JsonTokenType expectedType)
at CounterStrikeSharp.API.Core.Translations.JsonResourceManager.<>c.b__13_1(JsonProperty e) in /home/runner/work/CounterStrikeSharp/CounterStrikeSharp/managed/CounterStrikeSharp.API/Core/Translations/JsonResourceManager.cs:line 147
at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable1 source, Func
2 keySelector, Func2 elementSelector, IEqualityComparer
1 comparer)
at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable1 source, Func
2 keySelector, Func`2 elementSelector)
at CounterStrikeSharp.API.Core.Translations.JsonResourceManager.LoadJsonResources(String filePath) in /home/runner/work/CounterStrikeSharp/CounterStrikeSharp/managed/CounterStrikeSharp.API/Core/Translations/JsonResourceManager.cs:line 147
at CounterStrikeSharp.API.Core.Translations.JsonResourceManager.TryLoadResourceSet(String cultureName) in /home/runner/work/CounterStrikeSharp/CounterStrikeSharp/managed/CounterStrikeSharp.API/Core/Translations/JsonResourceManager.cs:line 124
at CounterStrikeSharp.API.Core.Translations.JsonResourceManager.TryLoadResourceSet(CultureInfo culture) in /home/runner/work/CounterStrikeSharp/CounterStrikeSharp/managed/CounterStrikeSharp.API/Core/Translations/JsonResourceManager.cs:line 135
at CounterStrikeSharp.API.Core.Translations.JsonResourceManager.GetResourceSet(CultureInfo culture, Boolean tryParents) in /home/runner/work/CounterStrikeSharp/CounterStrikeSharp/managed/CounterStrikeSharp.API/Core/Translations/JsonResourceManager.cs:line 36
at CounterStrikeSharp.API.Core.Translations.JsonResourceManager.GetString(String name, CultureInfo culture) in /home/runner/work/CounterStrikeSharp/CounterStrikeSharp/managed/CounterStrikeSharp.API/Core/Translations/JsonResourceManager.cs:line 108
at CounterStrikeSharp.API.Core.Translations.JsonStringLocalizer.GetStringSafely(String name, CultureInfo culture) in /home/runner/work/CounterStrikeSharp/CounterStrikeSharp/managed/CounterStrikeSharp.API/Core/Translations/JsonStringLocalizer.cs:line 65
at CounterStrikeSharp.API.Core.Translations.JsonStringLocalizer.get_Item(String name) in /home/runner/work/CounterStrikeSharp/CounterStrikeSharp/managed/CounterStrikeSharp.API/Core/Translations/JsonStringLocalizer.cs:line 34
at CounterStrikeSharp.API.Core.Translations.StringLocalizer.get_Item(String name) in /home/runner/work/CounterStrikeSharp/CounterStrikeSharp/managed/CounterStrikeSharp.API/Core/Translations/StringLocalizer.cs:line 18
at cs2_rockthevote.StringLocalizer.LocalizeWithPrefixInternal(String prefix, String key, Object[] args) in /home/runner/work/cs2-rockthevote/cs2-rockthevote/CrossCutting/StringLocalizer.cs:line 30
at cs2_rockthevote.StringLocalizer.LocalizeWithPrefix(String key, Object[] args) in /home/runner/work/cs2-rockthevote/cs2-rockthevote/CrossCutting/StringLocalizer.cs:line 35
at cs2_rockthevote.RockTheVoteCommand.CommandHandler(CCSPlayerController player) in /home/runner/work/cs2-rockthevote/cs2-rockthevote/Features/RockTheVoteCommand.cs:line 93
at cs2_rockthevote.Plugin.OnChat(EventPlayerChat event, GameEventInfo info) in /home/runner/work/cs2-rockthevote/cs2-rockthevote/Plugin.cs:line 75
at System.RuntimeMethodHandle.InvokeMethod(Object target, Void** arguments, Signature sig, Boolean isConstructor)
at System.Reflection.MethodInvoker.Invoke(Object obj, IntPtr* args, BindingFlags invokeAttr)
--- End of inner exception stack trace ---
at System.Reflection.MethodInvoker.Invoke(Object obj, IntPtr* args, BindingFlags invokeAttr)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.Delegate.DynamicInvokeImpl(Object[] args)
at CounterStrikeSharp.API.Core.FunctionReference.b__18_0(fxScriptContext* context) in /home/runner/work/CounterStrikeSharp/CounterStrikeSharp/managed/CounterStrikeSharp.API/Core/FunctionReference.cs:line 120
-cool down not working when you change the name of the maps in map list
-lets say the real file name of them map is de_dust2_prefab and i change it in the maplist config file to de_dust2_csgo
-the server will sucessfully show this map and change it , but it wont be excluded in the next vote .
-so the plugin is counting the real name of the maps and not the workshop id.
-thats why the maps are always showing even tho i set exclude 3 latest maps .
i hope you find a way to fix this , now the reason why i change the name of the maps is that some maps are stupidly named and confuse the players , naming dd2 to dd2_csgo is better then dd2_prefab
make a sound when end of map vote start like the gman sound , time to choose ?
example sound : https://www.youtube.com/watch?v=W290oy_iT1E
and thanks for this amazing plugin !
Implement support so that we can configure the minimum number of rounds played to use the !rtv
command.
Support for workshop maps or collections
Currently, we have a default map pool to use, which works well, however, I didn't seem to notice how we could use workshop maps.
will the vote trigger at 2 rounds before 24 max roudns or at the end of overtime maps ?
Can you add a way to fix some maps in the end maps vote like i want mirage and dd2 to always be available or the chances of this maps to be higher then others.
Hey, i try to do a workaround with Matchzy to Vote Maps,
is there any way that only admin can do the rtv command?
ty in advance
CSSv 159, Metamod:Source version 2.0.0-dev+1229, +game_type 0 +game_mode 0, roundtime 35, surf server
[EROR] (cssharp:Core) Error invoking callback
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation.
---> System.InvalidOperationException: Sequence contains no elements
at System.Linq.ThrowHelper.ThrowNoElementsException()
at cs2_rockthevote.GameRules.SetGameRules() in C:\Users\Abner\source\repos\cs2-rockthevote\RockTheVote\CrossCutting\GameRules.cs:line 29
at cs2_rockthevote.Plugin.OnRoundStartGameRules(EventRoundStart event, GameEventInfo info) in C:\Users\Abner\source\repos\cs2-rockthevote\RockTheVote\CrossCutting\GameRules.cs:line 13
at InvokeStub_GameEventHandler`1.Invoke(Object, Object, IntPtr*)
at System.Reflection.MethodInvoker.Invoke(Object obj, IntPtr* args, BindingFlags invokeAttr)
--- End of inner exception stack trace ---
at System.Reflection.MethodInvoker.Invoke(Object obj, IntPtr* args, BindingFlags invokeAttr)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.Delegate.DynamicInvokeImpl(Object[] args)
at CounterStrikeSharp.API.Core.FunctionReference.<>c__DisplayClass3_0.<.ctor>b__0(fxScriptContext* context) in /home/runner/work/CounterStrikeSharp/CounterStrikeSharp/managed/CounterStrikeSharp.API/Core/FunctionReference.cs:line 82
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.