Поиск Поиск сrux_ansata

Статус
В этой теме нельзя размещать новые ответы.
Сообщения
43
Реакции
-4
Помог
2 раз(а)
Всем привет ребят, Если есть у кого нормальный исходник этого плагина, поделитесь пожалуйста?

Искал везде его, но они все с багами. Либо вообще не работают.
 

Вложения

Сообщения
2,713
Реакции
2,995
Помог
59 раз(а)
Лишь поиском я нашёл некоторые доработанные версии. Одна из них: https://goldsrc.ru/threads/1902/
Вообще, я бы рекомендовал заказать написание данного плагина (это не дорого выйдет, в районе 300-500руб) у нормального исполнителя.

P.S: это не рекомендуется к использованию.

Код:
#include <amxmodx>
#include <engine>
 
#define MIN_PLAYERS 5
#define ROUND_ACCESS 3
#define GIVE_HEALTH 5
#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("Crux Ansata", "1.0", "DUKKHAZ0R");
   register_cvar("crux_ansata", "1.0", FCVAR_SERVER|FCVAR_SPONLY);
    
   register_touch("crux_ansata", "player", "fw_TouchEntity");
    
   register_event("HLTV", "eRoundStart", "a", "1=0", "2=0");
   register_event("DeathMsg", "eDeathMsg", "a", "1>0");
   register_event("TextMsg", "eRoundRestart", "a", "2&#Game_C", "2&#Game_w");
    
   set_task(INTERVAL_REGENERATION, "RegenerationHealth", .flags="b");
}
 
public plugin_precache()
{
   precache_model(g_szModel);
}
 
public client_disconnect(id)
   if(g_iPlayerId == id) g_iPlayerId = 0;
    
public eRoundRestart()
   g_iRoundCounter = 0;
 
public eRoundStart()
{
   if(++g_iRoundCounter < ROUND_ACCESS || get_playersnum() < MIN_PLAYERS || g_iPlayerId)
      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 = random_num(1, iPlayers);
   get_user_name(g_iPlayerId, szName, charsmax(szName));
    
   ChatColor(0, "^4[CA] ^3%s ^1выпал талисман жизни.", szName);
}
 
public eDeathMsg()
{
   static pVictim, Float:flOrigin[3]; pVictim = read_data(2);
    
   if(pVictim == g_iPlayerId)
   {
      new iEnt = create_entity("info_target");
      
      if(!is_valid_ent(iEnt))
         return;
      
      entity_get_vector(pVictim, EV_VEC_origin, flOrigin);
      entity_set_vector(iEnt, EV_VEC_origin, flOrigin);
      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_NONE);
      entity_set_int(iEnt, EV_INT_effects, 8);
      entity_set_model(iEnt, g_szModel);
      entity_set_size(iEnt, Float:{-16.0,-16.0,-16.0}, Float:{16.0,16.0,16.0});
      ChatColor(g_iPlayerId = 0, "^4[CA] ^3%s ^1потерял талисман жизни.", szName);
   }
}
 
public fw_TouchEntity(iEnt, id)
{
   if(!is_valid_ent(iEnt))
      return;
      
   get_user_name(g_iPlayerId = id, szName, charsmax(szName));
   ChatColor(0,"^4[CA] ^3%s ^1поднял талисман жизни.",szName);
    
   entity_set_int(iEnt, EV_INT_flags, FL_KILLME);
}
 
public RegenerationHealth()
{
   if(!g_iPlayerId || get_playersnum() < MIN_PLAYERS)
      return;
    
   static Float:fHealth, MsgId_Health; fHealth = entity_get_float(g_iPlayerId, EV_FL_health);
    
   if(!MsgId_Health) MsgId_Health = get_user_msgid("Health");
    
   if(fHealth + GIVE_HEALTH < 100 && is_user_alive(g_iPlayerId))
   {
      entity_set_float(g_iPlayerId, EV_FL_health, (fHealth + float(GIVE_HEALTH)));
      
      message_begin(MSG_ONE_UNRELIABLE, MsgId_Health, _, g_iPlayerId);
      write_byte(floatround(fHealth) + GIVE_HEALTH);
      message_end();
      
      message_begin(MSG_ONE_UNRELIABLE, 98, _, g_iPlayerId);
      write_short(1<<10);
      write_short(1<<10);
      write_short(0x0000);
      write_byte(0);
      write_byte(255);
      write_byte(0);
      write_byte(40);
      message_end();
   }
}
 
stock ChatColor(const pPlayer, const szMessage[], any:...)
{
   static szBuffer[191], apPlayers[32], iPlayers;
   vformat(szBuffer, charsmax(szBuffer), szMessage, 3);
   if(pPlayer)
   {
      if(!is_user_connected(pPlayer)) return;
      apPlayers[0] = pPlayer;
      iPlayers = 1;
   }
   else get_players(apPlayers, iPlayers, "ch");
   for(new i; i < iPlayers; i++)
   {
      message_begin(MSG_ONE_UNRELIABLE, 76, _, apPlayers[i]);
      write_byte(apPlayers[i]);
      write_string(szBuffer);
      message_end();
   }
}
 
Сообщения
186
Реакции
43
Помог
4 раз(а)
раньше мне делали пару фиксов сделали хз актуально или нет
Код:
#include <amxmodx>
#include <engine>

//#define SCREENFADE              // Затемнять экран при регенерации здоровья
//#define RENDERING               // Подсветка игрока при регенерации здоровья
#define MIN_PLAYERS   4           // Минимальное кол-во игроков для работы плагина
#define ROUND_ACCESS  1           // С какого раунда доступен талисман
#define GIVE_HEALTH   5           // Кол-во выдаваемого здоровья
#define MAX_HEALTH    130         // Максимальное кол-во выдаваемого здоровья игроку
#define INTERVAL_REGENERATION 2.0   // Интервал между восстановлением

new const g_szModel[] = "models/Energy4000.mdl";

new g_iPlayerId, g_iRoundCounter, szName[32];

#if defined SCREENFADE
new g_MsgScreenFade;
new Float:g_fTimeGlare[33];
#endif

public plugin_init()
{
   register_plugin("Crux Ansata", "2.0", "DUKKHAZ0R | AcE");
   
   register_touch("Energy4000", "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");
   
    #if defined SCREENFADE
    register_event("ScreenFade", "EventScreenFade", "b", "4=255", "5=255", "6=255");
    g_MsgScreenFade = get_user_msgid("ScreenFade");
    #endif

    set_task(INTERVAL_REGENERATION, "RegenerationHealth", .flags="b");
}

#if defined SCREENFADE
public EventScreenFade(id)
    g_fTimeGlare[id] = read_data(1) / 4096.0 + get_gametime();
#endif

public plugin_precache()
   precache_model(g_szModel);

public client_disconnect(id)
{
   if(g_iPlayerId == id)
      SpawnAnsata(id);
}

public eRoundRestart()
{
   g_iRoundCounter = 0;
   
   if(g_iPlayerId)
   {
#if defined RENDERING
      set_rendering(g_iPlayerId);
#endif
      g_iPlayerId = 0;
   }
}

public eRoundStart()
{
   if(++g_iRoundCounter < ROUND_ACCESS || get_playersnum() < MIN_PLAYERS || g_iPlayerId)
      return;
   
   static iEnt;
   
   while((iEnt = find_ent_by_class(iEnt, "Energy4000")))
      remove_entity(iEnt);
   
   static apPlayers[32], iPlayers;
   get_players(apPlayers, iPlayers, "ach");
   
   g_iPlayerId = apPlayers[random(iPlayers)];
   
   get_user_name(g_iPlayerId, szName, charsmax(szName));
   ChatColor(0, "^4[Talisman] ^3%s ^1выпал талисман жизни.", szName);
   
#if defined RENDERING
   set_rendering(g_iPlayerId, kRenderFxGlowShell, 7, 202, 43, kRenderNormal, 25);
#endif
}

public eDeathMsg()
{
   if(read_data(2) != g_iPlayerId)
      return
   
#if defined RENDERING
   set_rendering(g_iPlayerId);
#endif
   
   SpawnAnsata(g_iPlayerId);
}

public fw_TouchEntity(iEnt, id)
{
   if(!is_valid_ent(iEnt))
      return;
   
   remove_entity(iEnt);
   
   get_user_name(g_iPlayerId = id, szName, charsmax(szName));
   ChatColor(0, "^4[Talisman] ^3%s ^1поднял талисман жизни.", szName);
   
#if defined RENDERING
   set_rendering(g_iPlayerId, kRenderFxGlowShell, 7, 202, 43, kRenderNormal, 25);
#endif
}

public RegenerationHealth()
{
   if(!g_iPlayerId || get_playersnum() < MIN_PLAYERS)
      return;
   
   static Float:fHealth, MsgId_Health; fHealth = entity_get_float(g_iPlayerId, EV_FL_health);
   
   if(!MsgId_Health) MsgId_Health = get_user_msgid("Health");
   
   if(fHealth > 0 && fHealth < 155)
   {
      static Float:fNewHealth; fNewHealth = float_min(fHealth + GIVE_HEALTH, MAX_HEALTH.0);
     
      entity_set_float(g_iPlayerId, EV_FL_health, fNewHealth);
     
      message_begin(MSG_ONE_UNRELIABLE, MsgId_Health, _, g_iPlayerId);
      write_byte(floatround(fNewHealth));
      message_end();
     
        #if defined SCREENFADE
        if (get_gametime() >= g_fTimeGlare[g_iPlayerId])
        {
            message_begin(MSG_ONE_UNRELIABLE, g_MsgScreenFade, _, g_iPlayerId)
            write_short(1<<10); write_short(1<<10); write_short(0x0000); write_byte(0);
            write_byte(255); write_byte(0); write_byte(40); message_end();
        }
        #endif
    }
}

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, "Energy4000");
   entity_set_int(iEnt, EV_INT_solid, SOLID_TRIGGER);
   entity_set_int(iEnt, EV_INT_movetype, MOVETYPE_NONE);
   entity_set_int(iEnt, EV_INT_effects, 8);
   entity_set_model(iEnt, g_szModel);
   entity_set_size(iEnt, Float:{-16.0,-16.0,-16.0}, Float:{16.0,16.0,16.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();
   }
}

stock Float:float_min(Float:value1, Float:value2)
   return ((value1 < value2) ? value1 : value2);
 

Вложения

Последнее редактирование:
Сообщения
1,668
Реакции
1,495
Помог
24 раз(а)
У меня есть на реапи.
 
Сообщения
43
Реакции
-4
Помог
2 раз(а)
MayroN, Спасибо, но моделька у меня уже готовая есть!
18 Сен 2020
Тему можно закрыть!
 
Статус
В этой теме нельзя размещать новые ответы.

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу