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

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

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

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

> Правила форума

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

Название темы должно соответствовать содержанию. Темы с названием типа "Помогите", "Вопрос", "парни подскажите..." - будут удалены.
Все темы, не относящиеся к "Вопросам по модам и плагинам", будут удалены или перемещены в соответствующий раздел.

Правила оформления темы:
1. Помимо заголовка не забудьте верно сформулировать свой вопрос.
2. Выложите исходник (в тег кода + ) или ссылку на плагин который вызывает у вас вопросы.
3. Выложите лог с ошибками (если имеется) под спойлер

Два вопроса по плагину vip

Статус пользователя C4acTbe
сообщение 19.2.2014, 23:58
Сообщение #1


Стаж: 13 лет

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

1. Как сделать, чтобы оружие можно было бы брать с раунда 3-4 ?
2. Можно ли сделать например на таких картах как : fy_snow, fy_pool_day отключение слеповой гранаты ?
Код:

#define DAMAGE_RECIEVED
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>
#include <hamsandwich>
#include <fakemeta_util>

#define VIP_FLAG ADMIN_LEVEL_H

new pistols[6] = {CSW_P228, CSW_ELITE, CSW_FIVESEVEN, CSW_GALIL, CSW_USP, CSW_GLOCK18};
new round_number

new g_MsgSync
#if defined DAMAGE_RECIEVED
new g_MsgSync2
#endif

public plugin_init()
{
register_plugin("Vipka", "1.5", "7eVen");
register_event("ResetHUD", "ResetHUD", "be");
register_event("HLTV", "event_round_start", "a", "1=0", "2=0")
register_event("Damage", "on_damage", "b", "2!0", "3=0", "4!0")
register_clcmd("say /vip","ShowMotd");
register_clcmd("vipmenu", "showWeaponMenu");

new keys = MENU_KEY_0|MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5
register_menucmd(register_menuid("Выберите оружия?"), keys, "giveWeapon");

g_MsgSync = CreateHudSyncObj()
#if defined DAMAGE_RECIEVED
g_MsgSync2 = CreateHudSyncObj()
#endif
}

public on_damage(id)
{
new attacker = get_user_attacker(id)

#if defined DAMAGE_RECIEVED
// id should be connected if this message is sent, but lets check anyway
if ( is_user_connected(id) && is_user_connected(attacker) )
if (get_user_flags(attacker) & ADMIN_LEVEL_H)
{
new damage = read_data(2)

set_hudmessage(255, 0, 0, 0.45, 0.50, 2, 0.1, 4.0, 0.1, 0.1, -1)
ShowSyncHudMsg(id, g_MsgSync2, "%i^n", damage)
#else
if ( is_user_connected(attacker) && if (get_user_flags(attacker) & ADMIN_LEVEL_H) )
{
new damage = read_data(2)
#endif
set_hudmessage(0, 100, 200, -1.0, 0.55, 2, 0.1, 4.0, 0.02, 0.02, -1)
ShowSyncHudMsg(attacker, g_MsgSync, "%i^n", damage)
}
}

public showWeaponMenu(id)
{
if ( ! ( get_user_flags ( id ) & VIP_FLAG ) )
{
ChatColor ( id , "!g[V.I.P]!team Только для !g[V.I.P] " );
return PLUGIN_HANDLED;
}

new menu[192]
new keys = MENU_KEY_0|MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5
format(menu, 191, "Выберите оружия?^n^n\r1. \wВзять \r[\yAK47\r]^n\r2. \wВзять \r[\yM4A1\r]^n\r3. \wВзять \r[\yAWP\r]^n\r4. \wВзять \r[\yFAMAS\r]^n^n\r5. \wВыход^n")
show_menu(id, keys, menu)
return PLUGIN_HANDLED
}

public event_round_start ( )
{
round_number++

}
public giveWeapon(id, key)
{
if ( ! is_user_alive ( id ) )
{
ChatColor ( id , "!g[V.I.P]!team Ты мертв!" );
return PLUGIN_HANDLED;
}
if (key == 0)
{
if ( round_number <= 1 )
{
ChatColor ( id , "!g[V.I.P]!team Доступно со 2 раунда!" );
return PLUGIN_HANDLED;
}
give_item(id, "weapon_ak47")
cs_set_user_bpammo( id , CSW_AK47, 90 )
}
else if (key == 1)
{
if ( round_number <= 1 )
{
ChatColor ( id , "!g[V.I.P]!team Доступно со 2 раунда!" );
return PLUGIN_HANDLED;
}
give_item(id, "weapon_m4a1")
cs_set_user_bpammo( id , CSW_M4A1, 90 )
}
else if (key == 2)
{
if ( round_number <= 2 )
{
ChatColor ( id , "!g[V.I.P]!team Доступно со 3 раунда!" );
return PLUGIN_HANDLED;
}
give_item(id, "weapon_awp")
cs_set_user_bpammo( id , CSW_AWP, 30 )
}
else if (key == 3)
{
if ( round_number <= 1 )
{
ChatColor ( id , "!g[V.I.P]!team Доступно со 2 раунда!" );
return PLUGIN_HANDLED;
}
give_item(id, "weapon_famas")
cs_set_user_bpammo( id , CSW_FAMAS, 90 )
}
else if (key == 4)
{
}
return PLUGIN_HANDLED;
}

public client_authorized(id)
{
client_cmd(id, "bind ^"F3^" ^"vipmenu^"")
}

public ResetHUD(id)
{
set_task(0.5, "VIP", id + 6910)
}

public VIP(TaskID)
{
new id = TaskID - 6910

if (get_user_flags(id) & VIP_FLAG && is_user_connected(id) && is_user_alive(id))
{
for (new i = 0; i < 6; i++)
{
if (fm_strip_user_gun(id, pistols[i]))
{
break;
}
message_begin(MSG_ALL, get_user_msgid("ScoreAttrib"))
write_byte(id)
write_byte(4)
message_end()
give_item( id, "weapon_hegrenade" )
give_item( id, "weapon_flashbang" );
give_item( id, "weapon_flashbang" );
give_item( id, "item_assaultsuit" );
give_item( id, "item_thighpack" );
give_item( id, "weapon_deagle")

give_item( id, "ammo_50ae" )
give_item( id, "ammo_50ae" )
give_item( id, "ammo_50ae" )
give_item( id, "ammo_50ae" )
give_item( id, "ammo_50ae" )
}
}

return PLUGIN_HANDLED
}

public ShowMotd(id)
{
show_motd(id, "vip.txt")
}

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();
}
}
}
}


