hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2025.08.08. 04:16



Jelenlévő felhasználók

Jelenleg 355 felhasználó van jelen :: 2 regisztrált, 0 rejtett és 353 vendég

A legtöbb felhasználó (2883 fő) 2025.07.30. 16:00-kor tartózkodott itt.

Regisztrált felhasználók: Bing [Bot], Google [Bot]az elmúlt 5 percben aktív felhasználók alapján

Utoljára aktív
Ahhoz hogy lásd ki volt utoljára aktív, be kell jelentkezned.



Az oldal teljeskörű
használatához regisztrálj.

Regisztráció

Kereső


Új téma nyitása Hozzászólás a témához  [21 hozzászólás ]  OldalElőző123Következő
Szerző Üzenet
 Hozzászólás témája: Re: Egyedi ban Jóg!!!
HozzászólásElküldve:2012.02.16. 19:29 
Offline
Őstag
Avatar

Csatlakozott:2010.04.16. 16:50
Hozzászólások:1342
Megköszönt másnak: 42 alkalommal
Megköszönték neki: 58 alkalommal
plmenu.amxx

_________________
Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Egyedi ban Jóg!!!
HozzászólásElküldve:2012.02.16. 19:38 
Offline
Tud valamit

Csatlakozott:2011.12.31. 01:03
Hozzászólások:125
expert írta:
plmenu.amxx


nah és itt ?:D XDD
Kód:
/* AMX Mod X
*   Players Menu 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>

/** skip autoloading since it's optional */
#define AMXMODX_NOAUTOLOAD
#include <cstrike>

new g_menuPosition[33]
new g_menuPlayers[33][32]
new g_menuPlayersNum[33]
new g_menuOption[33]
new g_menuSettings[33]

new g_menuSelect[33][64]
new g_menuSelectNum[33]

#define MAX_CLCMDS 24

new g_clcmdName[MAX_CLCMDS][32]
new g_clcmdCmd[MAX_CLCMDS][64]
new g_clcmdMisc[MAX_CLCMDS][2]
new g_clcmdNum

new g_coloredMenus
new g_cstrike = 0

new Array:g_bantimes;
new Array:g_slapsettings;

new g_CSTeamNames[3][] = {
   "TERRORIST",
   "CT",
   "SPECTATOR"
}
new g_CSTeamNumbers[3][] = {
   "1",
   "2",
   "6"
}
new g_CSTeamiNumbers[3] = {
   1,
   2,
   6
}


public plugin_natives()
{
   set_module_filter("module_filter")
   set_native_filter("native_filter")
}

public plugin_init()
{
   register_plugin("Players Menu", AMXX_VERSION_STR, "AMXX Dev Team")
   register_dictionary("common.txt")
   register_dictionary("admincmd.txt")
   register_dictionary("plmenu.txt")

   register_clcmd("amx_kickmenu", "cmdKickMenu", ADMIN_KICK, "- displays kick menu")
   register_clcmd("amx_banmenu", "cmdBanMenu", ADMIN_BAN, "- displays ban menu")
   register_clcmd("amx_slapmenu", "cmdSlapMenu", ADMIN_SLAY, "- displays slap/slay menu")
   register_clcmd("amx_teammenu", "cmdTeamMenu", ADMIN_LEVEL_A, "- displays team menu")
   register_clcmd("amx_clcmdmenu", "cmdClcmdMenu", ADMIN_LEVEL_A, "- displays client cmds menu")

   register_menucmd(register_menuid("Ban Menu"), 1023, "actionBanMenu")
   register_menucmd(register_menuid("Kick Menu"), 1023, "actionKickMenu")
   register_menucmd(register_menuid("Slap/Slay Menu"), 1023, "actionSlapMenu")
   register_menucmd(register_menuid("Team Menu"), 1023, "actionTeamMenu")
   register_menucmd(register_menuid("Client Cmds Menu"), 1023, "actionClcmdMenu")
   
   
   g_bantimes = ArrayCreate();
   // Load up the old default values
   ArrayPushCell(g_bantimes, 0);
   ArrayPushCell(g_bantimes, 5);
   ArrayPushCell(g_bantimes, 10);
   ArrayPushCell(g_bantimes, 15);
   ArrayPushCell(g_bantimes, 30);
   ArrayPushCell(g_bantimes, 45);
   ArrayPushCell(g_bantimes, 60);
   
   
   g_slapsettings = ArrayCreate();
   // Old default values
   ArrayPushCell(g_slapsettings, 0); // First option is ignored - it is slay
   ArrayPushCell(g_slapsettings, 0); // slap 0 damage
   ArrayPushCell(g_slapsettings, 1);
   ArrayPushCell(g_slapsettings, 5);
   
   
   register_srvcmd("amx_plmenu_bantimes", "plmenu_setbantimes");
   register_srvcmd("amx_plmenu_slapdmg", "plmenu_setslapdmg");

   g_coloredMenus = colored_menus()

   new clcmds_ini_file[64]
   get_configsdir(clcmds_ini_file, 63)
   format(clcmds_ini_file, 63, "%s/clcmds.ini", clcmds_ini_file)
   load_settings(clcmds_ini_file)

   if (module_exists("cstrike"))
      g_cstrike = 1
}
public plmenu_setbantimes()
{
   new buff[32];
   new args = read_argc();
   
   if (args <= 1)
   {
      server_print("usage: amx_plmenu_bantimes <time1> [time2] [time3] ...");
      server_print("   use time of 0 for permanent.");
      
      return;
   }
   
   ArrayClear(g_bantimes);
   
   for (new i = 1; i < args; i++)
   {
      read_argv(i, buff, charsmax(buff));
      
      ArrayPushCell(g_bantimes, str_to_num(buff));
      
   }
   
}
public plmenu_setslapdmg()
{
   new buff[32];
   new args = read_argc();
   
   if (args <= 1)
   {
      server_print("usage: amx_plmenu_slapdmg <dmg1> [dmg2] [dmg3] ...");
      server_print("   slay is automatically set for the first value.");
      
      return;
   }
   
   ArrayClear(g_slapsettings);
   
   ArrayPushCell(g_slapsettings, 0); // compensate for slay
   
   for (new i = 1; i < args; i++)
   {
      read_argv(i, buff, charsmax(buff));
      
      ArrayPushCell(g_slapsettings, str_to_num(buff));
      
   }
   
}
public module_filter(const module[])
{
   if (equali(module, "cstrike"))
      return PLUGIN_HANDLED
   
   return PLUGIN_CONTINUE
}

public native_filter(const name[], index, trap)
{
   if (!trap)
      return PLUGIN_HANDLED
      
   return PLUGIN_CONTINUE
}

/* Ban menu */

public actionBanMenu(id, key)
{
   switch (key)
   {
      case 7:
      {
         /* BEGIN OF CHANGES BY MISTAGEE ADDED A FEW MORE OPTIONS */
         
         ++g_menuOption[id]
         g_menuOption[id] %= ArraySize(g_bantimes);

         g_menuSettings[id] = ArrayGetCell(g_bantimes, g_menuOption[id]);

         displayBanMenu(id, g_menuPosition[id])
      }
      case 8: displayBanMenu(id, ++g_menuPosition[id])
      case 9: displayBanMenu(id, --g_menuPosition[id])
      default:
      {
         new player = g_menuPlayers[id][g_menuPosition[id] * 7 + key]
         new name[32], name2[32], authid[32], authid2[32]
      
         get_user_name(player, name2, 31)
         get_user_authid(id, authid, 31)
         get_user_authid(player, authid2, 31)
         get_user_name(id, name, 31)
         
         new userid2 = get_user_userid(player)

         log_amx("Ban: ^"%s<%d><%s><>^" ban and kick ^"%s<%d><%s><>^" (minutes ^"%d^")", name, get_user_userid(id), authid, name2, userid2, authid2, g_menuSettings[id])

         if (g_menuSettings[id]==0) // permanent
         {
            new maxpl = get_maxplayers();
            for (new i = 1; i <= maxpl; i++)
            {
               show_activity_id(i, id, name, "%L %s %L", i, "BAN", name2, i, "PERM");
            }
         }
         else
         {
            new tempTime[32];
            formatex(tempTime,sizeof(tempTime)-1,"%d",g_menuSettings[id]);
            new maxpl = get_maxplayers();
            for (new i = 1; i <= maxpl; i++)
            {
               show_activity_id(i, id, name, "%L %s %L", i, "BAN", name2, i, "FOR_MIN", tempTime);
            }
         }
         /* ---------- check for Steam ID added by MistaGee --------------------
         IF AUTHID == 4294967295 OR VALVE_ID_LAN OR HLTV, BAN PER IP TO NOT BAN EVERYONE */
         
         if (equal("4294967295", authid2)
            || equal("HLTV", authid2)
            || equal("STEAM_ID_LAN", authid2)
            || equali("VALVE_ID_LAN", authid2))
         {
            /* END OF MODIFICATIONS BY MISTAGEE */
            new ipa[32]
            get_user_ip(player, ipa, 31, 1)
            
            server_cmd("addip %d %s;writeip", g_menuSettings[id], ipa)
         }
         else
         {
            server_cmd("banid %d #%d kick;writeid", g_menuSettings[id], userid2)
         }

         server_exec()

         displayBanMenu(id, g_menuPosition[id])
      }
   }
   
   return PLUGIN_HANDLED
}

displayBanMenu(id, pos)
{
   if (pos < 0)
      return

   get_players(g_menuPlayers[id], g_menuPlayersNum[id])

   new menuBody[512]
   new b = 0
   new i
   new name[32]
   new start = pos * 7

   if (start >= g_menuPlayersNum[id])
      start = pos = g_menuPosition[id] = 0

   new len = format(menuBody, 511, g_coloredMenus ? "\y%L\R%d/%d^n\w^n" : "%L %d/%d^n^n", id, "BAN_MENU", pos + 1, (g_menuPlayersNum[id] / 7 + ((g_menuPlayersNum[id] % 7) ? 1 : 0)))
   new end = start + 7
   new keys = MENU_KEY_0|MENU_KEY_8

   if (end > g_menuPlayersNum[id])
      end = g_menuPlayersNum[id]

   for (new a = start; a < end; ++a)
   {
      i = g_menuPlayers[id][a]
      get_user_name(i, name, 31)

      if (is_user_bot(i) || (access(i, ADMIN_IMMUNITY) && i != id))
      {
         ++b
         
         if (g_coloredMenus)
            len += format(menuBody[len], 511-len, "\d%d. %s^n\w", b, name)
         else
            len += format(menuBody[len], 511-len, "#. %s^n", name)
      } else {
         keys |= (1<<b)
            
         if (is_user_admin(i))
            len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s \r*^n\w" : "%d. %s *^n", ++b, name)
         else
            len += format(menuBody[len], 511-len, "%d. %s^n", ++b, name)
      }
   }

   if (g_menuSettings[id])
      len += format(menuBody[len], 511-len, "^n8. %L^n", id, "BAN_FOR_MIN", g_menuSettings[id])
   else
      len += format(menuBody[len], 511-len, "^n8. %L^n", id, "BAN_PERM")

   if (end != g_menuPlayersNum[id])
   {
      format(menuBody[len], 511-len, "^n9. %L...^n0. %L", id, "MORE", id, pos ? "BACK" : "EXIT")
      keys |= MENU_KEY_9
   }
   else
      format(menuBody[len], 511-len, "^n0. %L", id, pos ? "BACK" : "EXIT")

   show_menu(id, keys, menuBody, -1, "Ban Menu")
}

public cmdBanMenu(id, level, cid)
{
   if (!cmd_access(id, level, cid, 1))
      return PLUGIN_HANDLED

   g_menuOption[id] = 0
   
   if (ArraySize(g_bantimes) > 0)
   {
      g_menuSettings[id] = ArrayGetCell(g_bantimes, g_menuOption[id]);
   }
   else
   {
      // should never happen, but failsafe
      g_menuSettings[id] = 0
   }
   displayBanMenu(id, g_menuPosition[id] = 0)

   return PLUGIN_HANDLED
}

/* Slap/Slay */

public actionSlapMenu(id, key)
{
   switch (key)
   {
      case 7:
      {
         ++g_menuOption[id]
         
         g_menuOption[id] %= ArraySize(g_slapsettings);
         
         g_menuSettings[id] = ArrayGetCell(g_slapsettings, g_menuOption[id]);
         
         displaySlapMenu(id, g_menuPosition[id]);
      }
      case 8: displaySlapMenu(id, ++g_menuPosition[id])
      case 9: displaySlapMenu(id, --g_menuPosition[id])
      default:
      {
         new player = g_menuPlayers[id][g_menuPosition[id] * 7 + key]
         new name2[32]
         
         get_user_name(player, name2, 31)

         if (!is_user_alive(player))
         {
            client_print(id, print_chat, "%L", id, "CANT_PERF_DEAD", name2)
            displaySlapMenu(id, g_menuPosition[id])
            return PLUGIN_HANDLED
         }

         new authid[32], authid2[32], name[32]

         get_user_authid(id, authid, 31)
         get_user_authid(player, authid2, 31)
         get_user_name(id, name, 31)

         if (g_menuOption[id])
         {
            log_amx("Cmd: ^"%s<%d><%s><>^" slap with %d damage ^"%s<%d><%s><>^"", name, get_user_userid(id), authid, g_menuSettings[id], name2, get_user_userid(player), authid2)

            show_activity_key("ADMIN_SLAP_1", "ADMIN_SLAP_2", name, name2, g_menuSettings[id]);
         } else {
            log_amx("Cmd: ^"%s<%d><%s><>^" slay ^"%s<%d><%s><>^"", name, get_user_userid(id), authid, name2, get_user_userid(player), authid2)
            
            show_activity_key("ADMIN_SLAY_1", "ADMIN_SLAY_2", name, name2);
         }

         if (g_menuOption[id])
            user_slap(player, (get_user_health(player) > g_menuSettings[id]) ? g_menuSettings[id] : 0)
         else
            user_kill(player)

         displaySlapMenu(id, g_menuPosition[id])
      }
   }
   
   return PLUGIN_HANDLED
}

displaySlapMenu(id, pos)
{
   if (pos < 0)
      return

   get_players(g_menuPlayers[id], g_menuPlayersNum[id])

   new menuBody[512]
   new b = 0
   new i
   new name[32], team[4]
   new start = pos * 7

   if (start >= g_menuPlayersNum[id])
      start = pos = g_menuPosition[id] = 0

   new len = format(menuBody, 511, g_coloredMenus ? "\y%L\R%d/%d^n\w^n" : "%L %d/%d^n^n", id, "SLAP_SLAY_MENU", pos + 1, (g_menuPlayersNum[id] / 7 + ((g_menuPlayersNum[id] % 7) ? 1 : 0)))
   new end = start + 7
   new keys = MENU_KEY_0|MENU_KEY_8

   if (end > g_menuPlayersNum[id])
      end = g_menuPlayersNum[id]

   for (new a = start; a < end; ++a)
   {
      i = g_menuPlayers[id][a]
      get_user_name(i, name, 31)
      
      if (g_cstrike)
      {
         if (cs_get_user_team(i) == CS_TEAM_T)
         {
            copy(team, 3, "TE")
         }
         else if (cs_get_user_team(i) == CS_TEAM_CT)
         {
            copy(team, 3, "CT")
         } else {
            get_user_team(i, team, 3)
         }
      } else {
         get_user_team(i, team, 3)
      }

      if (!is_user_alive(i) || (access(i, ADMIN_IMMUNITY) && i != id))
      {
         ++b
      
         if (g_coloredMenus)
            len += format(menuBody[len], 511-len, "\d%d. %s\R%s^n\w", b, name, team)
         else
            len += format(menuBody[len], 511-len, "#. %s   %s^n", name, team)      
      } else {
         keys |= (1<<b)
            
         if (is_user_admin(i))
            len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s \r*\y\R%s^n\w" : "%d. %s *   %s^n", ++b, name, team)
         else
            len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s\y\R%s^n\w" : "%d. %s   %s^n", ++b, name, team)
      }
   }

   if (g_menuOption[id])
      len += format(menuBody[len], 511-len, "^n8. %L^n", id, "SLAP_WITH_DMG", g_menuSettings[id])
   else
      len += format(menuBody[len], 511-len, "^n8. %L^n", id, "SLAY")

   if (end != g_menuPlayersNum[id])
   {
      format(menuBody[len], 511-len, "^n9. %L...^n0. %L", id, "MORE", id, pos ? "BACK" : "EXIT")
      keys |= MENU_KEY_9
   }
   else
      format(menuBody[len], 511-len, "^n0. %L", id, pos ? "BACK" : "EXIT")

   show_menu(id, keys, menuBody, -1, "Slap/Slay Menu")
}

public cmdSlapMenu(id, level, cid)
{
   if (!cmd_access(id, level, cid, 1))
      return PLUGIN_HANDLED

   g_menuOption[id] = 0
   if (ArraySize(g_slapsettings) > 0)
   {
      g_menuSettings[id] = ArrayGetCell(g_slapsettings, g_menuOption[id]);
   }
   else
   {
      // should never happen, but failsafe
      g_menuSettings[id] = 0
   }

   displaySlapMenu(id, g_menuPosition[id] = 0)

   return PLUGIN_HANDLED
}

/* Kick */

public actionKickMenu(id, key)
{
   switch (key)
   {
      case 8: displayKickMenu(id, ++g_menuPosition[id])
      case 9: displayKickMenu(id, --g_menuPosition[id])
      default:
      {
         new player = g_menuPlayers[id][g_menuPosition[id] * 8 + key]
         new authid[32], authid2[32], name[32], name2[32]
         
         get_user_authid(id, authid, 31)
         get_user_authid(player, authid2, 31)
         get_user_name(id, name, 31)
         get_user_name(player, name2, 31)
         
         new userid2 = get_user_userid(player)

         log_amx("Kick: ^"%s<%d><%s><>^" kick ^"%s<%d><%s><>^"", name, get_user_userid(id), authid, name2, userid2, authid2)

         show_activity_key("ADMIN_KICK_1", "ADMIN_KICK_2", name, name2);

         
         server_cmd("kick #%d", userid2)
         server_exec()

         displayKickMenu(id, g_menuPosition[id])
      }
   }

   return PLUGIN_HANDLED
}

displayKickMenu(id, pos)
{
   if (pos < 0)
      return

   get_players(g_menuPlayers[id], g_menuPlayersNum[id])

   new menuBody[512]
   new b = 0
   new i
   new name[32]
   new start = pos * 8

   if (start >= g_menuPlayersNum[id])
      start = pos = g_menuPosition[id] = 0

   new len = format(menuBody, 511, g_coloredMenus ? "\y%L\R%d/%d^n\w^n" : "%L %d/%d^n^n", id, "KICK_MENU", pos + 1, (g_menuPlayersNum[id] / 8 + ((g_menuPlayersNum[id] % 8) ? 1 : 0)))
   new end = start + 8
   new keys = MENU_KEY_0

   if (end > g_menuPlayersNum[id])
      end = g_menuPlayersNum[id]

   for (new a = start; a < end; ++a)
   {
      i = g_menuPlayers[id][a]
      get_user_name(i, name, 31)

      if (access(i, ADMIN_IMMUNITY) && i != id)
      {
         ++b
      
         if (g_coloredMenus)
            len += format(menuBody[len], 511-len, "\d%d. %s^n\w", b, name)
         else
            len += format(menuBody[len], 511-len, "#. %s^n", name)
      } else {
         keys |= (1<<b)
            
         if (is_user_admin(i))
            len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s \r*^n\w" : "%d. %s *^n", ++b, name)
         else
            len += format(menuBody[len], 511-len, "%d. %s^n", ++b, name)
      }
   }

   if (end != g_menuPlayersNum[id])
   {
      format(menuBody[len], 511-len, "^n9. %L...^n0. %L", id, "MORE", id, pos ? "BACK" : "EXIT")
      keys |= MENU_KEY_9
   }
   else
      format(menuBody[len], 511-len, "^n0. %L", id, pos ? "BACK" : "EXIT")

   show_menu(id, keys, menuBody, -1, "Kick Menu")
}

public cmdKickMenu(id, level, cid)
{
   if (cmd_access(id, level, cid, 1))
      displayKickMenu(id, g_menuPosition[id] = 0)

   return PLUGIN_HANDLED
}

/* Team menu */

public actionTeamMenu(id, key)
{
   switch (key)
   {
      case 7:
      {
         g_menuOption[id] = (g_menuOption[id] + 1) % (g_cstrike ? 3 : 2);
         displayTeamMenu(id, g_menuPosition[id])
      }
      case 8: displayTeamMenu(id, ++g_menuPosition[id])
      case 9: displayTeamMenu(id, --g_menuPosition[id])
      default:
      {
         new player = g_menuPlayers[id][g_menuPosition[id] * 7 + key]
         new authid[32], authid2[32], name[32], name2[32]

         get_user_name(player, name2, 31)
         get_user_authid(id, authid, 31)
         get_user_authid(player, authid2, 31)
         get_user_name(id, name, 31)
            
         log_amx("Cmd: ^"%s<%d><%s><>^" transfer ^"%s<%d><%s><>^" (team ^"%s^")", name, get_user_userid(id), authid, name2, get_user_userid(player), authid2, g_menuOption[id] ? "TERRORIST" : "CT")

         show_activity_key("ADMIN_TRANSF_1", "ADMIN_TRANSF_2", name, name2, g_CSTeamNames[g_menuOption[id] % 3]);

         if (g_cstrike)
         {
            if (is_user_alive(player))
            {
               new deaths = cs_get_user_deaths(player)
               user_kill(player, 1)
               cs_set_user_deaths(player, deaths)
            }
            // This modulo math just aligns the option to the CsTeams-corresponding number
            cs_set_user_team(player, (g_menuOption[id] % 3) + 1)
            cs_reset_user_model(player)
         } else {
            new limit_setting = get_cvar_num("mp_limitteams")
            
            set_cvar_num("mp_limitteams", 0)
            engclient_cmd(player, "jointeam", g_CSTeamNumbers[g_menuOption[id] % 2])
            engclient_cmd(player, "joinclass", "1")
            set_cvar_num("mp_limitteams", limit_setting)
         }

         displayTeamMenu(id, g_menuPosition[id])
      }
   }
   
   return PLUGIN_HANDLED
}

displayTeamMenu(id, pos)
{
   if (pos < 0)
      return

   get_players(g_menuPlayers[id], g_menuPlayersNum[id])

   new menuBody[512]
   new b = 0
   new i, iteam
   new name[32], team[4]
   new start = pos * 7

   if (start >= g_menuPlayersNum[id])
      start = pos = g_menuPosition[id] = 0

   new len = format(menuBody, 511, g_coloredMenus ? "\y%L\R%d/%d^n\w^n" : "%L %d/%d^n^n", id, "TEAM_MENU", pos + 1, (g_menuPlayersNum[id] / 7 + ((g_menuPlayersNum[id] % 7) ? 1 : 0)))
   new end = start + 7
   new keys = MENU_KEY_0|MENU_KEY_8

   if (end > g_menuPlayersNum[id])
      end = g_menuPlayersNum[id]

   for (new a = start; a < end; ++a)
   {
      i = g_menuPlayers[id][a]
      get_user_name(i, name, 31)
      
      if (g_cstrike)
      {
         iteam = _:cs_get_user_team(i)
         
         if (iteam == 1)
         {
            copy(team, 3, "TE")
         }
         else if (iteam == 2)
         {
            copy(team, 3, "CT")
         }
         else if (iteam == 3)
         {
            copy(team, 3, "SPE");
            iteam = 6;
         } else {
            iteam = get_user_team(i, team, 3)
         }
      } else {
         iteam = get_user_team(i, team, 3)
      }

      if ((iteam == g_CSTeamiNumbers[g_menuOption[id] % (g_cstrike ? 3 : 2)]) || (access(i, ADMIN_IMMUNITY) && i != id))
      {
         ++b
         
         if (g_coloredMenus)
            len += format(menuBody[len], 511-len, "\d%d. %s\R%s^n\w", b, name, team)
         else
            len += format(menuBody[len], 511-len, "#. %s   %s^n", name, team)      
      } else {
         keys |= (1<<b)
            
         if (is_user_admin(i))
            len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s \r*\y\R%s^n\w" : "%d. %s *   %s^n", ++b, name, team)
         else
            len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s\y\R%s^n\w" : "%d. %s   %s^n", ++b, name, team)
      }
   }

   len += format(menuBody[len], 511-len, "^n8. %L^n", id, "TRANSF_TO", g_CSTeamNames[g_menuOption[id] % (g_cstrike ? 3 : 2)])

   if (end != g_menuPlayersNum[id])
   {
      format(menuBody[len], 511-len, "^n9. %L...^n0. %L", id, "MORE", id, pos ? "BACK" : "EXIT")
      keys |= MENU_KEY_9
   }
   else
      format(menuBody[len], 511-len, "^n0. %L", id, pos ? "BACK" : "EXIT")

   show_menu(id, keys, menuBody, -1, "Team Menu")
}

public cmdTeamMenu(id, level, cid)
{
   if (!cmd_access(id, level, cid, 1))
      return PLUGIN_HANDLED

   g_menuOption[id] = 0

   displayTeamMenu(id, g_menuPosition[id] = 0)

   return PLUGIN_HANDLED
}

/* Client cmds menu */

public actionClcmdMenu(id, key)
{
   switch (key)
   {
      case 7:
      {
         ++g_menuOption[id]
         g_menuOption[id] %= g_menuSelectNum[id]
         displayClcmdMenu(id, g_menuPosition[id])
      }
      case 8: displayClcmdMenu(id, ++g_menuPosition[id])
      case 9: displayClcmdMenu(id, --g_menuPosition[id])
      default:
      {
         new player = g_menuPlayers[id][g_menuPosition[id] * 7 + key]
         new flags = g_clcmdMisc[g_menuSelect[id][g_menuOption[id]]][1]
         
         if (is_user_connected(player))
         {
            new command[512], authid[32], name[32], userid[32]
            
            copy(command, charsmax(command), g_clcmdCmd[g_menuSelect[id][g_menuOption[id]]])
            get_user_authid(player, authid, 31)
            get_user_name(player, name, 31)
            num_to_str(get_user_userid(player), userid, 31)
            
            replace(command, charsmax(command), "%userid%", userid)
            replace(command, charsmax(command), "%authid%", authid)
            replace(command, charsmax(command), "%name%", name)
            
            if (flags & 1)
            {
               server_cmd("%s", command)
               server_exec()
            } else if (flags & 2)
               client_cmd(id, "%s", command)
            else if (flags & 4)
               client_cmd(player, "%s", command)
         }
         
         if (flags & 8)
            displayClcmdMenu(id, g_menuPosition[id])
      }
   }
   
   return PLUGIN_HANDLED
}

