Сообщество Империал: Ограничение количества нанимаемых юнитов - Сообщество Империал

Gromozeka

Ограничение количества нанимаемых юнитов

Нанимайте только заданное количество отрядов
Тема создана: 11 апреля 2014, 12:41 · Автор: Gromozeka
  • 2 Страниц
  • 1
  • 2
 Gromozeka
  • Imperial
Imperial
Форумчанин

Дата: 11 апреля 2014, 12:41

...я хочу сделать нечто на подобие ограничения найма, как в Наполеоне, чтобы не боле трёх, пяти или одного или неважно какая цифра отрядов юнита определённого вида можно было нанимать) не факт, что у меня зто получится, это всего лишь задумка в теории...
...полагаю есть вероятность воплощения чего-то подобного и подозреваю, что только посредством скриптов всё таки...
     Avtocrator
    • Imperial
    Imperial
    Gorthaur2488

    Дата: 12 апреля 2014, 00:18

    peskot

    ...я хочу сделать нечто на подобие ограничения найма, как в Наполеоне, чтобы не боле трёх, пяти или одного или неважно какая цифра отрядов юнита определённого вида можно было нанимать) не факт, что у меня зто получится, это всего лишь задумка в теории...

    Можно просто прописать со старта и все.

    Если принципиально, чтоб именно нанимать тоже можно, но мудрено, на основе скрипта из Bellum Crucis.

    Проблема в том, что для скриптов нет команды, подсчитывающей количество определенных отрядов. Однако есть команда, отслеживающая когда был нанят юнит определенной категории и юнит определенного класса(см. category и class в шапке темы), при том в игре использованы не все существующие классы(не использованы дрессировщики handler). На основе этого в Bellum Crucis создали скрипт, который при найме одного юнита(подставного) заменяет его на другого юнита/агента.

    В общий чертах Ваш скрипт будет таким:

    Quote

    monitor_event UnitTrained TrainedUnitCategory handler; нанят подставной юнит категории дрессировщик
    and FactionType england; если фракция - Англия
    and SettlementName London; лучше сделать найм в определенном городе

    create_unit London, название уникального юнита, num 0, exp 0, arm 0, wep 0; собственно создает в Лондоне того самого уникального юнита, ради которого все затеяли
    destroy_units england название подставного юнита; уничтожает подставного юнита
    inc_event_counter название счетчика 1; счетчик - он прибавляет 1 пункт при срабатывании и позволит ограничить найм, просто пропишите в здании где будет наниматься подставной юнит условие and название счетчика < 6 и болше пяти юнитов нанять не сможете

    end_monitor


    Таким образом Вы должны создать подставного юнита, а во время кампании он по скрипту будет заменяться на уникального, при том найм будет ограничен.

    Однако переобучать его будет невозможно. Разве только способом, который указал раньше.
       OPASEH
      • Imperial
      Imperial
      Ветеран модинга

      Дата: 12 апреля 2014, 00:36

      Avtocrator Зачем так все сложно? Для всех городов писать такое это ужас.

      Вариант № 1 (простой) - лимит только в одного юнита.
      Скрипт:
      monitor_event PreFactionTurnStart ваша фракция
      and I_UnitExists ваш юнит
      set_event_counter Unit_limit 1
      end_monitor
      
      monitor_event PreFactionTurnStart ваша фракция
      and not I_UnitExists ваш юнит
      set_event_counter Unit_limit 0
      end_monitor
      

      Export_descr_buildings.txt
      recruit_pool "Desert Archers" 1 0.32 4 0 requires factions { moors, } and not event_counter Unit_limit 1
      


      Итак, что делает скрипт? Он проверяет наличие у фракции опредленного юнита, если такой юнит уже есть, то скрипт уберет его из найма вообще у всех городов. При этом учтите, вы не сможете сделать отображение в интерфейсе как в Наполеоне: "Сейчас 0 из 4"

      Вариант №2:
      Юнит нанимаеться сразу и на конец хода фракции нанимателя остается в поселении. Принцип исчезания юнита из найма такой же.
      Скрипт:
      monitor_event SettlementTurnEnd SettlementName Clermont
      and I_NumberUnitsInSettlement ваш юнит = 1
      inc_event_counter Unit_limit 1
      end_monitor
      
      monitor_event SettlementTurnEnd SettlementName Clermont
      and I_NumberUnitsInSettlement ваш юнит = 2
      inc_event_counter Unit_limit 1
      end_monitor
      
      monitor_event SettlementTurnEnd SettlementName Clermont
      and I_NumberUnitsInSettlement ваш юнит = 3
      inc_event_counter Unit_limit 1
      end_monitor
      
      Когда величина достигла опредленного количества, убераем из найма 
      
      monitor_event PreFactionTurnStart ваша фракция
      and I_CompareCounter Unit_limit = 3 (лимит в 3 юнита)
      set_event_counter Unit_limit 1
      end_monitor
      
      Если еще у фракции нет 3 юнитов, найм разрешен
      monitor_event PreFactionTurnStart ваша фракция
      and I_CompareCounter Unit_limit < 3 (лимит в 3 юнита)
      set_event_counter Unit_limit 0
      end_monitor
      


      Export_descr_buildings.txt
      recruit_pool "DesertArchers" 1 0.32 4 0 requires factions { moors, } and not event_counter Unit_limit 1
      

      Внимание. Название юнита в EDU и скрипте должно быть без черточек, а просто в одно имя.
         Gromozeka
        • Imperial
        Imperial
        Форумчанин

        Дата: 12 апреля 2014, 09:27

        ...огромнейшее мерси!!! ...только маленькое уточнение - сам скрипт писать отдельным скриптом и запускать с панели управления, либо же добавлять строки в какой-то из существующих скриптов?
           Avtocrator
          • Imperial
          Imperial
          Gorthaur2488

          Дата: 12 апреля 2014, 10:41

          OPASEH
          Мой скрипт рассчитан для найма в конкретном городе, а не для того, чтоб по всем 199 прописывать.

          monitor_event SettlementTurnEnd SettlementName Clermont
          and I_NumberUnitsInSettlement ваш юнит = 1
          inc_event_counter Unit_limit 1
          end_monitor

          Т.е. каждый раз, если на конец хода в поселении будут происходить изменения но при этом останется один-единственный нанятый юнит, то счетчик будет продолжать тикать?


          peskot

          ...огромнейшее мерси!!! ...только маленькое уточнение - сам скрипт писать отдельным скриптом и запускать с панели управления, либо же добавлять строки в какой-то из существующих скриптов?


          Вставляете в файл campaign_script.txt после всех скриптов, но до строк:
          	wait_monitors
          
          end_script

          Никаких панелей управления, он и так сработает.
             OPASEH
            • Imperial
            Imperial
            Ветеран модинга

            Дата: 12 апреля 2014, 12:53

            Avtocrator (12 апреля 2014, 10:41):

            Т.е. каждый раз, если на конец хода в поселении будут происходить изменения но при этом останется один-единственный нанятый юнит, то счетчик будет продолжать тикать?

            monitor_event SettlementTurnEnd SettlementName Clermont
            and I_CompareCounter Unit_limit = 0
            and I_NumberUnitsInSettlement ваш юнит = 1
            inc_event_counter Unit_limit 1
            end_monitor
            


            Avtocrator (12 апреля 2014, 10:41):

            Мой скрипт рассчитан для найма в конкретном городе, а не для того, чтоб по всем 199 прописывать.

            Это ясно, но нанимать юнитов зачастую можно не только в одном конкретном городе.
               Avtocrator
              • Imperial
              Imperial
              Gorthaur2488

              Дата: 13 апреля 2014, 23:21

              OPASEH
              monitor_event SettlementTurnEnd SettlementName Clermont
              and I_CompareCounter Unit_limit = 0
              and I_NumberUnitsInSettlement ваш юнит = 1
              inc_event_counter Unit_limit 1
              end_monitor
              

              Да, но тогда будет другая проблема, юнит могут наоборот сразу же выводить из поселения, тогда следующий счетчик при найме второго уникального юнита не сработает, ведь для этого надо два юнита в поселении:
              monitor_event SettlementTurnEnd SettlementName Clermont
              and I_NumberUnitsInSettlement ваш юнит = 2
              inc_event_counter Unit_limit 1
              end_monitor
              

              Потому ИМХО если принципиально количество, то надо вести подсчет нанятых, а не присутствующих в поселении.
                 OPASEH
                • Imperial
                Imperial
                Ветеран модинга

                Дата: 13 апреля 2014, 23:54

                Я думал до вас дойдет))))

                monitor_event SettlementTurnEnd SettlementName Clermont
                and I_CompareCounter Unit_limit = 0
                and I_NumberUnitsInSettlement ваш юнит = 1
                inc_event_counter Unit_limit 1
                end_monitor
                
                monitor_event SettlementTurnEnd SettlementName Clermont
                and I_CompareCounter Unit_limit = 1
                and I_NumberUnitsInSettlement ваш юнит = 2
                inc_event_counter Unit_limit 1
                end_monitor
                
                monitor_event SettlementTurnEnd SettlementName Clermont
                and I_CompareCounter Unit_limit = 2
                and I_NumberUnitsInSettlement ваш юнит = 3
                inc_event_counter Unit_limit 1
                end_monitor
                
                   Avtocrator
                  • Imperial
                  Imperial
                  Gorthaur2488

                  Дата: 14 апреля 2014, 00:04

                  OPASEH

                  Я думал до вас дойдет))))

                  Так читайте же)))

                  Avtocrator

                  тогда будет другая проблема, юнит могут наоборот сразу же выводить из поселения, тогда следующий счетчик при найме второго уникального юнита не сработает, ведь для этого надо два юнита в поселении

                  Как я понимаю I_NumberUnitsInSettlement считает юнитов в поселении, но если нанять 3-ех юнитов, вовсе не обязательно, что они встретятся в этом городе и сработает скрипт на ограничение. Так можно будет до бесконечности нанимать.
                     OPASEH
                    • Imperial
                    Imperial
                    Ветеран модинга

                    Дата: 14 апреля 2014, 02:27

                    monitor_event SettlementTurnEnd SettlementName Clermont
                    and I_NumberUnitsInSettlement ваш юнит = 1
                    set_counter Unit_limit 1
                    end_monitor
                    
                    monitor_event SettlementTurnEnd SettlementName Clermont
                    and I_NumberUnitsInSettlement ваш юнит = 2
                    set_counter Unit_limit 2
                    end_monitor
                    
                    monitor_event SettlementTurnEnd SettlementName Clermont
                    and I_NumberUnitsInSettlement ваш юнит = 3
                    set_counter Unit_limit 3
                    end_monitor
                    
                    Когда величина достигла опредленного количества, убераем из найма 
                    
                    monitor_event PreFactionTurnStart ваша фракция
                    and I_CompareCounter Unit_limit = 3 (лимит в 3 юнита)
                    set_event_counter Unit_limit 1
                    end_monitor
                    
                    Если еще у фракции нет 3 юнитов, найм разрешен
                    monitor_event PreFactionTurnStart ваша фракция
                    and I_CompareCounter Unit_limit < 3 (лимит в 3 юнита)
                    set_event_counter Unit_limit 0
                    end_monitor
                    

                    Тогда надо будет писать под максимальный одновременный найм. В данном случае их 3. Для других городов другой скрипт.
                      • 2 Страниц
                      • 1
                      • 2
                       Похожие Темы
                      PPUR - Баги юнитов, проблемы анимации и прочие проблемы визуального плана.
                      PUR - Баги юнитов, проблемы анимации и прочие проблемы визуального плана.
                      Автор C Crusader90
                      Обновление Сегодня, 00:03
                      СТесты юнитов по ТВВ 3 Бессмертные Империи
                      Тесты юнитов для мультиплеера
                      Автор C Carnosaurus
                      Обновление 27 марта 2024, 13:38
                      СЛучшая озвучка юнитов в играх серии ТВ
                      Где озвучка наиболее профессиональна и атмосферна?
                      Автор C Carnosaurus
                      Обновление 25 марта 2024, 09:17
                      Воспользуйтесь одной из соц-сетей для входа
                      РегистрацияВход на форум 
                      «Империал» · Условия · Ответственность · Визитка · 29 мар 2024, 10:42 · Зеркала: Org, Site, Online · Эльдорадо казино · Gold казино · Счётчики