(hero_can_join, [party_id]), проверяет может ли бот с флагом Hero присоеденится к партии. если [party_id] не указана подразумевает партию игрока
(hero_can_join_as_prisoner, [party_id]), - проверит может ли присоеденится бот с флагом геро в качестве заключенного. работа с ай ди партии та же
(party_can_join), - проверит может ли партия с которой ведет диалог игрок присоеденится к партии игрока
(troops_can_join, <value>), - проверит имеет ли партия игрока достаточно места для присоденения ботов.
(troops_can_join_as_prisoner, <value>), - проверит на наличее места для присоеденения ботов в качестве заключенных.
(party_can_join_party, <joiner_party_id>, <host_party_id>, [flip_prisoners]), проверит может ли <joiner_party_id> присоедениться к партии <host_party_id> в качестве солдат или заключенных.
(main_party_has_troop, <troop_id>), - проверит имеет ли партия игрока определенного бота.
(party_is_in_town, <party_id>, <town_party_id>), проверяет наличие определенной партии партии в определенном поселении.
(party_is_in_any_town, <party_id>), проверит находиться ли определенная партия в поселении\центре
(party_is_active, <party_id>), - проверяет активна партия или нет
(party_set_name, <party_id>, <string_no>), присваивает имя партии
(remove_party, <party_id>), убирает партию с глобалки движок перестает ее видеть и учитывать.
(enable_party, <party_id>), активирует дезактивированную партию
(disable_party, <party_id>), отключает активную парию. партия включена в учет системой. и при проверке на цикл
(try_for_parties, <destination>), попадет в переменную. можно работать как и с включенной партией
но ии партии и игрок ее не видят
(set_spawn_radius, <value>), назначет радиус спауна для партии из модуль_парти_темплс для следующей операции
(spawn_around_party, <party_id>, <party_template_id>), спаунит партию из парти темплс в радиусе назначенном выше вокруг партии из модуль_парти
(set_party_creation_random_limits, <min_value>, <max_value>), назначает число ботов спаунящейся партии из парти темплс в диапазоне от минимального до максимального. предел диапазана от 0 до 100
(party_get_current_terrain, <destination>, <party_id>), запишет в переменную терраин который в днный момент под ногам партии. значение переменной вернет числом из файла
header_terrain_types.pyзначения
rt_water = 0
rt_mountain = 1
rt_steppe = 2
rt_plain = 3
rt_snow = 4
rt_desert = 5
rt_bridge = 7
rt_river = 8
rt_mountain_forest = 9
rt_steppe_forest = 10
rt_forest = 11
rt_snow_forest = 12
rt_desert_forest = 13
из скрытых
rt_deep_ocean = 15
(party_relocate_near_party, <party_id>, <target_party_id>, <value_spawn_radius>), телепортирует партию <party_id> в радиусе <value_spawn_radius> от <target_party_id>.
(party_get_position, <position_no>, <party_id>), - запишет координаты партии в позицию. Используйте pos0 для записи точных координат x y z . используеться на глобалке.
(party_set_position, <position_no>, <party_id>), - телепортирует указаную партию на указаную позицию. используеться на глобалке.
(set_camera_follow_party, <party_id>), назначает движение камеры за определенной партией. в нативе используется для движением за партией у которой игрок в плену
(party_attach_to_party, <party_id>, <party_id to attach to>), привязывает <party_id> к <party_id to attach to>
эта операция используется, когда отряды лордов ждут в замке или во время битвы, создавая одну коллективную партию из нескольких
(party_detach, <party_id>), "отвязывает" партию от коллектива.
(party_collect_attachments_to_party, <party_id>, <destination party_id>), - используется для групповой привязки
(бой на карте где только ИИ?)
(party_get_attached_to, <destination>, <party_id>), возвращает в переменной партию к кторой привязаня <party_id>
(party_get_cur_town, <destination>, <party_id>),[/b] - Эта операция используется, если партия лорда находится в городе, для определения города. То есть, если партия лорда в городе, то в <destination> записывается ID города из module_parties.py
(party_get_num_attached_parties, <destination>, <party_id>), - возвращает в переменной число привязанных партий
(party_get_attached_party_with_rank, <destination>, <party_id>, <attached_party_no>),- Если к <party_id> приаттачено несколько партий, эта операция получает энную по номеру. Сколько всего партий приаттачено, сообщает предыдущая операция (party_get_num_attached_parties).(Lav (http://rusmnb.ru/index.php?action=profile;u=9119), )
(party_set_extra_text, <party_id>, <string>), добавляет текст к тексту в высвечивающимся окне статуса партии
при наведении указателя мыши
(party_get_icon, <destination>, <party_id>), возвращает в переменной map_icons используемый партией
(party_set_icon, <party_id>, <map_icon_id>), позволяет назначить иконку для партии
(party_set_banner_icon, <party_id>, <map_icon_id>), назначает баннер из мап иконс для партии при указании
<map_icon_id>-0 убирает баннер.
(party_set_extra_icon, <party_id>, <map_icon_id>, <up_down_distance_fixed_point>, <up_down_frequency_fixed_point>, <rotate_frequency_fixed_point>, <fade_in_out_frequency_fixed_point>), добавляет партии дополнительную иконку. параметры позволяют организовать дополнительной иконке некоторую примитивную анимацию: "прыжки" вверх-вниз на определённое расстояние с определённой частотой, вращение с определённой частотой, исчезновение-проявление с определённой частотой.
(party_add_particle_system, <party_id>, <particle_system_id>), добавляет к иконке партии партикл. в родном используется для горящих деревень.
(party_clear_particle_systems, <party_id>), очищает указаную партию от партикла
(party_get_template_id, <destination>, <party_id>), - в переменной взвращается ай ди партии из парти_темплс
в основном для работы с операциями партий для парти темплс
(try_for_parties, ":cur_party"),
(party_get_template_id, ":cur_template", ":cur_party"),
(eq, ":cur_template", "pt_village_farmers"),
(party_set_icon, ":cur_party", "icon_что нибудь"),
(try_end),
(party_set_faction, <party_id>, <faction_id>), назначает партии фракцию
(store_faction_of_party, <destination>, <party_id>), записывает в переменную фракцию партии.
(store_random_party_in_range, <destination>, <lower_bound>, <upper_bound>), записывает в переменную случайную партию из диапазана. позволяет выбрать случайно скажем одну деревню из всех имеющихся.
(store_distance_to_party_from_party, <destination>, <party_id>, <party_id>), запишет и вернет в переменной дистанцию между двумя партиями
(store_num_parties_of_template, <destination>, <party_template_id>), - запишет в переменную число партий определенной парти темплс находящихся на глобалке( например число парий лесных бандитов)
(store_random_party_of_template, <destination>, <party_template_id>), вернет случайную партию из однотипных партий из парти_темплс
(store_num_parties_created, <destination>, <party_template_id>), вернет в переменной общее число порожденных партий одного типа
(store_num_parties_destroyed, <destination>, <party_template_id>), вернет общее число деклассированных (убитых, разрушенных) партий одного типа
(store_num_parties_destroyed_by_player, <destination>, <party_template_id>), - вернет число партий одного типа побежденных игроком
(party_get_morale, <destination>, <party_id>), - вернет текущую мораль партии игрока. значение от 0 до 100
(party_set_morale, <party_id>, <value>), задает значение морали . от0 до 100
Следующие операции используются только в файле module_dialogs.py
(party_join), в конце диалога пария присоеденяется к паритии игрока
(party_join_as_prisoner), в конце диалога партия присоеденяется к партии игрока в качестве заключенных
(troop_join, <troop_id>), в конце диалога с этим ботом он присоеденится к партии игрока
(troop_join_as_prisoner, <troop_id>), в конце диалога с эитм ботом он присоеденится к партии игрока в качестве пленника
-------------------------------------------конец операция в модуль_диалог
(add_companion_party, <troop_id_hero>), - добавляет к партии игрока бота с флагом геро
(party_add_members, <party_id>, <troop_id>, <number>), добавляет к партии указанное число ботов
общее число будет записано в reg0
(party_add_prisoners, <party_id>, <troop_id>, <number>), - добавляет указаное число ботв в качестве пленных к партии . число вернется в reg0
(party_add_leader, <party_id>, <troop_id>, [<number>]), добавляет к партии бота и делает его(их) лидером.
(по всей видимости для говорящего бота для диалогов с партиями х.з.)
(party_force_add_members, <party_id>, <troop_id>, <number>), добавит ботов к партии насильно без учета лимита партии.( только героев?)
(party_force_add_prisoners, <party_id>, <troop_id>, <number>),добавит ботов к партии в качестве пленных насильно без учета лимита партии.( только героев?)
(party_add_template, <party_id>, <party_template_id>, [reverse_prisoner_status]), добавлят к партии партию из парти темлс
[reverse_prisoner_status] либо подкрепление либо заключенные.
(distribute_party_among_party_group, <party_to_be_distributed>, <group_root_party>), - распределяет между партиями ИИ после боя заключенных и подкрепление в виде освобожденных ботов
(remove_member_from_party, <troop_id>, [party_id]), удаляет из партии бота с флагом геро. Для партии игрока [party_id] не указывается
(remove_troops_from_prisoners, <troop_id>, <value>), удаляет заданое число пленных из партии игрока.
(party_remove_members, <party_id>, <troop_id>, <number>), удаляет заданное число ботов одного вида из партии
количество запишется в reg0
(party_remove_prisoners, <party_id>, <troop_id>, <number>),, удаляет заданое количество ботов одного типа из партии . количество сохранится в reg0
(party_clear, <party_id>), - удаляет из партии и солдат и пленных
(add_gold_to_party, <value>, <party_id>), добавляет заданое число денег партии
(party_get_num_companions, <destination>, <party_id>), вернет общее число бойцов в партии включительно лидера
(party_get_num_prisoners, <destination>, <party_id>), - запишет в переменную общее количество пленных в данной партии
(party_count_members_of_type, <destination>, <party_id>, <troop_id>), - вернет общее количество ботов определенного вида
(party_count_prisoners_of_type, <destination>, <party_id>, <troop_id>), вернет общее количество пленных ботов одного типа
(party_get_free_companions_capacity, <destination>, <party_id>), вернет число свободных мест для бойцов в партии
(party_get_free_prisoners_capacity, <destination>, <party_id>), - вернет общее число свободных мест для пленников в партии
(party_get_num_companion_stacks, <destination>, <party_id>), вернет число занятых стэков для типов ботов
включает стеки для героев и игрока
(party_get_num_prisoner_stacks, <destination>, <party_id>), вернет количество занятых стеков для пленных в партии. включает число для героев
(party_stack_get_troop_id, <destination>, <party_id>, <stack_no>), запишет определенного бота из определенного стэка в переменную
(party_stack_get_size, <destination>, <party_id>, <stack_no>), запишет число ботов в определенном стэке
(party_stack_get_num_wounded, <destination>, <party_id>, <stack_no>), запишет число раненых ботов в определенном стэке
(party_get_prisoner_stack_troop, <destination>, <party_id>, <stack_no>), запишет определенных ботов из определенного стэка пленных
(party_get_prisoner_stack_size, <destination>, <party_id>, <stack_no>), - запишет число ботов в определенном стэке пленных
(party_prisoner_stack_get_troop_dna, <destination>, <party_id>, <stack_no>), - запишет в переменную
днк юнита находящегося в партии.
(party_stack_get_troop_dna, <destination>, <party_id>, <stack_no>), - запишет в переменную днк юнита
находящегося в партии в качестве заключенного.
Пояснения ДНК от
shturmfogelчто такое "dna": на сколько я понял это некое число, на основании которого движок определяет как будет выглядеть компьютерный болванчик и, возможно, как он будет одет (какие шмотки из имеющихся у него он выберет, чтобы показаться в сцене). Это распространяется на обычных болванчиков, не на NPC.
думаю party_stack_get_troop_dna позволяет получить вид бота, который будет показан в окне партии =/ но не уверен
я использовал dna так: добавление священника в мирную сцену деревни, священник не имеет флага "герой", в модуле тропс это всего один юнит. Однако в сцене конкретной деревни священник будет появлятся всегда с одним лицом и насколько я могу судить в одном и том же наборе одежды, т.е. он как бы там живет и не спаунится по всей кальдарии при появлении ГГ:)
для проверки первый вариант - священник спаунится каждый раз со случайно выбраным лицом:
(try_begin),
(party_slot_ge,"$current_town",slot_center_has_cerkov,1),
(assign, ":walker_troop_id", "trp_village_priest"),
(store_random_in_range, ":cur_dna", 1, 1000000),
(set_visitor, town_walker_entries_start, ":walker_troop_id",":cur_dna"),
(try_end),
второй вариант - священник при первой встречей с ГГ выбирает случайным образом себе личину и потом в этой сцене появляется только с этим лицом
выбранный dna заносится в слот и при последующих спаунах применяется только этот dna, создается иллюзия, что в каждой деревне индивидуальный болванчик, хотя он один на всех
(try_begin),
(party_slot_ge,"$current_town",slot_center_has_cerkov,1),
(assign, ":walker_troop_id", "trp_village_priest"),
(store_add,":cur_slot_dna",sa_troop_slot_end,"$current_town"),
(troop_get_slot,":cur_dna",":walker_troop_id",":cur_slot_dna"),
(try_begin),
(eq,":cur_dna",0),
(store_random_in_range, ":cur_dna", 1, 1000000),
(troop_set_slot,":walker_troop_id",":cur_slot_dna",":cur_dna"),
(try_end),
(set_visitor, town_walker_entries_start, ":walker_troop_id",":cur_dna"),
(try_end),
в общем как то так используется
в первоначальной истории героя, насколько помню, рандомные лица были поистине ужа сающи и напоминали каких то имбицилов
в варбанде же сделали некие наборы настроек лиц, и этот самый дна позволяет ими как то управлять
(store_party_size, <destination>,[party_id]), запишет общее число бойцов и пленных в партии. без опции парти_ид
по умолчанию партию игрока
(store_num_regular_prisoners, <destination>, <party_id>), запишет в переменную общее количество пленных без учета героев
(party_add_xp_to_stack, <party_id>, <stack_no>, <xp_amount>),позволяет добавить определенное число хр определенному стэку в партии
(party_upgrade_with_xp, <party_id>, <xp_amount>, <upgrade_path>), -распределяет указанное число хр между всеми ботами и делает апгрейд если бот достиг уровня для апгрейда.
значения для апгрейда
0 - случайно
1 - первый путь (апгрейд2 в модуль трупс)
2 - второй путь (апгрейд2 в модуль трупс)
(party_add_xp, <party_id>, <xp_amount>), добавляет хр партии и распределяется между всеми участниками партии
(party_get_skill_level, <destination>, <party_id>, <skill_no>), запишет уровень скилла партии имеющей героя скилл для партии общий.(не личный)
(heal_party, <party_id>), лечит партии
(party_wound_members, <party_id>, <troop_id>, <number>), - делает ранеными определенное количество ботов одного типа в партии
(party_remove_members_wounded_first, <party_id>, <troop_id>, <number>), удаляет из партии ботов начиная с раненых. общее число запишеться в reg0
(party_quick_attach_to_current_battle, <party_id>, <side>), добавит указаную партию к битве на указаной стороне
значение side
0- союзник
1 враг
(party_get_battle_opponent, <destination>, <party_id>) запишет в переменную противника партии если она ведет бой.
(inflict_casualties_to_party, <parent_party_id>, <damage_amount>, <party_id_to_add_causalties_to>), -авторасчет раненых и убитых ботов для ИИ партий.
Эти операции используются только для ИИ партий
(party_set_marshall, <party_id>, <value>),назначает или очищает партию от звания маршал.
значение или 0(очищает) или 1(назначает).
(party_set_flag, <party_id>, <flag>, <clear_or_set>), задает или убирает определенный флаг из файла
header_parties.py (пояснение флагов будет позже в отдельном посте)
<clear_or_set> 0- снимает определенный флаг, 1 - назначает.
(party_set_aggressiveness, <party_id>, <number>), - задает величину агрессивности для партии .
<number> - имеет диапазон от 0 до 15. 15 -максимальное значение агрессивности.
агрессивность влияет на способность партии атаковать другие отряды при наивысшей паритя будет атаковать любой отряд не зависимо от размера атакуемой партии.
(party_set_courage, <party_id>, <number>), - задает кураж (как долго партия будет преследовать другую партию.) значение <number> - от 4 до 15
(party_get_ai_initiative, <destination>, <party_id>), запишет в переменную текущею инициативу партии в диапазоне от 0 до100.
(party_set_ai_initiative, <party_id>, <value>), позволяет назначить инициативу партии в диапазоне от 0 до 100
(party_set_ai_behavior, <party_id>, <ai_bhvr>), назначает ИИ партии поведение.
флаги для ИИ поведения в файле
header_parties.py описание будет позже.
(party_set_ai_object, <party_id>, <object_party_id>), при задании линии поведения операцией выше скажем
ai_bhvr_travel_to_party(следовать к партии) - эта операция задает партию которая будет являться целью путешествия .
(party_set_ai_target_position, <party_id>, <position_no>), задает партии движении к определенной позиции
на глобальной карте. при флаге
ai_bhvr_travel_to_point (party_set_ai_patrol_radius, <party_id>, <radius_in_km>), задает радиус патрулирования партии при при линии поведения заданой флагами
ai_bhvr_patrol_location
ai_bhvr_patrol_party
значение числовое в км придется вычислять методом тыка или с помощью вот такого триггера
в файл module_triggers.py
(0.1, 0, 0, [(party_get_position, pos1, "p_main_party"),
(party_get_position, pos2, "p_Bridge_37"),
(get_distance_between_positions_in_meters, reg1, pos1, pos2)
],
[(display_message,"@ {reg1}.",0xFF4040)
])
,
(party_ignore_player, <party_id>, <duration_in_hours>), задает партии ИИ игнорирование партии игрока определенное время. <duration_in_hours> - внутри игровое время в часах.
(party_set_bandit_attraction, <party_id>, <attaraction>), не уверен, но по всей видимости задает партии привлекательность для нападения партий с флагом поведения бандит. значение от 0 до 100
(party_get_helpfulness, <destination>, <party_id>),- заисывает полезность партии в значении от 0 до 100
(party_set_helpfulness, <party_id>, <number>), - задает полезность партии от 0 до 10 000 дефлолтное 100. устанавливает уровень стремления помочь союзнику (вступить в уже идущее сражение)
(get_party_ai_behavior, <destination>, <party_id>), возвращает в переменную ai_behavior используемый партией.
(get_party_ai_object, <destination>, <party_id>), возвращает в переменную партию заданную как цель
для <party_id>
(party_get_ai_target_position, <position_no>, <party_id>), возвращает заданную позицию цель для партии.
(get_party_ai_current_behavior, <destination>, <party_id>), - вернет в переменную поведение партии
которое было назначено до определенных событий. Как пример возвращение к действиям партии предшествующим преследованию ее другой партией.
(get_party_ai_current_object, <destination>, <party_id>), запишет в переменную партию которая сделала сбой поведения <party_id>.