Отредактировал: C4acTbe, - 20.2.2014, 0:11
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
TEROR^
сообщение 20.2.2014, 0:00
Сообщение #2
Стаж: 16 лет

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

Счётчик раундов сделать => первый пункт.
Второе - покупку заблокировать или просто сделать, чтобы она не слепила?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя C4acTbe
сообщение 20.2.2014, 0:02
Сообщение #3


Стаж: 13 лет

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

TEROR^,

1. Где конкретно это изменить?
2. Чтобы на картах : fy_snow, fy_pool_day не выдавалась слеповая граната.

Отредактировал: C4acTbe, - 20.2.2014, 0:03
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
OriGinaL
сообщение 20.2.2014, 0:04
Сообщение #4
Стаж: 13 лет

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

тоже интересует такой вопрос) чтобы можно было брать только с 4 го раунда оружие
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
TEROR^
сообщение 20.2.2014, 0:10
Сообщение #5
Стаж: 16 лет

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

1. Дописать
2. Аа, даже так) Я-то думал сложнее.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
exec1337
сообщение 20.2.2014, 0:16
Сообщение #6
Стаж: 13 лет

Сообщений: 6490
Благодарностей: 2558
Полезность: 491

Цитата(TEROR^ @ 20.2.2014, 1:10) *
1. Дописать
2. Аа, даже так) Я-то думал сложнее.

Уоооочень полезный пост, спасибо.

1. Добавить проверку на номер раунда (хукнуть и т.д.).
http://www.amx-x.ru/viewtopic.php?f=8&...aefdf60f70a9885
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя csnet
сообщение 20.2.2014, 1:22
Сообщение #7
Стаж: 12 лет

Сообщений: 4808
Благодарностей: 3849
Полезность: 690

