forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Blitz3D (http://forum.boolean.name/forumdisplay.php?f=45)
-   -   Запуск функции по таймеру (http://forum.boolean.name/showthread.php?t=5642)

Crystal 25.01.2008 01:43

Запуск функции по таймеру
 
Драсте.
Каким макаром заставить функцию запускаться через определённый
промежуток времени?
Подскажите.

alcoSHoLiK 25.01.2008 01:46

Ответ: Запуск функции по таймеру
 
if прошло_определенное_время then запустить_функцию
3Д-программирование тут при чем?

Crystal 25.01.2008 02:00

Ответ: Запуск функции по таймеру
 
как причём, вопрос по blitz3d

жалко что к таким ответам нету кнопки не полезно

Horror 25.01.2008 02:26

Ответ: Запуск функции по таймеру
 
юзай Millsecs()
типо так
каждые 3 секунды будет выполняться фунция (вроде так)
Код:

В цикле:
If (Millisecs() - StartTime) < 3000 Then
        Функция()
          StartTime = Millisecs()
EndIf


jimon 25.01.2008 08:44

Ответ: Запуск функции по таймеру
 
Blitzerg

у тебя и так 90% сообщений не полезно, так что не можешь винить всех :)

Crystal 25.01.2008 13:02

Ответ: Запуск функции по таймеру
 
Ибо эти сообщения в одном разделе болтовня.

HolyDel 25.01.2008 13:14

Ответ: Запуск функции по таймеру
 
Кристалл, вообще так не делается.
если у тебя будет ф-ия вызываться один раз за игровой цикл, то таймер ставь в ф-ию, проще будет менять значение таймера.
ЗЫ. ты кстати какой IDE пользуешся?

Crystal 25.01.2008 13:29

Ответ: Запуск функции по таймеру
 
Родным пользуюсь потому, что хелп нужен.

Код:

Global ta

Global Fun

Function Timer()

If ta < MilliSecs() Then
ta = MilliSecs() + 200.
Fun=1
Else
Fun=0
End If
End Function

If MouseDown(1) And Fun=1 Then s_construct.s(User,pricel)


HolyDel 25.01.2008 13:43

Ответ: Запуск функции по таймеру
 
Function Timer()

If ta < MilliSecs() Then
ta = MilliSecs() + 200.
//do_something
End If
End Function

Bagration 25.01.2008 14:51

Ответ: Запуск функции по таймеру
 
У меня так:
Есть массив timer(кол-во кнопок-функций+один обьект массива для времени)
В цикле timer(1)=MilliSecs () - это и есть тот "один обьект массива для времени"
дальше если нужно определенное действие раз в определенное время (стрельба, разгон и т.д.), то так:
Код:

If KeyDown(сканкод)=1 Then
If timer(1)>timer(2) Then
motor%=motor%+10
timer(2)=timer(1)+200
End If
Else
timer(2)=0
End If

тут еще один подводный камень, для каждого действия или кнопки нужен свой таймер, то есть
timer(2)=таймер для первого действия
timer(3)=для второго
timer(4)=и т.д.
Иначе происходит конфликт и нипашет ничего. Выше пример сделан для кнопок, но убрать кнопки и сделать вызов функций не так уж и труден.
Ну вродь так:rolleyes: , если что гуру меня поправят.:)

Crystal 25.01.2008 16:08

Ответ: Запуск функции по таймеру
 
Не... Так как у меня щас лучше,
ибо просчётом времени общим пользуется не только
юзер но и все боты.

HolyDel 25.01.2008 16:46

Ответ: Запуск функции по таймеру
 
(хинт) очень аккуратно используйте Millisecs() в ф-иях обновления для ботов, пуль, еще чего то, чего может быть не 1 на сцене.
могут быть глюки.

Bagration 25.01.2008 16:52

Ответ: Запуск функции по таймеру
 
Ага, замечен глюк если одну и туже переменную таймера, скажем timer=MilliSecs ()+1000 использовать в двух-трех разных условиях - то баг, и ничего не пашет. Спасают тока массивы когда для разных условий свой таймер.

Taugeshtu 25.01.2008 18:32

Ответ: Запуск функции по таймеру
 
Багратион, это уже проблема алгоритма - вернее его ошибочность.
По поводу Иде: VisualBlitz IDE точно умеет работать со справкой - проверено. По другим - не знаю.
В тему: если делать таймер для чего-то, чего может быть МНОГА - то имеет смысл забирать Millisecs() 2-3 раза за цикл логики в разных местах ("тяжесть" участков примерно одинаковая) в какую нибудь переменную - меньше ошибок, однако же меньше и точность.

Alex_Noc 26.02.2008 20:12

Ответ: Запуск функции по таймеру
 
Да и не забывайте про одинаковые имена переменных совпадающими с названием переменных загруженных моделек - ваще глюк такой тяжелый - хрен найдешь . Потому что блиц даже не ругаеться по этому поводу :)


Часовой пояс GMT +4, время: 22:26.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot