Raised This Month: $ Target: $400
 0% 

Voteban Need Help


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
YKH =]
Senior Member
Join Date: Sep 2008
Location: Hong Kong
Old 03-13-2009 , 23:03   Voteban Need Help
Reply With Quote #1

I want to edit this plguin that player can't voteban has ADMIN_RESERVATION

player. I don't know how to check if the player has this flag(b).

Here are the code that can't work on my server. Would someone like to help me?

PHP Code:
#include <amxmodx>
#include <amxmisc>

#define MAX_players 32
#define MAX_menudata 1024

new ga_PlayerName[MAX_players][32]
new 
ga_PlayerAuthID[MAX_players][35]
new 
ga_PlayerID[MAX_players]
new 
ga_PlayerIP[MAX_players][16]
new 
ga_MenuData[MAX_menudata]
new 
ga_Choice[2]
new 
gi_VoteStarter
new gi_MenuPosition
new gi_Sellection
new gi_TotalPlayers
new gi_SysTimeOffset 0
new i
//pcvars
new gi_LastTime
new gi_DelayTime
new gf_Ratio
new gf_MinVoters
new gf_BF_Ratio
new gi_BanTime
new gi_Disable
new gi_BanType


public plugin_init()
{
  
register_plugin("voteban menu","1.2","hjvl")
  
register_clcmd("say /voteban","SayIt" )
  
register_menucmd(register_menuid("ChoosePlayer"), 1023"ChooseMenu")
  
register_menucmd(register_menuid("VoteMenu"), 1023"CountVotes")

  
gi_LastTime=register_cvar("amx_voteban_lasttime","0")
  
gi_DelayTime=register_cvar("amxx_voteban_delaytime","600")
  
gf_Ratio=register_cvar("amxx_voteban_ratio","0.50")
  
gf_MinVoters=register_cvar("amxx_voteban_minvoters","0.0")
  
gf_BF_Ratio=register_cvar("amxx_voteban_bf_ratio","0.0")
  
gi_BanTime=register_cvar("amxx_voteban_bantime","5")
  
gi_Disable=register_cvar("amxx_voteban_disable","0")
  
gi_BanType=register_cvar("amxx_voteban_type","0")
}

public 
SayIt(id)
{
  if(
get_pcvar_num(gi_Disable))
  {
    
client_print(id,print_chat,"[AMXX]amx_votaban disabled")
    return 
0
  
}

  new 
Elapsed=get_systime(gi_SysTimeOffset) - get_pcvar_num(gi_LastTime)
  new 
Delay=get_pcvar_num(gi_DelayTime)

  if((
Delay Elapsed) && get_user_flags(id) != ADMIN_IMMUNITY)
  {
    new 
seconds Delay Elapsed
    client_print
(id,print_chat,"[AMXX] You have to wait %d seconds before a new voteban can be started"seconds)
    return 
0
  
}

  
get_players(ga_PlayerIDgi_TotalPlayers)
  for(
i=0i<gi_TotalPlayersi++)
  {
    new 
TempID ga_PlayerID[i]
    if(
get_user_flags(TempID) & ADMIN_IMMUNITY)
    {
      if(
get_user_flags(id) & ADMIN_IMMUNITY)
      {
        if(
TempID == id)
        {
          
gi_VoteStarter=i
          get_user_name
TempIDga_PlayerName[i], 31 )
      
get_user_authidTempIDga_PlayerAuthID[i], 34 )
      
get_user_ipTempIDga_PlayerIP[i], 15)
      }
      }
      else
      {
      
client_print(id,print_chat,"有管理員在線,功能關閉。")
      return 
0
      
}
    }
    else
    {
      if(
TempID == id)
        
gi_VoteStarter=i
      get_user_name
TempIDga_PlayerName[i], 31 )
      
get_user_authidTempIDga_PlayerAuthID[i], 34 )
      
get_user_ipTempIDga_PlayerIP[i], 15)
    }
  }
  
gi_MenuPosition 0
  ShowPlayerMenu
(id)
  return 
0
}

public 
ShowPlayerMenu(id)
{
  new 
arrayloc 0
  
new keys = (1<<9)

  
arrayloc format(ga_MenuData,(MAX_menudata-1),"voteban menu ^n")
  for(
i=0i<8i++)
   if( 
gi_TotalPlayers>(gi_MenuPosition+i) )
   {
     
arrayloc += format(ga_MenuData[arrayloc],(MAX_menudata-1-arrayloc),"%d. %s^n"i+1ga_PlayerName[gi_MenuPosition+i])
     
keys |= (1<<i)
   }
  if( 
gi_TotalPlayers>(gi_MenuPosition+8) )
  {
    
arrayloc += format(ga_MenuData[arrayloc],(MAX_menudata-1-arrayloc),"^n9. More")
    
keys |= (1<<8)
  }
  
arrayloc += format(ga_MenuData[arrayloc],(MAX_menudata-1-arrayloc),"^n0. Back/exit")

  
show_menu(idkeysga_MenuData20"ChoosePlayer")
  return 
PLUGIN_HANDLED 
}

public 
ChooseMenu(idkey)
{
  switch(
key)
  {
    case 
8:
    {
      
gi_MenuPosition=gi_MenuPosition+8
      ShowPlayerMenu
(id)
    }
    case 
9:
    {
      if(
gi_MenuPosition>=8)
      {
        
gi_MenuPosition=gi_MenuPosition-8
        ShowPlayerMenu
(id)
      }
      else
        return 
0
    
}
    default:
    {
        
gi_Sellection=gi_MenuPosition+key
    
new Now=get_systime(gi_SysTimeOffset)
           
set_pcvar_num(gi_LastTimeNow)
      if((
get_user_flags(gi_Sellection) & ADMIN_RESERVATION))
      {
        
client_print(id,print_chat,"[TiG] You can't voteban this player")
            return 
PLUGIN_HANDLED;
      }
           
run_vote()
           return 
0
    
}
  }
  return 
PLUGIN_HANDLED
}

public 
run_vote()
{    
  
log_amx("Vote ban started by %s for %s %s"ga_PlayerName[gi_VoteStarter], ga_PlayerName[gi_Sellection], ga_PlayerAuthID[gi_Sellection])
  
format(ga_MenuData,(MAX_menudata-1),"Ban %s for %d minutes?^n1. Yes^n2. No",ga_PlayerName[gi_Sellection], get_pcvar_num(gi_BanTime))
  
ga_Choice[0] = 0
  ga_Choice
[1] = 0
  show_menu
0, (1<<0)|(1<<1), ga_MenuData15"VoteMenu" )
  
set_task(15.0,"outcom")
  return 
0
}

public 
CountVotes(idkey)
{
  ++
ga_Choice[key]
  return 
PLUGIN_HANDLED
}

public 
outcom()
{
  new 
TotalVotes ga_Choice[0] + ga_Choice[1]
  new 
Float:result = (float(ga_Choice[0]) / float(TotalVotes))

  if( 
get_pcvar_float(gf_MinVoters) >= ( float(TotalVotes) / float(gi_TotalPlayers) ) )
  {
    
client_print(0,print_chat,"[AMXX] Not enough voters to ban %s!"ga_PlayerName[gi_Sellection])
    return 
0
  
}
  else
  {
    if( 
result get_pcvar_float(gf_BF_Ratio) )
    {
      
client_print(0,print_chat,"[AMXX] The vote back fired at %s, he is banned for %d minutes"ga_PlayerName[gi_VoteStarter], get_pcvar_num(gi_BanTime))
      
ActualBan(gi_VoteStarter)
      
log_amx("[AMXX] The vote back fired at %s, he is banned for %d minutes"ga_PlayerName[gi_VoteStarter], get_pcvar_num(gi_BanTime))
    }

    if( 
result >= get_pcvar_float(gf_Ratio) )
    {
      
client_print(0,print_chat,"[AMXX] The vote succeeded, %s is banned for %d minutes"ga_PlayerName[gi_Sellection], get_pcvar_num(gi_BanTime))
      
log_amx("[AMXX] The vote succeeded: %s is banned for %d minutes"ga_PlayerAuthID[gi_Sellection], get_pcvar_num(gi_BanTime))
      
ActualBan(gi_Sellection)
    }
    else
    {
      
client_print(0,print_chat,"[AMXX] The vote did not succeeded!")
      
log_amx("[AMXX] The voteban dit not sucseed.")
    }
  }
  
client_print(0,print_chat,"A total of %d players, %d voted yes."gi_TotalPlayersga_Choice[0])

  return 
0
}

public 
ActualBan(Selected)
{
  new 
Type get_pcvar_num(gi_BanType
  switch(
Type)
  {
    case 
1:
      
server_cmd("addip %d %s"get_pcvar_num(gi_BanTime), ga_PlayerIP[Selected])
    case 
2:
      
server_cmd("amx_ban %d %s Voteban"get_pcvar_num(gi_BanTime), ga_PlayerAuthID[Selected])
    default:
      
server_cmd("banid %d %s kick"get_pcvar_num(gi_BanTime), ga_PlayerAuthID[Selected])
  }
  return 


__________________
Approved Plugins

[ZP] Effect Plugins :
Damage Effect
Real Death

Last edited by YKH =]; 03-14-2009 at 00:04.
YKH =] is offline
Exolent[jNr]
Veteran Member
Join Date: Feb 2007
Location: Tennessee
Old 03-13-2009 , 23:06   Re: Voteban Need Help
Reply With Quote #2

It's already done.
How is there a problem?
__________________
No private work or selling mods.
Quote:
Originally Posted by xPaw View Post
I love you exolent!
Exolent[jNr] is offline
YKH =]
Senior Member
Join Date: Sep 2008
Location: Hong Kong
Old 03-14-2009 , 00:02   Re: Voteban Need Help
Reply With Quote #3

Quote:
Originally Posted by Exolent[jNr] View Post
It's already done.
How is there a problem?
It bans every player (B flag also get banned, the plugin didn't check...)
__________________
Approved Plugins

[ZP] Effect Plugins :
Damage Effect
Real Death
YKH =] is offline
Exolent[jNr]
Veteran Member
Join Date: Feb 2007
Location: Tennessee
Old 03-14-2009 , 01:09   Re: Voteban Need Help
Reply With Quote #4

Try this:

PHP Code:
#include <amxmodx>
#include <amxmisc>

#define MAX_players 32
#define MAX_menudata 1024

new const g_dont_vote_these_steamids[][] =
{
    
"STEAM_0:1:2345",
    
"STEAM_0:1:23456"
    
// etc.
};

new 
ga_PlayerName[MAX_players][32]
new 
ga_PlayerAuthID[MAX_players][35]
new 
ga_PlayerID[MAX_players]
new 
ga_PlayerIP[MAX_players][16]
new 
ga_MenuData[MAX_menudata]
new 
ga_Choice[2]
new 
gi_VoteStarter
new gi_MenuPosition
new gi_Sellection
new gi_TotalPlayers
new gi_SysTimeOffset 0
new i
//pcvars
new gi_LastTime
new gi_DelayTime
new gf_Ratio
new gf_MinVoters
new gf_BF_Ratio
new gi_BanTime
new gi_Disable
new gi_BanType


public plugin_init()
{
    
register_plugin("voteban menu","1.2","hjvl")
    
register_clcmd("say /voteban","SayIt" )
    
register_menucmd(register_menuid("ChoosePlayer"), 1023"ChooseMenu")
    
register_menucmd(register_menuid("VoteMenu"), 1023"CountVotes")
    
    
gi_LastTime=register_cvar("amx_voteban_lasttime","0")
    
gi_DelayTime=register_cvar("amxx_voteban_delaytime","600")
    
gf_Ratio=register_cvar("amxx_voteban_ratio","0.50")
    
gf_MinVoters=register_cvar("amxx_voteban_minvoters","0.0")
    
gf_BF_Ratio=register_cvar("amxx_voteban_bf_ratio","0.0")
    
gi_BanTime=register_cvar("amxx_voteban_bantime","5")
    
gi_Disable=register_cvar("amxx_voteban_disable","0")
    
gi_BanType=register_cvar("amxx_voteban_type","0")
}

