Всадники Кальрадии

Модификации => Обмен опытом: Mount&Blade => Обмен опытом (в помощь мододелу) => Инструкции и уроки по созданию модификаций => Тема начата: Leshanae от 23 Мая, 2011, 19:58

Название: [MS] Добавление вещей в мультиплеер через модульную систему
Отправлено: Leshanae от 23 Мая, 2011, 19:58
Так как это руководство по большей части для тех, кто запутался, то оформлю в виде расширенного ЧаВо. Это подразумевает что документация по модульной системе прочитана и усвоена (первые 5 частей), а тем, кто этого не сделал, настоятельно советую всё-таки пересилить лень, ибо на откровенно глупые вопросы которые там подробно разжёваны отвечать вам вряд ли будут и просто отошлют читать :)



Задачи тутора научить вас:
1. Как добавить вещь для игроков.
2. Как добавить вещь для ботов.
3. Как выставить ей цену или сделать бесплатной для определённого класса.
4. Как сделать так, чтобы эта вещь была на персонаже уже при выборе персонажа ("стандартный закуп").

Всё это мы рассмотрим на примере правки вещей у свадского арбалетчика. У него в начальном закупе нет шлема - давайте добавим ему бесплатный шлем.


Стандартный закуп свадского арбалетчика. Бесплатная экипировка. Общее начальное описание инвентаря мультиплеерных классов и что у них есть при входе в игру.

Как и любые другие, мультиплеерные классы описываются в module_troops.py. Находим запись свадского арбалетчика и смотрим.

["swadian_crossbowman_multiplayer","Swadian Crossbowman","Swadian Crossbowmen",tf_guarantee_all,0,0,fac_kingdom_1,
[itm_bolts,itm_crossbow,itm_sword_medieval_b_small,itm_tab_shield_heater_a,itm_red_shirt,itm_ankle_boots],
def_attrib_multiplayer|level(19),wpe(90,60,180,90),knows_common|knows_ironflesh_2|knows_athletics_5|knows_shield_5|knows_power_strike_2|knows_riding_1,swadian_face_young_1, swadian_face_old_2],

Синим выделено всё его имущество. Это и есть те вещи, которые будут для игрока бесплатны. Если в этом списке присутствует предмет - в игре он бесплатен.
За то, что это имущество будет на надето на арбалетчика, отвечает метка tf_guarantee_all. Она отвечает за то, что по возможности будут забиты все слоты оружия, брони и коней. Есть и другие метки, например tf_guarantee_ranged, она отвечает за то что выбранный класс точно возьмёт стрелковое/метательное оружие, а tf_guarantee_melee гарантирует что он возьмёт оружие ближнего боя. Такими метками, к слову, достигается и то, что в синглплеере разбойники одеты по-разному - у кого-то лук и стрелы, у кого-то кувалда, хотя класс один.


Где прописывается вся доступная свадскому арбалетчику экипировка.

Это описывается в module_scripts.py. Если предмет там не описан для нужного класса - предмет не появится в меню, даже если он есть в стандартном закупе.

Ниже приведён список вещей, которые свадский арбалетчик вообще сможет увидеть в меню. Важно заметить, что бесплатные (начальные) вещи там тоже должны быть, иначе они не появятся, даже если прописаны в инвентаре в module_troops.py:

