Senior Member
Join Date: Feb 2018
Location: Turkey
|
12-02-2019
, 16:14
Re: Privacy information link
|
#3
|
The plugin was already running. It no longer works properly. Can you check the codes?
Other plugins don't do exactly what I want. With this add-on, I can get players to play according to game time. But the profile is open, the game hours is off, the player can enter the server. Even if the specified game time is lower.
PHP Code:
#include <sourcemod> #include <SteamWorks> char apiTimeUrl[256] , apiSecretUrl[256] , apiSecretToken[64] , adminFlag[26]; ConVar c_secretProfilLogin , c_playedTimeLogin , c_apiSecretToken , c_adminLoginFlags; StringMap adminFlags;
public void OnPluginStart() { LoadTranslations("secret_profile.phrases"); setFlags(); c_apiSecretToken = CreateConVar("secret_api_key" , ""); c_playedTimeLogin = CreateConVar("secret_time", "150"); c_secretProfilLogin = CreateConVar("secret_login", "1"); c_adminLoginFlags = CreateConVar("secret_admin_flags" , "a" ); AutoExecConfig(true, "secret_profile", "sourcemod"); Format( apiTimeUrl , 256 , "http://api.steampowered.com/IPlayerService/GetOwnedGames/v0001/?key={key}&appids_filter[0]={game}&steamid={steamid}&format=json" ); Format( apiSecretUrl , 256 , "http://api.steampowered.com/ISteamUser/GetFriendList/v0001/?key={key}&steamid={steamid}&relationship=friend&format=json" ); }
public void OnClientPostAdminCheck (int client) { checkPlayerSecretProfil( client ); }
stock void getTimeApiFormat(char[] steamid , char[] str , int len) { c_apiSecretToken.GetString( apiSecretToken , 64 ); Format( str , len , apiTimeUrl); ReplaceString(str, len, "{key}", apiSecretToken); ReplaceString(str, len, "{game}", "730"); ReplaceString(str, len, "{steamid}", steamid); }
stock void getSecretApiFormat(char[] steamid , char[] str , int len) { c_apiSecretToken.GetString( apiSecretToken , 64 ); Format( str , len , apiSecretUrl); ReplaceString(str, len, "{key}", apiSecretToken); ReplaceString(str, len, "{steamid}", steamid); }
void checkPlayerSecretProfil( int clientID ) { char steamid[18]; if( GetClientAuthId(clientID, AuthId_SteamID64, steamid , 18) ) { if ( !checkAdminFlags( GetUserFlagBits( clientID ) ) ) { if( c_playedTimeLogin.IntValue != 0 ) playedTimeControl( steamid , clientID ); if( c_secretProfilLogin.IntValue != 0 ) secretProfilControl( steamid , clientID ); } } else { setLogError("Oyuncu STEAMID Doğrulaması Başarısız"); } }
bool checkAdminFlags( int flag ) { int value; char _value[30]; c_adminLoginFlags.GetString( adminFlag , 30 ); for( int i = 0; i < sizeof( adminFlag ); i++ ) { if( adminFlag[ i ] == 0 ) return false; _value = substr( adminFlag , i , 1 ); adminFlags.GetValue( _value , value); if( flag & value ) return true; } return false; }
void setFlags() { adminFlags = new StringMap(); adminFlags.SetValue("a" , ADMFLAG_RESERVATION ); adminFlags.SetValue("b" , ADMFLAG_GENERIC ); adminFlags.SetValue("c" , ADMFLAG_KICK ); adminFlags.SetValue("d" , ADMFLAG_BAN ); adminFlags.SetValue("e" , ADMFLAG_UNBAN ); adminFlags.SetValue("f" , ADMFLAG_SLAY ); adminFlags.SetValue("g" , ADMFLAG_CHANGEMAP ); adminFlags.SetValue("h" , ADMFLAG_CONVARS ); adminFlags.SetValue("i" , ADMFLAG_CONFIG ); adminFlags.SetValue("j" , ADMFLAG_CHAT ); adminFlags.SetValue("k" , ADMFLAG_VOTE ); adminFlags.SetValue("l" , ADMFLAG_PASSWORD ); adminFlags.SetValue("m" , ADMFLAG_RCON ); adminFlags.SetValue("n" , ADMFLAG_CHEATS ); adminFlags.SetValue("z" , ADMFLAG_ROOT ); adminFlags.SetValue("o" , ADMFLAG_CUSTOM1 ); adminFlags.SetValue("p" , ADMFLAG_CUSTOM2 ); adminFlags.SetValue("q" , ADMFLAG_CUSTOM3 ); adminFlags.SetValue("r" , ADMFLAG_CUSTOM4 ); adminFlags.SetValue("s" , ADMFLAG_CUSTOM5 ); adminFlags.SetValue("t" , ADMFLAG_CUSTOM6 ); }
stock char substr(char[] inpstr, int startpos, int len=-1) { char outstr[20]; strcopy(outstr, 20 , inpstr[startpos]); outstr[len] = 0; return outstr; }
void secretProfilControl( char[] steamid , int clientID ) { char apiFormatUrl[256]; getSecretApiFormat(steamid , apiFormatUrl , 256); Handle request = SteamWorks_CreateHTTPRequest(EHTTPMethod:1, apiFormatUrl); if( request ) { SteamWorks_SetHTTPRequestContextValue(request, clientID); SteamWorks_SetHTTPCallbacks(request, secretProfil_OnHTTPResponse); SteamWorks_SendHTTPRequest(request); } else { setLogError("Steam Secret IP Bağlantısı Başarısız"); } }
void playedTimeControl(char[] steamid , int clientID ) { char apiFormatUrl[256]; getTimeApiFormat(steamid , apiFormatUrl , 256); Handle request = SteamWorks_CreateHTTPRequest(EHTTPMethod:1, apiFormatUrl); if( request ) { SteamWorks_SetHTTPRequestContextValue(request, clientID); SteamWorks_SetHTTPCallbacks(request, TimePlayed_OnHTTPResponse); SteamWorks_SendHTTPRequest(request); } else { setLogError("Steam Time IP Bağlantısı Başarısız"); } }
public TimePlayed_OnHTTPResponse(Handle request, bool bFailure, bool bRequestSuccessful, EHTTPStatusCode eStatusCode,int client) { if ( bFailure || !bRequestSuccessful || eStatusCode != EHTTPStatusCode:200 ) { setLogError("Steam TimePlayed_OnHTTPResponse IP Bağlantısı Başarısız"); CloseHandle(request); return; } int iBufferSize = 0; SteamWorks_GetHTTPResponseBodySize(request, iBufferSize); char[] result = new char[iBufferSize]; SteamWorks_GetHTTPResponseBodyData(request, result, iBufferSize); int playedTime = playedGetTimeUser( result ); if( playedTime <= 0 ) { if( c_secretProfilLogin.IntValue != 0 ) KickClient( client , "%t" , "Kick Mesaj"); } else { if( c_playedTimeLogin.IntValue > 0 && ( playedTime / 60 ) < c_playedTimeLogin.IntValue) KickClient( client , "%t" , "Kick Saat Mesaj" , c_playedTimeLogin.IntValue); } CloseHandle(request); return; }
public secretProfil_OnHTTPResponse(Handle request, bool bFailure, bool bRequestSuccessful, EHTTPStatusCode eStatusCode,int client) { if( eStatusCode == EHTTPStatusCode:401 ) { if( c_secretProfilLogin.IntValue != 0) KickClient( client , "%t" , "Kick Mesaj"); CloseHandle(request); return; } else if ( bFailure || !bRequestSuccessful || eStatusCode != EHTTPStatusCode:200 ) { setLogError("Steam secretProfil_OnHTTPResponse IP Bağlantısı Başarısız"); CloseHandle(request); return; } int iBufferSize = 0; SteamWorks_GetHTTPResponseBodySize(request, iBufferSize); char[] result = new char[iBufferSize]; SteamWorks_GetHTTPResponseBodyData(request, result, iBufferSize); int secretProfile = secretProfileUser( result ); if( c_secretProfilLogin.IntValue != 0 && secretProfile) KickClient( client , "%t" , "Kick Mesaj"); CloseHandle(request); return; }
bool secretProfileUser( char[] result ) { char str2[2][64]; ExplodeString(result, "\"friendslist\"", str2, sizeof(str2), sizeof(str2[])); if( !StrEqual(str2[1] , "") ) return false; return true; }
int playedGetTimeUser( char[] result ) { char str2[2][64]; ExplodeString(result, "\"playtime_forever\":", str2, sizeof(str2), sizeof(str2[])); if( !StrEqual(str2[1] , "") ) { char lastString[2][64]; ExplodeString(str2[1], "}", lastString, sizeof(lastString), sizeof(lastString[])); return StringToInt( lastString[0] ); } // secret profil return -1; }
void setLogError(char[] message) { LogError("LOG => %s" , message); }
__________________
Last edited by alphaearth; 12-02-2019 at 16:15.
|
|