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

Prefix Manager

Новые плагины для AMX Mod X, которые были добавлены в базу плагинов нашего форума. Плагины еще не утвеждены администратором/модератором.

Модератор: Leonidddd

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

Данный раздел форума служит для добавления новых плагинов в базу нашего форума. После того, как администратор/модератор утвердит плагин, он будет перемещен в раздел "Утвежденные плагины".

Правила при добавлении новых плагинов:

1. При вставке кода плагина необходимо использовать тег [pawn], в противном случае, если тег [pawn] не отображает ваш код, можно использовать тег [code].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. Обязательно выкладывайте исходник sma плагина. Запрещено выкладывать amxx файл.
4. Обязательно указывайте настоящих авторов плагина, если вы использовали чьи-то наработки или функции, указывайте их авторов в сообщении.
5. Необходимо заполнять детальную информацию о плагине (версию, настройки, используемые модули, список изменений и другую).

Prefix Manager

Сообщение Mon[str] » 01 июн 2012, 16:17

Автор: Mon[str]

Версия: 2.0
Плагин переписан.
Специально для тех кто просил -> Вы должны зарегистрироваться, чтобы видеть ссылки.

Описание:
Думаю многим пригодится данный плагин.
Плагин подойдет под все моды.

Суть данного плагина в том, что он дает префикс к имени игрока по Name, Steam, Ip.
Необходимо вписать в файл Prefix.ini(в кавычках) саму информацию о игроке и через пробел префикс, можно цветной.

Также сделан комментарий т.к. если вы будете давать не по имени то можно запутаться.

Используемые модули:
amxmodx
Cstrike
WPMGPrintChatColor

Настройки:
Синтаксис:
"Name | Steam | Ip" "Prefix"; Example




Комментарий плагина:
[spoiler][pawn]
  1. /*

  2.         CHANGES LIST:

  3.         {

  4.                 [1.0][25.02.2012] -> First Release;

  5.                 [2.0][16.08.2012] ->

  6.                 {

  7.                         BugFix;

  8.                         Update Code;

  9.                         Change Form to Hook_Say();

  10.                         Add Bits;

  11.                 }

  12.         }

  13.                

  14.         THANKS:

  15.         {

  16.                 TurangaLeela -> For the help and continued support;

  17.                 PRoSToTeM@   -> For the help;

  18.                 Plrip        -> For testing;

  19.         }      

  20. */
[/pawn][/spoiler]

PS
Думаю плагин будет конфликтовать с другими плагинами вида Colored Translite.
Префиксы на русском работают не корректно, в следующих версиях постараюсь исправить.
Исправлен баг с ip, теперь префикс можно поставить по любым трем значениям(name, steam, ip).

Prefix_Manager.rar
Последний раз редактировалось Mon[str] 11 фев 2014, 13:03, всего редактировалось 4 раз(а).
Аватара пользователя
Mon[str]
 
Сообщения: 1166
Зарегистрирован: 26 июл 2011, 12:12
Откуда: Россия -> Иркутская область
Благодарил (а): 99 раз.
Поблагодарили: 273 раз.
Опыт программирования: Около года
Языки программирования: Counter-Strike 1.6
C++

Re: Prefix Manager

Сообщение Plrip » 04 ноя 2014, 13:42


Status:
Аватара пользователя
Plrip
Скриптер
 
Сообщения: 2903
Зарегистрирован: 03 дек 2011, 19:33
Откуда: Ukraine
Благодарил (а): 237 раз.
Поблагодарили: 603 раз.
Языки программирования: Counter-Strike 1.6
X-Ray
Killing-Floor [low]

Re: Prefix Manager

Сообщение TauJIeP » 04 ноя 2014, 13:48

Plrip, Я не силен в этой сфере чтобы переделывать плагины.
Аватара пользователя
TauJIeP
 
Сообщения: 48
Зарегистрирован: 16 ноя 2012, 01:39
Откуда: Казахстан Уральск
Благодарил (а): 13 раз.
Поблагодарили: 1 раз.
Опыт программирования: Около 6 месяцев
Языки программирования: Counter-Strike 1.6

Re: Prefix Manager

Сообщение Plrip » 04 ноя 2014, 13:53

Ты хотя бы почитал, это даже переделыванием назвать сложно.

Status:
Аватара пользователя
Plrip
Скриптер
 
Сообщения: 2903
Зарегистрирован: 03 дек 2011, 19:33
Откуда: Ukraine
Благодарил (а): 237 раз.
Поблагодарили: 603 раз.
Языки программирования: Counter-Strike 1.6
X-Ray
Killing-Floor [low]

Re: Prefix Manager

Сообщение TauJIeP » 04 ноя 2014, 13:55

Про Plrip, Прочитал, нужно чтото удалитья хз что)

Код: Выделить всё
/*
   CHANGES LIST:
   {
      [1.0][25.02.2012] -> First Release;
      [2.0][16.08.2012] ->
      {
         BugFix;
         Update Code;
         Change Form to Hook_Say();
         Add Bits;
      }
   }
      
   THANKS:
   {
      TurangaLeela -> For the help and continued support;
      PRoSToTeM@   -> For the help;
      Plrip        -> For testing;
   }   
*/

#include <amxmodx>
#include <cstrike>
#include <WPMGPrintChatColor>

#pragma semicolon             1
#pragma ctrlchar            '\'

#define PLUGIN "Prefix_Manager"
#define VERSION "2.0"
#define AUTHOR "Mon[str]"

#define _BIT_TOTAL            2
#define _BIT_PREFIX            0
#define _BIT_CONNECTED            1

#define _STATUS_ALIVE            0
#define _STATUS_DEAD            1
#define _STATUS_SPECTATOR         2

#define MAX_LEN               32

#define PM_CONFIG            "addons/amxmodx/configs/Prefix.ini"

#define _Bit_Add(%2,%1)            (g_iBits[%1] |= 1 << (%2 - 1))
#define _Bit_Sub(%2,%1)            (g_iBits[%1] &= ~(1 << (%2 - 1)))
#define _Bit_Exists(%2,%1)         (g_iBits[%1] & 1 << (%2 - 1))

#define IndexFix(%1)            (%1 - 1)


new Trie:g_tData;
new g_szPrefix[32][MAX_LEN];
new g_szNames[32][32];

new g_iBits[_BIT_TOTAL];
new g_iStatus[32];
new g_iMaxplayers;

public plugin_init()
{
   g_tData = TrieCreate();
   
   g_iMaxplayers = get_maxplayers();
   
   register_plugin(PLUGIN, VERSION, AUTHOR);
   
   register_clcmd("say", "Hook_Say");
   register_clcmd("say_team", "Hook_Say");
   
   register_event("ResetHUD", "EventResetHUD", "be");
   register_event("DeathMsg", "EventDeathMessage", "a");
   register_event("Spectator", "EventSpectation", "a");
}

public plugin_cfg()
{   
   if(!file_exists(PM_CONFIG))
   {
      set_fail_state("ERROR: [PM] Config is Not Found!!!");
      
      return;
   }
   
   new _:iFile;
   
   if((iFile = fopen(PM_CONFIG, "r")))
   {   
      new
      szBuffer[100],
      szPrefix[32],
      szKey[32];
      
      while(fgets(iFile, szBuffer, charsmax(szBuffer)))
      {   
         if(szBuffer[0])
         {   
            RemoveComment(szBuffer, charsmax(szBuffer));
            trim(szBuffer);
               
            strtok(szBuffer, szKey, charsmax(szKey), szPrefix, charsmax(szPrefix), ' ');
            
            remove_quotes(szKey);
            remove_quotes(szPrefix);
         
            TrieSetString(g_tData, szKey, szPrefix);
         }
      }
   }
}

public client_connect(id)
{
   get_user_name(id, g_szNames[IndexFix(id)], 31);
   
   _Bit_Add(id, _BIT_CONNECTED);
}

public client_infochanged(id)
{
   get_user_info(id, "name", g_szNames[IndexFix(id)], 31);
}

public client_authorized(id)
{
   enum _:_INFO
   {
      _:_STEAM,
      _:_IP
   };
   
   new szInformation[_INFO][32];
   
   get_user_authid(id, szInformation[_STEAM], 31);
   get_user_ip(id, szInformation[_IP], 31, 1);
   
   if(TrieKeyExists(g_tData, g_szNames[IndexFix(id)]))
   {
      TrieGetString(g_tData, g_szNames[IndexFix(id)], g_szPrefix[IndexFix(id)], 31);
      
      _Bit_Add(id, _BIT_PREFIX);
   }
      
   else if(TrieKeyExists(g_tData, szInformation[_STEAM]))
   {
      TrieGetString(g_tData, szInformation[_STEAM], g_szPrefix[IndexFix(id)], 31);
      
      _Bit_Add(id, _BIT_PREFIX);
   }

   else if(TrieKeyExists(g_tData, szInformation[_IP]))
   {
      TrieGetString(g_tData, szInformation[_IP], g_szPrefix[IndexFix(id)], 31);
      
      _Bit_Add(id, _BIT_PREFIX);
   }
}

public Hook_Say(id)
{
   if(_Bit_Exists(id, _BIT_PREFIX) && _Bit_Exists(id, _BIT_CONNECTED))
   {
      new _:iTeam;
      
      if((iTeam = _:cs_get_user_team(id)))
      {
         new
         szMessage[70],
         szArgv[9];
         
         enum _:_TYPE
         {
            _CLCMD_INFO,
            _CLCMD_TEAM
         };
         
         static _:iTeamColor[] =
         {
            PRINT_COLOR_RED,
            PRINT_COLOR_BLUE,
            PRINT_COLOR_GREY
         };
         
         static szPlayerStatus[_TYPE][][] =
         {
            {
               "",
               "*DEAD*",
               "*SPEC*"
            },
            
            {
               "(Terrorist)",
               "(Counter-Terrorist)",
               "(Spectator)"
            }   
         };
      
         read_args(szMessage, charsmax(szMessage));
         remove_quotes(szMessage);
         
         read_argv(0, szArgv, charsmax(szArgv));
         
         while(replace(szMessage, charsmax(szMessage), "%", "")) {}
      
         if(!szMessage[0])
            return 1;
         
         if(equal(szArgv, "say"))
         {      
            PrintChatColor
            (
               0,
               iTeamColor[IndexFix(iTeam)],
               "%s%s%s%s !t%s!y :  %s",
               g_iStatus[IndexFix(id)] == _STATUS_ALIVE ? "" : "!y",
               szPlayerStatus[_CLCMD_INFO][g_iStatus[IndexFix(id)]],
               g_iStatus[IndexFix(id)] == _STATUS_ALIVE ? "!y" : " ",
               g_szPrefix[IndexFix(id)],
               g_szNames[IndexFix(id)],
               szMessage
            );
         }   
   
         else
         {
            for(new _:i = 1; i <= g_iMaxplayers; i++)
            {
               if(_Bit_Exists(i, _BIT_CONNECTED))
               {
                  if(_:cs_get_user_team(i) == iTeam)
                  {
                     PrintChatColor
                     (
                        i,
                        iTeamColor[IndexFix(iTeam)],
                        "!y%s %s !t%s!y :  %s",
                        szPlayerStatus[_CLCMD_TEAM][IndexFix(iTeam)],
                        g_szPrefix[IndexFix(id)],
                        g_szNames[IndexFix(id)],
                        szMessage
                     );
                  }
               }
            }
         }   
         
         return 1;   
      }
   }
   
   return 0;
}

public EventResetHUD(id)
{
   g_iStatus[IndexFix(id)] = _STATUS_ALIVE;
}

public EventDeathMessage()
{
   g_iStatus[IndexFix(read_data(2))] = _STATUS_DEAD;
}

public EventSpectation()
{
   g_iStatus[IndexFix(read_data(1))] = _STATUS_SPECTATOR;
}

public client_disconnect(id)
{
   if(_Bit_Exists(id, _BIT_PREFIX))
   {
      g_szPrefix[IndexFix(id)][0] = '\0';
      
      _Bit_Sub(id, _BIT_PREFIX);
   }
   
   _Bit_Sub(id, _BIT_CONNECTED);
}

stock RemoveComment(szString[], _:iLen)
{
   for(new _:i = 0; i <= iLen; i++)
   {
      if(szString[i] == ';')
      {
         szString[i] = '\0';
         
         return;
      }
   }
}
Аватара пользователя
TauJIeP
 
Сообщения: 48
Зарегистрирован: 16 ноя 2012, 01:39
Откуда: Казахстан Уральск
Благодарил (а): 13 раз.
Поблагодарили: 1 раз.
Опыт программирования: Около 6 месяцев
Языки программирования: Counter-Strike 1.6

Re: Prefix Manager

Сообщение en_evgeniy » 10 ноя 2014, 15:43

жалко не русский, но все же выручил!
Аватара пользователя
en_evgeniy
 
Сообщения: 2
Зарегистрирован: 07 ноя 2014, 11:10
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
Опыт программирования: Около 6 месяцев
Языки программирования: Counter-Strike 1.6

Пред.

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

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

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