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

Steam Works Group Manager


  
 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
alphaearth
Senior Member
Join Date: Feb 2018
Location: Turkey
Old 04-18-2019 , 09:11   Re: Steam Works Group Manager
Reply With Quote #11

I want only steam group members to enter the server. I adjusted it this way. there are these errors.

I've added codes starting with this line:
public void OnClientPutInServer(int iClient)

PHP Code:
// C:\Users\User\Desktop\yaz˛l˛m\SM+++\addons\sourcemod\scripting\SWGM.sp(99) : warning 219: local variable "iClient" shadows a variable at a preceding level 
PHP Code:
#include <steamworks>
#include <swgm>

#pragma semicolon 1
#pragma newdecls required

public Plugin myinfo =
{
    
name "Steam Works Group Manager",
    
author "Someone",
    
description "Steam group membership check features for plugins",
    
version "1.9",
    
url "http://hlmod.ru | https://discord.gg/UfD3dSa"
};

Handle     g_hForward_OnLeaveCheck,         g_hForward_OnJoinCheckg_hTimer;
int         g_iGroupID,                     g_iAccountID[MAXPLAYERS+1];
Status     g_iPlayerStatus[MAXPLAYERS+1];

public 
APLRes AskPluginLoad2(Handle myselfbool latechar[] sErrorint err_max)
{
    
g_hForward_OnLeaveCheck CreateGlobalForward("SWGM_OnLeaveGroup",     ET_IgnoreParam_Cell);
    
g_hForward_OnJoinCheck     CreateGlobalForward("SWGM_OnJoinGroup",     ET_IgnoreParam_CellParam_Cell);

    
CreateNative("SWGM_InGroup",             Native_InGroup);
    
CreateNative("SWGM_InGroupOfficer",     Native_InGroupOfficer);
    
CreateNative("SWGM_GetPlayerStatus",     Native_GetPlayerStatus);
    
CreateNative("SWGM_CheckPlayer",         Native_CheckPlayer);
    
CreateNative("SWGM_IsPlayerValidated",     Native_IsPlayerValidated);

    
RegPluginLibrary("SWGM");

    return 
APLRes_Success;
}

public 
void OnPluginStart()
{
    
ConVar CVAR;

    (
CVAR CreateConVar("sm_swgm_groupid",        "4150535",    "Steam Group ID.",                        _,         true,         0.0)).AddChangeHook(OnGroupChange);
    
g_iGroupID CVAR.IntValue;
    
    (
CVAR CreateConVar("sm_swgm_timer",        "120.0",    "Interval beetwen steam group checks.",    _,         true,         0.0)).AddChangeHook(OnTimeChange);
    
g_hTimer CreateTimer(CVAR.FloatValue,         Check_Timer,                                     _,     TIMER_REPEAT        );
    
    
RegAdminCmd("sm_swgm_check",     CMD_Check,     ADMFLAG_ROOT);

    
AutoExecConfig(true"swgm""sourcemod/swgm");
}

public 
void OnGroupChange(ConVar convar, const char[] oldValue, const char[] newValue)
{
    
g_iGroupID convar.IntValue;
    
    for(
int i 1<= MaxClients; ++i)    if(IsClientInGame(i) && !IsFakeClient(i))
    {
        
SteamWorks_GetUserGroupStatusAuthID(GetSteamAccountID(i), g_iGroupID);
    }
}

public 
void OnTimeChange(ConVar convar, const char[] oldValue, const char[] newValue)
{
    if(
g_hTimerKillTimer(g_hTimer); g_hTimer null;
    
g_hTimer CreateTimer(convar.FloatValueCheck_Timer_TIMER_REPEAT);
}

public 
Action Check_Timer(Handle hTimer)
{
    
Check();
    return 
Plugin_Continue;
}

public 
void OnConfigsExecuted()
{
    if(
g_iGroupID == 0)
    {
        
LogError("[SWGM] Set yours Steam group ID. Group ID `0` is default value. Example: sm_swgm_groupid `ID`.");
    }
}

public 
Action CMD_Check(int iClientint args)
{
    
Check();
    
ReplyToCommand(iClient"[SWGM] All players have been checked.");
    return 
Plugin_Handled;
}

void Check()
{
    static 
int i;
    for (
1<= MaxClients; ++i) if(g_iPlayerStatus[i] != UNASSIGNED && g_iPlayerStatus[i] != LEAVER)
    {
        
SteamWorks_GetUserGroupStatusAuthID(g_iAccountID[i], g_iGroupID);
    }
}

public 
void OnClientPutInServer(int iClient)
{
    for (
int iClient 1iClient <= MaxClientsiClient++)
    if(
IsClientInGame(iClient))
    {
        if(
SWGM_IsPlayerValidated(iClient) && !SWGM_InGroup(iClient))
        {
            
Check();
            
KickClient(iClient"Sunucuda oynayabilmek icin steam grubumuza uye olmalisiniz.");
        }
    }
}

public 
void OnClientDisconnect(int iClient)
{
    
g_iAccountID[iClient] = 0;
    
g_iPlayerStatus[iClient] = UNASSIGNED;
}

public 
void SteamWorks_OnValidateClient(int iOwnerAuthIDint iAccountID)
{
    
SteamWorks_GetUserGroupStatusAuthID(iAccountIDg_iGroupID);
}

public 
void SteamWorks_OnClientGroupStatus(int iAccountIDint iGroupIDbool bIsMemberbool bIsOfficer)
{
    static 
int iClient;
    if(
iGroupID == g_iGroupID && (iClient GetUserFromAccountID(iAccountID)) != -1)
    {
        if(!
bIsMember && g_iPlayerStatus[iClient] > LEAVER)
        {
            
g_iPlayerStatus[iClient] = LEAVER;

            
Call_StartForward(g_hForward_OnLeaveCheck);
            
Call_PushCell(iClient);
            
Call_Finish();
        }
        else if(
bIsMember && (g_iPlayerStatus[iClient] == NO_GROUP || g_iPlayerStatus[iClient] == UNASSIGNED))
        {
            
g_iPlayerStatus[iClient] =  bIsOfficer OFFICER:MEMBER;
            
            
Call_StartForward(g_hForward_OnJoinCheck);
            
Call_PushCell(iClient);
            
Call_PushCell(bIsOfficer);
            
Call_Finish();
        }
    }
}

public 
int GetUserFromAccountID(int iAccountID)
{
    static 
int i;
    for (
1<= MaxClients; ++i) if(IsClientInGame(i) && !IsFakeClient(i))
    {
        if(
g_iAccountID[i] == 0)
        {
            
g_iPlayerStatus[i] = NO_GROUP;
            if((
g_iAccountID[i] = GetSteamAccountID(i)) == iAccountID)
            {
                return 
i;
            }
        }
        else if(
g_iAccountID[i] == iAccountID)
        {
            return 
i;
        }
    }
    return -
1;
}

public 
int Native_InGroup(Handle hPluginint iClient)
{
    return 
CheckClient((iClient GetNativeCell(1)), "InGroup") ? (g_iPlayerStatus[iClient] > LEAVER):false;
}

public 
int Native_InGroupOfficer(Handle hPluginint iClient)
{
    return 
CheckClient((iClient GetNativeCell(1)), "InGroupOfficer") ? (g_iPlayerStatus[iClient] == OFFICER):false;
}

public 
int Native_GetPlayerStatus(Handle hPluginint iClient)
{
    return 
CheckClient((iClient GetNativeCell(1)), "GetPlayerStatus"false) ? view_as<int>(g_iPlayerStatus[iClient]):-1;
}

public 
int Native_CheckPlayer(Handle hPluginint iClient)
{
    if (
CheckClient((iClient GetNativeCell(1)), "CheckPlayer"false))
    {
        
SteamWorks_GetUserGroupStatusAuthID(g_iAccountID[iClient], g_iGroupID);
    }
}

public 
int Native_IsPlayerValidated(Handle hPluginint iClient)
{
    return ((
iClient GetNativeCell(1)) > || iClient <= MaxClients) ? view_as<int>((g_iPlayerStatus[iClient] != UNASSIGNED)):
                                                                        
ThrowNativeError(SP_ERROR_NATIVE
                                                                        
"[IsPlayerValidated] Client index %i is invalid."
                                                                        
iClient);
}


bool CheckClient(int iClient, const char[] sFunctionbool bCheckValidation true)
{
    static 
int iClientError;
    static const 
char sError[][] = {    "invalid"
                                        
"not validated"
                                        
"a bot"                };

    if((
iClientError Function_GetClientError(iClientbCheckValidation)) != 3)    
    {
                                        
ThrowNativeError(SP_ERROR_NATIVE
                                        
"[%s] Client index %i is %s."
                                        
sFunctioniClient
                                        
sError[iClientError]);
    }
    return 
true;
}

int Function_GetClientError(int iClientbool bCheckValidation)
{
    if (
iClient || iClient MaxClients)                                                return 0;
    else if (
bCheckValidation && g_iPlayerStatus[iClient] == UNASSIGNED)                    return 1;
    else if (
IsFakeClient(iClient))                                                            return 2;
    return 
3;

__________________

Last edited by alphaearth; 04-18-2019 at 09:46.
alphaearth is offline
 



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 11:28.


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