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

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

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

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

Оружие через чат

, переделать
Статус пользователя vertex627
сообщение 24.3.2012, 15:39
Сообщение #1
Стаж: 14 лет

Сообщений: 104
Благодарностей: 4
Полезность: < 0

Всем привет! Подскажите пожалуйста как в плагине оружие через чат запретить брать более 2-х оружий за раунд. Т.е к примеру взял м4а1 и дигл и если захочеш к примеру взять ак-47 либо докупить патроны к уже взятому оружию выдавало бы сообщение в чат - ты не можеш больше брать оружия в этом раунде.

Код
Цитата
#include < amxmodx >// Подключаем необходимые модули.
#include < cstrike >// Подключаем необходимые модули.
#include < fun >// Подключаем необходимые модули.

const PRIMARY_WEAPONS_BIT_SUM = (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90)
const SECONDARY_WEAPONS_BIT_SUM = (1<<CSW_P228)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)|(1<<CSW_USP)|(1<<CSW_GLOCK18)|(1<<CSW_DEAGLE)



#define VIP_FLAG ADMIN_LEVEL_H // Создаем макроконстанту,которая будет использоваться для условий ниже. Сейчас флаг "T" Флаги смотреть в инклюде amxconst.inc

new round_number // Создаем новую переменную.

public plugin_init() // Конфигурация плагина.
{
register_plugin("Puf", "1.0", "Puf") // Название\Версия\Автор плагина.

register_event("HLTV", "event_round_start", "a", "1=0", "2=0") // отслеживаем начало раунда.

register_clcmd("say /dgl", "dgl") // Регестрируем команду посылаемую в чат.
register_clcmd("say /m4a1", "m4a1") // Регестрируем команду посылаемую в чат.
register_clcmd("say /ak47", "ak47") // Регестрируем команду посылаемую в чат.
register_clcmd("say /awp", "awp") // Регестрируем команду посылаемую в чат.
}

public event_round_start ( ) // Функция начала раунда.
round_number++ // Создаем счетчик в начале раунда.

public dgl ( id ) // Функция команды в общий чат " /say dgl "
{

if ( ! ( get_user_flags ( id ) & VIP_FLAG ) ) // Если игрок без флага "VIP_FLAG"
{
ChatColor ( id , "!g[vip_menu]!y Только для !team[VIP] !y!" ); // Если игрок без флага "VIP_FLAG"
return PLUGIN_HANDLED; // Прекращаем ему действие.
}


if ( ! is_user_alive ( id ) ) // Если игрок не жив.
{
ChatColor(id, "!g[vip_menu]!y Ты!team [Мертв] !y!"); // Выводим ему в чат сообщение. (Цветное)
return PLUGIN_HANDLED; // Прекращаем ему действие.
}

drop_weapons(id, 2)
give_item( id, "weapon_deagle" ) // Выдаем оружие.
cs_set_user_bpammo( id , CSW_DEAGLE, 90 ) // Выдаем кол-во патрон.

return PLUGIN_CONTINUE; // Продолжаем действия,которые были прекращены выше.
}


public m4a1 ( id ) // Функция команды в общий чат " /say m4a1 "

{

if ( ! ( get_user_flags ( id ) & VIP_FLAG ) ) // Если игрок без флага "VIP_FLAG"
{
ChatColor ( id , "!g[vip_menu]!y Только для !team[VIP] !y!" ); // Если игрок без флага "VIP_FLAG"
return PLUGIN_HANDLED; // Прекращаем ему действие.
}


if ( ! is_user_alive ( id ) ) // Если игрок не жив.
{
ChatColor(id, "!g[vip_menu]!y Ты!team [Мертв] !y!"); // Выводим ему в чат сообщение. (Цветное)
return PLUGIN_HANDLED; // Прекращаем ему действие.
}

if ( round_number <= 4 ) // Отсчитываем раунды,если меньше или ровно первому.
{
ChatColor ( id , "!g[vip_menu]!y Доступно с 3 раунда !y!" ); // Выводим ему в чат сообщение. (Цветное)
return PLUGIN_HANDLED; // Прекращаем ему действие.
}

drop_weapons(id, 1)
give_item( id, "weapon_m4a1" ) // Выдаем оружие
cs_set_user_bpammo( id , CSW_M4A1, 90 ) // Выдаем кол-во патрон.

return PLUGIN_CONTINUE; // Продолжаем действия,которые были прекращены выше.
}

