Рабочий не хочет работать, как бы я его не заставлял работать.. Если попытаться построить лесопилку или др. здания из списка, то здание не строится; если попытаться построить здания из другого списка, то всё работает.

вот попробуй другую систему.
Короче в чем суть: у раба есть две кнопки (способности-пустышки), они якобы должны включать разные меню. Но по идее, они вызывают одно и то же меню, просто список меняется (одни здания прячут, другие показываем). Юнит не морфится.
Список строительства можно заполнять бесконечный, у работника есть графа "Технологии - здании построено". Вот в нее можно бесконечный список добавить. Необязательно, чтобы 11-12. Можно больше.
Иконку от настоящей кнопки строительства прячем.
Кстати, бесполезно давать рабу способность берсерка, так как он получая приказ 851994 все равно останавливается
а еще вэйт убери.
Загруженные файлы
`
ОЖИДАНИЕ РЕКЛАМЫ...
23
Похожие вопросы:

ответ
SomeFire, У него 3 круга
вернее 6
ответ
BrEd Pitt, делать через найм юнитов или удалять призванного юнита если превышен лимит еды
а у абилки сбрасывать кд
и выдавать чтото наподобие "нужно построить зикурат"
ответ
A.W.K.:
Ой все, я просто поставил "облегченная модель". А она только у деревьев facepalm

28
Пытаетесь построить триггерно или "руками"? Я вот знаю, что если сделать людского рабочего летающим (вроде бы) или отобрать способность, то он ничего не будет строить.
21
PT153, ручками.
8gabriel8, это приказ, который открывает список доступных приказов.
*список доступных построек
26
По идее можно было бы делать одного строителя с двумя способностями-пустышками Z и X. При нажатии на одну игроку блокируется часть зданий и разблокируется вторая, а на другую наоборот, но полагаю, что на то и два меню, потому что в одно не влезает, тем более так лишь при наличии одного строителя.
27
вот попробуй другую систему.
Короче в чем суть: у раба есть две кнопки (способности-пустышки), они якобы должны включать разные меню. Но по идее, они вызывают одно и то же меню, просто список меняется (одни здания прячут, другие показываем). Юнит не морфится.
Список строительства можно заполнять бесконечный, у работника есть графа "Технологии - здании построено". Вот в нее можно бесконечный список добавить. Необязательно, чтобы 11-12. Можно больше.
Иконку от настоящей кнопки строительства прячем.
Кстати, бесполезно давать рабу способность берсерка, так как он получая приказ 851994 все равно останавливается
а еще вэйт убери.
Загруженные файлы
Принятый ответ
21
Steal nerves, благодарю. Жаль, что не работает с несколькими работниками на одного игрока.
выбрал бы 8gabriel8'a, т. к. он первый предложил; но Steal nerves сделал ещё и пример.
27
ScopteRectuS, пробовал с морфом. Хотел сделать так: чтобы некоторые здания строил как undead (одна форма), другой как human (другая форма). У меня undead сажает растения, а human строит здания.
И короче сделал через морф медведя, и получается так, что один в одной форме не может другие здания строить. Если на карте создашь изначально в форме undead, то строит только растения, а в другой форме не строит. И аналогично, если с первоначальной формой human. Короче так понял, что морф не меняет расу юнита, морфятся характеристики.
раскрыть
Что происходит: undead когда морфится в human и когда бежит строить хуманские постройки, он добежит до точки, и в последний момент останавливается, и все (как будто там участок занят). точно также human когда в форме undead бежит строить здания нежити. Сначала подумал, что вар сломал.
этот морф со стройкой прокатит с юнитами одной расы
26
Steal nerves, так он пытался с юнитами одной расы, не получается.
27
8gabriel8, да? я уже забыл =(( просто подумал у него другое, а сделал одно и то же. значит виноват морф.
21
Благодарю за помощь. Но от морфа пришлось отказаться, так как он имеет ряд недостатков: создание двух строителей; возможность создать лишь два окна, для выбора построек. В то время как с помощью блокирования построек не нужно создавать второго строителя, можно сделать несколько окошек для выбора списка доступных заданий (больше двух, просто создав еще одну способность-пустышку, при использовании которой, будет создаваться новый список).
А насчёт моего первого утверждения, что нельзя использовать на нескольких строителях > я ошибался. Так как невозможно открыть окно построек сразу у нескольких рабочих, всегда будет открыто только одно окно, соответственно, всё будет работать как надо.
раскрыть
scope Buildings initializer onInit


    function EnableBuildings takes player whichPlayer, integer int returns nothing
        if ( int == 0 ) then
            call SetPlayerTechMaxAllowed( whichPlayer, 'T000', -1 )
            call SetPlayerTechMaxAllowed( whichPlayer, 'T001', -1 )
            call SetPlayerTechMaxAllowed( whichPlayer, 'T002', -1 )
            call SetPlayerTechMaxAllowed( whichPlayer, 'T003', -1 )
            call SetPlayerTechMaxAllowed( whichPlayer, 'T004', -1 )
            call SetPlayerTechMaxAllowed( whichPlayer, 'T005', -1 )
            call SetPlayerTechMaxAllowed( whichPlayer, 'T006', -1 )
            call SetPlayerTechMaxAllowed( whichPlayer, 'T007', -1 )
            

        elseif ( int == 1 ) then
            call SetPlayerTechMaxAllowed( whichPlayer, 'h002',  1 )
            call SetPlayerTechMaxAllowed( whichPlayer, 'h004', -1 )
            call SetPlayerTechMaxAllowed( whichPlayer, 'h005', -1 )
            call SetPlayerTechMaxAllowed( whichPlayer, 'h006', -1 )
            call SetPlayerTechMaxAllowed( whichPlayer, 'h007', -1 )
            call SetPlayerTechMaxAllowed( whichPlayer, 'h008', -1 )
            call SetPlayerTechMaxAllowed( whichPlayer, 'h009', -1 )
            call SetPlayerTechMaxAllowed( whichPlayer, 'n000', -1 )
        endif
    endfunction


    function DisableBuildings takes player whichPlayer, integer int returns nothing
        if ( int == 0 ) then
            call SetPlayerTechMaxAllowed( whichPlayer, 'T000', 0 )
            call SetPlayerTechMaxAllowed( whichPlayer, 'T001', 0 )
            call SetPlayerTechMaxAllowed( whichPlayer, 'T002', 0 )
            call SetPlayerTechMaxAllowed( whichPlayer, 'T003', 0 )
            call SetPlayerTechMaxAllowed( whichPlayer, 'T004', 0 )
            call SetPlayerTechMaxAllowed( whichPlayer, 'T005', 0 )
            call SetPlayerTechMaxAllowed( whichPlayer, 'T006', 0 )
            call SetPlayerTechMaxAllowed( whichPlayer, 'T007', 0 )

        elseif ( int == 1 ) then
            call SetPlayerTechMaxAllowed( whichPlayer, 'h002', 0 )
            call SetPlayerTechMaxAllowed( whichPlayer, 'h004', 0 )
            call SetPlayerTechMaxAllowed( whichPlayer, 'h005', 0 )
            call SetPlayerTechMaxAllowed( whichPlayer, 'h006', 0 )
            call SetPlayerTechMaxAllowed( whichPlayer, 'h007', 0 )
            call SetPlayerTechMaxAllowed( whichPlayer, 'h008', 0 )
            call SetPlayerTechMaxAllowed( whichPlayer, 'h009', 0 )
            call SetPlayerTechMaxAllowed( whichPlayer, 'n000', 0 )
        endif
    endfunction


    function DisableAllBuildings takes nothing returns nothing
        local integer index = 0

        loop
            if (GetPlayerSlotState(Player(index)) == PLAYER_SLOT_STATE_PLAYING) then
                call DisableBuildings(Player(index), 0)
                call DisableBuildings(Player(index), 1)
            endif

            set index = index + 1
            exitwhen index == bj_MAX_PLAYERS
        endloop
    endfunction


    globals
        private unit builder = null
    endglobals


    function onUnitSpellFinish takes nothing returns nothing
        if (GetSpellAbilityId() == 'A000') then
            set builder = GetSpellAbilityUnit()

            call DisableBuildings(GetOwningPlayer(builder), 0)
            call EnableBuildings (GetOwningPlayer(builder), 1)

            call IssueImmediateOrderById(builder, 851994)
            call UnitRemoveAbility(builder, 'BOwk')

        elseif (GetSpellAbilityId() == 'A001') then
            set builder = GetSpellAbilityUnit()

            call DisableBuildings( GetOwningPlayer(builder), 1)
            call EnableBuildings ( GetOwningPlayer(builder), 0)

            call IssueImmediateOrderById(builder, 851994)
            call UnitRemoveAbility(builder, 'Bbsk')
        endif
    endfunction


    function onInit takes nothing returns nothing
        call DisableAllBuildings()

        call RegisterAnyUnitEvent(EVENT_PLAYER_UNIT_SPELL_FINISH, function onUnitSpellFinish)
    endfunction


endscope
26
ScopteRectuS, а если поставил очередь строительства, потом блокировал постройки, то они всё равно строятся?
21
8gabriel8, невозможно проверить, т.к. приказ 851994 сбивает очередь.
28
а если поставил очередь строительства, потом блокировал постройки, то они всё равно строятся?
Нет, только что проверил.
27
ScopteRectuS:
8gabriel8, невозможно проверить, т.к. приказ 851994 сбивает очередь.
отследить открытие и закрытие меню строительства используется баг при переключении, можно открыть меню dummy и сразу переключится на своего рабочего. этот способ не сбивает приказ. в этой наработке текстуры земли багнутые - строить ничего не дает (ничего страшного - перекрасите в траву), видимо от порчи старых наработок перенеслось.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.