Top awards проблемы

artiom555

Пользователь
Регистрация
2 Мар 2018
Сообщения
89
Симпатии
2
Пол
Мужской
#1
Привет народ подскажите что я не так делаю плагин как вы уже поняли даёт флаги игрокам попавшим в топ 5 , плагин как бы и работаёт только проблема в том что флаги выдаются не рабочие то есть у меня Vipka стоит на флаге ADMIN_LEVEL_B //Flag "n" а модель випки на ADMIN_LEVEL_E //Flag "q" выставил я в конфиге чтоб игрокам довались флагин за топ 1-5 "nq" флаги даются только вот модель випки не даёт и ещё у меня граната хилка вместо смока стоит так вот гранату даёт только простую смок и префикс вип не даёт хоть он стоит на флаге "n" а если через amxbans дою флаги игроку "nq" то всё работает :/ Плагины подобного типа ставил проверял тоже самое .


Код:
#include <amxmodx>
#include <reapi>
#include <csx>

#if AMXX_VERSION_NUM < 183
   #include <colorchat>
   #define client_disconnected   client_disconnect
#endif

/* SETTINGS */
//#define IGNORE_FLAGS "t"   
   // Игнорируемые флаги
   // Закомментировать, если не нужно игнорируемые флаги
  
#define TIME 1.0         
   // Каждые n секунды проверить статистику игрока
  
#define   MAX_AWARDS 254     
   // Максимальная кол-во наград

/* DICTIONARY */
//#define   TOP_CHAT_MESSAGE   "^1[^4Top Awards^1] Вы ^3поднялись на %d ^1место. Бонусные флаги: ^4%s"
   // Закомментировать, если не нужно сообщение при поднятие место
  
//#define NO_TOP_CHAT_MESSAGE "^1[^4Top Awards^1] Вы ^3опустились на %d ^1место. ^3Нет бонусных флагов"
   // Закомментировать, если не нужно сообщение при понижение место

/* Do not touch arrays */
new bool:GiveAward[33];
enum _:DATA { FLAGS[32] };
new g_arrAwardData[MAX_AWARDS][DATA], g_iDataSize = 1;

public plugin_init()
{
   register_plugin(" [ReAPI]Top Awards", "1.0", "Dom1no_[KZ]")
   RegisterHookChain(RG_CBasePlayer_Spawn, "client_player_spawn", true);
}

public plugin_cfg()
{
   new szPath[64];
   get_localinfo("amxx_configsdir", szPath, charsmax(szPath));
   add(szPath, charsmax(szPath), "/top_awards.ini");

   new iFile = fopen(szPath, "rt");
   if(!iFile)
   {
      new szError[96];
      formatex(szError, charsmax(szError), "File '%s' not found OR incorrect CHMOD!", szPath);
      set_fail_state(szError);
   }
  
   new szBuffer[MAX_AWARDS];
   while(!feof(iFile))
   {
      fgets(iFile, szBuffer, charsmax(szBuffer));
      trim(szBuffer);
      
      if(!szBuffer[0] || szBuffer[0] == ';')
         continue;
      
      if(parse(szBuffer,
         g_arrAwardData[g_iDataSize][FLAGS], charsmax(g_arrAwardData[][FLAGS])
      ) == 1)   g_iDataSize++;
   }
   fclose(iFile);
}

public client_putinserver(id)   GiveAward [id]= false;
public client_disconnected(id)   GiveAward [id]= false;
public client_player_spawn(id)   set_task(TIME, "ItemAwards", id)

public ItemAwards(id)
{
   #if defined IGNORE_FLAGS
      if(!GiveAward [id]&& get_user_flags(id) & read_flags(IGNORE_FLAGS))
         return
   #endif
  
   new szStats[8];
   new iRank   = get_user_stats(id, szStats, szStats);
   if(iRank < g_iDataSize)
   {
      if(~get_user_flags(id) & read_flags(g_arrAwardData[iRank][FLAGS]))
      {
         set_user_flags(id, read_flags(g_arrAwardData[iRank][FLAGS]))
         #if defined TOP_CHAT_MESSAGE
            ColorChat(id, NORMAL, TOP_CHAT_MESSAGE, iRank, g_arrAwardData[iRank][FLAGS]);
         #endif
         GiveAward [id]= true;
      }
   }
   else
   {
      remove_user_flags(id);
      #if defined NO_TOP_CHAT_MESSAGE
         ColorChat(id, NORMAL, NO_TOP_CHAT_MESSAGE, iRank);
      #endif
      GiveAward [id]= false;
   }
}
 

perfectblood0

Флудер
Команда форума
Администратор
Регистрация
29 Окт 2017
Сообщения
1.136
Симпатии
352
#2
После смены карты все равно не выдаётся ничего?
 

artiom555

Пользователь
Регистрация
2 Мар 2018
Сообщения
89
Симпатии
2
Пол
Мужской
#3
Нет не выдается , мне кажется это проблема в том что плагин не умеет читать флаги через ADMIN_LEVEL_B //Flag "n" флаг "n" даёт но плагин не понимает что на этом флаге стоит модель випки префикс граната хилка но вип он как бы даёт випменю даёт.
 

pantrypei

Пользователь
Регистрация
10 Янв 2018
Сообщения
39
Симпатии
2
Пол
Мужской
#4
Нет не выдается , мне кажется это проблема в том что плагин не умеет читать флаги через ADMIN_LEVEL_B //Flag "n" флаг "n" даёт но плагин не понимает что на этом флаге стоит модель випки префикс граната хилка но вип он как бы даёт випменю даёт.
set_user_flags(id, read_flags(g_arrAwardData[iRank][FLAGS]))
Это строка отвечает за флаги. И он конкретно дает флаги. А этот модели и хилки это ваша проблема!
 

artiom555

Пользователь
Регистрация
2 Мар 2018
Сообщения
89
Симпатии
2
Пол
Мужской
#5
set_user_flags(id, read_flags(g_arrAwardData[iRank][FLAGS]))
Это строка отвечает за флаги. И он конкретно дает флаги. А этот модели и хилки это ваша проблема!
Так модели и хилки стоят на тех флагах каторые я указал чтоб выдовал плагин он выдаёт флаги но модель и хилки не даёт а если я через amxbans выдаю эти флаги то всё нормально значит плагин выдаёт не рабочие флаги я так понимаю :?)
 

georgeml

Пользователь
Регистрация
12 Сен 2017
Сообщения
260
Симпатии
83
#6
artiom555, Флаги не могут быть не рабочие. Автор вашей випки живет на Луне и не понимает, что флаги могут появляться во время игры, а не только при входе на сервер.
 

pantrypei

Пользователь
Регистрация
10 Янв 2018
Сообщения
39
Симпатии
2
Пол
Мужской
#7
Привет народ подскажите что я не так делаю плагин как вы уже поняли даёт флаги игрокам попавшим в топ 5 , плагин как бы и работаёт только проблема в том что флаги выдаются не рабочие то есть у меня Vipka стоит на флаге ADMIN_LEVEL_B //Flag "n" а модель випки на ADMIN_LEVEL_E //Flag "q" выставил я в конфиге чтоб игрокам довались флагин за топ 1-5 "nq" флаги даются только вот модель випки не даёт и ещё у меня граната хилка вместо смока стоит так вот гранату даёт только простую смок и префикс вип не даёт хоть он стоит на флаге "n" а если через amxbans дою флаги игроку "nq" то всё работает :/ Плагины подобного типа ставил проверял тоже самое .


Код:
#include <amxmodx>
#include <reapi>
#include <csx>

#if AMXX_VERSION_NUM < 183
   #include <colorchat>
   #define client_disconnected   client_disconnect
#endif

/* SETTINGS */
//#define IGNORE_FLAGS "t"  
   // Игнорируемые флаги
   // Закомментировать, если не нужно игнорируемые флаги
 
#define TIME 1.0        
   // Каждые n секунды проверить статистику игрока
 
#define   MAX_AWARDS 254    
   // Максимальная кол-во наград

/* DICTIONARY */
//#define   TOP_CHAT_MESSAGE   "^1[^4Top Awards^1] Вы ^3поднялись на %d ^1место. Бонусные флаги: ^4%s"
   // Закомментировать, если не нужно сообщение при поднятие место
 
//#define NO_TOP_CHAT_MESSAGE "^1[^4Top Awards^1] Вы ^3опустились на %d ^1место. ^3Нет бонусных флагов"
   // Закомментировать, если не нужно сообщение при понижение место

/* Do not touch arrays */
new bool:GiveAward[33];
enum _:DATA { FLAGS[32] };
new g_arrAwardData[MAX_AWARDS][DATA], g_iDataSize = 1;

