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

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

Закрытая тема
 
mitryz

offline
Опыт: 1,225
Активность:
SaveLightningHandle
Когда функция SaveLightningHandle может возвращать false?
Старый 07.11.2009, 16:03
_Red

offline
Опыт: 4,095
Активность:
Осмелюсь предположить - если не получилось сохранить
а собственно зачем тебе?
Старый 07.11.2009, 16:08
mitryz

offline
Опыт: 1,225
Активность:
А почему может не получиться сохранить? Я инициализировал хеш-таблицу, а она не сохраняет.
И LoadLightningHandle возвращает null =(
Старый 07.11.2009, 16:10
_Red

offline
Опыт: 4,095
Активность:
Может ты ничего не сохраняешь просто?
молния=null
_Red добавил:
Приведи код лутче где используешь
Старый 07.11.2009, 16:16
mitryz

offline
Опыт: 1,225
Активность:
молния=AddLightningEx(modelfile, true, x1, y1, z1, x2, y2, z2)
её видно в игре, т.е. она точно не null

mitryz добавил:
Код:
function destroy_effect takes nothing returns nothing
    local timer t = GetExpiredTimer()
    call DestroyEffect(LoadEffectHandle(udg_table, GetHandleId(t), 1))
    call DestroyTimer(t)
    call FlushChildHashtable(udg_table, GetHandleId(t))
endfunction

function launch_effect_loc takes string modelfile, location loc, real timeout returns nothing
    local timer t = CreateTimer()
    call TimerStart(t, timeout, false, function destroy_effect)
    call SaveEffectHandle(udg_table, GetHandleId(t), 1, AddSpecialEffectLoc(modelfile, loc))
    call RemoveLocation(loc)
endfunction

function launch_effect_unit takes string modelfile, unit target, string attachpoint, real timeout returns nothing
    local timer t = CreateTimer()
    call TimerStart(t, timeout, false, function destroy_effect)
    call SaveEffectHandle(udg_table, GetHandleId(t), 1, AddSpecialEffectTarget(modelfile, target, attachpoint))
endfunction

function destroy_lightning takes nothing returns nothing
    local timer t = GetExpiredTimer()
    call DestroyLightning(LoadLightningHandle(udg_table, GetHandleId(t), 2))
    call DestroyTimer(t)
    call FlushChildHashtable(udg_table, GetHandleId(t))
endfunction

function launch_lightning_loc takes string modelfile, location loc1, location loc2, real timeout, real height1, real height2 returns nothing
    local timer t = CreateTimer()
    local real x1 = GetLocationX(loc1)
    local real y1 = GetLocationY(loc1)
    local real z1 = (GetLocationZ(loc1) + height1)
    local real x2 = GetLocationX(loc2)
    local real y2 = GetLocationY(loc2)
    local real z2 = (GetLocationZ(loc2) + height2)
    local hashtable ht = InitHashtable()
    call TimerStart(t, timeout, false, function destroy_lightning)
    call SaveLightningHandle(ht, GetHandleId(t), 2, AddLightningEx(modelfile, true, x1, y1, z1, x2, y2, z2))
    call RemoveLocation(loc1)
    call RemoveLocation(loc2)
endfunction
Старый 07.11.2009, 16:19
_Red

offline
Опыт: 4,095
Активность:
Это у тебя так в коде или ты специально call не написал?
» Код
function destroy_effect takes nothing returns nothing
    local timer t = GetExpiredTimer()
    call DestroyEffect(LoadEffectHandle(udg_table, GetHandleId(t), 1))
    call DestroyTimer(t)
    call FlushChildHashtable(udg_table, GetHandleId(t))
endfunction

function launch_effect_loc takes string modelfile, location loc, real timeout returns nothing
    local timer t = CreateTimer()
    call TimerStart(t, timeout, false, function destroy_effect)
    call SaveEffectHandle(udg_table, GetHandleId(t), 1, AddSpecialEffectLoc(modelfile, loc))
    call RemoveLocation(loc)
endfunction

function launch_effect_unit takes string modelfile, unit target, string attachpoint, real timeout returns nothing
    local timer t = CreateTimer()
    call TimerStart(t, timeout, false, function destroy_effect)
    call SaveEffectHandle(udg_table, GetHandleId(t), 1, AddSpecialEffectTarget(modelfile, target, attachpoint))
endfunction

function destroy_lightning takes nothing returns nothing
    local timer t = GetExpiredTimer()
    call DestroyLightning(LoadLightningHandle(udg_table, GetHandleId(t), 2))
    call DestroyTimer(t)
    call FlushChildHashtable(udg_table, GetHandleId(t))
endfunction

function launch_lightning_loc takes string modelfile, location loc1, location loc2, real timeout, real height1, real height2 returns nothing
    local timer t = CreateTimer()
    local real x1 = GetLocationX(loc1)
    local real y1 = GetLocationY(loc1)
    local real z1 = (GetLocationZ(loc1) + height1)
    local real x2 = GetLocationX(loc2)
    local real y2 = GetLocationY(loc2)
    local real z2 = (GetLocationZ(loc2) + height2)
    local hashtable ht = InitHashtable()
    call TimerStart(t, timeout, false, function destroy_lightning)
    call SaveLightningHandle(ht, GetHandleId(t), 2, AddLightningEx(modelfile, true, x1, y1, z1, x2, y2, z2))
    call RemoveLocation(loc1)
    call RemoveLocation(loc2)
endfunction
Добавил call, попробуй
Старый 07.11.2009, 16:23
mitryz

offline
Опыт: 1,225
Активность:
там был if я его стёр и забыл call поставить. всё равно не рабтает.
run-time error =)
Старый 07.11.2009, 16:24
bee
vjass.optimizer
offline
Опыт: 16,615
Активность:
SaveLightningHandle(ht, GetHandleId(t), 2, AddLightningEx(modelfile, true, x1, y1, z1, x2, y2, z2))
call поставь
Bee добавил:
+
t=null
ht=null
помойму
Старый 07.11.2009, 16:25
mitryz

offline
Опыт: 1,225
Активность:
не работает.
и там где глобальная переменная udg_table - тоже не таботает.
я udg_table инициализирую при инициализации карты в триггере.

Код:
function destroy_effect takes nothing returns nothing
    local timer t = GetExpiredTimer()
    call DestroyEffect(LoadEffectHandle(udg_table, GetHandleId(t), 0))
    call DestroyTimer(t)
    call FlushChildHashtable(udg_table, GetHandleId(t))
endfunction

function launch_effect_loc takes string modelfile, location loc, real timeout returns nothing
    local timer t = CreateTimer()
    call TimerStart(t, timeout, false, function destroy_effect)
    call SaveEffectHandle(udg_table, GetHandleId(t), 0, AddSpecialEffectLoc(modelfile, loc))
    call RemoveLocation(loc)
endfunction

function launch_effect_unit takes string modelfile, unit target, string attachpoint, real timeout returns nothing
    local timer t = CreateTimer()
    call TimerStart(t, timeout, false, function destroy_effect)
    call SaveEffectHandle(udg_table, GetHandleId(t), 0, AddSpecialEffectTarget(modelfile, target, attachpoint))
endfunction

function destroy_lightning takes nothing returns nothing
    local timer t = GetExpiredTimer()
    call DestroyLightning(LoadLightningHandle(udg_table, GetHandleId(t), 0))
    call DestroyTimer(t)
    call FlushChildHashtable(udg_table, GetHandleId(t))
endfunction

function launch_lightning_loc takes string modelfile, location loc1, location loc2, real timeout, real height1, real height2 returns nothing
    local timer t = null
    local real x1 = GetLocationX(loc1)
    local real y1 = GetLocationY(loc1)
    local real z1 = (GetLocationZ(loc1) + height1)
    local real x2 = GetLocationX(loc2)
    local real y2 = GetLocationY(loc2)
    local real z2 = (GetLocationZ(loc2) + height2)
    set t = CreateTimer()
    call TimerStart(t, timeout, false, function destroy_lightning)
    call SaveLightningHandle(udg_table, GetHandleId(t), 0, AddLightningEx(modelfile, true, x1, y1, z1, x2, y2, z2))
    call RemoveLocation(loc1)
    call RemoveLocation(loc2)
endfunction
Старый 07.11.2009, 16:29
_Red

offline
Опыт: 4,095
Активность:
Попробуй сначало выгрузить молнию, а потом удалять
» Вот так
local timer t = GetExpiredTimer()
local lightning ligh = LoadLightningHandle(udg_table, GetHandleId(t), 2)
call DestroyLightning(ligh)
_Red добавил:
Точно также с сохранением, попробуй сначало создать, а потом сохранять
» Так
function launch_lightning_loc takes string modelfile, location loc1, location loc2, real timeout, real height1, real height2 returns nothing
    local timer t = null
    local real x1 = GetLocationX(loc1)
    local real y1 = GetLocationY(loc1)
    local real z1 = (GetLocationZ(loc1) + height1)
    local real x2 = GetLocationX(loc2)
    local real y2 = GetLocationY(loc2)
    local real z2 = (GetLocationZ(loc2) + height2)
    local lightning ligh = AddLightningEx(modelfile, true, x1, y1, z1, x2, y2, z2)
    set t = CreateTimer()
    call TimerStart(t, timeout, false, function destroy_lightning)
    call SaveLightningHandle(udg_table, GetHandleId(t), 0, ligh)
    call RemoveLocation(loc1)
    call RemoveLocation(loc2)
endfunction
Старый 07.11.2009, 16:34
mitryz

offline
Опыт: 1,225
Активность:
Заработало! Я забыл в MapInitializetion создать Хеш-таблицу, написал только Set table = (Last created hashtable)
Всё, всем спс
Старый 07.11.2009, 16:34
_Red

offline
Опыт: 4,095
Активность:
mitryz, Ну ты ппц)))
А вообще имхо лутче делать как я написал, т.е. соначало создать молнию, а потом сохранять, точно также с удалением, сначало получить из таблицы, а затем удалять...
Старый 07.11.2009, 16:37
Закрытая тема

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

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

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

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



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