AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   purpose of ackSignal() in adminslots (https://forums.alliedmods.net/showthread.php?t=107781)

Owyn 10-30-2009 08:42

purpose of ackSignal() in adminslots
 
why do you need to check if client_cmd reaches the client, why not just kick? *just wondering to increase my knowledge:crab:

hleV 10-30-2009 09:02

Re: ackSignal() in adminslots
 
What are you talking about? Give an example.

Owyn 10-30-2009 09:19

Re: ackSignal() in adminslots
 
PHP Code:

/* AMX Mod X
*   Slots Reservation Plugin
*
* by the AMX Mod X Development Team
*  originally developed by OLO
*
* This file is part of AMX Mod X.
*
*
*  This program is free software; you can redistribute it and/or modify it
*  under the terms of the GNU General Public License as published by the
*  Free Software Foundation; either version 2 of the License, or (at
*  your option) any later version.
*
*  This program is distributed in the hope that it will be useful, but
*  WITHOUT ANY WARRANTY; without even the implied warranty of
*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
*  General Public License for more details.
*
*  You should have received a copy of the GNU General Public License
*  along with this program; if not, write to the Free Software Foundation,
*  Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*  In addition, as a special exception, the author gives permission to
*  link the code of this program with the Half-Life Game Engine ("HL
*  Engine") and Modified Game Libraries ("MODs") developed by Valve,
*  L.L.C ("Valve"). You must obey the GNU General Public License in all
*  respects for all of the code used other than the HL Engine and MODs
*  from Valve. If you modify this file, you may extend this exception
*  to your version of the file, but you are not obligated to do so. If
*  you do not wish to do so, delete this exception statement from your
*  version.
*/

#include <amxmodx>
#include <amxmisc>

new g_cmdLoopback[16]
new 
g_ResPtr
new g_HidePtr

public plugin_init()
{
    
register_plugin("Slots Reservation"AMXX_VERSION_STR"AMXX Dev Team")
    
register_dictionary("adminslots.txt")
    
register_dictionary("common.txt")
    
g_ResPtr register_cvar("amx_reservation""0")
    
g_HidePtr register_cvar("amx_hideslots""0")
    
    
format(g_cmdLoopback15"amxres%c%c%c%c"random_num('A''Z'), random_num('A''Z'), random_num('A''Z'), random_num('A''Z'))
    
register_clcmd(g_cmdLoopback"ackSignal")
}

public 
plugin_cfg()
{
    
set_task(3.0"MapLoaded")
}

public 
MapLoaded()
{
    if (!
get_pcvar_num(g_HidePtr))
        return

    new 
maxplayers get_maxplayers()
    new 
players get_playersnum(1)
    new 
limit maxplayers get_pcvar_num(g_ResPtr)
    
setVisibleSlots(playersmaxplayerslimit)
}

public 
ackSignal(id)
{
    new 
lReason[64]
    
format(lReason63"%L"id"DROPPED_RES")
    
server_cmd("kick #%d ^"%s^""get_user_userid(id), lReason)
    
    return 
PLUGIN_HANDLED
}

public 
client_authorized(id)
{
     
    new 
maxplayers get_maxplayers()
    new 
players get_playersnum(1)
    new 
limit maxplayers get_pcvar_num(g_ResPtr)
    
  
    if ( 
access(idADMIN_RESERVATION) || (players <= limit) )
    {
        if (
get_pcvar_num(g_HidePtr) == 1)
            
setVisibleSlots(playersmaxplayerslimit)
        return 
PLUGIN_CONTINUE
    
}
    
    
client_cmd(id"%s"g_cmdLoopback)

    return 
PLUGIN_HANDLED
}


public 
client_disconnect(id)
{
    if (!
get_pcvar_num(g_HidePtr))
        return 
PLUGIN_CONTINUE

    
new maxplayers get_maxplayers()
    
    
setVisibleSlots(get_playersnum(1) - 1maxplayersmaxplayers get_pcvar_num(g_ResPtr))
    return 
PLUGIN_CONTINUE
}

setVisibleSlots(playersmaxplayerslimit)
{
    new 
num players 1

    
if (players == maxplayers)
        
num maxplayers
    
else if (players limit)
        
num limit
    
    set_cvar_num
("sv_visiblemaxplayers"num)



ConnorMcLeod 10-31-2009 05:20

Re: ackSignal() in adminslots
 
I also would like to know.
client_cmd delays the kick, but i don't see why it's needed here.

joropito 10-31-2009 07:55

Re: ackSignal() in adminslots
 
Quote:

Originally Posted by ConnorMcLeod (Post 976655)
I also would like to know.
client_cmd delays the kick, but i don't see why it's needed here.

Maybe because client_cmd ensures that the client was authenticated by amxx (if it's a player with reserved slot)

xPaw 10-31-2009 09:16

Re: purpose of ackSignal() in adminslots
 
No it doesnt

PHP Code:

client_cmd(id"%s"g_cmdLoopback

PHP Code:

public ackSignal(id)
{
    new 
lReason[64]
    
format(lReason63"%L"id"DROPPED_RES")
    
server_cmd("kick #%d ^"%s^""get_user_userid(id), lReason)
    
    return 
PLUGIN_HANDLED



joropito 10-31-2009 09:29

Re: purpose of ackSignal() in adminslots
 
Quote:

Originally Posted by xPaw (Post 976750)
No it doesnt

PHP Code:

client_cmd(id"%s"g_cmdLoopback

PHP Code:

public ackSignal(id)
{
    new 
lReason[64]
    
format(lReason63"%L"id"DROPPED_RES")
    
server_cmd("kick #%d ^"%s^""get_user_userid(id), lReason)
    
    return 
PLUGIN_HANDLED



I saw that but what I'm saying is, for a client cmd to work fine the player must be authenticated in amxx before use it so I guess it's one way to ensures that.

Owyn 10-31-2009 11:42

Re: purpose of ackSignal() in adminslots
 
what is "authentication in amxx" ? O_o

+you can kick everyone who is on your server

hleV 10-31-2009 15:49

Re: purpose of ackSignal() in adminslots
 
You can kick people by name or by sending SVC_DISCONNECT. People don't get their ID so fast.

Exolent[jNr] 10-31-2009 16:25

Re: purpose of ackSignal() in adminslots
 
I think it is because client_authorized may be called before player enters the server.
Therefore, they make the player execute the command so that if the player isn't connected yet, the command won't be issued and the server won't kick a non-existing player.


All times are GMT -4. The time now is 17:34.

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