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

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

Ответ
 
JET_LI

offline
Опыт: 1,724
Активность:
Указатель или что-то вроде этого
function moveUp takes nothing returns nothing
    local unit u=udg_unit[GetConvertedPlayerId(GetTriggerPlayer())-1]
    call SetUnitPositionLocFacingBJ(u,PolarProjectionBJ(GetUnitLoc(u), 8.00, GetUnitFacing(u)), GetUnitFacing(u))
endfunction

function moveUp_off takes nothing returns nothing

endfunction

function Trig_Move_keyUp_Actions takes nothing returns nothing
    local trigger trg=CreateTrigger()
    local trigger trg_off=CreateTrigger()
    call TriggerAddAction(trg,function moveUp)
    call TriggerRegisterTimerEventPeriodic(trg,0.01)
    call TriggerExecute(trg)
    call TriggerAddAction(trg_off,function moveUp_off)
    call TriggerRegisterPlayerKeyEventBJ(trg_off,Player(GetConvertedPlayerId(GetTriggerPlayer())-1),bj_KEYEVE​NTTYPE_RELEASE,bj_KEYEVENTKEY_UP)
endfunction

//===========================================================================
function InitTrig_Move_keyUp takes nothing returns nothing
    set gg_trg_Move_keyUp=CreateTrigger()
    call TriggerAddAction(gg_trg_Move_keyUp,function Trig_Move_keyUp_Actions)
    call TriggerRegisterPlayerKeyEventBJ(gg_trg_Move_keyUp,Player(0),bj_KEYEVENTTYPE_DEPRESS,bj_KEYEVENTKEY_U​P)
    call TriggerRegisterPlayerKeyEventBJ(gg_trg_Move_keyUp,Player(1),bj_KEYEVENTTYPE_DEPRESS,bj_KEYEVENTKEY_U​P)
    call TriggerRegisterPlayerKeyEventBJ(gg_trg_Move_keyUp,Player(2),bj_KEYEVENTTYPE_DEPRESS,bj_KEYEVENTKEY_U​P)
    call TriggerRegisterPlayerKeyEventBJ(gg_trg_Move_keyUp,Player(3),bj_KEYEVENTTYPE_DEPRESS,bj_KEYEVENTKEY_U​P)
    call TriggerRegisterPlayerKeyEventBJ(gg_trg_Move_keyUp,Player(4),bj_KEYEVENTTYPE_DEPRESS,bj_KEYEVENTKEY_U​P)
    call TriggerRegisterPlayerKeyEventBJ(gg_trg_Move_keyUp,Player(5),bj_KEYEVENTTYPE_DEPRESS,bj_KEYEVENTKEY_U​P)
    call TriggerRegisterPlayerKeyEventBJ(gg_trg_Move_keyUp,Player(6),bj_KEYEVENTTYPE_DEPRESS,bj_KEYEVENTKEY_U​P)
    call TriggerRegisterPlayerKeyEventBJ(gg_trg_Move_keyUp,Player(7),bj_KEYEVENTTYPE_DEPRESS,bj_KEYEVENTKEY_U​P)
    call TriggerRegisterPlayerKeyEventBJ(gg_trg_Move_keyUp,Player(8),bj_KEYEVENTTYPE_DEPRESS,bj_KEYEVENTKEY_U​P)
    call TriggerRegisterPlayerKeyEventBJ(gg_trg_Move_keyUp,Player(9),bj_KEYEVENTTYPE_DEPRESS,bj_KEYEVENTKEY_U​P)
endfunction
unit array udg_unit - 10 юнитов для игроков
trigger trg - триггер перемещает юнита
Вся проблема в функции moveUp_off! она должна удалить триггер trg из исполнениня, а потом вообще удалить из памяти.
НООО! переменная trg - локальная, глобалку не хочется использовать - нагрузки больше, память жрёт!
есть такая штука, как указатель или ещё что-нить?
я в JASS не силён, по мне лучше PHP, C++,JS...=)

Отредактировано ShadoW DaemoN, 09.01.2010 в 17:10.
Старый 09.01.2010, 11:25
Nekit1234007

offline
Опыт: 11,916
Активность:
Глобалка или ХТ.
Старый 09.01.2010, 11:48
JET_LI

offline
Опыт: 1,724
Активность:
что такое XT?
Старый 09.01.2010, 11:51
Nekit1234007

offline
Опыт: 11,916
Активность:
Старый 09.01.2010, 11:55
JET_LI

offline
Опыт: 1,724
Активность:
спс
JET_LI добавил:
У меня функции XT редактор не видит
у меня NewGen с WEU
Старый 09.01.2010, 13:34
Nekit1234007

offline
Опыт: 11,916
Активность:
Поставь хорус.
Старый 09.01.2010, 13:39
JET_LI

offline
Опыт: 1,724
Активность:
поставил, все равно пишет Undeclared Get Handle Id.
кстати вар у меня 1.24!
JET_LI добавил:
и нетолько эту функцию, а вобще все XT!
Старый 09.01.2010, 13:50
Nekit1234007

offline
Опыт: 11,916
Активность:
Тогда забей на ХТ и делай через глобалку.
Старый 09.01.2010, 13:55
JET_LI

offline
Опыт: 1,724
Активность:
ппц)
JET_LI добавил:
через глобалку быстрее вроде даж получиться?
JET_LI добавил:
все-таки хотелось бы разобраться в чём причина!
Старый 09.01.2010, 14:01
Doc

offline
Опыт: 63,163
Активность:
JET_LI, лол, зачем париться с ХТ? во первых тебе для нее придется создавать глобалку, во вторых тебе придется ее инициализировать, использовать много функций, потом чистить, просто забей триггер в глобалку и не парься
Старый 09.01.2010, 14:11
JET_LI

offline
Опыт: 1,724
Активность:
хорошо=)))
а всё же почему не робит???
вот код сам:
function moveUp takes nothing returns nothing
    local unit u=udg_unit[GetConvertedPlayerId(GetTriggerPlayer())-1]
    call SetUnitPositionLocFacingBJ(u,PolarProjectionBJ(GetUnitLoc(u), 8.00, GetUnitFacing(u)), GetUnitFacing(u))
    set u=null
endfunction

function moveUp_off takes nothing returns nothing
    local unit u=udg_unit[GetConvertedPlayerId(GetTriggerPlayer())-1]
    local trigger trg=LoadTriggerHandle(udg_hashtable,GetHandleId(u),1)
    call QueuedTriggerRemoveBJ(trg)
    call DestroyTrigger(trg)
    call FlushChildHashtable(udg_hashtable,GetHandleId(u))
    set u=null
endfunction

function Trig_Move_keyUp_Actions takes nothing returns nothing
    local unit u=udg_unit[GetConvertedPlayerId(GetTriggerPlayer())-1]
    local trigger trg=CreateTrigger()
    local trigger trg_off=CreateTrigger()
    call TriggerAddAction(trg,function moveUp)
    call TriggerRegisterTimerEventPeriodic(trg,0.01)
    call SaveTriggerHandle(udg_hashtable,GetHangleId(u),1,trg)
    call TriggerExecute(trg)
    call TriggerAddAction(trg_off,function moveUp_off)
    call TriggerRegisterPlayerKeyEventBJ(trg_off,Player(GetConvertedPlayerId(GetTriggerPlayer())-1),bj_KEYEVE​NTTYPE_RELEASE,bj_KEYEVENTKEY_UP)
    set trg=null
    set trg_off=null
    set u=null
endfunction

//===========================================================================
function InitTrig_Move_keyUp takes nothing returns nothing
    set gg_trg_Move_keyUp=CreateTrigger()
    call TriggerAddAction(gg_trg_Move_keyUp,function Trig_Move_keyUp_Actions)
    call TriggerRegisterPlayerKeyEventBJ(gg_trg_Move_keyUp,Player(0),bj_KEYEVENTTYPE_DEPRESS,bj_KEYEVENTKEY_U​P)
    call TriggerRegisterPlayerKeyEventBJ(gg_trg_Move_keyUp,Player(1),bj_KEYEVENTTYPE_DEPRESS,bj_KEYEVENTKEY_U​P)
    call TriggerRegisterPlayerKeyEventBJ(gg_trg_Move_keyUp,Player(2),bj_KEYEVENTTYPE_DEPRESS,bj_KEYEVENTKEY_U​P)
    call TriggerRegisterPlayerKeyEventBJ(gg_trg_Move_keyUp,Player(3),bj_KEYEVENTTYPE_DEPRESS,bj_KEYEVENTKEY_U​P)
    call TriggerRegisterPlayerKeyEventBJ(gg_trg_Move_keyUp,Player(4),bj_KEYEVENTTYPE_DEPRESS,bj_KEYEVENTKEY_U​P)
    call TriggerRegisterPlayerKeyEventBJ(gg_trg_Move_keyUp,Player(5),bj_KEYEVENTTYPE_DEPRESS,bj_KEYEVENTKEY_U​P)
    call TriggerRegisterPlayerKeyEventBJ(gg_trg_Move_keyUp,Player(6),bj_KEYEVENTTYPE_DEPRESS,bj_KEYEVENTKEY_U​P)
    call TriggerRegisterPlayerKeyEventBJ(gg_trg_Move_keyUp,Player(7),bj_KEYEVENTTYPE_DEPRESS,bj_KEYEVENTKEY_U​P)
    call TriggerRegisterPlayerKeyEventBJ(gg_trg_Move_keyUp,Player(8),bj_KEYEVENTTYPE_DEPRESS,bj_KEYEVENTKEY_U​P)
    call TriggerRegisterPlayerKeyEventBJ(gg_trg_Move_keyUp,Player(9),bj_KEYEVENTTYPE_DEPRESS,bj_KEYEVENTKEY_U​P)
endfunction

Отредактировано JET_LI, 09.01.2010 в 14:45.
Старый 09.01.2010, 14:25
9thNerZul
forum/warcraft3
offline
Опыт: 4,869
Активность:
Юзай глобалку, вот тема так как раз это обсуждалось xgm.ru/forum/showthread.php?t=31949&highlight=%CC%ED%EE%E3%E... про то сколько они кушают
Старый 10.01.2010, 11:13
ScorpioT1000
Работаем
offline
Опыт: отключен
это глупо - удалять в твоем случае триггер)
ScorpioT1000 добавил:
call TriggerRegisterTimerEventPeriodic(trg,0.01)
и не делай никогда меньше, чем 0.02
ScorpioT1000 добавил:
вобщем, надо переписать с нуля. лучше скажи, что оно должно делать.
Старый 10.01.2010, 11:34
9thNerZul
forum/warcraft3
offline
Опыт: 4,869
Активность:
А лучше чем 0.025 проверено на практике)
Старый 10.01.2010, 17:02
Ответ

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

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

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

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



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