Compare commits

...

4 Commits
v263 ... v265

Author SHA1 Message Date
Markus
4b1a2c427e CoreConfig: Prevent "Error invoking callback" if core.json not found (#576)
Thanks @markus-wa
2024-09-19 01:26:55 +00:00
roflmuffin
8f59fd5b97 fix: prevent early global cleanup when inside invoke
closes #501
2024-09-02 16:34:22 +10:00
Michael Wilson
cbeac50e4a [no ci] Update README 2024-09-02 14:43:52 +10:00
Michael Wilson
eba7d9c313 [no ci] Update README.md 2024-09-02 14:43:11 +10:00
3 changed files with 41 additions and 26 deletions

View File

@@ -1,15 +1,19 @@
# CounterStrikeSharp
<div align=right>Table of Contents ↗️</div>
<h1 align=center><code>CounterStrikeSharp</code></h1>
<div align=center>
<a href=https://github.com/roflmuffin/CounterStrikeSharp/releases><img src=https://img.shields.io/github/v/release/roflmuffin/CounterStrikeSharp?style=flat-square&label=latest></a>
<a href=https://github.com/roflmuffin/CounterStrikeSharp/releases><img src=https://img.shields.io/github/release-date/roflmuffin/CounterStrikeSharp?style=flat-square&label=last%20release></a>
<a href=https://github.com/roflmuffin/CounterStrikeSharp/releases><img src=https://img.shields.io/github/downloads/roflmuffin/CounterStrikeSharp/total.svg?style=flat-square alt=downloads></a>
<a href=https://discord.gg/eAZU3guKWU><img src=https://img.shields.io/discord/1160907911501991946?logo=discord&cacheSeconds=3500&style=flat-square alt="chat on discord"></a>
</div>
<br>
CounterStrikeSharp is a server side modding framework for Counter-Strike 2. This project implements a .NET 8 scripting layer on top of a Metamod Source Plugin, allowing developers to create plugins that interact with the game server in a modern language (C#) to facilitate the creation of maintainable and testable code.
[Come and join our Discord](https://discord.gg/eAZU3guKWU)
## History
This project is an ongoing migration of a previous project (titled [VSP.NET](https://github.com/roflmuffin/vspdotnet)) whereby a scripting layer was added to a Valve Server Plugin for CSGO.
Due to the architectural changes of CS2, the plugin is being rebuilt on the ground up, to support Linux 64-bit, something which was previously impossible.
## Install
Download the latest build from [here](https://github.com/roflmuffin/CounterStrikeSharp/releases). (Download the with runtime version if this is your first time installing).

View File

@@ -151,27 +151,28 @@ namespace CounterStrikeSharp.API.Core
_commandsRegistered = true;
}
if (!File.Exists(_coreConfigPath))
if (File.Exists(_coreConfigPath))
{
try
{
var data = JsonSerializer.Deserialize<CoreConfigData>(File.ReadAllText(_coreConfigPath),
new JsonSerializerOptions() { ReadCommentHandling = JsonCommentHandling.Skip });
if (data != null)
{
_coreConfig = data;
}
}
catch (Exception ex)
{
_logger.LogWarning(ex, "Failed to load core configuration, fallback values will be used");
}
}
else
{
_logger.LogWarning(
"Core configuration could not be found at path \"{CoreConfigPath}\", fallback values will be used.",
_coreConfigPath);
return;
}
try
{
var data = JsonSerializer.Deserialize<CoreConfigData>(File.ReadAllText(_coreConfigPath),
new JsonSerializerOptions() { ReadCommentHandling = JsonCommentHandling.Skip });
if (data != null)
{
_coreConfig = data;
}
}
catch (Exception ex)
{
_logger.LogWarning(ex, "Failed to load core configuration, fallback values will be used");
}
var serverCulture = CultureInfo.GetCultures(CultureTypes.AllCultures)

View File

@@ -83,6 +83,8 @@ namespace CounterStrikeSharp.API.Core
internal fxScriptContext m_extContext = new fxScriptContext();
internal bool isCleanupLocked = false;
[SecuritySafeCritical]
public void Reset()
{
@@ -101,8 +103,16 @@ namespace CounterStrikeSharp.API.Core
[SecuritySafeCritical]
public void Invoke()
{
InvokeNativeInternal();
GlobalCleanUp();
if (!isCleanupLocked)
{
isCleanupLocked = true;
InvokeNativeInternal();
GlobalCleanUp();
isCleanupLocked = false;
return;
}
InvokeNativeInternal();
}
[SecurityCritical]