#1a-Swadian Crossbowman
      (call_script, "script_multiplayer_set_item_available_for_troop", "itm_bolts", "trp_swadian_crossbowman_multiplayer"),
      (call_script, "script_multiplayer_set_item_available_for_troop", "itm_steel_bolts", "trp_swadian_crossbowman_multiplayer"),
      (call_script, "script_multiplayer_set_item_available_for_troop", "itm_crossbow", "trp_swadian_crossbowman_multiplayer"),
      (call_script, "script_multiplayer_set_item_available_for_troop", "itm_heavy_crossbow", "trp_swadian_crossbowman_multiplayer"),
      (call_script, "script_multiplayer_set_item_available_for_troop", "itm_sniper_crossbow", "trp_swadian_crossbowman_multiplayer"),
      (call_script, "script_multiplayer_set_item_available_for_troop", "itm_sword_medieval_a", "trp_swadian_crossbowman_multiplayer"),
      (call_script, "script_multiplayer_set_item_available_for_troop", "itm_sword_medieval_b", "trp_swadian_crossbowman_multiplayer"),
      (call_script, "script_multiplayer_set_item_available_for_troop", "itm_sword_medieval_b_small", "trp_swadian_crossbowman_multiplayer"),
      (call_script, "script_multiplayer_set_item_available_for_troop", "itm_tab_shield_heater_a", "trp_swadian_crossbowman_multiplayer"),
      (call_script, "script_multiplayer_set_item_available_for_troop", "itm_tab_shield_heater_b", "trp_swadian_crossbowman_multiplayer"),
      (call_script, "script_multiplayer_set_item_available_for_troop", "itm_tab_shield_heater_c", "trp_swadian_crossbowman_multiplayer"),

      (call_script, "script_multiplayer_set_item_available_for_troop", "itm_red_shirt", "trp_swadian_crossbowman_multiplayer"),
      (call_script, "script_multiplayer_set_item_available_for_troop", "itm_padded_cloth", "trp_swadian_crossbowman_multiplayer"),
      (call_script, "script_multiplayer_set_item_available_for_troop", "itm_leather_armor", "trp_swadian_crossbowman_multiplayer"),
      (call_script, "script_multiplayer_set_item_available_for_troop", "itm_haubergeon", "trp_swadian_crossbowman_multiplayer"),
      (call_script, "script_multiplayer_set_item_available_for_troop", "itm_ankle_boots", "trp_swadian_crossbowman_multiplayer"),
      (call_script, "script_multiplayer_set_item_available_for_troop", "itm_leather_boots", "trp_swadian_crossbowman_multiplayer"),
      (call_script, "script_multiplayer_set_item_available_for_troop", "itm_mail_chausses", "trp_swadian_crossbowman_multiplayer"),
      (call_script, "script_multiplayer_set_item_available_for_troop", "itm_leather_gloves", "trp_swadian_crossbowman_multiplayer"),
    
      (call_script, "script_multiplayer_set_item_available_for_troop", "itm_arming_cap", "trp_swadian_crossbowman_multiplayer"),
      (call_script, "script_multiplayer_set_item_available_for_troop", "itm_norman_helmet", "trp_swadian_crossbowman_multiplayer"),
      (call_script, "script_multiplayer_set_item_available_for_troop", "itm_helmet_with_neckguard", "trp_swadian_crossbowman_multiplayer"),
      (call_script, "script_multiplayer_set_item_available_for_troop", "itm_flat_topped_helmet", "trp_swadian_crossbowman_multiplayer"),
      (call_script, "script_multiplayer_set_item_available_for_troop", "itm_guard_helmet", "trp_swadian_crossbowman_multiplayer"),

Итак, мы видим что в доступной экипировке есть и шлемы, но они все покупаются. Далее мы сделаем бесплатным один шлем, например выделенный красным "itm_flat_topped_helmet". Но сперва необходимо разобраться с ценами на предметы.


Цена на предмет в игре.

Стоимость вещей прописывается в module_items.py в описании каждой из них. Когда у игрока накапливается достаточно денег для покупки какой-то вещи - он сможет купить эту вещь. Так, например, наш itm_flat_topped_helmet в игре мы можем купить за 203 золотой уже в начале игры.
(Примечание: На основании этой стоимости рассчитывается цена и в сингле и в мультиплеере. В сингле на цену предмета действует система наценок, в мультиплеере же всё покупается по той стоимости что выставлена в этом описании предмета.)

Но несложно заметить что у вещей, в мультиплеере бесплатных, в module_items.py цена не 0. Почему? А потому, что они прописаны в инвентарь стандартного оружия классу в module_troops.py (мы рассмотрели это выше). То есть эти вещи уже есть в мешке у арбалетчика, когда вы выбираете его в игре. Впрочем, это я итак десять раз сказал :)


Как сделать вещь бесплатной для закупа? тем, кто ещё не догадался.

Как видим, этот шлем ("itm_flat_topped_helmet") у свадского арбалетчика есть в доступной экипировке, но он не бесплатен. Чтобы сделать его бесплатным, необходимо добавить его в стандартную экипировку в module_troops:

["swadian_crossbowman_multiplayer","Swadian Crossbowman","Swadian Crossbowmen",tf_guarantee_all,0,0,fac_kingdom_1,
[itm_bolts,itm_crossbow,itm_sword_medieval_b_small,itm_tab_shield_heater_a,itm_red_shirt,itm_ankle_boots,"itm_flat_topped_helmet"],
def_attrib_multiplayer|level(19),wpe(90,60,180,90),knows_common|knows_ironflesh_2|knows_athletics_5|knows_shield_5|knows_power_strike_2|knows_riding_1,swadian_face_young_1, swadian_face_old_2],

Если надо сделать какой-то предмет не-бесплатным, нужно сделать обратное - удалить его из этой записи.


