first upload, simply divides racetimer points by 1000 and says its your level if you dont have a clantag
This commit is contained in:
parent
a568b1b7a9
commit
0a398222ae
101
RaceTimer/scripting/racetimer_rank.sp
Normal file
101
RaceTimer/scripting/racetimer_rank.sp
Normal file
@ -0,0 +1,101 @@
|
|||||||
|
#include <sourcemod>
|
||||||
|
#include <SteamWorks>
|
||||||
|
#include <json>
|
||||||
|
#include <cstrike>
|
||||||
|
|
||||||
|
public Plugin myinfo =
|
||||||
|
{
|
||||||
|
name = "Racetimer Rank",
|
||||||
|
author = "jenz",
|
||||||
|
description = "Give racetimer points as a level clan tag to players",
|
||||||
|
version = "1.0",
|
||||||
|
url = ""
|
||||||
|
};
|
||||||
|
|
||||||
|
public void OnPluginStart()
|
||||||
|
{
|
||||||
|
for(int client = 1; client <= MaxClients; client++)
|
||||||
|
{
|
||||||
|
if(IsClientInGame(client))
|
||||||
|
{
|
||||||
|
OnClientPostAdminFilter(client);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnClientPostAdminFilter(int client)
|
||||||
|
{
|
||||||
|
if(!IsClientAuthorized(client) || IsFakeClient(client) || IsClientSourceTV(client))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!HasClanTag(client))
|
||||||
|
{
|
||||||
|
check_client_racetimer_rank(client);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool HasClanTag(int client)
|
||||||
|
{
|
||||||
|
char sClanID[32];
|
||||||
|
GetClientInfo(client, "cl_clanid", sClanID, sizeof(sClanID));
|
||||||
|
return strlen(sClanID) > 1; //without a tag the len is 1.
|
||||||
|
}
|
||||||
|
|
||||||
|
public void check_client_racetimer_rank(int client)
|
||||||
|
{
|
||||||
|
char sSID[64];
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public int OnTransferComplete(Handle hRequest, bool bFailure, bool bSuccessful, EHTTPStatusCode eStatusCode, int iSerial)
|
||||||
|
{
|
||||||
|
int client = GetClientFromSerial(iSerial);
|
||||||
|
if (!client) //Player disconnected.
|
||||||
|
{
|
||||||
|
delete hRequest;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (bFailure || !bSuccessful || eStatusCode != k_EHTTPStatusCode200OK)
|
||||||
|
{
|
||||||
|
delete hRequest;
|
||||||
|
LogError("Request-Error: %d", eStatusCode);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
SteamWorks_GetHTTPResponseBodyCallback(hRequest, OnTransferResponse, iSerial);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
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
|
||||||
|
}
|
||||||
|
char tag[64];
|
||||||
|
Format(tag, sizeof(tag), "[LVL %i]", I_player_points/1000);
|
||||||
|
CS_SetClientClanTag(client, tag);
|
||||||
|
json_cleanup_and_delete(obj);
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user