public 
SayIt(id)
{
    if(
get_pcvar_num(gi_Disable))
    {
        
client_print(id,print_chat,"[AMXX]amx_votaban disabled")
        return 
0
    
}
    
    new 
Elapsed=get_systime(gi_SysTimeOffset) - get_pcvar_num(gi_LastTime)
    new 
Delay=get_pcvar_num(gi_DelayTime)
    
    if((
Delay Elapsed) && get_user_flags(id) != ADMIN_IMMUNITY)
    {
        new 
seconds Delay Elapsed
        client_print
(id,print_chat,"[AMXX] You have to wait %d seconds before a new voteban can be started"seconds)
        return 
0
    
}
    
    
get_players(ga_PlayerIDgi_TotalPlayers)
    for(
i=0i<gi_TotalPlayersi++)
    {
        new 
TempID ga_PlayerID[i]
        if(
get_user_flags(TempID) & ADMIN_IMMUNITY)
        {
            if(
get_user_flags(id) & ADMIN_IMMUNITY)
            {
                if(
TempID == id)
                {
                    
gi_VoteStarter=i
                    get_user_name
TempIDga_PlayerName[i], 31 )
                    
get_user_authidTempIDga_PlayerAuthID[i], 34 )
                    
get_user_ipTempIDga_PlayerIP[i], 15)
                }
            }
            else
            {
                
client_print(id,print_chat,"??????,?????")
                return 
0
            
}
        }
        else
        {
            if(
TempID == id)
            {
                
gi_VoteStarter=i
                get_user_name
TempIDga_PlayerName[i], 31 )
                
get_user_authidTempIDga_PlayerAuthID[i], 34 )
                
get_user_ipTempIDga_PlayerIP[i], 15)
            }
        }
        
gi_MenuPosition 0
        ShowPlayerMenu
(id)
        return 
0
    
}
    return 
PLUGIN_HANDLED;
}

public 
ShowPlayerMenu(id)
{
    new 
arrayloc 0
    
new keys = (1<<9)
    
    
arrayloc format(ga_MenuData,(MAX_menudata-1),"voteban menu ^n")
    for(
i=0i<8i++)
    {
        if( 
gi_TotalPlayers>(gi_MenuPosition+i) )
        {
            
arrayloc += format(ga_MenuData[arrayloc],(MAX_menudata-1-arrayloc),"%d. %s^n"i+1ga_PlayerName[gi_MenuPosition+i])
            
keys |= (1<<i)
        }
    }
    if( 
gi_TotalPlayers>(gi_MenuPosition+8) )
    {
        
arrayloc += format(ga_MenuData[arrayloc],(MAX_menudata-1-arrayloc),"^n9. More")
        
keys |= (1<<8)
    }
    
arrayloc += format(ga_MenuData[arrayloc],(MAX_menudata-1-arrayloc),"^n0. Back/exit")
    
    
show_menu(idkeysga_MenuData20"ChoosePlayer")
    return 
PLUGIN_HANDLED 
}

public 
ChooseMenu(idkey)
{
    switch(
key)
    {
        case 
8:
        {
            
gi_MenuPosition=gi_MenuPosition+8
            ShowPlayerMenu
(id)
        }
        case 
9:
        {
            if(
gi_MenuPosition>=8)
            {
                
gi_MenuPosition=gi_MenuPosition-8
                ShowPlayerMenu
(id)
            }
            else
                return 
0
        
}
        default:
        {
            
gi_Sellection=gi_MenuPosition+key
            
new Now=get_systime(gi_SysTimeOffset)
            
set_pcvar_num(gi_LastTimeNow)
            if((
get_user_flags(ga_PlayerID[gi_Sellection]) & ADMIN_RESERVATION))
            {
                
client_print(id,print_chat,"[TiG] You can't voteban this player")
                return 
PLUGIN_HANDLED;
            }
            
            new 
steamid[35];
            
get_user_authid(ga_PlayerID[gi_Sellection], steamidsizeof(steamid) - 1);
            for( new 
0sizeof(g_dont_vote_these_steamids); i++ )
            {
                if( !
strcmp(steamidg_dont_vote_these_steamids[i]) ) return PLUGIN_HANDLED;
            }
            
run_vote()
            return 
0
        
}
    }
    return 
PLUGIN_HANDLED
}

public 
run_vote()
{    
    
log_amx("Vote ban started by %s for %s %s"ga_PlayerName[gi_VoteStarter], ga_PlayerName[gi_Sellection], ga_PlayerAuthID[gi_Sellection])
    
format(ga_MenuData,(MAX_menudata-1),"Ban %s for %d minutes?^n1. Yes^n2. No",ga_PlayerName[gi_Sellection], get_pcvar_num(gi_BanTime))
    
ga_Choice[0] = 0
    ga_Choice
[1] = 0
    show_menu
0, (1<<0)|(1<<1), ga_MenuData15"VoteMenu" )
    