В каком слоте появится предмет и в каком порядке они выкладываются в слотах?

В module_scripts.py должна быть строка, описывающая в какой слот предмет должен быть вписан (т.е если её нет, то предмет не появится в меню закупа). Например наш шлем описывается как лёгкий шлем :

(item_set_slot, "itm_flat_topped_helmet", slot_item_multiplayer_item_class, multi_item_class_type_light_helm),

Если шлему будет прописано multi_item_class_type_gloves, то надеваться он будет всё также на голову, но появится в слоте для перчаток :)


Порядок сортировки предметов в слотах зависит от их стоимости в module_items.py - чем дальше от края экрана тем дороже предмет. Это будет действовать и на бесплатные в мультиплеере предметы: сперва идут бесплатные с сортировкой по реальной стоимости, затем покупаемые.


Экипировка у ботов.

У ботов оружие и броня прописываются отдельно, они не зависят от закупа игроков. Вооружение ботов (как и для сингла) описывается в module_troops: свадский арбалетчик-бот выглядит как swadian_crossbowman_multiplayer_ai.

Примечание: закуп ботов описывается только в module_troops, в module_scripts ничего исправлять не нужно.





Я запутался во всём вышенаписанном. Можно увидеть краткий алгоритм?

Для добавления вещи в мультиплеер нам необходимо выполнить такие шаги:

1. Описать вещь в module_items.py. Как - описано в документации.
2. В файле module_scripts.py добавить нужному классу нужной фракции эту вещь в список доступных.
3. В файле module_scripts.py описать в каком(-их) слоте(-ах) этот предмет должен появиться.

Если нужно чтобы данная вещь была доступна сразу (то есть бесплатная в начальном закупе), то нужно ещё
4. В файле module_troops.py прописать этот предмет в инвентарь соответствующему классу. Как - описано в документации (и в этом маленьком гайде).


Для удаления предмета из возможного закупа необходимо
1. Удалить или закомментировать символом "#" запись предмета в module_scripts.py (те самые строки "(item_set_slot,").




Итак, всё сделали. Сохраняем, компилируем, входим в игру и проверяем. Если всё сделали правильно, то у вас автоматически появится шлем на голове при выборе класса.
Название: Re: Re: Модульная система
Отправлено: VKVania от 09 Июня, 2011, 12:12
Цитировать (выделенное)
Если ему будет прописан multi_item_class_type_gloves, то я честно говоря не знаю как это воспримет игра (gloves = перчатки в переводе с английского). Может он шлем на руки натянет?..
Этот шлем будет просто появлятся при выборе перчаток в меню, но одеватся он будет все равно на голову. На это влияет то, что напитано в module_items.
Название: Re: Re: Модульная система
Отправлено: Pavel))) от 09 Июня, 2011, 20:41
помогите пожалуйста! я хочу добавить свадскому снайперу этот объект он уже есть в игре itm_strange_armor это доспехи самурая. в итемс он уже есть так как он родной!
в скрипте я уже и добавлял и заменял вот че получилось:
 #armors
      (item_set_slot, "itm_red_shirt", slot_item_multiplayer_item_class, multi_item_class_type_light_armor),
      (item_set_slot, "itm_red_tunic", slot_item_multiplayer_item_class, multi_item_class_type_light_armor),
      (item_set_slot, "itm_aketon_green", slot_item_multiplayer_item_class, multi_item_class_type_light_armor),
      (item_set_slot, "itm_padded_cloth", slot_item_multiplayer_item_class, multi_item_class_type_light_armor),
      (item_set_slot, "itm_red_gambeson", slot_item_multiplayer_item_class, multi_item_class_type_light_armor),
     (item_set_slot, "itm_strange_armor", slot_item_multiplayer_item_class, multi_item_class_type_light_armor),
тут были другие доспехи
  #1a-Swadian Crossbowman
...............

      (call_script, "script_multiplayer_set_item_available_for_troop", "itm_red_shirt", "trp_swadian_crossbowman_multiplayer"),
      (call_script, "script_multiplayer_set_item_available_for_troop", "itm_padded_cloth", "trp_swadian_crossbowman_multiplayer"),
      (call_script, "script_multiplayer_set_item_available_for_troop", "itm_strange_armor", "trp_swadian_crossbowman_multiplayer"),