Код:
new MapName[32]
get_mapname(MapName,31)
if(equal(MapName, "fy_snow")) {
// blah


Отредактировал: csnet, - 20.2.2014, 1:23


go v cs:go
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя C4acTbe
сообщение 20.2.2014, 14:09
Сообщение #8


Стаж: 13 лет

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

Цитата(exec1337 @ 20.2.2014, 0:16) *
Уоооочень полезный пост, спасибо.

1. Добавить проверку на номер раунда (хукнуть и т.д.).
http://www.amx-x.ru/viewtopic.php?f=8&...aefdf60f70a9885

Т.е нужно редактировать это ?

Код
if ( round_number <= 1 )

Или не правильно?

Отредактировал: C4acTbe, - 20.2.2014, 14:12
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
oxxxxxy
сообщение 20.2.2014, 14:27
Сообщение #9
Стаж: 12 лет

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

C4acTbe,
/del
не дочитал:(
Цитата
if ( round_number >= 2 )
{
ChatColor ( id , "!g[V.I.P]!team Доступно со 2 раунда!" );
return PLUGIN_HANDLED;
}

Это со второго раунда

Отредактировал: oxxxxxy, - 20.2.2014, 14:29
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя kR1m1naL
сообщение 20.2.2014, 16:14
Сообщение #10


Стаж: 13 лет

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

Код:
#define DAMAGE_RECIEVED
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>
#include <hamsandwich>
#include <fakemeta_util>
 
#define VIP_FLAG ADMIN_LEVEL_H
 
new pistols[6] = {CSW_P228, CSW_ELITE, CSW_FIVESEVEN, CSW_GALIL, CSW_USP, CSW_GLOCK18};
new round_number
 
new g_MsgSync
#if defined DAMAGE_RECIEVED
   new g_MsgSync2
#endif
 
public plugin_init()
{
   register_plugin("Vipka", "1.5", "7eVen");
   register_event("ResetHUD", "ResetHUD", "be");
   register_event("HLTV", "event_round_start", "a", "1=0", "2=0")    
   register_event("Damage", "on_damage", "b", "2!0", "3=0", "4!0")
   register_clcmd("say /vip","ShowMotd");
   register_clcmd("vipmenu", "showWeaponMenu");
    
        new keys = MENU_KEY_0|MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5
        register_menucmd(register_menuid("Выберите оружия?"), keys, "giveWeapon");
       
   g_MsgSync = CreateHudSyncObj()
#if defined DAMAGE_RECIEVED
   g_MsgSync2 = CreateHudSyncObj()
#endif  
}
 
public on_damage(id)
{
   new attacker = get_user_attacker(id)
 
#if defined DAMAGE_RECIEVED
   // id should be connected if this message is sent, but lets check anyway
   if ( is_user_connected(id) && is_user_connected(attacker) )
   if (get_user_flags(attacker) & ADMIN_LEVEL_H)
   {
      new damage = read_data(2)
 
      set_hudmessage(255, 0, 0, 0.45, 0.50, 2, 0.1, 4.0, 0.1, 0.1, -1)
      ShowSyncHudMsg(id, g_MsgSync2, "%i^n", damage)
#else
   if ( is_user_connected(attacker) && if (get_user_flags(attacker) & ADMIN_LEVEL_H) )
   {
      new damage = read_data(2)
#endif
      set_hudmessage(0, 100, 200, -1.0, 0.55, 2, 0.1, 4.0, 0.02, 0.02, -1)
      ShowSyncHudMsg(attacker, g_MsgSync, "%i^n", damage)
   }
}
 
public showWeaponMenu(id)
{
if ( ! ( get_user_flags ( id ) & VIP_FLAG )  ) 
{
ChatColor ( id , "!g[V.I.P]!team  Только для !g[V.I.P] " );
return PLUGIN_HANDLED;
}  
 
new menu[192]
new keys = MENU_KEY_0|MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5
format(menu, 191, "Выберите оружия?^n^n\r1. \wВзять \r[\yAK47\r]^n\r2. \wВзять \r[\yM4A1\r]^n\r3. \wВзять \r[\yAWP\r]^n\r4. \wВзять \r[\yFAMAS\r]^n^n\r5. \wВыход^n")
show_menu(id, keys, menu)
return PLUGIN_HANDLED
}
 
public event_round_start ( )
{
   round_number++
 
}
public giveWeapon(id, key)
{  
   if ( ! is_user_alive ( id ) ) 
       {
      ChatColor ( id , "!g[V.I.P]!team  Ты мертв!" );
      return PLUGIN_HANDLED;
       }
   if (key == 0)
       {
      if ( round_number <= 3 )
       {
      ChatColor ( id , "!g[V.I.P]!team  Доступно со 3  раунда!" ); 
      return PLUGIN_HANDLED;
      }
      give_item(id, "weapon_ak47")
      cs_set_user_bpammo( id , CSW_AK47, 90 )
       }
      else if (key == 1)
      {
      if ( round_number <= 3 )
       {
      ChatColor ( id , "!g[V.I.P]!team  Доступно со 3  раунда!" ); 
      return PLUGIN_HANDLED;
      }
      give_item(id, "weapon_m4a1")
      cs_set_user_bpammo( id , CSW_M4A1, 90 )
       }
      else if (key == 2)
      {
      if ( round_number <= 3 )
       {
      ChatColor ( id , "!g[V.I.P]!team  Доступно со 3  раунда!" ); 
      return PLUGIN_HANDLED;
      }
      give_item(id, "weapon_awp")
      cs_set_user_bpammo( id , CSW_AWP, 30 )  
       }
      else if (key == 3)
      {
      if ( round_number <= 3 )
       {
      ChatColor ( id , "!g[V.I.P]!team  Доступно со 3  раунда!" ); 
      return PLUGIN_HANDLED;
      }
      give_item(id, "weapon_famas")
      cs_set_user_bpammo( id , CSW_FAMAS, 90 )
       }
      else if (key == 4)
      {
       }
   return PLUGIN_HANDLED;   
}
 
public client_authorized(id)
{
client_cmd(id, "bind ^"F3^" ^"vipmenu^"")
}
 
public ResetHUD(id)
{
   set_task(0.5, "VIP", id + 6910)
}
 
public VIP(TaskID)
{
   new id = TaskID - 6910

static mapname[32]
get_mapname(mapname, 31)
if (containi(mapname, "awp_") != -1 || containi(mapname, "35hp_") != -1 || containi(mapname, "fy_") != -1)
return
    
   if (get_user_flags(id) & VIP_FLAG && is_user_connected(id) && is_user_alive(id))
   {
        for (new i = 0; i < 6; i++)
    {
        if (fm_strip_user_gun(id, pistols[i]))
        {
            break;
        }  
   message_begin(MSG_ALL, get_user_msgid("ScoreAttrib"))
   write_byte(id)
   write_byte(4)
   message_end()  
   give_item( id, "weapon_hegrenade" )
   give_item( id, "weapon_flashbang" );
   give_item( id, "weapon_flashbang" );
   give_item( id, "item_assaultsuit" );
   give_item( id, "item_thighpack" );
   give_item( id, "weapon_deagle")
       
   give_item( id, "ammo_50ae" )
   give_item( id, "ammo_50ae" )
   give_item( id, "ammo_50ae" )
   give_item( id, "ammo_50ae" )
   give_item( id, "ammo_50ae" )
   }
  }
    
   return PLUGIN_HANDLED
}
 
public ShowMotd(id)
{
 show_motd(id, "vip.txt")
}
 
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();
         }
      }
   }
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   + Цитировать сообщение
exec1337
сообщение 20.2.2014, 16:20
Сообщение #11
Стаж: 13 лет

