Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

История благодарностей участнику Fox-CaH9 ::: Спасибо сказали: 28
Дата поста: В теме: За сообщение: Спасибо сказали:
8.1.2012, 13:41 advertisements
заюзай text_in_chat.amxx, в исходнике подправь с 5 на 3 строчки

Исходник

Код
#include <amxmodx>
#include <amxmisc>

#define PLUGIN "text in chat"
#define VERSION "1.0"
#define AUTHOR "patr1g / Pr4yer"


enum ChatColor
{
    CHATCOLOR_YELLOW = 1,     // ЖЁЛТЫЙ
    CHATCOLOR_GREEN,     // ЗЕЛЁНЫЙ
    CHATCOLOR_TEAM_COLOR,     // Цвет, в зависимости от команды. (T - красный, CT - синий, CPEC - серый)
    CHATCOLOR_GREY,     // СЕРЫЙ
    CHATCOLOR_RED,         // КРАСНЫЙ
    CHATCOLOR_BLUE,     // СИНИЙ
}

new g_TeamName[][] =
{
    "",
    "TERRORIST",
    "CT",
    "SPECTATOR"
}

new g_msgSayText
new g_msgTeamInfo


public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR)
    
    register_cvar("text_chat", "1")
    register_cvar("text_chat_interval", "25")
    
    register_cvar("text_chat_1", "PETYX 1")
    register_cvar("text_chat_2", "PETYX 2")
    register_cvar("text_chat_3", "PETYX 3")
    register_cvar("text_chat_4", "PETYX 4")
    register_cvar("text_chat_5", "PETYX 5")
    
    g_msgSayText = get_user_msgid("SayText")
    g_msgTeamInfo = get_user_msgid("TeamInfo")
}

public plugin_cfg()
{
  set_task(get_cvar_float("text_chat_interval"), "showMsg", 12345, "", _, "b")
}

public showMsg()
{
  if(get_cvar_num("text_chat") == 1)
  {
    static
            msg1[128],
            msg2[128],
            msg3[128],
            msg4[128],
            msg5[128]
    
    get_cvar_string("text_chat_1", msg1, 127)
    get_cvar_string("text_chat_2", msg2, 127)
    get_cvar_string("text_chat_3", msg3, 127)
    get_cvar_string("text_chat_4", msg4, 127)
    get_cvar_string("text_chat_5", msg5, 127)
    
    colorChat(0, CHATCOLOR_YELLOW, "%s", msg1)
    colorChat(0, CHATCOLOR_RED, "%s", msg2)
    colorChat(0, CHATCOLOR_GREEN, "%s", msg3)
    colorChat(0, CHATCOLOR_GREY, "%s", msg4)
    colorChat(0, CHATCOLOR_BLUE, "%s", msg5)
  }
}

colorChat(id, ChatColor:color, const msg[], {Float,Sql,Result,_}:...)
{
    new team, index, MSG_Type
    new bool:teamChanged = false
    new message[192]
    
    switch(color)
    {
        case CHATCOLOR_YELLOW:
        {
            message[0] = 0x01;
        }
        case CHATCOLOR_GREEN:
        {
            message[0] = 0x04;
        }
        default:
        {
            message[0] = 0x03;
        }
    }
    
    vformat(message[1], 190, msg, 4);
    
    if (id == 0)
    {
        index = findAnyPlayer();
        MSG_Type = MSG_ALL;
    }
    else
    {
        index = id;
        MSG_Type = MSG_ONE;
    }
    if (index != 0)
    {
        team = get_user_team(index);    
        if (color == CHATCOLOR_RED && team != 1)
        {
            messageTeamInfo(index, MSG_Type, g_TeamName[1])
            teamChanged = true
        }
        else
        if (color == CHATCOLOR_BLUE && team != 2)
        {
            messageTeamInfo(index, MSG_Type, g_TeamName[2])
            teamChanged = true
        }
        else
        if (color == CHATCOLOR_GREY && team != 0)
        {
            messageTeamInfo(index, MSG_Type, g_TeamName[0])
            teamChanged = true
        }
        messageSayText(index, MSG_Type, message);
        if (teamChanged)
        {
            messageTeamInfo(index, MSG_Type, g_TeamName[team]);
        }
    }
}

messageSayText(id, type, message[])
{
    message_begin(type, g_msgSayText, _, id)
    write_byte(id)        
    write_string(message)
    message_end()
}
    
messageTeamInfo(id, type, team[])
{
    message_begin(type, g_msgTeamInfo, _, id)
    write_byte(id)
    write_string(team)
    message_end()
}
    
