diff --git a/r5dev/game/client/vscript_client.cpp b/r5dev/game/client/vscript_client.cpp
index bf420316..4d8de6b3 100644
--- a/r5dev/game/client/vscript_client.cpp
+++ b/r5dev/game/client/vscript_client.cpp
@@ -89,7 +89,7 @@ namespace VScriptCode
             g_ServerListManager.RefreshServerList(serverMessage, iCount);
             sq_pushinteger(v, static_cast<SQInteger>(iCount));
 
-            return SQ_OK;
+            SCRIPT_CHECK_AND_RETURN(v, SQ_OK);
         }
 
         //-----------------------------------------------------------------------------
@@ -100,7 +100,7 @@ namespace VScriptCode
             size_t iCount = g_ServerListManager.m_vServerList.size();
             sq_pushinteger(v, static_cast<SQInteger>(iCount));
 
-            return SQ_OK;
+            SCRIPT_CHECK_AND_RETURN(v, SQ_OK);
         }
 
         //-----------------------------------------------------------------------------
@@ -111,7 +111,7 @@ namespace VScriptCode
             SQChar* privateToken = sq_getstring(v, 1);
 
             if (!VALID_CHARSTAR(privateToken))
-                return SQ_OK;
+                SCRIPT_CHECK_AND_RETURN(v, SQ_OK);
 
             string hiddenServerRequestMessage;
             NetGameServer_t serverListing;
@@ -120,28 +120,22 @@ namespace VScriptCode
             if (!result)
             {
                 if (hiddenServerRequestMessage.empty())
-                {
                     sq_pushstring(v, "Request failed", -1);
-                }
                 else
                 {
                     hiddenServerRequestMessage = Format("Request failed: %s", hiddenServerRequestMessage.c_str());
                     sq_pushstring(v, hiddenServerRequestMessage.c_str(), -1);
                 }
 
-                return SQ_OK;
+                SCRIPT_CHECK_AND_RETURN(v, SQ_OK);
             }
 
             if (serverListing.name.empty())
             {
                 if (hiddenServerRequestMessage.empty())
-                {
                     hiddenServerRequestMessage = Format("Server listing empty");
-                }
                 else
-                {
                     hiddenServerRequestMessage = Format("Server listing empty: %s", hiddenServerRequestMessage.c_str());
-                }
 
                 sq_pushstring(v, hiddenServerRequestMessage.c_str(), -1);
             }
@@ -151,7 +145,7 @@ namespace VScriptCode
                 sq_pushstring(v, hiddenServerRequestMessage.c_str(), -1);
             }
 
-            return SQ_OK;
+            SCRIPT_CHECK_AND_RETURN(v, SQ_OK);
         }
 
         //-----------------------------------------------------------------------------
@@ -163,14 +157,12 @@ namespace VScriptCode
             SQInteger iServer = sq_getinteger(v, 1);
 
             if (!Script_CheckServerIndex(v, iServer))
-            {
-                return SQ_ERROR;
-            }
+                SCRIPT_CHECK_AND_RETURN(v, SQ_ERROR);
 
             const string& serverName = g_ServerListManager.m_vServerList[iServer].name;
             sq_pushstring(v, serverName.c_str(), -1);
 
-            return SQ_OK;
+            SCRIPT_CHECK_AND_RETURN(v, SQ_OK);
         }
 
         //-----------------------------------------------------------------------------
@@ -182,14 +174,12 @@ namespace VScriptCode
             SQInteger iServer = sq_getinteger(v, 1);
 
             if (!Script_CheckServerIndex(v, iServer))
-            {
-                return SQ_ERROR;
-            }
+                SCRIPT_CHECK_AND_RETURN(v, SQ_ERROR);
 
             const string& serverDescription = g_ServerListManager.m_vServerList[iServer].description;
             sq_pushstring(v, serverDescription.c_str(), -1);
 
-            return SQ_OK;
+            SCRIPT_CHECK_AND_RETURN(v, SQ_OK);
         }
 
         //-----------------------------------------------------------------------------
@@ -201,14 +191,12 @@ namespace VScriptCode
             SQInteger iServer = sq_getinteger(v, 1);
 
             if (!Script_CheckServerIndex(v, iServer))
-            {
-                return SQ_ERROR;
-            }
+                SCRIPT_CHECK_AND_RETURN(v, SQ_ERROR);
 
             const string& svServerMapName = g_ServerListManager.m_vServerList[iServer].map;
             sq_pushstring(v, svServerMapName.c_str(), -1);
 
-            return SQ_OK;
+            SCRIPT_CHECK_AND_RETURN(v, SQ_OK);
         }
 
         //-----------------------------------------------------------------------------
@@ -220,14 +208,12 @@ namespace VScriptCode
             SQInteger iServer = sq_getinteger(v, 1);
 
             if (!Script_CheckServerIndex(v, iServer))
-            {
-                return SQ_ERROR;
-            }
+                SCRIPT_CHECK_AND_RETURN(v, SQ_ERROR);
 
             const string& serverPlaylist = g_ServerListManager.m_vServerList[iServer].playlist;
             sq_pushstring(v, serverPlaylist.c_str(), -1);
 
-            return SQ_OK;
+            SCRIPT_CHECK_AND_RETURN(v, SQ_OK);
         }
 
         //-----------------------------------------------------------------------------
@@ -239,14 +225,12 @@ namespace VScriptCode
             SQInteger iServer = sq_getinteger(v, 1);
 
             if (!Script_CheckServerIndex(v, iServer))
-            {
-                return SQ_ERROR;
-            }
+                SCRIPT_CHECK_AND_RETURN(v, SQ_ERROR);
 
             const SQInteger playerCount = g_ServerListManager.m_vServerList[iServer].numPlayers;
             sq_pushinteger(v, playerCount);
 
-            return SQ_OK;
+            SCRIPT_CHECK_AND_RETURN(v, SQ_OK);
         }
 
         //-----------------------------------------------------------------------------
@@ -258,14 +242,12 @@ namespace VScriptCode
             SQInteger iServer = sq_getinteger(v, 1);
 
             if (!Script_CheckServerIndex(v, iServer))
-            {
-                return SQ_ERROR;
-            }
+                SCRIPT_CHECK_AND_RETURN(v, SQ_ERROR);
 
             const SQInteger maxPlayers = g_ServerListManager.m_vServerList[iServer].maxPlayers;
             sq_pushinteger(v, maxPlayers);
 
-            return SQ_OK;
+            SCRIPT_CHECK_AND_RETURN(v, SQ_OK);
         }
 
         //-----------------------------------------------------------------------------
@@ -326,7 +308,7 @@ namespace VScriptCode
             }
 
             sq_pushstring(v, pszPromoKey, -1);
-            return SQ_OK;
+            SCRIPT_CHECK_AND_RETURN(v, SQ_OK);
         }
 
         SQRESULT GetEULAContents(HSQUIRRELVM v)
@@ -349,7 +331,7 @@ namespace VScriptCode
                 sq_pushstring(v, error.c_str(), -1);
             }
 
-            return SQ_OK;
+            SCRIPT_CHECK_AND_RETURN(v, SQ_OK);
         }
 
         //-----------------------------------------------------------------------------
@@ -361,12 +343,12 @@ namespace VScriptCode
             SQChar* cryptoKey = sq_getstring(v, 2);
 
             if (!VALID_CHARSTAR(ipAddress) || VALID_CHARSTAR(cryptoKey))
-                return SQ_OK;
+                SCRIPT_CHECK_AND_RETURN(v, SQ_OK);
 
             Msg(eDLL_T::UI, "Connecting to server with ip address '%s' and encryption key '%s'\n", ipAddress, cryptoKey);
             g_ServerListManager.ConnectToServer(ipAddress, cryptoKey);
 
-            return SQ_OK;
+            SCRIPT_CHECK_AND_RETURN(v, SQ_OK);
         }
 
         //-----------------------------------------------------------------------------
