View Single Post
8guawong
AlliedModders Donor
Join Date: Dec 2013
Location: BlackMarke7
Old 05-12-2020 , 03:00   Re: [CS:GO] Show players faceit level in TAB
Reply With Quote #5

Quote:
Originally Posted by raj kaul View Post
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<= MaxClients; ++i)
    {
        if (
IsClientAuthorized(i) && !IsFakeClient(i))
        {
            
OnClientAuthorized(iNULL_STRING);
        }
    }
}

public 
void OnMapStart()
{
    
char sBuf[PLATFORM_MAX_PATH];
    
    for(
int i 010i++)
    {
        
FormatEx(sBufsizeof sBuf"materials/panorama/images/icons/xp/level%i.png"5001 i);
        
        
AddFileToDownloadsTable(sBuf);
    }
    
    
SDKHook(GetPlayerResourceEntity(), SDKHook_ThinkPostHook_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(iClientAuthId_SteamID64sBufsizeof sBuf);
    
    
Handle hRequest SteamWorks_CreateHTTPRequest(k_EHTTPMethodGET"https://open.faceit.com/data/v4/players");
    
SteamWorks_SetHTTPRequestNetworkActivityTimeout(hRequest10);
    
    
SteamWorks_SetHTTPRequestHeaderValue(hRequest"Authorization""Bearer " ... API_KEY);
    
    
SteamWorks_SetHTTPRequestGetOrPostParameter(hRequest"game""csgo");
    
SteamWorks_SetHTTPRequestGetOrPostParameter(hRequest"game_player_id"sBuf);
    
    
SteamWorks_SetHTTPRequestContextValue(hRequestGetClientUserId(iClient));
    
    
SteamWorks_SetHTTPCallbacks(hRequestHTTPPlayerDetailsComplete);
    
    
SteamWorks_SendHTTPRequest(hRequest);
}

void HTTPPlayerDetailsComplete(Handle hRequestbool bFailurebool bRequestSuccessfulEHTTPStatusCode eStatusCodeany iUserID)
{
    
//Пока что игнорируем ошибки при загрузке
    
if(eStatusCode == k_EHTTPStatusCode200OK || eStatusCode == k_EHTTPStatusCode404NotFound)
    {
        
int iClient GetClientOfUserId(iUserID);
        
        if(
iClient)
        {
            
//Если игрок играл на faceit
            
if(eStatusCode == k_EHTTPStatusCode200OK)
            {
                
SteamWorks_GetHTTPResponseBodyCallback(hRequestHTTPPlayerDetailsCompleteDataiUserID);
            }
            else
            {
                
g_Players[iClient].bLoad true;
            }
        }
    }
    
    
delete hRequest;
}

void HTTPPlayerDetailsCompleteData(const char[] sDataany 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<= MaxClientsi++)
    {
        if(
g_Players[i].iSkillLevel)
        {
            
SetEntData(iEntm_nPersonaDataPublicLevel 4g_Players[i].iSkillLevel 5000);
        }
    }

should work
__________________
8guawong is offline