Пользователи, просматривающие тему (Пользователей: 0, Гостей: 0)

  1. deadarhangel

    Регистрация:
    19.06.15
    Сообщения:
    99
    Симпатии:
    32
    Пол:
    Мужской
    Плагин: Crux Ansata
    Автор
    : DUKKHAZ0R
    Версия: 1.5

    Описание:

    Данный плагин добавляет на сервер талисман жизни, у человека имеющего его будет восстанавливаться 5 хп каждые 2 секунды. В начале раунда рандомному игроку выпадает талисман жизни, если человек умирает, то любой другой сможет подобрать талисман. Минимальное количество игроков для работы плагина, количество восстанавливаемого здоровья и интервал восстановления можно настроить в исходнике.

    Настройки:
    Код:
    #define SCREENFADE               //Затемнять экран при регенерации здоровья
    #define MIN_PLAYERS 5            //Минимальное кол-во игроков для работы плагина
    #define ROUND_ACCESS 2            //С какого раунда доступен талисман
    #define GIVE_HEALTH 7            //Кол-во выдаваемого здоровья
    #define INTERVAL_REGENERATION 2.0   //Интервал между восстановлением
    Установка:
    • Распаковываем архив
    • Компилируем .sma
    • Модельку crux_ansata.mdl кидаем в папку /models
     

    Вложения:

    • crux_ansata.7z
      Размер файла:
      35,4 КБ
      Просмотров:
      22
    Последнее редактирование модератором: 22.01.17
    Alexander071097 и AmDmKo нравится это.
  2. kasperch1k

    Регистрация:
    10.01.17
    Сообщения:
    68
    Симпатии:
    8
    Пол:
    Мужской
    Skype:
    kasperchik6
    Вот версия 1.5 думаю мож кому пригодится)))
    Код:
    #include <amxmodx>
    #include <engine>
    #include <cstrike>
    #include <fakemeta_util>
    #define MIN_PLAYERS 5
    #define ROUND_ACCESS 2
    #define GIVE_HEALTH 7
    #define INTERVAL_REGENERATION 2.0
    new const g_szModel[] = "models/crux_ansata.mdl";
    new g_iPlayerId, g_iRoundCounter, szName[32];
    public plugin_init()
    {
       register_plugin("Talisman_Crux_Ansata", "1.5", "DUKKHAZ0R");
       
       register_touch("crux_ansata", "player", "fw_TouchEntity");
       
       register_logevent("eRoundStart", 2, "1=Round_Start");
       register_event("DeathMsg", "eDeathMsg", "a", "1>0");
       register_event("TextMsg", "eRoundRestart", "a", "2&#Game_C", "2&#Game_w");
       register_concmd("amx_talisman", "GiveTalisman", ADMIN_LEVEL_H);
       register_clcmd("say /talisman", "CmdBuyTalisman")
       
       set_task(INTERVAL_REGENERATION, "RegenerationHealth", .flags="b");
    }
    public plugin_precache()
    {
       precache_model(g_szModel);
    }
    public client_disconnect(id)
    {
       if(g_iPlayerId == id)
          SpawnAnsata(id);
    }
    public GiveTalisman(id)
    {
       if( !(get_user_flags(id) & ADMIN_LEVEL_H) )
          return PLUGIN_HANDLED;
       static iEnt_give;
       while((iEnt_give = find_ent_by_class(iEnt_give, "crux_ansata")))
          remove_entity(iEnt_give);
       g_iPlayerId = id;
       get_user_name(g_iPlayerId, szName, charsmax(szName));
       ChatColor(0, "^4[TALISMAN] ^1Игрок ^3%s ^1взял 'Талисман жизни'", szName);
       return PLUGIN_HANDLED;
    }
       
    public eRoundRestart()
       g_iRoundCounter = 0;
    public CmdBuyTalisman(id)
    {
       if ( !is_user_alive(id))
       {
          //client_print(id,print_chat, "Что бы взять Талисман вы должны быть живы!")
          return PLUGIN_HANDLED;
       }
       
       if(cs_get_user_money(id) < 1000)
       {
          ChatColor(id, "^4[TALISMAN] ^1Недостаточно средств для покупки 'Талисмана жизни'. Цена $1000");
       }
       else
       {
          static iEnt;
          while((iEnt = find_ent_by_class(iEnt, "crux_ansata")))
             remove_entity(iEnt);
          g_iPlayerId = id;
          get_user_name(g_iPlayerId, szName, charsmax(szName));
          ChatColor(0, "^4[TALISMAN] ^1Игрок ^3%s ^1купил 'Талисман жизни'. Тестовая цена = $1000", szName);
          cs_set_user_money(id,cs_get_user_money(id) - 300);
       }
       return PLUGIN_HANDLED;
    }
    public eRoundStart()
    {
       if(++g_iRoundCounter < ROUND_ACCESS || get_playersnum() < MIN_PLAYERS)
          return;
          
       static iEnt;
       
       while((iEnt = find_ent_by_class(iEnt, "crux_ansata")))
          remove_entity(iEnt);
          
       static apPlayers[32], iPlayers;
       get_players(apPlayers, iPlayers, "ach");
       
       g_iPlayerId = apPlayers[random(iPlayers-1)];
       get_user_name(g_iPlayerId, szName, charsmax(szName));
       
       ChatColor(0, "^4[TALISMAN] ^1Игроку ^3%s ^1выдан 'Талисман жизни'", szName);
    }
    public eDeathMsg()
    {
       if(read_data(2) == g_iPlayerId)
          SpawnAnsata(g_iPlayerId);
    }
    public fw_TouchEntity(iEnt, id)
    {
       if(!is_valid_ent(iEnt) || !is_user_alive(id) || g_iPlayerId)
          return 1;
       entity_set_int(iEnt, EV_INT_flags, FL_KILLME);
       get_user_name(g_iPlayerId = id, szName, charsmax(szName));
       ChatColor(0,"^4[TALISMAN] ^1Игрок ^3%s ^1подобрал 'Талисман жизни'",szName);
       return 1;
    }
    public RegenerationHealth()
    {
       if(!g_iPlayerId || get_playersnum() < MIN_PLAYERS)
          return;
       if(!g_iPlayerId)
          return;
     
       static Float:fHealth, MsgId_Health; fHealth = entity_get_float(g_iPlayerId, EV_FL_health);
       static Float:fArmor, MsgId_Armor; fArmor = entity_get_float(g_iPlayerId, EV_FL_armorvalue);
     
       if(!MsgId_Health) MsgId_Health = get_user_msgid("Health");
     
       if(fHealth < 120 && is_user_alive(g_iPlayerId))
       {
          static Float:giveHealth; giveHealth = (fHealth + GIVE_HEALTH) < 120 ? float(GIVE_HEALTH) : (120 - fHealth);
          entity_set_float(g_iPlayerId, EV_FL_health, fHealth + giveHealth);
          message_begin(MSG_ONE_UNRELIABLE, MsgId_Health, _, g_iPlayerId);
          write_byte(floatround(fHealth + giveHealth));
          message_end();
       }
       else if(fArmor < 100 && is_user_alive(g_iPlayerId))
       {
          static Float:giveArmor; giveArmor = (fArmor + GIVE_HEALTH) < 100 ? float(GIVE_HEALTH) : (100 - fArmor);
          entity_set_float(g_iPlayerId, EV_FL_armorvalue, fArmor + giveArmor);
       }
    }
    stock SpawnAnsata(id)
    {
       static Float:fOrigin[3];
       entity_get_vector(id, EV_VEC_origin, fOrigin);
       
       new iEnt = create_entity("info_target");
       
       if(!is_valid_ent(iEnt))
          return;
       
       entity_set_vector(iEnt, EV_VEC_origin, fOrigin);
       entity_set_string(iEnt, EV_SZ_classname, "crux_ansata");
       entity_set_int(iEnt, EV_INT_solid, SOLID_TRIGGER);
       entity_set_int(iEnt, EV_INT_movetype, MOVETYPE_TOSS);
    //   entity_set_int(iEnt, EV_INT_effects, 8);
       fm_set_rendering(iEnt,kRenderFxGlowShell,250,250,0,kRenderNormal,32);
       entity_set_model(iEnt, g_szModel);
       entity_set_size(iEnt, Float:{-16.0,-16.0,-16.0}, Float:{16.0,16.0,16.0});
       g_iPlayerId = 0;
    //   ChatColor(g_iPlayerId = 0, "^4[TALISMAN] ^3%s ^1потерял талисман жизни", szName);
    }
    stock ChatColor(const id, const szMessage[], any:...)
    {
       static szBuffer[191], apPlayers[32], iPlayers; iPlayers = 1;
       vformat(szBuffer, charsmax(szBuffer), szMessage, 3);
       if(id)
       {
          if(!is_user_connected(id)) return;
          apPlayers[0] = id;
          iPlayers = 1;
       }
       else get_players(apPlayers, iPlayers, "ch");
       for(new i;i < iPlayers; i++)
       {
          message_begin(MSG_ONE_UNRELIABLE, 76, .player = apPlayers[i]);
          write_byte(apPlayers[i]);
          write_string(szBuffer);
          message_end();
       }
    }
     
    gudaus нравится это.
  3. Vinchester

    Регистрация:
    16.08.16
    Сообщения:
    5
    Симпатии:
    0
    Пол:
    Мужской
    Можно сделать что бы на опреденых картах он отключался?
     
  4. Владислав322

    Регистрация:
    27.11.16
    Сообщения:
    76
    Симпатии:
    7
    Пол:
    Мужской
    Допустим у вас есть плагин amx_parachute.amxx и вы хотите чтобы он работал только на карте awp_zigzag, а на остальных был выключен. Для этого делаем следующее:
    1) Заходим в cstrike/addons/amxmodx/configs и создаём в этой директории папку под названием maps
    2) В только что созданной папке создаём текстовый документ под названием plugins-awp_zigzag и вписываем в него название плагина.
    3) Закрываем документ, сохраняем изменения и меняем расширение документа .txt на .ini

    Теперь пример с добавлением конфига для карты
    Допустим вы хотите сделать отдельный конфиг для карты de_aztec.
    1) Заходим в cstrike/addons/amxmodx/configs и создаём в этой директории папку под названием maps
    2) В только что созданной папке создаём текстовый документ под названием de_aztec.cfg
    3) Теперь вписываем в этот файл необходимые настройки. Допустим вы хотите добавить фриз тайм и установить лимит на карту в 25 мин. В таком случае нужно будет вписать следующее:
    mp_freezetime 5
    mp_timelimit 25

    Теперь независимо от настроек вашего server.cfg на карте de_aztec будет фриз тайм в 5 сек и лимит игры в 25 мин.

    Так же можно использовать конфиги и набор плагинов для карт с определённым префиксом.
    Представте что у вас есть плагин hitbox.ammx и вы хотите чтобы он работал на всех aim_ картах.
    Делаем следующее:
    1) Заходим в cstrike/addons/amxmodx/configs и создаём в этой директории папку под названием maps
    2) В только что созданной папке создаём текстовый документ под названием plugins-aim и вписываем в него название плагина.
    3) Закрываем документ, сохраняем изменения и меняем расширение документа .txt на .ini

    Допустим у вас на сервере разнообразные карты и вы хотите установить лимит времени и фризтайм только на de_ карты.
    1) Заходим в cstrike/addons/amxmodx/configs и создаём в этой директории папку под названием maps
    2) В только что созданной папке создаём текстовый документ под названием prefix_de.cfg
    3) Теперь вписываем в этот файл необходимые настройки. Например:
    mp_freezetime 5
    mp_timelimit 25

    Теперь на всех de_ картах независимо от настроек server.cfg будет заданный лимит времени и фриз тайм.
     
  5. Vinchester

    Регистрация:
    16.08.16
    Сообщения:
    5
    Симпатии:
    0
    Пол:
    Мужской
    Ну можно и так,номне бы что бы на картах с префиксом 35hp_ и aim_ отключался плагин.
     
  6. gudaus Команда форума

    Регистрация:
    27.02.15
    Сообщения:
    1.689
    Симпатии:
    1.249
    Пол:
    Мужской
    @Vinchester,
    1) Заходим в cstrike/addons/amxmodx/configs и создаём в этой директории папку под названием maps
    2) В только что созданной папке создаём текстовый документ под названием plugins-aim.ini и вписываем в него <название плагина> disabled
    Пример:
    В cstrike/addons/amxmodx/configs/maps создали файл plugins-aim.ini и в него вписали 123.amxx disabled
    123.amxx будет отключен на всех картах типа aim_название