@@ -379,7 +361,7 @@ namespace VScriptCode
 
             if (!Script_CheckServerIndex(v, iServer))
             {
-                return SQ_ERROR;
+                SCRIPT_CHECK_AND_RETURN(v, SQ_ERROR);
             }
 
             const NetGameServer_t& gameServer = g_ServerListManager.m_vServerList[iServer];
@@ -387,7 +369,7 @@ namespace VScriptCode
             g_ServerListManager.ConnectToServer(gameServer.address, gameServer.port,
                 gameServer.netKey);
 
-            return SQ_OK;
+            SCRIPT_CHECK_AND_RETURN(v, SQ_OK);
         }
 
         //-----------------------------------------------------------------------------
@@ -398,7 +380,7 @@ namespace VScriptCode
             SQChar* privateToken = sq_getstring(v, 1);
 
             if (!VALID_CHARSTAR(privateToken))
-                return SQ_OK;
+                SCRIPT_CHECK_AND_RETURN(v, SQ_OK);
 
             string hiddenServerRequestMessage;
             NetGameServer_t netListing;
@@ -413,7 +395,7 @@ namespace VScriptCode
                 Warning(eDLL_T::UI, "Failed to connect to private server: %s\n", hiddenServerRequestMessage.c_str());
             }
 
-            return SQ_OK;
+            SCRIPT_CHECK_AND_RETURN(v, SQ_OK);
         }
 
         //-----------------------------------------------------------------------------
@@ -422,7 +404,7 @@ namespace VScriptCode
         SQRESULT IsClientDLL(HSQUIRRELVM v)
         {
             sq_pushbool(v, ::IsClientDLL());
-            return SQ_OK;
+            SCRIPT_CHECK_AND_RETURN(v, SQ_OK);
         }
     }
 }
diff --git a/r5dev/game/server/liveapi/liveapi.cpp b/r5dev/game/server/liveapi/liveapi.cpp
index 8c795017..b9e338c3 100644
--- a/r5dev/game/server/liveapi/liveapi.cpp
+++ b/r5dev/game/server/liveapi/liveapi.cpp
@@ -1990,15 +1990,13 @@ namespace VScriptCode
 SQRESULT VScriptCode::Server::LiveAPI_IsValidToRun(HSQUIRRELVM v)
 {
 	sq_pushbool(v, liveapi_enabled.GetBool());
-
-	SCRIPT_CHECK_INTERNAL_ERROR(v);
-	return SQ_OK;
+	SCRIPT_CHECK_AND_RETURN(v, SQ_OK);
 }
 
 SQRESULT VScriptCode::Server::LiveAPI_LogRaw(HSQUIRRELVM v)
 {
 	if (!LiveAPISystem()->IsEnabled())
-		return SQ_OK;
+		SCRIPT_CHECK_AND_RETURN(v, SQ_OK);
 
 	SQRESULT result = SQ_OK;
 	SQObjectPtr& object = v->GetUp(-2);
@@ -2017,8 +2015,7 @@ SQRESULT VScriptCode::Server::LiveAPI_LogRaw(HSQUIRRELVM v)
 		result = SQ_FAIL;
 	}
 
-	SCRIPT_CHECK_INTERNAL_ERROR(v);
-	return result;
+	SCRIPT_CHECK_AND_RETURN(v, result);
 }
 
 void Script_RegisterLiveAPIFunctions(CSquirrelVM* const s)
diff --git a/r5dev/game/server/vscript_server.cpp b/r5dev/game/server/vscript_server.cpp
index 4984caf2..d037a9ae 100644
--- a/r5dev/game/server/vscript_server.cpp
+++ b/r5dev/game/server/vscript_server.cpp
@@ -58,7 +58,7 @@ namespace VScriptCode
                 !VALID_CHARSTAR(serverMapName) ||
                 !VALID_CHARSTAR(serverPlaylist))
             {
-                return SQ_OK;
+                SCRIPT_CHECK_AND_RETURN(v, SQ_OK);
             }
 
             // Adjust browser settings.
