|
|
|
|
PolledWait
|
|
CHLSN | Дата: Пятница, 06 Мая 2011, 00:15:24 | Сообщение # 1 |
10 уровень
Группа: Проверенные
Сообщений: 1627
Награды: 0
Репутация: 132
Блокировки:
| Теоретически, по истечении PolledWait функция должна продолжать выполнение, но вот я не раз сталкивался с тем, что после PolledWait'a выполняется ничего вообще. По моим наблюдениям, при вызове какой-нибудь функции с TriggerSleepAction (коей является и PolledWait), выполнение там и засыпает. Может просветите, в чем дело?
Я в контакте и на warcraft3ft.info. Кто может сказать, почему **** дизайнер писал вместо "pt" "px" в CSS, благодаря чему нужно смотреть форум через лупу с Ctrl++?
|
|
|
|
Impregnable | Дата: Пятница, 06 Мая 2011, 07:16:37 | Сообщение # 2 |
6 уровень
Группа: Проверенные
Сообщений: 231
Награды: 0
Репутация: 92
Блокировки:
| В функции PolledWait используется таймер => это игровое время. Если остановить игру PauseGame(true), то и все таймеры будут приостановлены.
|
|
|
|
CHLSN | Дата: Пятница, 06 Мая 2011, 10:44:15 | Сообщение # 3 |
10 уровень
Группа: Проверенные
Сообщений: 1627
Награды: 0
Репутация: 132
Блокировки:
| Quote (CHLSN) Теоретически, по истечении PolledWait функция должна продолжать выполнение, но вот я не раз сталкивался с тем, что после PolledWait'a выполняется ничего вообще. По моим наблюдениям, при вызове какой-нибудь функции с TriggerSleepAction (коей является и PolledWait), выполнение там и засыпает. *** Impregnable, я не спрашивал, чем PolledWait отличается от TriggerSleepAction.
Я в контакте и на warcraft3ft.info. Кто может сказать, почему **** дизайнер писал вместо "pt" "px" в CSS, благодаря чему нужно смотреть форум через лупу с Ctrl++?
|
|
|
|
SirNikolas | Дата: Пятница, 06 Мая 2011, 11:01:57 | Сообщение # 4 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| В чем дело, ты уже сам убеждался не раз. TriggerSleepAction (как и все ее производные) - глючная функция. Вместо нее нужно использовать таймеры.
|
|
|
|
CHLSN | Дата: Пятница, 06 Мая 2011, 11:41:06 | Сообщение # 5 |
10 уровень
Группа: Проверенные
Сообщений: 1627
Награды: 0
Репутация: 132
Блокировки:
| SirNikolas, хорошо, тогда вопрос, а-ля by Кэп: Code local timer t = CreateTimer() local effect e = CreateEffect() .... <Wait 8 s.> DestroyEffect( e ) set e = null set t = null Чтобы лишь разрушить что либо через Х секунд, нужно: 1. Создавать таймер 2. Функцию для таймера 3. Заносить в хеш (+2 вызова функции) 4. Разрушать таймер ? И это для каждой такой функции, где нужно подождать?
Я в контакте и на warcraft3ft.info. Кто может сказать, почему **** дизайнер писал вместо "pt" "px" в CSS, благодаря чему нужно смотреть форум через лупу с Ctrl++?
|
|
|
|
SirNikolas | Дата: Пятница, 06 Мая 2011, 12:16:54 | Сообщение # 6 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Code globals constant hashtable udg_Hash = InitHashtable() endglobals
function DestroyObject_Timer takes nothing returns nothing local timer t = GetExpiredTimer() local integer id = GetHandleId(t) local string s = LoadStr(udg_Hash, id, 1) if s == "effect" then call DestroyEffect(LoadEffectHandle(udg_Hash, id, 0)) elseif s == "unit" then call RemoveUnit(LoadUnitHandle(udg_Hash, id, 0)) elseif s == "destructable" then call RemoveDestructable(LoadDestructableHandle(udg_Hash, id, 0)) elseif s == "item" then call RemoveItem(LoadItemHandle(udg_Hash, id, 0)) // endif call FlushChildHashtable(udg_Hash, id) call DestroyTimer(t) set t = null endfunction
function DestroyObject takes handle h, string objectType, real time returns nothing local timer t = CreateTimer() local integer id = GetHandleId(t) if time < .0 then set time = -time endif call SaveAgentHandle(udg_Hash, id, 0, h) call SaveStr(udg_Hash, id, 1, objectType) call TimerStart(t, time, false, function DestroyObject_Timer) set t = null endfunction Добавлено (06-05-2011, 12:16) --------------------------------------------- Вместо string objectType можно использовать integer objectType: if objectType == 1 then DestroyEffect elseif objectType == 2 then RemoveUnit elseif objectType == 3 then RemoveDestructable и т. д.
|
|
|
|
Impregnable | Дата: Пятница, 06 Мая 2011, 12:21:51 | Сообщение # 7 |
6 уровень
Группа: Проверенные
Сообщений: 231
Награды: 0
Репутация: 92
Блокировки:
| CHLSN так не делается... Понять по описанию где ошибка довольно тяжело. Дал бы хоть какой-нибудь пример. Вообщем TriggerSleepAction() нельзя вставлять в функцию: -условия триггера TriggerAddCondition(,) -инициализации триггера InitTrig_... -фильтра и во все подобное
|
|
|
|
CHLSN | Дата: Пятница, 06 Мая 2011, 12:44:46 | Сообщение # 8 |
10 уровень
Группа: Проверенные
Сообщений: 1627
Награды: 0
Репутация: 132
Блокировки:
| Impregnable, цитирую: Quote (CHLSN) По моим наблюдениям, при вызове какой-нибудь функции с TriggerSleepAction (коей является и PolledWait), выполнение там и засыпает. Хотя в общем-то нередко и в "основной" функции триггера. SirNikolas, а если нужно не только разрушить один определенный тип, а проделать еще несколько различных действий?
Я в контакте и на warcraft3ft.info. Кто может сказать, почему **** дизайнер писал вместо "pt" "px" в CSS, благодаря чему нужно смотреть форум через лупу с Ctrl++?
|
|
|
|
lawson | Дата: Пятница, 06 Мая 2011, 13:38:15 | Сообщение # 9 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| CHLSN, Ууу это значит ты еще нормально не кодил. если спрашиваешь что для каждой функции делать таймер.Добавлено (06-05-2011, 13:38) ---------------------------------------------
Quote (CHLSN) а если нужно не только разрушить один определенный тип, а проделать еще несколько различных действий? Можешь сделать в нестандартном коде функцию в которой для каждого выполнения действия нужно указать boolean выполнять ее или нет.
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
|
|
|
|
DragoN | Дата: Пятница, 06 Мая 2011, 13:38:28 | Сообщение # 10 |
Инквизитор
Группа: Стримеры
Сообщений: 4348
Награды: 7
Репутация: 2776
Блокировки:
| не юзайте вы полледвэйт, это же убогая вещь!
El Psy Congroo
|
|
|
|
SirNikolas | Дата: Пятница, 06 Мая 2011, 14:03:48 | Сообщение # 11 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Quote (lawson) Можешь сделать в нестандартном коде функцию, в которой для каждого выполнения действия нужно указать boolean: выполнять ее или нет. Тогда уж лучше для каждого действия сделать функцию. Нагрузка будет больше, зато код сократится.
|
|
|
|
CHLSN | Дата: Пятница, 06 Мая 2011, 14:16:10 | Сообщение # 12 |
10 уровень
Группа: Проверенные
Сообщений: 1627
Награды: 0
Репутация: 132
Блокировки:
| Quote (lawson) Можешь сделать в нестандартном коде функцию в которой для каждого выполнения действия нужно указать boolean выполнять ее или нет. Издеваешься что ли? Русским по черному написал - несколько - различных - действий. Если после Wait будет 10 абсолютно разных действий, и все используют разные типы?, 10 булевых писать? Quote (SirNikolas) зато код сократится Наоборот. DragoN, абсолютно согласен. Я боюсь, что я один догадываюсь о создании одной функции для разрушения, в то время как в остальных придется писать таймеры "вручную" ? А-ля баланс между размером кода, и количеством вызываемых функций?
Я в контакте и на warcraft3ft.info. Кто может сказать, почему **** дизайнер писал вместо "pt" "px" в CSS, благодаря чему нужно смотреть форум через лупу с Ctrl++?
Сообщение отредактировал CHLSN - Пятница, 06 Мая 2011, 14:16:40 |
|
|
|
SirNikolas | Дата: Пятница, 06 Мая 2011, 14:24:41 | Сообщение # 13 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Quote (SirNikolas) зато код сократится. Взять ту же DestroyObject: если ты вызываешь ее раз пять, то код получается короче, чем если бы ты эти пять раз писал ее вручную.Добавлено (06-05-2011, 14:24) ---------------------------------------------
Quote (CHLSN) А-ля баланс между размером кода и количеством вызываемых функций? В точку.
|
|
|
|
CHLSN | Дата: Пятница, 06 Мая 2011, 14:54:46 | Сообщение # 14 |
10 уровень
Группа: Проверенные
Сообщений: 1627
Награды: 0
Репутация: 132
Блокировки:
| SirNikolas, про сокращение понял, вроде, что ты имел ввиду. Как итог: ...тему в топку, используй таймеры. Всем спасибо)
Я в контакте и на warcraft3ft.info. Кто может сказать, почему **** дизайнер писал вместо "pt" "px" в CSS, благодаря чему нужно смотреть форум через лупу с Ctrl++?
Сообщение отредактировал CHLSN - Пятница, 06 Мая 2011, 16:23:20 |
|
|
|
Dreii | Дата: Пятница, 06 Мая 2011, 15:57:43 | Сообщение # 15 |
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
| Что бы не едлать каждый раз функцию для таймера сделай ее в нестандартном коде и все
|
|
|
|
lawson | Дата: Пятница, 06 Мая 2011, 17:35:14 | Сообщение # 16 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| Quote (CHLSN) Как итог: ...тему в топку, используй таймеры. Всем спасибо) Офигеть, сам создал тему сам задал вопрос а теперь всем другим объясняещь что Вэит это плохо. Тебе до этого было сказано да и вообще везде всегда пишут таймеры, а ты раздул эту проблему на десятку постов. Я вообще не понимаю в чем проблема, я всегда писал отдельные функции для таймеров и все нормально работало.
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
Сообщение отредактировал lawson - Пятница, 06 Мая 2011, 17:38:17 |
|
|
|
CHLSN | Дата: Пятница, 06 Мая 2011, 18:40:50 | Сообщение # 17 |
10 уровень
Группа: Проверенные
Сообщений: 1627
Награды: 0
Репутация: 132
Блокировки:
| lawson, ничего ты не шаришь в разборе проблемы. Раз тема на 10 постов, значит так и должно быть. И я ничего не объяснял, а просто систематизировал все здесь сказанное, как вывод, получил исчерпывающий ответ на поставленный вопрос. Quote (lawson) Я вообще не понимаю в чем проблема, я всегда писал отдельные функции для таймеров и все нормально работало. Значит ты плохо читал данную тему. Вопрос в том, насколько быстроработающей будет карта.
Я в контакте и на warcraft3ft.info. Кто может сказать, почему **** дизайнер писал вместо "pt" "px" в CSS, благодаря чему нужно смотреть форум через лупу с Ctrl++?
|
|
|
|
|
|
|
|
|
|
|