Raised This Month: $ Target: $400
 0% 

Can someone help me?


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
ditmesteam
Senior Member
Join Date: Oct 2009
Old 01-28-2010 , 14:45   Can someone help me?
Reply With Quote #1

The press 9 button does not show up, but it works, and the 0 for exit button does not show up, but it works, very annoying for players who dont know the menu. Can someone can help me fix it?
Thank you in advanced!

Code:
#include <amxmodx>
#include <amxmisc>
#define PLUGIN "Vote Ban"
#define VERSION "1.0"
#define AUTHOR "Alka"
#define MAX_PLAYERS 33
#define MENU_KEYS (1<<0 | 1<<1 | 1<<2 | 1<<3 | 1<<4 | 1<<5 | 1<<6 | 1<<7 | 1<<8 | 1<<9)
#define MENU_SLOTS 8
new g_iMenuPage[MAX_PLAYERS];
new g_iVotedPlayers[MAX_PLAYERS];
new g_iVotes[MAX_PLAYERS];
new g_szVoteReason[MAX_PLAYERS][64];
new g_iPlayers[MAX_PLAYERS - 1];
new g_iNum;
new g_iMsgidSayText;
enum {
 CVAR_PERCENT = 0,
 CVAR_BANTYPE,
 CVAR_BANTIME
};
new g_szCvarName[][] = {
 "voteban_percent",
 "voteban_type",
 "voteban_time"
};
new g_szCvarValue[][] = {
 "80",
 "1",
 "100"
};
new g_iPcvar[3];
new g_szLogFile[64];
public plugin_init() {
 
 register_plugin(PLUGIN, VERSION, AUTHOR);
 
 register_saycmd("voteban", "Cmd_VoteBan", -1, "");
 register_clcmd("_voteban_reason", "Cmd_VoteBanReason", -1, "");
 
 register_menucmd(register_menuid("\rVOTEBAN \yMenu:"), MENU_KEYS, "Menu_VoteBan");
 
 for(new i = 0 ; i < 3 ; i++)
 {
  g_iPcvar[i] = register_cvar(g_szCvarName[i], g_szCvarValue[i]);
 }
 g_iMsgidSayText = get_user_msgid("SayText");
 
 new szLogInfo[] = "amx_logdir";
 get_localinfo(szLogInfo, g_szLogFile, charsmax(g_szLogFile));
 add(g_szLogFile, charsmax(g_szLogFile), "/voteban");
 
 if(!dir_exists(g_szLogFile))
  mkdir(g_szLogFile);
 
 new szTime[32];
 get_time("%d-%m-%Y", szTime, charsmax(szTime));
 format(g_szLogFile, charsmax(g_szLogFile), "%s/%s.log", g_szLogFile, szTime);
}
public client_disconnect(id)
{
 if(g_iVotedPlayers[id])
 {
  get_players(g_iPlayers, g_iNum, "h");
 
  for(new i = 0 ; i < g_iNum ; i++)
  {
   if(g_iVotedPlayers[id] & (1 << g_iPlayers[i]))
   {
    g_iVotes[g_iPlayers[i]]--;
   }
  }
  g_iVotedPlayers[id] = 0;
 }
}
public Cmd_VoteBan(id)
{
 get_players(g_iPlayers, g_iNum, "h");
 
 if(g_iNum < 3)
 {
  client_printc(id, "\g> \dThis command is unavailable! Need at least 3 players.");
  return PLUGIN_HANDLED;
 }
 ShowBanMenu(id, g_iMenuPage[id] = 0);
 return PLUGIN_CONTINUE;
}
public ShowBanMenu(id, iPos)
{
 static i, iPlayer, szName[32];
 static szMenu[256], iCurrPos; iCurrPos = 0;
 static iStart, iEnd; iStart = iPos * MENU_SLOTS;
 static iKeys;
 
 get_players(g_iPlayers, g_iNum, "h");
 
 if(iStart >= g_iNum)
 {
  iStart = iPos = g_iMenuPage[id] = 0;
 }
 
 static iLen;
 iLen = formatex(szMenu, charsmax(szMenu), "\rVOTEBAN \yMenu:^n^n");
 
 iEnd = iStart + MENU_SLOTS;
 iKeys = MENU_KEY_0;
 
 if(iEnd > g_iNum)
 {
  iEnd = g_iNum;
 }
 
 for(i = iStart ; i < iEnd ; i++)
 {
  iPlayer = g_iPlayers[i];
  get_user_name(iPlayer, szName, charsmax(szName));
 
  iKeys |= (1 << iCurrPos++);
  iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r%d\w.%s \d(\r%d%%\d)^n", iCurrPos, szName, get_percent(g_iVotes[iPlayer], g_iNum));
 }
 
 if(iEnd != g_iNum)
 {
  formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\r9\w.Next ^n\r0\w.%s", iPos ? "Back" : "Exit");
  iKeys |= MENU_KEY_9;
 }
 else
 {
  formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\r0\w.%s", iPos ? "Back" : "Exit");
 }
 show_menu(id, iKeys, szMenu, -1, "");
 return PLUGIN_HANDLED;
}
public Menu_VoteBan(id, key)
{
 switch(key)
 {
  case 8:
  {
   ShowBanMenu(id, ++g_iMenuPage[id]);
  }
  case 9:
  {
   if(!g_iMenuPage[id])
    return PLUGIN_HANDLED;
 
   ShowBanMenu(id, --g_iMenuPage[id]);
  }
  default: {
   static iPlayer;
   iPlayer = g_iPlayers[g_iMenuPage[id] * MENU_SLOTS + key];
 
   if(!is_user_connected(iPlayer))
   {
    ShowBanMenu(id, g_iMenuPage[id]);
    return PLUGIN_HANDLED;
   }
   if(iPlayer == id)
   {
    client_print(id, print_center, "*You cannot voteban yourself!*");
    ShowBanMenu(id, g_iMenuPage[id]);
 
    return PLUGIN_HANDLED;
   }
   if(g_iVotedPlayers[id] & (1 << iPlayer))
   {
    client_print(id, print_center, "*You already votebanned this player!*");
    ShowBanMenu(id, g_iMenuPage[id]);
 
    return PLUGIN_HANDLED;
   }
   g_iVotes[iPlayer]++;
   g_iVotedPlayers[id] |= (1 << iPlayer);
 
   static szName[2][32];
   get_user_name(id, szName[0], charsmax(szName[]));
   get_user_name(iPlayer, szName[1], charsmax(szName[]));
 
   client_printc(0, "\g> \dPlayer \t%s \dvotebanned \t%s\d!", szName[0], szName[1]);
 
   CheckVotes(iPlayer, id);
   client_cmd(id, "messagemode _voteban_reason");
 
   ShowBanMenu(id, g_iMenuPage[id]);
  }
 }
 return PLUGIN_HANDLED;
}
public Cmd_VoteBanReason(id)
{
 if(!g_iVotedPlayers[id])
  return PLUGIN_HANDLED;
 
 new szArgs[64];
 read_argv(1, szArgs, charsmax(szArgs));
 
 if(szArgs[0])
 {
  formatex(g_szVoteReason[id], charsmax(g_szVoteReason[]), szArgs);
 }
 return PLUGIN_HANDLED;
}
public CheckVotes(id, voter)
{
 get_players(g_iPlayers, g_iNum, "h");
 new iPercent = get_percent(g_iVotes[id], g_iNum);
 
 if(iPercent >= get_pcvar_num(g_iPcvar[CVAR_PERCENT]))
 {
  switch(get_pcvar_num(g_iPcvar[CVAR_BANTYPE]))
  {
   case 1:
   {
    new szAuthid[32];
    get_user_authid(id, szAuthid, charsmax(szAuthid));
    server_cmd("kick #%d;wait;wait;wait;banid %d ^"%s^";wait;wait;wait;writeid", get_user_userid(id), get_pcvar_num(g_iPcvar[CVAR_BANTIME]), szAuthid);
   }
   case 2:
   {
    new szIp[32];
    get_user_ip(id, szIp, charsmax(szIp), 1);
    server_cmd("kick #%d;wait;wait;wait;addip %d ^"%s^";wait;wait;wait;writeip", get_user_userid(id), get_pcvar_num(g_iPcvar[CVAR_BANTIME]), szIp);
   }
  }
  g_iVotes[id] = 0;
 
  new szName[2][32];
  get_user_name(id, szName[0], charsmax(szName[]));
  get_user_name(id, szName[1], charsmax(szName[]));
  client_printc(0, "\g> \dPlayer \t%s \dhas been banned for \g%d\dmin. due voteban!", szName[0], get_pcvar_num(g_iPcvar[CVAR_BANTIME]));
 
  log_to_file(g_szLogFile, "Player '%s' voted for banning '%s' for: %s", szName[1], szName[0], g_szVoteReason[voter]);
 }
}
stock get_percent(value, tvalue)
{     
 return floatround(floatmul(float(value) / float(tvalue) , 100.0));
}
stock register_saycmd(saycommand[], function[], flags = -1, info[])
{
 static szTemp[64];
 formatex(szTemp, charsmax(szTemp), "say %s", saycommand);
 register_clcmd(szTemp, function, flags, info);
 formatex(szTemp, charsmax(szTemp), "say_team %s", saycommand);
 register_clcmd(szTemp, function, flags, info);
 formatex(szTemp, charsmax(szTemp), "say /%s", saycommand);
 register_clcmd(szTemp, function, flags, info);
 formatex(szTemp, charsmax(szTemp), "say .%s", saycommand);
 register_clcmd(szTemp, function, flags, info);
 formatex(szTemp, charsmax(szTemp), "say_team /%s", saycommand);
 register_clcmd(szTemp, function, flags, info);
 formatex(szTemp, charsmax(szTemp), "say_team .%s", saycommand);
 register_clcmd(szTemp, function, flags, info);
}
stock client_printc(id, const text[], any:...)
{
 
 new szMsg[191], iPlayers[32], iCount = 1;
 vformat(szMsg, charsmax(szMsg), text, 3);
 
 replace_all(szMsg, charsmax(szMsg), "\g","^x04");
 replace_all(szMsg, charsmax(szMsg), "\d","^x01");
 replace_all(szMsg, charsmax(szMsg), "\t","^x03");
 
 if(id)
  iPlayers[0] = id;
 else
  get_players(iPlayers, iCount, "ch");
 
 for(new i = 0 ; i < iCount ; i++)
 {
  if(!is_user_connected(iPlayers[i]))
   continue;
 
  message_begin(MSG_ONE_UNRELIABLE, g_iMsgidSayText, _, iPlayers[i]);
  write_byte(iPlayers[i]);
  write_string(szMsg);
  message_end();
 }
}
Attached Files
File Type: sma Get Plugin or Get Source (voteban.sma - 575 views - 7.3 KB)
ditmesteam is offline
fysiks
Veteran Member
Join Date: Sep 2007
Location: Flatland, USA
Old 01-28-2010 , 18:57   Re: Can someone help me?
Reply With Quote #2

Quote:
Originally Posted by ditmesteam View Post
Can someone help me?
I don't know, can I? You should have learned by now about how to title your threads.

Answer: make your menu string longer.
__________________
fysiks is offline
Zombiezzz
Veteran Member
Join Date: Nov 2009
Location: Nov 2009
Old 01-28-2010 , 19:47   Re: Can someone help me?
Reply With Quote #3

Quote:
Originally Posted by ditmesteam
MAY someone help me?
__________________
Zombiezzz is offline
ditmesteam
Senior Member
Join Date: Oct 2009
Old 01-29-2010 , 03:31   Re: Can someone help me?
Reply With Quote #4

Quote:
Originally Posted by fysiks View Post
I don't know, can I? You should have learned by now about how to title your threads.

Answer: make your menu string longer.
Thank you and sorry for my English
Can you make vote back fire to voter (if vote is not successful, will back to voter)
ditmesteam is offline
fysiks
Veteran Member
Join Date: Sep 2007
Location: Flatland, USA
Old 01-29-2010 , 18:51   Re: Can someone help me?
Reply With Quote #5

Quote:
Originally Posted by ditmesteam View Post
Thank you and sorry for my English
Can you make vote back fire to voter (if vote is not successful, will back to voter)
I don't fully understand. If the vote fails you can just recall the vote function.
__________________
fysiks is offline
ditmesteam
Senior Member
Join Date: Oct 2009
Old 02-03-2010 , 11:45   Re: Can someone help me?
Reply With Quote #6

