[INC] Steam Avatar
#1
[INC] Steam Avatar

[Imagen: imagen_2022-07-22_180015119_1.png]

Descripción:
- Este include te permite obtener la url del avatar de los jugadores steam
- La ventaja de este INC frente a [API] Advanced STEAM v3.1, es que no necesitas instalar ningún otro plugin adicional para que este inc funcione

Requisitos:
Resumen del inc:
Código PHP:
/**
 * Establece la ApiKey a usar para las solicitudes a Steam
 * @nota Si no se establece no podrás obtener el avatar 
 *
 * @param szApiKey         Tu ApiKey de Steam
 *
 * @noreturn
 */
stock set_steam_apikey(const szApiKey[])

/**
 * Solicita a Steam obtener el avatar de un jugador 
 *
 * @nota Estructura del handler (const szAvatartURL[], const bool:bError, const data[])
 *
 * @param szSteamID         SteamID del jugador
 * @param szHandlerFunc    Handler del petición a Steam
 * @param data                  Cualquier dato para pasar al hadler
 * @param len                    Tamaño máximo de los datos
 *
 * @noreturn
 * @error                  Si hay algún tipo de error durante la petición,
 * se mostrará el error en la consola del servidor
 */
stock get_steam_avatar(const szSteamID[], const szHandlerFunc[], const data[] = {}, const len 0

Ejemplo de uso:
Código PHP:
#include <amxmodx>
#include <steam_avatar>

#define PLUGIN  "Ejemplo de uso de Steam Avatar"
#define VERSION "1.0"
#define AUTHOR  "[N]drs"

public plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR)

    
register_clcmd("say /avatar""ShowAvatar")

    
set_steam_apikey("TuSteamApiKeyAquí")
}

public 
ShowAvatar(id)
{
    new 
szSteamID[64], data[1]

    
get_user_authid(idszSteamIDcharsmax(szSteamID))

    
data[0] = id
    get_steam_avatar
(szSteamID"SteamHandler"data1)
}

public 
SteamHandler(const szAvatarURL[], const bool:bError, const data[])
{
    if(!
bError)
    {
        
server_print("ID: %d"data[0])
        
server_print("AvatarURL: %s"szAvatarURL)
    }



Archivos adjuntos
.inc   steam_avatar.inc (Tamaño: 5.11 KB / Descargas: 62)
3
2
2
1
Responder
#2
Aportazo prro <3
Responder
#3
Creo que flys o un tal alejandro aportaron algo similar donde no solo obtenian el avatar del steam si no que otros datos mas. Amplia mas tu include, me gusta el metodo del callback, pero no usaria del todo el modulo curl, no hasta que le den el visto bueno los dev's de AMXX.
[Imagen: b_350_20_323957_202743_f19a15_111111.png]

(18/11/2014, 05:47 PM)Neeeeeeeeeel.- escribió: Por qué necesitan una guía para todo? Meté mano y que salga lo que salga... es la mejor forma de aprender.

(16/05/2016, 11:08 PM)kikizon2 escribió: No cabe duda que tienen mierda en vez de cerebro, par de pendejos v:
Responder
#4
(23/07/2022, 08:14 PM)OsweRRR escribió: Creo que flys o un tal alejandro aportaron algo similar donde no solo obtenian el avatar del steam si no que otros datos mas. Amplia mas tu include, me gusta el metodo del callback, pero no usaria del todo el modulo curl, no hasta que le den el visto bueno los dev's de AMXX.

Mi inc está hecho únicamente para obtener solo el avatar y nada más sin necesidad de instalar otro plugin para que funcione
Responder
#5
Buen aporte, como se haría para obtener la foto vía motd pero llamando la native en un public ya creada?
Pawn Básico no critiquen xD  Approved

Responder
#6
(23/07/2022, 10:25 PM)Meliodas escribió: Buen aporte, como se haría para obtener la foto vía motd pero llamando la native en un public ya creada?

Almacenas el url en una string y la llamas desde el html del motd, tipo el motd del TTT. Esto hablando del caso en que el html lo tengas dentro del mismo plugin.
Responder
#7
Volvi a ver este include en un trabajo reciente y no pude evitar mejorarlo, me gusta la simplicidad y aun asi se puede ampliar a no solo obtener el avatar.

Código PHP:
get_steam_avatar("handle_steam"idg_iPlayerStats[id][StatsId]) 

Código PHP:
public handle_steam(idany:databool:erroravatarfull[])
{
    if(!
error && strlen(avatarfull) > 0)
    {
        
SQL_ThreadQuery(SQL_Tuple"handle_query"fmt("UPDATE `stats_player` SET `userAvatar` = ^"%s^" WHERE `id_stats` = '%d';"avatarfulldata), {03}, 2)
    }


Código PHP:
#if !defined _curl_included
    #include <curl>
#endif

#if !defined _json_included
    #include <json>
#endif

#define MAX_HANDLER_LENGTH 32

new g_sJsonCode[1024], g_sApiKeySteam[40]

set_steam_apikey(const apikey[])
{
    
format(g_sApiKeySteamcharsmax(g_sApiKeySteam), "%s"apikey)
}

stock get_steam_avatar(handler[MAX_HANDLER_LENGTH], idany:data 0)
{
    if(!
is_user_bot(id) && !is_user_hltv(id))
    {
        new 
sBuffer[32]; get_user_authid(idsBuffercharsmax(sBuffer))
        
        if(
containi(sBuffer"STEAM_0:0") != -|| containi(sBuffer"STEAM_0:1") != -1)
        {
            new 
sTemp[MAX_HANDLER_LENGTH 10], CURL:curl_handle curl_easy_init()
            
            
format(sTempcharsmax(sTemp), "%i %i %s"iddatahandler)
            
            
get_user_info(id"*sid"sBuffercharsmax(sBuffer))
            
            
curl_easy_setopt(curl_handleCURLOPT_BUFFERSIZEsizeof g_sJsonCode)
            
curl_easy_setopt(curl_handleCURLOPT_URLfmt("http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=%s&steamids=%s&format=json"g_sApiKeySteamsBuffer))
            
curl_easy_setopt(curl_handleCURLOPT_CUSTOMREQUEST"GET")
            
curl_easy_setopt(curl_handleCURLOPT_WRITEFUNCTION"curlWrite")
            
            
curl_easy_perform(curl_handle"curlComplete"sTempcharsmax(sTemp))
        }
        else
        {
            
executeForward(handleriddatatrue"")
        }
    }
    else
    {
        
executeForward(handleriddatatrue"")
    }
}

public 
curlWrite(data[], sizenmemb)
{
    
formatex(g_sJsonCodesize nmembdata)
    
    return 
size nmemb
}

public 
curlComplete(CURL:curlCURLcode:codedata[])
{
    new 
sHandler[MAX_HANDLER_LENGTH], sPlayerIndex[5], sAnyData[5], sAvatarFull[128], bool:bError false
    
    parse
(datasPlayerIndexcharsmax(sPlayerIndex), sAnyDatacharsmax(sAnyData), sHandlercharsmax(sHandler))
    
    
curl_easy_cleanup(curl)
    
    if(
code != CURLE_OK)
    {
        
bError true
    
}
    else
    {
        new 
JSON:json_handle json_parse(g_sJsonCode)
        
        if(
json_handle != Invalid_JSON)
        {
            
json_handle json_object_get_value(json_handle"response")
            
json_handle json_object_get_value(json_handle"players")
            
json_handle json_array_get_value(json_handle0)
            
            if(
json_handle == Invalid_JSON)
            {
                
bError true
            
}
            else
            {
                
json_object_get_string(json_handle"avatarfull"sAvatarFullcharsmax(sAvatarFull))
                
                
replace_string(sAvatarFullcharsmax(sAvatarFull), "https""http")
            }
        }
        else
        {
            
bError true
        
}
        
json_free(json_handle)
    }
    
executeForward(sHandlerstr_to_num(sPlayerIndex), str_to_num(sAnyData), bErrorsAvatarFull)
}

executeForward(handler[], idany:dataerroravatarfull[])
{
    if(
callfunc_begin(handler) == 1)
    {
        
callfunc_push_int(id)
        
callfunc_push_int(data)
        
callfunc_push_int(error)
        
callfunc_push_str(avatarfull)
        
callfunc_end()
    }

[Imagen: b_350_20_323957_202743_f19a15_111111.png]

(18/11/2014, 05:47 PM)Neeeeeeeeeel.- escribió: Por qué necesitan una guía para todo? Meté mano y que salga lo que salga... es la mejor forma de aprender.

(16/05/2016, 11:08 PM)kikizon2 escribió: No cabe duda que tienen mierda en vez de cerebro, par de pendejos v:
Responder
#8
Alguien me ayuda con este problema, me salió hace unos días en la consola del host.

[Rango_Top10.amxx] [INC] Steam Avatar > Json invalido, verifica tu Steam ApiKey
Responder
#9
(24/02/2023, 03:53 PM)MatiasGFaria escribió: Alguien me ayuda con este problema, me salió hace unos días en la consola del host.

[Rango_Top10.amxx] [INC] Steam Avatar > Json invalido, verifica tu Steam ApiKey

Asegurate que tu steam apikey esté funcionando, o de lo contrario vuelve a crear otra en steam
Responder
#10
Cómo hago para saber si mi steam apikey está funcionando o crear otra en steam?

Pasa que me tira mucho error y me da tirones a mi servidor
Responder
#11
(25/02/2023, 12:57 AM)MatiasGFaria escribió: Cómo hago para saber si mi steam apikey está funcionando o crear otra en steam?

Pasa que me tira mucho error y me da tirones a mi servidor

Obtener tu ApiKey en la web de Steam
Responder
#12
(25/02/2023, 12:13 PM)[N]drs escribió: Obtener tu ApiKey en la web de Steam

El tema que funciona mal en mi servidor. me satura el server y me lo tira.


Archivos adjuntos Miniatura(s)
   
Responder
#13
(26/02/2023, 02:59 AM)MatiasGFaria escribió: El tema que funciona mal en mi servidor. me satura el server y me lo tira.

Para que eso no sucede, haz lo de la apikey que te estan diciendo dios mio...
Pawn Básico no critiquen xD  Approved

Responder
#14
(26/02/2023, 02:59 AM)MatiasGFaria escribió: El tema que funciona mal en mi servidor. me satura el server y me lo tira.

En el plugin que te está dando problemas, busca la native: set_steam_apikey("TuSteamApiKeyAquí")
y ahi coloca la apikey que hayas generado
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)