AMX MOD X
Пятница, 19.04.2024, 23:35:08



Приветствую Вас Гость | RSS
[ Главная ] [ Создание таймера - AMX Mod X Форум ] [ Регистрация ] [ Вход ]
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]

Вниманию участников! Данный форум теперь является архивом и вскором времени здесь нельзя будет создавать новых тем! Просьба всем для общения и создания новых тем перейти на наш новый форум: http://amxmodx.su/

  • Страница 1 из 1
  • 1
Модератор форума: slogic, AlMod  
AMX Mod X Форум » Скриптинг » Помощь по скриптингу » Создание таймера (10.9.8...1.0 - без использования set_task)
Создание таймера
tavotДата: Среда, 09.12.2009, 10:10:18 | Сообщение # 1
Генерал-майор
Группа: Пользователи
Сообщений: 256
Репутация: 3
Статус: Не в сети
Собственно понятно наверное и так что мне нужно ;),
поюзав поиск нашел несколько тем, но там в основном используют set_task , но:
Quote (DaTa)
Попытаюсь примерно отсортировать, по тормознутости, сколько вспомню: 3)Очень много set_task

Вопрос, можно ли как то организовать таймер не использую сет_таск, есть ли еще какие то функции?

пока что таймер выглядит так:

Взято из плагина zp_countdown.

Code

public funciya(id)
     new speak[ 10 ][] = { "fvox/one.wav", "fvox/two.wav", "fvox/three.wav", "fvox/four.wav", "fvox/five.wav", "fvox/six.wav", "fvox/seven.wav", "fvox/eight.wav", "fvox/nine.wav", "fvox/ten.wav" }

     emit_sound( id, CHAN_VOICE, speak[ countdown ], 1.0, ATTN_NORM, 0, PITCH_NORM )
     countdown--
          
     set_hudmessage(179, 0, 0, -1.0, 0.28, 2, 0.02, 1.0, 0.01, 0.1, 10);  
     show_hudmessage(id, "%i", time_s);  
     --time_s;
          
     if(time_s >= 1)
     {
         set_task(1.0, "funciya")
     }

А так же Драфт предлагал:

Code

new g_Time  
...  
g_Time = 600  
set_task(1.0, "enable_Timer", 777, _ , _ , "a", 600) // в функции начала игры создаём задание, которое выполнится 600 раз через каждую секунду.  
...  
public enable_Timer()  
{  
g_Time-- // каждую секунду будет уменьшаться на 1, таким образом, всегда можно вывести, сколько секунд осталось  
}  
...
 
DaTaДата: Среда, 09.12.2009, 17:26:24 | Сообщение # 2
Генерал-полковник
Группа: Cупер-модеры
Сообщений: 1025
Репутация: 16
Статус: Не в сети
Да и так нормально, ты быстрее способ и не найдешь. Я имел ввиду действительно огромное количество таймеров за фрейм, например, больше 32.

Добавлено (09.12.2009, 17:26:24)
---------------------------------------------
Остальные способы состоят в хуке постоянно вызывающихся функций, что еще хуже для быстродействия.

 
tavotДата: Среда, 09.12.2009, 18:18:55 | Сообщение # 3
Генерал-майор
Группа: Пользователи
Сообщений: 256
Репутация: 3
Статус: Не в сети
DaTa,
Спасибо, значит тему можно закрывать )
Пошел прикручивать.
 
KokaДата: Среда, 09.12.2009, 21:24:48 | Сообщение # 4
Полковник
Группа: Пользователи
Сообщений: 169
Репутация: 1
Статус: Не в сети
а вообще, есть ли список где по порядку написано то, что нагружает сервер и даёт "лаг" ?

стал ощущать рефлексы тоньше, оставаясь как всегда с идеей той же...
 
ZETAДата: Суббота, 12.12.2009, 21:53:07 | Сообщение # 5
Генерал-майор
Группа: Скриптеры
Сообщений: 369
Репутация: 21
Статус: Не в сети
Разбирал ProKreedz и наткнулся на интересный таймер, синтаксис:

Code
new x,timer

public plugin_init() {
   register_plugin(PLUGIN, VERSION, AUTHOR)
   register_clcmd("say /time","needtime",ADMIN_ALL,"")
   x=get_systime()
}

public needtime() {
   timer=get_systime()-x
   client_print(id,print_chat,"Time: %d",timer)
}

Такой таймер будет лучше чем set_task, как думаете?


Говори что думаешь и думай что говоришь...

Сообщение отредактировал ZETA - Суббота, 12.12.2009, 21:54:37
 
PomanoBДата: Суббота, 12.12.2009, 22:22:04 | Сообщение # 6
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Репутация: 70
Статус: Не в сети
Это не таймер, подходит для случаев когда надо узнать время между двумя событиями, а не выполнять каждую секунду к примеру

http://romanov4400.mybrute.com
 
tavotДата: Суббота, 12.12.2009, 23:47:13 | Сообщение # 7
Генерал-майор
Группа: Пользователи
Сообщений: 256
Репутация: 3
Статус: Не в сети
PomanoB,
Верно.
на сколько я понимаю это в кридзе используется от сатрта до финиша...

А я ищу способы - что бы или был обратный отсчет - ну скажем как бомба тикает или карта меняется 10-9-8....0
или выполнение каких то действий показывающие тожде самое - что явлется set_task - пока что другого ни чего не знаюю..

 
RichardДата: Четверг, 24.12.2009, 03:25:32 | Сообщение # 8
Лейтенант
Группа: Пользователи
Сообщений: 52
Репутация: 4
Статус: Не в сети
Как на счёт такого таймера...

Code

... Timer(42) - будет щитать от 42 до 0   

public Timer(iTime) {
   new iCount
   for(iCount = iTime;iCount != 0;iCount--) {
    set_task(float(abs(iCount-iTime)),"...",iCount)
   }
   set_task(float(iTime),"...")
}

... = функ. выполняющиеся каждую секунду обратного отщёта...

поправьте если не прав...

П.С. Вырезал из св. мод. shutdown плагина :)

Сообщение отредактировал Richard - Четверг, 24.12.2009, 12:01:06
 
predatorДата: Четверг, 24.12.2009, 13:20:35 | Сообщение # 9
Лейтенант
Группа: Пользователи
Сообщений: 54
Репутация: 5
Статус: Не в сети
Вопрос ставился так: "Вопрос, можно ли как то организовать таймер не использую сет_таск, есть ли еще какие то функции?"
 
AMX Mod X Форум » Скриптинг » Помощь по скриптингу » Создание таймера (10.9.8...1.0 - без использования set_task)
  • Страница 1 из 1
  • 1
Поиск:

AMX Mod X Russian Community © 2006-2024