public plugin_init()
{
   register_plugin(" [ReAPI]Top Awards", "1.0", "Dom1no_[KZ]")
   RegisterHookChain(RG_CBasePlayer_Spawn, "client_player_spawn", true);
}

public plugin_cfg()
{
   new szPath[64];
   get_localinfo("amxx_configsdir", szPath, charsmax(szPath));
   add(szPath, charsmax(szPath), "/top_awards.ini");

   new iFile = fopen(szPath, "rt");
   if(!iFile)
   {
      new szError[96];
      formatex(szError, charsmax(szError), "File '%s' not found OR incorrect CHMOD!", szPath);
      set_fail_state(szError);
   }
 
   new szBuffer[MAX_AWARDS];
   while(!feof(iFile))
   {
      fgets(iFile, szBuffer, charsmax(szBuffer));
      trim(szBuffer);
     
      if(!szBuffer[0] || szBuffer[0] == ';')
         continue;
     
      if(parse(szBuffer,
         g_arrAwardData[g_iDataSize][FLAGS], charsmax(g_arrAwardData[][FLAGS])
      ) == 1)   g_iDataSize++;
   }
   fclose(iFile);
}

public client_putinserver(id)   GiveAward [id]= false;
public client_disconnected(id)   GiveAward [id]= false;
public client_player_spawn(id)   set_task(TIME, "ItemAwards", id)

public ItemAwards(id)
{
   #if defined IGNORE_FLAGS
      if(!GiveAward [id]&& get_user_flags(id) & read_flags(IGNORE_FLAGS))
         return
   #endif
 
   new szStats[8];
   new iRank   = get_user_stats(id, szStats, szStats);
   if(iRank < g_iDataSize)
   {
      if(~get_user_flags(id) & read_flags(g_arrAwardData[iRank][FLAGS]))
      {
         set_user_flags(id, read_flags(g_arrAwardData[iRank][FLAGS]))
         #if defined TOP_CHAT_MESSAGE
            ColorChat(id, NORMAL, TOP_CHAT_MESSAGE, iRank, g_arrAwardData[iRank][FLAGS]);
         #endif
         GiveAward [id]= true;
      }
   }
   else
   {
      remove_user_flags(id);
      #if defined NO_TOP_CHAT_MESSAGE
         ColorChat(id, NORMAL, NO_TOP_CHAT_MESSAGE, iRank);
      #endif
      GiveAward [id]= false;
   }
}
Измените код для того, чтобы дали вам модели и хилки. Плагин проверяет место игрока при спавне!
 

artiom555

Пользователь
Регистрация
2 Мар 2018
Сообщения
89
Симпатии
2
Пол
Мужской
#8
Вип как раз даётся а хилка на флаг и модель на флаг это у меня отдельные плагины они стоят на flag "n" флаг даётся а хилка вместо смока и моделька випки и префикс вип нет ;/ может плагин даёт флаг не как ADMIN_LEVEL_B а просто как флаг "n" ?
12 Окт 2018
Измените код для того, чтобы дали вам модели и хилки. Плагин проверяет место игрока при спавне!
Да я не силён в в этом ,))
 

perfectblood0

Флудер
Команда форума
Администратор
Регистрация
29 Окт 2017
Сообщения
1.136
Симпатии
352
#9
Вип как раз даётся а хилка на флаг и модель на флаг это у меня отдельные плагины они стоят на flag "n" флаг даётся а хилка вместо смока и моделька випки и префикс вип нет ;/ может плагин даёт флаг не как ADMIN_LEVEL_B а просто как флаг "n" ?
12 Окт 2018

Да я не силён в в этом ,))
Верный ответ в 6 посте.
Зависит от плагина, когда и как он проверяет наличие флага
 

artiom555

Пользователь
Регистрация
2 Мар 2018
Сообщения
89
Симпатии
2
Пол
Мужской
#10
Верный ответ в 6 посте.
Зависит от плагина, когда и как он проверяет наличие флага
Если бы так то он хоть раз бы выдал эту модель после смены карты или на входе на сервер но он вобще не выдаёт ничего :/
12 Окт 2018
Да и почему тогда когда я через amxbans выдаю эти флаги то всё работает все модели выдает и т.д этот плагин top awards каждый раунд проверяет или игрок находится в топе от 1-5 места только тогда ему флаги даёт если он спустился на 6 то снимает .