Forum in READ ONLY mode! All questions and discussions on Discord official server, invite link: https://discord.gg/VxsGzJ7

Временный интервал

тут можно задать вопрос по скриптингу
Post Reply
Venom
Novice
Novice
Posts: 123
Joined: 25.08.2010 14:00

Временный интервал

Post by Venom »

Подскажите плс, как указать временный интервал ?
Т.е. если на протяжении определенного времени не произошло событие, то движемся по скрипту/процедуре далее.

К примеру.

Code: Select all

[временный интервал] if (InJournalBetweenTimes('System: Вы нанесли', FBegin, Now) <> -1) then begin
....
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Post by Vizit0r »

я нудный. поиск уже не интересен?

поиск по InJournalBetweenTimes спасет тебя.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Venom
Novice
Novice
Posts: 123
Joined: 25.08.2010 14:00

Post by Venom »

и все же..

Code: Select all

if (InJournalBetweenTimes('System: Вы нанесли', FBegin, Now) <> -1) then begin
ignore(finditem); <<- вот здесь нужно выполнить игнор на протяжении 10 секунд и снова повторять то, что идет до игнора.
спс.
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Post by Vizit0r »

помедленнее
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Venom
Novice
Novice
Posts: 123
Joined: 25.08.2010 14:00

Post by Venom »

Vizit0r wrote:помедленнее
Атакую цель.
Если не нанес урон, заношу в игнор на определенное время, по прошествии которого его(игнор) обнуляю.
В то время, пока длится игнор недоступной цели - ищу следующую и пытаюсь атаковать.
Fenix
Developer
Developer
Posts: 275
Joined: 24.08.2010 7:20
Location: Ставрополь
Contact:

Post by Fenix »

Venom wrote:Атакую цель.
Если не нанес урон, заношу в игнор на определенное время, по прошествии которого его(игнор) обнуляю.
В то время, пока длится игнор недоступной цели - ищу следующую и пытаюсь атаковать.
Крутая задумка. Если бы я такое в делфаке писал, то полюбасу использовал бы виндовые таймеры.
Но для тебя простейший способ - создать глобальный динамический массив из структур с ID объекта и временем добавления в игнор. Затем установить обработчик одного из двух таймеров, заставив проверять в цикле не вышло ли время игнора какой либо записи. Если время вышло - снимаем игнор, а запись удаляем из массива (не забываем сдвигать записи по старшим адресам и высвобождать не нужную запись массива). Если хорошо кодишь и не боишься работать с указателями - можно воспользоваться односвязным/двусвязным динамическим списком, т.к. в нем не будет необходимости передвигать все записи по старшим индексам.
Помните – ничто так не защищает ваши зубы 12 часов днем и 12 часов ночью как уважительное отношение к окружающим.
"Многие из вас знакомы с достоинствами программиста. Их всего три, и разумеется это: лень, нетерпеливость и гордыня"© Larry Wall
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Post by Vizit0r »

Fenix - в ПС нет указателей :(

впрочем, тут и без указателей будет нескучно.

если б те одно-двухсвязные списки в ПС хоть кому-то нужны были бы, то давно бы сделал экспорт функциями. А так если 1-2 маньякам и надо было - давно уже через DLL сделали.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Post Reply