displayClcmdMenu(id, pos)
{
   if (pos < 0)
      return

   get_players(g_menuPlayers[id], g_menuPlayersNum[id])

   new menuBody[512]
   new b = 0
   new i
   new name[32]
   new start = pos * 7

   if (start >= g_menuPlayersNum[id])
      start = pos = g_menuPosition[id] = 0

   new len = format(menuBody, 511, g_coloredMenus ? "\y%L\R%d/%d^n\w^n" : "%L %d/%d^n^n", id, "CL_CMD_MENU", pos + 1, (g_menuPlayersNum[id] / 7 + ((g_menuPlayersNum[id] % 7) ? 1 : 0)))
   new end = start + 7
   new keys = MENU_KEY_0|MENU_KEY_8

   if (end > g_menuPlayersNum[id])
      end = g_menuPlayersNum[id]

   for (new a = start; a < end; ++a)
   {
      i = g_menuPlayers[id][a]
      get_user_name(i, name, 31)

      if (!g_menuSelectNum[id] || (access(i, ADMIN_IMMUNITY) && i != id))
      {
         ++b
         
         if (g_coloredMenus)
            len += format(menuBody[len], 511-len, "\d%d. %s^n\w", b, name)
         else
            len += format(menuBody[len], 511-len, "#. %s^n", name)      
      } else {
         keys |= (1<<b)
            
         if (is_user_admin(i))
            len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s \r*^n\w" : "%d. %s *^n", ++b, name)
         else
            len += format(menuBody[len], 511-len, "%d. %s^n", ++b, name)
      }
   }

   if (g_menuSelectNum[id])
      len += format(menuBody[len], 511-len, "^n8. %s^n", g_clcmdName[g_menuSelect[id][g_menuOption[id]]])
   else
      len += format(menuBody[len], 511-len, "^n8. %L^n", id, "NO_CMDS")

   if (end != g_menuPlayersNum[id])
   {
      format(menuBody[len], 511-len, "^n9. %L...^n0. %L", id, "MORE", id, pos ? "BACK" : "EXIT")
      keys |= MENU_KEY_9
   }
   else
      format(menuBody[len], 511-len, "^n0. %L", id, pos ? "BACK" : "EXIT")

   show_menu(id, keys, menuBody, -1, "Client Cmds Menu")
}

public cmdClcmdMenu(id, level, cid)
{
   if (!cmd_access(id, level, cid, 1))
      return PLUGIN_HANDLED

   g_menuSelectNum[id] = 0

   for (new a = 0; a < g_clcmdNum; ++a)
      if (access(id, g_clcmdMisc[a][0]))
         g_menuSelect[id][g_menuSelectNum[id]++] = a

   g_menuOption[id] = 0

   displayClcmdMenu(id, g_menuPosition[id] = 0)

   return PLUGIN_HANDLED
}

load_settings(szFilename[])
{
   if (!file_exists(szFilename))
      return 0

   new text[256], szFlags[32], szAccess[32]
   new a, pos = 0

   while (g_clcmdNum < MAX_CLCMDS && read_file(szFilename, pos++, text, 255, a))
   {
      if (text[0] == ';') continue

      if (parse(text, g_clcmdName[g_clcmdNum], 31, g_clcmdCmd[g_clcmdNum], 63, szFlags, 31, szAccess, 31) > 3)
      {
         while (replace(g_clcmdCmd[g_clcmdNum], 63, "\'", "^""))
         {
            // do nothing
         }

         g_clcmdMisc[g_clcmdNum][1] = read_flags(szFlags)
         g_clcmdMisc[g_clcmdNum][0] = read_flags(szAccess)
         g_clcmdNum++
      }
   }

   return 1
}


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Egyedi ban Jóg!!!
HozzászólásElküldve:2012.02.16. 20:29 
Offline
Őskövület
Avatar

Csatlakozott:2012.02.07. 23:34
Hozzászólások:2192
Megköszönt másnak: 27 alkalommal
Megköszönték neki: 55 alkalommal
Csatolmányban a plmenu1.amxx -et rakdbe a szerverre
a sima plmenu.amxx -et ne töröld legyen benn mind2
amxx.cfg -be
amx_plmenu_bantimes 10 15 30 45 60
amx_plmenu_bantimes1 0
elő hivni: amx_banmenu1 pl bindeldbe: bind o amx_banmenu1
T jogra van.
Elvileg működik.
Sma:
Kód:
  1. #include <amxmodx>

  2. #include <amxmisc>

  3.  

  4. /** skip autoloading since it's optional */

  5. #define AMXMODX_NOAUTOLOAD

  6. #include <cstrike>

  7.  

  8. new g_menuPosition[33]

  9. new g_menuPlayers[33][32]

  10. new g_menuPlayersNum[33]

  11. new g_menuOption[33]

  12. new g_menuSettings[33]

  13.  

  14. new g_menuSelect[33][64]

  15. new g_menuSelectNum[33]

  16.  

  17. #define MAX_CLCMDS 24

  18.  

  19. new g_clcmdName[MAX_CLCMDS][32]

  20. new g_clcmdCmd[MAX_CLCMDS][64]

  21. new g_clcmdMisc[MAX_CLCMDS][2]

  22. new g_clcmdNum

  23.  

  24. new g_coloredMenus

  25. new g_cstrike = 0

  26.  

  27. new Array:g_bantimes;

  28. new Array:g_slapsettings;

  29.  

  30. new g_CSTeamNames[3][] = {

  31.    "TERRORIST",

  32.    "CT",

  33.    "SPECTATOR"

  34. }

  35. new g_CSTeamNumbers[3][] = {

  36.    "1",

  37.    "2",

  38.    "6"

  39. }

  40. new g_CSTeamiNumbers[3] = {

  41.    1,

  42.    2,

  43.    6

  44. }

  45.  

  46.  

  47. public plugin_natives()

  48. {

  49.    set_module_filter("module_filter")

  50.    set_native_filter("native_filter")

  51. }

  52.  

  53. public plugin_init()

  54. {

  55.    register_plugin("Players Menu", AMXX_VERSION_STR, "AMXX Dev Team")

  56.    register_dictionary("common.txt")

  57.    register_dictionary("admincmd.txt")

  58.    register_dictionary("plmenu.txt")

  59.  

  60.    register_clcmd("amx_kickmenu", "cmdKickMenu", ADMIN_KICK, "- displays kick menu")

  61.    register_clcmd("amx_banmenu1", "cmdBanMenu", ADMIN_LEVEL_H, "- displays ban menu")

  62.    register_clcmd("amx_slapmenu", "cmdSlapMenu", ADMIN_SLAY, "- displays slap/slay menu")

  63.    register_clcmd("amx_teammenu", "cmdTeamMenu", ADMIN_LEVEL_A, "- displays team menu")

  64.    register_clcmd("amx_clcmdmenu", "cmdClcmdMenu", ADMIN_LEVEL_A, "- displays client cmds menu")

  65.  

  66.    register_menucmd(register_menuid("Ban2 Menu"), 1023, "actionBanMenu")

  67.    register_menucmd(register_menuid("Kick Menu"), 1023, "actionKickMenu")

  68.    register_menucmd(register_menuid("Slap/Slay Menu"), 1023, "actionSlapMenu")

  69.    register_menucmd(register_menuid("Team Menu"), 1023, "actionTeamMenu")

  70.    register_menucmd(register_menuid("Client Cmds Menu"), 1023, "actionClcmdMenu")

  71.    

  72.    

  73.    g_bantimes = ArrayCreate();

  74.    // Load up the old default values

  75.    ArrayPushCell(g_bantimes, 0);

  76.    ArrayPushCell(g_bantimes, 5);

  77.    ArrayPushCell(g_bantimes, 10);

  78.    ArrayPushCell(g_bantimes, 15);

  79.    ArrayPushCell(g_bantimes, 30);

  80.    ArrayPushCell(g_bantimes, 45);

  81.    ArrayPushCell(g_bantimes, 60);

  82.    

  83.    

  84.    g_slapsettings = ArrayCreate();

  85.    // Old default values

  86.    ArrayPushCell(g_slapsettings, 0); // First option is ignored - it is slay

  87.    ArrayPushCell(g_slapsettings, 0); // slap 0 damage

  88.    ArrayPushCell(g_slapsettings, 1);

  89.    ArrayPushCell(g_slapsettings, 5);

  90.    

  91.    

  92.    register_srvcmd("amx_plmenu_bantimes1", "plmenu_setbantimes");

  93.    register_srvcmd("amx_plmenu_slapdmg", "plmenu_setslapdmg");

  94.  

  95.    g_coloredMenus = colored_menus()

  96.  

  97.    new clcmds_ini_file[64]

  98.    get_configsdir(clcmds_ini_file, 63)

  99.    format(clcmds_ini_file, 63, "%s/clcmds.ini", clcmds_ini_file)

  100.    load_settings(clcmds_ini_file)

  101.  

  102.    if (module_exists("cstrike"))

  103.       g_cstrike = 1

  104. }

  105. public plmenu_setbantimes()

  106. {

  107.    new buff[32];

  108.    new args = read_argc();

  109.    

  110.    if (args <= 1)

  111.   {

  112.      server_print("usage: amx_plmenu_bantimes <time1> [time2] [time3] ...");

  113.       server_print("   use time of 0 for permanent.");

  114.      

  115.       return;

  116.    }

  117.    

  118.    ArrayClear(g_bantimes);

  119.    

  120.    for (new i = 1; i < args; i++)

  121.   {

  122.      read_argv(i, buff, charsmax(buff));

  123.      

  124.      ArrayPushCell(g_bantimes, str_to_num(buff));

  125.      

  126.   }

  127.  

  128. }

  129. public plmenu_setslapdmg()

  130. {

  131.   new buff[32];

  132.   new args = read_argc();

  133.  

  134.   if (args <= 1)

  135.   {

  136.      server_print("usage: amx_plmenu_slapdmg <dmg1> [dmg2] [dmg3] ...");

  137.       server_print("   slay is automatically set for the first value.");

  138.      

  139.       return;

  140.    }

  141.    

  142.    ArrayClear(g_slapsettings);

  143.    

  144.    ArrayPushCell(g_slapsettings, 0); // compensate for slay

  145.    

  146.    for (new i = 1; i < args; i++)

  147.   {

  148.      read_argv(i, buff, charsmax(buff));

  149.      

  150.      ArrayPushCell(g_slapsettings, str_to_num(buff));

  151.      

  152.   }

  153.  

  154. }

  155. public module_filter(const module[])

  156. {

  157.   if (equali(module, "cstrike"))

  158.      return PLUGIN_HANDLED

  159.  

  160.   return PLUGIN_CONTINUE

  161. }

  162.  

  163. public native_filter(const name[], index, trap)

  164. {

  165.   if (!trap)

  166.      return PLUGIN_HANDLED

  167.      

  168.   return PLUGIN_CONTINUE

  169. }

  170.  

  171. /* Ban menu */

  172.  

  173. public actionBanMenu(id, key)

  174. {

  175.   switch (key)

  176.   {

  177.      case 7:

  178.      {

  179.         /* BEGIN OF CHANGES BY MISTAGEE ADDED A FEW MORE OPTIONS */

  180.        

  181.         ++g_menuOption[id]

  182.         g_menuOption[id] %= ArraySize(g_bantimes);

  183.  

  184.         g_menuSettings[id] = ArrayGetCell(g_bantimes, g_menuOption[id]);

  185.  

  186.         displayBanMenu(id, g_menuPosition[id])

  187.      }

  188.      case 8: displayBanMenu(id, ++g_menuPosition[id])

  189.      case 9: displayBanMenu(id, --g_menuPosition[id])

  190.      default:

  191.      {

  192.         new player = g_menuPlayers[id][g_menuPosition[id] * 7 + key]

  193.         new name[32], name2[32], authid[32], authid2[32]

  194.      

  195.         get_user_name(player, name2, 31)

  196.         get_user_authid(id, authid, 31)

  197.         get_user_authid(player, authid2, 31)

  198.         get_user_name(id, name, 31)

  199.        

  200.         new userid2 = get_user_userid(player)

  201.  

  202.         log_amx("Ban: ^"%s<%d><%s><>^" ban and kick ^"%s<%d><%s><>^" (minutes ^"%d^")", name, get_user_userid(id), authid, name2, userid2, authid2, g_menuSettings[id])

  203.  

  204.          if (g_menuSettings[id]==0) // permanent

  205.          {

  206.             new maxpl = get_maxplayers();

  207.             for (new i = 1; i <= maxpl; i++)

  208.            {

  209.               show_activity_id(i, id, name, "%L %s %L", i, "BAN", name2, i, "PERM");

  210.            }

  211.         }

  212.         else

  213.         {

  214.            new tempTime[32];

  215.            formatex(tempTime,sizeof(tempTime)-1,"%d",g_menuSettings[id]);

  216.            new maxpl = get_maxplayers();

  217.            for (new i = 1; i <= maxpl; i++)

  218.            {

  219.               show_activity_id(i, id, name, "%L %s %L", i, "BAN", name2, i, "FOR_MIN", tempTime);

  220.            }

  221.         }

  222.         /* ---------- check for Steam ID added by MistaGee --------------------

  223.         IF AUTHID == 4294967295 OR VALVE_ID_LAN OR HLTV, BAN PER IP TO NOT BAN EVERYONE */

  224.        

  225.         if (equal("4294967295", authid2)

  226.            || equal("HLTV", authid2)

  227.            || equal("STEAM_ID_LAN", authid2)

  228.            || equali("VALVE_ID_LAN", authid2))

  229.         {

  230.            /* END OF MODIFICATIONS BY MISTAGEE */

  231.            new ipa[32]

  232.            get_user_ip(player, ipa, 31, 1)

  233.            

  234.            server_cmd("addip %d %s;writeip", g_menuSettings[id], ipa)

  235.         }

  236.         else

  237.         {

  238.            server_cmd("banid %d #%d kick;writeid", g_menuSettings[id], userid2)

  239.         }

  240.  

  241.         server_exec()

  242.  

  243.         displayBanMenu(id, g_menuPosition[id])

  244.      }

  245.   }

  246.  

  247.   return PLUGIN_HANDLED

  248. }

  249.  

  250. displayBanMenu(id, pos)

  251. {

  252.   if (pos < 0)

  253.      return

  254.  

  255.   get_players(g_menuPlayers[id], g_menuPlayersNum[id])

  256.  

  257.   new menuBody[512]

  258.   new b = 0

  259.   new i

  260.   new name[32]

  261.   new start = pos * 7

  262.  

  263.   if (start >= g_menuPlayersNum[id])

  264.       start = pos = g_menuPosition[id] = 0

  265.  

  266.    new len = format(menuBody, 511, g_coloredMenus ? "\y%L\R%d/%d^n\w^n" : "%L %d/%d^n^n", id, "BAN_MENU", pos + 1, (g_menuPlayersNum[id] / 7 + ((g_menuPlayersNum[id] % 7) ? 1 : 0)))

  267.    new end = start + 7

  268.    new keys = MENU_KEY_0|MENU_KEY_8

  269.  

  270.    if (end > g_menuPlayersNum[id])

  271.       end = g_menuPlayersNum[id]

  272.  

  273.    for (new a = start; a < end; ++a)

  274.   {

  275.      i = g_menuPlayers[id][a]

  276.      get_user_name(i, name, 31)

  277.  

  278.      if (is_user_bot(i) || (access(i, ADMIN_IMMUNITY) && i != id))

  279.      {

  280.         ++b

  281.        

  282.         if (g_coloredMenus)

  283.            len += format(menuBody[len], 511-len, "\d%d. %s^n\w", b, name)

  284.         else

  285.            len += format(menuBody[len], 511-len, "#. %s^n", name)

  286.      } else {

  287.         keys |= (1<<b)

  288.            

  289.         if (is_user_admin(i))

  290.            len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s \r*^n\w" : "%d. %s *^n", ++b, name)

  291.         else

  292.            len += format(menuBody[len], 511-len, "%d. %s^n", ++b, name)

  293.      }

  294.   }

  295.  

  296.   if (g_menuSettings[id])

  297.      len += format(menuBody[len], 511-len, "^n8. %L^n", id, "BAN_FOR_MIN", g_menuSettings[id])

  298.   else

  299.      len += format(menuBody[len], 511-len, "^n8. %L^n", id, "BAN_PERM")

  300.  

  301.   if (end != g_menuPlayersNum[id])

  302.   {

  303.      format(menuBody[len], 511-len, "^n9. %L...^n0. %L", id, "MORE", id, pos ? "BACK" : "EXIT")

  304.      keys |= MENU_KEY_9

  305.   }

  306.   else

  307.      format(menuBody[len], 511-len, "^n0. %L", id, pos ? "BACK" : "EXIT")

  308.  

  309.   show_menu(id, keys, menuBody, -1, "Ban Menu")

  310. }

  311.  

  312. public cmdBanMenu(id, level, cid)

  313. {

  314.   if (!cmd_access(id, level, cid, 1))

  315.      return PLUGIN_HANDLED

  316.  

  317.   g_menuOption[id] = 0

  318.  

  319.   if (ArraySize(g_bantimes) > 0)

  320.    {

  321.       g_menuSettings[id] = ArrayGetCell(g_bantimes, g_menuOption[id]);

  322.    }

  323.    else

  324.    {

  325.       // should never happen, but failsafe

  326.       g_menuSettings[id] = 0

  327.    }

  328.    displayBanMenu(id, g_menuPosition[id] = 0)

  329.  

  330.    return PLUGIN_HANDLED

  331. }

  332.  

  333. /* Slap/Slay */

  334.  

  335. public actionSlapMenu(id, key)

  336. {

  337.    switch (key)

  338.    {

  339.       case 7:

  340.       {

  341.          ++g_menuOption[id]

  342.          

  343.          g_menuOption[id] %= ArraySize(g_slapsettings);

  344.          

  345.          g_menuSettings[id] = ArrayGetCell(g_slapsettings, g_menuOption[id]);

  346.          

  347.          displaySlapMenu(id, g_menuPosition[id]);

  348.       }

  349.       case 8: displaySlapMenu(id, ++g_menuPosition[id])

  350.       case 9: displaySlapMenu(id, --g_menuPosition[id])

  351.       default:

  352.       {

  353.          new player = g_menuPlayers[id][g_menuPosition[id] * 7 + key]

  354.          new name2[32]

  355.          

  356.          get_user_name(player, name2, 31)

  357.  

  358.          if (!is_user_alive(player))

  359.          {

  360.             client_print(id, print_chat, "%L", id, "CANT_PERF_DEAD", name2)

  361.             displaySlapMenu(id, g_menuPosition[id])

  362.             return PLUGIN_HANDLED

  363.          }

  364.  

  365.          new authid[32], authid2[32], name[32]

  366.  

  367.          get_user_authid(id, authid, 31)

  368.          get_user_authid(player, authid2, 31)

  369.          get_user_name(id, name, 31)

  370.  

  371.          if (g_menuOption[id])

  372.          {

  373.             log_amx("Cmd: ^"%s<%d><%s><>^" slap with %d damage ^"%s<%d><%s><>^"", name, get_user_userid(id), authid, g_menuSettings[id], name2, get_user_userid(player), authid2)

  374.  

  375.             show_activity_key("ADMIN_SLAP_1", "ADMIN_SLAP_2", name, name2, g_menuSettings[id]);

  376.          } else {

  377.             log_amx("Cmd: ^"%s<%d><%s><>^" slay ^"%s<%d><%s><>^"", name, get_user_userid(id), authid, name2, get_user_userid(player), authid2)

  378.            

  379.             show_activity_key("ADMIN_SLAY_1", "ADMIN_SLAY_2", name, name2);

  380.          }

  381.  

  382.          if (g_menuOption[id])

  383.             user_slap(player, (get_user_health(player) > g_menuSettings[id]) ? g_menuSettings[id] : 0)

  384.          else

  385.             user_kill(player)

  386.  

  387.          displaySlapMenu(id, g_menuPosition[id])

  388.       }

  389.    }

  390.    

  391.    return PLUGIN_HANDLED

  392. }

  393.  

  394. displaySlapMenu(id, pos)

  395. {

  396.    if (pos < 0)

  397.      return

  398.  

  399.   get_players(g_menuPlayers[id], g_menuPlayersNum[id])

  400.  

  401.   new menuBody[512]

  402.   new b = 0

  403.   new i

  404.   new name[32], team[4]

  405.   new start = pos * 7

  406.  

  407.   if (start >= g_menuPlayersNum[id])

  408.       start = pos = g_menuPosition[id] = 0

  409.  

  410.    new len = format(menuBody, 511, g_coloredMenus ? "\y%L\R%d/%d^n\w^n" : "%L %d/%d^n^n", id, "SLAP_SLAY_MENU", pos + 1, (g_menuPlayersNum[id] / 7 + ((g_menuPlayersNum[id] % 7) ? 1 : 0)))

  411.    new end = start + 7

  412.    new keys = MENU_KEY_0|MENU_KEY_8

  413.  

  414.    if (end > g_menuPlayersNum[id])

  415.       end = g_menuPlayersNum[id]

  416.  

  417.    for (new a = start; a < end; ++a)

  418.   {

  419.      i = g_menuPlayers[id][a]

  420.      get_user_name(i, name, 31)

  421.      

  422.      if (g_cstrike)

  423.      {

  424.         if (cs_get_user_team(i) == CS_TEAM_T)

  425.         {

  426.            copy(team, 3, "TE")

  427.         }

  428.         else if (cs_get_user_team(i) == CS_TEAM_CT)

  429.         {

  430.            copy(team, 3, "CT")

  431.         } else {

  432.            get_user_team(i, team, 3)

  433.         }

  434.      } else {

  435.         get_user_team(i, team, 3)

  436.      }

  437.  

  438.      if (!is_user_alive(i) || (access(i, ADMIN_IMMUNITY) && i != id))

  439.      {

  440.         ++b

  441.      

  442.         if (g_coloredMenus)

  443.            len += format(menuBody[len], 511-len, "\d%d. %s\R%s^n\w", b, name, team)

  444.         else

  445.            len += format(menuBody[len], 511-len, "#. %s   %s^n", name, team)      

  446.      } else {

  447.         keys |= (1<<b)

  448.            

  449.         if (is_user_admin(i))

  450.            len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s \r*\y\R%s^n\w" : "%d. %s *   %s^n", ++b, name, team)

  451.         else

  452.            len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s\y\R%s^n\w" : "%d. %s   %s^n", ++b, name, team)

  453.      }

  454.   }

  455.  

  456.   if (g_menuOption[id])

  457.      len += format(menuBody[len], 511-len, "^n8. %L^n", id, "SLAP_WITH_DMG", g_menuSettings[id])

  458.   else

  459.      len += format(menuBody[len], 511-len, "^n8. %L^n", id, "SLAY")

  460.  

  461.   if (end != g_menuPlayersNum[id])

  462.   {

  463.      format(menuBody[len], 511-len, "^n9. %L...^n0. %L", id, "MORE", id, pos ? "BACK" : "EXIT")

  464.      keys |= MENU_KEY_9

  465.   }

  466.   else

  467.      format(menuBody[len], 511-len, "^n0. %L", id, pos ? "BACK" : "EXIT")

  468.  

  469.   show_menu(id, keys, menuBody, -1, "Slap/Slay Menu")

  470. }

  471.  

  472. public cmdSlapMenu(id, level, cid)

  473. {

  474.   if (!cmd_access(id, level, cid, 1))

  475.      return PLUGIN_HANDLED

  476.  

  477.   g_menuOption[id] = 0

  478.   if (ArraySize(g_slapsettings) > 0)

  479.    {

  480.       g_menuSettings[id] = ArrayGetCell(g_slapsettings, g_menuOption[id]);

  481.    }

  482.    else

  483.    {

  484.       // should never happen, but failsafe

  485.       g_menuSettings[id] = 0

  486.    }

  487.  

  488.    displaySlapMenu(id, g_menuPosition[id] = 0)

  489.  

  490.    return PLUGIN_HANDLED

  491. }

  492.  

  493. /* Kick */

  494.  

  495. public actionKickMenu(id, key)

  496. {

  497.    switch (key)

  498.    {

  499.       case 8: displayKickMenu(id, ++g_menuPosition[id])

  500.       case 9: displayKickMenu(id, --g_menuPosition[id])

  501.       default:

  502.       {

  503.          new player = g_menuPlayers[id][g_menuPosition[id] * 8 + key]

  504.          new authid[32], authid2[32], name[32], name2[32]

  505.          

  506.          get_user_authid(id, authid, 31)

  507.          get_user_authid(player, authid2, 31)

  508.          get_user_name(id, name, 31)

  509.          get_user_name(player, name2, 31)

  510.          

  511.          new userid2 = get_user_userid(player)

  512.  

  513.          log_amx("Kick: ^"%s<%d><%s><>^" kick ^"%s<%d><%s><>^"", name, get_user_userid(id), authid, name2, userid2, authid2)

  514.  

  515.          show_activity_key("ADMIN_KICK_1", "ADMIN_KICK_2", name, name2);

  516.  

  517.          

  518.          server_cmd("kick #%d", userid2)

  519.          server_exec()

  520.  

  521.          displayKickMenu(id, g_menuPosition[id])

  522.       }

  523.    }

  524.  

  525.    return PLUGIN_HANDLED

  526. }

  527.  

  528. displayKickMenu(id, pos)

  529. {

  530.    if (pos < 0)

  531.      return

  532.  

  533.   get_players(g_menuPlayers[id], g_menuPlayersNum[id])

  534.  

  535.   new menuBody[512]

  536.   new b = 0

  537.   new i

  538.   new name[32]

  539.   new start = pos * 8

  540.  

  541.   if (start >= g_menuPlayersNum[id])

  542.       start = pos = g_menuPosition[id] = 0

  543.  

  544.    new len = format(menuBody, 511, g_coloredMenus ? "\y%L\R%d/%d^n\w^n" : "%L %d/%d^n^n", id, "KICK_MENU", pos + 1, (g_menuPlayersNum[id] / 8 + ((g_menuPlayersNum[id] % 8) ? 1 : 0)))

  545.    new end = start + 8

  546.    new keys = MENU_KEY_0

  547.  

  548.    if (end > g_menuPlayersNum[id])

  549.       end = g_menuPlayersNum[id]

  550.  

  551.    for (new a = start; a < end; ++a)

  552.   {

  553.      i = g_menuPlayers[id][a]

  554.      get_user_name(i, name, 31)

  555.  

  556.      if (access(i, ADMIN_IMMUNITY) && i != id)

  557.      {

  558.         ++b

  559.      

  560.         if (g_coloredMenus)

  561.            len += format(menuBody[len], 511-len, "\d%d. %s^n\w", b, name)

  562.         else

  563.            len += format(menuBody[len], 511-len, "#. %s^n", name)

  564.      } else {

  565.         keys |= (1<<b)

  566.            

  567.         if (is_user_admin(i))

  568.            len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s \r*^n\w" : "%d. %s *^n", ++b, name)

  569.         else

  570.            len += format(menuBody[len], 511-len, "%d. %s^n", ++b, name)

  571.      }

  572.   }

  573.  

  574.   if (end != g_menuPlayersNum[id])

  575.   {

  576.      format(menuBody[len], 511-len, "^n9. %L...^n0. %L", id, "MORE", id, pos ? "BACK" : "EXIT")

  577.      keys |= MENU_KEY_9

  578.   }

  579.   else

  580.      format(menuBody[len], 511-len, "^n0. %L", id, pos ? "BACK" : "EXIT")

  581.  

  582.   show_menu(id, keys, menuBody, -1, "Kick Menu")

  583. }

  584.  

  585. public cmdKickMenu(id, level, cid)

  586. {

  587.   if (cmd_access(id, level, cid, 1))

  588.      displayKickMenu(id, g_menuPosition[id] = 0)

  589.  

  590.   return PLUGIN_HANDLED

  591. }

  592.  

  593. /* Team menu */

  594.  

  595. public actionTeamMenu(id, key)

  596. {

  597.   switch (key)

  598.   {

  599.      case 7:

  600.      {

  601.         g_menuOption[id] = (g_menuOption[id] + 1) % (g_cstrike ? 3 : 2);

  602.         displayTeamMenu(id, g_menuPosition[id])

  603.      }

  604.      case 8: displayTeamMenu(id, ++g_menuPosition[id])

  605.      case 9: displayTeamMenu(id, --g_menuPosition[id])

  606.      default:

  607.      {

  608.         new player = g_menuPlayers[id][g_menuPosition[id] * 7 + key]

  609.         new authid[32], authid2[32], name[32], name2[32]

  610.  

  611.         get_user_name(player, name2, 31)

  612.         get_user_authid(id, authid, 31)

  613.         get_user_authid(player, authid2, 31)

  614.         get_user_name(id, name, 31)

  615.            

  616.         log_amx("Cmd: ^"%s<%d><%s><>^" transfer ^"%s<%d><%s><>^" (team ^"%s^")", name, get_user_userid(id), authid, name2, get_user_userid(player), authid2, g_menuOption[id] ? "TERRORIST" : "CT")

  617.  

  618.          show_activity_key("ADMIN_TRANSF_1", "ADMIN_TRANSF_2", name, name2, g_CSTeamNames[g_menuOption[id] % 3]);

  619.  

  620.          if (g_cstrike)

  621.          {

  622.             if (is_user_alive(player))

  623.             {

  624.                new deaths = cs_get_user_deaths(player)

  625.                user_kill(player, 1)

  626.                cs_set_user_deaths(player, deaths)

  627.             }

  628.             // This modulo math just aligns the option to the CsTeams-corresponding number

  629.             cs_set_user_team(player, (g_menuOption[id] % 3) + 1)

  630.             cs_reset_user_model(player)

  631.          } else {

  632.             new limit_setting = get_cvar_num("mp_limitteams")

  633.            

  634.             set_cvar_num("mp_limitteams", 0)

  635.             engclient_cmd(player, "jointeam", g_CSTeamNumbers[g_menuOption[id] % 2])

  636.             engclient_cmd(player, "joinclass", "1")

  637.             set_cvar_num("mp_limitteams", limit_setting)

  638.          }

  639.  

  640.          displayTeamMenu(id, g_menuPosition[id])

  641.       }

  642.    }

  643.    

  644.    return PLUGIN_HANDLED

  645. }

  646.  

  647. displayTeamMenu(id, pos)

  648. {

  649.    if (pos < 0)

  650.      return

  651.  

  652.   get_players(g_menuPlayers[id], g_menuPlayersNum[id])

  653.  

  654.   new menuBody[512]

  655.   new b = 0

  656.   new i, iteam

  657.   new name[32], team[4]

  658.   new start = pos * 7

  659.  

  660.   if (start >= g_menuPlayersNum[id])

  661.       start = pos = g_menuPosition[id] = 0

  662.  

  663.    new len = format(menuBody, 511, g_coloredMenus ? "\y%L\R%d/%d^n\w^n" : "%L %d/%d^n^n", id, "TEAM_MENU", pos + 1, (g_menuPlayersNum[id] / 7 + ((g_menuPlayersNum[id] % 7) ? 1 : 0)))

  664.    new end = start + 7

  665.    new keys = MENU_KEY_0|MENU_KEY_8

  666.  

  667.    if (end > g_menuPlayersNum[id])

  668.       end = g_menuPlayersNum[id]

  669.  

  670.    for (new a = start; a < end; ++a)

  671.   {

  672.      i = g_menuPlayers[id][a]

  673.      get_user_name(i, name, 31)

  674.      

  675.      if (g_cstrike)

  676.      {

  677.         iteam = _:cs_get_user_team(i)

  678.        

  679.         if (iteam == 1)

  680.         {

  681.            copy(team, 3, "TE")

  682.         }

  683.         else if (iteam == 2)

  684.         {

  685.            copy(team, 3, "CT")

  686.         }

  687.         else if (iteam == 3)

  688.         {

  689.            copy(team, 3, "SPE");

  690.            iteam = 6;

  691.         } else {

  692.            iteam = get_user_team(i, team, 3)

  693.         }

  694.      } else {

  695.         iteam = get_user_team(i, team, 3)

  696.      }

  697.  

  698.      if ((iteam == g_CSTeamiNumbers[g_menuOption[id] % (g_cstrike ? 3 : 2)]) || (access(i, ADMIN_IMMUNITY) && i != id))

  699.      {

  700.         ++b

  701.        

  702.         if (g_coloredMenus)

  703.            len += format(menuBody[len], 511-len, "\d%d. %s\R%s^n\w", b, name, team)

  704.         else

  705.            len += format(menuBody[len], 511-len, "#. %s   %s^n", name, team)      

  706.      } else {

  707.         keys |= (1<<b)

  708.            

  709.         if (is_user_admin(i))

  710.            len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s \r*\y\R%s^n\w" : "%d. %s *   %s^n", ++b, name, team)

  711.         else

  712.            len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s\y\R%s^n\w" : "%d. %s   %s^n", ++b, name, team)

  713.      }

  714.   }

  715.  

  716.   len += format(menuBody[len], 511-len, "^n8. %L^n", id, "TRANSF_TO", g_CSTeamNames[g_menuOption[id] % (g_cstrike ? 3 : 2)])

  717.  

  718.   if (end != g_menuPlayersNum[id])

  719.   {

  720.      format(menuBody[len], 511-len, "^n9. %L...^n0. %L", id, "MORE", id, pos ? "BACK" : "EXIT")

  721.      keys |= MENU_KEY_9

  722.   }

  723.   else

  724.      format(menuBody[len], 511-len, "^n0. %L", id, pos ? "BACK" : "EXIT")

  725.  

  726.   show_menu(id, keys, menuBody, -1, "Team Menu")

  727. }

  728.  

  729. public cmdTeamMenu(id, level, cid)

  730. {

  731.   if (!cmd_access(id, level, cid, 1))

  732.      return PLUGIN_HANDLED

  733.  

  734.   g_menuOption[id] = 0

  735.  

  736.   displayTeamMenu(id, g_menuPosition[id] = 0)

  737.  

  738.   return PLUGIN_HANDLED

  739. }

  740.  

  741. /* Client cmds menu */

  742.  

  743. public actionClcmdMenu(id, key)

  744. {

  745.   switch (key)

  746.   {

  747.      case 7:

  748.      {

  749.         ++g_menuOption[id]

  750.         g_menuOption[id] %= g_menuSelectNum[id]

  751.         displayClcmdMenu(id, g_menuPosition[id])

  752.      }

  753.      case 8: displayClcmdMenu(id, ++g_menuPosition[id])

  754.      case 9: displayClcmdMenu(id, --g_menuPosition[id])

  755.      default:

  756.      {

  757.         new player = g_menuPlayers[id][g_menuPosition[id] * 7 + key]

  758.         new flags = g_clcmdMisc[g_menuSelect[id][g_menuOption[id]]][1]

  759.        

  760.         if (is_user_connected(player))

  761.         {

  762.            new command[512], authid[32], name[32], userid[32]

  763.            

  764.            copy(command, charsmax(command), g_clcmdCmd[g_menuSelect[id][g_menuOption[id]]])

  765.            get_user_authid(player, authid, 31)

  766.            get_user_name(player, name, 31)

  767.            num_to_str(get_user_userid(player), userid, 31)

  768.            

  769.            replace(command, charsmax(command), "%userid%", userid)

  770.            replace(command, charsmax(command), "%authid%", authid)

  771.            replace(command, charsmax(command), "%name%", name)

  772.            

  773.            if (flags & 1)

  774.            {

  775.               server_cmd("%s", command)

  776.               server_exec()

  777.            } else if (flags & 2)

  778.               client_cmd(id, "%s", command)

  779.            else if (flags & 4)

  780.               client_cmd(player, "%s", command)

  781.         }

  782.        

  783.         if (flags & 8)

  784.            displayClcmdMenu(id, g_menuPosition[id])

  785.      }

  786.   }

  787.  

  788.   return PLUGIN_HANDLED

  789. }

  790.  

  791. displayClcmdMenu(id, pos)

  792. {

  793.   if (pos < 0)

  794.      return

  795.  

  796.   get_players(g_menuPlayers[id], g_menuPlayersNum[id])

  797.  

  798.   new menuBody[512]

  799.   new b = 0

  800.   new i

  801.   new name[32]

  802.   new start = pos * 7

  803.  

  804.   if (start >= g_menuPlayersNum[id])

  805.       start = pos = g_menuPosition[id] = 0

  806.  

  807.    new len = format(menuBody, 511, g_coloredMenus ? "\y%L\R%d/%d^n\w^n" : "%L %d/%d^n^n", id, "CL_CMD_MENU", pos + 1, (g_menuPlayersNum[id] / 7 + ((g_menuPlayersNum[id] % 7) ? 1 : 0)))

  808.    new end = start + 7

  809.    new keys = MENU_KEY_0|MENU_KEY_8

  810.  

  811.    if (end > g_menuPlayersNum[id])

  812.       end = g_menuPlayersNum[id]

  813.  

  814.    for (new a = start; a < end; ++a)

  815.   {

  816.      i = g_menuPlayers[id][a]

  817.      get_user_name(i, name, 31)

  818.  

  819.      if (!g_menuSelectNum[id] || (access(i, ADMIN_IMMUNITY) && i != id))

  820.      {

  821.         ++b

  822.        

  823.         if (g_coloredMenus)

  824.            len += format(menuBody[len], 511-len, "\d%d. %s^n\w", b, name)

  825.         else

  826.            len += format(menuBody[len], 511-len, "#. %s^n", name)      

  827.      } else {

  828.         keys |= (1<<b)

  829.            

  830.         if (is_user_admin(i))

  831.            len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s \r*^n\w" : "%d. %s *^n", ++b, name)

  832.         else

  833.            len += format(menuBody[len], 511-len, "%d. %s^n", ++b, name)

  834.      }

  835.   }

  836.  

  837.   if (g_menuSelectNum[id])

  838.      len += format(menuBody[len], 511-len, "^n8. %s^n", g_clcmdName[g_menuSelect[id][g_menuOption[id]]])

  839.   else

  840.      len += format(menuBody[len], 511-len, "^n8. %L^n", id, "NO_CMDS")

  841.  

  842.   if (end != g_menuPlayersNum[id])

  843.   {

  844.      format(menuBody[len], 511-len, "^n9. %L...^n0. %L", id, "MORE", id, pos ? "BACK" : "EXIT")

  845.      keys |= MENU_KEY_9

  846.   }

  847.   else

  848.      format(menuBody[len], 511-len, "^n0. %L", id, pos ? "BACK" : "EXIT")

  849.  

  850.   show_menu(id, keys, menuBody, -1, "Client Cmds Menu")

  851. }

  852.  

  853. public cmdClcmdMenu(id, level, cid)

  854. {

  855.   if (!cmd_access(id, level, cid, 1))

  856.      return PLUGIN_HANDLED

  857.  

  858.   g_menuSelectNum[id] = 0

  859.  

  860.   for (new a = 0; a < g_clcmdNum; ++a)

  861.      if (access(id, g_clcmdMisc[a][0]))

  862.         g_menuSelect[id][g_menuSelectNum[id]++] = a

  863.  

  864.   g_menuOption[id] = 0

  865.  

  866.   displayClcmdMenu(id, g_menuPosition[id] = 0)

  867.  

  868.   return PLUGIN_HANDLED

  869. }

  870.  

  871. load_settings(szFilename[])

  872. {

  873.   if (!file_exists(szFilename))

  874.      return 0

  875.  

  876.   new text[256], szFlags[32], szAccess[32]

  877.   new a, pos = 0

  878.  

  879.   while (g_clcmdNum < MAX_CLCMDS && read_file(szFilename, pos++, text, 255, a))

  880.   {

  881.      if (text[0] == ';') continue

  882.  

  883.      if (parse(text, g_clcmdName[g_clcmdNum], 31, g_clcmdCmd[g_clcmdNum], 63, szFlags, 31, szAccess, 31) > 3)

  884.       {

  885.          while (replace(g_clcmdCmd[g_clcmdNum], 63, "\'", "^""))

  886.          {

  887.             // do nothing

  888.          }

  889.  

  890.          g_clcmdMisc[g_clcmdNum][1] = read_flags(szFlags)

  891.          g_clcmdMisc[g_clcmdNum][0] = read_flags(szAccess)

  892.          g_clcmdNum++

  893.       }

  894.    }

  895.  

  896.    return 1

  897. }


Csatolmányok:
[A amxx kiterjesztés deaktiválva lett, ezért a csatolmány nem kerül megjelenítésre.]

_________________
[sma]CMD:fear(playerid, params[]){ new str[5]; if(!sscanf(params, "s[5]", str)){ if(egyezik(str, "find")) Msg(playerid, "A-a!");}  return 1;}[/sma]
Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Egyedi ban Jóg!!!
HozzászólásElküldve:2012.02.17. 12:35 
Offline
Tud valamit

Csatlakozott:2011.12.31. 01:03
Hozzászólások:125
fear_ezmegmi írta:
Csatolmányban a plmenu1.amxx -et rakdbe a szerverre
a sima plmenu.amxx -et ne töröld legyen benn mind2
amxx.cfg -be
amx_plmenu_bantimes 10 15 30 45 60
amx_plmenu_bantimes1 0
elő hivni: amx_banmenu1 pl bindeldbe: bind o amx_banmenu1
T jogra van.
Elvileg működik.
Sma:
Kód:
  1. #include <amxmodx>

  2. #include <amxmisc>

  3.  

  4. /** skip autoloading since it's optional */

  5. #define AMXMODX_NOAUTOLOAD

  6. #include <cstrike>

  7.  

  8. new g_menuPosition[33]

  9. new g_menuPlayers[33][32]

  10. new g_menuPlayersNum[33]

  11. new g_menuOption[33]

  12. new g_menuSettings[33]

  13.  

  14. new g_menuSelect[33][64]

  15. new g_menuSelectNum[33]

  16.  

  17. #define MAX_CLCMDS 24

  18.  

  19. new g_clcmdName[MAX_CLCMDS][32]

  20. new g_clcmdCmd[MAX_CLCMDS][64]

  21. new g_clcmdMisc[MAX_CLCMDS][2]

  22. new g_clcmdNum

  23.  

  24. new g_coloredMenus

  25. new g_cstrike = 0

  26.  

  27. new Array:g_bantimes;

  28. new Array:g_slapsettings;

  29.  

  30. new g_CSTeamNames[3][] = {

  31.    "TERRORIST",

  32.    "CT",

  33.    "SPECTATOR"

  34. }

  35. new g_CSTeamNumbers[3][] = {

  36.    "1",

  37.    "2",

  38.    "6"

  39. }

  40. new g_CSTeamiNumbers[3] = {

  41.    1,

  42.    2,

  43.    6

  44. }

  45.  

  46.  

  47. public plugin_natives()

  48. {

  49.    set_module_filter("module_filter")

  50.    set_native_filter("native_filter")

  51. }

  52.  

  53. public plugin_init()

  54. {

  55.    register_plugin("Players Menu", AMXX_VERSION_STR, "AMXX Dev Team")

  56.    register_dictionary("common.txt")

  57.    register_dictionary("admincmd.txt")

  58.    register_dictionary("plmenu.txt")

  59.  

  60.    register_clcmd("amx_kickmenu", "cmdKickMenu", ADMIN_KICK, "- displays kick menu")

  61.    register_clcmd("amx_banmenu1", "cmdBanMenu", ADMIN_LEVEL_H, "- displays ban menu")

  62.    register_clcmd("amx_slapmenu", "cmdSlapMenu", ADMIN_SLAY, "- displays slap/slay menu")

  63.    register_clcmd("amx_teammenu", "cmdTeamMenu", ADMIN_LEVEL_A, "- displays team menu")

  64.    register_clcmd("amx_clcmdmenu", "cmdClcmdMenu", ADMIN_LEVEL_A, "- displays client cmds menu")

  65.  

  66.    register_menucmd(register_menuid("Ban2 Menu"), 1023, "actionBanMenu")

  67.    register_menucmd(register_menuid("Kick Menu"), 1023, "actionKickMenu")

  68.    register_menucmd(register_menuid("Slap/Slay Menu"), 1023, "actionSlapMenu")

  69.    register_menucmd(register_menuid("Team Menu"), 1023, "actionTeamMenu")

  70.    register_menucmd(register_menuid("Client Cmds Menu"), 1023, "actionClcmdMenu")

  71.    

  72.    

  73.    g_bantimes = ArrayCreate();

  74.    // Load up the old default values

  75.    ArrayPushCell(g_bantimes, 0);

  76.    ArrayPushCell(g_bantimes, 5);

  77.    ArrayPushCell(g_bantimes, 10);

  78.    ArrayPushCell(g_bantimes, 15);

  79.    ArrayPushCell(g_bantimes, 30);

  80.    ArrayPushCell(g_bantimes, 45);

  81.    ArrayPushCell(g_bantimes, 60);

  82.    

  83.    

  84.    g_slapsettings = ArrayCreate();

  85.    // Old default values

  86.    ArrayPushCell(g_slapsettings, 0); // First option is ignored - it is slay

  87.    ArrayPushCell(g_slapsettings, 0); // slap 0 damage

  88.    ArrayPushCell(g_slapsettings, 1);

  89.    ArrayPushCell(g_slapsettings, 5);

  90.    

  91.    

  92.    register_srvcmd("amx_plmenu_bantimes1", "plmenu_setbantimes");

  93.    register_srvcmd("amx_plmenu_slapdmg", "plmenu_setslapdmg");

  94.  

  95.    g_coloredMenus = colored_menus()

  96.  

  97.    new clcmds_ini_file[64]

  98.    get_configsdir(clcmds_ini_file, 63)

  99.    format(clcmds_ini_file, 63, "%s/clcmds.ini", clcmds_ini_file)

  100.    load_settings(clcmds_ini_file)

  101.  

  102.    if (module_exists("cstrike"))

  103.       g_cstrike = 1

  104. }

  105. public plmenu_setbantimes()

  106. {

  107.    new buff[32];

  108.    new args = read_argc();

  109.    

  110.    if (args <= 1)

  111.   {

  112.      server_print("usage: amx_plmenu_bantimes <time1> [time2] [time3] ...");

  113.       server_print("   use time of 0 for permanent.");

  114.      

  115.       return;

  116.    }

  117.    

  118.    ArrayClear(g_bantimes);

  119.    

  120.    for (new i = 1; i < args; i++)

  121.   {

  122.      read_argv(i, buff, charsmax(buff));

  123.      

  124.      ArrayPushCell(g_bantimes, str_to_num(buff));

  125.      

  126.   }

  127.  

  128. }

  129. public plmenu_setslapdmg()

  130. {

  131.   new buff[32];

  132.   new args = read_argc();

  133.  

  134.   if (args <= 1)

  135.   {

  136.      server_print("usage: amx_plmenu_slapdmg <dmg1> [dmg2] [dmg3] ...");

  137.       server_print("   slay is automatically set for the first value.");

  138.      

  139.       return;

  140.    }

  141.    

  142.    ArrayClear(g_slapsettings);

  143.    

  144.    ArrayPushCell(g_slapsettings, 0); // compensate for slay

  145.    

  146.    for (new i = 1; i < args; i++)

  147.   {

  148.      read_argv(i, buff, charsmax(buff));

  149.      

  150.      ArrayPushCell(g_slapsettings, str_to_num(buff));

  151.      

  152.   }

  153.  

  154. }

  155. public module_filter(const module[])

  156. {

  157.   if (equali(module, "cstrike"))

  158.      return PLUGIN_HANDLED

  159.  

  160.   return PLUGIN_CONTINUE

  161. }

  162.  

  163. public native_filter(const name[], index, trap)

  164. {

  165.   if (!trap)

  166.      return PLUGIN_HANDLED

  167.      

  168.   return PLUGIN_CONTINUE

  169. }

  170.  

  171. /* Ban menu */

  172.  

  173. public actionBanMenu(id, key)

  174. {

  175.   switch (key)

  176.   {

  177.      case 7:

  178.      {

  179.         /* BEGIN OF CHANGES BY MISTAGEE ADDED A FEW MORE OPTIONS */

  180.        

  181.         ++g_menuOption[id]

  182.         g_menuOption[id] %= ArraySize(g_bantimes);

  183.  

  184.         g_menuSettings[id] = ArrayGetCell(g_bantimes, g_menuOption[id]);

  185.  

  186.         displayBanMenu(id, g_menuPosition[id])

  187.      }

  188.      case 8: displayBanMenu(id, ++g_menuPosition[id])

  189.      case 9: displayBanMenu(id, --g_menuPosition[id])

  190.      default:

  191.      {

  192.         new player = g_menuPlayers[id][g_menuPosition[id] * 7 + key]

  193.         new name[32], name2[32], authid[32], authid2[32]

  194.      

  195.         get_user_name(player, name2, 31)

  196.         get_user_authid(id, authid, 31)

  197.         get_user_authid(player, authid2, 31)

  198.         get_user_name(id, name, 31)

  199.        

  200.         new userid2 = get_user_userid(player)

  201.  

  202.         log_amx("Ban: ^"%s<%d><%s><>^" ban and kick ^"%s<%d><%s><>^" (minutes ^"%d^")", name, get_user_userid(id), authid, name2, userid2, authid2, g_menuSettings[id])

  203.  

  204.          if (g_menuSettings[id]==0) // permanent

  205.          {

  206.             new maxpl = get_maxplayers();

  207.             for (new i = 1; i <= maxpl; i++)

  208.            {

  209.               show_activity_id(i, id, name, "%L %s %L", i, "BAN", name2, i, "PERM");

  210.            }

  211.         }

  212.         else

  213.         {

  214.            new tempTime[32];

  215.            formatex(tempTime,sizeof(tempTime)-1,"%d",g_menuSettings[id]);

  216.            new maxpl = get_maxplayers();

  217.            for (new i = 1; i <= maxpl; i++)

  218.            {

  219.               show_activity_id(i, id, name, "%L %s %L", i, "BAN", name2, i, "FOR_MIN", tempTime);

  220.            }

  221.         }

  222.         /* ---------- check for Steam ID added by MistaGee --------------------

  223.         IF AUTHID == 4294967295 OR VALVE_ID_LAN OR HLTV, BAN PER IP TO NOT BAN EVERYONE */

  224.        

  225.         if (equal("4294967295", authid2)

  226.            || equal("HLTV", authid2)

  227.            || equal("STEAM_ID_LAN", authid2)

  228.            || equali("VALVE_ID_LAN", authid2))

  229.         {

  230.            /* END OF MODIFICATIONS BY MISTAGEE */

  231.            new ipa[32]

  232.            get_user_ip(player, ipa, 31, 1)

  233.            

  234.            server_cmd("addip %d %s;writeip", g_menuSettings[id], ipa)

  235.         }

  236.         else

  237.         {

  238.            server_cmd("banid %d #%d kick;writeid", g_menuSettings[id], userid2)

  239.         }

  240.  

  241.         server_exec()

  242.  

  243.         displayBanMenu(id, g_menuPosition[id])

  244.      }

  245.   }

  246.  

  247.   return PLUGIN_HANDLED

  248. }

  249.  

  250. displayBanMenu(id, pos)

  251. {

  252.   if (pos < 0)

  253.      return

  254.  

  255.   get_players(g_menuPlayers[id], g_menuPlayersNum[id])

  256.  

  257.   new menuBody[512]

  258.   new b = 0

  259.   new i

  260.   new name[32]

  261.   new start = pos * 7

  262.  

  263.   if (start >= g_menuPlayersNum[id])

  264.       start = pos = g_menuPosition[id] = 0

  265.  

  266.    new len = format(menuBody, 511, g_coloredMenus ? "\y%L\R%d/%d^n\w^n" : "%L %d/%d^n^n", id, "BAN_MENU", pos + 1, (g_menuPlayersNum[id] / 7 + ((g_menuPlayersNum[id] % 7) ? 1 : 0)))

  267.    new end = start + 7

  268.    new keys = MENU_KEY_0|MENU_KEY_8

  269.  

  270.    if (end > g_menuPlayersNum[id])

  271.       end = g_menuPlayersNum[id]

  272.  

  273.    for (new a = start; a < end; ++a)

  274.   {

  275.      i = g_menuPlayers[id][a]

  276.      get_user_name(i, name, 31)

  277.  

  278.      if (is_user_bot(i) || (access(i, ADMIN_IMMUNITY) && i != id))

  279.      {

  280.         ++b

  281.        

  282.         if (g_coloredMenus)

  283.            len += format(menuBody[len], 511-len, "\d%d. %s^n\w", b, name)

  284.         else

  285.            len += format(menuBody[len], 511-len, "#. %s^n", name)

  286.      } else {

  287.         keys |= (1<<b)

  288.            

  289.         if (is_user_admin(i))

  290.            len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s \r*^n\w" : "%d. %s *^n", ++b, name)

  291.         else

  292.            len += format(menuBody[len], 511-len, "%d. %s^n", ++b, name)

  293.      }

  294.   }

  295.  

  296.   if (g_menuSettings[id])

  297.      len += format(menuBody[len], 511-len, "^n8. %L^n", id, "BAN_FOR_MIN", g_menuSettings[id])

  298.   else

  299.      len += format(menuBody[len], 511-len, "^n8. %L^n", id, "BAN_PERM")

  300.  

  301.   if (end != g_menuPlayersNum[id])

  302.   {

  303.      format(menuBody[len], 511-len, "^n9. %L...^n0. %L", id, "MORE", id, pos ? "BACK" : "EXIT")

  304.      keys |= MENU_KEY_9

  305.   }

  306.   else

  307.      format(menuBody[len], 511-len, "^n0. %L", id, pos ? "BACK" : "EXIT")

  308.  

  309.   show_menu(id, keys, menuBody, -1, "Ban Menu")

  310. }

  311.  

  312. public cmdBanMenu(id, level, cid)

  313. {

  314.   if (!cmd_access(id, level, cid, 1))

  315.      return PLUGIN_HANDLED

  316.  

  317.   g_menuOption[id] = 0

  318.  

  319.   if (ArraySize(g_bantimes) > 0)

  320.    {

  321.       g_menuSettings[id] = ArrayGetCell(g_bantimes, g_menuOption[id]);

  322.    }

  323.    else

  324.    {

  325.       // should never happen, but failsafe

  326.       g_menuSettings[id] = 0

  327.    }

  328.    displayBanMenu(id, g_menuPosition[id] = 0)

  329.  

  330.    return PLUGIN_HANDLED

  331. }

  332.  

  333. /* Slap/Slay */

  334.  

  335. public actionSlapMenu(id, key)

  336. {

  337.    switch (key)

  338.    {

  339.       case 7:

  340.       {

  341.          ++g_menuOption[id]

  342.          

  343.          g_menuOption[id] %= ArraySize(g_slapsettings);

  344.          

  345.          g_menuSettings[id] = ArrayGetCell(g_slapsettings, g_menuOption[id]);

  346.          

  347.          displaySlapMenu(id, g_menuPosition[id]);

  348.       }

  349.       case 8: displaySlapMenu(id, ++g_menuPosition[id])

  350.       case 9: displaySlapMenu(id, --g_menuPosition[id])

  351.       default:

  352.       {

  353.          new player = g_menuPlayers[id][g_menuPosition[id] * 7 + key]

  354.          new name2[32]

  355.          

  356.          get_user_name(player, name2, 31)

  357.  

  358.          if (!is_user_alive(player))

  359.          {

  360.             client_print(id, print_chat, "%L", id, "CANT_PERF_DEAD", name2)

  361.             displaySlapMenu(id, g_menuPosition[id])

  362.             return PLUGIN_HANDLED

  363.          }

  364.  

  365.          new authid[32], authid2[32], name[32]

  366.  

  367.          get_user_authid(id, authid, 31)

  368.          get_user_authid(player, authid2, 31)

  369.          get_user_name(id, name, 31)

  370.  

  371.          if (g_menuOption[id])

  372.          {

  373.             log_amx("Cmd: ^"%s<%d><%s><>^" slap with %d damage ^"%s<%d><%s><>^"", name, get_user_userid(id), authid, g_menuSettings[id], name2, get_user_userid(player), authid2)

  374.  

  375.             show_activity_key("ADMIN_SLAP_1", "ADMIN_SLAP_2", name, name2, g_menuSettings[id]);

  376.          } else {

  377.             log_amx("Cmd: ^"%s<%d><%s><>^" slay ^"%s<%d><%s><>^"", name, get_user_userid(id), authid, name2, get_user_userid(player), authid2)

  378.            

  379.             show_activity_key("ADMIN_SLAY_1", "ADMIN_SLAY_2", name, name2);

  380.          }

  381.  

  382.          if (g_menuOption[id])

  383.             user_slap(player, (get_user_health(player) > g_menuSettings[id]) ? g_menuSettings[id] : 0)

  384.          else

  385.             user_kill(player)

  386.  

  387.          displaySlapMenu(id, g_menuPosition[id])

  388.       }

  389.    }

  390.    

  391.    return PLUGIN_HANDLED

  392. }

  393.  

  394. displaySlapMenu(id, pos)

  395. {

  396.    if (pos < 0)

  397.      return

  398.  

  399.   get_players(g_menuPlayers[id], g_menuPlayersNum[id])

  400.  

  401.   new menuBody[512]

  402.   new b = 0

  403.   new i

  404.   new name[32], team[4]

  405.   new start = pos * 7

  406.  

  407.   if (start >= g_menuPlayersNum[id])

  408.       start = pos = g_menuPosition[id] = 0

  409.  

  410.    new len = format(menuBody, 511, g_coloredMenus ? "\y%L\R%d/%d^n\w^n" : "%L %d/%d^n^n", id, "SLAP_SLAY_MENU", pos + 1, (g_menuPlayersNum[id] / 7 + ((g_menuPlayersNum[id] % 7) ? 1 : 0)))

  411.    new end = start + 7

  412.    new keys = MENU_KEY_0|MENU_KEY_8

  413.  

  414.    if (end > g_menuPlayersNum[id])

  415.       end = g_menuPlayersNum[id]

  416.  

  417.    for (new a = start; a < end; ++a)

  418.   {

  419.      i = g_menuPlayers[id][a]

  420.      get_user_name(i, name, 31)

  421.      

  422.      if (g_cstrike)

  423.      {

  424.         if (cs_get_user_team(i) == CS_TEAM_T)

  425.         {

  426.            copy(team, 3, "TE")

  427.         }

  428.         else if (cs_get_user_team(i) == CS_TEAM_CT)

  429.         {

  430.            copy(team, 3, "CT")

  431.         } else {

  432.            get_user_team(i, team, 3)

  433.         }

  434.      } else {

  435.         get_user_team(i, team, 3)

  436.      }

  437.  

  438.      if (!is_user_alive(i) || (access(i, ADMIN_IMMUNITY) && i != id))

  439.      {

  440.         ++b

  441.      

  442.         if (g_coloredMenus)

  443.            len += format(menuBody[len], 511-len, "\d%d. %s\R%s^n\w", b, name, team)

  444.         else

  445.            len += format(menuBody[len], 511-len, "#. %s   %s^n", name, team)      

  446.      } else {

  447.         keys |= (1<<b)

  448.            

  449.         if (is_user_admin(i))

  450.            len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s \r*\y\R%s^n\w" : "%d. %s *   %s^n", ++b, name, team)

  451.         else

  452.            len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s\y\R%s^n\w" : "%d. %s   %s^n", ++b, name, team)

  453.      }

  454.   }

  455.  

  456.   if (g_menuOption[id])

  457.      len += format(menuBody[len], 511-len, "^n8. %L^n", id, "SLAP_WITH_DMG", g_menuSettings[id])

  458.   else

  459.      len += format(menuBody[len], 511-len, "^n8. %L^n", id, "SLAY")

  460.  

  461.   if (end != g_menuPlayersNum[id])

  462.   {

  463.      format(menuBody[len], 511-len, "^n9. %L...^n0. %L", id, "MORE", id, pos ? "BACK" : "EXIT")

  464.      keys |= MENU_KEY_9

  465.   }

  466.   else

  467.      format(menuBody[len], 511-len, "^n0. %L", id, pos ? "BACK" : "EXIT")

  468.  

  469.   show_menu(id, keys, menuBody, -1, "Slap/Slay Menu")

  470. }

  471.  

  472. public cmdSlapMenu(id, level, cid)

  473. {

  474.   if (!cmd_access(id, level, cid, 1))

  475.      return PLUGIN_HANDLED

  476.  

  477.   g_menuOption[id] = 0

  478.   if (ArraySize(g_slapsettings) > 0)

  479.    {

  480.       g_menuSettings[id] = ArrayGetCell(g_slapsettings, g_menuOption[id]);

  481.    }

  482.    else

  483.    {

  484.       // should never happen, but failsafe

  485.       g_menuSettings[id] = 0

  486.    }

  487.  

  488.    displaySlapMenu(id, g_menuPosition[id] = 0)

  489.  

  490.    return PLUGIN_HANDLED

  491. }

  492.  

  493. /* Kick */

  494.  

  495. public actionKickMenu(id, key)

  496. {

  497.    switch (key)

  498.    {

  499.       case 8: displayKickMenu(id, ++g_menuPosition[id])

  500.       case 9: displayKickMenu(id, --g_menuPosition[id])

  501.       default:

  502.       {

  503.          new player = g_menuPlayers[id][g_menuPosition[id] * 8 + key]

  504.          new authid[32], authid2[32], name[32], name2[32]

  505.          

  506.          get_user_authid(id, authid, 31)

  507.          get_user_authid(player, authid2, 31)

  508.          get_user_name(id, name, 31)

  509.          get_user_name(player, name2, 31)

  510.          

  511.          new userid2 = get_user_userid(player)

  512.  

  513.          log_amx("Kick: ^"%s<%d><%s><>^" kick ^"%s<%d><%s><>^"", name, get_user_userid(id), authid, name2, userid2, authid2)

  514.  

  515.          show_activity_key("ADMIN_KICK_1", "ADMIN_KICK_2", name, name2);

  516.  

  517.          

  518.          server_cmd("kick #%d", userid2)

  519.          server_exec()

  520.  

  521.          displayKickMenu(id, g_menuPosition[id])

  522.       }

  523.    }

  524.  

  525.    return PLUGIN_HANDLED

  526. }

  527.  

  528. displayKickMenu(id, pos)

  529. {

  530.    if (pos < 0)

  531.      return

  532.  

  533.   get_players(g_menuPlayers[id], g_menuPlayersNum[id])

  534.  

  535.   new menuBody[512]

  536.   new b = 0

  537.   new i

  538.   new name[32]

  539.   new start = pos * 8

  540.  

  541.   if (start >= g_menuPlayersNum[id])

  542.       start = pos = g_menuPosition[id] = 0

  543.  

  544.    new len = format(menuBody, 511, g_coloredMenus ? "\y%L\R%d/%d^n\w^n" : "%L %d/%d^n^n", id, "KICK_MENU", pos + 1, (g_menuPlayersNum[id] / 8 + ((g_menuPlayersNum[id] % 8) ? 1 : 0)))

  545.    new end = start + 8

  546.    new keys = MENU_KEY_0

  547.  

  548.    if (end > g_menuPlayersNum[id])

  549.       end = g_menuPlayersNum[id]

  550.  

  551.    for (new a = start; a < end; ++a)

  552.   {

  553.      i = g_menuPlayers[id][a]

  554.      get_user_name(i, name, 31)

  555.  

  556.      if (access(i, ADMIN_IMMUNITY) && i != id)

  557.      {

  558.         ++b

  559.      

  560.         if (g_coloredMenus)

  561.            len += format(menuBody[len], 511-len, "\d%d. %s^n\w", b, name)

  562.         else

  563.            len += format(menuBody[len], 511-len, "#. %s^n", name)

  564.      } else {

  565.         keys |= (1<<b)

  566.            

  567.         if (is_user_admin(i))

  568.            len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s \r*^n\w" : "%d. %s *^n", ++b, name)

  569.         else

  570.            len += format(menuBody[len], 511-len, "%d. %s^n", ++b, name)

  571.      }

  572.   }

  573.  

  574.   if (end != g_menuPlayersNum[id])

  575.   {

  576.      format(menuBody[len], 511-len, "^n9. %L...^n0. %L", id, "MORE", id, pos ? "BACK" : "EXIT")

  577.      keys |= MENU_KEY_9

  578.   }

  579.   else

  580.      format(menuBody[len], 511-len, "^n0. %L", id, pos ? "BACK" : "EXIT")

  581.  

  582.   show_menu(id, keys, menuBody, -1, "Kick Menu")

  583. }

  584.  

  585. public cmdKickMenu(id, level, cid)

  586. {

  587.   if (cmd_access(id, level, cid, 1))

  588.      displayKickMenu(id, g_menuPosition[id] = 0)

  589.  

  590.   return PLUGIN_HANDLED

  591. }

  592.  

  593. /* Team menu */

  594.  

  595. public actionTeamMenu(id, key)

  596. {

  597.   switch (key)

  598.   {

  599.      case 7:

  600.      {

  601.         g_menuOption[id] = (g_menuOption[id] + 1) % (g_cstrike ? 3 : 2);

  602.         displayTeamMenu(id, g_menuPosition[id])

  603.      }

  604.      case 8: displayTeamMenu(id, ++g_menuPosition[id])

  605.      case 9: displayTeamMenu(id, --g_menuPosition[id])

  606.      default:

  607.      {

  608.         new player = g_menuPlayers[id][g_menuPosition[id] * 7 + key]

  609.         new authid[32], authid2[32], name[32], name2[32]

  610.  

  611.         get_user_name(player, name2, 31)

  612.         get_user_authid(id, authid, 31)

  613.         get_user_authid(player, authid2, 31)

  614.         get_user_name(id, name, 31)

  615.            

  616.         log_amx("Cmd: ^"%s<%d><%s><>^" transfer ^"%s<%d><%s><>^" (team ^"%s^")", name, get_user_userid(id), authid, name2, get_user_userid(player), authid2, g_menuOption[id] ? "TERRORIST" : "CT")

  617.  

  618.          show_activity_key("ADMIN_TRANSF_1", "ADMIN_TRANSF_2", name, name2, g_CSTeamNames[g_menuOption[id] % 3]);

  619.  

  620.          if (g_cstrike)

  621.          {

  622.             if (is_user_alive(player))

  623.             {

  624.                new deaths = cs_get_user_deaths(player)

  625.                user_kill(player, 1)

  626.                cs_set_user_deaths(player, deaths)

  627.             }

  628.             // This modulo math just aligns the option to the CsTeams-corresponding number

  629.             cs_set_user_team(player, (g_menuOption[id] % 3) + 1)

  630.             cs_reset_user_model(player)

  631.          } else {

  632.             new limit_setting = get_cvar_num("mp_limitteams")

  633.            

  634.             set_cvar_num("mp_limitteams", 0)

  635.             engclient_cmd(player, "jointeam", g_CSTeamNumbers[g_menuOption[id] % 2])

  636.             engclient_cmd(player, "joinclass", "1")

  637.             set_cvar_num("mp_limitteams", limit_setting)

  638.          }

  639.  

  640.          displayTeamMenu(id, g_menuPosition[id])

  641.       }

  642.    }

  643.    

  644.    return PLUGIN_HANDLED

  645. }

  646.  

  647. displayTeamMenu(id, pos)

  648. {

  649.    if (pos < 0)

  650.      return

  651.  

  652.   get_players(g_menuPlayers[id], g_menuPlayersNum[id])

  653.  

  654.   new menuBody[512]

  655.   new b = 0

  656.   new i, iteam

  657.   new name[32], team[4]

  658.   new start = pos * 7

  659.  

  660.   if (start >= g_menuPlayersNum[id])

  661.       start = pos = g_menuPosition[id] = 0

  662.  

  663.    new len = format(menuBody, 511, g_coloredMenus ? "\y%L\R%d/%d^n\w^n" : "%L %d/%d^n^n", id, "TEAM_MENU", pos + 1, (g_menuPlayersNum[id] / 7 + ((g_menuPlayersNum[id] % 7) ? 1 : 0)))

  664.    new end = start + 7

  665.    new keys = MENU_KEY_0|MENU_KEY_8

  666.  

  667.    if (end > g_menuPlayersNum[id])

  668.       end = g_menuPlayersNum[id]

  669.  

  670.    for (new a = start; a < end; ++a)

  671.   {

  672.      i = g_menuPlayers[id][a]

  673.      get_user_name(i, name, 31)

  674.      

  675.      if (g_cstrike)

  676.      {

  677.         iteam = _:cs_get_user_team(i)

  678.        

  679.         if (iteam == 1)

  680.         {

  681.            copy(team, 3, "TE")

  682.         }

  683.         else if (iteam == 2)

  684.         {

  685.            copy(team, 3, "CT")

  686.         }

  687.         else if (iteam == 3)

  688.         {

  689.            copy(team, 3, "SPE");

  690.            iteam = 6;

  691.         } else {

  692.            iteam = get_user_team(i, team, 3)

  693.         }

  694.      } else {

  695.         iteam = get_user_team(i, team, 3)

  696.      }

  697.  

  698.      if ((iteam == g_CSTeamiNumbers[g_menuOption[id] % (g_cstrike ? 3 : 2)]) || (access(i, ADMIN_IMMUNITY) && i != id))

  699.      {

  700.         ++b

  701.        

  702.         if (g_coloredMenus)

  703.            len += format(menuBody[len], 511-len, "\d%d. %s\R%s^n\w", b, name, team)

  704.         else

  705.            len += format(menuBody[len], 511-len, "#. %s   %s^n", name, team)      

  706.      } else {

  707.         keys |= (1<<b)

  708.            

  709.         if (is_user_admin(i))

  710.            len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s \r*\y\R%s^n\w" : "%d. %s *   %s^n", ++b, name, team)

  711.         else

  712.            len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s\y\R%s^n\w" : "%d. %s   %s^n", ++b, name, team)

  713.      }

  714.   }

  715.  

  716.   len += format(menuBody[len], 511-len, "^n8. %L^n", id, "TRANSF_TO", g_CSTeamNames[g_menuOption[id] % (g_cstrike ? 3 : 2)])

  717.  

  718.   if (end != g_menuPlayersNum[id])

  719.   {

  720.      format(menuBody[len], 511-len, "^n9. %L...^n0. %L", id, "MORE", id, pos ? "BACK" : "EXIT")

  721.      keys |= MENU_KEY_9

  722.   }

  723.   else

  724.      format(menuBody[len], 511-len, "^n0. %L", id, pos ? "BACK" : "EXIT")

  725.  

  726.   show_menu(id, keys, menuBody, -1, "Team Menu")

  727. }

  728.  

  729. public cmdTeamMenu(id, level, cid)

  730. {

  731.   if (!cmd_access(id, level, cid, 1))

  732.      return PLUGIN_HANDLED

  733.  

  734.   g_menuOption[id] = 0

  735.  

  736.   displayTeamMenu(id, g_menuPosition[id] = 0)

  737.  

  738.   return PLUGIN_HANDLED

  739. }

  740.  

  741. /* Client cmds menu */

  742.  

  743. public actionClcmdMenu(id, key)

  744. {

  745.   switch (key)

  746.   {

  747.      case 7:

  748.      {

  749.         ++g_menuOption[id]

  750.         g_menuOption[id] %= g_menuSelectNum[id]

  751.         displayClcmdMenu(id, g_menuPosition[id])

  752.      }

  753.      case 8: displayClcmdMenu(id, ++g_menuPosition[id])

  754.      case 9: displayClcmdMenu(id, --g_menuPosition[id])

  755.      default:

  756.      {

  757.         new player = g_menuPlayers[id][g_menuPosition[id] * 7 + key]

  758.         new flags = g_clcmdMisc[g_menuSelect[id][g_menuOption[id]]][1]

  759.        

  760.         if (is_user_connected(player))

  761.         {

  762.            new command[512], authid[32], name[32], userid[32]

  763.            

  764.            copy(command, charsmax(command), g_clcmdCmd[g_menuSelect[id][g_menuOption[id]]])

  765.            get_user_authid(player, authid, 31)

  766.            get_user_name(player, name, 31)

  767.            num_to_str(get_user_userid(player), userid, 31)

  768.            

  769.            replace(command, charsmax(command), "%userid%", userid)

  770.            replace(command, charsmax(command), "%authid%", authid)

  771.            replace(command, charsmax(command), "%name%", name)

  772.            

  773.            if (flags & 1)

  774.            {

  775.               server_cmd("%s", command)

  776.               server_exec()

  777.            } else if (flags & 2)

  778.               client_cmd(id, "%s", command)

  779.            else if (flags & 4)

  780.               client_cmd(player, "%s", command)

  781.         }

  782.        

  783.         if (flags & 8)

  784.            displayClcmdMenu(id, g_menuPosition[id])

  785.      }

  786.   }

  787.  

  788.   return PLUGIN_HANDLED

  789. }

  790.  

  791. displayClcmdMenu(id, pos)

  792. {

  793.   if (pos < 0)

  794.      return

  795.  

  796.   get_players(g_menuPlayers[id], g_menuPlayersNum[id])

  797.  

  798.   new menuBody[512]

  799.   new b = 0

  800.   new i

  801.   new name[32]

  802.   new start = pos * 7

  803.  

  804.   if (start >= g_menuPlayersNum[id])

  805.       start = pos = g_menuPosition[id] = 0

  806.  

  807.    new len = format(menuBody, 511, g_coloredMenus ? "\y%L\R%d/%d^n\w^n" : "%L %d/%d^n^n", id, "CL_CMD_MENU", pos + 1, (g_menuPlayersNum[id] / 7 + ((g_menuPlayersNum[id] % 7) ? 1 : 0)))

  808.    new end = start + 7

  809.    new keys = MENU_KEY_0|MENU_KEY_8

  810.  

  811.    if (end > g_menuPlayersNum[id])

  812.       end = g_menuPlayersNum[id]

  813.  

  814.    for (new a = start; a < end; ++a)

  815.   {

  816.      i = g_menuPlayers[id][a]

  817.      get_user_name(i, name, 31)

  818.  

  819.      if (!g_menuSelectNum[id] || (access(i, ADMIN_IMMUNITY) && i != id))

  820.      {

  821.         ++b

  822.        

  823.         if (g_coloredMenus)

  824.            len += format(menuBody[len], 511-len, "\d%d. %s^n\w", b, name)

  825.         else

  826.            len += format(menuBody[len], 511-len, "#. %s^n", name)      

  827.      } else {

  828.         keys |= (1<<b)

  829.            

  830.         if (is_user_admin(i))

  831.            len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s \r*^n\w" : "%d. %s *^n", ++b, name)

  832.         else

  833.            len += format(menuBody[len], 511-len, "%d. %s^n", ++b, name)

  834.      }

  835.   }

  836.  

  837.   if (g_menuSelectNum[id])

  838.      len += format(menuBody[len], 511-len, "^n8. %s^n", g_clcmdName[g_menuSelect[id][g_menuOption[id]]])

  839.   else

  840.      len += format(menuBody[len], 511-len, "^n8. %L^n", id, "NO_CMDS")

  841.  

  842.   if (end != g_menuPlayersNum[id])

  843.   {

  844.      format(menuBody[len], 511-len, "^n9. %L...^n0. %L", id, "MORE", id, pos ? "BACK" : "EXIT")

  845.      keys |= MENU_KEY_9

  846.   }

  847.   else

  848.      format(menuBody[len], 511-len, "^n0. %L", id, pos ? "BACK" : "EXIT")

  849.  

  850.   show_menu(id, keys, menuBody, -1, "Client Cmds Menu")

  851. }

  852.  

  853. public cmdClcmdMenu(id, level, cid)

  854. {

  855.   if (!cmd_access(id, level, cid, 1))

  856.      return PLUGIN_HANDLED

  857.  

  858.   g_menuSelectNum[id] = 0

  859.  

  860.   for (new a = 0; a < g_clcmdNum; ++a)

  861.      if (access(id, g_clcmdMisc[a][0]))

  862.         g_menuSelect[id][g_menuSelectNum[id]++] = a

  863.  

  864.   g_menuOption[id] = 0

  865.  

  866.   displayClcmdMenu(id, g_menuPosition[id] = 0)

  867.  

  868.   return PLUGIN_HANDLED

  869. }

  870.  

  871. load_settings(szFilename[])

  872. {

  873.   if (!file_exists(szFilename))

  874.      return 0

  875.  

  876.   new text[256], szFlags[32], szAccess[32]

  877.   new a, pos = 0

  878.  

  879.   while (g_clcmdNum < MAX_CLCMDS && read_file(szFilename, pos++, text, 255, a))

  880.   {

  881.      if (text[0] == ';') continue

  882.  

  883.      if (parse(text, g_clcmdName[g_clcmdNum], 31, g_clcmdCmd[g_clcmdNum], 63, szFlags, 31, szAccess, 31) > 3)

  884.       {

  885.          while (replace(g_clcmdCmd[g_clcmdNum], 63, "\'", "^""))

  886.          {

  887.             // do nothing

  888.          }

  889.  

  890.          g_clcmdMisc[g_clcmdNum][1] = read_flags(szFlags)

  891.          g_clcmdMisc[g_clcmdNum][0] = read_flags(szAccess)

  892.          g_clcmdNum++

  893.       }

  894.    }

  895.  

  896.    return 1

  897. }

%L

okés kösszi szépen :D ^^ Tesztelem mihamarabb :D


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Egyedi ban Jóg!!!
HozzászólásElküldve:2012.02.17. 12:55 
Offline
Őskövület
Avatar

Csatlakozott:2012.02.07. 23:34
Hozzászólások:2192
Megköszönt másnak: 27 alkalommal
Megköszönték neki: 55 alkalommal
Sajnos nem biztos ,hogy működik ,mert lehet ,hogy egymásba rakja a két plmenut :?

_________________
[sma]CMD:fear(playerid, params[]){ new str[5]; if(!sscanf(params, "s[5]", str)){ if(egyezik(str, "find")) Msg(playerid, "A-a!");}  return 1;}[/sma]


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Egyedi ban Jóg!!!
HozzászólásElküldve:2012.02.18. 21:58 
Offline
Őskövület
Avatar

Csatlakozott:2012.02.07. 23:34
Hozzászólások:2192
Megköszönt másnak: 27 alkalommal
Megköszönték neki: 55 alkalommal
Akkor most működik? Mert nem nagyon válaszolsz :D

_________________
[sma]CMD:fear(playerid, params[]){ new str[5]; if(!sscanf(params, "s[5]", str)){ if(egyezik(str, "find")) Msg(playerid, "A-a!");}  return 1;}[/sma]


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Egyedi ban Jóg!!!
HozzászólásElküldve:2012.02.20. 06:21 
Offline
Tud valamit

Csatlakozott:2011.12.31. 01:03
Hozzászólások:125
fear_ezmegmi írta:
Akkor most működik? Mert nem nagyon válaszolsz :D


figyi még nem teszteltem :S mert most a Lag al szenvedek :/ de mihamarabb megnézem. :)


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Egyedi ban Jóg!!!
HozzászólásElküldve:2012.02.20. 19:47 
Offline
Őskövület
Avatar

Csatlakozott:2012.02.07. 23:34
Hozzászólások:2192
Megköszönt másnak: 27 alkalommal
Megköszönték neki: 55 alkalommal
Unatkoztam és leteszteltem .... Működik! :D Meg is tartom magamnak :D

_________________
[sma]CMD:fear(playerid, params[]){ new str[5]; if(!sscanf(params, "s[5]", str)){ if(egyezik(str, "find")) Msg(playerid, "A-a!");}  return 1;}[/sma]


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Egyedi ban Jóg!!!
HozzászólásElküldve:2012.02.20. 19:54 
Offline
Őstag
Avatar

Csatlakozott:2010.04.16. 16:50
Hozzászólások:1342
Megköszönt másnak: 42 alkalommal
Megköszönték neki: 58 alkalommal
akkor én is :P

_________________
Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Egyedi ban Jóg!!!
HozzászólásElküldve:2012.02.23. 15:17 
Offline
Tud valamit

Csatlakozott:2011.12.31. 01:03
Hozzászólások:125
expert írta:
akkor én is :P


:lol: Kösszi szépen akkor leis mentem ^^ :DXD


Hozzászólás jelentése
Vissza a tetejére
   
Hozzászólások megjelenítése: Rendezés 
Új téma nyitása Hozzászólás a témához  [21 hozzászólás ]  OldalElőző123Következő


Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 12 vendég


Nyithatsz új témákat ebben a fórumban.
Válaszolhatsz egy témára ebben a fórumban.
Nem szerkesztheted a hozzászólásaidat ebben a fórumban.
Nem törölheted a hozzászólásaidat ebben a fórumban.
Nem küldhetsz csatolmányokat ebben a fórumban.

Keresés:
Ugrás:  
Powered by phpBB® Forum Software © phpBB Limited
Magyar fordítás © Magyar phpBB Közösség
Portal: Kiss Portal Extension © Michael O'Toole