If the vote is not successful, voter who start vote will get baned!
http://forums.alliedmods.net/showthread.php?t=43568
ditmesteam is offline
fysiks
Veteran Member
Join Date: Sep 2007
Location: Flatland, USA
Old 02-03-2010 , 13:31   Re: Can someone help me?
Reply With Quote #7

Quote:
Originally Posted by ditmesteam View Post
If the vote is not successful, voter who start vote will get baned!
http://forums.alliedmods.net/showthread.php?t=43568
Why did you link to that plugin?
__________________
fysiks is offline
ditmesteam
Senior Member
Join Date: Oct 2009
Old 02-05-2010 , 12:17   Re: Can someone help me?
Reply With Quote #8

I only want to tell you understand what I said (because my English is bad)
ditmesteam is offline
fysiks
Veteran Member
Join Date: Sep 2007
Location: Flatland, USA
Old 02-05-2010 , 18:25   Re: Can someone help me?
Reply With Quote #9

In Alka's plugin there is no one person who starts a vote. Anybody just votes. So, your request is completely irrelevant.
__________________
fysiks is offline
ditmesteam
Senior Member
Join Date: Oct 2009
Old 02-06-2010 , 07:00   Re: Can someone help me?
Reply With Quote #10

Oh , I forget this
But in Alka plugin, anybody can votes, do not have delay time (interval) vote. So I think there is a confusion (vote for hate someone, vote for fun, vote for cheat ....)
ditmesteam 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 07:29.


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