2. Совсем не понял сути вопроса =/
("free_revelers","Free Revelers", icon_gray_knight|carries_goods(20), 0, fac_neutral, courage_9|aggressiveness_9,[(trp_swadian_knight,0,10),(vaegir_knight,0,10)]),simple_triggers:
(24,dialogs:
[(try_begin),
(spawn_around_party, "p_town_7", "pt_free_revelers"), # ID заспавненной партии автоматически помещается в reg0
(party_set_ai_behavior, reg0, ai_bhvr_patrol_location),
(party_set_ai_patrol_radius, reg0, 100),
(try_end)]),
[party_tpl|pt_free_revelers, "start", [], "Hello!", "free_rev_talk", []],Это отряд и нескольких рыцарей, который спавнится у дрезенбурга и гуляет по всей карте...
[anyone|plyr, "free_rev_talk", [], "Do you want to join our company?", "free_rev_join", []],
[anyone, "free_rev_join", [
(troop_slot_eq, "trp_player", slot_troop_return_renown, 600),
], "Oh, so famous person ask me? Of course, we do!", "free_rev_join_ok", []],
[anyone, "free_rev_join", [
(eq, "$player_honor", 15),
], "Oh, you are very good and fair commander? Of course, we do!", "free_rev_join_ok", [(party_join)]],
[anyone, "free_rev_join", [], "I don't think it is a good idea...", "free_rev_join_ok", []],
[anyone|plyr, "free_rev_ok", [], "I am glad to hear it.", "close_window", []],
[anyone, "free_rev_join", [], "I don't think it is a good idea...", "free_rev_join_no", []],
[anyone|plyr, "free_rev_join_no", "Oh, I understand...", "close_window", []],
Постараюсь сделать все 3 твоих просьбы в хорошем качестве... Наверное около 3-х дней надо будет...
Но мне больше импонирует сделать отдельного очень сильного trops'a высокого уровня с названием "свободный гуляка" и повысить требования известности и/или чести.
Swadian Knight ([url]http://rusmnb.ru/index.php?action=profile;u=18262[/url]),
Итак план такой:
- Всего доступно 15 лордов. Они имеют характеристики, как у любого другого лорда.
- Обмундирование лорду дается вручную, т.к. 1) стандартное может не понравится, 2) не делать же всех лордов как клоны, 3) не делать же одного в вегирском, другого в сарранидском, третьего в кергитском... Просто все остальные лорды имеют фиксированное обмундирование. А в нашем случае лорды должны быть как бы рандомными... Но есть вариант влепить одну забавную броньку, которой нет в продаже ;)
- Лорды нанимаются в городе (вряд ли посреди поля лорд где-то возьмется).
- Что бы нанять надо много денег (я остановился на 2300 динаров).
- Лорды всунуты в рамки лордов с патями, что бы на них мог действовать ИИ. По этому не факт, что они, так же как любой лорд, не сбегут в другую фракцию... По крайней мере им, в принципе, ничего не мешает это сделать, они же такие "люди" (NPC) как другие лорды.
- Лорда можно уволить... если дать 1000 динар возмещения... А если не дать, то -1 к чести, т.к. лорд всем растрындит, как ты плохой :laught:
- Еще планирую сделать этих новых лордов более послушными (убрать для них доп. проверки всякой фигни в диалогах), все таки свои...
Ну как?
И что значит "выбираем"? Фракция игрока как бы своя собственная...
И на что это влияло?Это влияло на найм и рекрутинг войск в принадлежащих фракции деревнях и через рекрутировщика
А ты хотел, что бы они были героями?неа, нелюблю принимать в отряд npc :D
Вообще они у меня ходят в латах, с военным луком и двуручником... Мощные ребятки. Кого не зарубят, то застрелят.ну так пусть так и будет)
Кстати в игре уже уже есть свободные воины, гуляющие по карте... дезертиры называются :laught:...
Swadian Knight ([url]http://rusmnb.ru/index.php?action=profile;u=18262[/url]), не.. армии не будет... Раз в 24 часа шанс 5% на
Ну про дезертиров я написал потому, что мне показалось, что изначально ты хотел именно такие отряды, как дезертиры, но не вражеские, дружественные...
А еще идея, если ГГ очень известный, то эти отряды, якобы наслышавшись про него, начнут следовать за отрядом ГГ. (просто таргет на патю гг поставлю :D).
Вот бродишь по земле... а тут хоп какой-то отряд привязался к тебе и требует взять его к себе из-за того что ты такой крутой, ну а они тож не промах ребята....
"нам некогда с бомжами возится", а гг говорит "но, эээ..."жестоко :thumbup: :thumbup:
- Я бы хотел узнать дорогу в {город/замок/деревня}И как ты предлагаешь определять, в каком направлении город/замок/деревня?
-Тогда Вам следует ехать на {север/юг/запад/восток}
Рандом, ибо карта перед глазами :DЦитировать (выделенное)- Я бы хотел узнать дорогу в {город/замок/деревня}И как ты предлагаешь определять, в каком направлении город/замок/деревня?
-Тогда Вам следует ехать на {север/юг/запад/восток}
Рандом, ибо карта перед глазами :DИнтересная мысль :laught:
вот с чего начал:А что за "левые" "player_faction"? Кстати не-королевские фракции помещай после kingdoms_end, что бы не выскочило "фракции больше не существует". Но это ты и так сделал правильно.
module_factions
("rising soldiers","Rising soldiers",icon_vaegir_knight|carries_goods(3),0,fac_rising_soldiers,courage_25|aggressiveness_1,[]),Возможные варианты, это агрессия 0-15, отвага 4-15. Это в header_party_templates написано. 25 низяя...
module_dialogsДиалоги новые пиши выше вот этого,
######################################Иначе start'ы всегда будут переходить на битву... Просто ниже процитированного как раз диалоги битвы прописаны. А, как известно, все читается сверху вниз в диалогах. По этому более приоритетное обязательно должно быть выше.
# GENERIC PARTY ENCOUNTER
######################################
"пометка, чтобы они ответилиПросто сделай так:
[party_tpl|pt_rising_soldiers,"start", [
(eq,"$talk_context",tc_party_encounter)
], "Whoever you are, move away!.\
We are rising soldiers and going to fight against the unfairness in this country and we will move you ourself if you don't!.\
Move away!.", "rising_soldiers_talk",[]],
[anyone|plyr,"rising_soldiers_talk", [], "Please, continue.", "close_window",[]],
[anyone|plyr,"rising_soldiers_talk", [], "If you fight for the truth and the piece of this kingdom, so do I.\
Join my party and we will overthrough the dishonest lords and unite the country", "rising_soldiers_answer",[]],
[anyone,"rising_soldiers_answer", "We have not got a leader. You, as i heard, one of the bravest man in Calradia.\
Then we'll join your party, my lord!.. and glad to serve to you and die for yourself. Lead us to glory!.\"rising_soldiers_talk",[]]
А что за "левые" "player_faction"?ну так отношение с отрядом ГГ, или нет? просто у охотников за головами есть
А, тфу ты, это просто срока не влезла и перенеслась. Я думал это в новый строках написаны. Все там правильно =)))Цитировать (выделенное)А что за "левые" "player_faction"?ну так отношение с отрядом ГГ, или нет? просто у охотников за головами есть
Whoever you are, move away!.^Левый слеш - это только для переноса в самой модульной системе, на случай длинной строчки.
We are rising soldiers and going to fight against the unfairness in this country and we will move you ourself if you don't!.^
Move away!.
и как задать условие ответа?Напиши несколько диалогов с одинаковым названием, но разным условием. пример:
[party_tpl|pt_free_revelers, "start", [(store_encountered_party,"$temp"),(ge, "$player_honor", 30)], "Oh, it's really you? I've always wanted to meet you!^You are the most honest {man/woman} in all of Calradua!^{Sir/My Lady}, will you allow us to go with you?", "free_rev_join", [(party_set_ai_object,"$temp","p_main_party"),(party_set_ai_behavior,"$temp",ai_bhvr_escort_party)]],Если честь 30+, выполнится первый диалог, он переводит на иной диалог и вторая строка никогда не выполняется. Если честь не 30+, то первая не выполнится, игра читает следующую строку...
[party_tpl|pt_free_revelers, "start", [(store_encountered_party,"$temp")], "Hello, traveler...", "free_rev_simple", [(assign, "$g_leave_encounter", 1)]],
Кстати (assign, "$g_leave_encounter", 1) можно и инициализировать всего один раз в самом начале всего диалога с данной группой и последующие "close_window" будут завершаться без меню битв, т.к. переменные сохраняются при логическом переходе от одного диалога к другому...
[party_tpl|pt_rising_soldiers,"start", [(eq,"$talk_context",tc_party_encounter)], "Whoever you are, move away!.^
We are rising soldiers and going to fight against the unfairness in this country and we will move you ourself if you don't!.^ Move away!.", "rising_soldiers_talk",[]],
[anyone|plyr,"rising_soldiers_talk", [], "Please, continue.", "close_window",[]],
[anyone|plyr,"rising_soldiers_talk", [], "If you fight for the truth and the piece of this kingdom, so do I.^Join my party and we will overthrough the dishonest lords and unite the country", "rising_soldiers_answer",[]],
[anyone,"rising_soldiers_answer", [(ge, "$player_reputation", 300)], "We have not got a leader. You, as i heard, one of the bravest man in Calradia.^ Then we'll join your party, my lord!.. and glad to serve to you and die for yourself. Lead us to glory!.", "free_rev_join",[(party_join)]]
[anyone,"rising_soldiers_answer", [], "We don't trust you, sir, sorry!", "close_window",[(assign, "$g_leave_encounter", 1)]],
триггеры?Если тебе надо, что бы что-то выполнялось много раз, то "simple_triggers", а "triggers" это немножко другя тема...
(1,
[(display_message, "@ And one more hour was gone..." ]),
[party_tpl|pt_rising_soldiers,"start", [(eq,"$talk_context",tc_party_encounter)], "Whoever you are, move away!.^We are rising soldiers and going to fight against the unfairness in this country and we will move you ourself if you don't!.^ Move away!.", "rising_soldiers_talk", []],
[anyone|plyr,"rising_soldiers_talk", [], "Please, continue.", "close_window", []],
[anyone|plyr,"rising_soldiers_talk", [], "If you fight for the truth and the piece of this kingdom, so do I.^Join my party and we will overthrough the dishonest lords and unite the country", "rising_soldiers_answer", []],
[anyone,"rising_soldiers_answer", [(ge, "$player_reputation", 300)], "We have not got a leader. You, as i heard, one of the bravest man in Calradia.^ Then we'll join your party, my lord!.. and glad to serve to you and die for yourself. Lead us to glory!.", "free_rev_join",[(party_join)]],
[anyone,"rising_soldiers_answer", [], "We don't trust you, sir, sorry!", "close_window",[(assign, "$g_leave_encounter", 1)]],
Все-таки я еще кое чего нк доглядел. Эти должны верно работать:теперь во :thumbup: кроме известности: не "player_reputation" пишется он не assignedЦитировать (выделенное)[party_tpl|pt_rising_soldiers,"start", [(eq,"$talk_context",tc_party_encounter)], "Whoever you are, move away!.^We are rising soldiers and going to fight against the unfairness in this country and we will move you ourself if you don't!.^ Move away!.", "rising_soldiers_talk", []],
[anyone|plyr,"rising_soldiers_talk", [], "Please, continue.", "close_window", []],
[anyone|plyr,"rising_soldiers_talk", [], "If you fight for the truth and the piece of this kingdom, so do I.^Join my party and we will overthrough the dishonest lords and unite the country", "rising_soldiers_answer", []],
[anyone,"rising_soldiers_answer", [(ge, "$player_reputation", 300)], "We have not got a leader. You, as i heard, one of the bravest man in Calradia.^ Then we'll join your party, my lord!.. and glad to serve to you and die for yourself. Lead us to glory!.", "free_rev_join",[(party_join)]],
[anyone,"rising_soldiers_answer", [], "We don't trust you, sir, sorry!", "close_window",[(assign, "$g_leave_encounter", 1)]],
"player_reputation"Известность узнается вот так: (troop_get_slot, ":repa", "trp_player", slot_troop_return_renown),
(troop_get_slot_, ":repa", "trp_player", slot_troop_return_renown)и куда это поместить?
Arantir ([url]http://rusmnb.ru/index.php?action=profile;u=15409[/url]), отлично:)Цитировать (выделенное)(troop_get_slot_, ":repa", "trp_player", slot_troop_return_renown)и куда это поместить?
[anyone,"rising_soldiers_answer", [(troop_get_slot, ":player_renown", "trp_player", slot_troop_return_renown),(ge,":player_renown", 300)], "We have not got a leader. You, as i heard, one of the bravest man in Calradia.^ Then we'll join your party, my lord!.. and glad to serve to you and die for yourself. Lead us to glory!.", "free_rev_join",[(party_join)]],Извлекаем значение слота известности из troop'а "игрок". Потом обычное, знакомое тебе условие "больше-равно". Если известность большая-равная 300, то диалог выполнится.
("camp_action_1",[(eq,"$cheat_mode",1)],"{!}Cheat: Walk around.",Когда в лагере нажмешь на этот пункт, то они прямо возле тебя появятся. Протестируй там диалоги и прочее, а я попробую сделать триггер для их спавна.
[(set_jump_mission,"mt_ai_training"),
(call_script, "script_setup_random_scene"),
(change_screen_mission),
]
),
("warriors",[],"DEBUG: Spawn rising soldiers.",
[(spawn_around_party, "p_main_party", "pt_rising_soldiers"),
]
),
("camp_action",[],"Take an action.",
[(jump_to_menu, "mnu_camp_action"),
]
),
"Модульная система. Вопросы и ответы".:thumbup:
Вижу, тема неплохо развивется и уже давненько переросла из "Пары вопросов". Тему закрепил и сменил название на "Модульная система. Вопросы и ответы". Удачи Свадийскому рыцарю в этом нелёгком деле (сам-то я модульку только поверхностно осилил - не моё это).
Arantir ([url]http://rusmnb.ru/index.php?action=profile;u=15409[/url]),
("rising_soldiers","Rising soldiers",icon_vaegir_knight|carries_goods(3),0,fac_rising_soldiers,soldier_personality,[(trp_swadian_man_at_arms,1,5)]), вот так переправил еще
(assign, reg1, ":prosperity_change"), # DEBUG
(display_message, "@ XXX Prosperity +1 for {s0}. New slot_party_taxes_accumulate for {s0} is {reg1}"), # DEBUG
(party_set_slot, ":center_no", slot_party_taxes_accumulate, ":prosperity_change"),
(try_end),
(try_end),
(12,
[
(store_random_in_range,":random",0,100),
(lt, ":random", 5),
(store_random_in_range,":rand_center",centers_begin,centers_end),
(prawn_around_party, ":rand_center", "pt_rising_soldiers"),
(party_set_ai_behavior, reg0, ai_bhvr_patrol_party),
(party_set_ai_object, reg0, ":rand_center"),
]),
(24,
[]),
(24,
[]),
(24,
[]),
Итак, вот что получилось:
качнул себе известность читами, отказывается присоединяться, и если не заводить с ним диалог то выпадает лишнее меню битвы с одной кнопкой уйти
[party_tpl|pt_rising_soldiers,"start", [(eq,"$talk_context",tc_party_encounter)], "Whoever you are, move away!.^We are rising soldiers and going to fight against the unfairness in this country and we will move you ourself if you don't!.^ Move away!.", "rising_soldiers_talk", []],
[anyone|plyr,"rising_soldiers_talk", [], "Please, continue.", "close_window", []],
[anyone|plyr,"rising_soldiers_talk", [], "If you fight for the truth and the piece of this kingdom, so do I.^Join my party and we will overthrough the dishonest lords and unite the country", "rising_soldiers_answer", []],
[anyone,"rising_soldiers_answer", [(ge, "$player_reputation", 300)], "We have not got a leader. You, as i heard, one of the bravest man in Calradia.^ Then we'll join your party, my lord!.. and glad to serve to you and die for yourself. Lead us to glory!.", "free_rev_join",[]],
[anyone,"rising_soldiers_answer", [], "We don't trust you, sir, sorry!", "close_window",[(assign, "$g_leave_encounter", 1)]],
[anyone,"rising_soldiers_answer", [], "We don't trust you, sir, sorry!", "close_window",[(assign, "$g_leave_encounter", 1)]],
[party_tpl|pt_rising_soldiers,"start", [(eq,"$talk_context",tc_party_encounter)], "Whoever you are, move away!.^We are rising soldiers and going to fight against the unfairness in this country and we will move you ourself if you don't!.^ Move away!.", "rising_soldiers_talk", [(assign, "$g_leave_encounter", 1)]],
[anyone|plyr,"rising_soldiers_talk", [], "Please, continue.", "close_window", []],
[anyone|plyr,"rising_soldiers_talk", [], "If you fight for the truth and the piece of this kingdom, so do I.^Join my party and we will overthrough the dishonest lords and unite the country", "rising_soldiers_answer", []],
[anyone,"rising_soldiers_answer", [(ge, "$player_reputation", 300)], "We have not got a leader. You, as i heard, one of the bravest man in Calradia.^ Then we'll join your party, my lord!.. and glad to serve to you and die for yourself. Lead us to glory!.", "rising_soldiers_join",[]],
[anyone,"rising_soldiers_answer", [], "We don't trust you, sir, sorry!", "close_window",[]],
[anyone,"rising_soldiers_join", [], "Of course, {sir/madam}!", "close_window",[(party_join)]],
(12,
[
(store_random_in_range,":random",0,100),
(lt, ":random", 5),
(store_random_in_range,":rand_center",centers_begin,centers_end),
(spawn_around_party, ":rand_center", "pt_rising_soldiers"),
(party_set_ai_behavior, reg0, ai_bhvr_patrol_party),
(party_set_ai_object, reg0, ":rand_center"),
]),
фиолетовым правильно пометил условие извесности :) до этого не работал, все время отказывал. Ну и:Верно, верно... Так проще. Но (troop_get_slot, ":player_renown", "trp_player", slot_troop_renown),(ge,":player_renown", 300) должно работать в любом случае. Не знаю, почему не работало...
Я думаю, что если убрать заданных солдат в темплейтс, то будут не только свады-восставшие но и другие.Нет. Если забрать там всех солдат, то группа будет создаваться пустой (ноль солдат).
У меня еще есть идея насчет реальных повстанцев, которые будут все жечь и мародерствовать вокруг :DNPC?
NPC?2 отряда npc+ополченцы от 50 до 150 соладат появление 3 процента, они будут против всех вообще.
("mutineers","Mutineers", 0, 0.3,[("manhunters",-0.01),("merchants",-1.0),("player_faction",-0.8),("outlaws",-0.6),("deserters", -0.02), [], 0xff0000),
Только заметь, что все отталкивается от оригинальной фракции центра. Ну раз добровольцы в деревнях всегда из родной фракции деревни, то, думаю, повстанцы тоже...Соотвественно.
trp_srhodok_sergeant,1,4):thumbup:
Просто вставлял поверх свадов и промахнулся :laught:Цитировать (выделенное)trp_srhodok_sergeant,1,4):thumbup:
только лорд не знаю как прописать для них, и чтобы на деревни напалади, а еще лучше сжигалиПопробуй:
(party_set_slot, "партия NPC", slot_party_orders_type, spai_raiding_around_center),вот такс..наверно, да?
(party_set_slot, "партия NPC", slot_party_orders_object, "деревня"),
[(party_set_slot, "fac_mutineers", slot_party_orders_type, spai_raiding_around_center),
(party_set_slot, "fac_mutineers", slot_party_orders_object, "rand_village"),]),
[(party_set_slot, "fac_mutineers", slot_party_orders_type, spai_raiding_around_center),Не так...
(party_set_slot, "fac_mutineers", slot_party_orders_object, ":rand_village"),]),
но надо скопировать еще 5)Эт зачем?
Эт зачем?потому что pt_rising_soldiers не дефайнд, а по отдельности типа pt_rising_soldiers_swad компилинг на ура
потому что pt_rising_soldiers не дефайнд, а по отдельности типа pt_rising_soldiers_swad компилинг на ура
Swadian Knight ([url]http://rusmnb.ru/index.php?action=profile;u=18262[/url]), в какие местах ты fac_mutineers использовал?
#mutineers +Ой, не, не, не... Куча ошибок. Последняя строка - вообще нонсенс.
[anyone,"start", [(store_faction_of_party,":faction"),(eq, ":faction","fac_mutineers")], "Hey, it's you, i know you, the noble bastard! Pray you whenever were born!", "close window", []],
[party_tpl|pt_mutineers|plyr,"party_encounter_hostile_attacker", [], "We will fight you to the end!", "close_window", []],
[anyone|plyr,"party_encounter_hostile_attacker", [],
#mutineers -
#mutineers +Каждый раз указывать party_pemplate не обязательно. Если на этот диалог ссылается только тот, что и так могут начать только pt_mutineers, то никто другой его точно не скажет.
[anyone,"start", [(store_faction_of_party,":faction"),(eq, ":faction","fac_mutineers")], "Hey, it's you, i know you, the noble bastard! Pray you whenever were born!", "mutineers_attack", []],
[anyone|plyr,"mutineers_attack", [], "We will fight you to the end!", "party_encounter_hostile_attacker", []],
#mutineers -
теперь надо как-то npc к ним приписать и триггеры, это я не знаю
("mutineers","Mutineers", 0, 0.3,[("manhunters",-0.01),("merchants",-1.0),("player_faction",-0.8),("outlaws",-0.6),("deserters", -0.02),("kingdom_1",-0.8),("kingdom_2",-0.8),("kingdom_3",-0.8),("kingdom_4",-0.8),"kingdom_5",-0.8),("kingdom_6",-0.8),] [], 0xff0000),
как думаешь, может их тыщу сделать, чтобы хорошенько помяситься, они не такие уж силачи по виду войск :D
В M&B все сделано пропорционально. 250 человек - огромная армия. Если сделать 1000 - то жуткий дисбаланс и не очень логично...нет, ну для меня легко их просто отметелить сотней рыцарей-свадов (хотя я даже играю на высоком уровне), правда тактику 8-10 надо, а так как вторжение получится (реальное восстание) будут все сметать, пока все силы королевства не обьединятся (а их вместе от 800 до 2500).
100 - это уже огого сколько, как на повстанцев.
4 отряда по 250 человек сделать или 20 отрядов по 50 человек.
Одна проблема - флагов на новых лордов нету в игре, так что флаги будут дублироваться...:( плохо, а если сделать еще одну старницу баннеров? banner_h.dds ?
:( плохо, а если сделать еще одну старницу баннеров? banner_h.dds ?Еще надо игру научить их использовать. Думаю, я смогу это сделать. А ты как раз можешь сделать "banner_h.dds" для этой цели :)
:( плохо, а если сделать еще одну старницу баннеров? banner_h.dds ?Еще надо игру научить их использовать. Думаю, я смогу это сделать. А ты как раз можешь сделать "banner_h.dds" для этой цели :)
Вот баги:1. не всегда такое делается, но иногда бывает и не знаю из-за чего именно...
-сразу в начале игры ухудшаются отношения с тремя лордами до -20
-у лордов откуда-то появилась родня из эмиров, нойонов и т.д
-и пишет что покинул королевство, если не нанять
-knight_troop_end в списке "персонажи" лысарь там какой-то :D
2. родня настраивается в начале игры всем лордам. Кроме того, почему, по твоему, они не имеют права иметь родных?имеют, НО: они абсолютно не похожи, эмир и европеец, тогда уж надо самому настроить
вот набросал, но в игре страницу не хочет отображать >:(M&B никогда ничего не делает сам. NPC сами в таверне появятся, новые парти сами не заспавнятся, новый баннеры сами не станут доступны...
[url]http://ifolder.ru/24697272[/url] ([url]http://ifolder.ru/24697272[/url]) >:( >:( >:(
имеют, НО: они абсолютно не похожи, эмир и европеец, тогда уж надо самому настроитьТам и остальные не особо похожи... :p
- Можно вырезать из скрипта именно этих лордов, что бы им не раздавались родственники. Мне больше нравится, что бы эти "наемнички" не имели всяких лишней связей. Да и вообще были такими себе "роботами", просто исполняющими приказы...тогда будет супер
- Так же вырежу их из скрипта, пишущего сообщение о королевстве (см. последнее предложение строкой выше :laught:).
- Убрать knight_troop_end не составит труда. Просто надо конец "активных NPC" передвинуть на 1 troop'а выше в константах.
- На счет изменения отношений еще не выяснил.
# custom lords +Все-таки так практичнее и без лишней мороки.
custom_lords_begin = "trp_knight_0_1"
custom_lords_end = pretenders_begin
# custom lords -
(try_begin),
# custom lords +
(is_between, ":troop_no", custom_lords_begin, custom_lords_end),
(str_store_string, s0, "str_s54_not_at_affairs"),
(set_trigger_result, 1),
(else_try),
# custom lords -
(eq, ":note_index", 0),
(str_store_string, s0, "str_s54_has_left_the_realm"),
(set_trigger_result, 1),
(else_try),
(str_clear, s0),
(this_or_next|eq, ":note_index", 1),
(eq, ":note_index", 2),
(set_trigger_result, 1),
(try_end),
("s54_has_left_the_realm", "{s54} has left the realm."),
("s54_not_at_affairs", "{s54} not at affairs."), # | custom lords
("enterprise_s5_at_s0", "Net revenue from {s5} at {s0}"),
Swadian Knight ([url]http://rusmnb.ru/index.php?action=profile;u=18262[/url]), посмотрел...
Сделай в constants следующие изменения:
По идее новые баннеры не только в меню выбора появятся, но и их будут выбирать новые лорды.
illegal identifierДа я уже догадался... Константы же на меши сделаны!
Так... И вообще по идее на h надо было менять :laught:...
Пока что поменяй все назад на f
Сейчас все корректно сделаю и напишу от А до Я.Так... И вообще по идее на h надо было менять :laught:...да это легко, а дальше? :)
Пока что поменяй все назад на f
Должен тебе сказать, что твои баннеры не являлись текстурой... Редактор текстур их не отображал. Я пересохранил и все стало ок. Так что советую подыскать редактор, более подходящий для *.ddsкаким ты воспользовался, чтобы передалть их в текстуру. я использую фотошоп cs2 + paint.net
Перепроверил, перезагружал, всё равно тоже самое.Переустанови Питон, и попробуй версию 2.6
Надо переустановить питон или поставить другую версию?
(store_random_in_range, ":random_entry_point", 40, 44),последнее число (т.е. 44) вроде не учитывается, будет выбрано случайное число от 40 до 43, 44 никогда не будет выбрано
Переустанови Питон, и попробуй версию 2.6Благодарю за ответ, помогло
("recruit_crusaders",[
(this_or_next|eq, "$g_encountered_party", "p_town_9"),
(this_or_next|eq, "$g_encountered_party", "p_town_11"),
( eq, "$g_encountered_party", "p_town_13"),
],
"Recruit Crusaders",
[
(jump_to_menu,"mnu_town_pre_hire_troops"),
]),
Добавил эти строки. Как я понял это означает что в городах 9, 11, 13 появляется кнопка "Recruit Crusaders" которая открывает меню "town_pre_hire_troops", так? (
"town_pre_hire_troops",0,
"{s18}",
"none",
[(party_get_slot, ":volunteer_troop", "$current_town", slot_center_volunteer_troop_type),
(party_get_slot, ":volunteer_amount", "$current_town", slot_center_volunteer_troop_amount),
(party_get_free_companions_capacity, ":free_capacity", "p_main_party"),
(store_troop_gold, ":gold", "trp_player"),
(store_div, ":gold_capacity", ":gold", 10),#10 denars per man
(assign, ":party_capacity", ":free_capacity"),
(val_min, ":party_capacity", ":gold_capacity"),
(try_begin),
(gt, ":party_capacity", 0),
(val_min, ":volunteer_amount", ":party_capacity"),
(try_end),
(assign, reg5, ":volunteer_amount"),
(assign, reg7, 0),
(try_begin),
(gt, ":volunteer_amount", ":gold_capacity"),
(assign, reg7, 1), #not enough money
(try_end),
(try_begin),
(eq, ":volunteer_amount", 0),
(str_store_string, s18, "@No one here seems to be willing to join your party."),
(else_try),
(store_mul, reg6, ":volunteer_amount", 10),#10 denars per man
(str_store_troop_name_by_count, s3, ":volunteer_troop", ":volunteer_amount"),
(try_begin),
(eq, reg5, 1),
(str_store_string, s18, "@One {s3} volunteers to follow you."),
(else_try),
(str_store_string, s18, "@{reg5} {s3} volunteer to follow you."),
(try_end),
(set_background_mesh, "mesh_pic_recruits"),
(try_end),
],
[
("continue_not_enough_gold",
[
(eq, reg7, 1),
],
"I don't have enough money...",
[
(jump_to_menu,"mnu_town"),
]),
("continue",
[
(eq, reg7, 0),
(eq, reg5, 0),
], #noone willing to join
"Continue...",
[
(party_set_slot, "$current_town", slot_center_volunteer_troop_amount, -1),
(jump_to_menu,"mnu_town"),
]),
("recruit_them",
[
(eq, reg7, 0),
(gt, reg5, 0),
],
"Recruit them ({reg6} denars).",
[
(call_script, "script_village_recruit_volunteers_recruit"),
(jump_to_menu,"mnu_town"),
]),
("forget_it",
[
(eq, reg7, 0),
(gt, reg5, 0),
],
"Forget it.",
[
(jump_to_menu,"mnu_town"),
]),
],
),
Ошибок при компиляции не выдаёт, но когда пытаюсь нанять кого нибудь в городе, то когда первый раз на кнопку нажимаю ни у кого желания присоединится нет, перехожу опять в меню города, и написано что готовы присоединится -1 и нет никакой кнопки. Приходится закрывать игру. Где нахалтурил? ti_on_scene_prop_hit
он запускается когда по сцен пропсу бьют. С помощью него можно отловить момент когда у сцен пропса останется определенное количество хит поинтов. В принципе есть и другие способы это сделать, но этот имхо наиболее подходящий, если я конечно правильно что ты хочешь =/
Ошибок при компиляции не выдаёт, но когда пытаюсь нанять кого нибудь в городе, то когда первый раз на кнопку нажимаю ни у кого желания присоединится нет, перехожу опять в меню города, и написано что готовы присоединится -1 и нет никакой кнопки. Приходится закрывать игру. Где нахалтурил?Нуль первый раз, потому что, видимо, ты нигде в slot_center_volunteer_troop_amount и slot_center_volunteer_troop_type ничего не прописал. Для деревень эти переменный обновляются через триггеры и скрипты.
Ну я имел в виду когда по иконке города пощёлкаешь появляется меню. Пойти в таверну, прогуляться по городу, пойти на арену и т.д. А я хочу сделать так чтобы этого меню не было а был переход сразу в город.Есть скрипт game_event_party_encounter
itp_type_polearm|itp_offset_lance|itp_merchandise| itp_primary|itp_wooden_parry, itc_staff|itcf_carry_spearпочему если указать type_polearm то включается анима stand_crossbow
#item flagsВобще можно сделать новый type?
itp_type_polearm = 0x0000000000000004
почему если указать type_polearm то включается анима stand_crossbow
itp_type_horse = 0x0000000000000001
itp_type_one_handed_wpn = 0x0000000000000002
itp_type_two_handed_wpn = 0x0000000000000003
...
itcf_thrust_onehanded = 0x0000000000000001
itcf_overswing_onehanded = 0x0000000000000002
itcf_slashright_onehanded = 0x0000000000000004
itcf_slashleft_onehanded = 0x0000000000000008
...
itcf_shoot_musket = 0x0000000000080000
itcf_shoot_mask = 0x00000000000ff000
и т.д.
("start_phase_2",mnf_disable_all_keys,
"You hear about East Europe, a land torn between rival kingdoms battling each other for supremacy,\
a haven for knights and mercenaries, cutthroats and adventurers, all willing to risk their lives in pursuit of fortune, power, or glory...\
In this land which holds great dangers and even greater opportunities, you believe you may leave your past behind and start a new life.\
You feel that finally, you hold the key of your destiny in your hands, free to choose as you will,\
and that whatever course you take, great adventures will await you. Drawn by the stories you hear about Calradia and its kingdoms, you...",
"none",
[],
[
("town_1",[(eq, "$current_startup_quest_phase", 0),],"take a ship to Marienburg, in the Teutonic Order.",
[
(assign, "$current_town", "p_town_6"),
(assign, "$g_starting_town", "$current_town"),
(assign, "$g_journey_string", "str_journey_to_praven"),
# (jump_to_menu, "mnu_start_phase_2_5"),
(party_relocate_near_party, "p_main_party", "$g_starting_town", 2),
(change_screen_map),
]),
("town_2",[(eq, "$current_startup_quest_phase", 0),],"join a caravan to Wilna, in the Grand Duchy of Lithuania.",
[
(assign, "$current_town", "p_town_8"),
(assign, "$g_starting_town", "$current_town"),
(assign, "$g_journey_string", "str_journey_to_reyvadin"),
# (jump_to_menu, "mnu_start_phase_2_5"),
(party_relocate_near_party, "p_main_party", "$g_starting_town", 2),
(change_screen_map),
]),
# ("town_3",[(eq, "$current_startup_quest_phase", 0),],"join a caravan to Tulga, in the Khergit Khanate.",
# [
# (assign, "$current_town", "p_town_10"),
# (assign, "$g_starting_town", "$current_town"),
# (assign, "$g_journey_string", "str_journey_to_tulga"),
# (jump_to_menu, "mnu_start_phase_2_5"),
# (party_relocate_near_party, "p_main_party", "$g_starting_town", 2),
# (change_screen_return),
# ]),
# ("town_4",[(eq, "$current_startup_quest_phase", 0),],"take a ship to Sargoth, in the Kingdom of the Nords.",
# [
# (assign, "$current_town", "p_town_1"),
# (assign, "$g_starting_town", "$current_town"),
# (assign, "$g_journey_string", "str_journey_to_sargoth"),
# (jump_to_menu, "mnu_start_phase_2_5"),
# (party_relocate_near_party, "p_main_party", "$g_starting_town", 2),
# (change_screen_return),
]),
("town_5",[(eq, "$current_startup_quest_phase", 0),],"join a caravan to Krakow, in the Kingdom of Poland.",
[
(assign, "$current_town", "p_town_4"),
(assign, "$g_starting_town", "$current_town"),
(assign, "$g_journey_string", "str_journey_to_jelkala"),
(jump_to_menu, "mnu_start_phase_2_5"),
# (party_relocate_near_party, "p_main_party", "$g_starting_town", 2),
# (change_screen_return),
# ]),
# ("town_6",[(eq, "$current_startup_quest_phase", 0),],"join a caravan to Shariz, in the Sarranid Sultanate.",
# [
# (assign, "$current_town", "p_town_19"),
# (assign, "$g_starting_town", "$current_town"),
# (assign, "$g_journey_string", "str_journey_to_shariz"),
# (jump_to_menu, "mnu_start_phase_2_5"),
# (party_relocate_near_party, "p_main_party", "$g_starting_town", 2),
# (change_screen_return),
]),
("start_phase_2_5",mnf_disable_all_keys,
"{!}{s16}",
"none",
[
(str_store_party_name, s1, "$g_starting_town"),
(str_store_string, s16, "$g_journey_string"),
],
[
("continue",[], "Continue...",
[
(jump_to_menu, "mnu_start_phase_3"),
]),
]
),
("start_phase_3",mnf_disable_all_keys,
"{s16}^^You are exhausted by the time you find the inn in {s1}, and fall asleep quickly. However, you awake before dawn and are eager to explore your surroundings. You venture out onto the streets, which are still deserted. All of a sudden, you hear a sound that stands the hairs of your neck on end -- the rasp of a blade sliding from its scabbard...",
"none",
[
(assign, ":continue", 1),
(try_begin),
(eq, "$current_startup_quest_phase", 1),
# (try_begin),
# (eq, "$g_killed_first_bandit", 1),
# (str_store_string, s11, "str_killed_bandit_at_alley_fight"),
# (else_try),
# (str_store_string, s11, "str_wounded_by_bandit_at_alley_fight"),
# (try_end),
# (jump_to_menu, "mnu_start_phase_4"),
# (assign, ":continue", 0),
# (else_try),
# (eq, "$current_startup_quest_phase", 3),
# (try_begin),
# (eq, "$g_killed_first_bandit", 1),
# (str_store_string, s11, "str_killed_bandit_at_alley_fight"),
# (else_try),
# (str_store_string, s11, "str_wounded_by_bandit_at_alley_fight"),
# (try_end),
(jump_to_menu, "mnu_start_phase_4"),
(assign, ":continue", 0),
(try_end),
(str_store_party_name, s1, "$g_starting_town"),
(str_clear, s16),
(eq, ":continue", 1),
],
[
("continue",[], "Continue...",
[
(assign, "$g_starting_town", "$current_town"),
(call_script, "script_player_arrived"),
(party_set_morale, "p_main_party", 100),
(set_encountered_party, "$current_town"),
# (call_script, "script_prepare_alley_to_fight"),
]),
]
),
("start_phase_4",mnf_disable_all_keys,
"{s11}",
"none",
[
# (assign, ":continue", 1),
# (try_begin),
# (eq, "$current_startup_quest_phase", 2),
# (change_screen_return),
# (assign, ":continue", 0),
# (else_try),
# (eq, "$current_startup_quest_phase", 3),
# (str_store_string, s11, "str_merchant_and_you_call_some_townsmen_and_guards_to_get_ready_and_you_get_out_from_tavern"),
# (else_try),
# (eq, "$current_startup_quest_phase", 4),
# (try_begin),
# (eq, "$g_killed_first_bandit", 1),
# (str_store_string, s11, "str_town_fight_ended_you_and_citizens_cleaned_town_from_bandits"),
# (else_try),
# (str_store_string, s11, "str_town_fight_ended_you_and_citizens_cleaned_town_from_bandits_you_wounded"),
# (try_end),
# (try_end),
# (eq, ":continue", 1),
],
[
("continue",
# [
# (this_or_next|eq, "$current_startup_quest_phase", 1),
# (eq, "$current_startup_quest_phase", 4),
# ],
"Continue...",
[
(assign, "$town_entered", 1),
(try_begin),
# (eq, "$current_town", "p_town_1"),
# (assign, ":town_merchant", "trp_nord_merchant"),
# (assign, ":town_room_scene", "scn_town_1_room"),
# (else_try),
(eq, "$current_town", "p_town_4"),
(assign, ":town_merchant", "trp_npc11"),
(assign, ":town_room_scene", "scn_town_4_tavern"),
# (else_try),
# (eq, "$current_town", "p_town_6"),
# (assign, ":town_merchant", "trp_swadian_merchant"),
# (assign, ":town_room_scene", "scn_town_6_room"),
# (else_try),
# (eq, "$current_town", "p_town_8"),
# (assign, ":town_merchant", "trp_vaegir_merchant"),
# (assign, ":town_room_scene", "scn_town_8_room"),
# (else_try),
# (eq, "$current_town", "p_town_10"),
# (assign, ":town_merchant", "trp_khergit_merchant"),
# (assign, ":town_room_scene", "scn_town_10_room"),
# (else_try),
# (eq, "$current_town", "p_town_19"),
# (assign, ":town_merchant", "trp_sarranid_merchant"),
# (assign, ":town_room_scene", "scn_town_19_room"),
(try_end),
(modify_visitors_at_site, ":town_4_tavern"),
(reset_visitors),
(set_visitor, 0, "trp_player"),
(set_visitor, 9, ":town_merchant"),
(assign, "$talk_context", tc_merchants_house),
(assign, "$dialog_with_merchant_ended", 0),
(set_jump_mission, "mt_meeting_danusia"),
(jump_to_scene, ":town_4_tavern"),
(change_screen_mission),
]),
# ("continue",
# [
# (eq, "$current_startup_quest_phase", 3),
# ],
# "Continue...",
# [
# (call_script, "script_prepare_town_to_fight"),
# ]),
]
),
(
"meeting_danusia",0,-1,
"Meeting with the Danusia",
[
(0,mtef_team_0,af_override_horse,0,1,[]),
(1,mtef_visitor_source|mtef_team_0,af_override_horse,0,1,[]),
(2,mtef_visitor_source|mtef_team_0,af_override_horse,0,1,[]),
(3,mtef_visitor_source|mtef_team_0,af_override_horse,0,1,[]),
(4,mtef_visitor_source|mtef_team_0,af_override_horse,0,1,[]),
(5,mtef_visitor_source|mtef_team_0,af_override_horse,0,1,[]),
(6,mtef_visitor_source|mtef_team_0,af_override_horse,0,1,[]),
(7,mtef_visitor_source|mtef_team_0,af_override_horse,0,1,[]),
(8,mtef_visitor_source|mtef_team_0,af_override_horse,0,1,[]),
(9,mtef_visitor_source|mtef_team_0,af_override_horse,0,1,[]),
],
[
(ti_on_agent_spawn, 0, 0, [],
[
(store_trigger_param_1, ":agent_no"),
(try_begin),
(agent_get_troop_id, ":troop_no", ":agent_no"),
(is_between, ":troop_no", "trp_npc6"),
(agent_set_team, ":agent_no", 7),
(team_set_relation, 0, 7, 0),
(try_end),
]),
(1, 0, ti_once, [],
[
(assign, "$dialog_with_danusia_ended", 0),
(store_current_scene, ":cur_scene"),
(scene_set_slot, ":cur_scene", slot_scene_visited, 1),
(try_begin),
(eq, "$sneaked_into_town", 1),
(call_script, "script_music_set_situation_with_culture", mtf_sit_town_infiltrate),
(else_try),
(eq, "$talk_context", tc_tavern_talk),
(call_script, "script_music_set_situation_with_culture", mtf_sit_tavern),
(else_try),
(call_script, "script_music_set_situation_with_culture", mtf_sit_town),
(try_end),
]),
(1, 0, 0,
[
(assign, ":continue", 0),
(try_begin),
(ge, "$dialog_with_danusia_ended", 0),
(assign, ":continue", 1),
(else_try),
(ge, "$dialog_with_danusia_ended", 0),
(neg|conversation_screen_is_active),
(try_begin),
# (eq, "$dialog_with_danusia_ended", 0),
(check_quest_active, "qst_vow_knight"),
(party_relocate_near_party, "p_main_party", "$g_starting_town", 2),
(change_screen_return),
(try_end),
(eq, ":continue", 1),
(finish_mission),
],
[]),
]),
(ti_tab_pressed, 0, 0, [],
[(finish_mission,0)]),
[party_tpl|pt_robbers|auto_proceed, "start", [], "{!}NOT SHOWN", "robbers_dialog_prebattle_1",[]],
[anyone, "robbers_dialog_prebattle_1", [], "Well met! It has been a long while since we have seen a noble personage. What brings you here, your grace?", "robbers_dialog_prebattle_2",[]],
[anyone|plyr, "robbers_dialog_prebattle_2", [], "You speak with an eloquent tongue... I would presume you fight just as well? I am on the hunt for robbers who stole the daughter of Pan Yuranda -- perhaps that would be you?", "robbers_dialog_prebattle_3",[]],
[anyone, "robbers_dialog_prebattle_3", [], "We are no robbers, but fair and upright forest brothers. We do for ourselves the best we can, rob from the rich, and give to the poor -- and take but a token share for ourselves, as reward for our daring feats of arms.", "robbers_dialog_prebattle_4",[]],
[anyone|plyr, "robbers_dialog_prebattle_4", [], "I'm looking Yuranda daughter, and if you have it, then you return it to me!", "robbers_dialog_prebattle_5",[]],
[anyone, "robbers_dialog_prebattle_5", [], "Strange business this. Some nameless passer-by dares to slander us. Aye, lads, a long time has passed since our daggers bit flesh. Let's test the color of this noble fool's blood. Get him!", "close_window",[[encounter_attack]]],
[trp_looter,"start", [], "Pan knight, have mercy on me, do not kill!", "looter_talk",[]],
[trp_looter|plyr,"looter_talk", [], "Well, I pity you.", "looter_talk_2",[]],
[trp_looter|plyr,"looter_talk", [], "No dog, you will die for what he dared to raise on my sword!", "close_window",[]],
[trp_looter,"looter_talk_2", [], "I know who stole her daughter Yuranda.", "looter_talk_3",[]],
[trp_looter|plyr,"looter_talk_3", [], "Who is it? Speak!.", "looter_talk_4",[]],
[trp_looter,"looter_talk_4", [], "The Crusaders ...", "looter_talk_5",[]],
[trp_looter|plyr,"looter_talk_5", [], "Dogs of the knights. That's all that you know?","looter_talk_6",[]],
[trp_looter|plyr,"looter_talk_5", [], "I destroyed all their castles, and slew all the Teutons. Forward to my troops, for me!", "close_window",[]],
[trp_looter,"looter_talk_6", [], "Even though I've heard a crusader went to Krakow to the knyginia, to prove that the order was not involved in the kidnapping.", "looter_talk_7",[]],
[trp_looter|plyr,"looter_talk_7", [], "Thank you. Join the world ...", "close_window",[]],
Как проверить фракцию города? Не могу найти в header_operations.store_faction_of_party
Какую характеристику? =/Любую. А troop_raise_attribute/skill, так понимаю, повышают. Мне желательно, чтобы у трупса с силой n при команде troop_raise_attribute (...) не повысилась сила на n1, а стала n1.
(troop_raise_attribute,<troop_id>,<attribute_id>,<value>), -атрибуты.
(troop_raise_skill,<troop_id>,<skill_id>,<value>), -скилы.
(troop_raise_proficiency,<troop_id>,<proficiency_no>,<value>), -знания.
bogmir ([url]http://rusmnb.ru/index.php?action=profile;u=6624[/url]), а случаем не в этом ли куске из диалогов дело?
как быть с этим например [url]http://rusmnb.ru/index.phpaction=post;topic=11317.200;last_msg=513227[/url] ([url]http://rusmnb.ru/index.phpaction=post;topic=11317.200;last_msg=513227[/url]) ?
weapon = (
ti_on_agent_hit, 0, 0, [],
[
]),
А, Шармат. Он с 1.134.не знаю...а если просто в радиусе есть бот из своей команды с здоровьем ниже 30 процентов задать аниму ..знахарь)) ..и в радиусе боты получают лечение..
если агент-целитель,
(try_for_agents...),
если здоровье меньше, чем,
если дистанция меньше, чем,
лечить.
А это не скажется на оптимизации?
(agent_get_animation, <destination>, <agent_id>, <body_part), #0 = lower body part, 1 = upper body part
(store_trigger_param_1,":canonir") - я так понял, что это работает для игрока, т.е. я задаю ему имя не ":agent", ":canonir"нет вы всего лишь назначаете переменную как параметр тригера.
и почему вы делаете в итем?лучше в мисиион темплс..Тогда придется писать в конце каждой миссии, а можно ж и так [(ti_on_init_item,(call_script, "script_cannon"), , только я пока не знаю где и как правильно записать script_cannon :blink:
(store_trigger_param_1,":canonir"), нужен.при условии, что у них в руках нужный итем? Или оно просто заглючит?
или начать цикл (try_for_agent":":canonir"), который потом закрыть трай енд.
и если вы для мп делаете у вас все игроки получат эту аниму.
или начать цикл (try_for_agent":":canonir"), который потом закрыть трай енд.
можно попробывать с agent_set_walk_forward_animation вместо agent_set_animation,и если я не ошибаюсь =/ тоЭто я пробовал, тригер перестает работать и включается стандартная анимация.
["cannon_move_forward", acf_enforce_lowerbody, amf_use_cycle_period|amf_client_prediction,
[15.0, "man_walk", 0, 32, arf_use_walk_progress|arf_cyclic|blend_in_walk]],
15.0 вроде как время проигрыавния анимы. мож попробывать его увеличить? =/
joker7by, как вариант можно еще вставитьстоит (agent_set_speed_limit, ":agent_no", 0.01) :D
то что стоит у пешеходов в городе
(agent_set_speed_limit, ":agent_no", 5),
Задача плёвая, если участвует ГГСоюзники месить друг друга не начнут?(например, вегиры и норды -- союзники)
а вот насчёт автобоя надо думать. Мне лень.
1. По большому счёту партия присоединяется к одной из 2 сторон, а не тсановится третьей, если она в минусах с обеими. По-моему вопрос именно о такой ситуации.
Здесь есть пример про обезглавливание. Может подайдёт?
[url]http://rusmnb.ru/index.php?action=pmxblog;sa=view;cont=162;uid=21638#top[/url] ([url]http://rusmnb.ru/index.php?action=pmxblog;sa=view;cont=162;uid=21638#top[/url])
Так и не смог заставить это работать, но вот пытаюсь разобрать более интересные скрипты вТам принцып, чтобы видимую голову заменить на невидимую.
Кстати, может кто поделится кодом для дробовика, а тоя мучаю это код:В нативе есть пистоль с нужными флагами. Возьми его за основу. Там ещё есть флаги для пуль и мушкета.
Там принцып, чтобы видимую голову заменить на невидимую.itm_inviseble это не проблема, у меня пропадает тело с кодом (troop_get_inventory_slot, <броня>, "trp_ххх",5), если я его пишу в items вот так:
Или можно сделать закрытый шлем, покрытый альфой и в нужный момент добавить трупсу в снаряжение:
(troop_get_inventory_slot, <шлем>, "trp_ххх",4),
В нативе есть пистоль с нужными флагами. Возьми его за основу. Там ещё есть флаги для пуль и мушкета.Давно уже работаю с огнестрелом и знаю только три вида боеприпасов itp_type_bullets, itp_type_bolts и itp_type_arrows, соответственно так можно сделать три различных огнестрела.
Посмотри itm_cartridges. Это вроде бы пули. Во всяком случае у них стоит флаг itp_type_bullets.И? :blink:
но при этом умирают все боты на карте и я тожеЧто как бы не удивительно, когда цикл по всем агентам.
Хорошо, я делал по аналогии скрипта гранаты, как только добавляю тригер с подменой брони и убираю (agent_get_position,pos2,":target"), (get_distance_between_positions,":dist",pos1,pos2),но при этом умирают все боты на карте и я тожеЧто как бы не удивительно, когда цикл по всем агентам.
(ti_on_agent_hit, 0, 0, [],[
(multiplayer_is_server),
(eq, reg0, "itm_laser_rifle"), #скорей всего будет совместимо, но в WSE лучше использовать 6-й параметр триггера
(store_trigger_param_1, ":victim"), # если перепутать жертву и нападавшего, то даже get_distance не поможет ;)
(particle_system_burst, "psys_laser_hit", pos0, 50), # pos0 место куда пришлось попадание.
(agent_get_item_slot, ":item", ":victim", 5), #за три нижеследующие строчки не отвечаю :)
(agent_unequip_item, ":victim", ":item"),
(agent_equip_item, ":target", "itm_invisible"),
(set_trigger_result, -1), #возможно, будет корректно работать и без этого.
]),
Код: [Выделить](ti_on_agent_hit, 0, 0, [],[
(multiplayer_is_server),
(eq, reg0, "itm_laser_rifle"), #скорей всего будет совместимо, но в WSE лучше использовать 6-й параметр триггера
(store_trigger_param_1, ":victim"), # если перепутать жертву и нападавшего, то даже get_distance не поможет ;)
(particle_system_burst, "psys_laser_hit", pos0, 50), # pos0 место куда пришлось попадание.
(agent_get_item_slot, ":item", ":victim", 5), #за три нижеследующие строчки не отвечаю :)
(agent_unequip_item, ":victim", ":item"),
(agent_equip_item, ":target", "itm_invisible"),
(set_trigger_result, -1), #возможно, будет корректно работать и без этого.
]),
Искал в header_operations как подменить кровь на огонь или дым, так и не нашел
А изменение этого параметра не скажется на быстродействии игры? Ведь не зря же по умолчанию он выкл.Это в любом случае копеечные затраты, и на fps они не влияют. Насколько я понимаю, отключение загрузка из сейвов связано с тем, что TW научились делать патчи, после которых не обязательно начинать новую игру, и чтобы правки экипировки после таких патчей вступали в силу для тех, кто продолжает старую, нужно чтобы игра подгружала данные из troops.
То что процесс загрузки и сохранения станет медленнее и так очевидно, как и то, что сейв-файл будет больше.
Ошибки не появляются, но и голова не исчезает.Я с исчезанием не работал. Не знаю, как оно должно быть.
Искал в header_operations как подменить кровь на огонь или дым, так и не нашелЭто либо в particle_systems game_blood, game_blood_2
И ещё одно:pos0 - это всегда то место куда попадает?тогда pos1 - это позиция на земле?В ti_on_agent_hit pos0 — место куда попадает.
А блин, там несколько, что ли трупаков на скрине?Да, несколько трупаков, у всех головы, причем не те что нада, itp_covers_head не стояло, с
Но если всё-таки не работает только голова, то стоит ли у невидимой шапки itp_covers_head?
Это либо в particle_systems game_blood, game_blood_2Я не хотел исправлял партиклы для крови, а тригерами сделать подмену одного партикла на другой. :)
либо в skins.
В частицах можно изменить, как выглядит кровь.
А в скинах, что есть кровь.
В ti_on_agent_hit pos0 — место куда попадает.Просто хотелось узнать побольше об pos0 pos1 pos2 и тд, а то не могу понять как к дулу прицепить дымок, чтоб он выходил из дула на время действия партикла.
Про то, что за значения в pos1 в ti_on_agent_hit, никто ничего не говорил
Они разные в разных триггерах.В ti_on_agent_hit pos0 — место куда попадает.Просто хотелось узнать побольше об pos0 pos1 pos2 и тд, а то не могу понять как к дулу прицепить дымок, чтоб он выходил из дула на время действия партикла.
Про то, что за значения в pos1 в ti_on_agent_hit, никто ничего не говорил
Это я уже понял, т.е. можно пробовать методом тыка все pos.Они разные в разных триггерах.В ti_on_agent_hit pos0 — место куда попадает.Просто хотелось узнать побольше об pos0 pos1 pos2 и тд, а то не могу понять как к дулу прицепить дымок, чтоб он выходил из дула на время действия партикла.
Про то, что за значения в pos1 в ti_on_agent_hit, никто ничего не говорил
В ti_on_weapon_attack pos1 положение оружия, не знаю, какой его части.
Но если дым идёт не из дула, а из затвора, то нужно pos1 сдвинуть в сторону куда смотрит агент на длину ствола.
т.е. можно пробовать методом тыка все pos.RTFM наше всё.
я так почти всё делал ;), в итоге нашёл много интересного в партиклах.т.е. можно пробовать методом тыка все pos.RTFM наше всё.
Искать недокументированные возможности движка — неблагодарное дело.
RTFM наше всё.А кстати, есть ли где документация по module_mission_templates. В Мануале как-то глухо про это написано. Всё-таки там не то же самое, что и module_triggers.
Искать недокументированные возможности движка — неблагодарное дело.
В целом большая часть необходимой информации есть в шапке module_mission_templates.py.Цитировать (выделенное)RTFM наше всё.А кстати, есть ли где документация по module_mission_templates. В Мануале как-то глухо про это написано. Всё-таки там не то же самое, что и module_triggers.
Искать недокументированные возможности движка — неблагодарное дело.
Python 2.7.2 тоже подходит.
У меня такой же глюк был на питоне 2.7, только не помню точно был это 2.7.1. или 2.7.2.я вообще не смог им пользоваться,не идёт и всё, только 2.6
Там было написано, как внедрить в систему, но для ХР и Виста+) для семерки нужно?вот есть и для 7 http://rusmnb.ru/index.php?topic=2940.0 (http://rusmnb.ru/index.php?topic=2940.0) , извини прямо пальцем показать не могу ,прогресс ещё не дошёл
Неужели нету возможности в сейв внести правки?! Потому что корректировка вещей в ITEMS, и другие файлы параметров игры, эти же правки вносит без проблем.В трупсах переодеть можно без сейвов, правки в сейв не внести.
изменения стоимости апгрейда войск(Завтра скину место где это в модульке
Нет, не переодеть, а изменить умения (сильный удар, атлетика и тп) С переодевалкой всё работает. Именно умения почему то требуют начала новой игры. Я использовал Troops editor Morghs_MB_Warband_Tool_v135 может быть более новую версию установить? Версия игры 1.134 русс лиценз.Неужели нету возможности в сейв внести правки?! Потому что корректировка вещей в ITEMS, и другие файлы параметров игры, эти же правки вносит без проблем.В трупсах переодеть можно без сейвов, правки в сейв не внести.изменения стоимости апгрейда войск(Завтра скину место где это в модульке
Добавлено: 09 Апреля, 2012, 21:28
Зы. Если кто помнит сразу где это ответте
Завтра скину место где это в модулькеТак. module_scripts: script_game_get_upgrade_cost. И ряд скриптов выше.
(try_begin),
(is_between, ":troop_level", 0, 6),
(assign, reg0, 10),
(else_try),
(is_between, ":troop_level", 6, 11),
(assign, reg0, 20),
(else_try),
(is_between, ":troop_level", 11, 16),
(assign, reg0, 40),
(else_try),
(is_between, ":troop_level", 16, 21),
(assign, reg0, 80),
(else_try),
(is_between, ":troop_level", 21, 26),
(assign, reg0, 120),
(else_try),
(is_between, ":troop_level", 26, 31),
(assign, reg0, 160),
(else_try),
(assign, reg0, 200),
(try_end),
(assign, reg0, число) -- цена за переход. Поставь число в ноль -- цена нулевая.Именно умения почему то требуют начала новой игры.А что такого? Можно и вещи из сейва брать, если строчку в ини поставить. Умения, думаю, можно будет править через скрипты, если не начинать новую игру.
Объяснить это, лишь одной и той же последовательностью случайных кодов лиц при загрузке сцены, неполучается.У ботов есть ДНК. Её можно узнавать и прописывать при добавлении.
Вероятно решили, что эта фишка никому не нужна.
У ботов есть ДНК. Её можно узнавать и прописывать при добавлении.ДНК - это код лица? Непонимаю.
ДНК - это код лица? Непонимаю.DNA,
Думаю, во время спауна код заносится в переменную типа Randseed и в сооответствии с псевдослучайныим числами боту генерируется код лица и его снаряжение.Именно так.
Я пробовал перекидовать Нативу из МиБ в Варбанд. Лица перестают сохраняться. Значит эта фишка забита в движок.Значит, теперь только явно храня и прописывая днк.
нашел надо правильно читать сообщения об ошибках.А если выкладывать лог сообщения на сайт то тогда и другие не на пальцах смогут понимать в чём же у тебя ошибка
C:\Program Files\Mount&Blade - Warband\Modules\New Mod\Source\
если у тебя также в module_info.py поменяй в другую сторону слэши["sea_raider","Sea Raider","Sea Raiders",tf_guarantee_boots|tf_guarantee_armor|tf_guarantee_shield,0,0,fac_outlaws,Вобщем я просто поменял название sea_raider на new_raider, где new_raider это название нового юнита.
[itm_arrows,itm_sword_viking_1,itm_sword_viking_2,itm_fighting_axe,itm_battle_axe,itm_spear,itm_nordic_shield,itm_nordic_shield,itm_nordic_shield,itm_wooden_shield,itm_long_bow,itm_javelin,itm_throwing_axes,
itm_nordic_helmet,itm_nordic_helmet,itm_nasal_helmet,itm_nomad_vest,itm_byrnie,itm_mail_shirt,itm_leather_boots, itm_nomad_boots],
def_attrib|level(16),wp(110),knows_ironflesh_2|knows_power_strike_2|knows_power_draw_3|knows_power_throw_2|knows_riding_1|knows_athletics_2,nord_face_young_1, nord_face_old_2],
I'm having trouble starting a new game. Right after selecting my character's background the screen goes black and I can't click on anything. I have to Ctrl+Alt+Del to get out. Is anyone else experiencing this?
I have it to. Very annoying.
read reply #1007. This trouble come from Custom Commander mod. Also your noble banner u can choose in camp menu.
It comes from the way CC calls the banner screen only when you play on v1.15x, however. So either play on the intended 1.143 (until the banner call is changed to a 1.15x-compatible way), or don't start as a noble.
Кстати про погоду в мульте: с ченджлог'е 153 версии (или 150 какой-то) было написано, что при измемении погоды на карте сервера, измемения будут видны всем игрокам, в отличии от предыдущих версий, когда погода всегда была одинаковой (солнечно, 3 часа дня, на небе облака).
Кстати про погоду в мульте: с ченджлог'е 153 версии (или 150 какой-то) было написано, что при измемении погоды на карте сервера, измемения будут видны всем игрокам, в отличии от предыдущих версий, когда погода всегда была одинаковой (солнечно, 3 часа дня, на небе облака).
Во-первых, меня живо зацепила идея более узкой специализации воина на поле боя, как. например, в Руси 13 веке. Кроме разбивки по классам, этому способствует приятная особенность выпадания копий и больших двуручей при попытке закрепить их за спину в бою, что сразу повышает тактическую состовляющую боя, убирая универсалов с металками, копьями, двуручами и щитами одновременно.
В связи с этим, меня интересует скрипт-система для этой фичи. Примерно алгоритм я себе представляю, но моего опыта в Питоне и знаний МС не хватает. Вижу два варианта проверок
1. Грубый, через get_item_type, если двуруч или древковое, то попадает под категорию выбрасываемых на землю.
2. Более элегантный, через get_weapon_length в WSE.
Как дальше выглядит скрипт, я не знаю. То ли это должно запускаться при проигрывании анимации, на серверной или клиентской стороне - непонятно.
Кстати про погоду в мульте: с ченджлог'е 153 версии (или 150 какой-то) было написано, что при измемении погоды на карте сервера, измемения будут видны всем игрокам, в отличии от предыдущих версий, когда погода всегда была одинаковой (солнечно, 3 часа дня, на небе облака).А про туман есть что? А то было весело, когда выяснилось, что с DX7 туман не отображается.
А про туман есть что?Видимо, туман не убирали, просто теперь нельзя выставить для него рандомное значение, собственно, как и для дождя.
А вот у Штурмфогеля
Предполагаю такую основную структуру триггера:В триггере ti_on_item_unwielded проверяем, какое оружие у нас убирается из рук.Если длинное - спауним перед игроком, затем удаляем его.В процессе теста триггера обычно набегает ещё куча всяких поправок, поэтому полностью описать всё я не сумею.
(ti_on_item_unwielded, 0, 0, [],
[
(assign, ":item_unw_type", 1),
# (assign, ":agent_unwielding", 0),
# (assign, ":item_unwielding", 0),
(store_trigger_param_1, ":agent_unwielding"),
(store_trigger_param_2, ":item_unwielding"),
(item_get_type, ":item_unw_type", ":item_unwielding"),
(try_begin),
(this_or_next|eq, ":item_unw_type", itp_type_two_handed_wpn),
(eq, ":item_unw_type", itp_type_polearm),
(player_set_score,":agent_unwielding", 20),
(try_end),
]),
(ti_on_item_unwielded, 0, 0, [],
[
(store_trigger_param_1, ":agent_unwielding"),
(store_trigger_param_2, ":item_unwielding"),
(assign, ":item_unw_type", 1),
# (assign, ":agent_unwielding", 0),
# (assign, ":item_unwielding", 0),
(item_get_type, ":item_unw_type", ":item_unwielding"),
(try_begin),
(this_or_next|eq, ":item_unw_type", itp_type_two_handed_wpn),
(eq, ":item_unw_type", itp_type_polearm),
(agent_unequip_item, ":agent_unwielding", ":item_unwielding"),
(try_end),
]),
Фиговый я скриптер. Как и советовалось, положил этот код вниз module_templates.эээ... прямо вниз файла что ли? надо ж не так :)
Попробую как только дойду до этого момента. Куча всяких поправок это случайно не выпадение оружия ниже уровня земли?почти, нужно будет указывать координаты точки спавна. Но это лишь одна правка из возможных. Поскольку я с этим триггером не работал, как уже говорил, то не могу точно сказать, какими будут другие. Например, может появится дублирование оружия :)
(ti_on_item_unwielded, 0, 0, [],
[
(store_trigger_param_1, ":agent_unwielding"),
(store_trigger_param_2, ":item_unwielding"),
(assign, ":item_unw_type", 1),
(item_get_type, ":item_unw_type", ":item_unwielding"),
(try_begin),
(this_or_next|eq, ":item_unw_type", itp_type_two_handed_wpn),
(eq, ":item_unw_type", itp_type_polearm),
(agent_unequip_item, ":agent_unwielding", ":item_unwielding"),
(assign, ":drop_place", 0),
(agent_get_position, ":drop_place", ":agent_unwielding"),
(position_move_z, ":drop_place", 15,0), # Increazing Height of the spawn point (15 cms) to avoid weapon spawning under the ground
(set_spawn_position, ":drop_place"),
(spawn_item, ":item_unwielding", 0, 180), # 3 minutes before dissapear
(try_end),
]),
вопрос физике в warband
Пусть этот триггер валяется тут
сейчас же меня интересует вопрос физике в warband.
если читать хэдер оператион то получается опкод 1320 это try_for_parties,Так между прочим
исходя из этого в блоке ID ищем где может быть 2595... только странно в партиес ИД этого нет... есть в стрингс
На сколько мне известно, были люди (забыл кто), которые пытались подчинить все игровые объекты физике, и вроде бы небезуспешно.
ты чего на ЛС не отвечаешь?
Нужно ли оно вообще с этим заморачиваться? Нейтив довольно условен, аркаден, что ли.
Watakushi ([url]http://rusmnb.ru/index.php?action=profile;u=25235[/url]),Пусть этот триггер валяется тут
Лучше тут [url]http://rusmnb.ru/index.php?topic=6857.0[/url] ([url]http://rusmnb.ru/index.php?topic=6857.0[/url]) , если не сложно, с неким пояснением что это за тригер.сейчас же меня интересует вопрос физике в warband.
Ан о чём конкретно? Так сказать, ското точно вешать в граммах
Нет, я именно про (мне кажется) другую физику ударов в, например, Руси, Викинге и Бритенвальде. Если с полетом стрел все ясно - надо править projectiles, то с ближним боем непонятно.Так ты про анимацию что ли или именно про саму схему\формулу: получения урона, нанесения урона, защиты
Нужно ли оно вообще с этим заморачиваться? Нейтив довольно условен, аркаден, что ли.Вот это к чему? в смысле?
Нет, я именно про (мне кажется) другую физику ударов в, например, Руси, Викинге и Бритенвальде.Да, как и сказал Хантер, там всего лишь анимации новые вставлены. Наверно, ты имел ввиду "механика" а не физика? Если да, то поспешу огорчить - она в движке и с ней ничего не поделать.
Просмотрел как-то. Вот все прочитал и пока ничего не могу никому сказать.Ну хорошо, если надумаешь - пиши. Жду :)
Наверно, ты имел ввиду "механика" а не физика? Если да, то поспешу огорчить - она в движке и с ней ничего не поделать.
Вот это к чему? в смысле?
["items_end", "Items End", [("shield_round_a",0)], 0, 0, 1, 0, 0],
PanZagloba ([url]http://rusmnb.ru/index.php?action=profile;u=25400[/url]), в приведённой тобой информации ошибку не видно.
Появилась ли возможность в версии 1.53 работать в мультиплеере с:
1. Инвентарь — а когда не было возможности работать с инвентарём? :blink:
2. Независимые НПС (не боты). — НПС = Non playable character, бот = a computer-controlled player or opponent. Повторите вопрос.
3. Крафтинг. — что подразумевается под крафтингом? Анимация долбежа молотом по наковальне? Нет, её не появилось, нужно делать самому.
А новые particle systems использовал? Если да, то я бы попробовал получить в сцене то же количество частиц с применением только нативовских и сравнил поведение игрыты за меш или сам код эффекта?
Хотел заменить в crpg арбалест на аркебузу. Модель заменил, а вот тригер с дымом и звуком работать нормально отказывается. Когда стреляю я, то все нормально, но у других игроков ни дыма, ни звука. Т.е. триггер ti_on_weapon_attack (-51) работает только для меня. Пробовал поставить триггер от факела ti_on_init_item (-50), работает и у меня и у других игроков. Триггер срабатывающий при попадании -52 также работает у всех игроков. Даже не знаю куда копать, может кто нибудь сталкивался с похожей проблемой?Встречный вопрос, у Вас есть модулька CRPG и Вы сами запускаете сервер?
Встречный вопрос, у Вас есть модулька CRPG и Вы сами запускаете сервер?
Пока что у меня сложилось впечатление, что Вы подставляете ID тригеров в txt и пытаетесь играть на сервере, где нет Вашей аркебузы и тригера, который Вы вставляете. :blink:
Встречный вопрос, у Вас есть модулька CRPG и Вы сами запускаете сервер?
Пока что у меня сложилось впечатление, что Вы подставляете ID тригеров в txt и пытаетесь играть на сервере, где нет Вашей аркебузы и тригера, который Вы вставляете. :blink:
Разумеется у меня нет модульки CRPG :) Но у меня довольно богатый опыт ([url]http://rusmnb.ru/index.php?topic=13486.0[/url]) ковыряния в txt файлах CRPG.
Например для создания геральдики на лошадях испрользуется -50 триггер и все работает. Без проблем можно сделать чтобы метательные ножи дымились при попадании, а вот триггеры на атаку работают только у меня. Почему так не пойму.
Встречный вопрос, у Вас есть модулька CRPG и Вы сами запускаете сервер?
Пока что у меня сложилось впечатление, что Вы подставляете ID тригеров в txt и пытаетесь играть на сервере, где нет Вашей аркебузы и тригера, который Вы вставляете. :blink:
Разумеется у меня нет модульки CRPG :) Но у меня довольно богатый опыт ([url]http://rusmnb.ru/index.php?topic=13486.0[/url]) ковыряния в txt файлах CRPG.
Например для создания геральдики на лошадях испрользуется -50 триггер и все работает. Без проблем можно сделать чтобы метательные ножи дымились при попадании, а вот триггеры на атаку работают только у меня. Почему так не пойму.
Встречный вопрос, у Вас есть модулька CRPG и Вы сами запускаете сервер?
Пока что у меня сложилось впечатление, что Вы подставляете ID тригеров в txt и пытаетесь играть на сервере, где нет Вашей аркебузы и тригера, который Вы вставляете. :blink:
Разумеется у меня нет модульки CRPG :) Но у меня довольно богатый опыт ([url]http://rusmnb.ru/index.php?topic=13486.0[/url]) ковыряния в txt файлах CRPG.
Например для создания геральдики на лошадях испрользуется -50 триггер и все работает. Без проблем можно сделать чтобы метательные ножи дымились при попадании, а вот триггеры на атаку работают только у меня. Почему так не пойму.
Скажу так, модить мод, который не использует Ваши модификации приводит все Ваши услилия к нулю, править txt оно то хорошо, но используется восновном для чита, а создание своего мода для M&B на основе модульной системытяжёлый и не благодарный труддает результат :D
потому что у тебя и у сервера разные данные, вот и не пашет (вернее не полностью)Похоже проблема действительно в этом, но уж как то очень неочевидно все это.
ERROR: Usage of unassigned local variable: :agent_id
WARNING: Script can fail at operation #1. Use cf_ at the beginning of its name:
game_receive_url_response
ERROR: Usage of unassigned local variable: :event_type
хотя уже понял, что :agent_id относится к моей записи (call_script, "script_agent_equip_item", ":agent_id", "itm_invisible_head"), или (call_script, "script_agent_equip_item", "itm_invisible_head", ":agent_id"),, что вроде более правильно, так как:WARNING: Script can fail at operation #1. Use cf_ at the beginning of its name:
game_receive_url_response
ERROR: Usage of unassigned local variable: :event_type
___________________(jump_to_scene,"scn_zendar_center")
TypeError: 'tuple' object is not callable
объект "scn_zendar_center" не может быть вызван.from module_scenes import *
То есть компилятор просто не понимает, что это такое "scn_zendar_center"Ха-ха рабочий код:
объект "scn_zendar_center" не может быть вызван.
Создаёшь мешь переносишь её в брфку с пропсами, чтоб не создавать новуюНу, мне это не грозит, я её уже создал :)
тот что БРФКоллизия есть.
тот что БРФ2Эмм вот тут я сделал так: создал материалы и на каждый присвоил тектуру в diffuseA и бамп, для которых был. После уже присвоил в брфке с пропсами их. К стати брфку с материалами я тоже создал, старые вообще не использовал.
Ну а по добавлению в модульку мож вот это прочесть:Ух-ты, не подозревал, что в справочнике по ВРС-у есть раздел про добавление обьектов! Надо изучить!
(нажмите для открытия / скрытия)
Не совсем понятно проблема, но...Проблемы
Janycz ([url]http://rusmnb.ru/index.php?action=profile;u=20234[/url]), проблема в запятых'tuple' object is not callable - обычно признак "слипания" слов и фраз.
("kazemat","Kazemat's", icon_castle_a|pf_town, no_menu, pt_none, fac_kingdom_7,0,ai_bhvr_hold,0,(-1, -1),[], 28),
("enter",[],"Enter.",[[set_jump_mission,"mt_town_center"],[jump_to_scene,"scn_town_1_room"],[change_screen_mission]]),
("leave",[],"Leave.",[[leave_encounter],[change_screen_return]]),
скобки операций должны быть круглыми. в мс посмотрите внимательно синтаксис.само меню написано неправильно. расмотрите менюХа-ха
("game_event_party_encounter",
[
(store_script_param_1, "$g_encountered_party"),
(store_script_param_2, "$g_encountered_party_2"),# encountered_party2 is set when we come across a battle or siege, otherwise it's a negative value
# (store_encountered_party, "$g_encountered_party"),
# (store_encountered_party2,"$g_encountered_party_2"), # encountered_party2 is set when we come across a battle or siege, otherwise it's a minus value
(store_faction_of_party, "$g_encountered_party_faction","$g_encountered_party"),
(store_relation, "$g_encountered_party_relation", "$g_encountered_party_faction", "fac_player_faction"),
(party_get_slot, "$g_encountered_party_type", "$g_encountered_party", slot_party_type),
(party_get_template_id,"$g_encountered_party_template","$g_encountered_party"),
# (try_begin),
# (gt, "$g_encountered_party_2", 0),
# (store_faction_of_party, "$g_encountered_party_2_faction","$g_encountered_party_2"),
# (store_relation, "$g_encountered_party_2_relation", "$g_encountered_party_2_faction", "fac_player_faction"),
# (party_get_template_id,"$g_encountered_party_2_template","$g_encountered_party_2"),
# (else_try),
# (assign, "$g_encountered_party_2_faction",-1),
# (assign, "$g_encountered_party_2_relation", 0),
# (assign,"$g_encountered_party_2_template", -1),
# (try_end),
#NPC companion changes begin
(call_script, "script_party_count_fit_regulars", "p_main_party"),
(assign, "$playerparty_prebattle_regulars", reg0),
# (try_begin),
# (assign, "$player_party__regulars", 0),
# (call_script, "script_party_count_fit_regulars", "p_main_party"),
# (gt, reg0, 0),
# (assign, "$player_party_contains_regulars", 1),
# (try_end),
#NPC companion changes end
(assign, "$g_last_rest_center", -1),
(assign, "$talk_context", 0),
(assign,"$g_player_surrenders",0),
(assign,"$g_enemy_surrenders",0),
(assign, "$g_leave_encounter",0),
(assign, "$g_engaged_enemy", 0),
# (assign,"$waiting_for_arena_fight_result", 0),
# (assign,"$arena_bet_amount",0),
# (assign,"$g_player_raiding_village",0),
(try_begin),
(neg|is_between, "$g_encountered_party", centers_begin, centers_end),
(rest_for_hours, 0), #stop waiting
(assign, "$g_infinite_camping", 0),
(try_end),
# (assign, "$g_permitted_to_center",0),
(assign, "$new_encounter", 1), #check this in the menu.
(try_begin),
(lt, "$g_encountered_party_2",0), #Normal encounter. Not battle or siege.
(try_begin),
(party_slot_eq, "$g_encountered_party", slot_party_type, spt_town),
(jump_to_menu, "mnu_castle_outside"),
(else_try),
(party_slot_eq, "$g_encountered_party", slot_party_type, spt_castle),
(jump_to_menu, "mnu_castle_outside"),
(else_try),
(party_slot_eq, "$g_encountered_party", slot_party_type, spt_ship),
(jump_to_menu, "mnu_ship_reembark"),
(else_try),
(party_slot_eq, "$g_encountered_party", slot_party_type, spt_village),
(jump_to_menu, "mnu_village"),
(else_try),
(party_slot_eq, "$g_encountered_party", slot_party_type, spt_cattle_herd),
(jump_to_menu, "mnu_cattle_herd"),
(else_try),
(is_between, "$g_encountered_party", training_grounds_begin, training_grounds_end),
(jump_to_menu, "mnu_training_ground"),
(else_try),
(party_get_template_id, ":template", "$g_encountered_party"),
(ge, ":template", "pt_steppe_bandit_lair"),
(lt, ":template", "pt_bandit_lair_templates_end"),
(assign, "$loot_screen_shown", 0),
# (call_script, "script_encounter_init_variables"),
(jump_to_menu, "mnu_bandit_lair"),
(else_try),
(eq, "$g_encountered_party", "p_zendar"),
(jump_to_menu, "mnu_zendar"),
[color=red](else_try),
(eq, "$g_encountered_party", "p_kazemat"),
(jump_to_menu, "mnu_kazemat_enter"),[/color]
(else_try),
(eq, "$g_encountered_party", "p_salt_mine"),
(jump_to_menu, "mnu_salt_mine"),
(else_try),
(eq, "$g_encountered_party", "p_four_ways_inn"),
(jump_to_menu, "mnu_four_ways_inn"),
(else_try),
(eq, "$g_encountered_party", "p_test_scene"),
(jump_to_menu, "mnu_test_scene"),
(else_try),
(eq, "$g_encountered_party", "p_battlefields"),
(jump_to_menu, "mnu_battlefields"),
(else_try),
(eq, "$g_encountered_party", "p_training_ground"),
(jump_to_menu, "mnu_tutorial"),
(else_try),
(eq, "$g_encountered_party", "p_camp_bandits"),
(jump_to_menu, "mnu_camp"),
(else_try),
(jump_to_menu, "mnu_simple_encounter"),
(try_end),
(else_try), #Battle or siege
(try_begin),
(this_or_next|party_slot_eq, "$g_encountered_party", slot_party_type, spt_town),
(party_slot_eq, "$g_encountered_party", slot_party_type, spt_castle),
(try_begin),
(eq, "$auto_enter_town", "$g_encountered_party"),
(jump_to_menu, "mnu_town"),
(else_try),
(eq, "$auto_besiege_town", "$g_encountered_party"),
(jump_to_menu, "mnu_besiegers_camp_with_allies"),
(else_try),
(jump_to_menu, "mnu_join_siege_outside"),
(try_end),
(else_try),
(jump_to_menu, "mnu_pre_join"),
(try_end),
(try_end),
(assign,"$auto_enter_town",0),
(assign,"$auto_besiege_town",0),
]),
(
"kazemat_enter",mnf_auto_enter,
"You enter the kazemat's.",
"none",
[],
[
("enter",[],"Enter.",[[set_jump_mission,"mt_town_center"],[jump_to_scene,"scn_town_1_room"],[change_screen_mission]]),
("leave",[],"Leave.",[[leave_encounter],[change_screen_return]]),
]
),
(try_begin),выполняется раньше. И, соответственно, ни одно последующее else_try не выполняется вообще.
(lt, "$g_encountered_party_2",0), #Normal encounter. Not battle or siege.
(try_begin),
(party_slot_eq, "$g_encountered_party", slot_party_type, spt_town),
(jump_to_menu, "mnu_castle_outside"),
(else_try),
...
(try_begin),
(lt, "$g_encountered_party_2",0), #Normal encounter. Not battle or siege.
(try_begin),
(eq, "$g_encountered_party", "p_kazemat"),
(jump_to_menu, "mnu_kazemat_enter"),
(else_try),
(party_slot_eq, "$g_encountered_party", slot_party_type, spt_town),
(jump_to_menu, "mnu_castle_outside"),
(else_try),
(party_slot_eq, "$g_encountered_party", slot_party_type, spt_castle),
(jump_to_menu, "mnu_castle_outside"),
(else_try),
(party_slot_eq, "$g_encountered_party", slot_party_type, spt_ship),
(jump_to_menu, "mnu_ship_reembark"),
(else_try),
...
(try_begin),безотказно открывает меню деревни в Дириме.
(lt, "$g_encountered_party_2",0), #Normal encounter. Not battle or siege.
(try_begin),
(eq, "$g_encountered_party", "p_town_16"),
(jump_to_menu, "mnu_village"),
(else_try),
(party_slot_eq, "$g_encountered_party", slot_party_type, spt_town),
(jump_to_menu, "mnu_castle_outside"),
(else_try),
("kazemat","Kazemat's",icon_town|pf_town, no_menu, pt_none, fac_kingdom_7,0,ai_bhvr_hold,0,(18,60),[]),
И ещё не подскажешь как посмотреть все сцены в игре с их названием?Ну как бы все сцены прописаны в "module_scenes.py". Но это какой-то слишком простой ответ =). Наверное, я не понял вопроса.
Спасибо но вот теперь у меня возник такой вопрос как поместить определённого npc в определённый город и сцену???["Mardhug","Mardhug","Mardhug",tf_hero|tf_guarantee_all, scn_town_1_tavern|entry(30),reserved, fac_commoners,[itm_surgeon,itm_coif_2,itm_blue_hose],def_attrib|level(4),wp(20),knows_common, 0x000000000000040000005a5461a4c18c],
(ti_on_agent_spawn, 0, 0, [
# doing something...
common_battle_order_panel_tick = (
0.1, 0, 0, [],
[
(is_presentation_active, "prsnt_battle"),
(call_script, "script_update_order_panel_statistics_and_map"),
])
Arantir, почему невозможно? :-\все зависти от условий блока тригера, каждый фрейм будет работать и пробегать по всем агентам и отлавливать тех что заданы.
common_battle_order_panel_tick = (Обновляет панель статистики (Backspace) в бою каждые 0.1 секунды.
0.1, 0, 0, [],
[
(is_presentation_active, "prsnt_battle"),
(call_script, "script_update_order_panel_statistics_and_map"),
])
(ноль значит скрипт не повторяется).а именно с постояной проверкой каждый миг игрового времени. то есть интервал отсутствует. а 0,1 это с интервалом в 0,1.
А это период между повторными выполнениями блока кода внутри триггера (ноль значит скрипт не повторяется)поставь ti_onse
(0, 0, 0, [
(get_max_players, ":num_players"),
(try_for_range, ":player", 0, ":num_players"),
(ge, ":player", 1),
(player_is_active, ":player"),
(player_get_agent_id, ":other", ":player"),
(agent_get_wielded_item,":atm",":other",0),
(0, 0, 0, [
(get_max_players, ":num_players"),
(try_for_range, ":player", 0, ":num_players"),
(player_is_active, ":player"),
(player_get_agent_id, ":other", ":player"),
(ge, ":other", 0), # Агент существует
(agent_get_wielded_item,":atm",":other",0),
(ti_on_agent_spawn, 0, 0, [],
[
(store_trigger_param_1, ":agent_no"),
(agent_set_slot, ":agent_no", 999, 1), # set as spawned
]),
(0, 0, 0, [
(get_max_players, ":num_players"),
(try_for_range, ":player", 0, ":num_players"),
(player_is_active, ":player"),
(player_get_agent_id, ":other", ":player"),
(agent_get_slot, ":spawned", ":player", 999),
(gt, ":spawned", 0),
(agent_get_wielded_item,":atm",":other",0),
...
Третья цифра - через какое время проверяется этот триггер, если он сработал. ti_once фактически означает "больше не проверять".В другой интерпретации ti_once означает "запустить через ∞ сек.", т.е. никогда. Ну это если сводить все к одной основе (временному интервалу).
Третья цифра - через какое время проверяется этот триггер, если он сработал. ti_once фактически означает "больше не проверять".согласен...
(0, 0, 0, [
(get_max_players, ":num_players"),
(ge, ":num_players", 1),
(try_for_range, ":player", 0, ":num_players"),
(player_is_active, ":player"),
(player_get_agent_id, ":other", ":player"),
(ge ":other", 0),
(agent_get_wielded_item,":atm",":other",0),
Чисто для информации. Комментарий самих разработчиков по поводу времени срабатывания триггера:(1, 0, 0, [], #do this in every new frame, but not at the same time
Спасибо огромное! Все понятно и по полочкам. Еще небольшой вопрос.По идее не 6, а 9, там ещё масштабирование есть.
Можно ли в слот писать не число, а например, позицию, которая, если я правильно понимаю, по сути набор из 6-и чисел.
[trp_dhara_soldiers,"start",[],"Hello. Did you need troops?","dhara_soldiers_talk",[]],
[anyone|plyr,"dhara_soldiers_talk",[],"Yes, I need","dhara_soldiers_yes",[]],
[anyone|plyr,"dhara_soldiers_talk",[],"No, thank`s","dhara_soldiers_no",[]],
[anyone,"dhara_soldiers_yes",[],"We very surprised. Ok. We attach to your group","close_window",[
(troop_join,"trp_dhara_soldiers")]],
[anyone,"dhara_soldiers_no",[],"Ok. We wait you.","close_window",[]],
module_parties.py("dhara_soldiers","SOLDIERS",icon_vaegir_knight|pf_limit_members, no_menu, pt_none,fac_neutral,0,ai_bhvr_hold,0,(19, 53),[(trp_dhara_soldiers,54,0)]),
На карте появляются, всё норм, но диалог не срабатывает (точнее срабатывает, но не мой). Срабатывает вот этот:Чего вы хотиите?
-Сдавайся или умри!
-Ничего. Мы оставим вас в покое.
а куда лучше всего новые диалоги добавлять?Спроси что-нибудь по-проще. Там в модулке такое рубилово, что ничего конкретного посоветовать невозможно. Правильно может добавлять диалоги только человек, который наизусть знает их всех.
О! Теперь диалог выыводится, воин добавляется, но после всего этого меня бросает в бой с этой партией. =(Это проблемы того, как это всё работает.
$g_leave_encounter
?
А вы не подскажете, модулька 1.154 с игрой версии 1.153 будут совместимы?Т.е. наоборот
А что такое agent и где о нём можно почитать?Агент — это сущность отражающая бегающих по сцене людей и лошадей.
и где объявляются переменные типа $talk_with_merchant ?C $ — это глобальные переменные. Чтобы найти, где им присваивается значение нужно, искать их сквозь всю модульку напрямую.
(neq,":agents",":player_agent"),
(eq,":a",":i")
равно if($a==$i)
Есть ли какие-нибудь программы для редактирования сценВнутренний редактор сцен. Нужно включить Edit mode в стартовом меню. ctrl+e в сцене.
просмотра айтемов (items) (последние с отображением айтема (изображение айтема))?
Есть ли какие-нибудь программы для редактирования сцен
Возможно ли реализовать несколько валют?И пункты обмена?
Возможно ли реализовать несколько валют?Наличность в игре по сути такой же troop_slot , только захардкореный. Но его значение легко вытаскивается в любую переменную операцией store_troop_gold, также изменяется операциями troop_add_gold и troop_remove_gold. Так что не проблема создать сколько угодно валют (новых troop_slot), привязав основные игровые деньги к этим слотам (динамически изменяющиеся курсы и пр.). А дальше уж дело фантазии и техники, как всё это будет взаимодействовать.
а перегородить чем-нибудь непроходимым карту можно, а потом это что-то убрать?Чисто теоретически...Создать два невидимых неподвижных отряда на карте (первый будет преградой) и тригером с определённой частотой проверять расстояние от него до отряда игрока. При расстоянии меньше определённого "отбрасывать" игрока ко второму отряду (есть такая операция party_relocate_near_party). В теории должно работать. Не проверял.
И всё-же как запретить изменять имя игрока (Игрока!), которое легко меняется в пункте меню "Игрок" (где хар-ки, навыки и прочее) ?Никак. По крайней мере в случае с самим игроком. Это захардкорено. Переименования компаньонов можно отслеживать в диалоге с ними и возвращать им старое имя.
jump_to_menu = 2060 # (jump_to_menu,<menu_id>)
uhanich ([url]http://rusmnb.ru/index.php?action=profile;u=15855[/url]), я не знаю, может у меня модулька натива какая-то другая, но у меня в ней ни одного комментария, а без комментариев поди разберись где, что и за что отвечает =)
В header_operations зачастую только описание применения ф-ции, типа:Код: [Выделить]jump_to_menu = 2060 # (jump_to_menu,<menu_id>)
И всё-же как запретить изменять имя игрока (Игрока!)Тут подумал. Всё таки можно. Если на старте игры куда нибудь записать имя игрока, а потом опять же тригером через определённые промежутки времени возвращать исходное имя. Костыль конечно, но работать будет.
Есть ли в M&B Script какой-нить триггер или условие или ещё что, которое отвечало бы за нажатие определённой клавиши?Смотрите header_triggers.py, там все возможные флаги тригеров. Для отслеживания нажатия клавиши используются проверки key_is_down, key_clicked, game_key_is_down и game_key_clicked
Есть ли какая-нибудь команда выхода из цикла?Если под циклом вы имеете в виду операцию try_for_range, то прервать цикл нельзя. для того, чтобы не выполнять весь цикл дальше в полном объёме при достижении нужного результата, обычно используют вот такую штуку
Перед запуском цикла объявлейм любую переменную со значением
(assign, ":end", 0),
Запускаем цикл
(try_for_range, ":test", 0, 10),
Проверяем значение переменной
(eq, ":end", 0),
....
....
Дальше нужные нам действия и проверки
И в момент, когда нужное сделано и можно прекратить выполнение цикла, присваиваем нашей переменной другое значение
(assign, ":end", 1),
(try_end),
Таким образом цикл продолжит работу, но не уже не будет выполнять все действия, а просто быстро переберёт остаток интервала
а один (любой) из противников станет союзником.Как это реализовать я приблизительно знаю, но вот есть сомнения по поводу того, станет ли он действительно союзником и пойдёт ли рубить своих ? :D
Как это реализовать я приблизительно знаю, но вот есть сомнения по поводу того, станет ли он действительно союзником и пойдёт ли рубить своих ? :DДолжен. Возможно только после смены отношений придётся ещё сделать agent_force_rethink
2. Есть ли функция рандома? (Типа: rand(1,5); - выдаст число в диапазоне от одного до пяти)store_random_in_range
Я наверное уже достал вас своими нубскими вопросами, но у меня появляются постоянно новые.Напрягает, что это становиться состоянием души. Тот же store_random_in_range можно было найти прямым поиском по header_operations.py
Чисто теоретически...Создать два невидимых неподвижных отряда на карте (первый будет преградой) и тригером с определённой частотой проверять расстояние от него до отряда игрока. При расстоянии меньше определённого "отбрасывать" игрока ко второму отряду (есть такая операция party_relocate_near_party). В теории должно работать. Не проверял.можно записывать с определенной частотой фрейма (зависит от того куда скинуть нужно) позицию партии игрока. потом скидывать партию при определенных условиях. можно натыкать тупо мостов по полосе и сделать невидимыми задав флаг.
я ее ставил на отдых. по другому че-то никакА если подряд применить:
чтобы партия не пропадала с картыА ну да. Само собой :)
(0,20,5,[(key_is_down,0x14)],
[
(get_player_agent_no,":player_agent"),
(set_rain,1,100),
(set_fog_distance, 100, [0xFF000000]),
(assign, ":end", 0),
(try_for_agents,":agents")
(eq, ":end", 0),
(neq,":agents",":player_agent"),
(agent_set_team , ":agents", 1),
(agent_force_rethink, ":agents"),
(assign, ":end", 1),
(try_end)
])
Unexpected End of File while reading file: Modules\Sword of Truth\conversation.txt
Unexpected End of File while reading fileУдалите все сейвы и файлы экспорта персонажей.
Почему такое происходит? (Почему может быть неожиданное окончание, и как с этим бороться?)Ошибка сборки мода.
в консоли никаких ошибок.запускаемый и собираемый мод не совпадают.
Удалил файлы экспорта, всё заработало.надо будет попробывать..
Такое впечатление, что кроме основных файлов игры, экспрорты тоже проверяются.Чудные дела твои, Господи.
перекомпилировал - пропало :-\Возможно, стоит удалять txt перед сборкой. Processes сканируют (если есть) quick_strings.txt, variabies.txt и возможно ещё какие-то (на самом деле известно, что сканируются ID_, созданные на предыдущем этапе, и, если пересобирать несколько раз, результаты могут несколько меняться).
1. А что с ней может быть не так?
2. пробовал и qstr_ и str_. А как это "строка введённая игроком"?
неправильные соответствующие qstr, str в русификации.Раз решилось редактированием файла troops.csv, значит проблема не в qstr и str рассуждая логически
[url]http://forums.taleworlds.com/index.php/topic,57775.msg1493989.html[/url]те же стринги насколько я понял. просто динамически собранные из мелких стрингов.
Если речь идёт о координатах размещения текста в этих окнах, то это не редактируется,
["flintlock_rifle", "Flintlock Rifle",[("flintlock_rifle_1",0)],itp_type_musket|itp_cant_reload_on_horseback|itp_primary|itp_two_handed, itcf_reload_musket|itcf_carry_spear|itcf_shoot_musket, 230 , weight(1.5)|abundance(90)|difficulty(0)|spd_rtng(38) | shoot_speed(160) | thrust_damage(160 ,pierce)|max_ammo(1)|accuracy(99),imodbits_none,
[(ti_on_weapon_attack, [(play_sound,"snd_pistol_shot"),(position_move_x, pos1,0),(position_move_y, pos1,139),(particle_system_burst, "psys_pistol_smoke", pos1, 15)])]],
я обнаружил, что анимация перезарядки, явно, взята с потолка: болванчик резко разводит руками в стороны, после чего медленно сводит их обратно и выполняет какие-то неведомые (похоже, магические) пассы руками, после чего перезарядка заканчивается. Экспериментальным путем и методом чтения мануалов было выяснено, что за анимацию перезарядки отвечает itcf_reload_musket. Замена на itcf_reload_pistol дала гораздо более вменяемый (но совершенно не подходящий к модели длинноствольного ружья) результат.Есть два вопроса.по первому в модуль скрипт - script_game_get_troop_wage и script_game_get_total_wage и script_game_get_join_cost
1. Возможно ли повлиять на расчет стоимости содержания отрядов?
Я точно знаю, что стоимость эта зависит от уровня отряда, подозреваю, что может зависеть от навыков. Так или иначе, это все постоянные значения и они не подходят для великой цели динамического расчета. Хотелось бы рассчитывать поправки в зависимости от, скажем, времени года, географического положения, морали, навыков лидера/отряда или еще какого расположения звезд.
2. Как именно повлиять на анимацию перезарядки оружия?
Поэкспериментировав со следующим примеромКод: [Выделить]["flintlock_rifle", "Flintlock Rifle",[("flintlock_rifle_1",0)],itp_type_musket|itp_cant_reload_on_horseback|itp_primary|itp_two_handed, itcf_reload_musket|itcf_carry_spear|itcf_shoot_musket, 230 , weight(1.5)|abundance(90)|difficulty(0)|spd_rtng(38) | shoot_speed(160) | thrust_damage(160 ,pierce)|max_ammo(1)|accuracy(99),imodbits_none,
я обнаружил, что анимация перезарядки, явно, взята с потолка: болванчик резко разводит руками в стороны, после чего медленно сводит их обратно и выполняет какие-то неведомые (похоже, магические) пассы руками, после чего перезарядка заканчивается. Экспериментальным путем и методом чтения мануалов было выяснено, что за анимацию перезарядки отвечает itcf_reload_musket. Замена на itcf_reload_pistol дала гораздо более вменяемый (но совершенно не подходящий к модели длинноствольного ружья) результат.
[(ti_on_weapon_attack, [(play_sound,"snd_pistol_shot"),(position_move_x, pos1,0),(position_move_y, pos1,139),(particle_system_burst, "psys_pistol_smoke", pos1, 15)])]],
Так вот, насколько я прав, и где можно откопать эту анимацию. Если она захардкодена, то как подсунуть свежую?
Я точно знаю, что стоимость эта зависит от уровня отряда,
Поэкспериментировав со следующим примером
Читаем это что знать что к чему и что от куда [url]http://rusmnb.ru/index.php?topic=15189.0[/url] ([url]http://rusmnb.ru/index.php?topic=15189.0[/url])
sp_shield_bash_3 = (
0, 0.1, 0,
[код самого удара],
[код последствий удара])
какой командой можно прописать активацию следующего триггераТригеры на то и тригеры, что срабатывают самостоятельно либо по времени, либо по условию (см. header_triggers.py, все возможные условия там) и отдельной команды на запуск тригера естественно не существует.
Ну что касается этих цифр. (0.0, 0.0, 0.0).
Больше тут вопросами не флужу только ответами постараюсь.Вот и нужно было сразу задать вопрос в вопроснице, а делиться рецептами в рецептнице ;)
странное еще дело с переносами текста - "\", иногда проходит, иногда нет.Такое впечатление, что кроме основных файлов игры, экспрорты тоже проверяются.Чудные дела твои, Господи.
Есть, кстати, ещё причины. В процессе сборки при обработке большого числа чего-то может запросто произойти переполнение. И итоги там такие же — недописанные файлы и т.п.перекомпилировал - пропало :-\Возможно, стоит удалять txt перед сборкой. Processes сканируют (если есть) quick_strings.txt, variabies.txt и возможно ещё какие-то (на самом деле известно, что сканируются ID_, созданные на предыдущем этапе, и, если пересобирать несколько раз, результаты могут несколько меняться).
Легионер ([url]http://rusmnb.ru/index.php?action=profile;u=17320[/url]), Для переноса текста всегда пользовался символом ^. Проблем не было =/
Вот сделал я локацию, написал меню, скрипт прописал, мисион темплейтс, компилится нормально, без ошибок, в самой игре ошибок нет тоже, но стоит мне подойти к этой локации (столкнутся т.е.), как игра вылетает. От чего сие происходит
Вот сделал я локациюЧто это значит? Создали сцену?
(eq,"$g_party_encounter","p_house"),
(jump_to_menu,"mnu_house_1"),
("house_1",mnf_enable_hot_key,"House","none",
[],
[
("next",[],"Войти",[]),
]),
(eq,"$g_party_encounter","p_house"),может всё же
(jump_to_menu,"mnu_house_1"),
("game_event_party_encounter",
[
(store_script_param_1, "$g_encountered_party"),
(store_script_param_2, "$g_encountered_party_2"), #Negative if non-battle.
(try_begin),
(lt, "$g_encountered_party_2", 0), #Non-battle.
(try_begin),
(eq, "$g_encountered_party", "p_camp_bandits"), #Camp.
(jump_to_menu, "mnu_camp"),
#House
(eq,"$g_encountered_party","p_house"),
(jump_to_menu, "mnu_house"),
(try_end),
(try_end),
]),
module_game_menus.py("house", menu_text_color(0xFFAAAAFF)|mnf_enable_hot_key,
"House.",
"none",
[],
[
("next",[],"Войти",
[]),
]),
("game_event_party_encounter",
[
(store_script_param_1, "$g_encountered_party"),
(store_script_param_2, "$g_encountered_party_2"), #Negative if non-battle.
(try_begin),
(lt, "$g_encountered_party_2", 0), #Non-battle.
(try_begin),
(eq, "$g_encountered_party", "p_camp_bandits"), #Camp.
(jump_to_menu, "mnu_camp"),
#House
(else_try), #!!!!!!!!
(eq,"$g_encountered_party","p_house"),
(jump_to_menu, "mnu_house"),
(try_end),
(try_end),
]),
Как я и говорил. Ошибка от невнимательности. И ошибка очевидная.Вопрос: Есть текстура волос, сами волосы длинные, по пояс где-то, они при движении проваливаться же будут? Есть какой-нибудь мехнизм, что-бы этого избежать?Насколько я знаю, механизма избежать нет.
wse позволяет перехватывать игровое окно.
игровые окна не в модуль_презентация. они вшиты в движок.
wse внедрен в наполеоник на уровне движка
Никто не задавался вопросом о создании ............?
(try_begin),
(eq, ":faction_no", "fac_kingdom_1"),
(assign, ":party_icon", "icon_teut_caravan"),
(else_try),
(eq, ":faction_no", "fac_kingdom_2"),
(assign, ":party_icon", "icon_nov_caravan"),
(else_try),
(eq, ":faction_no", "fac_kingdom_3"),
(assign, ":party_icon", "icon_pol_caravan"),
(else_try),
(eq, ":faction_no", "fac_kingdom_4"),
(assign, ":party_icon", "icon_lit_caravan"),
(else_try),
(eq, ":faction_no", "fac_kingdom_5"),
(assign, ":party_icon", "icon_dane_caravan"),
(else_try),
(eq, ":faction_no", "fac_kingdom_6"),
(assign, ":party_icon", "icon_pruss_caravan"),
# (else_try),
# (eq, ":faction_no", "fac_kingdom_7"),
# (assign, ":party_icon", "icon_sweden_knight"),
(try_end),
но куда прописать, ума не приложу. cf_create_kingdom_party ругается на неиспользованную переменную(party_set_slot, ":result", slot_party_last_traded_center, ":spawn_center"),
После неё вставляй (try_begin),
(eq, ":faction_no", "fac_kingdom_1"),
(assign, ":party_icon", "icon_teut_caravan"),
(else_try),
(eq, ":faction_no", "fac_kingdom_2"),
(assign, ":party_icon", "icon_nov_caravan"),
(else_try),
(eq, ":faction_no", "fac_kingdom_3"),
(assign, ":party_icon", "icon_pol_caravan"),
(else_try),
(eq, ":faction_no", "fac_kingdom_4"),
(assign, ":party_icon", "icon_lit_caravan"),
(else_try),
(eq, ":faction_no", "fac_kingdom_5"),
(assign, ":party_icon", "icon_dane_caravan"),
(else_try),
(eq, ":faction_no", "fac_kingdom_6"),
(assign, ":party_icon", "icon_pruss_caravan"),
# (else_try),
# (eq, ":faction_no", "fac_kingdom_7"),
# (assign, ":party_icon", "icon_sweden_knight"),
(try_end),
(party_set_icon, ":result", ":party_icon"),
1.Можно ли как нибудь сделать так,что бы вместо топориков были гранаты?1. Да можно
2.Можно ли сделать газовое оружие(т.е. типа огнемет только с газом вместо огня,все это будет сделано,точнее почти сделано),что бы оно убивало ни как стрелой или болтом а просто сбивало с ног противника и убивало бы его(газом).
3.Как сделать из арбалета/лука,винтовку/пистолет?не 3д модель
Ashlagan ([url]http://rusmnb.ru/index.php?action=profile;u=26337[/url]),
Никак
На существующем движке нет. Не буду перечислять всех ограничений, не позволяющих этого сделать, но поверьте, их множество.
Как добавить навык "огнестрельное", чтоб у юнитов он тоже был? В модуль ини огнестрел "включил".Можно так:
wp_firearm(30)Как всё просто оказывается facepalm
В module_itemsПрописываешь мушкет с флагами itp_type_musket ,itcf_shoot_musket|itcf_reload_musketПосмотри, как у пистоля сделано.Лучше пользоваться редактором Morghs. А тригер звука выстрела и дыма можно заимствовать у пистоля.
Анимация оружия в бою зависит от флага прописанного итему
заменить по простому без кодинга с подменой?
Посмотрел модульку ОиМ, там вроде у всех ружей itp_type_crossbow, и Наолеоник Варс тоже.Попробуй.
Или всё-таки проще мушкету присвоить itp_type_crossbow, и
Попробуй.В module_items копируешь арбалет. Меняешь название и модель арбалета на мушкет. Замени триггер арбалета на триггер из пистоля. И даешь трупсу. Только заряжать будут опуская вниз и стрелять болтами.Да. Вроде разобрался.
прописать в module_scins.py в том месте где прописаны прически. потом сделать фейс в редакторе лиц в игре нажать ктрл+е и скопировать код.Попробуй.В module_items копируешь арбалет. Меняешь название и модель арбалета на мушкет. Замени триггер арбалета на триггер из пистоля. И даешь трупсу. Только заряжать будут опуская вниз и стрелять болтами.Да. Вроде разобрался.
Только сильно смущает, что мушкет в слоте инвентаря отображается "как арбалет" - сверху. Можно это исправить?
И ещё вопрос - как добавить новую причёску, и надеть её боту?
прописать в module_scins.py в том месте где прописаны прически. потом сделать фейс в редакторе лиц в игре нажать ктрл+е и скопировать код.(с включенным режимом редактирования в лаунчере)вставить его в конце записи о боте в модуль трупс либо вместо кода, либо вместо константы (янг_свадиан_фейс или что то подобное )Спасибо, получилось.
wp_firearm(30)пока не получается. В игре всё также - 0.
Подскажите - можно ли, чтоб игрок начинал новую игру, уже имея юнитов в отряде? Я пробовал через Morghs editor - не получается.Можно добавить в module_parties. Добавить команьонов в "main_party".
Можно добавить в module_parties. Добавить команьонов в "main_party"А я их в hero party записывал.
(assign, ":agent_no", "trp_dancer"),Замените на
(agent_set_animation, ":agent_no", "anim_dance"),
(agent_set_animation, "$g_talk_agent", "anim_dance")
Логика простая трупсы из module_troops.py фактически не являются агентами. Это шаблоны, по которым на конкретной сцене спавнятся конкретные агенты. Так что trp_dancer в вашем случае никак не может проиграть анимацию, т.к. он относится к совершенно другому классу объектов в игре.се равно пишет что какой-то не такой agent.Собственно потому, что trp_dancer и не агент вовсе :)
3. где прописаны какая кнопка что делает - хочу сделать вставание на дыбы на одну кнопку.на который никто не ответил.
olovo ([url]http://rusmnb.ru/index.php?action=profile;u=21078[/url]), вообще нет, но можно попробовать вот это ([url]http://rusmnb.ru/index.php?topic=17294.0[/url]).
2)Как сделать так, чтобы игрок, подойдя к двери и нажав кнопку F (ею дверь открывается) переместился в другое место, до такой же но другой двери, как будто вошел в то сооружение, на котором была дверь(я не о Passage а о скриптах двери)Зачем такое извращение, просто сделайте открывающуюся дверь.
Вопрос такой: что нужно прописать в модульке для туториала (подозреваю, что скопировать из скриптов старта новой игры), чтобы там можно было пользоваться инвентарем (чтобы можно было открыть окно инвентаря по нажатию І)?Я немного не это имел в виду.Я хотел сделать так, чтобы из категории объектов Intem Kinds положить какой-то объект, например меч, и чтобы его могли поднять другие игроки, потому что просто так когда подходишь к такому объекту, ничего не высвечивается(обычно если кинешь оружие и наведёшь на него, пишется его название и можно его взять).
Я немного не это имел в виду.Я хотел сделать так, чтобы из категории объектов Intem Kinds положить какой-то объект, например меч, и чтобы его могли поднять другие игроки, потому что просто так когда подходишь к такому объекту, ничего не высвечивается(обычно если кинешь оружие и наведёшь на него, пишется его название и можно его взять).
в редакторе настоящее оружие не разместишь, его нужно спаунить триггером из мишин_темплтейз непосредственно во время нахождения ГГ на сцене
например код триггера для спауна возле определенного энтри_пойнта примерно такой
(entry_point_get_position, pos1, 1),#определяется местоположение энтри пойнта №1 и заносится в pos1
(set_spawn_position, pos1),# pos1 устанавливается как место спауна предмета
(spawn_item,"itm_dubina",0,0),# спаунится предмет itm_dubina с модификатором 0, предмет никогда не пропадает (0 - время, после которого предмет пропадет, если поставить 60, пропадет после одной минуты (с версией движка 1.134, раньше пропадание не работало))
вместо позиции энтри_пойнта можно устанавливать любую позицию, это я как пример
Если уже отвечали на вопрос, то, пожалуйста, скажите хоть где искать.
Суть вопроса в чем. Имеется мод. В нем сделано очень много изменений. Поставил модульную систему, но в ней эти изменения не прописаны и при компиляции убираются. Можно ли как-нибудь сделать так, что бы эти изменения прописались в МС. А то заново их там прописывать слишком долго... Заранее спасибо.
Это в модульке изменяется?Да, в файле module_scripts
"Python" не является внутренней или внешней командой, исполняемой программой или пакетным файлом.
Не удаётся найти *директория мода*\Module system 1.15*.pyc
Такое высвечтивается при запуске build_module.bat
"Python" не является внутренней или внешней командой, исполняемой программой или пакетным файлом.
Не удаётся найти *директория мода*\Module system 1.15*.pyc
Такое высвечтивается при запуске build_module.bat
Народ, нужна помощь Распишите мне, пожалуйста, как создать новый город, чтобы все хорошо работало.
Сначала город разрушен, в нем никого нет, или 2-3 нпс, в меню выбрать "отстроить город за (допустим) 25 000 динаров" после этого ждем 15 (или больше дней)
1) Как сделать слот для второй таверны в городе?В одном городе или во всех?
2) Как добавлять(в каких именно module_...) кузнеца и т. д.module_troops.
больше всех разбирается Уханич, но он ушёл на покой
есть инструмент по упрощенному созданию презентаций на талевордсе. не помню где лежит.. косячный немного, но позволяет не парить мозг с координатами контейнеров.
Гидеон ([url]http://rusmnb.ru/index.php?action=profile;u=22971[/url]), ничего сложного в этом файле нет. много глобальных переменных, но это названия контейнеров. каждый вид контейнера задается операцией. ( слайдер, поле текста, прокрутка). текст что будет туда помещен тоже.
указывается размер и позиция на экране. отсчет от нуля левый нижний угол.
все действия в триггерах. в каком случае применять какой расписывал в справочнике.
найдите скриптик тот.. и сделайте пустой бокс и проверяйте операции , можно запуск сделать прямо при старте игры вашей презентации.
Как в модульную систему грузануть готовый мод, чтобы изменить некоторые параметры в нем?никак.
Т.е. редактировать готовые моды можно только через текстовик.
Можно попытаться декомпилировать файлы мода с помощью WMD.Получится МС этого мода. Только надо туда скопировать build_module и остальные файлы из МС Нативы.[url]http://rusmnb.ru/index.php?topic=17294.0[/url] ([url]http://rusmnb.ru/index.php?topic=17294.0[/url])
Простите, может я чего-то не понимаю, но разве "])" не закрывают блок операций и скрипт целиком соответственно и стало быть, скрывая их от ведения аппарата вы допускаете ошибку, потому как это нарушает структуру скрипта, может зря вы поставили "#" в начале этой последней строки?Нет, - ошибка не в этом была (и не могла в этом быть). В любом случае я разобрался и всё исправил, - теперь работает корректно. Вопрос снимается.
Может я не точно выразился.
Если перекрывать скрипт целиком, то ведь нужно убирать ото всюду ссылки на него (call_script...).
Можно прочистить только его блок операций (то, что в [] ).
Ещё раз приветствую всех. Не подскажет-ли кто: идентификатор(ы) нужного(ых) агента(ов) можно получить только через try_for_agents и далее путём отсеивания или же каждый агент в сцене имеет конкретный заранее известный идентификатор, который сразу возможно употреблять в операциях для агентов?Заранее в каком смысле?
Заранее благодарю.
Может кто-нибудь дать развернутый ответ как добавить в мод товары чтоб они продавались, а то я добавил палатки а на них вес другой написан например
["knight_tent","Knight's tent", [("1429_tente_comander_1111_bleu",0)], itp_merchandise|itp_type_goods, 0, 1000,weight(150)|abundance(200),imodbits_none],
а в окне торговли показывает 22кг как поправить.
В модульной системе максимальный компилируемый вес предмета 255 / 4 = 63,75.Спасибо не знал, буду думать.
Тут возникла проблема.Проще всего расположить запись с добавленным вне пределов указанных в module_constants (towns_begin, castles_begin, towns_end...), короче говоря после salt_mine. А в скриптах отвечающих за распределение я ещё толком не разбирался.
Мне нужно создать обычную крепость, какими являются другие.
Но нужно сделать ее ничейной <=> без лорда, я пробовал отдать ee fac_outlaws, fac_neutral, no_faction.
Но данная крепость принадлежит Player Faction, а ее лорд - игрок.
Проще всего расположить запись с добавленным вне пределов указанных в module_constants (towns_begin, castles_begin, towns_end...), короче говоря после salt_mine. А в скриптах отвечающих за распределение я ещё толком не разбирался.Так нельзя.
...Этот вариант в любом случае не подойдёт, т. к. будет сложновато (если вообще возможно) исключить для цикла идентификаторы уже заскриптованых агентов (в случае ежели они и до этого находились в заскриптованомСлоты агентов вам в помощь.
Ошибка в том, что блок команд пункта меню выполняется после активация этого пункта меню.
А строки формируются раньше.
Нужно вычисления, сколько будет стоит найм всех, перенести в блок команд всего меню.
Куда-то сюда
[
(party_get_slot, ":trp", "$current_town", slot_town_unique_troop),
(str_store_troop_name_plural, s20, ":trp"),
],
Возьму слот slot_agent_courage_score - всё равно собираюсь держать всех и постоянно в заскриптованом состоянии (в любом случае нужно будет попробовать добавить слотов).Слоты можно свои добавлять. Главное чтобы номера не пересекались с уже существующими.
Не помоглоЗагадка какая-то. Примеров, когда так работает по коду дофига.
Загадка какая-то. Примеров, когда так работает по коду дофига.Я использовал другой регистр (reg60). Оно помогло
Две версии осталось только
1. Сменить регистр на что-то побольше. Возможно где-то переписывается.
2. Сделать через строку
(str_store_string,s11,блабалбал{reg0}),
триггере номер 33еще вопрос триггере номер 33 где искать.
Подскажите, есть оператор который заставляет просчитать партию ее маршрут, объясняю когда мы заставляем партию при помощи назначения поведения следовать туда -то, она начинает движение по прямой к этой цели и только когда, во что-нибудь упрется (горы или реку), начинает просчитывать свой маршрут, а можно сделать чтоб сразу.Оператора нет. Но ты можешь реализовать это через поиск в глубину (как в классической задаче про путника)
Оператора нет. Но ты можешь реализовать это через поиск в глубину (как в классической задаче про путника)Грузить будет.
Согласен.Оператора нет. Но ты можешь реализовать это через поиск в глубину (как в классической задаче про путника)Грузить будет.
А что по презентации непонятно? Или надо целиком разбирать?Непонятно следующее, как сделать отдельно долг который мы должны замкам и городам, и отдельно своему отряду, а то там считается все сразу в общем, и как выделить отдельно сколько мы должны отряду (где во общем самая главная текучка) не понято.
Ещё что-нибудь?Спасибо буду пробовать, если что спрошу.
В каком файле описаны характеристики оружий/брони?
В триггере мисси с минимальным интервалом проверяешь, есть ли у всадникаНапиши скриптами пожалуйста, буду очень благодарен. Остальное добавлю сам :)коньолень. Если оленя под всядником нет, убиваешь всадника в скрипте.
Или как вариант используешь ti_on_agent_killed_or_wounded, в нём проверяешь кто сдох, и если это олень, то... вот тут нужно будет вспомнить, кто был его всадником.
Такой вопрос: пехотинец вооружён пикой и саблей, в бою использует только саблю. Как заставить использовать пику в бою?
[url]http://forums.taleworlds.com/index.php/topic,296147.0.html[/url]
пехотинец вооружён пикой и саблей, в бою использует только саблю. Как заставить использовать пику в бою?А вариант пометить пику itp_primary, а саблю itp_secondary и коль скоро это не поможет - написать триггеры к этим предметам не подойдёт?
Что-то там не срастается, лучше подожду немного...Там все понятно и очевидно. ;)
А вариант пометить пику itp_primary, а саблю itp_secondaryДа, думал об этом, как крайний вариант. Но вроде если стоит itp_secondary это оружие в руки нельзя взять?
написать триггеры к этим предметам не подойдёт?
Там все понятно и очевидно.
Мой гуманитарный мозГ не создан для этого :)[...]\module_scripts.py", line 898, in <module>You need to import it from the modified header_troops procedure.
TypeError: unsupported operand types(s) for +: 'NoneType' and 'List'
AttributeError: 'int' object has no attribute 'replace'Объект типа int не имеет метода replace.
Объект типа int не имеет метода replace.
Вы написали где-то число вместо строки.
Вы написали где-то число вместо строки.пропустил одно слово в строке. вроде своя фракция есть. но игра начинается с надписи "фракция игрока потерпела поражение" и в взятых деревнях/замках/городах нанимаются те кому раньше принадлежало, своих нет
Подскажите пожалуйста, есть возможность увеличить нативовский инвентарь больше чем на 100 ечеек, и можно ли редактировать окно партии.Редактировать нельзя никак.
В WSE можно переписать с нуля.Спасибо, думал принципиально не связываться с WSE.
Завелосипедивание окна инвентаря ради увеличения числа ячеей, имхо, не стоит выделки. Проще через game_menu допилить какие-нибудь караваны, автолут и т.п.
В моdule_skills увеличить верхнюю границу inventory_managment до 15.Вроде бы придётся редактировать и header_skills?
Создать персонажа с максимальным значением im, запросить у него размер рюкзака командами.
Вроде бы придётся редактировать и header_skills?Не нужно.
knows_trade_3 = 3 * (16**0)
knows_trade_4 = 4 * (16**0)
..
knows_prisoner_management_7 = 7 * (16**2)
knows_prisoner_management_8 = 8 * (16**2)
..
knows_horse_archery_5 = 5 * (16**23)
knows_horse_archery_6 = 6 * (16**23)
knows_trade_3 = 3
knows_trade_4 = 4
..
knows_prisoner_management_7 = 1792
knows_prisoner_management_8 = 2048
..
knows_horse_archery_5 = 24758800785707605497982484480
knows_horse_archery_6 = 29710560942849126597578981376
def set_skill(sk_id, n):
return n * (16**sk_id)
То есть вы предлагаете вместо определения которое обычно идёт в header вставлять выражение n * (16**[skill_ID]) (где n - уровень скилла, 16 - константа, а [skill_ID] - порядковый номер скилла) или вызов функции
def set_skill(sk_id, n):
return n * (16**sk_id)
Это определение, да? А вызов т. е. set_skill(sk_id, n)? А определение где располагать - в начале файла?
В принципе да - можно и так и не хуже чем с header, только название у функции ещё сократить.
troops = [
knows_ironflesh_4|knows_power_strike_3
можно заменить на set_skill(skl_ironflesh, 4)|set_skill(skl_power_strike, 3)
Здраствуйте, у меня такая проблема, установил модульную систему но у меня ошибка, вот скриншот ошибки и как я прописал путь к папке и в Path (может что то упустил) :Походу, вы используете Python 3.4.2, а надо использовать Python 2.7.x
Не работает модулька! Не пойму в чем дело! Делаю карту, как написано в здешнем руководстве. Все прописываю, карта отображается в списке, захожу, а там холмы всякие, лес в общем. А карта генерировалась как песчанная. Более того - решил в outer_terrain прописать снег - не реагирует! Почему такая штука? Вроде экспортирует, карту видит, на нее заходит - а не работает(( Ведь не в стим же писать? Вряд ли у меня одного такая проюлемаfacepalm Речь идет о сцене или о глобальной карте?
речь идет о сцене. Смех в том, что сцена распознается но желает рандомно генерироваться. То есть она не задается по коду, что я прописал, а всегда разная. При этом она неизменно лесная, то есть не снег и не пески. Пробовал несколько раз заходить на нее - и каждый раз картина разная. Буднто бы стоит рандомная генерация. А я ее не ставил. И outer_terrain у меня вообще снежный прописан, а там так же plain..Удалите *.sco файл Вашей сцены из папки SceneObj Вашего мода.
Как отключить музыку при входе в таверну.
(1, 0, ti_once, [],
[
(store_current_scene, ":cur_scene"),
(scene_set_slot, ":cur_scene", slot_scene_visited, 1),
(try_begin),
(eq, "$sneaked_into_town", 1),
(call_script, "script_music_set_situation_with_culture", mtf_sit_town_infiltrate),
(else_try),
(eq, "$talk_context", tc_tavern_talk),
(call_script, "script_music_set_situation_with_culture", mtf_sit_tavern),
(else_try),
(call_script, "script_music_set_situation_with_culture", mtf_sit_town),
(try_end),
]),
Нет, пробовал удалял, тогда играет музыка которая играла на глобальной карте, а вот как ее убрать, или туда что звук "тишины" поставить, может что проще есть?
(stop_all_sounds,1),
Спасибо,
испробовано, выключает все звуки кроме музыки, мне надо наоборот.
(play_track,<track_id>, [options]), # 0 = default, 1 = fade out current track, 2 = stop current track
Нет, пробовал удалял, тогда играет музыка которая играла на глобальной карте, а вот как ее убрать, или туда что звук "тишины" поставить, может что проще есть?Мне почему-то кажется, что только через звук тишины.
Еще где можно исправить отсчет календаря, чтоб в году не двенадцать месяцев было а четыре по временам года (просто зима тридцать дней, весна тридцать дней и тд), хочу экономику прописать, а с двенадцатью месяцами хрен урожая дождешься.Нету никакого календаря. Есть дни (и часы) с начала игры и отображение этих дней в виде строки
И в порядке фантазии кто нибудь думал, как по ходу игры можно заменить карту на другое время года или текстуры.Вроде бы, MAXHARDMAN когда-то скриншоты показывал или даже видео постепенного наступления зимы.
misha19901 ([url]http://rusmnb.ru/index.php?action=profile;u=38084[/url]),
ставить enchanced version
[url]http://rusmnb.ru/index.php?action=dldir;sa=details;lid=201,[/url] ([url]http://rusmnb.ru/index.php?action=dldir;sa=details;lid=201,[/url]). ЕМНИП, ключ должен подойти как от M&B, так и от WB.
("update_companion_candidates_in_taverns",
[
(try_for_range, ":troop_no", companions_begin, companions_end), # цикл по компаньонам
(troop_set_slot, ":troop_no", slot_troop_cur_center, -1), # убираем НПС из города
(troop_slot_eq, ":troop_no", slot_troop_days_on_mission, 0), # НПС не на задании
(troop_slot_eq, ":troop_no", slot_troop_occupation, slto_inactive),
(neg|troop_slot_ge, ":troop_no", slot_troop_prisoner_of_party, 0), # НПС не в плену
(try_for_range, ":unused", 0, 6), # повторить шесть раз
(store_random_in_range, ":town_no", towns_begin, towns_end), # выбор случайного города
(try_begin),
(neg|troop_slot_eq, ":troop_no", slot_troop_home, ":town_no"), # город не является домом НПС
(neg|troop_slot_eq, ":troop_no", slot_troop_first_encountered, ":town_no"),
(store_faction_of_party, ":faction", ":town_no"), # узнаём фракцию города
(troop_slot_eq, ":troop_no", slot_troop_original_faction, ":faction"), # проверка соответствия фракций
(troop_set_slot, ":troop_no", slot_troop_cur_center, ":town_no"), # помещаем НПС в выбранный город
(try_end),
(try_end),
(try_end),
]),
Но, на то, что тут написано я бы сильно не надеялся - лучше самому всё написать и перепроверить. Удачи.
Соответственно нужно либо унифицировать Зендар под обычные города, либо адаптировать общий код под него.да уж. видимо нереально мне сделать. как обычный город не годится, а изменить общий код - даже не представляю как
Смотрите здесь [url]http://rusmnb.ru/index.php?topic=431.msg7349800#msg7349800[/url] ([url]http://rusmnb.ru/index.php?topic=431.msg7349800#msg7349800[/url]) ответы #429 #430.
Как убрать голос лошади (ржание), например сделал(стянул) я волка, прописал как лошадь, посадил на него невидимого всадника прописал как волка( скин, новая раса, голос и тд), так вот всадник воет и рычит, все нормально, а его лошадь ржет ,собака, можно это убрать?Есть команда (agent_stop_sound, <agent_id>), , не знаю как с ржанием, но топот она не убирает.
В TLD дефолтовые лошадиные звуки ("neigh","horse_snort","horse_low_whinny") заменены на тишину.Думаю что это самое суровое, но правильное решение для этой нетерпимой к другим скачущим тварям игры. Наверно так и сделаю, раз развел зверинец от кота до слона :).
А настоящие звучащие звуки животных проигрываются с помощью триггеров в миссиях.
(eq, ":var63", "fac_kingdom_5"),
(else_try),
(party_set_slot, ":var50", 10, "scn_castle_euro2_exterior"),
(else_try),
(party_set_slot, ":var50", 10, "scn_castle_euro3_exterior"),
(else_try),
Чё-то какая-то неразбериха. Несколько (else_try), подряд без условий. И потом ниже тоже самое.
Чё-то какая-то неразбериха. Несколько (else_try), подряд без условий. И потом ниже тоже самое.спасибо за наводку. похоже в этом и дело все
Вопрос следующего содержания: можно ли вставить в мод продолжение боя войсками после оглушения ГГ
Подскажите, как мне сделать им лут, как у стандартных предметах в NativeОставь всё как есть, десяток раз победи разбойников, должны пару раз попасться.
Mixail228 ([url]http://rusmnb.ru/index.php?action=profile;u=36866[/url]), это ModMerger все. загляни в modmerger_options, там и прописаны модификации которые добавлены. запускай modmerger_installer и собственно инсталлируй в свою модификацию или наоборот удаляй если надо. где-то на TaleWorlds была подробна инструкция что это такое и как работает ModMerger
Кстати, вопрос в тему, а можно как нибудь простым способом, довести версию модульки своего мода с 153 до 167 не переписывая в ручную файлы 167, а например тупо скопировав файлы из 153 и заменить ими файлы путона в 167 и скомпилировать их 167 батом, или там есть какие-то глубокие различия (и какие именно). И вообще чего такого втолкнули в 160 версию, что она перестала поддерживать более ранние.
Mixail228 ([url]http://rusmnb.ru/index.php?action=profile;u=36866[/url]), это ModMerger все. загляни в modmerger_options, там и прописаны модификации которые добавлены. запускай modmerger_installer и собственно инсталлируй в свою модификацию или наоборот удаляй если надо. где-то на TaleWorlds была подробна инструкция что это такое и как работает ModMerger
сравнивая 153, твой мод и 167Спасибо, наверное придется, но это не совсем простой путь.
Еще одна причина, почему хорошо пользовать Мерджер.Когда я начинал я о нем ничего не знал, а теперь поздно, я сам до конца не помню. что у меня и где поменено и добавлено.
программу которая бы определяла какие текстуры у меня в моде используются а какие просто место занимают, хочу ресурсы почистить.Не думаю, что такая есть. Но можно написать свою.
Но можно написать свою.Шутку оценил, но у меня на это шариков не хватит.
программу которая бы определяла какие текстуры у меня в моде используются а какие просто место занимаютвроде бы в OpenBRF есть такая функция
вроде бы в OpenBRF есть такая функцияПо моему с помощью его можно только вручную проверить какие текстуры входят в тот или иной материал, а их (текстур) более 2000, долго перебирать. Или я чего то не знаю?
["player","Player","Player",tf_hero|tf_unmoveable_in_party_window,no_scene,reserved,fac_player_faction,
[],
str_4|agi_4|int_4|cha_4,wp(15),0,0x000000018000000136db6db6db6db6db00000000001db6db0000000000000000],
Кстати а где можно взять 167 модульную?
Но её там нетВот именно, хотя по идее мне и 166 должно хватить (167 секретная какая-то), за ссылки спасибо посмотрю.
Задача следующая: хочу, чтобы лук выстреливал больше одной стрелы за разЭто можно сделать, например, примерно так (триггер к предмету):
(ti_on_weapon_attack,
[
(store_trigger_param_1, ":agent"),
(agent_get_wielded_item, ":weapon", ":agent", 0),
(agent_get_look_position, pos3, ":agent"),
(try_for_range, ":unused", 0, 19),
(copy_position, pos2, pos1),
(position_copy_rotation, pos2, pos3),
(store_random_in_range, ":angle", -5, 6),
(position_rotate_x, pos2, ":angle"),
(store_random_in_range, ":angle", -5, 6),
(position_rotate_z, pos2, ":angle"),
(add_missile, ":agent", pos2, 4000, ":weapon", 0, "itm_tutorial_bolts", 0),
(try_end),
]
),
Где писать - смотрите на примере огнестрельного или геральдической брони.
Подскажите, пожалуйста, как правильно удалить (через модульную систему) все фракции, города-замки-деревни, всех персонажей и юнитов, а также квесты - чтобы начать делать мод с нуля.
А то, когда я начал удалять строчки типа: "town_1"... ; "kingdom_1"... при компилировании начали выскакивать ERROR, - причём в тех файлах, в которых ничего не трогал. :o
все фракции, города-замки-деревни, всех персонажей и юнитов, а также квестыfacepalm
What will the game's saving policy be?Захардкорено в движке игры.
Realistic! или
Allow me quit without saving.
TutorialАналогично предыдущему.
Now enter your ame and distribute your attribute, skill and weapon points.
двойники игрока появляются в некоторых локацияхЭто такой известный баг движка игры. Но если часто появляется - может где-то спавиться нулевой troop, т.е "trp_player", т.е игрок.
Захардкорено в движке игры.как бы узнать какие он операции выполняет после этих окн? может скрипты какие вызывает?
Подскажите, пожалуйста, как правильно удалить (через модульную систему) все фракции, города-замки-деревни, всех персонажей и юнитов, а также квесты - чтобы начать делать мод с нуля.Удалять не обязательно, можно закомментировать поставив в начале строчки #
Подскажите, где в модульной (а возможно и не в ней) хранятся следующие строчки возникающие в начале игры:Van я то же ищу если найду, отпишусь.
What will the game's saving policy be?
Realistic! или
Allow me quit without saving.
и
Tutorial
Now enter your ame and distribute your attribute, skill and weapon points.
города-замки-деревни в module_parties.py и их можно корректно исключать из игрыдеревни - да, можно отключить флагом pf_disabled, но от остального к сожалению останутся хвосты, всю фракцию так не удалишь, надо лезть в скрипты и остальные файлы модульной. прямо все, никогда не удалял, максимум 3-4 фракции
чтобы можно было нанимать в городах торговцев, тавернщиков, гильдмастеров, мастеров арены как НПС в свой отряд?
Добромир а если не секрет зачем Вы их в отряд то затащить хотите :)
1) Как сделать фракцию нейтральной
2) Возможно ли создать в игре новый тип оружия?
Что Вы имеете в виду под появлением солдат разного уровня? Появляться в армии игрока или где-то еще?ну лорд проиграл сражение, и он появляется в каком-то городе и потом у него появляется солдаты разного уровня в его отряде, можно ли как-то сделать так чтобы и у меня так-же каждый день появлялись солдаты при необходимости?
искал как сделать гранату ,и наткнулся тут [url]http://rusmnb.ru/index.php?action=pmxblog;sa=view;uid=21638[/url]
Решил проверить на камне [url]http://prntscr.com/8v5hlh[/url] но ничего не происходит
Добавлено: 25 Октября, 2015, 19:01
Все вопрос снят ,все работает все замечательно
# item
["frag_grenades", "Fragmentation grenades", [("throwing_stone",0)], itp_unique|itp_type_thrown|itp_primary, itcf_throw_stone, 255, weight(4)|difficulty(0)|spd_rtng(87) | shoot_speed(30) | thrust_damage(15, blunt)|max_ammo(9)|weapon_length(8),imodbits_none,
[(ti_on_missile_hit,
[
(copy_position, pos2, pos1),
(particle_system_burst, "psys_explode_smoke_1", pos2, 24),
(particle_system_burst, "psys_ground_blastoff", pos2, 100),
(play_sound_at_position, "snd_pistol_shot", pos2, 1),
(store_trigger_param_1, ":agent"),
(try_for_agents, ":agent_2"), # blast damage
(agent_get_position, pos3, ":agent_2"),
(get_distance_between_positions, ":distance", pos3, pos2),
(lt, ":distance", 200),
(val_clamp, ":distance", 50, 200),
(store_sub, ":distance", 200, ":distance"),
(val_div, ":distance", 2),
(agent_deliver_damage_to_agent, ":agent", ":agent_2", ":distance", "itm_frag_grenades"),
(try_end),
(assign, ":num_shatters", 30),
(assign, ":shatters_used", 0),
(try_for_agents, ":agent_2"), # shatter damage
(ge, ":num_shatters", ":shatters_used"),
(agent_get_position, pos3, ":agent_2"),
(get_distance_between_positions, ":distance", pos3, pos2),
(lt, ":distance", 2000),
(val_add, ":shatters_used", 1),
(agent_is_in_line_of_sight, ":agent_2", pos2),
(store_random_in_range, ":gear", 0, 2050),
(lt, ":distance", ":gear"),
(val_div, ":distance", 25),
(store_sub, ":distance", 80, ":distance"),
(val_max, ":distance", 15),
(agent_deliver_damage_to_agent, ":agent", ":agent_2", ":distance", "itm_frag_grenades"),
(try_end),
]),]],
# particles
("ground_blastoff", psf_billboard_3d|psf_global_emit_dir|psf_always_emit|psf_randomize_size, "prt_mesh_blood_1",
500, 1.75, 0.4, 1.2, 0, 0, #num_particles, life, damping, gravity_strength, turbulance_size, turbulance_strength
(0.0, 1), (0.9, 0.88), #alpha keys
(0.1, 0.4), (1, 0.4), #red keys
(0.1, 0.7), (1, 0.7), #green keys
(0.1, 0.5), (1, 0.5), #blue keys
(0.0, 0.35), (1, 0.17), #scale keys
(1.5, 1.5, 0.25), #emit box size
(0, 0, 13), #emit velocity
3.2, #emit dir randomness
0, #rotation speed
0, #rotation damping
),
("explode_smoke_1", psf_billboard_3d|psf_global_emit_dir|psf_always_emit, "prt_mesh_dust_1",
10, 0.9, 1.5, 1, 25, 1, #num_particles, life, damping, gravity_strength, turbulance_size, turbulance_strength
(0.3, 0.4), (1, 0), #alpha keys
(0.5, 0.7), (1, 0.1), #red keys
(0.5, 0.7), (1, 0.1), #green keys
(0.5, 0.7), (1, 0.1), #blue keys
(0.66, 5), (1, 15), #scale keys
(0.75, 0.75, 0.25), #emit box size
(0, 3, 14), #emit velocity
1, #emit dir randomness
20, #rotation speed
-4 #rotation damping
),
А горшки с горючей смесью, аля молотов коктейль кто-нибудь делал?Делал.
Проще было скопировать, как есть не изменяя, ни agent_deliver_damage, ни то, что в первых кавычках и откомпилить два раза (на первай раз при упоминании свежедобавленого предмета всегда будет ошибка). А эффект можно сменить (particle_system_burst).ок попробую
Делал.горящий огонь наносил урон ?
Проще было скопировать, как есть не изменяя, ни agent_deliver_damage, ни то, что в первых кавычках и откомпилить два раза (на первай раз при упоминании свежедобавленого предмета всегда будет ошибка). А эффект можно сменить (particle_system_burst).Моя ошибка была , не вписал во вторую строчку итем камней . Сейчас все норм , без ошибок , как раз то что доктор прописал .
И .... :DЦитировать (выделенное)А горшки с горючей смесью, аля молотов коктейль кто-нибудь делал?Делал.
...Там и начинается рулетка ,каждое попадание в противника за сотни метров ,может стать роковым для ГГ...Так может это и нормально, всегда есть вероятность что и героя может осколками задеть :)
...Бывает не так далеко от взрыва находишься , урон не проходит .Бывает взрыв далеко ,урон проходит ...
Очень порадовали взрывающиеся стрелы, давно о них мечтал Было бы очень здорово увидеть их например в "Делимся скриптами для МС", как собственно и вариант гранат.
(particle_system_burst,"psys_fireplace_fire_big",pos1,20),
(particle_system_burst,"psys_war_smoke_tall",pos1,1),
(particle_system_burst,"psys_dummy_smoke",pos1,2),
(particle_system_burst,"psys_dummy_straw",pos1,10),
(particle_system_burst,"psys_fire_sparks_1",pos1,15),
(play_sound_at_position,"snd_pistol_shot",pos1),
(play_sound_at_position,"snd_jump_end_water",pos1),
:laught: скорее не нормальноЦитировать (выделенное)...Там и начинается рулетка ,каждое попадание в противника за сотни метров ,может стать роковым для ГГ...
Так может это и нормально, всегда есть вероятность что и героя может осколками задеть
Насколько я понимаю blast damage с дистанцией 200 это радиус самого взрыва ,с уроном 50 -200Да, урон в зависимости от дистанции (здесь в сантиметрах), val_max определяет минимальное значение для переменной, val_clamp определяет минимальное и максимальное значения для переменной, (assign, ":num_shatters", 30), применяется в качестве кол-ва осколков,(store_random_in_range, ":gear", 0, 2050), (lt, ":distance", ":gear"), вероятность попадания осколка зависит от дистанции, урон от осколка зависит от дистанции и определяется в районе 15 - 80.
А shatter damage это радиус осколков с разлетом 2000 и 25тью уронами (хотя там еще есть (val_max, ":distance", 15), но я хз что это )
Что то я не понял , решил код Доктора вставить в дипломатию ,как сразу полезли ошибкиТочно не могу сказать о причине, надо проверить header_operation, на наличие и соответствие строчки agent_is_in_line_of_sight = 1826 - эта операция для определения видимости агента с позиции (чтобы осколки не били сквозь твердые объекты). Надеюсь русскоязычные комментарии в .ру файлах не оставлялись?
мне бы пока оглушающую сделать , без радиуса осколковВ чем проблема проставить знак '#' в начале каждой строки, начиная с (assign, ":num_shatters", 30),?
Цитировать (выделенное)Замечательно: объятые пламенем погорельцы бросают оружие и бегут в панике позабыв обо-всём, ну или тухнут.
Цитировать (выделенное)
А горшки с горючей смесью, аля молотов коктейль кто-нибудь делал?
Делал.
И ....
еще вопрос , почему то у гранат доктора звук ненавсю да и плотность эффектов слаба ,вот приведу пример [url]https://youtu.be/qvtjvv4zS-Q[/url]
Есть ли возможность загрузить в модульную систему Prophesy of pendor, а не Native?Для этого нужна сама модулька от Prophesy of pendor.
Для этого нужна сама модулька от Prophesy of pendor.А такая существует?
А такая существует?У авторов она имеется. Есть ли в свободном доступе, я не знаю, но вроде бы нет.
У авторов она имеется. Есть ли в свободном доступе, я не знаю, но вроде бы нет.Спасибо за информацию. Жаль что нету возможности поработать с более совершенным модом, кроме как Морфом или Твиком, а переделывать Натив дело слишком длительное. Ксати не подскажете, нет ли аналогичных программ для работы с квестами по принципу вышеперечисленных?
У авторов она имеется. Есть ли в свободном доступе, я не знаю, но вроде бы нет.Упс разобрался. Здесь на форуме есть компилятор который вытаскивает тхт файлы из любой базы и переделывает их в питоновские. Фактически реальное решение моего вопроса.
Здравствуйте! Я делаю карту для мультиплеера Napoleonic Wars и у меня появилась потребность добавить при помощи модульки поднимаемые предметы, анимацию и разрушаемые стены.
Как сценоделу, мне очень не хочется изучать язык питона и разбираться в устройстве модульной системы, но надо добавить небольшой интерактив на карту.
Прошу опытных мододелов разъяснить глупцу
Скажу замашка уже не из легких. Особенно про разрушаемые стены.Ну, вот немного повозившись в инструкциях по созданию разрушаемых стен у Лемранта, я научился добавлять в scene_props объектам свойства разрушения. Оказалось, не так уж и трудно это сделать. Но возникает вопрос: если я добавлю формально новый объект (к примеру, разрушаемая) в scene_props, но пропишу ему существующую .brf модельку, он будет работать в мультиплеере или можно переделывать только уже прописанные объекты?
А в скрипте "game_start"строку (assign, ":player_faction_culture", "fac_culture_1"), заменил на:
(faction_get_slot, ":player_faction_culture ", "fac_player_faction", slot_faction_culture) ,
То что ты его привязал, а механизма отвязки не сделал.если не секрет - как?
по-моему это дело лучше в скриптах прописывать отвечающих за npcподсказать не можешь как?
(try_for_range, ":companion_candidate", companions_begin, companions_end),
(troop_slot_eq, ":companion_candidate", slot_troop_occupation, 0),
(troop_slot_eq, ":companion_candidate", slot_troop_cur_center, "$current_town"),
(neg|troop_slot_ge, ":companion_candidate", slot_troop_prisoner_of_party, centers_begin),
(set_visitor, ":cur_entry", ":companion_candidate"),
(val_add, ":cur_entry", 1),
(try_end),
Ежели надо привязать конкретного NPC к конкретному городу, можно, например, так: (try_for_range, ":companion_candidate", companions_begin, companions_end),
(assign, ":end_cond, 0), # сбрасываем метку
(try_begin),
(this_or_next|troop_slot_ge, ":companion_candidate", slot_troop_prisoner_of_party, centers_begin), # компаньон в плену или ->
(neg|troop_slot_eq, ":companion_candidate", slot_troop_occupation, 0), # в отряде
(assign, ":end_cond, 1), # ставим метку
(try_end),
(try_begin),
(neq, ":end_cond, 1), # метка не поставлена (компаньон не в отряде и не пленник)
(eq, ":companion_candidate", "trp_<NPC>"), # это наш NPC
(assign, ":end_cond, 1), # ставим метку (дабы в случае провала следующей проверки не запустило следующую ветку)
(eq, "$current_town", "p_<NPC's_town>"), # и мы в его городе
(assign, ":end_cond, 0), # сбрасываем метку
(else_try),
(eq, ":end_cond, 0),
(neg|troop_slot_eq, ":companion_candidate", slot_troop_cur_center, "$current_town"),
(assign, ":end_cond, 1), # ставим метку
(try_end),
(neq, ":end_cond, 1), # спавним компаньона ежели метка не поставлена
(set_visitor, ":cur_entry", ":companion_candidate"),
(val_add, ":cur_entry", 1),
(try_end),
Ежели надо привязать конкретного NPC к конкретному городу, можно, например, так:я попробовал-
А мама не говорила вам не "копипастить"? У переменнгой ":end_cond" отсутствуют закрывающие кавычки.говорила, а так же - не спеши, будь внимательным.
подсказать не можешь как?
Спасибо, учту.я вообщето про себя. был бы я внимательней, заметил бы отсутствие кавычек
Как полностью удалить партию(города, замка деревни)нужно удалить в module_scripts в первом скрипте инициализацию партии, присвоение фракции и лорду
Проставляю # или удаляю строки файла module_parties и скриптс, при билде выдает ошибку, потом игра ломается.
Что я упустил?
Я так понимаю, если партию стереть то сцены и боты которые она использовала будут неактивны.
Полагаю дело в module_scripts?
Прошу не игнорировать это единственное, что мне не позволяет закончить мод.
Что я сделал не так?
SyntaxError: invalid syntaxТак-то вам еще компилятор сказал, что вы нарушили довольно своеобразный синтаксис Python.
- в меню отряда недельная плата у юнитов в динарах. Хотя везде рубли, и слово denar в поиске не ищется. Зашито в игру?Павел уже подсказал.
- хочу добавить в деревни ещё один вид мужиков-крестьян, прописываю в модуль_констант village_walker_male_a (дословно не помню) под номером 59. Прописываю в скриптах его же, но результата нет.в module_troops он у тебя вставлен перед trp_spy_walker_1?
вставлен перед trp_spy_walker_1?Да. Добавил village_walker_1, _2, _3. Но уже ладно, обошёлся без этого)
Еще так же такой вопрос 1.0 влияет на высоту персонажа в итоге ведь?
менял на 20
Кто-нибудь в курсе за что отвечают эти операторы: item_has_capability и item_has_property ?
Спасибо, то есть если я хочу выбрать предметы со свойством itp_civilian я могу применить оператор item_has_property ?, а как выбрать предметы со свойством imodbits_cloth ?Вроде бы да. Для выбора предмета с модификатором есть команда (item_has_modifier, <item_kind_no>, <item_modifier_no>), вместо <item_modifier_no> поставьте "imodbits_cloth".
Не забыли ли вы добавить написанный триггер в нужную миссию?
Почему используете get_sq_distance_between_positions, а не get_distance_between_positions? Я не знаю чем они отличаются, поэтому прошу попробовать без sq.
У тебя цикл (try_for_range, ":cur_straw_b", 0, ":count_of_straw_b") не закрыт ну и бегин первый.
Сломал себе мозг по поводу точки входа ГГ в таверне.
Да только игре пофиг, ГГ и непесь как мог взять и стрелять из требовательного лука, так и дальше может.
Насколько я помню, нельзя брать вещь, если не хватает навыка. Точно не знаю, могу с уверенностью сказать, что с атрибутами так. Другое дело, что если уже надето, сам предмет не снимается, даже если не хватает навыка
А самое обидное одевая кожаные перчатки увеличивающие скил на +1, ГГ и непись не может взять лук с большим требованием на 1, чем его реальный скил.
Где же эта собака(проверка) зарыта?
Сама идея ограничения была увидена в моде Русь 13 век, там ели на ГГ был требовательный лук, и и одев рукавицы решил воспользоваться, то лук просто скидывается на землю.
Мне так обидно. Я же это и предлагал!И уж тем более никого не хотелось обидеть :)
Попробуйте написать триггер в mission_templates, который будет осуществлять свою проверку и удалять оружие, если оно не подходит.Для меня это означает разбирательством с новым пластом модульки (тригеры для агентов в сценах). И похоже Банерлорд выйдет раньше чем я сыграю хоть разок в свой мод facepalm
Но мне модулька пишет ошибку "Tupe Error:'tuple' objekt is not callable
Но мне модулька пишет ошибку "Tupe Error:'tuple' objekt is not callable что это за черт, я же тупо копировал?
Чтобы правильно установить питон, ему надо прописать путь.
Но у меня в системных переменных не активна нужна кнопка "изменить". Права администратора есть. Почему так
Хочется протестить анимацию на entry point и добавить анимированную стрелку из туториала на карту для NW.Уточни конкретно что ты хочешь сделать, а то я не очень понял :) Просто добавить pointer_arrow в то место где находится твоя entry point или хочешь заставить стрелку двигаться в этом месте? :)
Заставить двигаться, конечно. Впрочем, это можно сделать и обычной анимацией на все объекты на карте, но если на карте много стрелок и не требуется анимировать все, выделить конкретно одну, нужную, для анимации я могу только через entry point или создав новый объект с другим названием. В туториале NW анимированная стрелка появлялась именно на entry point.Если никто до завтра не подскажет, то завтра отпишусь, есть у меня вариант. Просто сейчас я от компа далеко. А если сильно охота, то попробуй использовать скрипт перемещения черепа на сцене в mission templates, разместив его в соответствующей миссии. Скрипт этот вроде в этой теме один парень пораньше выкладывал 8-)
Подскажите, кто знает, есть ли в модульке возможность задать цикл для повтора одной операции, но несколько раз подряд.
try_for_range
Вот как это реализовать, может поделитесь идеями?Триггером вида(я не точно помню, как пишуться триггеры в mission templates(вожможно надо писать вместо
(время мгновения,
(t, u, w,
):(время мгновения, [
(store_random_in_range, ":r", 0, 4),
//атаковать r раз
]),
(время мгновения, [
(store_random_in_range, ":r", 0, 4),
//атаковать r раз
]),
Парни, всем снова ку ;)
Вопрос у меня все тот же, касается отслеживания удара по предмету на сцене (scene_props). Вот как можно реализовать например движение платформы после удара мечом например по черепу (spr_skeleton_head)? Или как на дуэльном сервере Lidus запускается ФТ после удара игроками по наковальне? Зюзя, писал про триггер ti_on_scene_prop_hit в module_scene_props, но может есть еще какие варианты? :embarrassed: Буду рад любым подсказкам :embarrassed:
Вы имеете в виду нечто подобное?Да.
кто пробовал Freelancer декомпилировать?При декомпиляции декомпилятор не предоставит идеальный код, насколько я знаю. Нужен опытный программист, который сможет исправить ошибки, возникшие при декомпиляции. Поищи на форуме Talewords исходники Freelancer, наверняка где-то имеются.
При декомпиляции декомпилятор не предоставит идеальный код, насколько я знаю. Нужен опытный программист, который сможет исправить ошибки, возникшие при декомпиляции. Поищи на форуме Talewords исходники Freelancer, наверняка где-то имеются.Я пробовал декомпилировать один мод в Native получился чистый без ошибок код. :) Просто есть одно НО) При декомпиляции будут утеряны все локальные переменные, точнее их исходные названия. Вместо переменных ":cur_agent", ":troop", ":item" и.т.д. будет написано ":var0", ":var1", ":var2". Еще в файле module_constants будет пусто. Все слоты которые есть изначально и те которые добавлены мододелом будут утеряны, а в скриптах упоминания на них будут встречаться.
Луций, может-быть лодов (lods) просто не хватаетПроблема в том, что я делаю мод для мультиплеерного сервера и изменение текстур и .dds файлов за пределами модульной системы повлечет за собой то, что никто этих изменений не увидит со стандартным клиентом. :(
(agent_is_human, ":cur_agent"),Это лишнее .
(is_between, ":hp", 0, 1),Я не уверен, но наверное лучше все же написать просто
(assign, ":cur_agent_new", ":cur_agent"),Подожди, зачем создавать новую переменную? Если условие с 0 здоровья выполняется, все действия и так можно выполнять на ":cur_agent". Может я что-то не углядел, но как я понимаю, новая переменная тут лишняя. Во всяком случае, когда я делал триггер на постепенную регенерацию, я обошелся без новой переменной. Как по мне, чем меньше лишнего в коде - тем лучше. Вот мой код; может, поможет :
(agent_get_position, pos2, ":cur_agent_new"),Я не спец в модульной системе (и вообще полез сюда только ради картоделания), но на всякий случай я бы посоветовал написать какой-нибудь pos30 вместо pos2. Просто потому, что у меня в одном скрипте на движение объект при активации двигался к pos1, где находилась точка спауна игроков. Когда я поставил pos30, все исправилось и объект начал двигаться в обозначенную мною точку.
(store_random_in_range, ":chislo", 0, 65),64 и 65 - точки спауна флагов в режиме захвата флага. Я бы поставил до 63....
(agent_set_slot, ":cur_agent_new", slot_agent_spawn_entry_point, ":chislo"),Ты уверен, что этот слот прописан в module_constants? И зачем тебе тут слоты в этом коде нужны?
(agent_is_human, ":cur_agent"),
Это лишнее .
Я не уверен, но наверное лучше все же написать просто (lt, ":hp", 1),
Если можно сделать проще - лучше сделать проще. Мало ли..
(agent_set_slot, ":cur_agent_new", slot_agent_spawn_entry_point, ":chislo"),
Почему проверка на то что агент является человеком лишняя?Потому что лошадь все равно не будет спауниться на Entry Point'ах, созданных для игроков. Ну впрочем, оставляй - компьютер чуть быстрее будет обрабатывать всех агентов если исключит лошадей. Это не принципиально.
Написал так как ты говорил, плюс ко всему попробовал убрать новую переменную и изменить условие (store_random_in_range, ":chislo", 0, 65), на (store_random_in_range, ":chislo", 0, 63), номер позиции в операцииГхм, я тут подумал. Раз агент помер, значит он уже не _alive, да? Он может быть еще _active некоторое время после смерти, но точно уже не _alive ))
(agent_get_position, pos2, ":cur_agent_new"), тоже изменил, но из этого роя, не вышло ничего абсолютно. Проверял на себе)) Мой персонаж после смерти так и продолжает появляться где попало.
Такой слот точно есть)) Я его брал как раз-таки из файла module_constants Я решил использовать слот по той причине чтобы операция возрождения игрока была применена для всех агентов на сцене, удовлетворяющих данным условиям.Не знаю насчет этой темы, т.к. я сам работаю с модульной системой Napoleonic Wars и там этого слота нет. Так что ничего не могу на этот счет сказать)
ti_on_agent_killed_or_wounded и (set_spawn_position, <position>)Все правильно, я вспомнил как это делается. Вместо первого нолика своего триггера вписывай ti_on_agent_killed_or_wounded...
Можно так: в триггере ti_agent_killed_or_wounded запишите в слот к отдавшему Богу душу агенту (добавьте слот или задействуйте неиспользуемый в ваших условиях) координаты смерти (можно непосредственно из регистра позиций pos(x))
скорее неправильно указан путь до установленого питонаВсё делал по этой самой теме. Ошибки подобной нигде не видел... Хотя попробую конечно еще раз, может и правда заработает. Если так, то заранее спасибо.)
Вряд-ли модулька не рабочая, скорее неправильно указан путь до установленого питона в переменной окружения. Или можно попробовать дописать его (путь до питона) в батник, который запускает сборку модуля (вроде, там перед каждым process* дописывается в виде "C:\Program files\python 2.6.6\python.exe"). Лучше правильно перепишите значение для переменной окружения, в теме даже сказано как.
Всё делал по этой самой теме. Ошибки подобной нигде не видел... Хотя попробую конечно еще раз, может и правда заработает. Если так, то заранее спасибо.)
Да нафиг Вам сдался этот Питон
Скачайте как я текстовый редактор типа Notepad++ там все есть и синтаксис питоновского языка подсвечивается и плагинов всяких море
один геммор с его установкой, то версия не подходит, то еще какой-то бред напишет
(2, 0, 0, [(multiplayer_is_server),], ####assassin even securety AI check agr and kill players
[
(try_for_agents,":bot_s"), # 1 cicle begin
# (agent_is_active,":bot_s"), # not need?
(gt,":bot_s",-1),
(agent_is_non_player,":bot_s"),
(agent_is_human,":bot_s"),
# (gt,":bot_s",-1), # above now
(agent_is_alive,":bot_s"),
(agent_get_troop_id,":troop_id",":bot_s"),
# (gt,":troop_id",-1), # equivalent to (agent_is_human,":bot_s"), (used above)
(this_or_next|eq,":troop_id","$npc_weapon"),
(eq,":troop_id","$npc_armor"),
(agent_get_position,pos1,":bot_s"),
(try_begin),
(this_or_next|eq,":troop_id","$npc_weapon"),
(eq,":troop_id","$npc_armor"),
(agent_set_no_death_knock_down_only, ":bot_s", 1),
(agent_set_damage_modifier, ":bot_s", 200),
(try_end),
(try_for_agents,":agent_no"), # 2 cicle begin
# (agent_is_active,":agent_no"),
(gt,":agent_no",-1),
(agent_is_alive, ":agent_no"),
(agent_is_human,":agent_no"),
# (gt,":agent_no",-1),
(agent_get_position,pos2,":agent_no"),
(get_distance_between_positions,":dist",pos1,pos2),
# (try_begin),
# (agent_get_player_id,":player_no",":agent_no"),
# (gt,":player_no",-1),
# end what now?
# (try_end),
(agent_get_wielded_item,":item_equip_r",":agent_no",0), #0-R 1-L
(try_begin), # 1 block begin
(neg|agent_is_non_player, ":agent_no"),
(is_between,":dist",0,1500),
# (le,":item_equip_r",-1),
(eq,":item_equip_r",-1), # that enough
(try_begin), # 2 block begin
(this_or_next|eq,":troop_id","$npc_weapon"),
(eq,":troop_id","$npc_armor"),
(is_between,":dist",0,250), # 150 - isn't too close?
(try_begin), # 3 block begin
(eq,":troop_id","$npc_armor"),
(call_script,"script_assassin_event_armor",":agent_no"),
(else_try),
(eq,":troop_id","$npc_weapon"),
(call_script,"script_assassin_event_weapon",":agent_no"),
(try_end), # 3 block end
(else_try),
# (neg|agent_is_non_player, ":agent_no"), # don't need (used above)
# (is_between,":dist",0,1500), # don't need (used above)
(try_begin), # 2 block end
(is_between,":dist",0,199),
# (gt,":item_equip_r",-1), # 0 - is "invalid_item"
(gt,":item_equip_r",0),
(else_try),
# distantion and is_plyer check is need there?
(this_or_next|gt,":item_equip_r",0), #check player
(agent_set_scripted_destination, ":bot_s", pos2, 1),
(try_end), # 1 block end
(else_try),
(agent_is_non_player, ":agent_no"),
(agent_add_relation_with_agent,":bot_s",":agent_no", 1), # #-1 = enemy, 0 = neutral (no friendly fire at all), 1 = ally
(agent_add_relation_with_agent,":agent_no",":bot_s", 1), # #-1 = enemy, 0 = neutral (no friendly fire at all), 1 = ally
(try_end), # 2 cicle end
(try_end), # 1 cicle end
# (try_end), # it's from whence?
]),
###constans
slot_agent_is_chat_bot = 32
slot_agent_is_mercenary_owner = 33
### trigger
agent_hit_trigger = (ti_on_agent_hit, 0, 0, [
(multiplayer_is_server),
],
[
(store_trigger_param_1, ":damage_agent_no"),
(store_trigger_param_2, ":attacker_agent_no"),
(store_trigger_param_3, ":damage"),
(agent_get_position, pos1, ":damage_agent_no"),
(scene_prop_get_num_instances, ":object_max", "spr_potlamp"),
(try_begin),
(ge, ":object_max", 1),
(try_for_range, ":object_cur", 0, ":object_max"),
(scene_prop_get_instance, ":instance", "spr_potlamp", ":object_cur"),
(prop_instance_get_variation_id_2, ":variation_id", ":instance"),
(gt, ":variation_id", 0),
(val_mul, ":variation_id", 100),
(prop_instance_get_position, pos3, ":instance"),
(get_distance_between_positions, ":distance", pos1, pos3),
(le, ":distance", ":variation_id"),
(assign, ":damage", 0),
(set_trigger_result, ":damage"),
(assign, ":object_max", 0),
(try_end),
(agent_is_non_player, ":damage_agent_no"),
(try_begin),
(agent_slot_eq, ":damage_agent_no", slot_agent_is_chat_bot, 1),
(agent_get_player_id, ":attacker_player_id", ":attacker_agent_no"),
(player_is_active, ":attacker_player_id"),
(try_end),
(try_end),
(assign, "$g_process_interrupter", 1),
(call_script, "script_cf_mt_neo_agent_hit", ":damage_agent_no", ":attacker_agent_no", ":damage"),
])
chat_bot_spawn = (10, 0, ti_once, [
(multiplayer_is_server),
],
[
(scene_prop_get_num_instances, ":instances_number", scene_prop_for_spawn_agent),
(try_for_range, ":instance_index", 0, ":instances_number"),
(scene_prop_get_instance, ":instance_no", scene_prop_for_spawn_agent, ":instance_index"),
(prop_instance_is_valid, ":instance_no"),
(prop_instance_get_variation_id, ":troop_no", ":instance_no"),
(is_between, ":troop_type", 1, 15),
(assign, reg3, ":troop_type"),
(call_script, "script_get_troop_for_spawn_agent_with_scene_props", ":troop_type"),
(prop_instance_get_position, pos3, ":instance_no"),
(set_spawn_position, pos3),
(spawn_agent, ":troop_no"),
(assign, ":agent_no", reg0),
(agent_set_slot, ":agent_no", slot_agent_is_chat_bot, 1),
(agent_set_no_death_knock_down_only, ":agent_no", 1),
(try_begin),
(agent_is_active,":agent_id"),
(agent_is_alive,":agent_id"),
(agent_get_player_id, ":player_id", ":agent_id"),
(player_is_active,":player_id"),
(player_get_gold, ":player_gold", ":player_id"),
(prop_instance_get_variation_id_2, reg0, ":instance_no"),
(val_mul, reg0, 100),
(try_begin),
(ge, ":player_gold", reg0),
(try_begin),
(prop_instance_get_variation_id, ":troop_type", ":instance_no"),
(assign, ":troop_id", 0),
(try_begin),
(eq, ":troop_type", 1),
(assign, ":troop_id", "trp_swadian_crossbowman_multiplayer_ai"),
(else_try),
(eq, ":troop_type", 2),
(assign, ":troop_id", "trp_nord_veteran_multiplayer_ai"),
(try_end),
(gt, ":troop_id", 0),
(val_sub, ":player_gold", reg0),
(player_set_gold, ":player_id", ":player_gold", multi_max_gold_that_can_be_stored),
(agent_get_position,pos1,":agent_id"),
(position_move_x, pos1, 150),
(set_spawn_position, pos1),
(spawn_agent,":troop_id"),
(assign, ":mercenary_agent_id", reg0),
(agent_set_slot, ":mercenary_agent_id", slot_agent_is_mercenary_owner, ":player_id"),
(call_script, "script_agent_set_relation_with_agent", ":agent_id", ":mercenary_agent_id", 1),
(agent_set_group, ":mercenary_agent_id", ":player_id"),
(agent_set_is_alarmed, ":mercenary_agent_id", 1),
(try_for_agents, ":cur_agent"),
(agent_is_active, ":cur_agent"),
(agent_is_alive, ":cur_agent"),
(agent_is_human, ":cur_agent"),
(agent_slot_eq, ":cur_agent", slot_agent_is_mercenary_owner, ":player_id"),
(call_script, "script_agent_set_relation_with_agent", ":mercenary_agent_id", ":cur_agent", 1),
(try_end),
(call_script, "script_agent_make_neutral_all", ":agent_no"),
(try_end),
(str_store_string, s0, "@You hired mercenary"),
(multiplayer_send_string_to_player, ":player_id", multiplayer_event_show_server_message, s0),
(try_end),
(else_try),
(str_store_string, s0, "@Mercenary cost - {reg0} gold"),
(multiplayer_send_string_to_player, ":player_id", multiplayer_event_show_server_message, s0),
(try_end),
(try_end),
])
Valerian60-чудак-человек, ежели модулька (в process_* файлы загляни и узри) написана на Python (есть ещё на C++), то он тебе для сборки модуля необходим.
Valerian60 ([url]http://rusmnb.ru/index.php?action=profile;u=45457[/url]), барьеры поставь :laught:
Почему-то у меня все компилируется бат-файлом, а скрипты пишутся в текстовом редакторе и все компилируется без проблем. Хотя может и был установлен когда-то... точно не скажу...Батник только указывает process_* файлы которые нужно выполнить, которые написаны на python.
может кто подскажет, есть ли в модульке возможность из фиксированного ряда случайных чисел (например 2, 15, 7, 32) определить минимальное?Хитрить не обязательно, достаточно пройтись циклом по всем числам в списке, например, поиск наименьшего значения по слотам агента:
А еще?module_scripts
NMC старых версии вам подойдет. Так же посмотрите Diplomacy 4.litdumтак дело и в том, что не могу найти НМС старых версий. Нашёл только 1.0 лайт, а там только дипломатия и КК
Нашёл только 1.0 лайт, а там только дипломатия и ККА это собственно примерно то, что и нужно. Freelancer, PBOD и Formations AI внедряются за 3-5 минут.
OZzz ([url]http://rusmnb.ru/index.php?action=profile;u=49523[/url]), ну так Вам отладчик же пишет в каких строках обнаружены ошибки и даже сам код, вызывающий проблемы, показывает. Попробуйте зайти и посмотреть. Может там просто где-то кавычка не стоит или что-то типа того.
Хотя как ни странно, при добавлении еще одного символа "=" ошибка исчезает, но по синтаксису файла это же, вроде, не правильно.Вполне возможно, что после этого указанная функция просто исключается из проверки.
(this_or_next|is_between, ":troop_no", "trp_austrian_grenadier","trp_austrian_infantry_rifle"), # Austrian
модель родственных отношений (например, вегирскую)Родственные модели для всех фракций одинаковы.
Иконки новых деревень изначально отображаются такими, как прописаны, однако через несколько секунд после начала игры заменяются на пустынные.Смотри скрипт process_village_raids
2. Как и в деревнях, в единственном добавленном городе, присутствуют сарранидские мотивы: проявляются они в тюрбанах в турнирной аммуниции. Как сделать турнирную экипировку в нужном городе "общекалерадской"?В меню town_tournament смотри подменю tournament_join_next_fight
(try_begin),
(eq, ":town_original_faction", "fac_kingdom_1"),
#Swadia
(store_mod, ":mod", ":town_index_within_faction", 4),
(try_begin),
(eq, ":mod", 0),
(call_script, "script_set_items_for_tournament", 40, 80, 50, 20, 0, 0, 0, 0, "itm_arena_armor_red", "itm_tourney_helm_red"),
(else_try),
(eq, ":mod", 1),
(call_script, "script_set_items_for_tournament", 100, 100, 0, 0, 0, 0, 0, 0, "itm_arena_armor_red", "itm_tourney_helm_red"),
(else_try),
(eq, ":mod", 2),
(call_script, "script_set_items_for_tournament", 100, 0, 100, 0, 0, 0, 0, 0, "itm_arena_armor_red", "itm_tourney_helm_red"),
(else_try),
(eq, ":mod", 3),
(call_script, "script_set_items_for_tournament", 40, 80, 50, 20, 40, 0, 0, 0, "itm_arena_armor_red", "itm_tourney_helm_red"),
(try_end),
(else_try),
(eq, ":town_original_faction", "fac_kingdom_2"),
#Vaegirs
(store_mod, ":mod", ":town_index_within_faction", 4),
(try_begin),
(eq, ":mod", 0),
(call_script, "script_set_items_for_tournament", 40, 80, 50, 20, 0, 0, 0, 0, "itm_arena_armor_red", "itm_steppe_helmet_red"),
(else_try),
(eq, ":mod", 1),
(call_script, "script_set_items_for_tournament", 100, 50, 0, 0, 0, 20, 30, 0, "itm_arena_armor_red", "itm_steppe_helmet_red"),
(else_try),
(eq, ":mod", 2),
(call_script, "script_set_items_for_tournament", 100, 0, 50, 0, 0, 20, 30, 0, "itm_arena_armor_red", "itm_steppe_helmet_red"),
(else_try),
(eq, ":mod", 3),
(call_script, "script_set_items_for_tournament", 40, 80, 50, 20, 30, 0, 60, 0, "itm_arena_armor_red", "itm_steppe_helmet_red"),
(try_end),
(else_try),
(eq, ":town_original_faction", "fac_kingdom_3"),
#Khergit
(store_mod, ":mod", ":town_index_within_faction", 2),
(try_begin),
(eq, ":mod", 0),
(call_script, "script_set_items_for_tournament", 100, 0, 0, 0, 0, 40, 60, 0, "itm_arena_tunic_red", "itm_steppe_helmet_red"),
(else_try),
(eq, ":mod", 1),
(call_script, "script_set_items_for_tournament", 100, 50, 25, 0, 0, 30, 50, 0, "itm_arena_tunic_red", "itm_steppe_helmet_red"),
(try_end),
(else_try),
(eq, ":town_original_faction", "fac_kingdom_4"),
#Nords
(store_mod, ":mod", ":town_index_within_faction", 3),
(try_begin),
(eq, ":mod", 0),
(call_script, "script_set_items_for_tournament", 0, 0, 50, 80, 0, 0, 0, 0, "itm_arena_armor_red", -1),
(else_try),
(eq, ":mod", 1),
(call_script, "script_set_items_for_tournament", 0, 0, 50, 80, 50, 0, 0, 0, "itm_arena_armor_red", -1),
(else_try),
(eq, ":mod", 2),
(call_script, "script_set_items_for_tournament", 40, 0, 0, 100, 0, 0, 0, 0, "itm_arena_armor_red", -1),
(try_end),
(else_try),
#Rhodoks
(eq, ":town_original_faction", "fac_kingdom_5"),
(call_script, "script_set_items_for_tournament", 25, 100, 60, 0, 30, 0, 30, 50, "itm_arena_tunic_red", "itm_arena_helmet_red"),
(else_try),
#Sarranids
(store_mod, ":mod", ":town_index_within_faction", 2),
(try_begin),
(eq, ":mod", 0),
(call_script, "script_set_items_for_tournament", 100, 40, 60, 0, 30, 30, 0, 0, "itm_arena_tunic_red", "itm_arena_turban_red"),
(else_try),
(call_script, "script_set_items_for_tournament", 50, 0, 60, 0, 30, 30, 0, 0, "itm_arena_tunic_red", "itm_arena_turban_red"),
(try_end),
(try_end),
(assign, ":head_type", "itm_cut_off_head_male"),
(agent_get_troop_id, ":victim_troop", ":victim_agent"),
(try_begin),
(ge, ":victim_troop", 0),
(troop_get_type,":victim_gender",":victim_troop"),
(eq, ":victim_gender", 1),
(assign, ":head_type", "itm_cut_off_head_female"),
(try_end),
(agent_get_troop_id, ":victim_troop", ":victim_agent"),
(troop_get_type,":victim_gender",":victim_troop"),
(try_begin),
(eq, ":victim_gender", 0), # 0 = tf_male
(assign, ":head_type", "itm_cut_off_head_male"),
(else_try),
(eq, ":victim_gender", 1), # 1 = tf_female
(assign, ":head_type", "itm_cut_off_head_female"),
(else_try),
(eq, ":victim_gender", 2), # 2 = tf_undead
(assign, ":head_type", "itm_cut_off_head_undead"), #голова нежити, должна быть прописана как предмет в module_items
(try_end),
ПРимечание: я полностью переписал тот фрагмент Народ подскажите пожалуйста, есть ли где нибудь в открытом доступе модулька на викинг конквест?Есть. Ее можно скачать с официального сайта TaleWorlds.
И можно ли соответственно в данную МС перенести бронь и оружие натива?Можно.
И насколько это сложно? В смысле можно просто перенести или надо текстуры и анимации как то подгонять?Достаточно просто. Ничего особо редактировать и подгонять не нужно.
1. В последних версиях варбанда есть возможность ставить метку guarantee_polearm. Делаю мод на ОиМ, там такой метки нет. Как я понимаю, это в движке прошито и через модульку не исправить?Да.
1. Можно ли использовать для компилляции версию Python 2.7.18 или всё-таки работает только указанная 2.7.10?Можно.
Однако, теперь при компилляции выводит море ошибок на каждый пункт. Указание адресов размещения папки с модулем в файле module_info перепроверял, пробовал даже переносить всё по классике в директорию C: - эффекта ноль. В чём может заключаться проблема?Ну так такие проблемы решают только с полным сообщением об ошибке.
Так что, боюсь, только на себя надеется стоит.Нашел ошибку, зарилась она в module_game_menus.ру, отсутствуют части кода и ошибки в иконках, с моими навыками хотя бы за неделю исправить)