@@ -73,10 +73,7 @@ namespace VScriptCode
             g_ServerHostManager.SetVisibility(serverVisibility);
             g_ServerHostManager.LaunchServer(g_pServer->IsActive());
 
-            return SQ_OK;
-
-            //v_SQVM_RaiseError(v, "\"%s\" is not supported on client builds.\n", "CreateServer");
-            //return SQ_ERROR;
+            SCRIPT_CHECK_AND_RETURN(v, SQ_OK);
         }
         //-----------------------------------------------------------------------------
         // Purpose: shuts the server down and disconnects all clients
@@ -86,7 +83,7 @@ namespace VScriptCode
             if (g_pHostState->m_bActiveGame)
                 g_pHostState->m_iNextState = HostStates_t::HS_GAME_SHUTDOWN;
 
-            return SQ_OK;
+            SCRIPT_CHECK_AND_RETURN(v, SQ_OK);
         }
 
         //-----------------------------------------------------------------------------
@@ -102,8 +99,7 @@ namespace VScriptCode
                 reason = nullptr;
 
             g_BanSystem.KickPlayerByName(playerName, reason);
-
-            return SQ_OK;
+            SCRIPT_CHECK_AND_RETURN(v, SQ_OK);
         }
 
         //-----------------------------------------------------------------------------
@@ -119,8 +115,7 @@ namespace VScriptCode
                 reason = nullptr;
 
             g_BanSystem.KickPlayerById(playerHandle, reason);
-
-            return SQ_OK;
+            SCRIPT_CHECK_AND_RETURN(v, SQ_OK);
         }
 
         //-----------------------------------------------------------------------------
@@ -136,8 +131,7 @@ namespace VScriptCode
                 reason = nullptr;
 
             g_BanSystem.BanPlayerByName(playerName, reason);
-
-            return SQ_OK;
+            SCRIPT_CHECK_AND_RETURN(v, SQ_OK);
         }
 
         //-----------------------------------------------------------------------------
@@ -153,8 +147,7 @@ namespace VScriptCode
                 reason = nullptr;
 
             g_BanSystem.BanPlayerById(playerHandle, reason);
-
-            return SQ_OK;
+            SCRIPT_CHECK_AND_RETURN(v, SQ_OK);
         }
 
         //-----------------------------------------------------------------------------
@@ -165,7 +158,7 @@ namespace VScriptCode
             SQChar* szCriteria = sq_getstring(v, 1);
             g_BanSystem.UnbanPlayer(szCriteria);
 
-            return SQ_OK;
+            SCRIPT_CHECK_AND_RETURN(v, SQ_OK);
         }
 
         //-----------------------------------------------------------------------------
@@ -174,7 +167,7 @@ namespace VScriptCode
         SQRESULT GetNumHumanPlayers(HSQUIRRELVM v)
         {
             sq_pushinteger(v, g_pServer->GetNumHumanPlayers());
-            return SQ_OK;
+            SCRIPT_CHECK_AND_RETURN(v, SQ_OK);
         }
 
         //-----------------------------------------------------------------------------
@@ -183,7 +176,7 @@ namespace VScriptCode
         SQRESULT GetNumFakeClients(HSQUIRRELVM v)
         {
             sq_pushinteger(v, g_pServer->GetNumFakeClients());
-            return SQ_OK;
+            SCRIPT_CHECK_AND_RETURN(v, SQ_OK);
         }
 
         //-----------------------------------------------------------------------------
@@ -192,9 +185,9 @@ namespace VScriptCode
         SQRESULT IsServerActive(HSQUIRRELVM v)
         {
             bool isActive = g_pServer->IsActive();
-
             sq_pushbool(v, isActive);
-            return SQ_OK;
+
+            SCRIPT_CHECK_AND_RETURN(v, SQ_OK);
         }
 
         //-----------------------------------------------------------------------------
@@ -203,7 +196,7 @@ namespace VScriptCode
         SQRESULT IsDedicated(HSQUIRRELVM v)
         {
             sq_pushbool(v, ::IsDedicated());
-            return SQ_OK;
+            SCRIPT_CHECK_AND_RETURN(v, SQ_OK);
         }
     }
 }
diff --git a/r5dev/game/shared/vscript_shared.cpp b/r5dev/game/shared/vscript_shared.cpp
index 46dcd47d..2ac26e93 100644
--- a/r5dev/game/shared/vscript_shared.cpp
+++ b/r5dev/game/shared/vscript_shared.cpp
@@ -28,7 +28,7 @@ namespace VScriptCode
         SQRESULT GetSDKVersion(HSQUIRRELVM v)
         {
             sq_pushstring(v, SDK_VERSION, -1);
-            return SQ_OK;
+            SCRIPT_CHECK_AND_RETURN(v, SQ_OK);
         }
 
         //-----------------------------------------------------------------------------
@@ -39,7 +39,7 @@ namespace VScriptCode
             std::lock_guard<std::mutex> l(g_InstalledMapsMutex);
 
             if (g_InstalledMaps.IsEmpty())
-                return SQ_OK;
+                SCRIPT_CHECK_AND_RETURN(v, SQ_OK);
 
             sq_newarray(v, 0);
 
@@ -51,7 +51,7 @@ namespace VScriptCode
                 sq_arrayappend(v, -2);
             }
 
-            return SQ_OK;
+            SCRIPT_CHECK_AND_RETURN(v, SQ_OK);
         }
 
         //-----------------------------------------------------------------------------
@@ -62,7 +62,7 @@ namespace VScriptCode
             std::lock_guard<std::mutex> l(g_PlaylistsVecMutex);
 
             if (g_vAllPlaylists.empty())
-                return SQ_OK;
+                SCRIPT_CHECK_AND_RETURN(v, SQ_OK);
 
             sq_newarray(v, 0);
             for (const string& it : g_vAllPlaylists)
@@ -71,7 +71,7 @@ namespace VScriptCode
                 sq_arrayappend(v, -2);
             }
 
-            return SQ_OK;
+            SCRIPT_CHECK_AND_RETURN(v, SQ_OK);
         }
 
         SQRESULT ScriptError(HSQUIRRELVM v)
@@ -80,12 +80,10 @@ namespace VScriptCode
             SQInteger a4 = 0;
 
             if (SQVM_sprintf(v, 0, 1, &a4, &pString) < 0)
-                return SQ_ERROR;
+                SCRIPT_CHECK_AND_RETURN(v, SQ_ERROR);
 
             v_SQVM_ScriptError("%s", pString);
-
-            SCRIPT_CHECK_INTERNAL_ERROR(v);
-            return SQ_ERROR;
+            SCRIPT_CHECK_AND_RETURN(v, SQ_ERROR);
         }
     }
 }
diff --git a/r5dev/vscript/languages/squirrel_re/vsquirrel.h b/r5dev/vscript/languages/squirrel_re/vsquirrel.h
index 45db493c..ec419ab7 100644
--- a/r5dev/vscript/languages/squirrel_re/vsquirrel.h
+++ b/r5dev/vscript/languages/squirrel_re/vsquirrel.h
@@ -94,12 +94,16 @@ inline CSquirrelVM* g_pUIScript;
 		Error(context, EXIT_FAILURE, "Error adding enum '%s' to const table.", enumName); \
 	sq_endconsttable(v); \
 
-// Place this at the end of every script func
-#define SCRIPT_CHECK_INTERNAL_ERROR(v) \
-	SQSharedState* const sharedState = v->_sharedstate; \
-	if (sharedState->_internal_error) { \
-		CSquirrelVM__ThrowError(sharedState->_scriptvm, v); \
-		return SQ_ERROR; \
+// Use this to return from any script func
+#define SCRIPT_CHECK_AND_RETURN(v, val) \
+	{ \
+		SQSharedState* const sharedState = v->_sharedstate; \
+		if (sharedState->_internal_error) { \
+			\
+				CSquirrelVM__ThrowError(sharedState->_scriptvm, v); \
+				return SQ_ERROR; \
+		} \
+		return val; \
 	}
 
 ///////////////////////////////////////////////////////////////////////////////