findAnyPlayer()
{
    new players[32], inum
    
    get_players(players, inum)
    
    for (new a = 0; a < inum; ++a)
    {
        if(is_user_connected(players[a]))
        {
            return players[a]
        }
    }
    return 0
}

Connect1507
14.11.2011, 10:46 Ошибка при входе на свой сервер
dproto включи
fame #
14.10.2011, 18:43 Setmaster
Сетмастера Valve, Setti+SM, ну и еще мастера мониторингов(если таковые имеются)
HLrate
13.10.2011, 18:21 Хвастаемся и-нетом :)
cbf1b2bfde1a.gif

Вы мне не конкуренты:

HLrate
13.10.2011, 16:23 проблема с банами
Почему ты игнорируешь что я написал, а мы должны мучатся?



если ума не хватило

Цитата(Fox-CaH9 @ 11.10.2011, 23:38) *
plmenu обнови и прочти правила создания тем

HLrate
12.10.2011, 21:42 ссылку на обновление
Цитата(ivashka71reg @ 12.10.2011, 23:26) *
спасибо большое, он-лайн повысился, играют только с 18лет.
поставил режим по он-лайну жесткий пока без проблем.
протоколы не тестил

p.s можно как нибудь замутить чтобы только с микрофонами заходили?


Когда же вы выучите серверные команды? ubeysya.gif

server.cfg

Код
//Параметр разрешает/запрещает вход игрокам без микрофона.
//Значения: 0 -разрешает игру без микрофона(по умолчанию), 1- Вход на сервер только с микрофоном.
sv_mike 1


ps.gif Лучшие Хакерские умы пытаются обойти данный метод проверки на наличие микрофона- пока безуспешно...
HLrate
12.10.2011, 20:46 проблема с банами
агась, одновременно завораживает и вводит в недоумевание
HLrate
12.10.2011, 20:41 проблема с банами
Ну хорошо cb6.gif

plmenu.sma fix

/* 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
}

new g_ban_player[33];


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_clcmd("amx_banreason", "CmdBanReason", ADMIN_BAN, "<reason>");

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 client_disconnect(id)
{
g_ban_player[id] = 0;
}

public CmdBanReason(id)
{
new player = g_ban_player[id];

if( !player ) return PLUGIN_HANDLED;

new reason[128];
read_args(reason, sizeof(reason) - 1);
remove_quotes(reason);

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^") (reason ^"%s^")", name, get_user_userid(id), authid, name2, userid2, authid2, g_menuSettings[id], reason)

if ( !equal("STEAM_0:", authid2, 8))
{
client_cmd(id, "amx_banip #%i %i ^"%s^"", userid2, g_menuSettings[id], reason);
}
else
{
client_cmd(id, "amx_ban #%i %i ^"%s^"", userid2, g_menuSettings[id], reason);
}

server_exec()

g_ban_player[id] = 0;

displayBanMenu(id, g_menuPosition[id])

return PLUGIN_HANDLED;
}

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:
{
g_ban_player[id] = g_menuPlayers[id][g_menuPosition[id] * 7 + key]

client_cmd(id, "messagemode amx_banreason");

client_print(id, print_chat, "[AMXX] Type in the reason for banning this player.");


/*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
server_cmd("amx_banip #%i %i ^"Banned From Menu^"", userid2, g_menuSettings[id]);
}
else
{
server_cmd("amx_ban #%i %i ^"Banned From Menu^"", userid2, g_menuSettings[id]);
}

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])
{
new banLength[32]
if (timeToString(g_menuSettings[id], banLength, 31))
len += format(menuBody[len], 511-len, "^n8. Ban for %s^n", banLength)
else
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")
}

timeToString(minutes, output[], len)
{
new hours = minutes / 60;
minutes %= 60;

new days = hours / 24;
hours %= 24;

new ret

if (days)
ret += formatex(output[ret], len-ret, "%s%d day%s", ret ? ", " : "", days, (days == 1) ? "" : "s")

if (hours)
ret += formatex(output[ret], len-ret, "%s%d hour%s", ret ? ", " : "", hours, (hours == 1) ? "" : "s")

if (minutes)
ret += formatex(output[ret], len-ret, "%s%d minute%s", ret ? ", " : "", minutes, (minutes == 1) ? "" : "s")

return ret
}

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
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1033\\ f0\\ fs16 \n\\ par }
*/

HLrate
12.10.2011, 20:06 ML_NOTFOUND
core.ini


amxx_datadir addons/amxmodx/data
HLrate
12.10.2011, 19:59 проблема с банами
FixX, HLrate
12.10.2011, 13:44 Грамотная резервация слота
Цитата(МУЖЫК @ 12.10.2011, 14:10) *
Хочу добится вот такого эффекта - когда 14\14, то человек с резервным слотом (далее - админ), может зайти, допустим через консоль. при этом с сервака кикается (или перенаправляется на другой сервак) игрок с самым большим пингом, или, допустим, игрок который последний зашел.
далее - 14\14, и если простой игрок конектится к серваку - то тоже перенаправление на другой сервак.


На сколько я знаю, плагина с нужными тебе характеристиками нет. Нужно править готовые, а это уже в другой раздел.


ps.gif Не думаю, что игрокам понравится, когда внезапно их будет редириктить.
ps.gif ps.gif Так же бредово то, что на момент проверки на пинг он может подскачить, буквально, на пол секунды- игрока уже редириктнуло. А на более менее норм проверку нужно время...
HLrate
12.10.2011, 11:33 Не запускается серв
Цитата(edge @ 12.10.2011, 11:55) *
L 10/12/2011 - 11:55:17: -------- Mapchange to zm_toxic_house --------
stray key in process_key: item_getiteminfo 63
./hlds_run: line 49: 6253 Segmentation fault $HL_CMD
Wed Oct 12 11:55:17 MSD 2011: Server restart in 3 seconds
Вот новая ошибка...Чё Ето ?? ubeysya.gif


Мб для начала прочтешь правила создания тем и оформишь ее подобающим образом?
HLrate
11.10.2011, 21:38 проблема с банами
plmenu обнови и прочти правила создания тем
HLrate
11.10.2011, 21:36 Помогите настроить правильные рейты
я даже не смотрел на то что ТС написал, ужс...

:crazy2: sv_maxspeed 320 -это самый важный рейт без него нельзя



ps.gif касательно плагинов- оставлю мнение при себе
HLrate
11.10.2011, 21:28 В логе пишет error
ты бы проверил, есть вероятность, что это версия еще и с бэкдором

yy.gif
HLrate
11.10.2011, 21:16 Помогите настроить правильные рейты
Цитата([Pasha] @ 6.10.2011, 15:57) *
попробуй рассчитать здесь


бредовый калькулятор
3aB}{o3, HLrate
11.10.2011, 21:04 Не видно сервер в интернете
Цитата(Vladimir Pintelin @ 9.10.2011, 22:46) *
что это значит?

bangin.gif http://css.setti.info/
HLrate
11.10.2011, 20:42 ссылку на обновление
Цитата(ds-jan @ 11.10.2011, 7:37) *
Нацчи еще, как при помощи пару сторок онлайн высокий получить. чтобы все бына на 49 и 50 протоколе, чтобы всем было больше 18 лет.


punishment.gif


В amxx.cfg:

Код
// Параметр задает популярность сервера.
// Значения: 0- обычный(по умолчанию), 1- высокий онлайн, 2- сверх популярность, 3- жесткий режим(ставить не рекомендуется).

amx_maxonline 1



В server.cfg:

Код
// Минимальный возраст для входа на сервер. Например: sv_age 17
sv_age 18

// Добавляет на сервер новые протоколы. В значении указывать конечное значение диапазона новых протоколов
// Отсчет идет от 48. Например: p51 -Добавляет 3 новых протокола, а именно 49p , 50p и 51p .
securitycvar p50
f1nik, FixX, HLrate
11.10.2011, 20:08 Падает сервер с ошибкой Segmenatoin Fault
Цитата(eL1tes @ 2.10.2011, 18:12) *
Код
FixAutoBuyBug.amxx
anti_floodup.amxx
autobuy_fix.amxx


Прооо...

Цитата(eL1tes @ 2.10.2011, 18:12) *
Код
zp_lasermine_28.amxx
zp_extra_jetpac.amxx



Сильно грузят
HLrate
11.10.2011, 19:55 Баг на сервере
Цитата(Karpen @ 11.10.2011, 21:06) *
Cracky,
можно, как-то исправить?

330863,
не совсем понял, что вы написали, типо в публике бага нету, а в модах есть?


cbf1b2bfde1a.gif

ps.gif Прочти что есть паблик.

Если ума не хватило и в гугле забанили
Этот баг существует уже несколько лет. Как написано выше, возможно(ибо сам не видел), написан плагин(или модуль)
который это исправляет, НО он в привате, то есть доступен узкому кругу лиц. В твоем случае- закрыть на это глаза
HLrate

2 страниц V   1 2