Название: Re: Re: Модульная система
Отправлено: proVIDec от 09 Июня, 2011, 20:47
Pavel)))
Это мультиплеер. Для сингла нужно в troops.py добавлять.
Название: Re: Re: Модульная система
Отправлено: Pavel))) от 09 Июня, 2011, 21:03
я и хотел в мультиплеер добавить в сингл я через трооп идитор добавляю так легче)) я понел в чем дело просто у меня модулька небыла правильно настроена я 2 раза написал /модуле/
Название: Re: Re: Модульная система
Отправлено: Leshanae от 18 Июня, 2011, 10:29
Кстати, необходимо заметить, что у ботов оружие и броня прописываются отдельно, то есть они не зависят от закупа игроков. Вышеописанным образом можно добавить предметы игрокам, но не ботам. Вооружение ботов (как и для сингла) описывается в module_troops, в файле они имеют на конце _multiplayer_ai.

Цитировать (выделенное)
Если ему будет прописан multi_item_class_type_gloves, то я честно говоря не знаю как это воспримет игра (gloves = перчатки в переводе с английского). Может он шлем на руки натянет?..
Этот шлем будет просто появлятся при выборе перчаток в меню, но одеватся он будет все равно на голову. На это влияет то, что напитано в module_items.
Вот спасибо огромное :) Я как раз искал как привязать предмет к слоту :)

Добавлено:
Поправил свой пост, теперь он вроде понятнее и упорядоченнее. Спасибо VKVania за очень важную подсказку :)
Название: Re: Добавление вещей в мультиплеер через модульную систему
Отправлено: Pavel))) от 19 Июня, 2011, 23:08
ну ботам и в мультиплеере и в сингле я доспехи всегда через трупидитор добавляю - так реально легче... но добавлять их нужно только после того как с модулькой завершил работу над модом... так что для мододелов которые выпускают часто новые версии будет не очень удобно ведь модулька вроде стирает то что делается через идиторы или вручную... или нет?
Название: Re: Добавление вещей в мультиплеер через модульную систему
Отправлено: Leshanae от 27 Июня, 2011, 17:09
Pavel))) (http://rusmnb.ru/index.php?action=profile;u=18585), трупэдитор и модулька - разные пути, и созданы для разных задач. Хотя здесь немалая доля вкусовых предпочтений имеется.

Тот, кому просто меч заменить нужно, ясен пень не будет ставить себе питон, модульку, изучать документацию и прочее; он поставить трупэдитор и почитает мануал, заменит оружие и всё.
Но для того, кто решил делать мод основательно, внедрение предмета в игру это семечки в сравнении с другими задачами в модострое, и модулька у него по-любому будет стоять настроенная, и самый главный аргумент - он свою модульку предпочитает знать, а значит добавить оружие ему проще (не факт что легче) через модльку, чтобы не теряться в ориентировании в файлах.
Название: Re: Добавление вещей в мультиплеер через модульную систему
Отправлено: Sir_Valente от 27 Июня, 2011, 17:57
Модулька круче)
Название: Re: [MS] Добавление вещей в мультиплеер через модульную систему
Отправлено: Garret_tenb от 12 Февраля, 2012, 18:28
У меня вопрос , я все создал правильно но , фрака создается боты ставятся но я не могу зайти там нет трупов( юнитов) короче пустота , и когда нажемаш таб нет названия фракцыи. помогите в чем может быть проблема ?
Название: Re: [MS] Добавление вещей в мультиплеер через модульную систему
Отправлено: Kerosin от 05 Декабря, 2012, 13:36
Спасибо большое. У меня только один вопрос - всё здесь написанное применимо к моду Warband-а Napoleonic Wars?Понятно что в Наполеонике нету валюты, но реально там просто заменить оружие у некоторых юнитов в мультиплеере, следуя Вашей инструкции?
Название: Re: [MS] Добавление вещей в мультиплеер через модульную систему
Отправлено: Кавир от 04 Марта, 2013, 01:11
Спасибо большое. У меня только один вопрос - всё здесь написанное применимо к моду Warband-а Napoleonic Wars?Понятно что в Наполеонике нету валюты, но реально там просто заменить оружие у некоторых юнитов в мультиплеере, следуя Вашей инструкции?
Доброго времени суток, Kerosin , заменить оружие в мультиплеере NW можно, можно даже и добавить, не прибегая к изменению модульной системы, а используя только UT editor. Достаточно поменять предметы через редактор.
Потом нужно будет изменённый текстовик troops.txt перекинуть на модуль сервера. Тогда будет работать, при условии, что troops.txt установят себе люди, который будут заходить на изменённый сервер. У тех, кто себе ничего не поменяет, ничего и не изменится, но на сервер они смогут зайти, и оружие будут брать стандартное.
 

Добавлено: 04 Марта, 2013, 02:01

Товарищи Форумчане, подскажите пожалуйста, тем много, я на Всадниках не ориентируюсь, ибо новенький здесь. Вопрос у меня следующий: как добавить в Napoleonic Wars функцию выбора экипировки на подобии фунции выбора оружия, как и сделано в оригинале. Я хочу создать две классификации: пехотные и гренадёрские полки, а уже внутри этих классов добавить свободный выбор среди нескольких вариантов киверов и мундиров, чтобы поместить большее число полков, чем есть в оригинальной игре. Как это сделать? Буду благодарен подробному ответу, но и от краткого не откажусь.
Название: Re: [MS] Добавление вещей в мультиплеер через модульную систему
Отправлено: Евген от 25 Мая, 2013, 12:30
Здравствуйте. Возможно, вопрос не по теме. Простите меня, о модераторы. Играл в мод Рус 13 век. Решил зайти в мультиплеер, но в панели администрирования очень много функций заблокировано и невозможно изменить. Интересует именно пункт с добавлением ботов. Возможно ли это исправить? Интернет через Мегафон-модем, так что сами понимаете. А иногда просто хочется поскакать и просто порубиться без блуждания по глобальной карте. Может кто-нибудь что-нибудь подсказать?
Можно было бы, конечно и в одиночном режиме порубиться, но там вообще веселуха: все боты бегают без оружия и доспехов и имеют имя Игрок, а не, например, ополченец и т.п.
Название: Re: [MS] Добавление вещей в мультиплеер через модульную систему
Отправлено: MongolMin от 28 Мая, 2013, 20:03
А как сделать так, чтобы объект, брошенный в редакторе(например любой меч) можно было поднимать?Это скрипты или связано с модульной системой?
Название: Re: [MS] Добавление вещей в мультиплеер через модульную систему
Отправлено: HunterWolf от 28 Мая, 2013, 22:57
Это скрипты или связано с модульной системой?
Это скрипты связанные с модульной системой.
Название: Re: [MS] Добавление вещей в мультиплеер через модульную систему
Отправлено: MongolMin от 30 Мая, 2013, 01:00
Это скрипты или связано с модульной системой?
Это скрипты связанные с модульной системой.
Подскажи ка Волк как это делается со скриптами + модулька?как сделать так, чтобы оружия можно было поднимать?прошу, напиши(если знаешь)
 

Добавлено: 30 Мая, 2013, 01:04

Буду ОЧЕНЬ благодарен за ответ!
Название: Re: [MS] Добавление вещей в мультиплеер через модульную систему
Отправлено: Darth_Volde от 12 Ноября, 2013, 19:58
Помогите,пожалуйста.
А вот если я добавил в одиночную игру предмет (допустим,броню),то как мне её добавить в мультиплеер? В смысле,в каком файле и что мне нужно прописать,чтобы этот предмет "существовал" в МП. Я так понял это в module_troops,но как понять что написать именно под мой предмет?

Заранее спасибо.

   
Название: M&B Warband Native новые доспехи для сетевой игры
Отправлено: Tayan от 24 Февраля, 2016, 12:03
Подскажите пожалуйста как в сетевую игру(Варбанд,Нативе) добавить новые доспехи. Доспехи скачаны с сайта, есть Resource и Textures. Прочитала эту тему, и еще несколько подобных. Но ничего не получается сделать. Как добавлять вещи для сетевой игры в список покупок?
Файлы из папки Resource и Textures перекинула. item_kinds1.txt отредактировала по инструкции. troops.txt - здесь через Едитор добавила нужному сетевому классу новый доспех(когда старую броню убираю на классе при входе в игру нет доспехов)но в списке покупок его нет. Где то читала что новые доспехи появятся в списке покупок если внести изменения в scripts.txt но тут для меня начинается дремучий лес. :cry: Там весь файл из циферок, откуда их брать и что они значат я без понятия. Может редактор какой для этого файла есть? или кто знающий подскажет что делать?
И еще если я добавлю себе новые доспехи(если все таки получится) и зайду поиграть на выделенный сервер(Хунтер_инвизион например) смогу я свои доспехи покупать или только те что установлены на самом сервере?
Буду благодарна всем кто решит помочь.  :)
Название: Re: [MS] Добавление вещей в мультиплеер через модульную систему
Отправлено: Vanok от 24 Февраля, 2016, 13:17
И еще если я добавлю себе новые доспехи(если все таки получится) и зайду поиграть на выделенный сервер(Хунтер_инвизион например) смогу я свои доспехи покупать или только те что установлены на самом сервере?
Нет, Ваши правки попросту сделают версию мода несовместимой с той, которую использует сервер.