moving plugins from steamworks to ripext with sourcemod 1.13 upgrade

This commit is contained in:
jenz
2026-09-22 01:49:53 +02:00
parent 74e72bfdac
commit 0eb42312fc
2 changed files with 47 additions and 111 deletions
+17 -74
View File
@@ -1,6 +1,5 @@
#include <sourcemod>
#include <SteamWorks>
#include <json>
#include <ripext>
#include <ccc>
#include <cstrike>
#include <unloze_playtime>
@@ -140,7 +139,7 @@ public void OnClientPostAdminCheck(int client)
{
if(!IsClientAuthorized(client) || IsClientSourceTV(client))
return;
if (IsFakeClient(client))
{
return;
@@ -207,48 +206,29 @@ public void check_client_racetimer_rank(int client)
char sRequest[256];
GetClientAuthId(client, AuthId_Steam2, sSID, sizeof(sSID));
FormatEx(sRequest, sizeof(sRequest), "https://racebackend.unloze.com/racetimer_endpoints-1.0/api/timers/player/%s", sSID);
Handle hRequest = SteamWorks_CreateHTTPRequest(k_EHTTPMethodGET, sRequest);
if (!hRequest ||
!SteamWorks_SetHTTPCallbacks(hRequest, OnTransferComplete) ||
!SteamWorks_SetHTTPRequestContextValue(hRequest, GetClientSerial(client)) ||
!SteamWorks_SendHTTPRequest(hRequest))
{
delete hRequest;
}
HTTPRequest hRequest = new HTTPRequest(sRequest);
hRequest.Get(OnTransferComplete, GetClientSerial(client));
}
public int OnTransferComplete(Handle hRequest, bool bFailure, bool bSuccessful, EHTTPStatusCode eStatusCode, int iSerial)
public void OnTransferComplete(HTTPResponse response, any iSerial)
{
int client = GetClientFromSerial(iSerial);
if (!client) //Player disconnected.
return;
if (response.Status != HTTPStatus_OK || response.Data == null)
{
delete hRequest;
return 0;
LogError("Request-Error: %d", response.Status);
return;
}
if (bFailure || !bSuccessful || eStatusCode != k_EHTTPStatusCode200OK)
{
delete hRequest;
LogError("Request-Error: %d", eStatusCode);
return 0;
}
JSONObject obj = view_as<JSONObject>(response.Data);
SteamWorks_GetHTTPResponseBodyCallback(hRequest, OnTransferResponse, iSerial);
return 0;
}
int I_player_points = -1; //if no endpoint for steamID default value is -1
if (obj.HasKey("PlayerPoints"))
I_player_points = obj.GetInt("PlayerPoints");
public int OnTransferResponse(char[] sData, int iSerial)
{
int client = GetClientFromSerial(iSerial);
if (!client) //Player disconnected.
{
return 0;
}
JSON_Object obj = json_decode(sData); //https://github.com/clugg/sm-json
int I_player_points = obj.GetInt("PlayerPoints") //if no endpoint for steamID default value is -1
if (I_player_points < 1000)
{
I_player_points = 1000; //setting level 1
@@ -272,8 +252,8 @@ public int OnTransferResponse(char[] sData, int iSerial)
set_level_tag(client, I_player_points/1000);
}
}
json_cleanup_and_delete(obj);
return 0;
delete obj;
}
public bool player_has_no_chattag(int client)
@@ -373,40 +353,3 @@ public void set_level_tag(int client, int lvl)
Format(tag, sizeof(tag), "\x07%s[L\x07%sV\x07%sL %s] ", hexadecimals, hexadecimals2, hexadecimals3, coloured_numbers);
CCC_SetTag(client, tag);
}
//just a lazy place for applying server side fix for clan tags
//needed since august 24th 2026.
public Action OnClientCommandKeyValues(int client, KeyValues kv)
{
if (client <= 0 || client > MaxClients || !IsClientInGame(client) || IsFakeClient(client))
return Plugin_Continue;
char clanTag[32];
kv.GetString("tag", clanTag, sizeof(clanTag), "");
if (clanTag[0] == '\0')
return Plugin_Continue;
DataPack dp;
CreateDataTimer(0.1, Timer_SetClanTag, dp);
dp.WriteCell(GetClientUserId(client));
dp.WriteString(clanTag);
return Plugin_Continue;
}
public Action Timer_SetClanTag(Handle timer, DataPack pack)
{
pack.Reset();
int userId = pack.ReadCell();
int client = GetClientOfUserId(userId);
char clanTag[32];
pack.ReadString(clanTag, sizeof(clanTag));
if (client && IsClientInGame(client))
{
CS_SetClientClanTag(client, clanTag);
}
return Plugin_Stop;
}