public ak47 ( id ) // Функция команды в общий чат " /say ak47 "
{

if ( ! ( get_user_flags ( id ) & VIP_FLAG ) ) // Если игрок без флага "VIP_FLAG"
{
ChatColor ( id , "!g[vip_menu]!y Только для !team[VIP] !y!" ); // Выводим ему в чат сообщение. (Цветное)
return PLUGIN_HANDLED; // Прекращаем действие
}


if ( ! is_user_alive ( id ) ) // Если игрок не жив.
{
ChatColor(id, "!g[vip_menu]!y Ты!team [Мертв] !y!"); // Выводим ему в чат сообщение. (Цветное)
return PLUGIN_HANDLED; // Прекращаем ему действие.
}

if ( round_number <= 4 )// Отсчитываем раунды,если меньше или ровно первому.
{
ChatColor ( id , "!g[vip_menu]!y Доступно с 3 раунда !y!" ); // Выводим ему в чат сообщение. (Цветное)
return PLUGIN_HANDLED; // Прекращаем ему действие.
}
drop_weapons(id, 1)
give_item( id, "weapon_ak47" ) // Выдаем оружие.
cs_set_user_bpammo( id , CSW_AK47, 90 ) // Выдаем кол-во патрон.


return PLUGIN_CONTINUE; // Продолжаем действия,которые были прекращены выше.
}

public awp ( id ) // Функция команды в общий чат " /say awp "
{

if ( ! ( get_user_flags ( id ) & VIP_FLAG ) ) // Если игрок без флага "VIP_FLAG"
{
ChatColor ( id , "!g[vip_menu]!y For Only !team[VIP] !y!" ); // Выводим ему в чат сообщение. (Цветное)
return PLUGIN_HANDLED; // Прекращаем ему действие.
}


if ( ! is_user_alive ( id ) ) // Если игрок не жив.
{
ChatColor(id, "!g[vip_menu]!y You!team [Dead] !y!"); // Выводим ему в чат сообщение. (Цветное)
return PLUGIN_HANDLED; // Прекращаем ему действие.
}

if ( round_number <= 5 ) // Отсчитываем раунды,если меньше или ровно второму.
{
ChatColor ( id , "!g[vip_menu]!y Доступно с 4 раунда !y!" ); // Выводим ему в чат сообщение. (Цветное)
return PLUGIN_HANDLED; // Прекращаем ему действие.
}

drop_weapons(id, 1)
give_item( id, "weapon_awp" ) // Выдаем оружие awp.
cs_set_user_bpammo( id , CSW_AWP, 30 ) // Выдаем 30 патрон.


return PLUGIN_CONTINUE; // Продолжаем действия,которые были прекращены выше.
}

stock ChatColor(const id, const input[], any:...) // Подключаем сток,который будет читать наши цветные сообщения.
{
new count = 1, players[32]
static msg[191]
vformat(msg, 190, input, 3)

replace_all(msg, 190, "!g", "^4") // Green Color
replace_all(msg, 190, "!y", "^1") // Default Color
replace_all(msg, 190, "!team", "^3") // Team Color
replace_all(msg, 190, "!team2", "^0") // Team2 Color

if (id) players[0] = id; else get_players(players, count, "ch")
{
for (new i = 0; i < count; i++)
{
if (is_user_connected(players[i]))
{
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
write_byte(players[i]);
write_string(msg);
message_end();
}
}
}
}

stock drop_weapons(id, dropwhat)
{
// Get user weapons
static weapons[32], num, i, weaponid
num = 0 // reset passed weapons count (bugfix)
get_user_weapons(id, weapons, num)

// Loop through them and drop primaries or secondaries
for (i = 0; i < num; i++)
{
// Prevent re-indexing the array
weaponid = weapons[i]

if ((dropwhat == 1 && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM)) || (dropwhat == 2 && ((1<<weaponid) & SECONDARY_WEAPONS_BIT_SUM)))
{
// Get weapon entity
static wname[32]
get_weaponname(weaponid, wname, charsmax(wname))

// Player drops the weapon and looses his bpammo
engclient_cmd(id, "drop", wname)
}
}
}


Отредактировал: MaZzai, - 25.3.2012, 1:59
Причина: Используй SPOILER
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя Orty_Hart
сообщение 24.3.2012, 22:11
Сообщение #2
Стаж: 14 лет

Сообщений: 1399
Благодарностей: 408
Полезность: 725

vertex627,
сделай глобальную переменную например: new weap_active[33], pis_active[33]
и когда будут брать оружия: pis_active[id] = 1 также и weap_active[id] Только с автоматами
и проверку в коде, где берут оружия к примеру:

if(!pis_active[id])
Код, чтоб брать оружия!
else
Код чтоб писало сообщение!

также сделай проверку, при коннекте/дисконекте/новом раунде, код weap_active[id] и pis_active[id] сливало на 0

Отредактировал: Orty_Hart, - 24.3.2012, 22:12
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Тема закрытаНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: