Сейчас 16:10:18 Пятница, 29 ноября, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
Не работает периодический триггер
lawsonДата: Суббота, 10 Декабря 2011, 17:02:08 | Сообщение # 1
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Вообще не могу понять что случилось с картой.
В общем проблема: У меня есть триггер который работает периодически каждые 40 сек, тоесть тригер срабатывает только через 40 секунды после начала игры, но дело в том что теперь триггер срабатывает моментально при инициализации карты, что случилось. Ктонибудь с такой проблемой уже сталкивался?


Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!


Сообщение отредактировал lawson - Суббота, 10 Декабря 2011, 17:06:54
 

DiabfallДата: Суббота, 10 Декабря 2011, 17:07:34 | Сообщение # 2
Группа: Проверенные
Сообщений: 1231
Награды: 0
Блокировки:
Лучше дай код, если можно.

p.s. Вообще редактор нередко чудит... Пару раз не хотел воспринимать правильно написанный код. Начал воспринимать только после копипаста.)
 

lawsonДата: Суббота, 10 Декабря 2011, 17:11:43 | Сообщение # 3
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (Diabfall)
Лучше дай код, если можно.

Не думаю что код тебе поможет.
Вот создаю периодический триггер:
Code
function SpawnSentCreeps takes nothing returns nothing
ACTIONS
endfunction

function InitTrig_CreepsSpawn takes nothing returns nothing
     set gg_trg_CreepsSpawn = CreateTrigger()
     call TriggerRegisterTimerEvent(gg_trg_CreepsSpawn, 40, true)
     call TriggerAddAction(gg_trg_CreepsSpawn, function SpawnSentCreeps)
endfunction


Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!
 

DiabfallДата: Суббота, 10 Декабря 2011, 17:22:33 | Сообщение # 4
Группа: Проверенные
Сообщений: 1231
Награды: 0
Блокировки:
У меня было, что-то похожее. Решил по тупому :D :

Code
function SpawnSentCreepsTimer takes nothing returns nothing
local timer t=CreateTimer()
call TimerStart(t, 40.00, true, function SpawnSentCreeps)
set t=null
endfunction

function InitTrig_CreepsSpawn takes nothing returns nothing
set gg_trg_CreepsSpawn = CreateTrigger()
call TriggerAddAction(gg_trg_CreepsSpawn, function SpawnSentCreepsTimer)
endfunction


Сообщение отредактировал Diabfall - Суббота, 10 Декабря 2011, 17:22:44
 

lawsonДата: Суббота, 10 Декабря 2011, 17:27:05 | Сообщение # 5
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Diabfall, Да выходи из ситуации я знаю, мне вот интересно изза чего ошибка произошло? Что я не так сделал? Мне нужно знать причину, мало ли у меня в будущем вся карта вообще откажет.

Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!


Сообщение отредактировал lawson - Суббота, 10 Декабря 2011, 17:31:09
 

DiabfallДата: Суббота, 10 Декабря 2011, 17:48:38 | Сообщение # 6
Группа: Проверенные
Сообщений: 1231
Награды: 0
Блокировки:
Quote (lawson)
Diabfall, Да выходи из ситуации я знаю, мне вот интересно изза чего сие произошло? Что я не так сделал? Мне нужно знать причину, мало ли у меня в будущем вся карта вообще откажет.

Точного ответа никто не даст. Говорю со 100% уверенностью.

Добавлено (10 Декабрь 2011, 17:48:38)
---------------------------------------------

Code
call TriggerRegisterTimerEvent

Это очень часто является источником багов.
 

HexingДата: Суббота, 10 Декабря 2011, 19:07:54 | Сообщение # 7
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
lawson, проблема вот в чём:
перед конвертацией триггера в код ты добавил иму ивент - MapInitialization, который в коде никак не выднеется(он в коде карты, тоесть его не видно но он есть) и таким образом актионс твоего триггера вызовутся при мап ините
всегда делай так:
Code

function InitTrig_CreepsSpawn takes nothing returns nothing
local timer t=CreateTimer()
call TimerStart(t, 40.00, true, function SpawnSentCreeps)
set t=null
set gg_trg_CreepsSpawn = null //реально бесполезное присвоение, просто для наглядности
endfunction

это оптимальный вариант, и не нужны никакие триггеры


 

Ty3uKДата: Суббота, 10 Декабря 2011, 20:57:21 | Сообщение # 8
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
А зачем заносить таймер в локалку? Ты потом собираешься ловить его хэндл? О.о пиши в эвент сразу- создать таймер. Меньше действий, больше свободной памяти buba

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

HexingДата: Воскресенье, 11 Декабря 2011, 07:55:11 | Сообщение # 9
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
Ty3uK, ты имеешь в виду:
Code
call TimerStart(CreateTimer(), 40., true, function somefunc)

ну так то да, так лучше


 

Ty3uKДата: Воскресенье, 11 Декабря 2011, 09:22:11 | Сообщение # 10
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Да-да, это и имею в виду, Холмс

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

  • Страница 1 из 1
  • 1
Поиск:

Copyright © 2006 - 2024 Warcraft3FT.info При копировании материалов c сайта ставьте, пожалуйста, активную обратную ссылку на нас • Design by gReeB04ki ©
Хостинг от uCoz