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

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

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

offline
Опыт: 50,203
Активность:
Ходьба крипов
1. Защитные сооружения атакуют находящегося в зоне действия крипа при этом когда у крипа оказывается уровень жизни равно или меньше (=>) 50%, он убегает.
2. Крипы на пролом проходят мимо оборонительных сооружений, при этом получают урон от сооружении они нападают на башню, и получается проблема № 1. Конечно когда они будут возвращаться к месту где изначально появились, тогда их окончательно убьёт оборонительное сооружение.
Что я делал: отлавливал приказ атаки и потом отменял и назначал новый - не работало. Пробовал сделать по одной статье http://zone-game.info/guard_position.html

Код:
function IsMobCondition takes nothing returns boolean
return (GetOwningPlayer(GetTriggerUnit())==Player(13)) or (GetOwningPlayer(GetTriggerUnit())==Player(14))
endfunction


function IssOrder takes nothing returns nothing
    local unit u = GetTriggerUnit()
    if GetIssuedOrderId()==OrderId("move") then
        call SetUnitPosition(u,GetUnitX(u),GetUnitY(u))
        call DisableTrigger(GetTriggeringTrigger())
        call IssuePointOrderByIdLoc(u,OrderId("attack"),udg_Locations[GetUnitUserData(u)])
        call EnableTrigger(GetTriggeringTrigger())
    endif
    set u = null
endfunction

//===========================================================================
function InitTrig_loh takes nothing returns nothing
    local trigger t = CreateTrigger(  )
    local unit u = GetTriggerUnit() 
    local group g = CreateGroup()
    call TriggerRegisterPlayerUnitEvent(t,Player(13),EVENT_PLAYER_UNIT_ISSUED_POINT_ORDER  ,null)
    call TriggerRegisterPlayerUnitEvent(t,Player(14),EVENT_PLAYER_UNIT_ISSUED_POINT_ORDER  ,null)
    call GroupEnumUnitsOfPlayer(g,Player(13),null)
    loop
        set u = FirstOfGroup(g)
        exitwhen u == null
        call GroupRemoveUnit(g,u)
        if GetUnitAcquireRange(u)!=0 and IsUnitType(u,UNIT_TYPE_STRUCTURE) then
            call TriggerRegisterUnitInRange(t,u,600,null)
        endif
    endloop
    call DestroyGroup(g)
    set g = CreateGroup()
    call GroupEnumUnitsOfPlayer(g,Player(14),null)
    loop
        set u = FirstOfGroup(g)
        exitwhen u == null
        call GroupRemoveUnit(g,u)
        if GetUnitAcquireRange(u)!=0 and IsUnitType(u,UNIT_TYPE_STRUCTURE) then
            call TriggerRegisterUnitInRange(t,u,600,null)
        endif
    endloop
    call DestroyGroup(g)
    call TriggerAddCondition(t,Condition(function IsMobCondition))
    call TriggerAddAction(t,function IssOrder)
    set t = null
    set u = null
    set g = null
endfunction


Если у кого то такая же была проблема кто как решил ее? Мне кажется надо периодически таймером каждый раз новый приказ

Отредактировано Steal nerves, 07.04.2011 в 16:39.
Старый 07.04.2011, 15:57
Velociraptor
В пространстве и времени
offline
Опыт: 14,801
Активность:
Проще всего сделать здания не зданиями, и уже писали про это...
Старый 07.04.2011, 16:03
MpW

offline
Опыт: 50,203
Активность:
Velociraptor да ладно не знал но спасибо, в поиске ничего не нашел такого
Старый 07.04.2011, 16:06
Doc

offline
Опыт: 61,963
Активность:
для смены приказа делаем таймер на 0.0 и потом приказываем
Старый 07.04.2011, 16:25
MpW

offline
Опыт: 50,203
Активность:
Velociraptor, тут кажется почти то же самое, я сделал его юнитом, он половину снимает у крипа и крип бежит обратно тут дело не в зданиях и юнитах а что то другое. Знать бы как по другому сделать?

Отредактировано Steal nerves, 07.04.2011 в 16:43.
Старый 07.04.2011, 16:31
Velociraptor
В пространстве и времени
offline
Опыт: 14,801
Активность:
Крипы-то нейтральные, как я понял? В константах пошарься, настрой так, чтобы они не возвращались на места появления...
Старый 07.04.2011, 19:56
avatarDr
Neophyte
offline
Опыт: 6,474
Активность:
Steal_nerves, а я не понял, тебе надо сделать, чтобы они назад возвращались, или отменить это? Чётче формулируй вопрос.
(Собственно, его тут и нет. Ты просто делишься своими достижениями.)
Старый 07.04.2011, 23:05
MpW

offline
Опыт: 50,203
Активность:
Velociraptor, Да у меня стоит в константах монстры время возвращения и допустимое расстояние 9999. нейтральные крипы идут по заданному машруту (дерутся, все в норме только башни почему то игнорируют), проходя по маршруту, где то в сторонке от дороги их атакует оборонительное сооружение, но они либо игнорируя идут мимо или под действием атаки башни, которая завлекает их и принимает удар на себя, ее атакуют, когда башня снимет больше половины жизни раненный крип убегает (это такой блин баг)
avatarDr, отменить. Как сделать то?
Старый 08.04.2011, 07:39
avatarDr
Neophyte
offline
Опыт: 6,474
Активность:
Steal_nerves:
Что я делал: отлавливал приказ атаки и потом отменял и назначал новый - не работало.
А зачем? Попробуй:
  1. Ловить приказ, с которым юниты бегут назад, и уже с ним отдавать приказ атаки. Если не поможет:
  2. Отдавать такой приказ с большой периодичностью, как у акса в доте.
  3. Забить на это и назначить крипов одному из игроков. Уже 300 тем поднимали, что нейтрально-враждебные настолько нейтральные, что всё делают по-своему.
А башни они не атакуют совсем, или если рядом есть другие войска? Может дело в приоритетах?
И это не баг, а фича.
Старый 08.04.2011, 08:06
Velociraptor
В пространстве и времени
offline
Опыт: 14,801
Активность:
Если ты башни сделал не башнями, то они по определению не должны влиять на войска как-то иначе, чем обычные юниты! Иначе они у тебя всё равно каким-то раком здания или другая классификация с иным, чем, как сказали выше, у обычных юнитов приоритетом! Ты Характеристики - Является зданием - снял? Всё внимательно вообще посмотри, все пункты в РО! Попробуй на основе юнита сделать войско с моделькой здания без движения - так же реагировать будут?

Цитата:
Сообщение от avatarDr
Отдавать такой приказ с большой периодичностью, как у акса в доте.

Может лагать. Особенно если их много под башни набежит. Выход, но не очень удобный.

Цитата:
Сообщение от avatarDr
Забить на это и назначить крипов одному из игроков. Уже 300 тем поднимали, что нейтрально-враждебные настолько нейтральные, что всё делают по-своему.

Это тоже выход, но тогда в карту не сможет играть более 10 игроков (или сколько там надо будет для нейтралов выключить слотов, исходя из АоСа, просто считаю, что два).
Старый 08.04.2011, 11:38
Hanabishi
COOL STATUS
offline
Опыт: отключен
Velociraptor, вообще-то слотов игроков 16, там дополнительные всякие - их можно использовать
Старый 08.04.2011, 13:42
MpW

offline
Опыт: 50,203
Активность:
Velociraptor, снял (приорететы менял)
ладно пока ни один из предложенный вами вариант не подошел - на выходных чего нибудь придумаю, мне интересует что я по той статье сделал, и наверняка не правильно, потому что не работает. Мне интересно ваше мнение по этому поводу, помогите код подправить если он не правильный

Отредактировано Steal nerves, 08.04.2011 в 14:40.
Старый 08.04.2011, 14:29
avatarDr
Neophyte
offline
Опыт: 6,474
Активность:
Velociraptor, Hanabishi, Steal_nerves, есть ведь какая-то переделка доты 6х6? Посмотри, как там сделаны крипы.
Старый 08.04.2011, 17:27
MpW

offline
Опыт: 50,203
Активность:
avatarDr, нашел ответ в похожем форуме только регистрироваться нужно (, чтоб примерчик скачать, в нашем нету ответа
http://blizzplanet.ru/forum/showthread.php?t=23093
[+] замечание от Hanabishi: 5.2 (ссылка, требующая регистрации)

Отредактировано Steal nerves, 09.04.2011 в 08:49.
Старый 09.04.2011, 07:32
MpW

offline
Опыт: 50,203
Активность:
Всем спасибо все закрывайте
Старый 09.04.2011, 12:24
Закрытая тема

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

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

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

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



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