Русское сообщество по скриптингу

VIP Weapons: исправить kick

Все вопросы по работе и настройке AMXX и его плагинов.

Модератор: liFe iS GoOD

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только вопросов по AMX Mod X и его плагинам.

VIP Weapons: исправить kick

Сообщение Andrey777 » 05 авг 2016, 11:43

Помогите сделать что бы пункт кик работал так же как и голосование за карту, а именно когда нет админов онлайн.

Код: Выделить всё
#include <amxmodx>
#include <cstrike>
#include <fakemeta>
#include <fun>
#include <hamsandwich>
#include <stripweapons>

#define VIP_FLAG ADMIN_LEVEL_H

new bool: g_bDamage[33]
new g_MsgSync, g_MaxPlayers
new round_number
, g_round
new bool
: has_used[33]

new const weapon_name[][] = { "Deagle", "USP", "AK47", "M4a1", "FAMAS", "AWP", "SCOUT" }

#define is_user_valid_connected(%1) (1 <= %1 <= g_MaxPlayers && is_user_connected(%1))

public plugin_init()
{
  register_plugin("VIP Weapons", "1.3", "Player")

  g_round = register_cvar("amx_vip_give", "4")

  register_clcmd("vipmenu", "clcmd_vipmenu")

  register_clcmd("say /adminka", "ShowMotdADM")
  
  register_event
("HLTV", "event_RoundStart", "a", "1=0", "2=0")
  register_logevent("event_RestartRound", 2, "1&Restart_Round_")
  register_event("Damage", "event_Damage", "b", "2!0", "3=0", "4!0")

  RegisterHam(Ham_Spawn, "player", "fw_PlayerRespawn", 1)

  g_MsgSync = CreateHudSyncObj()
  g_MaxPlayers = get_maxplayers()
}

public client_authorized(id)
{
   if(!(get_user_flags(id) & VIP_FLAG))
      return
   g_bDamage
[id] = true
   client_cmd
(id, "bind ^"F5^" ^"vipmenu^"")
}

public clcmd_vipmenu(id)
{
  if(!(get_user_flags(id) & VIP_FLAG)) {
    ChatColor(id, "^3[^4Випка|18+|^3]^1 Только для ^3V.I.P^1 персон!");
  }
  else {
    showWeaponMenu(id);
  }
  
  return PLUGIN_HANDLED
;
}

showWeaponMenu(id, page = 0)
{
  static menu;

  if (!menu) {
    menu              = menu_create("\w[\yV.I.P\w] \rОружейка:", "giveWeapon")
    new menu_callback = menu_makecallback("showWeaponMenu_callback");
    
    new szIteamName
[64]
    
    for
(new i = 0; i < sizeof(weapon_name); i++)
    {
      formatex(szIteamName, charsmax(szIteamName), "\r[\y%s\r]", weapon_name[i])
      menu_additem(menu, szIteamName)
    }
    
    menu_addblank
(menu, 0)
    
    menu_additem
(menu, "Дамагер", .callback = menu_callback);
    menu_additem(menu, "\r[\yКикнуть\r]");
    menu_additem(menu, "Голосование за карту", .callback = menu_callback);
    
    menu_setprop 
(menu, MPROP_BACKNAME, "Назад");
    menu_setprop (menu, MPROP_NEXTNAME, "Вперед");
    menu_setprop (menu, MPROP_EXITNAME, "Выход");
  }
  
  menu_display
(id, menu, page)
}

public showWeaponMenu_callback(id, menu, item)
{
  static players[32], pnum, item_name[128];
  
  
//Голосование за карту
  if (item == 9) {
    get_players(players, pnum, "ch");
    
    for 
(new i; i < pnum; i++) {
      if (get_user_flags(players[i]) & ADMIN_LEVEL_A) {
        return ITEM_DISABLED;
      }
    }
  }
  else if (item == 7) {
    formatex(item_name, charsmax(item_name), "Дамагер \r[%sключен\r]", g_bDamage[id] ? "\yВ" : "\dВы");
    menu_item_setname (menu, item, item_name);
  }
  
  return ITEM_ENABLED
;
}

