XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Jass
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
avatarDr
Neophyte
offline
Опыт: 6,474
Активность:
LoadEmptyHandle
Небольшой кодик:
function Respawning_Actions takes nothing returns nothing
    local rect r=LoadRectHandle(udg_Hashtable[0],GetHandleId(GetTriggerUnit()),S2I("respawn"))
    local unit u
    call FlushChildHashtable(udg_Hashtable[0],GetHandleId(GetTriggerUnit()))
    call TriggerSleepAction(5.00)    
    set u=CreateUnit(Player(12),GetUnitTypeId(GetTriggerUnit()),GetRandomReal(GetRectMinX(r),GetRectMaxX(r))​,GetRandomReal(GetRectMinY(r),GetRectMaxY(r)),GetRandomReal(0,360))
    call SaveRectHandle(udg_Hashtable[0],GetHandleId(u),S2I("respawn"),r)
    set r=null
endfunction
Как вы заметили по названию и, частично, самому коду, функция создаёт вместо убитого юнита нового, и сохраняет для него рект убитого юнита. Инициализируется событием "Юнит умер".
Вопрос: что будет, если убитый юнит не имеет в таблице ректа? Т.е. будут ли из-за этого утечки, концы света и прочие неприятности?
Старый 22.12.2009, 16:35
DragonSpirit
у - уходи
offline
Опыт: 22,625
Активность:
Вопрос: что будет, если убитый юнит не имеет в таблице ректа? Т.е. будут ли из-за этого утечки, концы света и прочие неприятности?
просто не загрузиться рект => будет утечка из-за того что он не удалён(рект)
Старый 22.12.2009, 16:53
avatarDr
Neophyte
offline
Опыт: 6,474
Активность:
просто не загрузиться рект => (Что сделает?) => загрузится.
Какой рект не удалён?
Старый 22.12.2009, 23:27
ShadoW DaemoN

offline
Опыт: 37,078
Активность:
Если убитый юнит не имеет ректа, откуда может взяться утечка? Загрузится null, запишется null.
avatarDr, у тебя в коде есть недоработки:
  1. GetTriggerUnit() не будет работать после вейта (TriggerSleepAction), если коньки отбросят два и более юнита.
  2. Следствие из 1 - если ты используешь хеш-таблицы, то будет лучше сделать ожидание через таймеры, определенно.
  3. S2I("respawn") всегда будет выдавать 0. Ты используешь не ту функцию - в данном случае нужно писать StringHash("respawn")
  4. Зачем тебе массив хеш-таблиц?
Старый 23.12.2009, 08:02
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 13:39.