Сообщений: 6490
Благодарностей: 2558
Полезность: 491

Цитата(C4acTbe @ 20.2.2014, 15:09) *
Т.е нужно редактировать это ?

Код
if ( round_number <= 1 )

Или не правильно?

Вы взяли выполнение функции, если номер раунда равен или меньше 1.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя steelzzz
сообщение 20.2.2014, 16:21
Сообщение #12


Стаж: 12 лет

Сообщений: 609
Благодарностей: 187
Полезность: 167

Цитата(OriGinaL @ 20.2.2014, 2:04) *
тоже интересует такой вопрос) чтобы можно было брать только с 4 го раунда оружие


if ( round_number <= 3 )

===>

if ( round_number <= 4 )

и в чате измени)


Нужна помощь в настройке сервера или плагина? (Платно) -> Тык
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Esecman
сообщение 20.2.2014, 19:01
Сообщение #13
Стаж: 12 лет

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

Код:
if (get_user_flags(id) & VIP_FLAG && is_user_connected(id) && is_user_alive(id))

>>
Код:
if (is_user_alive(id) && (get_user_flags(id) & VIP_FLAG))
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя C4acTbe
сообщение 20.2.2014, 19:03
Сообщение #14


Стаж: 13 лет

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

Esecman,
А что это значит?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
TEROR^
сообщение 20.2.2014, 19:45
Сообщение #15
Стаж: 16 лет

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

Цитата(C4acTbe @ 20.2.2014, 19:03) *
Esecman,
А что это значит?

Значит, что проверка is_user_alive включает в себя проверку на коннект игрока is_user_connected
Логично жеж
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
exec1337
сообщение 21.2.2014, 23:47
Сообщение #16
Стаж: 13 лет

Сообщений: 6490
Благодарностей: 2558
Полезность: 491

Цитата(C4acTbe @ 20.2.2014, 20:03) *
Esecman,
А что это значит?

Проще:
игрок не может быть живым, но не присоединёным к серверу

оптимизация плагина, lol
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя csnet
сообщение 21.2.2014, 23:57
Сообщение #17
Стаж: 12 лет

Сообщений: 4808
Благодарностей: 3849
Полезность: 690

Цитата
if (is_user_alive(id) && (get_user_flags(id) & VIP_FLAG))


>>

Код:


#define check(%0) (is_user_alive(%0) && (get_user_flags(%0) & VIP_FLAG))


if(check(id)) {

//



Отредактировал: csnet, - 21.2.2014, 23:57


go v cs:go
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: