Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

Использование за 1 раунд

Статус пользователя System Error
сообщение 3.1.2013, 21:06
Сообщение #1


Стаж: 16 лет

Сообщений: 121
Благодарностей: 30
Полезность: 192

Какой кусок кода надо добавить, что бы можно использовать только за 1 раунд функцию?
Пример: В VIPSystem, возрождатся после смерти, можно использовать пока не закончится раунд, и использовать так до бесконечности...
Такое наблюдается ещё в 3 плагинах, в той же VIPSystem.

Исходники:
1) Прикрепленный файл  VSAdditionalLivesItem.sma ( 1,13 килобайт ) Кол-во скачиваний: 3

2) Прикрепленный файл  VSAmmoAndGrenadesItem.sma ( 2,08 килобайт ) Кол-во скачиваний: 2

3) Прикрепленный файл  VSPistolsItem.sma ( 4,39 килобайт ) Кол-во скачиваний: 4

4) Прикрепленный файл  VSWeaponsItem.sma ( 6,2 килобайт ) Кол-во скачиваний: 2
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя Orty_Hart
сообщение 3.1.2013, 23:16
Сообщение #2
Стаж: 14 лет

Сообщений: 1399
Благодарностей: 408
Полезность: 725

System Error,
давай подумаем логически.
Если добавить глобальный массив, который будет играть с 1 и 0.
0 - работает (нет блокировки)
1 - не работает (заблокировано)
можно сделать проверку, если g_active == 0 функция работает. если нет, не работает.

теперь сделаем так, создаем к примеру g_active
перед созданием функции, пишем проверку

Код
if(g_active == 0)
{
g_active = 1; //устанавливаем g_active = 1 (выключаем срабатывание функции).
//а тут, всё что нужно делать
}


теперь, если нам нужно, чтоб функции снова начала работать, после начала раунда, отслеживаем начало раунда в EventRoundStart

Код
register_event("HLTV", "EventRoundStart", "a", "1=0", "2=0");


потом в EventRoundStart

Код
public EventRoundStart()
{
    g_active = 1; //устанавливаем g_active = 0 (включаем срабатывание функции).
}


если нужно для каждого игрока.
создаем массив g_active[33]

при вкл. и выкл. указываем g_active[id]
если мы не знаем id, делаем массовую установку. а именно, чере for()

Код
new iPlayers[32], iNum
get_players(iPlayers, iNum)

for(new i; i < iNum; i++)
{
    g_active[iPlayers[i]] = 0; //устанавливаем iPlayers[i] (в нашем случае это id игрока.) значение 0.
}


P.S. - колупайтесь в своих плагинах самостоятельно. Учиться нужно всегда.
P.S. P.S. - мне просто в падло :D

Отредактировал: Orty_Hart, - 3.1.2013, 23:19
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   + Цитировать сообщение
Safety1st
сообщение 4.1.2013, 1:38
Сообщение #3
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

Могу добавить, что массива тогда достаточно булевого
Код
new bool:gbActive[33]


И проверки можно делать чуть проще: только на истина/ложь:
Код
if ( gbActive[id] )    // истина
if ( !gbActive[id] )    // ложь
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Тема закрытаНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: