Quote:
Originally Posted by raj kaul
i dont know about coding and getting this errors . can you help me ?
|
PHP Code:
#pragma semicolon 1
#include <SteamWorks>
#pragma newdecls required
#pragma dynamic 16384
#include <sdktools>
#include <sdkhooks>
#include <json>
public Plugin myinfo =
{
name = "Faceit Level",
description = "Show players faceit rank",
author = "Phoenix (˙·٠●Феникс●٠·˙)",
version = "1.0.2",
url = "zizt.ru hlmod.ru"
};
//Ваш ключ API
#define API_KEY "ВАШ API КЛЮЧ"
enum struct Player
{
int iUserID;
int iSkillLevel;
bool bLoad;
}
Player g_Players[MAXPLAYERS+1];
int m_nPersonaDataPublicLevel;
public void OnPluginStart()
{
m_nPersonaDataPublicLevel = FindSendPropInfo("CCSPlayerResource", "m_nPersonaDataPublicLevel");
for (int i = 1; i <= MaxClients; ++i)
{
if (IsClientAuthorized(i) && !IsFakeClient(i))
{
OnClientAuthorized(i, NULL_STRING);
}
}
}
public void OnMapStart()
{
char sBuf[PLATFORM_MAX_PATH];
for(int i = 0; i < 10; i++)
{
FormatEx(sBuf, sizeof sBuf, "materials/panorama/images/icons/xp/level%i.png", 5001 + i);
AddFileToDownloadsTable(sBuf);
}
SDKHook(GetPlayerResourceEntity(), SDKHook_ThinkPost, Hook_OnThinkPost);
}
//Чтобы уменьшить количество запросов к API
public void OnClientConnected(int iClient)
{
int iUserID = GetClientUserId(iClient);
if(g_Players[iClient].iUserID != iUserID)
{
g_Players[iClient].iUserID = iUserID;
g_Players[iClient].iSkillLevel = 0;
g_Players[iClient].bLoad = false;
}
}
public void OnClientAuthorized(int iClient, const char[] sAuth)
{
if(g_Players[iClient].bLoad || IsFakeClient(iClient))
{
return;
}
char sBuf[20];
GetClientAuthId(iClient, AuthId_SteamID64, sBuf, sizeof sBuf);
Handle hRequest = SteamWorks_CreateHTTPRequest(k_EHTTPMethodGET, "https://open.faceit.com/data/v4/players");
SteamWorks_SetHTTPRequestNetworkActivityTimeout(hRequest, 10);
SteamWorks_SetHTTPRequestHeaderValue(hRequest, "Authorization", "Bearer " ... API_KEY);
SteamWorks_SetHTTPRequestGetOrPostParameter(hRequest, "game", "csgo");
SteamWorks_SetHTTPRequestGetOrPostParameter(hRequest, "game_player_id", sBuf);
SteamWorks_SetHTTPRequestContextValue(hRequest, GetClientUserId(iClient));
SteamWorks_SetHTTPCallbacks(hRequest, HTTPPlayerDetailsComplete);
SteamWorks_SendHTTPRequest(hRequest);
}
void HTTPPlayerDetailsComplete(Handle hRequest, bool bFailure, bool bRequestSuccessful, EHTTPStatusCode eStatusCode, any iUserID)
{
//Пока что игнорируем ошибки при загрузке
if(eStatusCode == k_EHTTPStatusCode200OK || eStatusCode == k_EHTTPStatusCode404NotFound)
{
int iClient = GetClientOfUserId(iUserID);
if(iClient)
{
//Если игрок играл на faceit
if(eStatusCode == k_EHTTPStatusCode200OK)
{
SteamWorks_GetHTTPResponseBodyCallback(hRequest, HTTPPlayerDetailsCompleteData, iUserID);
}
else
{
g_Players[iClient].bLoad = true;
}
}
}
delete hRequest;
}
void HTTPPlayerDetailsCompleteData(const char[] sData, any iUserID)
{
int iClient = GetClientOfUserId(iUserID);
if(iClient)
{
JSON_Object root = json_decode(sData);
JSON_Object games = root.GetObject("games");
JSON_Object csgo = games.GetObject("csgo");
if(csgo)
{
g_Players[iClient].iSkillLevel = csgo.GetInt("skill_level", 0);
}
root.Cleanup();
delete root;
g_Players[iClient].bLoad = true;
}
}
void Hook_OnThinkPost(int iEnt)
{
for (int i = 1; i <= MaxClients; i++)
{
if(g_Players[i].iSkillLevel)
{
SetEntData(iEnt, m_nPersonaDataPublicLevel + i * 4, g_Players[i].iSkillLevel + 5000);
}
}
}
should work
__________________