set_task(15.0,"outcom")
    return 
0
}

public 
CountVotes(idkey)
{
    ++
ga_Choice[key]
    return 
PLUGIN_HANDLED
}

public 
outcom()
{
    new 
TotalVotes ga_Choice[0] + ga_Choice[1]
    new 
Float:result = (float(ga_Choice[0]) / float(TotalVotes))
    
    if( 
get_pcvar_float(gf_MinVoters) >= ( float(TotalVotes) / float(gi_TotalPlayers) ) )
    {
        
client_print(0,print_chat,"[AMXX] Not enough voters to ban %s!"ga_PlayerName[gi_Sellection])
        return 
0
    
}
    else
    {
        if( 
result get_pcvar_float(gf_BF_Ratio) )
        {
            
client_print(0,print_chat,"[AMXX] The vote back fired at %s, he is banned for %d minutes"ga_PlayerName[gi_VoteStarter], get_pcvar_num(gi_BanTime))
            
ActualBan(gi_VoteStarter)
            
log_amx("[AMXX] The vote back fired at %s, he is banned for %d minutes"ga_PlayerName[gi_VoteStarter], get_pcvar_num(gi_BanTime))
        }
        
        if( 
result >= get_pcvar_float(gf_Ratio) )
        {
            
client_print(0,print_chat,"[AMXX] The vote succeeded, %s is banned for %d minutes"ga_PlayerName[gi_Sellection], get_pcvar_num(gi_BanTime))
            
log_amx("[AMXX] The vote succeeded: %s is banned for %d minutes"ga_PlayerAuthID[gi_Sellection], get_pcvar_num(gi_BanTime))
            
ActualBan(gi_Sellection)
        }
        else
        {
            
client_print(0,print_chat,"[AMXX] The vote did not succeeded!")
            
log_amx("[AMXX] The voteban dit not sucseed.")
        }
    }
    
client_print(0,print_chat,"A total of %d players, %d voted yes."gi_TotalPlayersga_Choice[0])
    
    return 
0
}

public 
ActualBan(Selected)
{
    new 
Type get_pcvar_num(gi_BanType
    switch(
Type)
    {
        case 
1:
            
server_cmd("addip %d %s"get_pcvar_num(gi_BanTime), ga_PlayerIP[Selected])
        case 
2:
            
server_cmd("amx_ban %d %s Voteban"get_pcvar_num(gi_BanTime), ga_PlayerAuthID[Selected])
        default:
            
server_cmd("banid %d %s kick"get_pcvar_num(gi_BanTime), ga_PlayerAuthID[Selected])
    }
    return 


__________________
No private work or selling mods.
Quote:
Originally Posted by xPaw View Post
I love you exolent!

Last edited by Exolent[jNr]; 03-15-2009 at 21:04.
Exolent[jNr] is offline
YKH =]
Senior Member
Join Date: Sep 2008
Location: Hong Kong
Old 03-15-2009 , 05:21   Re: Voteban Need Help
Reply With Quote #5

Quote:
Originally Posted by Exolent[jNr] View Post
Try this:

PHP Code:
#include <amxmodx>
#include <amxmisc>

#define MAX_players 32
#define MAX_menudata 1024

new ga_PlayerName[MAX_players][32]
new 
ga_PlayerAuthID[MAX_players][35]
....

Thank you! it works

But if i want to check a steam id that wouldn't be vote, which code can help me?
__________________
Approved Plugins

[ZP] Effect Plugins :
Damage Effect
Real Death
YKH =] is offline
Exolent[jNr]
Veteran Member
Join Date: Feb 2007
Location: Tennessee
Old 03-15-2009 , 21:04   Re: Voteban Need Help
Reply With Quote #6

Try it now.
Also, I fixed the horrible indentions.
__________________
No private work or selling mods.
Quote:
Originally Posted by xPaw View Post
I love you exolent!
Exolent[jNr] is offline
Old 07-27-2010, 18:35
Alb0
This message has been deleted by Alb0.
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 09:00.


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