public giveWeapon(id, menu, item)  
{
  if(item == MENU_EXIT) {
    return PLUGIN_HANDLED;
  }

  if(<= item <= 6)
  {
    if(!is_user_alive(id))
    {
      ChatColor(id, "^3[^4Випка|18+|^3]^1 Вы мертвы!")
      return PLUGIN_HANDLED
    
}
      
    if
(round_number < get_pcvar_num(g_round))
    {
      ChatColor(id, "^3[^4Випка|18+|^3]^1 Доступно с %d раунда!", get_pcvar_num(g_round))
      return PLUGIN_HANDLED
    
}

    if(has_used[id])
    {
      ChatColor(id, "^3[^4Випка|18+|^3]^1 Вы уже использовали! Подождите...")
      return PLUGIN_HANDLED
    
}

    has_used[id] = true

    switch
(item)
    {
      case 0:
      {
        drop_weapons(id, .slot = 2)
        give_item(id, "weapon_deagle")
        cs_set_user_bpammo(id , CSW_DEAGLE, 35)
      }
      case 1:
      {
        drop_weapons(id, .slot = 2)
        give_item(id, "weapon_usp")
        cs_set_user_bpammo(id , CSW_USP, 100)
      }
      case 2:
      {
        drop_weapons(id, .slot = 1)
        give_item(id, "weapon_ak47")
        cs_set_user_bpammo(id , CSW_AK47, 90)
      }
      case 3:
      {
        drop_weapons(id, .slot = 1)
        give_item(id, "weapon_m4a1")
        cs_set_user_bpammo(id , CSW_M4A1, 90)
      }
      case 4:
      {
        drop_weapons(id, .slot = 1)
        give_item(id, "weapon_famas")
        cs_set_user_bpammo(id , CSW_FAMAS, 90)
      }
      case 5:
      {
        drop_weapons(id, .slot = 1)
        give_item(id, "weapon_awp")
        cs_set_user_bpammo(id , CSW_AWP, 30)
      }
      case 6:
      {
        drop_weapons(id, .slot = 1)
        give_item(id, "weapon_scout")
        cs_set_user_bpammo(id , CSW_SCOUT, 90)
      }
    }
  }
  else if (item == 7) {
    g_bDamage[id] = !g_bDamage[id]

    showWeaponMenu(id, 2);
  }
  else if (item == 8) {
    client_cmd(id, "amx_kickmenu");
  }
  else if (item == 9) {
    client_cmd(id, "amx_votemapmenu");
  }
  
  return PLUGIN_HANDLED
}

public fw_PlayerRespawn(id)
{
  if(!is_user_alive(id) || !(get_user_flags(id) & VIP_FLAG))
    return

  drop_weapons
(id, .slot = 2)

  give_item(id, "weapon_deagle")
  cs_set_user_bpammo(id, CSW_DEAGLE, 35)

  give_item(id,"weapon_hegrenade")
  give_item(id,"weapon_flashbang")
  give_item(id,"weapon_flashbang")
  give_item(id,"weapon_smokegrenade")
  give_item(id,"item_assaultsuit") 
  give_item
(id, "item_thighpack")

  message_begin(MSG_ALL, get_user_msgid("ScoreAttrib"))
  write_byte(id)
  write_byte(4)
  message_end()
}

public ShowMotdADM(id)
  show_motd(id, "adminka.txt", "Покупка - Админки!")

public ShowMotdVIP(id)
  show_motd(id, "vip.txt", "Покупка - Випка|18+|!")

public event_RoundStart()
{
  round_number++
  arrayset(has_used, false, 32)
}

public event_RestartRound()
  round_number = 0

public event_Damage
(id)
{
   if(!is_user_valid_connected(id))
      return
 
   static attacker
; attacker = get_user_attacker(id)
   static damage; damage = read_data(2)
 
   if
(is_user_valid_connected(attacker) && g_bDamage[attacker] && (get_user_flags(attacker) & VIP_FLAG))
   {
      set_hudmessage(0, 100, 200, -1.0, 0.55, 2, 0.1, 4.0, 0.02, 0.02, -1)
      ShowSyncHudMsg(attacker, g_MsgSync, "%i", damage)
   }
}

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, slot = 0)
{
    static weapons[32], num, iId
    num 
= 0
    get_user_weapons
(id, weapons, num)

    for(new i = 0; i < num; i++)
    {
        iId = weapons[i]
        ham_strip_user_weapon(id, iId, slot)
    }
Аватара пользователя
Andrey777
 
Сообщения: 147
Зарегистрирован: 09 янв 2012, 03:38
Благодарил (а): 35 раз.
Поблагодарили: 8 раз.

Re: VIP Weapons: исправить kick

Сообщение RevCrew » 07 авг 2016, 21:50

Andrey777, с киком проблем нет. А вот с голосованием

Код: Выделить всё
static players[32], pnum, item_name[128];
  
  
//Голосование за карту
  if (item == 9) {
    get_players(players, pnum, "ch");
    
    for 
(new i; i < pnum; i++) {
      if (get_user_flags(players[i]) & ADMIN_LEVEL_A) {
        return ITEM_DISABLED;
      }
    }
  }
  else if (item == 7) {
    formatex(item_name, charsmax(item_name), "Дамагер \r[%sключен\r]", g_bDamage[id] ? "\yВ" : "\dВы");
    menu_item_setname (menu, item, item_name);
  }


>>
Код: Выделить всё

  static item_name
[128];
  if (item == 7) {
    formatex(item_name, charsmax(item_name), "Дамагер \r[%sключен\r]", g_bDamage[id] ? "\yВ" : "\dВы");
    menu_item_setname (menu, item, item_name);
  
Аватара пользователя
RevCrew
Скриптер
 
Сообщения: 1648
Зарегистрирован: 15 июл 2013, 20:45
Благодарил (а): 273 раз.
Поблагодарили: 357 раз.
Языки программирования: Unkown


Вернуться в Вопросы по AMXX и его плагинам

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 11