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

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

Ответ
 
Kenshi245

offline
Опыт: 2,252
Активность:
Как правильно остановить юнита?
Скрипт должен останавливать юнита если тому был отдан приказ-точка, но почему-то не работает...


Код:
function Trig_Untitled_Trigger_002_Actions takes nothing returns nothing
    call IssueImmediateOrderBJ( GetTriggerUnit(), "stop" )
endfunction

function InitTrig_Untitled_Trigger_002 takes nothing returns nothing
    set gg_trg_Untitled_Trigger_002 = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_Untitled_Trigger_002, EVENT_PLAYER_UNIT_ISSUED_POINT_ORDER )
    call TriggerAddAction( gg_trg_Untitled_Trigger_002, function Trig_Untitled_Trigger_002_Actions )
endfunction
Старый 20.05.2008, 23:22
J
expert
offline
Опыт: 48,447
Активность:
Kenshi245 попробуй перед отдачей приказа на стоп запаузить юнита, а после приказа распаузить

Отредактировано Jon, 21.05.2008 в 16:46.
Старый 20.05.2008, 23:42
Kenshi245

offline
Опыт: 2,252
Активность:
Цитата:
Сообщение от Jon
akkolt это глабалка
Kenshi245 попробуй перед отдачей приказа на стоп запаузить юнита, а после приказа распаузить


Так чтоль? Всеравно не помогает.

Код:
call PauseUnitBJ( true, GetTriggerUnit() )
    call IssueImmediateOrderBJ( GetTriggerUnit(), "stop" )
    call PauseUnitBJ( false, GetTriggerUnit() )
Старый 20.05.2008, 23:47
akkolt

offline
Опыт: 13,826
Активность:
Мне кажется, ты триг и в глобалках не задал, а просто из архива взял, создай переменную (глобальную)
и указывай set уже с udg, или как-то так, точно не знаю.
Старый 20.05.2008, 23:50
Kenshi245

offline
Опыт: 2,252
Активность:
Цитата:
Сообщение от akkolt
Мне кажется, ты триг и в глобалках не задал, а просто из архива взял, создай переменную (глобальную)
и указывай set уже с udg, или как-то так, точно не знаю.


Блин я вообще через GUI сделал и тупо конвертировал))). Но даже так не работает:
Код:
Юнит получил приказ-точка
---
Приказ юниту 'стоп'
Старый 20.05.2008, 23:54
akkolt

offline
Опыт: 13,826
Активность:
Странно, на гуи должно получиться.
1) Попробуй сделать так, как я сказал выше.
2) Проверь в jasse правильность события и условия (у мну однажды было из-за них, но jon исправил)
Легче всего зделать первым способом, кста! ты после конвертирования триг не переименовывал? это тебе не гуи, чтоб we сам имя исправлял.

akkolt добавил:
Вот, если нужно, так на гуи:
событие и усл у тя правильные,
Действие issue order <твой юнит> to <команда> with no target
Старый 21.05.2008, 00:03
ScorpioT1000
Работаем
offline
Опыт: отключен
Цитата:
Юнит получил приказ-точка
---
Приказ юниту 'стоп'

Вэйт
Старый 21.05.2008, 01:11
adic3x

offline
Опыт: 108,439
Активность:
Код:
call PauseUnit(GetTriggerUnit(), true)
 call IssueImmediateOrderById(GetTriggerUnit(), 0x000d0004)
 call PauseUnit(GetTriggerUnit(), false)

без бж
ммм, мб дествительно нужен новый поток
Старый 21.05.2008, 11:15
Лось

offline
Опыт: 7,223
Активность:
И в новом потоке тоже не работает. Получается что сначало он отдаёт приказ стоп а потом смарт. Афтар тебе надо чтобы юнит не ходил?
Старый 21.05.2008, 11:50
ScorpioT1000
Работаем
offline
Опыт: отключен
У мня кстати работала анти-атака. Ну там када бьешь своего - приказ стоп. Хз что у вас там...
Старый 21.05.2008, 12:47
alexkill

offline
Опыт: 18,872
Активность:
У меня работает вариант Kenshi245. Только нужно сделать задержку PolledWait(0.01) перед приказом в первой функции.
В варианте ADOLF'a тоже будет все работать, но с той же задержкой перед снятием паузы.
Старый 21.05.2008, 13:24
Лось

offline
Опыт: 7,223
Активность:
C вейтом та конешно, а вот без вэйта надо...
Старый 21.05.2008, 13:39
Toadcop

offline
Опыт: 54,313
Активность:
call SetUnitPosition(u,GetUnitX(u),GetUnitY(u))
попробуй это...
Старый 21.05.2008, 15:09
Kenshi245

offline
Опыт: 2,252
Активность:
Цитата:
Сообщение от Toadcop
call SetUnitPosition(u,GetUnitX(u),GetUnitY(u))

попробуй это...


Он будет бесконечно телепортироваться, но не остановится никогда.
Старый 21.05.2008, 21:28
ZLOBICH
Kicked by XimikS
offline
Опыт: 4,727
Активность:
а у юнита вообще есть абилка "стоп" ? =)
Старый 21.05.2008, 21:35
akkolt

offline
Опыт: 13,826
Активность:
ето-ж не абилка, а приказ, а он есть у кажд. юнита.
Старый 21.05.2008, 21:37
ZLOBICH
Kicked by XimikS
offline
Опыт: 4,727
Активность:
совсем не у каждого) может у юнита классификация вард?
Старый 21.05.2008, 21:37
akkolt

offline
Опыт: 13,826
Активность:
Честно говоря, я не понял к чему ты это? Но свой триг я ток-што проверил, он пашет, и пашет так, как сказал аФтАр.

akkolt добавил:
Т.е. я понял, что в варде у юнитов нет приказов, но всё-же.
Старый 21.05.2008, 21:42
ScorpioT1000
Работаем
offline
Опыт: отключен
Kenshi245, ты не попробовал ни один из предложеных
Цитата:
call SetUnitPosition(u,GetUnitX(u),GetUnitY(u))

попробуй это...

Цитата:
Вэйт

Цитата:
call PauseUnit

рациональных вариантов, зато развел ненужную трепотню.

(уверен что и на этот пост начнешь сраццо)
Старый 21.05.2008, 22:20
4go10_frank

offline
Опыт: 2,089
Активность:
Попробуй брать функцией не GetTriggerUnit() а GetOrderedUnit() или как то так
Старый 27.05.2008, 00:21
Ответ

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

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

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

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



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