From 80c0185c1008a9bc3ce1fbcb2c3cc93488b553cc Mon Sep 17 00:00:00 2001 From: Nicholas Hastings Date: Sun, 12 Jul 2026 11:58:38 -0400 Subject: [PATCH] Update plugins/inc to use transitional syntax --- Pawn/UpdateCheck.sp | 258 +++++++++++++++++------------------ Pawn/includes/SteamWorks.inc | 153 ++++++++------------- Pawn/swag.sp | 42 +++--- 3 files changed, 210 insertions(+), 243 deletions(-) diff --git a/Pawn/UpdateCheck.sp b/Pawn/UpdateCheck.sp index d95e3a1..6d3060e 100644 --- a/Pawn/UpdateCheck.sp +++ b/Pawn/UpdateCheck.sp @@ -1,129 +1,129 @@ -#pragma semicolon 1 -#include -#include - -new g_iPatchVersion = 0; -new g_iAppID = 0; - -new Handle:g_hForward = INVALID_HANDLE; - -public Plugin:myinfo = -{ - name = "SteamWorks Update Check", /* https://www.youtube.com/watch?v=Tq_0ht8HCcM */ - author = "Kyle Sanderson", - description = "Queries SteamWeb for Updates.", - version = "1.0b", - url = "https://AlliedMods.net" -}; - -static stock bool:ReadSteamINF(const String:sPath[], &iAppID, &iPatchVersion) -{ - new Handle:hFile = OpenFile(sPath, "r"); - if (hFile == INVALID_HANDLE) - { - return false; - } - - decl String:sBuffer[256]; - - do - { - if (!ReadFileLine(hFile, sBuffer, sizeof(sBuffer))) - { - continue; - } - - TrimString(sBuffer); - ReplaceString(sBuffer, sizeof(sBuffer), ".", ""); /* CS:GO uses decimals in steam.inf, WebAPI is Steam| style. */ - - new iPos = FindCharInString(sBuffer, '='); - if (iPos == -1) - { - continue; - } - - sBuffer[iPos++] = '\0'; - switch (CharToLower(sBuffer[0])) - { - case 'a': - { - if (!StrEqual(sBuffer, "appID", false)) - { - continue; - } - - iAppID = StringToInt(sBuffer[iPos]); - } - - case 'p': - { - if (!StrEqual(sBuffer, "PatchVersion", false)) - { - continue; - } - - iPatchVersion = StringToInt(sBuffer[iPos]); - } - } - } while (!IsEndOfFile(hFile)); - - CloseHandle(hFile); - return true; -} - -public OnPluginStart() -{ - if (!ReadSteamINF("steam.inf", g_iAppID, g_iPatchVersion) && !ReadSteamINF("../steam.inf", g_iAppID, g_iPatchVersion)) - { - SetFailState("Unable to read steam.inf"); - } - - g_hForward = CreateGlobalForward("SteamWorks_RestartRequested", ET_Ignore); -} - -public OnMapStart() -{ - CreateTimer(120.0, OnCheckForUpdate, _, TIMER_FLAG_NO_MAPCHANGE|TIMER_REPEAT); -} - -public Action:OnCheckForUpdate(Handle:hTimer) -{ - static String:sRequest[256]; - if (sRequest[0] == '\0') - { - FormatEx(sRequest, sizeof(sRequest), "http://api.steampowered.com/ISteamApps/UpToDateCheck/v0001/?appid=%u&version=%u&format=xml", g_iAppID, g_iPatchVersion); - } - - new Handle:hRequest = SteamWorks_CreateHTTPRequest(k_EHTTPMethodGET, sRequest); - if (!hRequest || !SteamWorks_SetHTTPCallbacks(hRequest, OnTransferComplete) || !SteamWorks_SendHTTPRequest(hRequest)) - { - CloseHandle(hRequest); - } - - return Plugin_Continue; -} - -public OnTransferComplete(Handle:hRequest, bool:bFailure, bool:bRequestSuccessful, EHTTPStatusCode:eStatusCode) -{ - if (!bFailure && bRequestSuccessful && eStatusCode == k_EHTTPStatusCode200OK) - { - SteamWorks_GetHTTPResponseBodyCallback(hRequest, APIWebResponse); - } - - CloseHandle(hRequest); -} - -public APIWebResponse(const String:sData[]) -{ - new iPos = StrContains(sData, ""); - if (iPos == -1) - { - return; - } - - if (g_iPatchVersion != StringToInt(sData[iPos+18])) - { - Call_StartForward(g_hForward); - Call_Finish(); - } -} +#pragma semicolon 1 +#include +#include + +int g_iPatchVersion = 0; +int g_iAppID = 0; + +Handle g_hForward = INVALID_HANDLE; + +public Plugin myinfo = +{ + name = "SteamWorks Update Check", /* https://www.youtube.com/watch?v=Tq_0ht8HCcM */ + author = "Kyle Sanderson", + description = "Queries SteamWeb for Updates.", + version = "1.0b", + url = "https://AlliedMods.net" +}; + +static stock bool ReadSteamINF(const char[] sPath, int &iAppID, int &iPatchVersion) +{ + Handle hFile = OpenFile(sPath, "r"); + if (hFile == INVALID_HANDLE) + { + return false; + } + + char sBuffer[256]; + + do + { + if (!ReadFileLine(hFile, sBuffer, sizeof(sBuffer))) + { + continue; + } + + TrimString(sBuffer); + ReplaceString(sBuffer, sizeof(sBuffer), ".", ""); /* CS:GO uses decimals in steam.inf, WebAPI is Steam| style. */ + + int iPos = FindCharInString(sBuffer, '='); + if (iPos == -1) + { + continue; + } + + sBuffer[iPos++] = '\0'; + switch (CharToLower(sBuffer[0])) + { + case 'a': + { + if (!StrEqual(sBuffer, "appID", false)) + { + continue; + } + + iAppID = StringToInt(sBuffer[iPos]); + } + + case 'p': + { + if (!StrEqual(sBuffer, "PatchVersion", false)) + { + continue; + } + + iPatchVersion = StringToInt(sBuffer[iPos]); + } + } + } while (!IsEndOfFile(hFile)); + + CloseHandle(hFile); + return true; +} + +public void OnPluginStart() +{ + if (!ReadSteamINF("steam.inf", g_iAppID, g_iPatchVersion) && !ReadSteamINF("../steam.inf", g_iAppID, g_iPatchVersion)) + { + SetFailState("Unable to read steam.inf"); + } + + g_hForward = CreateGlobalForward("SteamWorks_RestartRequested", ET_Ignore); +} + +public void OnMapStart() +{ + CreateTimer(120.0, OnCheckForUpdate, _, TIMER_FLAG_NO_MAPCHANGE|TIMER_REPEAT); +} + +public Action OnCheckForUpdate(Handle hTimer) +{ + static char sRequest[256]; + if (sRequest[0] == '\0') + { + FormatEx(sRequest, sizeof(sRequest), "http://api.steampowered.com/ISteamApps/UpToDateCheck/v0001/?appid=%u&version=%u&format=xml", g_iAppID, g_iPatchVersion); + } + + Handle hRequest = SteamWorks_CreateHTTPRequest(k_EHTTPMethodGET, sRequest); + if (!hRequest || !SteamWorks_SetHTTPCallbacks(hRequest, OnTransferComplete) || !SteamWorks_SendHTTPRequest(hRequest)) + { + CloseHandle(hRequest); + } + + return Plugin_Continue; +} + +public void OnTransferComplete(Handle hRequest, bool bFailure, bool bRequestSuccessful, EHTTPStatusCode eStatusCode) +{ + if (!bFailure && bRequestSuccessful && eStatusCode == k_EHTTPStatusCode200OK) + { + SteamWorks_GetHTTPResponseBodyCallback(hRequest, APIWebResponse); + } + + CloseHandle(hRequest); +} + +public void APIWebResponse(const char[] sData) +{ + int iPos = StrContains(sData, ""); + if (iPos == -1) + { + return; + } + + if (g_iPatchVersion != StringToInt(sData[iPos+18])) + { + Call_StartForward(g_hForward); + Call_Finish(); + } +} diff --git a/Pawn/includes/SteamWorks.inc b/Pawn/includes/SteamWorks.inc index b2c8fed..b8bd2f4 100644 --- a/Pawn/includes/SteamWorks.inc +++ b/Pawn/includes/SteamWorks.inc @@ -212,42 +212,41 @@ enum EGCResults k_EGCResultInvalidMessage = 4, // Something was wrong with the message being sent with SendMessage }; -native bool:SteamWorks_IsVACEnabled(); -native bool:SteamWorks_GetPublicIP(ipaddr[4]); -native SteamWorks_GetPublicIPCell(); -native bool:SteamWorks_IsLoaded(); -native bool:SteamWorks_SetGameData(const String:sData[]); -native bool:SteamWorks_SetGameDescription(const String:sDesc[]); -native bool:SteamWorks_SetMapName(const String:sMapName[]); -native bool:SteamWorks_IsConnected(); -native bool:SteamWorks_SetRule(const String:sKey[], const String:sValue[]); -native bool:SteamWorks_ClearRules(); +native bool SteamWorks_IsVACEnabled(); +native bool SteamWorks_GetPublicIP(int ipaddr[4]); +native int SteamWorks_GetPublicIPCell(); +native bool SteamWorks_IsLoaded(); +native bool SteamWorks_SetGameData(const char[] sData); +native bool SteamWorks_SetGameDescription(const char[] sDesc); +native bool SteamWorks_SetMapName(const char[] sMapName); +native bool SteamWorks_IsConnected(); +native bool SteamWorks_SetRule(const char[] sKey, const char[] sValue); +native bool SteamWorks_ClearRules(); #pragma deprecated This function is deprecated in the SDK and no longer does anything in this extension -native bool:SteamWorks_ForceHeartbeat(); -native bool:SteamWorks_GetUserGroupStatus(client, groupid); -native bool:SteamWorks_GetUserGroupStatusAuthID(authid, groupid); +native bool SteamWorks_ForceHeartbeat(); +native bool SteamWorks_GetUserGroupStatus(int client, int groupid); +native bool SteamWorks_GetUserGroupStatusAuthID(int authid, int groupid); -native EUserHasLicenseForAppResult:SteamWorks_HasLicenseForApp(client, app); -native EUserHasLicenseForAppResult:SteamWorks_HasLicenseForAppId(authid, app); -native SteamWorks_GetClientSteamID(client, String:sSteamID[], length); +native EUserHasLicenseForAppResult SteamWorks_HasLicenseForApp(int client, int app); +native EUserHasLicenseForAppResult SteamWorks_HasLicenseForAppId(int authid, int app); +native int SteamWorks_GetClientSteamID(int client, char[] sSteamID, int length); -native bool:SteamWorks_RequestStatsAuthID(authid, appid); -native bool:SteamWorks_RequestStats(client, appid); -native bool:SteamWorks_GetStatCell(client, const String:sKey[], &value); -native bool:SteamWorks_GetStatAuthIDCell(authid, const String:sKey[], &value); -native bool:SteamWorks_GetStatFloat(client, const String:sKey[], &Float:value); -native bool:SteamWorks_GetStatAuthIDFloat(authid, const String:sKey[], &Float:value); +native bool SteamWorks_RequestStatsAuthID(int authid, int appid); +native bool SteamWorks_RequestStats(int client, int appid); +native bool SteamWorks_GetStatCell(int client, const char[] sKey, int &value); +native bool SteamWorks_GetStatAuthIDCell(int authid, const char[] sKey, int &value); +native bool SteamWorks_GetStatFloat(int client, const char[] sKey, float &value); +native bool SteamWorks_GetStatAuthIDFloat(int authid, const char[] sKey, float &value); -native Handle:SteamWorks_CreateHTTPRequest(EHTTPMethod:method, const String:sURL[]); -native bool:SteamWorks_SetHTTPRequestContextValue(Handle:hHandle, any:data1, any:data2=0); -native bool:SteamWorks_SetHTTPRequestNetworkActivityTimeout(Handle:hHandle, timeout); -native bool:SteamWorks_SetHTTPRequestHeaderValue(Handle:hHandle, const String:sName[], const String:sValue[]); -native bool:SteamWorks_SetHTTPRequestGetOrPostParameter(Handle:hHandle, const String:sName[], const String:sValue[]); -native bool:SteamWorks_SetHTTPRequestUserAgentInfo(Handle:hHandle, const String:sUserAgentInfo[]); -native bool:SteamWorks_SetHTTPRequestRequiresVerifiedCertificate(Handle:hHandle, bool:bRequireVerifiedCertificate); -native bool:SteamWorks_SetHTTPRequestAbsoluteTimeoutMS(Handle:hHandle, unMilliseconds); +native Handle SteamWorks_CreateHTTPRequest(EHTTPMethod method, const char[] sURL); +native bool SteamWorks_SetHTTPRequestContextValue(Handle hHandle, any data1, any data2=0); +native bool SteamWorks_SetHTTPRequestNetworkActivityTimeout(Handle hHandle, int timeout); +native bool SteamWorks_SetHTTPRequestHeaderValue(Handle hHandle, const char[] sName, const char[] sValue); +native bool SteamWorks_SetHTTPRequestGetOrPostParameter(Handle hHandle, const char[] sName, const char[] sValue); +native bool SteamWorks_SetHTTPRequestUserAgentInfo(Handle hHandle, const char[] sUserAgentInfo); +native bool SteamWorks_SetHTTPRequestRequiresVerifiedCertificate(Handle hHandle, bool bRequireVerifiedCertificate); +native bool SteamWorks_SetHTTPRequestAbsoluteTimeoutMS(Handle hHandle, int unMilliseconds); -#if SOURCEMOD_V_MAJOR >= 1 && SOURCEMOD_V_MINOR >= 9 typeset SteamWorksHTTPRequestCompleted { function void (Handle hRequest, bool bFailure, bool bRequestSuccessful, EHTTPStatusCode eStatusCode); @@ -276,74 +275,42 @@ typeset SteamWorksHTTPBodyCallback function void (const int[] data, any value, int datalen); }; -#else +native bool SteamWorks_SetHTTPCallbacks(Handle hHandle, SteamWorksHTTPRequestCompleted fCompleted = INVALID_FUNCTION, SteamWorksHTTPHeadersReceived fHeaders = INVALID_FUNCTION, SteamWorksHTTPDataReceived fData = INVALID_FUNCTION, Handle hCalling = INVALID_HANDLE); +native bool SteamWorks_SendHTTPRequest(Handle hRequest); +native bool SteamWorks_SendHTTPRequestAndStreamResponse(Handle hRequest); +native bool SteamWorks_DeferHTTPRequest(Handle hRequest); +native bool SteamWorks_PrioritizeHTTPRequest(Handle hRequest); +native bool SteamWorks_GetHTTPResponseHeaderSize(Handle hRequest, const char[] sHeader, int &size); +native bool SteamWorks_GetHTTPResponseHeaderValue(Handle hRequest, const char[] sHeader, char[] sValue, int size); +native bool SteamWorks_GetHTTPResponseBodySize(Handle hRequest, int &size); +native bool SteamWorks_GetHTTPResponseBodyData(Handle hRequest, char[] sBody, int length); +native bool SteamWorks_GetHTTPStreamingResponseBodyData(Handle hRequest, int cOffset, char[] sBody, int length); +native bool SteamWorks_GetHTTPDownloadProgressPct(Handle hRequest, float &percent); +native bool SteamWorks_GetHTTPRequestWasTimedOut(Handle hRequest, bool &bWasTimedOut); +native bool SteamWorks_SetHTTPRequestRawPostBody(Handle hRequest, const char[] sContentType, const char[] sBody, int bodylen); +native bool SteamWorks_SetHTTPRequestRawPostBodyFromFile(Handle hRequest, const char[] sContentType, const char[] sFileName); -funcenum SteamWorksHTTPRequestCompleted -{ - public(Handle:hRequest, bool:bFailure, bool:bRequestSuccessful, EHTTPStatusCode:eStatusCode), - public(Handle:hRequest, bool:bFailure, bool:bRequestSuccessful, EHTTPStatusCode:eStatusCode, any:data1), - public(Handle:hRequest, bool:bFailure, bool:bRequestSuccessful, EHTTPStatusCode:eStatusCode, any:data1, any:data2) -}; +native bool SteamWorks_GetHTTPResponseBodyCallback(Handle hRequest, SteamWorksHTTPBodyCallback fCallback, any data = 0, Handle hPlugin = INVALID_HANDLE); +native bool SteamWorks_WriteHTTPResponseBodyToFile(Handle hRequest, const char[] sFileName); -funcenum SteamWorksHTTPHeadersReceived -{ - public(Handle:hRequest, bool:bFailure), - public(Handle:hRequest, bool:bFailure, any:data1), - public(Handle:hRequest, bool:bFailure, any:data1, any:data2) -}; +forward void SW_OnValidateClient(int ownerauthid, int authid); +forward void SteamWorks_OnValidateClient(int ownerauthid, int authid); +forward void SteamWorks_SteamServersConnected(); +forward void SteamWorks_SteamServersConnectFailure(EResult result); +forward void SteamWorks_SteamServersDisconnected(EResult result); -funcenum SteamWorksHTTPDataReceived -{ - public(Handle:hRequest, bool:bFailure, offset, bytesreceived), - public(Handle:hRequest, bool:bFailure, offset, bytesreceived, any:data1), - public(Handle:hRequest, bool:bFailure, offset, bytesreceived, any:data1, any:data2) -}; +forward Action SteamWorks_RestartRequested(); +forward void SteamWorks_TokenRequested(char[] sToken, int maxlen); -funcenum SteamWorksHTTPBodyCallback -{ - public(const String:sData[]), - public(const String:sData[], any:value), - public(const data[], any:value, datalen) -}; +forward void SteamWorks_OnClientGroupStatus(int authid, int groupid, bool isMember, bool isOfficer); -#endif +forward EGCResults SteamWorks_GCSendMessage(int unMsgType, const char[] pubData, int cubData); +forward void SteamWorks_GCMsgAvailable(int cubData); +forward EGCResults SteamWorks_GCRetrieveMessage(int punMsgType, const char[] pubDest, int cubDest, int pcubMsgSize); -native bool:SteamWorks_SetHTTPCallbacks(Handle:hHandle, SteamWorksHTTPRequestCompleted:fCompleted = INVALID_FUNCTION, SteamWorksHTTPHeadersReceived:fHeaders = INVALID_FUNCTION, SteamWorksHTTPDataReceived:fData = INVALID_FUNCTION, Handle:hCalling = INVALID_HANDLE); -native bool:SteamWorks_SendHTTPRequest(Handle:hRequest); -native bool:SteamWorks_SendHTTPRequestAndStreamResponse(Handle:hRequest); -native bool:SteamWorks_DeferHTTPRequest(Handle:hRequest); -native bool:SteamWorks_PrioritizeHTTPRequest(Handle:hRequest); -native bool:SteamWorks_GetHTTPResponseHeaderSize(Handle:hRequest, const String:sHeader[], &size); -native bool:SteamWorks_GetHTTPResponseHeaderValue(Handle:hRequest, const String:sHeader[], String:sValue[], size); -native bool:SteamWorks_GetHTTPResponseBodySize(Handle:hRequest, &size); -native bool:SteamWorks_GetHTTPResponseBodyData(Handle:hRequest, String:sBody[], length); -native bool:SteamWorks_GetHTTPStreamingResponseBodyData(Handle:hRequest, cOffset, String:sBody[], length); -native bool:SteamWorks_GetHTTPDownloadProgressPct(Handle:hRequest, &Float:percent); -native bool:SteamWorks_GetHTTPRequestWasTimedOut(Handle:hRequest, &bool:bWasTimedOut); -native bool:SteamWorks_SetHTTPRequestRawPostBody(Handle:hRequest, const String:sContentType[], const String:sBody[], bodylen); -native bool:SteamWorks_SetHTTPRequestRawPostBodyFromFile(Handle:hRequest, const String:sContentType[], const String:sFileName[]); +native EGCResults SteamWorks_SendMessageToGC(int unMsgType, const char[] pubData, int cubData); -native bool:SteamWorks_GetHTTPResponseBodyCallback(Handle:hRequest, SteamWorksHTTPBodyCallback:fCallback, any:data = 0, Handle:hPlugin = INVALID_HANDLE); /* Look up, moved definition for 1.7+ compat. */ -native bool:SteamWorks_WriteHTTPResponseBodyToFile(Handle:hRequest, const String:sFileName[]); - -forward SW_OnValidateClient(ownerauthid, authid); -forward SteamWorks_OnValidateClient(ownerauthid, authid); -forward SteamWorks_SteamServersConnected(); -forward SteamWorks_SteamServersConnectFailure(EResult:result); -forward SteamWorks_SteamServersDisconnected(EResult:result); - -forward Action:SteamWorks_RestartRequested(); -forward SteamWorks_TokenRequested(String:sToken[], maxlen); - -forward SteamWorks_OnClientGroupStatus(authid, groupid, bool:isMember, bool:isOfficer); - -forward EGCResults:SteamWorks_GCSendMessage(unMsgType, const String:pubData[], cubData); -forward SteamWorks_GCMsgAvailable(cubData); -forward EGCResults:SteamWorks_GCRetrieveMessage(punMsgType, const String:pubDest[], cubDest, pcubMsgSize); - -native EGCResults:SteamWorks_SendMessageToGC(unMsgType, const String:pubData[], cubData); - -public Extension:__ext_SteamWorks = +public Extension __ext_SteamWorks = { name = "SteamWorks", file = "SteamWorks.ext", @@ -360,7 +327,7 @@ public Extension:__ext_SteamWorks = }; #if !defined REQUIRE_EXTENSIONS -public __ext_SteamWorks_SetNTVOptional() +public void __ext_SteamWorks_SetNTVOptional() { MarkNativeAsOptional("SteamWorks_IsVACEnabled"); MarkNativeAsOptional("SteamWorks_GetPublicIP"); diff --git a/Pawn/swag.sp b/Pawn/swag.sp index 840078c..713959e 100644 --- a/Pawn/swag.sp +++ b/Pawn/swag.sp @@ -12,7 +12,7 @@ You should have received a copy of the GNU General Public License along with SourcePawn SteamWorks. If not, see . - + Author: Kyle Sanderson (KyleS). */ @@ -20,10 +20,10 @@ #include #include -new Handle:g_hSteamServersConnected = INVALID_HANDLE; -new Handle:g_hSteamServersDisconnected = INVALID_HANDLE; +Handle g_hSteamServersConnected = INVALID_HANDLE; +Handle g_hSteamServersDisconnected = INVALID_HANDLE; -public Plugin:myinfo = { +public Plugin myinfo = { name = "SteamWorks Additive Glider", /* SWAG */ author = "Kyle Sanderson", description = "Translates SteamTools calls into SteamWorks calls.", @@ -31,7 +31,7 @@ public Plugin:myinfo = { url = "http://AlliedMods.net" }; -public APLRes:AskPluginLoad2(Handle:myself, bool:late, String:error[], err_max) +public APLRes AskPluginLoad2(Handle myself, bool late, char[] error, int err_max) { CreateNative("Steam_IsVACEnabled", native_IsVACEnabled); CreateNative("Steam_GetPublicIP", native_GetPublicIP); @@ -40,73 +40,73 @@ public APLRes:AskPluginLoad2(Handle:myself, bool:late, String:error[], err_max) CreateNative("Steam_SetRule", native_SetRule); CreateNative("Steam_ClearRules", native_ClearRules); CreateNative("Steam_ForceHeartbeat", native_ForceHeartbeat); - + g_hSteamServersConnected = CreateGlobalForward("Steam_SteamServersConnected", ET_Ignore); g_hSteamServersDisconnected = CreateGlobalForward("Steam_SteamServersDisconnected", ET_Ignore); return APLRes_Success; } -public native_IsVACEnabled(Handle:plugin, numParams) +public int native_IsVACEnabled(Handle plugin, int numParams) { return SteamWorks_IsVACEnabled(); } -public native_GetPublicIP(Handle:plugin, numParams) +public int native_GetPublicIP(Handle plugin, int numParams) { - new addr[4]; + int addr[4]; SteamWorks_GetPublicIP(addr); SetNativeArray(1, addr, sizeof(addr)); return 1; } -public native_SetGameDescription(Handle:plugin, numParams) +public int native_SetGameDescription(Handle plugin, int numParams) { - decl String:sDesc[PLATFORM_MAX_PATH]; + char sDesc[PLATFORM_MAX_PATH]; GetNativeString(1, sDesc, sizeof(sDesc)); return SteamWorks_SetGameDescription(sDesc); } -public native_IsConnected(Handle:plugin, numParams) +public int native_IsConnected(Handle plugin, int numParams) { return SteamWorks_IsConnected(); } -public native_SetRule(Handle:plugin, numParams) +public int native_SetRule(Handle plugin, int numParams) { - decl String:sKey[PLATFORM_MAX_PATH], String:sValue[PLATFORM_MAX_PATH]; + char sKey[PLATFORM_MAX_PATH], sValue[PLATFORM_MAX_PATH]; GetNativeString(1, sKey, sizeof(sKey)); GetNativeString(2, sValue, sizeof(sValue)); return SteamWorks_SetRule(sKey, sValue); } -public native_ClearRules(Handle:plugin, numParams) +public int native_ClearRules(Handle plugin, int numParams) { return SteamWorks_ClearRules(); } -public native_ForceHeartbeat(Handle:plugin, numParams) +public int native_ForceHeartbeat(Handle plugin, int numParams) { - return SteamWorks_ForceHeartbeat(); + return 0; } -public SteamWorks_SteamServersConnected() +public void SteamWorks_SteamServersConnected() { if (GetForwardFunctionCount(g_hSteamServersConnected) == 0) { return; } - + Call_StartForward(g_hSteamServersConnected); Call_Finish(); } -public SteamWorks_SteamServersDisconnected() +public void SteamWorks_SteamServersDisconnected() { if (GetForwardFunctionCount(g_hSteamServersDisconnected) == 0) { return; } - + Call_StartForward(g_hSteamServersDisconnected); Call_Finish(); }