Raised This Month: $51 Target: $400
 12% 

Auto move spectator


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
alphaearth
Senior Member
Join Date: Feb 2018
Location: Turkey
Old 12-17-2019 , 13:06   Auto move spectator
Reply With Quote #1

When player's profile is private
Code:
g_bCantJoinTeam[client] = true
it should prevent the player from choosing team and send them to spectators, but it doesn't work as I wanted, can anyone help me?

Code:
#include <sourcemod>
#include <steamworks>
#include <multicolors>
#include <cstrike>
char apiTimeUrl[256] , apiSecretUrl[256] , apiSecretToken[64] , adminFlag[26];
ConVar c_secretProfilLogin , c_playedTimeLogin , c_apiSecretToken , c_adminLoginFlags;
StringMap adminFlags;
bool g_bCantJoinTeam[MAXPLAYERS +1];
#define CSGO_TEAM_SPECTATE 1
#pragma newdecls required

public void OnPluginStart()
{
	HookEvent("player_team", OnTeamChange, EventHookMode_Pre);
	AddCommandListener(Listener_JoinTeam, "jointeam");
	LoadTranslations("gizli_profil.phrases");
	setFlags();
	c_apiSecretToken    = CreateConVar("secret_api_key" , "");
	c_playedTimeLogin   = CreateConVar("secret_time", "400");
	c_secretProfilLogin = CreateConVar("secret_login", "1");
	c_adminLoginFlags   = CreateConVar("secret_admin_flags" , "a" );
	AutoExecConfig(true, "gizli_profil", "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)
{
	g_bCantJoinTeam[client] = false;
	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 );
		}
	}
} 

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(k_EHTTPMethodGET, apiFormatUrl);
	if( request )
	{
		SteamWorks_SetHTTPRequestContextValue(request, clientID);
		SteamWorks_SetHTTPCallbacks(request, secretProfil_OnHTTPResponse);
		SteamWorks_SendHTTPRequest(request);	
	}
}

void playedTimeControl(char[] steamid , int clientID )
{
	char apiFormatUrl[256];
	getTimeApiFormat(steamid , apiFormatUrl , 256);
	Handle request = SteamWorks_CreateHTTPRequest(k_EHTTPMethodGET, apiFormatUrl);
	if( request )
	{
		SteamWorks_SetHTTPRequestContextValue(request, clientID);
		SteamWorks_SetHTTPCallbacks(request, TimePlayed_OnHTTPResponse);
		SteamWorks_SendHTTPRequest(request);
	}
}

public void TimePlayed_OnHTTPResponse(Handle request, bool bFailure, bool bRequestSuccessful, EHTTPStatusCode eStatusCode,int client)
{
	if ( bFailure || !bRequestSuccessful || eStatusCode != k_EHTTPStatusCode200OK )
	{
		CloseHandle(request);
		return;
	}
	int iBufferSize = 0;
	SteamWorks_GetHTTPResponseBodySize(request, iBufferSize);
	char[] result = new char[iBufferSize];
	SteamWorks_GetHTTPResponseBodyData(request, result, iBufferSize);
	int playedTime = playedGetTimeUser( result );
	playedTime = playedTime / 60
	if( playedTime <= 0 )
	{
		if( c_secretProfilLogin.IntValue != 0 )
		CPrintToChatAll("%t", "Profil Gizli Chat Mesaj", client);
		g_bCantJoinTeam[client] = true;
	}
	else if( playedTime > 0 )
	{
		if( c_playedTimeLogin.IntValue > 0 && playedTime < c_playedTimeLogin.IntValue)
		{
			CPrintToChatAll("%t", "Oyun Saati Düsük Mesaj", client, playedTime, c_playedTimeLogin.IntValue);
			g_bCantJoinTeam[client] = true;
		}
		else if(c_playedTimeLogin.IntValue > 0 && playedTime >= c_playedTimeLogin.IntValue)
		{
			CPrintToChatAll("%t", "Oyun Saati Bilgi Mesaj", client, playedTime, c_playedTimeLogin.IntValue);
		}
	}
	else if( !playedTime )
	{
		g_bCantJoinTeam[client] = true;
	}
	CloseHandle(request);
	return;
}

public void secretProfil_OnHTTPResponse(Handle request, bool bFailure, bool bRequestSuccessful, EHTTPStatusCode eStatusCode,int client)
{
	if( eStatusCode == k_EHTTPStatusCode401Unauthorized )
	{
		if( c_secretProfilLogin.IntValue != 0)
		CPrintToChatAll("%t", "Profil Gizli Chat Mesaj", client);
		g_bCantJoinTeam[client] = true;
		CloseHandle(request);
		return;			
	}
	else if ( bFailure || !bRequestSuccessful || eStatusCode != k_EHTTPStatusCode200OK )
	{
		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)
	CPrintToChatAll("%t", "Profil Gizli Chat Mesaj", client);
	g_bCantJoinTeam[client] = true;
	CloseHandle(request);
	return;
}

public Action Listener_JoinTeam(int client, const char[] command, int args)
{
	if(g_bCantJoinTeam[client])
	{
		/*if (GetEventInt(event, "team") != CS_TEAM_SPECTATOR)
		{*/
			if (client > 0)
			{
				if (IsClientInGame(client) && !IsFakeClient(client))
				{
					CreateTimer(0.1, OnTeamChangeDelay, client, TIMER_FLAG_NO_MAPCHANGE);
				}
			}
		/*}*/
	}	
	
	/*if(g_bCantJoinTeam[client])
	{
		CPrintToChat(client, "%t", "Profil Gizli Chat Mesaj Client");
		CS_SwitchTeam(client, CS_TEAM_SPECTATOR);
	}
	return Plugin_Continue;*/
}

/*public Action OnTeamChange(Event event, const char[] name, bool dontBroadcast)
{
	int client = GetClientOfUserId(event.GetInt("userid"));
	if(g_bCantJoinTeam[client])
	{
		CPrintToChat(client, "%t", "Profil Gizli Chat Mesaj Client");
		//ChangeClientTeam(client, CS_TEAM_SPECTATOR);
		CS_SwitchTeam(client, CS_TEAM_SPECTATOR);
	}
	return Plugin_Continue;
}*/

public Action OnTeamChangeDelay(Handle timer, any client)
{
	ChangeClientTeam(client, CSGO_TEAM_SPECTATE);
	CPrintToChat(client, "%t", "Profil Gizli Chat Mesaj Client");
	return Plugin_Handled;
}

public Action OnTeamChange(Event event, const char[] name, bool dontBroadcast)
{
	int client = GetClientOfUserId(GetEventInt(event, "userid"));
	if(g_bCantJoinTeam[client])
	{
		if (GetEventInt(event, "team") != CS_TEAM_SPECTATOR)
		{
			if (client > 0)
			{
				if (IsClientInGame(client) && !IsFakeClient(client))
				{
					CreateTimer(0.1, OnTeamChangeDelay, client, TIMER_FLAG_NO_MAPCHANGE);
				}
			}
		}
	}
}

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] );
	}
	return -1;
}
__________________
alphaearth is offline
foxhound27
AlliedModders Donor
Join Date: Sep 2019
Location: Argentina
Old 12-18-2019 , 18:28   Re: Auto move spectator
Reply With Quote #2

have u tried also with a timer on response?
foxhound27 is offline
alphaearth
Senior Member
Join Date: Feb 2018
Location: Turkey
Old 12-20-2019 , 05:25   Re: Auto move spectator
Reply With Quote #3

I cannot understand what do you want to say. I do not try these codes with anything. Can you explain more?
__________________
alphaearth is offline
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 14:21.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode