-
1. Хочется создать новый шаблон для отряда "свободные войска" - т.е свободных гуляк, встречающихся на карте, которые ищут покровителя и готовы присоедниться к лорду.
2. Лорды для бандитов, награда за них
3. Создание новых лордов, которых можно нанять из меню лагеря в качестве короля, т.е вассалов для своей фракции (ибо переманиваение - это долгое и трудное занятие, а спутники - не устраивают)
Вопрос : Как осуществить? И с какими файлами из МС работать?
подскажите, пожалуйста.
-
1. Запросто... Делаем новый partty_pemplate по вкусу, фракцию ставим на neutral. Кидаем в триггеры спавн таких товарищей, например, раз в неделю. При спавне еще указываем параметр патрулирования и радиус 50 километров (это уже почти вся карта, наверное). Создаем парочку диалогов, например с проверкой известности и чести. Если последних много, то делаем диалог "о вы такой сильный и классный, можно к вам?", а там на "да" ставим (join_party)... Вот они и присоединились.
(уже работаю над этим :thumbup:)
2. Совсем не понял сути вопроса =/
3. Все лорды уже прописаны в troops... Тут надо какую-то фишку придумывать... Попробую что-то "замутить" :-\
Добавил:
Не придумал ничего лучше, чем просто дописать в troops десяток (а зачем больше?) "макетов" лордов. Партиям можно настраивать имена, так что 10-ю именами можно не ограничиваться. Да и партии практически все можно настроить. Нельзя только изнутри игры создать нового лорда (только пользоватся прописанными в troops).
В итоге можно получить лимит из 10 (или сколько хочешь) лордов, каждый из которых будет полностью рандомным при его наеме.
-
2. Совсем не понял сути вопроса =/
Я имею в виду претступники не бегают все шайками несчастных бомжей, а у них есть неписи-предводители, т.е герои..вот, и гильдмастер может дать квест за их поимку. Это фича организована в diplomacy+trade fiefs+improvements, но код выискивать не хочется
-
Swadian Knight (http://rusmnb.ru/index.php?action=profile;u=18262), ааа.. понял, понял.
Ну это не проблема... (Кстати в игре есть отличные имена для этих НПС, это те самые, на которых нам квест дают "такой-то дерзкий преступник в такой-то там деревне, поди убей его"...)
Просто надо прописать новых troops'ов, или даже одного, типа "Главарь бандитов", и всунуть его лидером партии в скрипт спавна бандитов.
Попробуй так сделать...
Квест это тоже не проблема. Можно скатать с квеста "захватить пленного лорда". Тогда всего пару слов можно будет поправить.
-
Вот сырая наброска свободных гуляк. Только я ее даже не компилировал, не знаю сколько там может оказаться ошибок =/ Сделал за 10 мин просто...
patry_template:
("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,
[(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)]),
dialogs:
[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", []],
Это отряд и нескольких рыцарей, который спавнится у дрезенбурга и гуляет по всей карте...
Но мне больше импонирует сделать отдельного очень сильного trops'a высокого уровня с названием "свободный гуляка" и повысить требования известности и/или чести.
Так что бы даже лордам не по плечу было их в отряд взять :laught:
Постараюсь сделать все 3 твоих просьбы в хорошем качестве... Наверное около 3-х дней надо будет...
-
Постараюсь сделать все 3 твоих просьбы в хорошем качестве... Наверное около 3-х дней надо будет...
огромное спасибо :) :thumbup:
Но мне больше импонирует сделать отдельного очень сильного trops'a высокого уровня с названием "свободный гуляка" и повысить требования известности и/или чести.
возможно так и лучше, а выгоднее все вместе:)
ну а насчет наброски гуляк, там с инициализации пошли ошибки.
http://www.mbrepository.com/file.php?id=2687 (http://www.mbrepository.com/file.php?id=2687) вот сурс код на мод с лорд-бандитами
-
Слабые места: (troop_slot_eq, "trp_player", slot_troop_return_renown, 600), и (eq, "$player_honor", 15),
это строгие равенства, шанс их выполнения очень мал, лучше сделать (ge, "$player_honor", 15), и т.п.
-
Dargor (http://rusmnb.ru/index.php?action=profile;u=1507), так и знал, что не стоить выкладывать листинг, написанный прямо в быстрый ответ... >:(
Я же говорил, настрочил для примера. :p
-
Swadian Knight (http://rusmnb.ru/index.php?action=profile;u=18262),
Итак план такой:
- Всего доступно 15 лордов. Они имеют характеристики, как у любого другого лорда.
- Обмундирование лорду дается вручную, т.к. 1) стандартное может не понравится, 2) не делать же всех лордов как клоны, 3) не делать же одного в вегирском, другого в сарранидском, третьего в кергитском... Просто все остальные лорды имеют фиксированное обмундирование. А в нашем случае лорды должны быть как бы рандомными... Но есть вариант влепить одну забавную броньку, которой нет в продаже ;)
- Лорды нанимаются в городе (вряд ли посреди поля лорд где-то возьмется).
- Что бы нанять надо много денег (я остановился на 2300 динаров).
- Лорды всунуты в рамки лордов с патями, что бы на них мог действовать ИИ. По этому не факт, что они, так же как любой лорд, не сбегут в другую фракцию... По крайней мере им, в принципе, ничего не мешает это сделать, они же такие "люди" (NPC) как другие лорды.
- Лорда можно уволить... если дать 1000 динар возмещения... А если не дать, то -1 к чести, т.к. лорд всем растрындит, как ты плохой :laught:
- Еще планирую сделать этих новых лордов более послушными (убрать для них доп. проверки всякой фигни в диалогах), все таки свои...
Ну как?
-
Swadian Knight ([url]http://rusmnb.ru/index.php?action=profile;u=18262[/url]),
Итак план такой:
- Всего доступно 15 лордов. Они имеют характеристики, как у любого другого лорда.
- Обмундирование лорду дается вручную, т.к. 1) стандартное может не понравится, 2) не делать же всех лордов как клоны, 3) не делать же одного в вегирском, другого в сарранидском, третьего в кергитском... Просто все остальные лорды имеют фиксированное обмундирование. А в нашем случае лорды должны быть как бы рандомными... Но есть вариант влепить одну забавную броньку, которой нет в продаже ;)
- Лорды нанимаются в городе (вряд ли посреди поля лорд где-то возьмется).
- Что бы нанять надо много денег (я остановился на 2300 динаров).
- Лорды всунуты в рамки лордов с патями, что бы на них мог действовать ИИ. По этому не факт, что они, так же как любой лорд, не сбегут в другую фракцию... По крайней мере им, в принципе, ничего не мешает это сделать, они же такие "люди" (NPC) как другие лорды.
- Лорда можно уволить... если дать 1000 динар возмещения... А если не дать, то -1 к чести, т.к. лорд всем растрындит, как ты плохой :laught:
- Еще планирую сделать этих новых лордов более послушными (убрать для них доп. проверки всякой фигни в диалогах), все таки свои...
Ну как?
отлично. но насчет национальности лорда вот что предлагаю:
-выбираем культуру свадов, родоков -нанимаются евролорды помажорнее)
-выбираем культуру вегиров, нордов, - нанимаются северные (т.е есть волосатые, с бородой, вообщем типичные "норды"
-выбираем культуру кергитов, соответственно азиаты
-культуру сарранидов, более загорелые
-ну а если не выбрана еще фрака, то рандом
да и бронька мож просто геральдическая быть, а может варьироваться от культуры
вот.. :)
_____________
кстати а можно лордам в игре историю добавить? т.е у вкладки персонажи у каждого непися есть своя страница,( я могу покреативить и придумать их прошлое, в том числе и к новым вместе с именами ) Туда можно засунуть текст?
-
Я их всех сделал "просто мужиками"... Без особых принадлежностей к культурам...
И что значит "выбираем"? Фракция игрока как бы своя собственная...
-
И что значит "выбираем"? Фракция игрока как бы своя собственная...
оу, я просто вспомнил что в дипломаси у канцлера можно культуру королевства выбрать
-
И на что это влияло?
-
И на что это влияло?
Это влияло на найм и рекрутинг войск в принадлежащих фракции деревнях и через рекрутировщика
-
Хм... Ну поставить другой наборчик войск в деревне на каждое значение переменной типа "slot_faction_culture" это не сложно...
А вот менять фейсы лордам - это уже сложно (или невозможно). На каждого лорда прописывается свой фейс (или рандом). Это надо будет 15 лордов 5 раз написать и только потом в соответствии с этим выбирать из этих 5-и групп.
Просто нормальной команды типа "set_troop_face" нету! Хотя и понятно почему. В игре она как-то не пригодилась... А для смены лица игрока отдельная идет, берущая код прямо с окна смены лица. А такого, чтобы пихать им какой-то заранее определенный диапазон, нет...
Да и зачем мелочится с их лицами. Главная функция - нанять полноценного лорда.
-
Ну напрягать только из-за их лиц не стоит, пусть лучше рандом будет, в любом случае в внутриигровом редакторе для отдельной игры им лица можно поменять)
-
Ну рандомное лицо выбирается так: берется 2 face_key и между ними мешается. В файле troops уже есть варианты этих лиц на каждую культуру и возраст, достаточно вписать переменную, например, "rhodok_face_old_1".
Так что с редактором можно не маяться. Для одной игры легче в troops всем лордам прописать свою национальность...
Я всем лордам поставил рандом "man_face_young_1"<->"man_face_young_2". Т.е. без особой национальности - просто молодые мужики...
Можно еще так: man_face_younger_1 и man_face_older_2. Тогда еще и возраст будет рандомным.
А еще круче - swadian_face_younger_1 + khergit_face_younger_1 :laught:
И еще: предложи характеристики, этих... свободных воинов... А то я что-то их сделал очень матерыми. Один вынес 15 бандитов в ближнем без коня... =/
-
а ты их героями сделал или какими то юнитами?
_________
ну из твикера парметры можно взять как нпример у свадийского копейщика-всадника
ну а стрелки если - то родокские арбы -снайперы.
вообщем что-то между ними среднее
-
Так ведь просто юниты. Периодически спавнятся на карте по 1-5 человек в отряде... Бегают, мочат бандитов... Ждут пока их игрок найдет...
А ты хотел, что бы они были героями?
Копейщика? Что так слабенько? Тогда в чем основной смысл введения этих свободно бегающий вояк?
Я хотел сделать их сильными, но что бы нанять можно было при большой чести (как ты и сказал, они ищут достойного покровителя).
Вообще они у меня ходят в латах, с военным луком и двуручником... Мощные ребятки. Кого не зарубят, то застрелят.
-
А ты хотел, что бы они были героями?
неа, нелюблю принимать в отряд npc :D
но у меня вопрос: ты задал каких то определнных юнитов, или вариация от бомжей до танков?
или они новые юниты вообще?
-
Вообще они у меня ходят в латах, с военным луком и двуручником... Мощные ребятки. Кого не зарубят, то застрелят.
ну так пусть так и будет)
а насчет 15 бандитов - они же бомжы несчастные) их легко вынести) (хотя не для ИИ :))
Нет, я просто думал что ты хочешь сделать отряды где например: спавн у форвиллы: арб-родок(3 шт.) и родок-мечник(2шт.), а не тяжелых мясильщиков :) и они не будут обьединены по типу и двуручник и стрелок)
-
Swadian Knight (http://rusmnb.ru/index.php?action=profile;u=18262), создал новых юнитов. Дал ровно на каждый слот по предмету.
В отряде они, как 33 богатыря :laught:. Все одинаковые, как на подбор и очень сильные... Но зато, в отличии от NPC они смертные, а что бы еще круче было, то могу поставить флаг "всегда падает замертво" (т.е. вместо оглушения сразу дохнет).
Ну это все-таки не финальная версия...
Можно сделать разные версии: всадники, пешие, лучники. И все такие крутые-крутые...
В итоге выйдет так: невероятно крутые воины с маленьким шансом каждые 24 появляются на карте в малом количестве. Нанять их можно только с высокой честь (и/или известностью), т.к. не за каждым они пойдут.
И к другим они не присоединяются...
-
Вообщем вот что предлагаю:
Всадник
Уровень: 26
Сила: 12
Ловкость: 9
Мозги: 6
Харизма: 6
кожи и мощный удар от 4-6
Пеший
Уровень: 24
Сила: 12
Ловкость: 12
Мозги: 5
Харизма: 4
кожи и мощный удар от 5-7 а винвентарь лучше вообще огромное копье:) чтобы насадили конницу на пики)
Стрелок
Уровень: 27
Сила: 9
Ловкость: 9
Мозги: 6
Харизма: 6
кожи и мощный удар от 4-6 в лук 200-220 владение, владение луком в навыках 4-5.
вроде не такие задроты:) но и не особо смертны
всех в геральдику, всадникам ведра, пешим и лучникам норманские шлемы и стражника 8-)
-
А может сделать их, как лорды по абилкам? Все равно выйдут, грубо говоря, одноразовые. А так хоть польза о них будет.
А то свад. рыцарь и то 28 лвл...
Кстати в игре уже уже есть свободные воины, гуляющие по карте... дезертиры называются :laught:...
-
слишком матерые будут: отряд "лордов" армия тьмы :D хотя лорды есть и 21 лвл.)
ну можно в принципе)
хотя я тогда забью на своих привычных свадо рыцев и буду бегать искать их по карте :thumbup:
Кстати в игре уже уже есть свободные воины, гуляющие по карте... дезертиры называются :laught:...
вот только они гоп-стопы делают :) кстати там как то в мс можно сделать чтобы они за плату в отряд вступили тоже, вместо того чтобы им откуп давать)
-
Swadian Knight (http://rusmnb.ru/index.php?action=profile;u=18262), не.. армии не будет... Раз в 24 часа шанс 5% на то, что всего 1-5 таких появятся. Некоторые не доживут до встречи со следующим таким отрядом...
Ну про дезертиров я написал потому, что мне показалось, что изначально ты хотел именно такие отряды, как дезертиры, но не вражеские, дружественные...
-
Swadian Knight ([url]http://rusmnb.ru/index.php?action=profile;u=18262[/url]), не.. армии не будет... Раз в 24 часа шанс 5% на
Ну про дезертиров я написал потому, что мне показалось, что изначально ты хотел именно такие отряды, как дезертиры, но не вражеские, дружественные...
так оно и есть:) вот только более умелые:)
Диалог вот кстати набросил: (если чести славы много конечно)
-"My lord, our last captain was a dishonest and cruel man. He was punishing us for nothing and was humbling for years. We became stronger and left him and now we're looking a man of fair, who is famous for his wins and the love of people. We think you are that one and ready to serve you as your soldiers.''
-''I have a deficiency in skilful men. You can join my party.''
-''with pleasure, sir''
а если ГГ еще неудачник и не прославился то
''Sorry, sir, but we don't want to die in a first battle. Make you name become famous and we will follow you, but now we won't.''
-
А еще идея, если ГГ очень известный, то эти отряды, якобы наслышавшись про него, начнут следовать за отрядом ГГ. (просто таргет на патю гг поставлю :D).
Вот бродишь по земле... а тут хоп какой-то отряд привязался к тебе и требует взять его к себе из-за того что ты такой крутой, ну а они тож не промах ребята....
-
А еще идея, если ГГ очень известный, то эти отряды, якобы наслышавшись про него, начнут следовать за отрядом ГГ. (просто таргет на патю гг поставлю :D).
Вот бродишь по земле... а тут хоп какой-то отряд привязался к тебе и требует взять его к себе из-за того что ты такой крутой, ну а они тож не промах ребята....
:D пока не примешь не отвяжутся аха) (у меня кстати какой то баг был, там приставучий лорд по карте(мирный) бегал за мной и доставал (у него скорость больше была) и высвечивался через 2 секунды авто диалог никак от него отвалить не мог :D)
а если серьезно - хорошая идея
-
Кстати на счет диалогов я тоже в таком духе думал. При первой встрече, если гг известный, то они говорят что-то типа:
"Офигеть! Это что, действительно вы? Вы самый известный человек Кальрадии, мы всю жизнь мечтали вас встретить! Мы очень умелые воины и хотели бы служить вам. " И сразу вариант принять в группу.
Ну а на честь диалог про "о вы такой справедливый и честный бла бла бла"... И тоже принять сразу можно.
А если не очень известный, то просто "чего изволите" и можно их нанять за определенную сумму.
А если совсем безызвестный, то они говорят что-то типа "нам некогда с бомжами возится", а гг говорит "но, эээ..." и после этого сразу диалог завершается :laught: :laught:
-
"нам некогда с бомжами возится", а гг говорит "но, эээ..."
жестоко :thumbup: :thumbup:
а если второй раз подойдешь, то еще и "ты че не понял? а ну давай все деньги и драгоценности?" - "но эээ.." :D :D
-
Arantir (http://rusmnb.ru/index.php?action=profile;u=15409), а как ты их назвал и плата какая?
и кстати может пропишешь возможность найма дезртиров за большие деньги? (сумма от навыка убеждения зависит)
-
Swadian Knight (http://rusmnb.ru/index.php?action=profile;u=18262), так и назвал "Free Revelers" дословно "Свободные гуляки" :laught:...
Про плату я не думал... Просто мелькнуло в мыслях, т.к. какой-то промежуточный вариант между "бомжем" и "о, это действительно вы?"...
Хотя лучше при норм. известности просто добавить обычный диалог, мол а кто вы, чем занимаетесь... а на вопрос "не хотите ко мне" они ответят "возможно вам стояло бы стать более важной персоной в кальрадии" или типа того, но нанять их будет нельзя.
-
Сейчас кое-что наброшу:
Вот:
1. - Я бы хотел узнать дорогу в {город/замок/деревня}
-Тогда Вам следует ехать на {север/юг/запад/восток}
2. - Расскажите мне о себе
-Мы свободные солдаты, закаленные на поле боя. Мы прошли через тысячи битв но наш прежний {командир/лорд} {погиб/плохо обращался с нами}. Теперь мы ищем защиту у достойного военоначальника и покровителя, который бы прославил себя на поле брани и заслужил любовь народа, чтобы служить ему до смерти.
Добавка(если безызвестный) - Вы не знаете такового?/ ...(ничего)
Добавка (если средняя известноть) - Вижу вы благородный господин, мы могли вступить к вам за небольшую плату. Скажем за {s} динаров
-К сожалению у меня нет таких денег/Вот вам деньги. Мы отправляемся./Я не нуждаюсь в наемниках, служба моих солдат закреплена клятвой
Добавка(если хорошо известен/или высокая честь) - Ваше имя нам знакомо! Оно внушает страх в сердца людей! Мы неоднократно слыхали о ваших подвигах. Мы готовы безвозмездно присоединиться к вашему отряду, господин, если вы не против?
-Конечно/Мне всегда не хватало умелых бойцов. Рад приянть вас к себе/К сожалению мой отряд сейчас полностью укомплектован/Я не нуждаюсь в ваших услугах.
Добавка(если бесчестен) -А мы вас знаем! Это вы грабите и сжигаете деревни, убивая невинных! Убийцы! Убирайтесь сейчас же или мы вас проучим!
(возможно: меню нападения даже) честь -1 если напасть
Ну как?
-
- Я бы хотел узнать дорогу в {город/замок/деревня}
-Тогда Вам следует ехать на {север/юг/запад/восток}
И как ты предлагаешь определять, в каком направлении город/замок/деревня?
Да и зачем такие эти излишества?
-
- Я бы хотел узнать дорогу в {город/замок/деревня}
-Тогда Вам следует ехать на {север/юг/запад/восток}
И как ты предлагаешь определять, в каком направлении город/замок/деревня?
Рандом, ибо карта перед глазами :D
-
Рандом, ибо карта перед глазами :D
Интересная мысль :laught:
-
Arantir (http://rusmnb.ru/index.php?action=profile;u=15409), ты читал в личке мой вопрос?
-
Dargor (http://rusmnb.ru/index.php?action=profile;u=1507), да что-то нет привычки смотреть на личку. Сейчас проситаю.
-
Последние изменения на форуме/сайте сделали её присутствие почти незаметной, я сам эту привычку почти утратил :)
-
Swadian Knight (http://rusmnb.ru/index.php?action=profile;u=18262), такс...
С Лордами дело обстоит так:
Добавить новых лордов не проблема, это что бы они при этом остались нормальными лордами. Но появляется другая проблема: похоже в сохраненной игре все troops'ы записаны числовыми ID... проблема заключается в том, что если добавить лордов в конец списка лордов, то они делаются... женщинами... теми женщинами, что шли зразу после конца списка лордов. Просто циферки сдвинулись... А добавить лордов в самый конец нельзя. Т.к. получится разрыв между lords_begin и lords_end. И тогда придется делать еще одни константы и ве-е-е-е-зде дописывать их...
Короче... Начинаешь новую игру и все работает на 100% =_=...
Еще уже склепал готовый блок операций, который корректно выбирает из тех 15 лордов первого, которого ты еще не нанимал. Хотя я подумываю сделать просто диалог с 15 вариантами (на каждого лорда). Так ты сможешь сам выбирать. кого именно хочешь нанять.
Ах да, сам диалог будет у этого... ну NPC в твоей столице. Тогда а) удобно, т.к. диалоги просты по структуре, б) логично, типа диалог "Нету ли дворян мне на службу?", и как раз у важного NPC, а не среди поля или не через меню города неведомо у кого, в) можно нанять только, когда ты король, что и требовалось.
-
Arantir (http://rusmnb.ru/index.php?action=profile;u=15409), ясно) игру конечно новую начну, я сейчас не играю, вставляю музыку и картинки в мод, а потом еще в труп эдиторе с одеждой юнитов всех работать буду наверн, но это после того как вся МС экспортируектся в папку, вот хочу фичей как раз таких засунуть в модульку, но я пока заленоват с ней. А когда все будет готово начну наконец-то играть :)
-
Swadian Knight (http://rusmnb.ru/index.php?action=profile;u=18262), если желаешь, можешь придумать имена лордам, а то у меня что-то не очень получается.
-
Arantir (http://rusmnb.ru/index.php?action=profile;u=15409), ок
Вот что набросал: (не все конечно подойдут южанам и азиатам, просто я любитель еврозападной культуры :D
1)Лорд Лотар
2)Лорд Эвен
3)Лорд Кронар
4)Лорд Алиен
5)Лорд Форден
6)Лорд Йотенз
7)Лорд Вестус
8)Лорд Торриан
9)Лорд Фридрих
10)Лорд Майлз
11)Лорд Ричард
12)Лорд Алеманд
13)Лорд Вульфден
14)Лорд Рейнфолк
15)Лорд Стейн
альтернативы:
1) Гринворд
2) Эстерн
3) Шелтон
4) Урмальд
5) Кронен
6) Вальдиус
7) Левенгальд
-
Arantir (http://rusmnb.ru/index.php?action=profile;u=15409), я конечно еще нуб в МС, но вот хочу сделать еще "восставших солдат" (тех, кто будет появляться у деревней и патрулировать их в особенно военное время, и так же может присоединиться к ГГ(но обычные фракционные солдаты))
вот с чего начал:
module_factions
("manhunters","Manhunters", 0, 0.5,[("outlaws",-0.6),("player_faction",0.1)], []),
("deserters","Deserters", 0, 0.5,[("manhunters",-0.6),("merchants",-0.5),("player_faction",-0.1)], [], 0x888888),
("mountain_bandits","Mountain Bandits", 0, 0.5,[("commoners",-0.2),("merchants",-0.5),("manhunters",-0.6),("player_faction",-0.15)], [], 0x888888),
("forest_bandits","Forest Bandits", 0, 0.5,[("commoners",-0.2),("merchants",-0.5),("manhunters",-0.6),("player_faction",-0.15)], [], 0x888888),
("rising soldiers","Rising soldiers", 0, 0.5,[("outlaws",-0.6),("deserters", -0.02),("player_faction",0.1)], [], 0x0000ff)
("undeads","{!}Undeads", max_player_rating(-30), 0.5,[("commoners",-0.7),("player_faction",-0.5)], []),
module_party_templates
("forest_bandits","Forest Bandits",icon_axeman|carries_goods(2),0,fac_forest_bandits,bandit_personality,[(trp_forest_bandit,4,52)]),
("mountain_bandits","Mountain Bandits",icon_axeman|carries_goods(2),0,fac_mountain_bandits,bandit_personality,[(trp_mountain_bandit,4,60)]),
("sea_raiders","Sea Raiders",icon_axeman|carries_goods(2),0,fac_outlaws,bandit_personality,[(trp_sea_raider,5,50)]),
("deserters","Deserters",icon_vaegir_knight|carries_goods(3),0,fac_deserters,bandit_personality,[]),
("rising soldiers","Rising soldiers",icon_vaegir_knight|carries_goods(3),0,fac_rising_soldiers,courage_25|aggressiveness_1[]),
module_dialogs
[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", "пометка, чтобы они ответили",[]],
[anyone, "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",[]]
_________Не доделал конечно, опыта не хватает..
что думаешь? правильно делаю?
-
вот с чего начал:
module_factions
А что за "левые" "player_faction"? Кстати не-королевские фракции помещай после kingdoms_end, что бы не выскочило "фракции больше не существует". Но это ты и так сделал правильно.
("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
Диалоги новые пиши выше вот этого,
######################################
# GENERIC PARTY ENCOUNTER
######################################
Иначе start'ы всегда будут переходить на битву... Просто ниже процитированного как раз диалоги битвы прописаны. А, как известно, все читается сверху вниз в диалогах. По этому более приоритетное обязательно должно быть выше.
"пометка, чтобы они ответили
Просто сделай так:
[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"?
ну так отношение с отрядом ГГ, или нет? просто у охотников за головами есть
а другой ответ как сделать, вот так? : [anyone,"rising_soldiers_answer", "We don't trust you, sir, sorry!", '"close_window",[]],
и как задать условие ответа?
-
А что за "левые" "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!.
Левый слеш - это только для переноса в самой модульной системе, на случай длинной строчки.
[anyone,"называние диалога", [условие показа данного диалога], "текст", "следующий диалог",[то, что выполнится после того, как сказан этот диалог]],
и как задать условие ответа?
Напиши несколько диалогов с одинаковым названием, но разным условием. пример:
[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)]],
[party_tpl|pt_free_revelers, "start", [(store_encountered_party,"$temp")], "Hello, traveler...", "free_rev_simple", [(assign, "$g_leave_encounter", 1)]],
Если честь 30+, выполнится первый диалог, он переводит на иной диалог и вторая строка никогда не выполняется. Если честь не 30+, то первая не выполнится, игра читает следующую строку...
-
Вот что получилось..ничего не упустил?: сначала начинают они, потом окно диалога: у игрока 2 варианта
1.продолжайте своий путь
2.присоединяйтесь
потом если известность 300 присоединятся, если нет - говорят нет и закрывается окно диалога
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)]],
насколько я понял осталось задать солдат для шаблона и указать место пребывания и частоту появления, тока вот где: триггеры?
-
Пропустил пару знаков препинания =)
[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)]],
Кстати (assign, "$g_leave_encounter", 1) можно и инициализировать всего один раз в самом начале всего диалога с данной группой и последующие "close_window" будут завершаться без меню битв, т.к. переменные сохраняются при логическом переходе от одного диалога к другому...
триггеры?
Если тебе надо, что бы что-то выполнялось много раз, то "simple_triggers", а "triggers" это немножко другя тема...
Триггеры просты:
(время, [ все что угодно, что делает триггер ]),
Например
(1,
[(display_message, "@ And one more hour was gone..." ]),
-
короче из ошибок понял что нужно что-то в триггерах, констатах, мэп иконе дописать в фэкшн и диалогах исправить :)
Итак:
module_faction
("rising_soldiers","Rising soldiers", 0, 0.5,[("outlaws",-0.6),("deserters", -0.02),("player_faction",0.1)], [], 0x0000ff),
module_party_template
("rising soldiers","Rising soldiers",icon_vaegir_knight|carries_goods(3),0,fac_rising_soldiers,courage_15|aggressiveness_5,[]),
а насчет диалогов пишет синтакс ошибку на последний линии файла 26450 хотя я ниче там не творил
-
Все-таки я еще кое чего нк доглядел. Эти должны верно работать:
[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)]],
Я же говорил, одна запятая и фиг поймешь, что она. Оно и на нулевую строку и на последнюю жалуется. Иногда из-за отсутствия в середине блока оно в ошибке выводит аж самый конец... Короче лучше не пропускать никаких знаков.
-
Все-таки я еще кое чего нк доглядел. Эти должны верно работать: [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
_____
и впрочем как я и ожидал на карте их нет, что-то еще нужно для их появления?
-
Если ругается, что "$player_reputation" не assigned, то на работу диалога это влиять не будет, только тебе на нервы при компиляции.
Изменения, касающиеся партий, видны только в новой игре. Начать новую не забыл?
А почему $player_reputation, а не $player_honor ?
-
Dargor (http://rusmnb.ru/index.php?action=profile;u=1507), нет, новую начал но нигде не видно их, (с тестом с читами ctrl+t тоже) так honor - это честь вроде, а reputation известность, мне известность нужна
-
Хорошая новость: лорды нормально работают.
Только из-за того, что они все-таки лорды, они всегда будут видимы в списке персонажей. Только у них будет написано "не при делах" (лордам без фракции само так пишет).
При найме просто лорду присваивается фракция... Через несколько игровых часов он появится в одном из городов/замков фракции игрока, еще через некоторое время наберем воинов и будет готов к бою.
В остальном они на 100% такие же лорды, как и другие.
"player_reputation"
Известность узнается вот так: (troop_get_slot, ":repa", "trp_player", slot_troop_return_renown),
а потом уже (ge,":repa", 300)
Честь попроще, можно сразу условием - (ge, "$player_honor", 50)
А все потому, что известность есть у всех лордов, а честь только у игрока...
-
Arantir (http://rusmnb.ru/index.php?action=profile;u=15409), отлично:)
(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, то диалог выполнится.
-
ну в компилинге теперь нет ошибок, но и на карте тоже никого нет, я им дал заметный синий цвет и иконку рыцаря, и че-то нет нигде, что не прописал то
-
Вижу, тема неплохо развивется и уже давненько переросла из "Пары вопросов". Тему закрепил и сменил название на "Модульная система. Вопросы и ответы". Удачи Свадийскому рыцарю в этом нелёгком деле (сам-то я модульку только поверхностно осилил - не моё это).
-
Swadian Knight (http://rusmnb.ru/index.php?action=profile;u=18262), прописал ты все то. Просто кое-чего не дописал.
Ты не написал ничего, что вообще должно создать эту партию...
Для теста добавь в game_menus (то что зеленое... серое для ориентира, как и всегда):
("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 (http://rusmnb.ru/index.php?action=profile;u=15409),
("rising_soldiers","Rising soldiers",icon_vaegir_knight|carries_goods(3),0,fac_rising_soldiers,soldier_personality,[(trp_swadian_man_at_arms,1,5)]), вот так переправил еще
-
Итак, вот что получилось:
качнул себе известность читами, отказывается присоединяться, и если не заводить с ним диалог то выпадает лишнее меню битвы с одной кнопкой уйти
[вложение удалено Администратором]
[вложение удалено Администратором]
[вложение удалено Администратором]
-
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,
[]),
Каждые 12 часов с вероятность 5% создается отряд этих повстанцев у случайно выранного центра (город/деревня/замок). Он будет этот центр патрулировать. Только вот радиус в 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", []],
[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)]],
Это вообще из моих диалогов :laught: Не забывай исправлять, если копируешь:
[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)]],
Теперь должны присоединятся и не должно выпадать битвы.
Не делай таких длинных речей для вариантов ответа. Не очень удобно. Можно разбить на 2 диалога. Сначла спросить "вы боретесь за справедливость", они "да", а ты "ну тогда давай к нам" :D
-
не успел свой диалог написать, переправить наконец-то самоу получилось :D
-
(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"),
]),
я быстро вникаю :D щяс добавим больше видов и кол-ва солдат:)
-
Swadian Knight (http://rusmnb.ru/index.php?action=profile;u=18262), а там забавное слово было, если прочитать :laught:
Я спать пойду, уже не могу держатся, клонит в сон.
Лордов еще не даю. Они у меня в режиме дебага в "творческом беспорядке" валяются... Боюсь, ты в данный не сможешь их довести до готовой версии, да и еще надо их сюда написать, что бы понятно было =/ а меня сейчас даже на это не хватит -_- Z Z Z Z Z Z
Встаю я рано, а там работы всего на часик. Завтра утром доделаю и представлю
-
Arantir (http://rusmnb.ru/index.php?action=profile;u=15409), ок, а я пока повстанцев протестю полностью)
-
Итак, если делать свадийский восставших солдат, то:
module_faction
("manhunters","Manhunters", 0, 0.5,[("outlaws",-0.6),("player_faction",0.1)], []),
("deserters","Deserters", 0, 0.5,[("manhunters",-0.6),("merchants",-0.5),("player_faction",-0.1)], [], 0x888888),
("mountain_bandits","Mountain Bandits", 0, 0.5,[("commoners",-0.2),("merchants",-0.5),("manhunters",-0.6),("player_faction",-0.15)], [], 0x888888),
("forest_bandits","Forest Bandits", 0, 0.5,[("commoners",-0.2),("merchants",-0.5),("manhunters",-0.6),("player_faction",-0.15)], [], 0x888888),
("rising_soldiers","Rising soldiers", 0, 0.5,[("outlaws",-0.6),("deserters", -0.02),("player_faction",0.1)], [], 0x0000ff),
("undeads","{!}Undeads", max_player_rating(-30), 0.5,[("commoners",-0.7),("player_faction",-0.5)], []),
module_party_templates
("sea_raiders","Sea Raiders",icon_axeman|carries_goods(2),0,fac_outlaws,bandit_personality,[(trp_sea_raider,5,50)]),
("deserters","Deserters",icon_vaegir_knight|carries_goods(3),0,fac_deserters,bandit_personality,[]),
("rising_soldiers","Rising soldiers",icon_vaegir_knight|carries_goods(3),0,fac_rising_soldiers,soldier_personality,[(trp_swadian_knight,1,2),(trp_swadian_crossbowman,2,5),(trp_swadian_man_at_arms,1,4),(trp_swadian_footman,1,5),(trp_swadian_militia,4,8)]),
module_dialogs
# rising soldiers +
[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", [(troop_slot_ge, "trp_player",slot_troop_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!.", "close_window",[(party_join)]],
[anyone,"rising_soldiers_answer", [], "We don't trust you, sir, sorry!", "close_window",[]],
# rising soldiers -
######################################
# GENERIC PARTY ENCOUNTER
######################################
фиолетовым правильно пометил условие извесности :) до этого не работал, все время отказывал. Ну и:
module_simple_triggers
(12,
[
(store_random_in_range,":random",0,100),
(lt, ":random", 10),
(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"),
Скомпилировал. Без ошибок.
Я думаю, что если убрать заданных солдат в темплейтс, то будут не только свады-восставшие но и другие. Но пока не пробовал.
_____________________
У меня еще есть идея насчет реальных повстанцев, которые будут все жечь и мародерствовать вокруг :D
-
фиолетовым правильно пометил условие извесности :) до этого не работал, все время отказывал. Ну и:
Верно, верно... Так проще. Но (troop_get_slot, ":player_renown", "trp_player", slot_troop_renown),(ge,":player_renown", 300) должно работать в любом случае. Не знаю, почему не работало...
Я думаю, что если убрать заданных солдат в темплейтс, то будут не только свады-восставшие но и другие.
Нет. Если забрать там всех солдат, то группа будет создаваться пустой (ноль солдат).
Что бы сделать повстанцев для каждой фракции, то надо будет в триггере использовать операцию party_add_members. Тогда просто делаем 6 вариантов солдат каждой фракции и в партию добавляем именно тех, у которы фракция сходиться с фракцией случайно выбранного центра.
Сейчас покажу пример...
Я пришел к выводу, что практичнее будет сделать 6 party_templаt'ов.....
У меня еще есть идея насчет реальных повстанцев, которые будут все жечь и мародерствовать вокруг :D
NPC?
-
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),
вообщем с 6 темплейтз правильно :), но пусть остаются синими, а мятежники будут красными, только лорд не знаю как прописать для них, и чтобы на деревни напалади, а еще лучше сжигали
-
Вот на каждую фракцию:
party_temlates
("rising_soldiers_swad","Rising soldiers",icon_vaegir_knight|carries_goods(3),0,fac_rising_soldiers,soldier_personality,[(trp_swadian_knight,1,2),(trp_swadian_crossbowman,2,5),(trp_swadian_man_at_arms,1,4),(trp_swadian_footman,1,5),(trp_swadian_militia,4,8)]),
("rising_soldiers_vegir","Rising soldiers",icon_vaegir_knight|carries_goods(3),0,fac_rising_soldiers,soldier_personality,[(trp_vaegir_knight,1,2),(trp_vaegir_archer,2,5),(trp_vaegir_veteran,1,4),(trp_vaegir_footman,1,5),(trp_vaegir_skirmisher,4,8)]),
("rising_soldiers_nord","Rising soldiers",icon_vaegir_knight|carries_goods(3),0,fac_rising_soldiers,soldier_personality,[(trp_nord_champion,1,2),(trp_nord_veteran_archer,2,5),(trp_nord_veteran,1,4),(trp_nord_footman,1,5),(trp_nord_trained_footman,4,8)]),
("rising_soldiers_sarr","Rising soldiers",icon_vaegir_knight|carries_goods(3),0,fac_rising_soldiers,soldier_personality,[(trp_sarranid_mamluke,1,2),(trp_sarranid_master_archer,2,5),(trp_sarranid_skirmisher,1,4),(trp_sarranid_footman,1,5),(trp_sarranid_infantry,4,8)]),
("rising_soldiers_kherg","Rising soldiers",icon_vaegir_knight|carries_goods(3),0,fac_rising_soldiers,soldier_personality,[(trp_khergit_lancer,1,2),(trp_khergit_veteran_horse_archer,2,5),(trp_khergit_skirmisher,1,4),(trp_khergit_tribesman,1,5),(trp_khergit_horseman,4,8)]),
("rising_soldiers_rodok","Rising soldiers",icon_vaegir_knight|carries_goods(3),0,fac_rising_soldiers,soldier_personality,[(trp_rhodok_sharpshooter,1,2),(trp_rhodok_trained_crossbowman,2,5),(trp_srhodok_sergeant,1,4),(trp_rhodok_spearman,1,5),(trp_rhodok_trained_spearman,4,8)]),
simple_triggers
(24,
[
(store_random_in_range,":random",0,100),
(lt, ":random", 10),
(store_random_in_range,":rand_center",centers_begin,centers_end),
(party_get_slot,":fac",":rand_center",slot_center_original_faction),
(try_begin),
(eq, ":fac", "fac_kingdom_1"),
(spawn_around_party, ":rand_center", "pt_rising_soldiers_swad"),
(else_try),
(eq, ":fac", "fac_kingdom_2"),
(spawn_around_party, ":rand_center", "pt_rising_soldiers_vaegir"),
(else_try),
(eq, ":fac", "fac_kingdom_3"),
(spawn_around_party, ":rand_center", "pt_rising_soldiers_kherg"),
(else_try),
(eq, ":fac", "fac_kingdom_4"),
(spawn_around_party, ":rand_center", "pt_rising_soldiers_nord"),
(else_try),
(eq, ":fac", "fac_kingdom_5"),
(spawn_around_party, ":rand_center", "pt_rising_soldiers_rodok"),
(else_try),
(eq, ":fac", "fac_kingdom_6"),
(spawn_around_party, ":rand_center", "pt_rising_soldiers_sarr"),
(try_end),
(party_set_ai_behavior, reg0, ai_bhvr_patrol_party),
(party_set_ai_object, reg0, ":rand_center"),
(party_get_slot, slot_center_ex_faction
]),
Только заметь, что все отталкивается от оригинальной фракции центра. Ну раз добровольцы в деревнях всегда из родной фракции деревни, то, думаю, повстанцы тоже...
-
Только заметь, что все отталкивается от оригинальной фракции центра. Ну раз добровольцы в деревнях всегда из родной фракции деревни, то, думаю, повстанцы тоже...
Соотвественно.
trp_srhodok_sergeant,1,4)
:thumbup:
че то после изменения на диалог стал ругаться :blink:
походу для каждой фракции придется делать новый диалог
-
trp_srhodok_sergeant,1,4)
:thumbup:
Просто вставлял поверх свадов и промахнулся :laught:
только лорд не знаю как прописать для них, и чтобы на деревни напалади, а еще лучше сжигали
Попробуй:
(party_set_slot, "партия NPC", slot_party_orders_type, spai_raiding_around_center),
(party_set_slot, "партия NPC", slot_party_orders_object, "деревня"),
По идее скрипт читает эти слоты и, если там spai_raiding_around_center, то он сделает так, что бы деревня грабилась. По настоящему это сложный процесс. Там сначала огонь ей ставится, потом иконка меняется, потом статус на "разграбленная" меняется, потом дымок ставится...
Но все это пара скриптов. Не стали бы разработчики прописывать такую гору операций на каждый раз... По этому мы можем воспользоваться готовыми возможностями.
-
# rising soldiers 1+
[party_tpl|pt_rising_soldiers_swad,"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", [], "I'm sorry, and will leave you now.", "close_window", []],
[anyone|plyr,"rising_soldiers_talk", [], "If you fight for the truth and the piece of this kingdom, so do I.", "rising_soldiers_answer", []],
[anyone,"rising_soldiers_answer", [], "Really, so what do you suppose?", "rising_soldiers_talk",[]],
[anyone|plyr,"rising_soldiers_talk", [], "Join my party and we will overthrough the dishonest lords and unite the country", "rising_soldiers_answer", []],
[anyone,"rising_soldiers_answer", [(troop_slot_ge, "trp_player",slot_troop_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!.", "close_window",[(party_join)]],
[anyone,"rising_soldiers_answer", [], "We don't trust you, sir, sorry!", "close_window",[]],
# rising soldiers 1-
вот так разделил диалог, чтобы умещалась фраза в button но надо скопировать еще 5)
(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"),]),
Не так...
Первое - ты поставил фракцию. А надо не фракцию, не party_template, а конкретную партию, именно ту, которая будет грабить. Но надо еще как-то узнать ее ID. Я над этим подумаю... Ты ведь не собираешься каждый раз им приказывать это? Сами же должны грабить.
И в переменных надо ставить двоеточие. В глобальных - доллар $. Глобальные будут доступны из любого файла в любое время. А локальные, например, ":rand_village" только внутри данного скрипта/триггера и т.п.
но надо скопировать еще 5)
Эт зачем?
-
("mutineers_swad","Mutineers",icon_peasant|carries_goods(2),0,fac_mutineers,bandit_personality,[(trp_swadian_militia,100,180),(trp_swadian_footman,40,85)]),
("mutineers_rodok","Mutineers",icon_peasant|carries_goods(2),0,fac_mutineers,bandit_personality,[(trp_rhodok_tribesman,100,180),(trp_rhodok_spearman,40,85)]),
("mutineers_nord","Mutineers",icon_peasant|carries_goods(2),0,fac_mutineers,bandit_personality,[(trp_nord_footman,100,180),(trp_nord_trained_footman,40,85)]),
("mutineers_sarr","Mutineers",icon_peasant|carries_goods(2),0,fac_mutineers,bandit_personality,[(trp_sarranid_footman,100,180),(trp_sarranid_footman,40,85)]),
("mutineers_kherg","Mutineers",icon_peasant|carries_goods(2),0,fac_mutineers,bandit_personality,[(trp_khergit_skirmisher,100,180),(trp_khergit_horseman,40,85)]),
("mutineers_vaegir","Mutineers",icon_peasant|carries_goods(2),0,fac_mutineers,bandit_personality,[(trp_vaegir_footman,100,180),(trp_vaegir_skirmisher,40,85)]),
Эт зачем?
потому что pt_rising_soldiers не дефайнд, а по отдельности типа pt_rising_soldiers_swad компилинг на ура
-
потому что pt_rising_soldiers не дефайнд, а по отдельности типа pt_rising_soldiers_swad компилинг на ура
Просто сделай так:
[anyone,"start", [(store_faction_of_party,":faction"),(eq, ":faction","fac_rising_soldiers")], "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)]],
И оставь один диалог...
Я это не тестировал, то по идее должно работать.
-
на диалог не жалуется, но пишет fac_mutineers не дефайнд, фигня какая-то
он только fac_mutineers в одной строчки ругался, я скопировал еще раз, перестал, странно..но хорошо
-
Swadian Knight (http://rusmnb.ru/index.php?action=profile;u=18262), в какие местах ты fac_mutineers использовал?
-
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 +
[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 +
[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 -
Каждый раз указывать party_pemplate не обязательно. Если на этот диалог ссылается только тот, что и так могут начать только pt_mutineers, то никто другой его точно не скажет.
party_tpl частей всего пригодится именно в начале диалога ("start") что бы начать правильный диалог, и его не начал никто другой. А дальше уже все-равно по цепочке идет...
Но в нашем случае мы поставили условие для всей фракции, по этому party_tpl не используется, но и диалог сможет начать только представитель данной фракции.
-
Arantir (http://rusmnb.ru/index.php?action=profile;u=15409), понятно)
короче я запустил через дебаг создал, они нападают только на ГГ, в остальное время патрулируют, а диалог обычный: сделал два скрина 1-ты нападаешь, 2 - они.
вообщем ничуть не лучше вражеского патруля
[вложение удалено Администратором]
[вложение удалено Администратором]
[вложение удалено Администратором]
-
Swadian Knight (http://rusmnb.ru/index.php?action=profile;u=18262), NPC не хватает. :)
-
Swadian Knight (http://rusmnb.ru/index.php?action=profile;u=18262), чего это за fac_mutineers ? где-нибудь кроме как в (eq, ":faction","fac_mutineers") она у тебя прописана?
-
Dargor (http://rusmnb.ru/index.php?action=profile;u=1507), в парти теплейтз http://rusmnb.ru/index.php?topic=11317.msg421545#msg421545 (http://rusmnb.ru/index.php?topic=11317.msg421545#msg421545)
ну это же новая фракция..я создал в фэкшн
Arantir (http://rusmnb.ru/index.php?action=profile;u=15409),
кстати как там лорды? :)
-
Swadian Knight (http://rusmnb.ru/index.php?action=profile;u=18262), сейчас исправлю один жуткий баг и все будет ок :thumbup:
-
Arantir (http://rusmnb.ru/index.php?action=profile;u=15409), вообщем не хотят мятежники нападать на других, может без триггера не заработает?
-
Swadian Knight (http://rusmnb.ru/index.php?action=profile;u=18262), вместо bandit_personality поставь courage_15|aggressiveness_15
-
Arantir (http://rusmnb.ru/index.php?action=profile;u=15409), короче не в этом было дело, я прописал отношения королевств к ним, и тогда все заработало :thumbup: :thumbup:
теперь надо как-то npc к ним приписать и триггеры, это я не знаю
-
Swadian Knight (http://rusmnb.ru/index.php?action=profile;u=18262), а, ты имел ввиду еще королевства. Просто у тебя и так прописано много отношений, а ты говоришь "не хотят мятежники нападать на других". Я думал вообще не нападают, вот и посоветовал агрессивней их сделать.
теперь надо как-то npc к ним приписать и триггеры, это я не знаю
Ща че-нить забацаем :thumbup:
-
Arantir (http://rusmnb.ru/index.php?action=profile;u=15409), ну дык они вообще не напдали а вот что я дописал:
("kingdom_1", "Kingdom of Swadia", 0, 0.9, [("outlaws",-0.05),("mutineers",-0.9)...
как думаешь, может их тыщу сделать, чтобы хорошенько помяситься, они не такие уж силачи по виду войск :D
-
Swadian Knight (http://rusmnb.ru/index.php?action=profile;u=18262), не практично делать много изменений в готовых частях игры. Стремись делать так, что бы можно было проще всего потом удалить изменения.
Например:
("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 - то жуткий дисбаланс и не очень логично...
100 - это уже огого сколько, как на повстанцев.
-
В M&B все сделано пропорционально. 250 человек - огромная армия. Если сделать 1000 - то жуткий дисбаланс и не очень логично...
100 - это уже огого сколько, как на повстанцев.
нет, ну для меня легко их просто отметелить сотней рыцарей-свадов (хотя я даже играю на высоком уровне), правда тактику 8-10 надо, а так как вторжение получится (реальное восстание) будут все сметать, пока все силы королевства не обьединятся (а их вместе от 800 до 2500).
Ну ладно, оставлю, как есть. :)
-
Swadian Knight (http://rusmnb.ru/index.php?action=profile;u=18262), тогда глупо сунуть всех в 1 отряд. Понятно же, что все повстанцы Кальрадии не соберутся вместе... Ну максимум 4 отряда по 250 человек сделать... И то они как короли уже! Не могут повстанцы быть такими сплоченными... Лучше уж сделай 20 отрядов по 50 человек.
Но это тоже муторно выходит. Каждый день без конца и края восстания... Один винегрет на карте будет.
Сначала быт идеальный вариант - с маленьким шансом где-то маленькое восстание... Что бы сделать нормальное восстание, надо интеллект (например игрока). А создавать новые алгоритмы ИИ для этого - тяжело и долго.
-
Arantir (http://rusmnb.ru/index.php?action=profile;u=15409), и как же это сделать?
-
Swadian Knight (http://rusmnb.ru/index.php?action=profile;u=18262), что именно?
-
Arantir (http://rusmnb.ru/index.php?action=profile;u=15409),
4 отряда по 250 человек сделать или 20 отрядов по 50 человек.
-
Swadian Knight (http://rusmnb.ru/index.php?action=profile;u=18262), сделать в партии 50 чел. и запустить триггер 20 раз. На карте в разных местах появится 20 отрядов по 50 человек.
Но тогда придется делать это редко. И какой будет в этом смысл? Они точь в точь как бандиты будут. Бандиты тоже по 50-60 чел бывают и ходят на всех нападают.
Так что, что бы в осталась целостность идеи, лучше оставить, как есть.
-
Arantir (http://rusmnb.ru/index.php?action=profile;u=15409), последую твоему совету :) хочу лордов потестить)
-
Swadian Knight (http://rusmnb.ru/index.php?action=profile;u=18262), Все. Доделал. Сейчас буду писать в этот пост листинг...
Важно соблюдать правильное место! Абы куда не вписывай.
troops
["knight_6_19", "Emir Dhashwal", "Dhashwal", tf_hero, 0, reserved, fac_kingdom_6, [itm_warhorse_sarranid, itm_sarranid_mail_shirt, itm_sarranid_boots_c, itm_sarranid_boots_c, itm_sarranid_mail_coif, itm_lamellar_gauntlets, itm_fighting_pick, itm_sword_two_handed_a, itm_tab_shield_small_round_c], knight_attrib_4,wp(210),knight_skills_4|knows_trainer_5, 0x000000018a08618016ac36bc8b6e4a9900000000001dd45d0000000000000000, rhodok_face_older_2],
["knight_6_20", "Emir Biliya", "Biliya", tf_hero, 0, reserved, fac_kingdom_6, [itm_warhorse_sarranid, itm_sarranid_cavalry_robe, itm_sarranid_boots_c, itm_sarranid_boots_c, itm_sarranid_veiled_helmet, itm_lance, itm_sarranid_cavalry_sword, itm_tab_shield_small_round_c], knight_attrib_5,wp(240),knight_skills_5|knows_trainer_6, 0x00000001bd0040c0281a899ac956b94b00000000001ec8910000000000000000, rhodok_face_older_2],
# custom lords +
["knight_0_1", "Lord Lotar", "Lord Lotar", tf_hero|tf_randomize_face|tf_unmoveable_in_party_window|tf_guarantee_all, no_scene, reserved, fac_neutral, [itm_great_helmet,itm_tab_shield_heater_d,itm_bastard_sword_b,itm_warhorse,itm_coat_of_plates,itm_coat_of_plates_red,itm_iron_greaves,itm_scale_gauntlets,itm_nobleman_outfit,itm_nomad_boots], knight_attrib_5, wp(300), knight_skills_5, man_face_middle_1, man_face_middle_2 ],
["knight_0_2", "Lord Even", "Lord Even", tf_hero|tf_randomize_face|tf_unmoveable_in_party_window|tf_guarantee_all, no_scene, reserved, fac_neutral, [itm_great_helmet,itm_tab_shield_heater_d,itm_bastard_sword_b,itm_warhorse,itm_coat_of_plates,itm_coat_of_plates_red,itm_iron_greaves,itm_scale_gauntlets,itm_nobleman_outfit,itm_nomad_boots], knight_attrib_5, wp(300), knight_skills_5, man_face_middle_1, man_face_middle_2 ],
["knight_0_3", "Lord Khronar", "Lord Khronar", tf_hero|tf_randomize_face|tf_unmoveable_in_party_window|tf_guarantee_all, no_scene, reserved, fac_neutral, [itm_great_helmet,itm_tab_shield_heater_d,itm_bastard_sword_b,itm_warhorse,itm_coat_of_plates,itm_coat_of_plates_red,itm_iron_greaves,itm_scale_gauntlets,itm_nobleman_outfit,itm_nomad_boots], knight_attrib_5, wp(300), knight_skills_5, man_face_middle_1, man_face_middle_2 ],
["knight_0_4", "Lord Aleen", "Lord Aleen", tf_hero|tf_randomize_face|tf_unmoveable_in_party_window|tf_guarantee_all, no_scene, reserved, fac_neutral, [itm_great_helmet,itm_tab_shield_heater_d,itm_bastard_sword_b,itm_warhorse,itm_coat_of_plates,itm_coat_of_plates_red,itm_iron_greaves,itm_scale_gauntlets,itm_nobleman_outfit,itm_nomad_boots], knight_attrib_5, wp(300), knight_skills_5, man_face_middle_1, man_face_middle_2 ],
["knight_0_5", "Lord Forden", "Lord Forden", tf_hero|tf_randomize_face|tf_unmoveable_in_party_window|tf_guarantee_all, no_scene, reserved, fac_neutral, [itm_great_helmet,itm_tab_shield_heater_d,itm_bastard_sword_b,itm_warhorse,itm_coat_of_plates,itm_coat_of_plates_red,itm_iron_greaves,itm_scale_gauntlets,itm_nobleman_outfit,itm_nomad_boots], knight_attrib_5, wp(300), knight_skills_5, man_face_middle_1, man_face_middle_2 ],
["knight_0_6", "Lord Vestus", "Lord Vestus", tf_hero|tf_randomize_face|tf_unmoveable_in_party_window|tf_guarantee_all, no_scene, reserved, fac_neutral, [itm_great_helmet,itm_tab_shield_heater_d,itm_bastard_sword_b,itm_warhorse,itm_coat_of_plates,itm_coat_of_plates_red,itm_iron_greaves,itm_scale_gauntlets,itm_nobleman_outfit,itm_nomad_boots], knight_attrib_5, wp(300), knight_skills_5, man_face_middle_1, man_face_middle_2 ],
["knight_0_7", "Lord Torrian", "Lord Torrian", tf_hero|tf_randomize_face|tf_unmoveable_in_party_window|tf_guarantee_all, no_scene, reserved, fac_neutral, [itm_great_helmet,itm_tab_shield_heater_d,itm_bastard_sword_b,itm_warhorse,itm_coat_of_plates,itm_coat_of_plates_red,itm_iron_greaves,itm_scale_gauntlets,itm_nobleman_outfit,itm_nomad_boots], knight_attrib_5, wp(300), knight_skills_5, man_face_middle_1, man_face_middle_2 ],
["knight_0_8", "Lord Richard", "Lord Richard", tf_hero|tf_randomize_face|tf_unmoveable_in_party_window|tf_guarantee_all, no_scene, reserved, fac_neutral, [itm_great_helmet,itm_tab_shield_heater_d,itm_bastard_sword_b,itm_warhorse,itm_coat_of_plates,itm_coat_of_plates_red,itm_iron_greaves,itm_scale_gauntlets,itm_nobleman_outfit,itm_nomad_boots], knight_attrib_5, wp(300), knight_skills_5, man_face_middle_1, man_face_middle_2 ],
["knight_0_9", "Lord Miles", "Lord Miles", tf_hero|tf_randomize_face|tf_unmoveable_in_party_window|tf_guarantee_all, no_scene, reserved, fac_neutral, [itm_great_helmet,itm_tab_shield_heater_d,itm_bastard_sword_b,itm_warhorse,itm_coat_of_plates,itm_coat_of_plates_red,itm_iron_greaves,itm_scale_gauntlets,itm_nobleman_outfit,itm_nomad_boots], knight_attrib_5, wp(300), knight_skills_5, man_face_middle_1, man_face_middle_2 ],
["knight_0_10", "Lord Alemand", "Lord Alemand", tf_hero|tf_randomize_face|tf_unmoveable_in_party_window|tf_guarantee_all, no_scene, reserved, fac_neutral, [itm_great_helmet,itm_tab_shield_heater_d,itm_bastard_sword_b,itm_warhorse,itm_coat_of_plates,itm_coat_of_plates_red,itm_iron_greaves,itm_scale_gauntlets,itm_nobleman_outfit,itm_nomad_boots], knight_attrib_5, wp(300), knight_skills_5, man_face_middle_1, man_face_middle_2 ],
["knight_0_11", "Lord Wolfdan", "Lord Wolfdan", tf_hero|tf_randomize_face|tf_unmoveable_in_party_window|tf_guarantee_all, no_scene, reserved, fac_neutral, [itm_great_helmet,itm_tab_shield_heater_d,itm_bastard_sword_b,itm_warhorse,itm_coat_of_plates,itm_coat_of_plates_red,itm_iron_greaves,itm_scale_gauntlets,itm_nobleman_outfit,itm_nomad_boots], knight_attrib_5, wp(300), knight_skills_5, man_face_middle_1, man_face_middle_2 ],
["knight_0_12", "Lord Rainfolk", "Lord Rainfolk", tf_hero|tf_randomize_face|tf_unmoveable_in_party_window|tf_guarantee_all, no_scene, reserved, fac_neutral, [itm_great_helmet,itm_tab_shield_heater_d,itm_bastard_sword_b,itm_warhorse,itm_coat_of_plates,itm_coat_of_plates_red,itm_iron_greaves,itm_scale_gauntlets,itm_nobleman_outfit,itm_nomad_boots], knight_attrib_5, wp(300), knight_skills_5, man_face_middle_1, man_face_middle_2 ],
["knight_0_13", "Lord Stein", "Lord Stein", tf_hero|tf_randomize_face|tf_unmoveable_in_party_window|tf_guarantee_all, no_scene, reserved, fac_neutral, [itm_great_helmet,itm_tab_shield_heater_d,itm_bastard_sword_b,itm_warhorse,itm_coat_of_plates,itm_coat_of_plates_red,itm_iron_greaves,itm_scale_gauntlets,itm_nobleman_outfit,itm_nomad_boots], knight_attrib_5, wp(300), knight_skills_5, man_face_middle_1, man_face_middle_2 ],
["knight_0_14", "Lord Estern", "Lord Estern", tf_hero|tf_randomize_face|tf_unmoveable_in_party_window|tf_guarantee_all, no_scene, reserved, fac_neutral, [itm_great_helmet,itm_tab_shield_heater_d,itm_bastard_sword_b,itm_warhorse,itm_coat_of_plates,itm_coat_of_plates_red,itm_iron_greaves,itm_scale_gauntlets,itm_nobleman_outfit,itm_nomad_boots], knight_attrib_5, wp(300), knight_skills_5, man_face_middle_1, man_face_middle_2 ],
["knight_0_15", "Lord Levengald", "Lord Levengald", tf_hero|tf_randomize_face|tf_unmoveable_in_party_window|tf_guarantee_all, no_scene, reserved, fac_neutral, [itm_great_helmet,itm_tab_shield_heater_d,itm_bastard_sword_b,itm_warhorse,itm_coat_of_plates,itm_coat_of_plates_red,itm_iron_greaves,itm_scale_gauntlets,itm_nobleman_outfit,itm_nomad_boots], knight_attrib_5, wp(300), knight_skills_5, man_face_middle_1, man_face_middle_2 ],
["knight_0_end","knight_0_end","knight_0_end",tf_hero, 0,0, fac_neutral,[],def_attrib|level(1),wp(20),0],
# custom lords -
["kingdom_1_pretender", "Lady Isolla of Suno", "Isolla", tf_hero|tf_female|tf_unmoveable_in_party_window, 0,reserved, fac_kingdom_1,[itm_charger, itm_rich_outfit, itm_blue_hose, itm_iron_greaves, itm_mail_shirt, itm_sword_medieval_c_small, itm_tab_shield_small_round_c, itm_bascinet], lord_attrib,wp(220),knight_skills_5, 0x00000000ef00000237dc71b90c31631200000000001e371b0000000000000000],
#claims pre-salic descent
["kingdom_2_pretender", "Prince Valdym the Bastard", "Valdym", tf_hero|tf_unmoveable_in_party_window, 0,reserved, fac_kingdom_2,[itm_hunter, itm_courtly_outfit, itm_leather_boots, itm_mail_chausses, itm_lamellar_armor, itm_military_pick, itm_tab_shield_heater_b, itm_flat_topped_helmet], lord_attrib,wp(220),knight_skills_5, 0x00000000200412142452ed631b30365c00000000001c94e80000000000000000, vaegir_face_middle_2],
#had his patrimony falsified
constants
active_npcs_begin = "trp_npc1"
active_npcs_end = kingdom_ladies_begin
# custom lords +
custom_lords_begin = "trp_knight_0_1"
custom_lords_end = "trp_knight_0_end"
# custom lords -
#"active_npcs_begin replaces kingdom_heroes_begin to allow for companions to become lords. Includes anyo [...]
dialogs (нужное место можно найти по диалогу, выделенному синим):
(faction_slot_eq, "$players_kingdom", slot_faction_political_issue, ":fief_found"),
(faction_set_slot, "$players_kingdom", slot_faction_political_issue, -1),
(try_end),
(str_store_party_name, s4, ":fief_found"),
]],
# custom lords +
[anyone|plyr, "minister_talk",[],"About my Lords...", "minister_lord_pre",[]],
[anyone, "minister_lord_pre",[],"Yes..?", "minister_lord_pre",[]],
[anyone|plyr, "minister_lord_pre",[],"I want to employ a new lord.", "minister_custom_lord",[(assign, reg49, 0),(assign, reg50, 2300),]],
[anyone|plyr, "minister_lord_pre", [], "I want to dismiss Lord.", "minister_custom_lord",[(assign, reg49, 1),(assign, reg50, 1000)]],
[anyone|plyr, "minister_lord_pre",[],"Never mind.", "minister_pretalk",[]],
[anyone, "minister_custom_lord", [], "Whom do you wish to {reg49?employ:dismiss}?", "minister_lord_detail",[]],
[anyone|plyr|repeat_for_troops, "minister_lord_detail",
[(store_repeat_object, ":lord"),
(assign, ":continue", 0),
(is_between, ":lord", custom_lords_begin, custom_lords_end),
(store_troop_faction, ":fac", ":lord"),
(try_begin),
(eq, reg49, 0),
(eq, ":fac", "fac_neutral"),
(str_store_troop_name, s4, ":lord"),
(assign, ":continue", 1),
(else_try),
(eq, reg49, 1),
(eq, ":fac", "fac_player_supporters_faction"),
(neq, ":lord", "trp_player"),
(str_store_troop_name, s4, ":lord"),
(assign, ":continue", 1),
(try_end),
(eq, ":continue", 1),
], "{s4}", "minister_employ_pay",
[(store_repeat_object, "$temp")]],
[anyone|plyr, "minister_lord_detail",[], "Nobody...", "minister_pretalk",[]],
[anyone, "minister_employ_pay",[],"It will be cost {reg50} denars.", "minister_employ_pay",[]],
[anyone|plyr, "minister_employ_pay",[(store_troop_gold, ":cur_gold", "trp_player"),(ge, ":cur_gold", reg50)],"All right. Here is {reg50} denars.", "minister_employ_done",[(troop_remove_gold, "trp_player", reg50)]],
[anyone|plyr, "minister_employ_pay",[(store_troop_gold, ":cur_gold", "trp_player"),(lt, ":cur_gold", reg50)],"Sorry, I don't have enough money.", "minister_pretalk",[]],
[anyone|plyr, "minister_employ_pay",[],"Never mind...", "minister_pretalk",[]],
[anyone, "minister_employ_done",[],"I'll tell it to your new lord rigt now...", "minister_talk",[
(try_begin),
(eq, reg49, 0),
(troop_set_faction, "$temp", "fac_player_supporters_faction"),
(else_try),
(eq, reg49, 1),
(troop_get_slot, ":del_party","$temp", slot_troop_leaded_party),
(party_clear, ":del_party"),
(party_add_members,":del_party", "$temp", 1),
(call_script, "script_lord_get_home_center", "trp_player"),
(troop_set_faction, "$temp", "fac_neutral"),
(try_end)]],
# custom lords -
[anyone|plyr, "minister_talk",
[],
"That is all for now.", "close_window",
[]],
dilalogs (это, чтобы свои лорды были послушные):
(party_set_slot, "$g_talk_troop_party", slot_party_orders_object, 0),
(party_set_slot, "$g_talk_troop_party", slot_party_orders_time, 0),
]],
#More complicated order
# custom lord +
[anyone,"lord_give_order_answer",
[(is_between, "$g_talk_troop", "trp_knight_0_1", "trp_knight_0_15"), # | custom lords
(eq, reg0, "$temp"),
(eq, reg1, "$temp_2"),],
"All right. I will do that.{s12}", "lord_pretalk",
[(call_script, "script_party_set_ai_state", "$g_talk_troop_party", "$temp", "$temp_2"),
(str_clear, s12),
(try_begin),
(neg|faction_slot_eq, "$g_talk_troop_faction", slot_faction_marshall, "trp_player"),
(neg|faction_slot_eq, "$g_talk_troop_faction", slot_faction_leader, "trp_player"),
(str_store_string, s12, "str_but_if_this_goes_badly"),
(try_end),
(assign, "$g_leave_encounter", 1),]],
# custom lord -
[anyone,"lord_give_order_answer",
[
(call_script, "script_npc_decision_checklist_party_ai", "$g_talk_troop"),
(eq, reg0, "$temp"),
(eq, reg1, "$temp_2"),
- Нанимаются у Министра в столице. Нанять - 2300 динар, уволить - 1000 динар.
- При найме надо подождать, пока лорд прибудет в столицу.
- При увольнении у лорда отбирается все войско и он лишается фракции. Через некоторое время он, грубо говоря, "рассосется" (или к бандитам угодит или еще чего...), но его потом можно будет нанять снова.
Одна проблема - флагов на новых лордов нету в игре, так что флаги будут дублироваться...
Свободные гуляки тоже уже на подходе. Но сейчас не выложу (еду всей семьей собирать грибы). Но возможно вечерком будут.
-
Одна проблема - флагов на новых лордов нету в игре, так что флаги будут дублироваться...
:( плохо, а если сделать еще одну старницу баннеров? banner_h.dds ?
-
:( плохо, а если сделать еще одну старницу баннеров? banner_h.dds ?
Еще надо игру научить их использовать. Думаю, я смогу это сделать. А ты как раз можешь сделать "banner_h.dds" для этой цели :)
-
:( плохо, а если сделать еще одну старницу баннеров? banner_h.dds ?
Еще надо игру научить их использовать. Думаю, я смогу это сделать. А ты как раз можешь сделать "banner_h.dds" для этой цели :)
Этим и займусь :)
Вот баги:
-сразу в начале игры ухудшаются отношения с тремя лордами до -20
-у лордов откуда-то появилась родня из эмиров, нойонов и т.д
-и пишет что покинул королевство, если не нанять
-knight_troop_end в списке "персонажи" лысарь там какой-то :D
я ксати подождал с утра до ночи, но лорд че-то и непоявился
-
Вот баги:
-сразу в начале игры ухудшаются отношения с тремя лордами до -20
-у лордов откуда-то появилась родня из эмиров, нойонов и т.д
-и пишет что покинул королевство, если не нанять
-knight_troop_end в списке "персонажи" лысарь там какой-то :D
1. не всегда такое делается, но иногда бывает и не знаю из-за чего именно...
2. родня настраивается в начале игры всем лордам. Кроме того, почему, по твоему, они не имеют права иметь родных?
3. потому-то они без королевства...
4. упс... надо пофиксить, что бы его не было в списке лордов.
-
2. родня настраивается в начале игры всем лордам. Кроме того, почему, по твоему, они не имеют права иметь родных?
имеют, НО: они абсолютно не похожи, эмир и европеец, тогда уж надо самому настроить
-
вот набросал, но в игре страницу не хочет отображать >:(
http://ifolder.ru/24697272 (http://ifolder.ru/24697272) >:( >:( >:(
-
вот набросал, но в игре страницу не хочет отображать >:(
[url]http://ifolder.ru/24697272[/url] ([url]http://ifolder.ru/24697272[/url]) >:( >:( >:(
M&B никогда ничего не делает сам. NPC сами в таверне появятся, новые парти сами не заспавнятся, новый баннеры сами не станут доступны...
Надо в presentations на презентации этих самых баннеров подправить конечную страницу с banner_g на banner_h... Ну или как-то так. Я пока что туда не заглядывал, просто прикинул...
имеют, НО: они абсолютно не похожи, эмир и европеец, тогда уж надо самому настроить
Там и остальные не особо похожи... :p
А почему баннеры в "негативе" сделаны?
-
Arantir (http://rusmnb.ru/index.php?action=profile;u=15409), сам не понимаю, я в paint.net пределал а когда сохранил в dds через фотошоп открывается негативом, но через paint.net нормально. в любом случае это пока пробный вариант, ибо там кривовато. :)
-
Swadian Knight (http://rusmnb.ru/index.php?action=profile;u=18262), ну мне совсем не составит труда "нормализовать" картинку, так что можешь давать и такие "негативные".
Во всяком случае в данный момент для тестирование мне что угодно пригодится, лишь бы было размечено, как баннеры.
На счет лордов:
- Можно вырезать из скрипта именно этих лордов, что бы им не раздавались родственники. Мне больше нравится, что бы эти "наемнички" не имели всяких лишней связей. Да и вообще были такими себе "роботами", просто исполняющими приказы...
- Так же вырежу их из скрипта, пишущего сообщение о королевстве (см. последнее предложение строкой выше :laught:).
- Убрать knight_troop_end не составит труда. Просто надо конец "активных NPC" передвинуть на 1 troop'а выше в константах.
- На счет изменения отношений еще не выяснил.
-
- Можно вырезать из скрипта именно этих лордов, что бы им не раздавались родственники. Мне больше нравится, что бы эти "наемнички" не имели всяких лишней связей. Да и вообще были такими себе "роботами", просто исполняющими приказы...
- Так же вырежу их из скрипта, пишущего сообщение о королевстве (см. последнее предложение строкой выше :laught:).
- Убрать knight_troop_end не составит труда. Просто надо конец "активных NPC" передвинуть на 1 troop'а выше в константах.
- На счет изменения отношений еще не выяснил.
тогда будет супер
:thumbup:
но вот знать бы как нормально создать banner_h.dds если спина (цвет баннера на спине) остается с 1 слоя флагов, и приходится заклеивать. тогда бы я получше все сделал и подбор получше выбрал бы :)
-
Swadian Knight (http://rusmnb.ru/index.php?action=profile;u=18262), нет, нет... Цвет совсем не от первого слоя. Цвет спины прописывается отдельно в скрипте "initialize_banner_info". Вот это все:
#Setting background colors for banners
(troop_set_slot, "trp_banner_background_color_array", 0, 0xFF8f4531),
(troop_set_slot, "trp_banner_background_color_array", 1, 0xFFd9d7d1),
(troop_set_slot, "trp_banner_background_color_array", 2, 0xFF373736),
(troop_set_slot, "trp_banner_background_color_array", 3, 0xFFa48b28),
(troop_set_slot, "trp_banner_background_color_array", 4, 0xFF497735),
(troop_set_slot, "trp_banner_background_color_array", 5, 0xFF82362d),
(troop_set_slot, "trp_banner_background_color_array", 6, 0xFF793329),
(troop_set_slot, "trp_banner_background_color_array", 7, 0xFF262521),
(troop_set_slot, "trp_banner_background_color_array", 8, 0xFFd9dad1),
(troop_set_slot, "trp_banner_background_color_array", 9, 0xFF524563),
(troop_set_slot, "trp_banner_background_color_array", 10, 0xFF91312c),
(troop_set_slot, "trp_banner_background_color_array", 11, 0xFFafa231),
(troop_set_slot, "trp_banner_background_color_array", 12, 0xFF706d3c),
(troop_set_slot, "trp_banner_background_color_array", 13, 0xFFd6d3ce),
(troop_set_slot, "trp_banner_background_color_array", 14, 0xFF521c08),
(troop_set_slot, "trp_banner_background_color_array", 15, 0xFF394584),
(troop_set_slot, "trp_banner_background_color_array", 16, 0xFF42662e),
(troop_set_slot, "trp_banner_background_color_array", 17, 0xFFdfded6),
(troop_set_slot, "trp_banner_background_color_array", 18, 0xFF292724),
(troop_set_slot, "trp_banner_background_color_array", 19, 0xFF58611b),
(troop_set_slot, "trp_banner_background_color_array", 20, 0xFF313a67),
(troop_set_slot, "trp_banner_background_color_array", 21, 0xFF9c924a),
(troop_set_slot, "trp_banner_background_color_array", 22, 0xFF998b39),
(troop_set_slot, "trp_banner_background_color_array", 23, 0xFF365168),
(troop_set_slot, "trp_banner_background_color_array", 24, 0xFFd6d3ce),
(troop_set_slot, "trp_banner_background_color_array", 25, 0xFF94a642),
(troop_set_slot, "trp_banner_background_color_array", 26, 0xFF944131),
(troop_set_slot, "trp_banner_background_color_array", 27, 0xFF893b34),
(troop_set_slot, "trp_banner_background_color_array", 28, 0xFF425510),
(troop_set_slot, "trp_banner_background_color_array", 29, 0xFF94452e),
(troop_set_slot, "trp_banner_background_color_array", 30, 0xFF475a94),
(troop_set_slot, "trp_banner_background_color_array", 31, 0xFFd1b231),
(troop_set_slot, "trp_banner_background_color_array", 32, 0xFFe1e2df),
(troop_set_slot, "trp_banner_background_color_array", 33, 0xFF997c1e),
(troop_set_slot, "trp_banner_background_color_array", 34, 0xFFc6b74d),
(troop_set_slot, "trp_banner_background_color_array", 35, 0xFFad9a18),
(troop_set_slot, "trp_banner_background_color_array", 36, 0xFF212421),
(troop_set_slot, "trp_banner_background_color_array", 37, 0xFF8c2021),
(troop_set_slot, "trp_banner_background_color_array", 38, 0xFF4d7136),
(troop_set_slot, "trp_banner_background_color_array", 39, 0xFF395d84),
(troop_set_slot, "trp_banner_background_color_array", 40, 0xFF527539),
(troop_set_slot, "trp_banner_background_color_array", 41, 0xFF9c3c39),
(troop_set_slot, "trp_banner_background_color_array", 42, 0xFF42518c),
(troop_set_slot, "trp_banner_background_color_array", 43, 0xFFa46a2c),
(troop_set_slot, "trp_banner_background_color_array", 44, 0xFF9f5141),
(troop_set_slot, "trp_banner_background_color_array", 45, 0xFF2c6189),
(troop_set_slot, "trp_banner_background_color_array", 46, 0xFF556421),
(troop_set_slot, "trp_banner_background_color_array", 47, 0xFF9d621e),
(troop_set_slot, "trp_banner_background_color_array", 48, 0xFFdeded6),
(troop_set_slot, "trp_banner_background_color_array", 49, 0xFF6e4891),
(troop_set_slot, "trp_banner_background_color_array", 50, 0xFF865a29),
(troop_set_slot, "trp_banner_background_color_array", 51, 0xFFdedfd9),
(troop_set_slot, "trp_banner_background_color_array", 52, 0xFF524273),
(troop_set_slot, "trp_banner_background_color_array", 53, 0xFF8c3821),
(troop_set_slot, "trp_banner_background_color_array", 54, 0xFFd1cec6),
(troop_set_slot, "trp_banner_background_color_array", 55, 0xFF313031),
(troop_set_slot, "trp_banner_background_color_array", 56, 0xFF47620d),
(troop_set_slot, "trp_banner_background_color_array", 57, 0xFF6b4139),
(troop_set_slot, "trp_banner_background_color_array", 58, 0xFFd6d7d6),
(troop_set_slot, "trp_banner_background_color_array", 59, 0xFF2e2f2c),
(troop_set_slot, "trp_banner_background_color_array", 60, 0xFF604283),
(troop_set_slot, "trp_banner_background_color_array", 61, 0xFF395584),
(troop_set_slot, "trp_banner_background_color_array", 62, 0xFF313031),
(troop_set_slot, "trp_banner_background_color_array", 63, 0xFF7e3f2e),
(troop_set_slot, "trp_banner_background_color_array", 64, 0xFF343434),
(troop_set_slot, "trp_banner_background_color_array", 65, 0xFF3c496b),
(troop_set_slot, "trp_banner_background_color_array", 66, 0xFFd9d8d1),
(troop_set_slot, "trp_banner_background_color_array", 67, 0xFF99823c),
(troop_set_slot, "trp_banner_background_color_array", 68, 0xFF9f822e),
(troop_set_slot, "trp_banner_background_color_array", 69, 0xFF393839),
(troop_set_slot, "trp_banner_background_color_array", 70, 0xFFa54931),
(troop_set_slot, "trp_banner_background_color_array", 71, 0xFFdfdcd6),
(troop_set_slot, "trp_banner_background_color_array", 72, 0xFF9f4a36),
(troop_set_slot, "trp_banner_background_color_array", 73, 0xFF8c7521),
(troop_set_slot, "trp_banner_background_color_array", 74, 0xFF9f4631),
(troop_set_slot, "trp_banner_background_color_array", 75, 0xFF793324),
(troop_set_slot, "trp_banner_background_color_array", 76, 0xFF395076),
(troop_set_slot, "trp_banner_background_color_array", 77, 0xFF2c2b2c),
(troop_set_slot, "trp_banner_background_color_array", 78, 0xFF657121),
(troop_set_slot, "trp_banner_background_color_array", 79, 0xFF7e3121),
(troop_set_slot, "trp_banner_background_color_array", 80, 0xFF76512e),
(troop_set_slot, "trp_banner_background_color_array", 81, 0xFFe7e3de),
(troop_set_slot, "trp_banner_background_color_array", 82, 0xFF947921),
(troop_set_slot, "trp_banner_background_color_array", 83, 0xFF4d7b7c),
(troop_set_slot, "trp_banner_background_color_array", 84, 0xFF343331),
(troop_set_slot, "trp_banner_background_color_array", 85, 0xFFa74d36),
(troop_set_slot, "trp_banner_background_color_array", 86, 0xFFe7e3de),
(troop_set_slot, "trp_banner_background_color_array", 87, 0xFFd6d8ce),
(troop_set_slot, "trp_banner_background_color_array", 88, 0xFF3e4d67),
(troop_set_slot, "trp_banner_background_color_array", 89, 0xFF9f842e),
(troop_set_slot, "trp_banner_background_color_array", 90, 0xFF4d6994),
(troop_set_slot, "trp_banner_background_color_array", 91, 0xFF4a6118),
(troop_set_slot, "trp_banner_background_color_array", 92, 0xFF943c29),
(troop_set_slot, "trp_banner_background_color_array", 93, 0xFF394479),
(troop_set_slot, "trp_banner_background_color_array", 94, 0xFF343331),
(troop_set_slot, "trp_banner_background_color_array", 95, 0xFF3f4d5d),
(troop_set_slot, "trp_banner_background_color_array", 96, 0xFF4a6489),
(troop_set_slot, "trp_banner_background_color_array", 97, 0xFF313031),
(troop_set_slot, "trp_banner_background_color_array", 98, 0xFFd6d7ce),
(troop_set_slot, "trp_banner_background_color_array", 99, 0xFFc69e00),
(troop_set_slot, "trp_banner_background_color_array", 100, 0xFF638e52),
(troop_set_slot, "trp_banner_background_color_array", 101, 0xFFdcdbd3),
(troop_set_slot, "trp_banner_background_color_array", 102, 0xFFdbdcd3),
(troop_set_slot, "trp_banner_background_color_array", 103, 0xFF843831),
(troop_set_slot, "trp_banner_background_color_array", 104, 0xFFcecfc6),
(troop_set_slot, "trp_banner_background_color_array", 105, 0xFFc39d31),
(troop_set_slot, "trp_banner_background_color_array", 106, 0xFFcbb670),
(troop_set_slot, "trp_banner_background_color_array", 107, 0xFF394a18),
(troop_set_slot, "trp_banner_background_color_array", 108, 0xFF372708),
(troop_set_slot, "trp_banner_background_color_array", 109, 0xFF9a6810),
(troop_set_slot, "trp_banner_background_color_array", 110, 0xFFb27910),
(troop_set_slot, "trp_banner_background_color_array", 111, 0xFF8c8621),
(troop_set_slot, "trp_banner_background_color_array", 112, 0xFF975a03),
(troop_set_slot, "trp_banner_background_color_array", 113, 0xFF2c2924),
(troop_set_slot, "trp_banner_background_color_array", 114, 0xFFaa962c),
(troop_set_slot, "trp_banner_background_color_array", 115, 0xFFa2822e),
(troop_set_slot, "trp_banner_background_color_array", 116, 0xFF7b8a8c),
(troop_set_slot, "trp_banner_background_color_array", 117, 0xFF3c0908),
(troop_set_slot, "trp_banner_background_color_array", 118, 0xFFFF00FF),
(troop_set_slot, "trp_banner_background_color_array", 119, 0xFF671e14),
(troop_set_slot, "trp_banner_background_color_array", 120, 0xFF103042),
(troop_set_slot, "trp_banner_background_color_array", 121, 0xFF4a4500),
(troop_set_slot, "trp_banner_background_color_array", 122, 0xFF703324),
(troop_set_slot, "trp_banner_background_color_array", 123, 0xFF24293c),
(troop_set_slot, "trp_banner_background_color_array", 124, 0xFF5d6966),
(troop_set_slot, "trp_banner_background_color_array", 125, 0xFFbd9631),
(troop_set_slot, "trp_banner_background_color_array", 126, 0xFFc6b26b),
(troop_set_slot, "trp_banner_background_color_array", 127, 0xFF394918),
#Default banners
(troop_set_slot, "trp_banner_background_color_array", 128, 0xFF212221),
(troop_set_slot, "trp_banner_background_color_array", 129, 0xFF212221),
(troop_set_slot, "trp_banner_background_color_array", 130, 0xFF2E3B10),
(troop_set_slot, "trp_banner_background_color_array", 131, 0xFF425D7B),
(troop_set_slot, "trp_banner_background_color_array", 132, 0xFF394608),
]),
Меня-я-яй как только душе угодно... И надо не забывать добавить новые баннеры сюда.
-
Arantir (http://rusmnb.ru/index.php?action=profile;u=15409), :laught:
-
Swadian Knight (http://rusmnb.ru/index.php?action=profile;u=18262), Такс... убирай с troops этого лысенького knight_0_end, а в constants сделай такое изменение:
# custom lords +
custom_lords_begin = "trp_knight_0_1"
custom_lords_end = pretenders_begin
# custom lords -
Все-таки так практичнее и без лишней мороки.
Остальное буду выяснять завтра.
-
Swadian Knight (http://rusmnb.ru/index.php?action=profile;u=18262), можешь точно процитировать сообщение "пишет, что покинул королевство"? Я что-то играл, играл и не встретил такого сообщения на счет новых лордов...
-
ну вот..
[вложение удалено Администратором]
[вложение удалено Администратором]
[вложение удалено Администратором]
-
Swadian Knight (http://rusmnb.ru/index.php?action=profile;u=18262), Блин, так вот о чем ты! Ну да, у меня тоже это пишет. Оно пишет автоматически всем лордам, не состоящим в королевствах.
Ну сделаю, что бы этим лордам писало "Не при делах" :D.
Допиши в scripts:
(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),
В strings:
("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}"),
-
Arantir (http://rusmnb.ru/index.php?action=profile;u=15409), насчет баннеров, вот там 127 номеров в скрипте (не будем считать дефолт), как узнать номер каждого, где посмотреть флаг и его номер, чтобы правильно менять
-
Swadian Knight (http://rusmnb.ru/index.php?action=profile;u=18262), они все идут по порядку.
Считай по файлам *.dds. Счет идет, как будто читаешь, т.е. слева-направо, начиная с верхней строки.
Ну и по алфавиту a b c d e f. Default в конце.
-
Arantir (http://rusmnb.ru/index.php?action=profile;u=15409), ясно, спасибо
-
Arantir (http://rusmnb.ru/index.php?action=profile;u=15409), я сделал конечную версию banner_h.dds без негатива и выравненную, но не знаю где прописать ее в МС, чтобы показывало. в presentation, как ты предполагал - я не нашел ничего с названием banner_x (x = от a до g), следовательно и не понятно, что менять, чтобы она появилась наконец в игре. может посмотришь?
-
Swadian Knight (http://rusmnb.ru/index.php?action=profile;u=18262), посмотрел...
Сделай в constants следующие изменения:
# Banner constants
banner_meshes_begin = "mesh_banner_a01"
banner_meshes_end_minus_one = "mesh_banner_g21"
arms_meshes_begin = "mesh_arms_a01"
arms_meshes_end_minus_one = "mesh_arms_g21"
custom_banner_charges_begin = "mesh_custom_banner_charge_01"
custom_banner_charges_end = "mesh_tableau_mesh_custom_banner"
custom_banner_backgrounds_begin = "mesh_custom_banner_bg"
custom_banner_backgrounds_end = custom_banner_charges_begin
custom_banner_flag_types_begin = "mesh_custom_banner_01"
custom_banner_flag_types_end = custom_banner_backgrounds_begin
custom_banner_flag_map_types_begin = "mesh_custom_map_banner_01"
custom_banner_flag_map_types_end = custom_banner_flag_types_begin
custom_banner_flag_scene_props_begin = "spr_custom_banner_01"
custom_banner_flag_scene_props_end = "spr_banner_a"
custom_banner_map_icons_begin = "icon_custom_banner_01"
custom_banner_map_icons_end = "icon_banner_01"
banner_map_icons_begin = "icon_banner_01"
banner_map_icons_end_minus_one = "icon_banner_136"
banner_scene_props_begin = "spr_banner_a"
banner_scene_props_end_minus_one = "spr_banner_g21"
khergit_banners_begin_offset = 63
khergit_banners_end_offset = 84
sarranid_banners_begin_offset = 105
sarranid_banners_end_offset = 125
banners_end_offset = 136
По идее новые баннеры не только в меню выбора появятся, но и их будут выбирать новые лорды.
Так. Стоп. Это еще не все...
-
Swadian Knight ([url]http://rusmnb.ru/index.php?action=profile;u=18262[/url]), посмотрел...
Сделай в constants следующие изменения:
# Banner constants
banner_meshes_begin = "mesh_banner_a01"
banner_meshes_end_minus_one = "mesh_banner_g21"
arms_meshes_begin = "mesh_arms_a01"
arms_meshes_end_minus_one = "mesh_arms_g21"
custom_banner_charges_begin = "mesh_custom_banner_charge_01"
custom_banner_charges_end = "mesh_tableau_mesh_custom_banner"
custom_banner_backgrounds_begin = "mesh_custom_banner_bg"
custom_banner_backgrounds_end = custom_banner_charges_begin
custom_banner_flag_types_begin = "mesh_custom_banner_01"
custom_banner_flag_types_end = custom_banner_backgrounds_begin
custom_banner_flag_map_types_begin = "mesh_custom_map_banner_01"
custom_banner_flag_map_types_end = custom_banner_flag_types_begin
custom_banner_flag_scene_props_begin = "spr_custom_banner_01"
custom_banner_flag_scene_props_end = "spr_banner_a"
custom_banner_map_icons_begin = "icon_custom_banner_01"
custom_banner_map_icons_end = "icon_banner_01"
banner_map_icons_begin = "icon_banner_01"
banner_map_icons_end_minus_one = "icon_banner_136"
banner_scene_props_begin = "spr_banner_a"
banner_scene_props_end_minus_one = "spr_banner_g21"
khergit_banners_begin_offset = 63
khergit_banners_end_offset = 84
sarranid_banners_begin_offset = 105
sarranid_banners_end_offset = 125
banners_end_offset = 136
По идее новые баннеры не только в меню выбора появятся, но и их будут выбирать новые лорды.
illegal identifier: spr_banner_g21
-
illegal identifier
Да я уже догадался... Константы же на меши сделаны!
-
Так... И вообще по идее на h надо было менять :laught:...
Пока что поменяй все назад на f
да это легко, а дальше? :)
-
Так... И вообще по идее на h надо было менять :laught:...
Пока что поменяй все назад на f
да это легко, а дальше? :)
Сейчас все корректно сделаю и напишу от А до Я.
Это оказалось сложнее, чем кажется... Но я уже близок к завершению...
Должен тебе сказать, что твои баннеры не являлись текстурой... Редактор текстур их не отображал. Я пересохранил и все стало ок. Так что советую подыскать редактор, более подходящий для *.dds
-
Должен тебе сказать, что твои баннеры не являлись текстурой... Редактор текстур их не отображал. Я пересохранил и все стало ок. Так что советую подыскать редактор, более подходящий для *.dds
каким ты воспользовался, чтобы передалть их в текстуру. я использую фотошоп cs2 + paint.net
-
Swadian Knight (http://rusmnb.ru/index.php?action=profile;u=18262), а я фотошоп + dds плагин...
-
Arantir (http://rusmnb.ru/index.php?action=profile;u=15409), ну дык у меня тож dds плагин
-
Swadian Knight (http://rusmnb.ru/index.php?action=profile;u=18262), dds плаин для фотошопа? Зачем тебе тогда paint.net? Фотошоп с плагином отлично и качественно справляется.
У тебя есть редактор brf? Должен быть, раз ты с текстурами имел дело (о чем ты упоминал). Так вот он тебе пригодится для баннеров.
-
Arantir (http://rusmnb.ru/index.php?action=profile;u=15409), openbrf конечно есть, насчет пэинта - я пересохраняю из фотошопа dds в png переделываю там баннеры а потом сохраняю обратно в dds и открываю в фотике
-
Swadian Knight (http://rusmnb.ru/index.php?action=profile;u=18262), наверное по этому BRFEditor ее не может открыть нормально... Лучше сразу фотошопом делай, так, по моему, даже проще...
-
Arantir (http://rusmnb.ru/index.php?action=profile;u=15409), ну а как дела с МС?
-
Ребят, у меня к вам небольшое предложение, пора бы уже давно обменяться скайпами/аськами/мылом и там обсуждать все вопросы. Просто тема уже в какой-то чат превращается, без обид :)
-
Scarecrow (http://rusmnb.ru/index.php?action=profile;u=18102), злой дядя модератор :cry:
Swadian Knight (http://rusmnb.ru/index.php?action=profile;u=18262), ну давай в ЛС, а то и вправду как чат.
Зато теперь полезных скриптов никто не узнает :p
-
Scarecrow (http://rusmnb.ru/index.php?action=profile;u=18102), ладно :(, зато поддержали популярность темы в скрепке :D
-
Господа, возможно кто нибудь в курсе как можно узнать перед началом боя количество бойцов своей и вражеской партии, которые появятся на сцене непосредственно в начале боя (например из меню начала боя, там где строчка "вступить в бой", "послать в бой бойцов, а самому пойти покурить" и так далее)? Нужно окончательное количество уже с учетом всяких скилов тактики , размера битвы и подобных моментов, отдельно для своей партии и отдельно для партии врагов, именно сколько ботов будет заспаунено сразу, без учетов реинфорса и прочей фигни.
Возможно есть какой то нейтивный скрипт, который возвращает эти значения? =/
-
Эмм, примитивный вопрос - как добавить строку "поговорить с гильдмастером" когда заходишь в город? Мне интересно, это нужно обязательно через модульку делать или можно с помощью какой-нибудь уже разработанной программки?
Edit: Нашел.
-
Здравствуйте
1.Установлена Windows 7 максимальная.
2.Скачан и установлен питон версии 2.7.2
3.Питон добавлен как windows path enviroment variable
4.Скачана модульная система 1.143
5.Файл module_info выглядит следующим образом
# Point export_dir to the folder you will be keeping your module
# Make sure you use forward slashes (/) and NOT backward slashes (\)
export_dir = "D:/Modik/MountBladeWarband/Modules/Mod/"
6.При запуске build_module выдаёт следующее: (http://s003.radikal.ru/i202/1108/1f/189ff8e52a42.jpg)
Читал на форумах, что возможно из-за атрибута "только для чтения", но его снятие никак не помогло.
Может кто нибудь знает ответ?
-
Либо не правильно выполнен пункт 3 из твоего списка, либо ты не перезагрузил свой комп после того как выполнил пункт 3.
-
Перепроверил, перезагружал, всё равно тоже самое.
Надо переустановить питон или поставить другую версию?
-
Перепроверил, перезагружал, всё равно тоже самое.
Надо переустановить питон или поставить другую версию?
Переустанови Питон, и попробуй версию 2.6
-
скрипт на лучников для мисси
("siege_move_archers_to_archer_positions_defender",
[
(try_for_agents, ":agent_no"),
(agent_is_alive, ":agent_no"),
(agent_slot_eq, ":agent_no", slot_agent_is_not_reinforcement, 0),
(agent_is_defender, ":agent_no"),
(agent_get_class, ":agent_class", ":agent_no"),
(agent_get_troop_id, ":agent_troop", ":agent_no"),
(eq, ":agent_class", grc_archers),
(try_begin),
(agent_slot_eq, ":agent_no", slot_agent_target_entry_point, 0),
(store_random_in_range, ":random_entry_point", 40, 44),
(agent_set_slot, ":agent_no", slot_agent_target_entry_point, ":random_entry_point"),
(try_end),
(try_begin),
(agent_get_position, pos0, ":agent_no"),
(entry_point_get_position, pos1, ":random_entry_point"),
(get_distance_between_positions, ":dist", pos0, pos1),
(lt, ":dist", 300),
подскажите, красные числа в зеленой строке диапазон?
-
Естественно
-
Dargor, спасибо.
-
(store_random_in_range, ":random_entry_point", 40, 44),
последнее число (т.е. 44) вроде не учитывается, будет выбрано случайное число от 40 до 43, 44 никогда не будет выбрано
чтобы 44 попадало нужно (store_random_in_range, ":random_entry_point", 40, 45),
кажись так, уже не помню =/
-
shturmfogel, спасибо за инфрмацию.
-
shturmfogel (http://rusmnb.ru/index.php?action=profile;u=6634), именно так, верно помнишь (http://oorfin.net/buttons/cool.gif)
-
Переустанови Питон, и попробуй версию 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" далее по аналогии с "Recruit volunteer"
(
"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_destroy при неполном разрушении объекта?
-
Легионер (http://rusmnb.ru/index.php?action=profile;u=17320), судьбу как бы не обманешь :) Есть триггер:
ti_on_scene_prop_hit
он запускается когда по сцен пропсу бьют. С помощью него можно отловить момент когда у сцен пропса останется определенное количество хит поинтов. В принципе есть и другие способы это сделать, но этот имхо наиболее подходящий, если я конечно правильно что ты хочешь =/
-
Leon473, спасибо.теперь понял. :D его можно использовать вместо ti_on_scene_prop_destroy.
-
Я так понял эта фишка может например заставить корабль начать тонуть при повреждениях, вместо того чтобы стать неосязаемым при полной поломке?
-
NightHawkreal (http://rusmnb.ru/index.php?action=profile;u=6), в общем то да.
-
Leon473, сделал таким образом
(store_trigger_param_1, ":instance_no"),
(store_trigger_param_2, ":damage"),
(try_begin),
(scene_prop_get_hit_points, ":hit_points", ":instance_no"),
(val_sub, ":hit_points", ":damage"),
(ge, ":hit_points", 100),
......
в игру выдает ошибку тригера и движение объекта сразу после первого удара.
что не так, подскажи
Покажи весь код, в этой части все правильно, ошибка либо в другой части кода, либо чем то другом. И по возможности напиши текст самой ошибки. Леон
-
ни у кого нет ответа на мой пост?
-
Ошибок при компиляции не выдаёт, но когда пытаюсь нанять кого нибудь в городе, то когда первый раз на кнопку нажимаю ни у кого желания присоединится нет, перехожу опять в меню города, и написано что готовы присоединится -1 и нет никакой кнопки. Приходится закрывать игру. Где нахалтурил?
Нуль первый раз, потому что, видимо, ты нигде в slot_center_volunteer_troop_amount и slot_center_volunteer_troop_type ничего не прописал. Для деревень эти переменный обновляются через триггеры и скрипты.
-1 второй раз и остальная байда, потому что в меню continue ты таки прописал в slot_center_volunteer_troop_amount значение -1, чем сам самому себе перекрыл весь кислород.
-
подскажите пжл. как правильно в скриптах добавить на сцену нападения в городе нового перса?
-
Всем привет, подскажите как сделать чтобы при щелчке по иконке Шариза появлялось не меню а авто переход в город. :)
-
Щелчке каком правом, левом?
Автопереход - это что?
-
Ну я имел в виду когда по иконке города пощёлкаешь появляется меню. Пойти в таверну, прогуляться по городу, пойти на арену и т.д. А я хочу сделать так чтобы этого меню не было а был переход сразу в город.
-
Здравствуйте, почитав ваш портал, я ознакомился с модульной системой, и решил её "потестить" и сделать своего npc-компаньона.
Проблем с troops не обнаружилось.
В scripts я просто скопировал сопартийца и изменил имя\характеристики, и это тоже (наверное) сработало.
Но при попытке добавить свои диалоги меня ждала неудача. Меняем фразы в strings. НПС здоровается со мной ка надо и на этом всё. ГГ отвечает какими-то левыми фразами и последующие фразы NPC тоже не его.
Ещё раз нпс вспоминает верную фразу когда просит деньги. ответ гг снова не тот и всё.
-
Giltoniel - самое простое решение(на мой скромный взгляд)-заменить самого занудного на ваш выбор перса и заменить ему диалоги согласно придуманной вами истории.Если этот вариант вас не устраивает - то пропишите своего героя в конец списка трупсов и вынесите его диалоги отдельно от других нпс-ов,а пока у вас элементарно путается очерёдность проигрывания диалогов ,поскольку новый нпс нарушил своим появлением данную очерёдность.Не вы первый,кто наступил на эти грабли :)Желаю удачи.
-
Спасибо. Попробую и так, и так.
-
Ну я имел в виду когда по иконке города пощёлкаешь появляется меню. Пойти в таверну, прогуляться по городу, пойти на арену и т.д. А я хочу сделать так чтобы этого меню не было а был переход сразу в город.
Есть скрипт game_event_party_encounter
Он выполняется, когда гг сталкивается носом с другой партией или городом.
Там он решает какое меню вызвать.
В частности, для города, сначала идёт в mnu_castle_outside, потом из mnu_castle_outside вызывает mnu_town.
Тебе соответственно, нужно вклиниться в эту цепочку, и выполнить то, что mnu_town делается при заходе в город.
-
всем привет
Не могу разобраться с анимациями (стоики с оружием)
вот к примеру war spear
itp_type_polearm|itp_offset_lance|itp_merchandise| itp_primary|itp_wooden_parry, itc_staff|itcf_carry_spear
почему если указать type_polearm то включается анима stand_crossbow
#item flags
itp_type_polearm = 0x0000000000000004
Вобще можно сделать новый type?
т.е. сделать новую аниму ,сделать новый тип и записать для оружия
Подскажите кто разобрался
-
почему если указать type_polearm то включается анима stand_crossbow
Потому что используют одну и туже анимацию.
-
Сделал одного лорда правителем фракции, не меняя идентификатора, и поставил перед королём Харлаусом. В игре он вроде бы ведёт себя, как обычно. Бегает по карте. Нападает на бандитов. А если с ним заговорить в замке, то он пытается наняться в отряд к ГГ, используя ломаный диалог одного из НПС. И его-таки можно нанять.
Пока не знаю, как это использовать. Может, в каком-то квесте. :)
-
Доброго времени суток!
В моде, который я пытаюсь доработать, хочу добавить новый пункт в диалог создания персоонажа при начале новой игры (автор просто заменил пару стандартных пунктов своими). Требуется вернуть стандартные пункты на место. Т.е. необходимо увеличить чисто этих самых пунктов :) В module_game_menus.py в все по-новой прописал. Понял, что в module_constants.py надо добавить новые строки. Сделал. Пример:
cb2_page = 0
cb2_apprentice = 1
cb2_urchin = 2
cb2_steppe_child = 3
cb2_merchants_helper = 4
cb2_apprentice_magician = 5
Т.е. добавлена еще одна строка с новым значением.
Сборка модуля проходит без проблемм.
Решил протестировать. При запуске игра на загрузке настроек выдает ошибку.
Вопрос: Что я делаю не так? :)
[вложение удалено Администратором]
[вложение удалено Администратором]
[вложение удалено Администратором]
-
По-моему, модуль не собрался.
Такая ошибка обычно бывает при нарушение целостности файлов мода.
Лог сборки мода?
-
Этот?
[вложение удалено Администратором]
[вложение удалено Администратором]
[вложение удалено Администратором]
-
Да, этот. И тут действительно всё в порядке. Не знаю, в чём может быть дело.
-
Тогда еще два вопроса. За что отвечают эти конкретные константы и с какими еще файлами МС они связаны?
Зараннее благодарен.
Или, может быть, у кого-нибудь найдется ссылка на МС других модов, в которых этот диалог уже изменен? Тогда можно было бы просто сравнить...
-
Наверное, глупый вопрос...
Что значат эти шестнадцатеричные числа в header_items?
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
и т.д.
-
JoG (http://rusmnb.ru/index.php?action=profile;u=1492), компьютер работает с битами. Другого он не умеет.
Флаг — это число. Но чтобы в module_items не писать 0x8, забиты константы.
-
Rongar (http://rusmnb.ru/index.php?action=profile;u=722), понятно. Но сами эти числа не берутся с потолка, они ведь еще прописаны в движке, правда? Т.е. я не могу так просто добавить в header_items какую-то свою константу (вернее, могу, но она не будет работать?)
Еще я не понимаю, каким образом осуществляется связь между module_animations, где прописаны анимации, и header_items, где задекларированы разные наборы анимаций. И внятного тутора на эту тему нет, все они описывают просто замену анимаций.
Например, есть header_items, где прописан флаг:
itcf_thrust_onehanded = 0x0000000000000001
И есть module_animations, где описана последовательность анимаций для этого самого onehanded thrust:
["ready_thrust_onehanded", acf_thrust|acf_rot_vertical_sword|acf_anim_length(100)|acf_enforce_rightside, amf_priority_attack|amf_use_weapon_speed|amf_use_inertia|amf_keep|amf_client_owner_prediction|amf_rider_rot_thrust,
## [ready_durn, "anim_human", combat+8500, combat+8510, blend_in_ready],
[ready_durn, "attacks_thrust_onehanded", 5, 13, blend_in_ready],
],
["release_thrust_onehanded", acf_thrust|acf_rot_vertical_sword|acf_anim_length(100)|acf_enforce_rightside, amf_priority_attack|amf_use_weapon_speed|amf_play|amf_rider_rot_thrust|amf_continue_to_next,
## [0.61, "anim_human", combat+8510, combat+8540, blend_in_release],
[0.62, "attacks_thrust_onehanded", 12, 32, blend_in_release],
],
["release_thrust_onehanded_continue", 0, amf_priority_continue|amf_use_weapon_speed|amf_play|amf_rider_rot_thrust|amf_client_owner_prediction,
[0.3, "attacks_thrust_onehanded", 32, 54, blend_in_continue],
],
Эта константа связана каким-то образом с этими тремя анимациями? Если да, то как?
-
JoG (http://rusmnb.ru/index.php?action=profile;u=1492), не знаю.
Могу лишь предположить.
Вариант первый. То, что для itcf_thrust_onehanded нужно использовать acf_thrust зашито, в движке.
Вариант второй. Чему что сопоставлять вычисляется каким-то не хитрмы образом тип сдвига на 32 бита.
Но скорее первое.
Так или иначе сопоставление между анимацией и предназначением зашито в двигло.
-
Подскажите пожалуйста. Меняю старт игры. Надо чтобы две фракции после их выбора переносили ГГ на глобальную карту возле города
А одна запускала сюжет
Код
("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"),
# ]),
]
),
Ошибки
(http://i060.radikal.ru/1112/ee/d4d26b37f2db.jpg)
-
("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),
]),Van ([url]http://rusmnb.ru/index.php?action=profile;u=6232[/url]), здесь комент лишний
Добавлено: 21 Декабря, 2011, 12:58
("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), (change_screen_return),
]),
-
Легионер (http://rusmnb.ru/index.php?action=profile;u=17320), не лишний. если убрать, то инвалид синтаксис
Эта строка у меня после шестого города осталась. По-этому тут ошибки нет
Добавлено: 21 Декабря, 2011, 13:03
Второе тоже пробовал, ошибки те же
Давай, если тебе не трудно, пришлю на проверку Гэйм менюс и еще чего если надо?
Добавлено: 21 Декабря, 2011, 13:07
Там вот чего еще в конце (после game_menus) компиляции пишет
save_game_menus(variables,variable_uses,tag_uses,quick_strings)
и
ofile.write("menu_%s %d %s %s"%(game_menu[0],game_menu[1],string.replace(game_menu[2]," ","_"),game_menu[3]))
save_statement_block(ofile,0,1, game_menu[4] , variable_list, variable_uses,tag_uses,quick_strings)
-
а здесь
# ("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),
]),
# ("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_3",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", 0),
],
"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", 0),
# ],
# "Continue...",
# [
# (call_script, "script_prepare_town_to_fight"),
# ]),
# ]
),
примерно так, может что пропустил...
-
Легионер (http://rusmnb.ru/index.php?action=profile;u=17320), со второй ошибкой справился благодаря тебе :), но вот первая
ты прав, по идее там лишние скобки, но если их комментить, возникает ошибка синтаксиса
Добавлено: 21 Декабря, 2011, 13:29
все разобрался. сейчас буду проверять в игре
-
Подскажите. Поменял старт. Теперь ГГ после выбора фракции оказывается на нужной сцене с нужными НПС и диалогами. Но с этой сцены не выйти по нажатию TAB, я даже прописал автоматический выход на глоб. карту после завершения диалога, однако он не действует.
Можно ли вообще сделать выход до диалога через TAB, ну а лучше после?
Миссия
(
"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)]),
-
Штурмыч, спасибо! все получилось :)
-
Как сделать перевал непроходимым, если на нем замок? Точнее, чтобы начинался разговор с сидящим в замке о пропуске и пр... Бегающий за игроком замок не очень.
-
Муурн (http://rusmnb.ru/index.php?action=profile;u=16743), тебе нужен триггер который будет запускать диалоговое окно в том случае если партия игрока находиться возле замка.
в самом окне вариант оплаты и отказа. если отказ - спаунить партию игрока немного назад...но за дистанцию при которой запускается диалоговое окно. повозиться надо с стороной похода к замку.
-
Понятно. Спасибо. С откидыванием проблемы вряд ли. Наверно: запоминаю позицию, подхожу на достаточное расстояние(т.е. один триггер подальше, второй близко), диалог. Если не пропустили, то возвращаю на позицию.
-
Объясните пожалуйста. Я сделал квест, где надо одолеть бандитов.
Мне надо, что бы после победы, снова возникал диалог, но уже другой, с одним их побежденных бандитов.
Что для этого сделать?
Диалог с бандитами до битвы
[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",[]],
Нужно на подобии диалога "ally_thanks_meet", но как он вызывается после победы вместе с союзником, я так и не разобрался =/
-
Как проверить фракцию города? Не могу найти в header_operations.
-
Как проверить фракцию города? Не могу найти в header_operations.
store_faction_of_party
-
Можно ли установить характеристику напрямую без обнуления?
-
Какую характеристику? =/
(troop_raise_attribute,<troop_id>,<attribute_id>,<value>), -атрибуты.
(troop_raise_skill,<troop_id>,<skill_id>,<value>), -скилы.
(troop_raise_proficiency,<troop_id>,<proficiency_no>,<value>), -знания.
-
Какую характеристику? =/
(troop_raise_attribute,<troop_id>,<attribute_id>,<value>), -атрибуты.
(troop_raise_skill,<troop_id>,<skill_id>,<value>), -скилы.
(troop_raise_proficiency,<troop_id>,<proficiency_no>,<value>), -знания.
Любую. А troop_raise_attribute/skill, так понимаю, повышают. Мне желательно, чтобы у трупса с силой n при команде troop_raise_attribute (...) не повысилась сила на n1, а стала n1.
-
не хочешь, не обнуляй, но смысл от этого не меняется
вызов скрипта (200 это твоё n1):
(call_script,"script_set_skill","skl_athletics","trp_looter",200),
сам скрипт:
("set_skill",
[(store_script_param,":skill",1),(store_script_param,":troop",2),(store_script_param,":new_value",3),
(store_skill_level,":a","skill",""troop"),
(store_sub,":b",":new_value",":a"),
(troop_raise_skill,":troop",":skill",":b"),
]),
PS по аналогии можно сделать для аттрибутов
PPS в качестве n1 можно и ноль указывать, если потребуется
PPPS при использовании в модах указывать в credits мод Goetia, доп разрешение не обязательно
-
Спасибо.
P.S. В credits обязательно укажу.
-
всем привет
а какой скрипт #script_party_count_members_with_full_health более правильный в версии MS1.134(Слева) или MS1.143(справа)
(http://img513.ссылки на данный сайт запрещены/img513/8164/ms1134vs1143.jpg)
просто при старте в 1.143 не достаточно набрать 5 рекрутов(нужно 6) ,а в версии 1.134 - 5 рекрутов
да ,они похоже ,но разные
-
А они отличаются? И выкладывай в следующий раз текст, плиз.
-
bogmir (http://rusmnb.ru/index.php?action=profile;u=6624), а случаем не в этом ли куске из диалогов дело?
#Quest 2 - First dialog sentence
[anyone, "start",
[
(is_between, "$g_talk_troop", "trp_swadian_merchant", "trp_startup_merchants_end"),
(eq, "$talk_context", tc_tavern_talk),
(check_quest_active, "qst_collect_men"),
(neg|check_quest_succeeded, "qst_duel_for_lady"),
(call_script, "script_party_count_members_with_full_health", "p_main_party"),
(ge, reg0, 6),
(str_store_party_name, s9, "$current_town"),
],
-
bogmir ([url]http://rusmnb.ru/index.php?action=profile;u=6624[/url]), а случаем не в этом ли куске из диалогов дело?
#Quest 2 - First dialog sentence
[anyone, "start",
[
(is_between, "$g_talk_troop", "trp_swadian_merchant", "trp_startup_merchants_end"),
(eq, "$talk_context", tc_tavern_talk),
(check_quest_active, "qst_collect_men"),
(neg|check_quest_succeeded, "qst_duel_for_lady"),
(call_script, "script_party_count_members_with_full_health", "p_main_party"),
(ge, reg0, 6),
(str_store_party_name, s9, "$current_town"),
],
фиг знает ,но в 1.134 - вроде тоже самое ,а рекрутов достаточно пять ,в 1.143 - 5-ти не достаточно. :-\
-
Ты уверен, что тот скрипт смотришь?
-
Я просто хочу разобраться, почему в стартовом нативском квесте ,который называется , (collect five men- cобери 5 человек) после того как ГГ собирает 5 человек ,ему отвечают ----- слушай ,тебе нужно больше людей.Прямо сейчас в твоем отряде только 5 человек...
(http://img38.ссылки на данный сайт запрещены/img38/3475/fghmq.jpg)
Это мелочь ,но ..
Последнее время копаясь в МС все чаще какие-либо не стыковки нахожу
К примеру в этом блоке
("npc1_turn_against", "I'm sorry that we meet like this, boss. There's no question that I owe my rise in life to you. You doubtless think me ungrateful. However, one has to follow one's destiny -- isn't that correct?"), #Borcha
("npc2_turn_against", "This is a sad day. I never thought that I might meet my old captain on the field of battle. Even if I triumph, it will bring me no joy."), #marnid
("npc3_turn_against", "Oh {playername} -- what a tragic turn our lives have taken! I can only hope that the tides of war that have made us enemies, will one day allow us to be friends."), #ymira
("npc4_turn_against", "Aye, well.... I'm not sure what to say. If we must fight, let's get it over with."), #rolf
("npc4_turn_against", "{playername} Bahadur! I took your salt, and was well rewarded for it! However, I will remind you of an old truth -- that while a Khergit may be an ardent follower, and a devoted friend, he will never be your slave.... Anyway, today I come against you with my sword raised. But I hope that one day we raise a glass together, to a friendship renewed."), #beheshtur
("npc6_turn_against", "It grieves me more than anything I can say to meet you like this, {playername}. I shall not dwell on the circumstances that have led us to this point. I can only hope that we may one day be reconciled."), #firentis
("npc7_turn_against", "Well, captain. You made of me a great lady, and for that I am grateful. However, you did not buy me, and now the circumstances have caused us our interests to clash, I can meet you in battle with a clear conscience. Still, I hope some day that circumstances may change again, and we may meet as friends."), #deshavi
("npc8_turn_against", "So we now we meet as enemies, and may shortly face each other over the rims of our shields. A grim day this is. Sometimes, the spinners of our fate have a dark sense of humor."), #matheld
("npc9_turn_against", "I will not accept fault for the circumstances which have led us to become enemies. I want you to know that my conscience is clear, although my heart is heavy."), #alayen
("npc10_turn_against", "Well, it looks like the tides of fate have led me to make war on my old captain. Maybe things started to go wrong when you became my liege -- I suppose I was never much suited to vassalage. Anyway, here we are now. Maybe, when the world is changed and there are no more masters and servants, or lords and vassals, then we can meet together as friends."), #bunduk
("npc11_turn_against", "Great heaven, {laddie/lassie}. So now it looks like you and I are enemies. Didn't I say that life takes us on some very strange turns? Destiny sometimes has a cruel sense of humor -- I'll say that much."), #katrin
("npc12_turn_against", "So, it seems we must fight. I would have you know, {sir/my lady}, that I have not betrayed you. I had never served you as a man, but served the principles which I believed you upheld. As you no longer uphold them, I must do my best to thwart you. But I bear you no ill will, and I hope that we can meet again some day as friends"), #jeremus
("npc13_turn_against", "It is sad to meet you as my enemy, Captain -- but on the other hand, to meet such a titan of the battlefield as yourself in combat is a rare privilege. Truly, the news of our contest today shall keep the bards and poets of Calradia in wine and silver for months to come, do you think?"), #nizar
("npc14_turn_against", "Well, {playername}. We meet as enemies. I confess that I have mixed feelings. It grieves me to make war on you, but if we meet in battle and I prevail, I will have defeated the worthiest foe in all Calradia, and I will know that my mastery of the military art is complete!"), #lazalit
("npc15_turn_against", "Ah... I have not been looking forward to this day. I just want to say that in my sight, if you'd kept your faith in me, things would never have come to this. But no doubt you see it differently."), #artimenner
("npc16_turn_against", "Hello, Captain! So, I guess we're enemies! One small word of warning if we end up fighting each other -- once the rage of battle hits me, I can't always account for my actions. Just know that whatever I do, it's not personal. Maybe if we both walk away from this, we can meet once more as friends?"), #klethi
-
В диалоге общая численность отряда ГГ сравнивается с кол-вом 5. Если = или <, то ГГ отсылается искать ещё народ.
В названии квеста действительно стоит 5 человек, так как предполагается 5 не считая самого ГГ.
Но если у тебя в отряде ГГ + 5 чел и у всех у них здоровья больше 80 единиц (см приведённый тобой скрипт), то квест должен идти дальше.
С неписями просто опечатка, точнее после копипаста не исправили цифру. По идее должна отобразиться первая реплика (Рольфа), а вторая (Бахештура) не будет использована игрой никогда.
-
В том и дело - ГГ+5 рекрутов с 100%нр -отсылаются
-
А у них 100% НР не меньше, чем 80 единиц? Я так на память не скажу.
Поправочка, в диалоге с 5 сравнивается не общая численность, а численность за вычетом ГГ (я таки удосужился сам скрипт прочитать :embarrassed:)
поэтому либо вместо (le, ":total_party_size", 5),
надо написать (lt, ":total_party_size", 5), или (le, ":total_party_size", 4),
либо переименовать квест
-
:) натив есть ,проверь
-
Блин, ща пойду у нас исправю.
-
Кто-нибудь знает как из модульки можно послать запрос на свой сервер, ну примерно такое http://rusmnb.ru/index.php?action=post;topic=11317.200;last_msg=513227 (http://rusmnb.ru/index.php?action=post;topic=11317.200;last_msg=513227) и как получить ответ? Ведь как то это в crpg делается.
-
send_message_to_url послать
script_game_receive_url_response принять
-
Спасибо за ответ!
Но есть еще вопросы )
1) send_message_to_url = 380 # (send_message_to_url, <string_id>, <encode_url>),
Но не совсем понял, что передавать первым параметром, а что вторым
как быть с этим например http://rusmnb.ru/index.phpaction=post;topic=11317.200;last_msg=513227 (http://rusmnb.ru/index.phpaction=post;topic=11317.200;last_msg=513227) ?
2) player_get_unique_id - это id игрока по ключу лицензии?
3) Как в том же crpg определяют оффициальный это сервер или нет? А то ведь, я Вася Пупкин беру создаю свой выделенный сервер зову друзей товарищей и мы все дружно занимаемся накоплением денег.
-
1. Первым url "@http://127.0.0.1/test/test.php?Key={s1}&Value={reg1}", второй ваще не нужно указывать. Там, насколько я знаю, либо 0, либо 1, означает как парсить урл.
как быть с этим например [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]) ?
Линк нормальный дай.
2. Да.
3. Тут нет разработчиков crpg, поэтому отсылки туда бессмысленны. Сделать можно по-разному. Фильтрация по сети, авторизация по собственным сгенерированым ключам, у сервера, по идеи, должен быть свой уникальный id по ключу лицензии, может быть, его можно заполучить через (player_get_unique_id, ":id", 0).
-
Спасибо еще раз.
Я добавил код
(player_get_unique_id,":uniq_player_no",":player_no"), //:player_no 0 всегда равен
(assign, reg0, ":uniq_player_no"),
(display_message, "@{reg0}"),
в скрипт multiplayer_server_player_joined_common
Мне всегда возвращается 0. Это потому что я запускаю у себя локально игру или почему тогда?
-
1. Команда не работает на стороне игрока, то есть нужно прятать под multiplayer_is_server.
2. Писали, что на не выделенных серверах проблемы с этой командой.
-
проверка на multiplayer_is_server проходит, следовательно работает только на выделенных серверах. Вот геморой это тестировать (
-
Хм. Как сделать оружие, которое наносит не только урон, но и, например, изменяет характеристики?
-
Муурн (http://rusmnb.ru/index.php?action=profile;u=16743), есть триггер ti_on_agent_hit.
может он тебе поможет..
-
Спасибо. Вешать на оружие?
-
и на урон который получает агент от именно этого оружия. и проверки на количество урона - если столько то - действо по уменьшению того что тебе нужно.
-
Можно пример? У меня:
NameError: name 'ti_on_agent_hit' is not defined.
-
а где ты его используешь? :-\
ti_on_agent_hit = -28.0 #can only be used in module_mission_templates triggers
# Trigger Param 1: damage inflicted agent_id
# Trigger Param 2: damage dealer agent_id
# Trigger Param 3: inflicted damage
# Register 0: damage dealer item_id
# Position Register 0: position of the blow
# rotation gives the direction of the blow
# Trigger result: if returned result is greater than or equal to zero, inflicted damage is set to the value specified by the module.
weapon = (
ti_on_agent_hit, 0, 0, [],
[
.......................
])
-
Спасибо. Пытался в итемы запихнуть. А в header_triggers не нашел.
Все равно is not defined. WB 1.132.
weapon = (
ti_on_agent_hit, 0, 0, [],
[
]),
А, Шармат. Он с 1.134.
Как заставить одного воина лечить второго? Это должно быть в любом бою, где есть целители. На один раз будет проще. Магия для войск реализована через стрелковое оружие. Агент стреляет, срабатывает скрипт, получает координаты... Нужно заставить целителей колдовать на раненых. Т.е. атаковать своих, но чтобы свои не нападали. Если можно, то примерный скрипт.
-
можно с agent_set_hit_points но это новая операция...
-
Можно подробнее? Нужно заставить колдовать именно целителей и на своих. Скрипт лечения я представляю. А вот наведение...
-
не знаю...а если просто в радиусе есть бот из своих с здоровьем ниже 30 процентов задать аниму ..знахарь)) ..и в радиусе боты получают лечение..
Добавлено: 23 Января, 2012, 18:31
не знаю...а если просто в радиусе есть бот из своей команды с здоровьем ниже 30 процентов задать аниму ..знахарь)) ..и в радиусе боты получают лечение..
-
Т.е.
если агент-целитель,
(try_for_agents...),
если здоровье меньше, чем,
если дистанция меньше, чем,
лечить.
А это не скажется на оптимизации?
-
Как реализовать смерть лордов? Желательно, чтобы умирали они гораздо реже, чем остальные войска. ИМХО удалить tf_hero слишком топорно.
-
Пытаюсь заставить нпс стоять на месте или медленно двигаться после респауна на карте:
[(ti_on_init_item,[(store_trigger_param_1,":canonir"),(agent_set_speed_limit,":canonir",1),(agent_set_walk_forward_animation,":canonir","anim_cannon_move")]), ... и тд
но никак не могу понять за какую он цепляется анимацию и почему тригер agent_set_walk_forward_animation не работает?
-
joker7by (http://rusmnb.ru/index.php?action=profile;u=17165), в твоем коде не ясно что скрываеться под переменной :canonir - кто этот агент? и я бы проверил на agent_get_animations, а потом назначил agent_set_animations хотя можно и agent_set_walk_forward_animation
-
(store_trigger_param_1,":canonir") - я так понял, что это работает для игрока, т.е. я задаю ему имя не ":agent", ":canonir" а так как (agent_set_speed_limit,":canonir",1) заставляет ботов идти, а не бежать, то я решил, что это работает!
Судя по вашему ответу я не до конца уловил смысл записи store_trigger_param_1?
(agent_get_animation, <destination>, <agent_id>, <body_part), #0 = lower body part, 1 = upper body part
Как тут сделать проверку?
Я уловил, что нужно для начала дать понять скрипту, что у агента такая-то анимация и задать другую, но как это реализовать правильно?
-
(store_trigger_param_1,":canonir") - я так понял, что это работает для игрока, т.е. я задаю ему имя не ":agent", ":canonir"
нет вы всего лишь назначаете переменную как параметр тригера.
если нужно для игрока то
(agent_get_player_id, ":player_agent",":canonir"),
(agent_get_animation, ":anim", ":player_agent", 0),
дальше вы определяете какую анимацию вы хотите заменить
(eq, ":anim", "anim_xxx"),
и задаете новую.
и почему вы делаете в итем?лучше в мисиион темплс..
-
попробую
и почему вы делаете в итем?лучше в мисиион темплс..
Тогда придется писать в конце каждой миссии, а можно ж и так [(ti_on_init_item,(call_script, "script_cannon"), , только я пока не знаю где и как правильно записать script_cannon :blink:
-
в модуль скрипт, надо проверить на это оружие
agent_get_wielded_item
и
(ge, "itm_xxx",0),
и всеж проще в миисион..
-
[(ti_on_init_item,
[(agent_get_player_id, ":player_agent",":canonir"),
(agent_get_animation, ":anim", ":player_agent", 0),
(eq,":anim","anim_run_forward_onehanded"),
(agent_set_animation,":canonir","anim_stand_single"),
не схавало, ругается:
Exporting item data...
ERROR: Usage of unassigned local variable: :canonir
ERROR: Usage of unassigned local variable: :canonir
ERROR: Usage of unassigned local variable: :canonir
ERROR: Usage of unassigned local variable: :canonir
-
(store_trigger_param_1,":canonir"), нужен.
или начать цикл (try_for_agent":":canonir"), который потом закрыть трай енд.
и если вы для мп делаете у вас все игроки получат эту аниму.
-
(store_trigger_param_1,":canonir"), нужен.
или начать цикл (try_for_agent":":canonir"), который потом закрыть трай енд.
и если вы для мп делаете у вас все игроки получат эту аниму.
при условии, что у них в руках нужный итем? Или оно просто заглючит?
-
недописал...да если этот итем в руках,
-
[(ti_on_init_item,
[(store_trigger_param_1,":canonir"),
(agent_get_player_id, ":player_agent",":canonir"),
(agent_get_animation, ":anim", ":player_agent", 0),
(eq,":anim","anim_run_forward_onehanded"),
(agent_set_animation,":canonir","anim_stand_single"),
Схавало, но не пашет, в самой игре пишет Invalid agent ID =/
-
попробуй с
или начать цикл (try_for_agent":":canonir"), который потом закрыть трай енд.
-
ок, я тут исправил OPCODE 1768 добавив значение (gt, ":player_agent",0), из темы http://forums.taleworlds.com/index.php?topic=142231.0, (http://forums.taleworlds.com/index.php?topic=142231.0,) но теперь OPCODE 1724 :D, счас сделаю (try_for_agent":":canonir"),
-
добавь еще
(agent_is_alive, ":player_agent"),
а вообще лучше сделай в миссион темплс
0, 0, 0, [],
[ (get_player_agent_no, ":player_agent"),
(agent_is_active, ":player_agent"),
(agent_is_alive, ":player_agent"),
(agent_get_wielded_item, ":item", ":player_agent",0), 0 - вроде левая рука
(eq, ":item", "itm_xxxx"),
(ge, ":item",0),
(agent_get_animation, ":anim", ":player_agent", 0),
(eq,":anim","anim_run_forward_onehanded"),
(agent_set_animation,":canonir","anim_stand_single"),]),
и положи в середину нужных миссий
-
Заработало, но не в режиме батл куда я вставлял, а почему-то в режиме захвата и то только для меня, а боты так и бегают с пушками :D
Добавлено: 08 Февраля, 2012, 14:37
Перебрал все возможные и не возможные скрипты, слепил и в итоге с помощью такого тригера:
(0, 0, 0, [],
[(multiplayer_is_server),
(try_for_agents,":agent_no"),
(agent_is_active, ":agent_no"),
(agent_is_alive, ":agent_no"),
(agent_get_wielded_item,":item",":agent_no",0),
(this_or_next|eq,":item","itm_cannon"),
(ge,":item",0),
(agent_get_animation, ":anim", ":agent_no", 0),
(eq,":anim","anim_run_forward_onehanded"),
(try_begin),
(agent_set_animation,":agent_no","anim_stand_single"),
(try_end),
(try_end)]),
работает всё как надо :thumbup:
З.Ы. Огромное спасибо Легионеру за помощь!
-
joker7by (http://rusmnb.ru/index.php?action=profile;u=17165),
(0, 0, 0, [],
[(multiplayer_is_server),
(try_for_agents,":agent_no"),
(agent_is_active, ":agent_no"),
(agent_is_alive, ":agent_no"),
(agent_get_wielded_item,":item",":agent_no",0),
(this_or_next|eq,":item","itm_cannon"),
(ge,":item",0),
(agent_get_animation, ":anim", ":agent_no", 0),
(eq,":anim","anim_run_forward_onehanded"),
(try_begin),
(agent_set_animation,":agent_no","anim_stand_single"),
(try_end),
(try_end)]),
-
Я исправил, но это не решило проблему с анимацией:
(0, 0, 0, [],
[(multiplayer_is_server),
(try_for_agents,":agent_no"),
(agent_is_active, ":agent_no"),
(agent_is_alive, ":agent_no"),
(agent_get_wielded_item,":item",":agent_no",0),
(eq,":item","itm_cannon"),
(ge,":item",0),
(agent_get_animation, ":anim", ":agent_no", 0),
(eq,":anim","anim_run_forward_onehanded"),
(agent_set_animation,":agent_no","anim_cannon_move_forward"),
(try_end)]),
Что персонаж, что нпс - все бегают, хотя анимация прописана так:
["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]],
если сделать так:
["cannon_move_forward", 0, acf_enforce_lowerbody,
[15.0, "man_walk", 0, 32, arf_use_walk_progress|arf_cyclic|blend_in_walk]],
то будет просто дергач, но пушка медленно двигается
Добавлено: 09 Февраля, 2012, 10:30
По всей видимости хотьба это бич модостроителей на M&B в целом =/
-
можно попробывать с 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 вроде как время проигрыавния анимы. мож попробывать его увеличить? =/
-
можно попробывать с 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 вроде как время проигрыавния анимы. мож попробывать его увеличить? =/
Это я пробовал, тригер перестает работать и включается стандартная анимация.
В итоге я смог сделать чтоб пушки стояли на месте, хорошо бы их разбросать во время респауна на нормальном удалении друг от друга.
-
Как сделать три(и больше) стороны на поле боя? Т.е. кергиты бьют вегиров и свадов, свады вегиров и кергитов, а вегиры кергитов и свадов.
-
agent_set_team позволяет задать команду агента (можно так же задать команду через свойства точки появления агента)
team_set_relation позволяет задать отношение между командами
Вроде как можно напрямую задавать отношения между агентами через agent_add_relation_with_agent.
-
Задача плёвая, если участвует ГГ
в мишн темплейтс в лид чардж меняем нулевое отношение на минус 1
(ti_before_mission_start, 0, 0, [],
[
(team_set_relation, 0, 2, 0),
(team_set_relation, 1, 3, 0),
(call_script, "script_place_player_banner_near_inventory_bms"),
(party_clear, "p_routed_enemies"),
(assign, "$g_latest_order_1", 1),
(assign, "$g_latest_order_2", 1),
(assign, "$g_latest_order_3", 1),
(assign, "$g_latest_order_4", 1),
]),
а вот насчёт автобоя надо думать. Мне лень.
-
joker7by (http://rusmnb.ru/index.php?action=profile;u=17165), как вариант можно еще вставить
то что стоит у пешеходов в городе
(agent_set_speed_limit, ":agent_no", 5),
-
joker7by, как вариант можно еще вставить
то что стоит у пешеходов в городе
(agent_set_speed_limit, ":agent_no", 5),
стоит (agent_set_speed_limit, ":agent_no", 0.01) :D
-
Задача плёвая, если участвует ГГ в мишн темплейтс в лид чардж меняем нулевое отношение на минус 1
(ti_before_mission_start, 0, 0, [],
[
(team_set_relation, 0, 2, 0),
(team_set_relation, 1, 3, 0),
(call_script, "script_place_player_banner_near_inventory_bms"),
(party_clear, "p_routed_enemies"),
(assign, "$g_latest_order_1", 1),
(assign, "$g_latest_order_2", 1),
(assign, "$g_latest_order_3", 1),
(assign, "$g_latest_order_4", 1),
]),
а вот насчёт автобоя надо думать. Мне лень.
Союзники месить друг друга не начнут?(например, вегиры и норды -- союзники)
-
Муурн (http://rusmnb.ru/index.php?action=profile;u=16743), начнут. Но про союзников ты ничего не писал.
-
Так. Поставлю вопрос иначе.
Как сделать, чтобы в битве участвовало больше двух сторон(например: Вегиры и Норды/Родоки и Кергиты/Сарраниды и Свады) Каждая из сторон сражается с остальными двумя.
-
Надо и вышеприведённый триггер править и скрипт game_event_simulate_battle досконально переписывать, чтобы он учитывал более одной стороны, и скрипт party_calculate_and_set_nearby_friend_enemy_follower_strengths, и вероятно ещё парочку скриптов связанных с AI партий.
-
по большому счету это есть уже когда у фракций положительные отношения к одной стороне и отрицательные к другой, партия присоеденится
к партии с (+) против партии с (-) отношениями..
подскажите какой операцией можно записать в переменную не конкретный итем из инвентаря а то что используется в данный момент для плеера..
не могу сообразить, чтоб не зацепить то что не используется( не надето).
-
1. По большому счёту партия присоединяется к одной из 2 сторон, а не тсановится третьей, если она в минусах с обеими. По-моему вопрос именно о такой ситуации.
2. Чем не устраивает troop_get_inventory_slot ?
-
1. По большому счёту партия присоединяется к одной из 2 сторон, а не тсановится третьей, если она в минусах с обеими. По-моему вопрос именно о такой ситуации.
ну да.
придется переписывать скрипт о рандомных сценах, создать спец сцены для такой ситуации с входами не
2 командами а больше, а это тянет за собой новый Лид Чардж..
Dargor (http://rusmnb.ru/index.php?action=profile;u=1507), спасибо,
требовалось только заглянуть в хедер итем чтоб понять как
-
Ещё один вопрос на засыпку, пытаюсь заставить исчезать части тела при попадании, в итоге либо я сам умираю без определенной части тела, либо ничего кроме эффекта попадания не происходит, вот код, который я пробую реализовать:
module_mission_templates
(ti_on_agent_hit, 0, 0, [],
[(multiplayer_is_server),
(store_trigger_param_1,":attacker"),
(store_trigger_param_2,":target"),
(try_begin),
(agent_is_alive, ":attacker"),
(agent_is_active, ":attacker"),
(agent_get_wielded_item,":item",":attacker",0),
(eq,":item","itm_laser_rifle"),
(ge,":item",0),
(try_end),
(try_begin),
(agent_deliver_damage_to_agent,":attacker",":target"),
(particle_system_burst,"psys_laser_hit",pos1,50),
(agent_get_item_slot, ":item", ":target", 5),
(agent_unequip_item, ":target", ":item"),
(agent_equip_item, ":target", "itm_invisible"),
(try_end)]),
Кто, что может подсказать в решении этой проблемы?
-
Здесь есть пример про обезглавливание. Может подайдёт?
http://rusmnb.ru/index.php?action=pmxblog;sa=view;cont=162;uid=21638#top (http://rusmnb.ru/index.php?action=pmxblog;sa=view;cont=162;uid=21638#top)
-
Здесь есть пример про обезглавливание. Может подайдёт?
[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])
Спасибо попробую
Добавлено: 15 Февраля, 2012, 11:13
Так и не смог заставить это работать, но вот пытаюсь разобрать более интересные скрипты в http://forums.taleworlds.com/index.php?topic=152057.105, (http://forums.taleworlds.com/index.php?topic=152057.105,) пока что-то безуспешно :( Cap! i need help!
Добавлено: 15 Февраля, 2012, 16:21
Кстати, может кто поделится кодом для дробовика, а тоя мучаю это код: http://forums.taleworlds.com/index.php/topic,176863.msg4270849.html#msg4270849 (http://forums.taleworlds.com/index.php/topic,176863.msg4270849.html#msg4270849) , но всё ровно слишком много ботов погибает от выстрела :o
-
Так и не смог заставить это работать, но вот пытаюсь разобрать более интересные скрипты в
Там принцып, чтобы видимую голову заменить на невидимую.
Или можно сделать закрытый шлем, покрытый альфой и в нужный момент добавить трупсу в снаряжение:
(troop_get_inventory_slot, <шлем>, "trp_ххх",4),
Кстати, может кто поделится кодом для дробовика, а тоя мучаю это код:
В нативе есть пистоль с нужными флагами. Возьми его за основу. Там ещё есть флаги для пуль и мушкета.
-
Там принцып, чтобы видимую голову заменить на невидимую.
Или можно сделать закрытый шлем, покрытый альфой и в нужный момент добавить трупсу в снаряжение:
(troop_get_inventory_slot, <шлем>, "trp_ххх",4),
itm_inviseble это не проблема, у меня пропадает тело с кодом (troop_get_inventory_slot, <броня>, "trp_ххх",5), если я его пишу в items вот так:
(ti_on_agent_hit, 0, 0, [],
[(multiplayer_is_server),
(store_trigger_param_1,":attacker"),
(try_begin),
(agent_is_alive, ":attacker"),
(agent_is_active, ":attacker"),
(agent_get_wielded_item,":item",":attacker",0),
(eq,":item","itm_laser_rifle"),
(ge,":item",0),
(try_for_agents,":target"),
(agent_deliver_damage_to_agent,":attacker",":target"),
(particle_system_burst,"psys_laser_hit",pos1,50),
(agent_get_item_slot, ":item", ":target", 5),
(agent_unequip_item, ":target", ":item"),
(agent_equip_item, ":target", "itm_invisible"),
(try_end),
(try_end)
]),
но при этом умирают все боты на карте и я тоже :D, так можно термоядерный взрыв сделать :thumbup:
Добавлено: 16 Февраля, 2012, 10:12
В нативе есть пистоль с нужными флагами. Возьми его за основу. Там ещё есть флаги для пуль и мушкета.
Давно уже работаю с огнестрелом и знаю только три вида боеприпасов itp_type_bullets, itp_type_bolts и itp_type_arrows, соответственно так можно сделать три различных огнестрела.
Может я что-то упустил и есть флаг с привязкой боеприпасов к новому виду огнестрела?
-
Посмотри itm_cartridges. Это вроде бы пули. Во всяком случае у них стоит флаг itp_type_bullets.
-
Посмотри itm_cartridges. Это вроде бы пули. Во всяком случае у них стоит флаг itp_type_bullets.
И? :blink:
И что я могу с ним сделать? Различные боеприпасы? И пистолет будет дробью стрелять :laught:
-
но при этом умирают все боты на карте и я тоже
Что как бы не удивительно, когда цикл по всем агентам.
ti_on_agent_hit
Trigger Param 1: damage inflicted agent_id
Trigger Param 2: damage dealer agent_id
Trigger Param 3: inflicted damage
Register 0: damage dealer item_id
Position Register 0: position of the blow rotation gives the direction of the blow
Trigger result: if returned result is greater than or equal to zero, inflicted damage is set to the value specified by the module.
-
но при этом умирают все боты на карте и я тоже
Что как бы не удивительно, когда цикл по всем агентам.
ti_on_agent_hit
Trigger Param 1: damage inflicted agent_id
Trigger Param 2: damage dealer agent_id
Trigger Param 3: inflicted damage
Register 0: damage dealer item_id
Position Register 0: position of the blow rotation gives the direction of the blow
Trigger result: if returned result is greater than or equal to zero, inflicted damage is set to the value specified by the module.
Хорошо, я делал по аналогии скрипта гранаты, как только добавляю тригер с подменой брони и убираю (agent_get_position,pos2,":target"), (get_distance_between_positions,":dist",pos1,pos2),
то тогда начинает пропадать броня и все умирают :embarrassed:
Как же тогда будет выглядеть правильная запись, чтобы убиралась броня у цели в которую мы стреляем.
-
(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), #возможно, будет корректно работать и без этого.
]),
-
Здравствуйте :)
Что в модульке отвечает за сохранение инвентаря у трупса?
Сейчас поясню:
Как показали мои наблюдения любое изменение инвентаря у трупса с флагом tf_hero сохраняется при сохранении игры.
Для обычных же солдат операции troop_add_item, troop_remove_item
, troop_clear_inventory и прочие операции связанные с изменением инвентаря, работают до первой загрузки сейва. После загрузки игры инвентарь приводится в соответствие с тем, что прописано для этого трупса в module_troops.py
Причём те же операции выполненные в With Fire and Sword работают как нужно, всё сохраняется.
Отсюда вопрос: как это (переодевание обычных солдат) могло быть реализовано например в Storm Of The Three Kingdom?
-
В
module.ini
dont_load_regular_troop_inventories = 1
Выставить на 0.
-
Так и знал, что нужно просто где то поменять одну цифру, всю модульку излазил мозг себе сломал :laught:
Как всегда самые очевидные решения приходят в последнюю очередь)
Спасибо!
А изменение этого параметра не скажется на быстродействии игры? Ведь не зря же по умолчанию он выкл.
То что процесс загрузки и сохранения станет медленнее и так очевидно, как и то, что сейв-файл будет больше.
-
(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"),
(store_trigger_param_1, ":victim"),
(particle_system_burst, "psys_laser_hit", pos0, 50),
(particle_system_burst, "psys_laser_smoke", pos0, 50),
(agent_get_item_slot, ":item", ":victim", 4),
(try_begin),
(ge, ":item", 1),
(agent_unequip_item, ":victim", ":item"),
(try_end),
(agent_equip_item, ":victim", "itm_invisible_heat"),
(agent_get_position, pos4, ":victim"),
(position_move_z, pos4, -500),
(agent_get_item_slot, ":item", ":victim", 5),
(try_begin),
(ge, ":item", 1),
(agent_unequip_item, ":victim", ":item"),
(try_end),
(agent_equip_item, ":victim", "itm_invisible_body"),
(agent_get_item_slot, ":item", ":victim", 6),
(try_begin),
(ge, ":item", 1),
(agent_unequip_item, ":victim", ":item"),
(try_end),
(agent_equip_item, ":victim", "itm_invisible_legs"),
(agent_get_item_slot, ":item", ":victim", 7),
(try_begin),
(ge, ":item", 1),
(agent_unequip_item, ":victim", ":item"),
(try_end),
(agent_equip_item, ":victim", "itm_invisible_hand"),
(set_trigger_result, -1),
]),
Ошибки не появляются, но и голова не исчезает.
(http://img194.ссылки на данный сайт запрещены/img194/2155/mb16f.jpg)
(http://img848.ссылки на данный сайт запрещены/img848/7588/mb19q.jpg)
Искал в header_operations как подменить кровь на огонь или дым, так и не нашел :-\.
И ещё одно:
pos0 - это всегда то место куда попадает?
тогда pos1 - это позиция на земле?
-
Искал в header_operations как подменить кровь на огонь или дым, так и не нашел
Дык ты просто добавь новый партикл и пропиши его им...
-
А изменение этого параметра не скажется на быстродействии игры? Ведь не зря же по умолчанию он выкл.
То что процесс загрузки и сохранения станет медленнее и так очевидно, как и то, что сейв-файл будет больше.
Это в любом случае копеечные затраты, и на fps они не влияют. Насколько я понимаю, отключение загрузка из сейвов связано с тем, что TW научились делать патчи, после которых не обязательно начинать новую игру, и чтобы правки экипировки после таких патчей вступали в силу для тех, кто продолжает старую, нужно чтобы игра подгружала данные из troops.
Ошибки не появляются, но и голова не исчезает.
Я с исчезанием не работал. Не знаю, как оно должно быть. Единственно, что могу сказать по коду, там по виду ваще всё должно исчезнуть, но не исчезло ничего, то есть как бы не работает совсем, а не только голова. А блин, там несколько, что ли трупаков на скрине?
Но если всё-таки не работает только голова, то стоит ли у невидимой шапки itp_covers_head?
Искал в header_operations как подменить кровь на огонь или дым, так и не нашел
Это либо в particle_systems game_blood, game_blood_2
либо в skins.
В частицах можно изменить, как выглядит кровь.
А в скинах, что есть кровь.
И ещё одно:pos0 - это всегда то место куда попадает?тогда pos1 - это позиция на земле?
В ti_on_agent_hit pos0 — место куда попадает.
Про то, что за значения в pos1 в ti_on_agent_hit, никто ничего не говорил.
-
А блин, там несколько, что ли трупаков на скрине?
Но если всё-таки не работает только голова, то стоит ли у невидимой шапки itp_covers_head?
Да, несколько трупаков, у всех головы, причем не те что нада, itp_covers_head не стояло, счас попробую с ним посмотреть, а вообще странно, я знаю такая голова появляется если ошибка с параметрами самого скелета или тела, это есть в моде 1775, где вместо собаки эта же голова.
itp_covers_head - помогло :thumbup:, сенкс.
Это либо в particle_systems game_blood, game_blood_2
либо в skins.
В частицах можно изменить, как выглядит кровь.
А в скинах, что есть кровь.
Я не хотел исправлял партиклы для крови, а тригерами сделать подмену одного партикла на другой. :)
В ti_on_agent_hit pos0 — место куда попадает.
Про то, что за значения в pos1 в ti_on_agent_hit, никто ничего не говорил
Просто хотелось узнать побольше об pos0 pos1 pos2 и тд, а то не могу понять как к дулу прицепить дымок, чтоб он выходил из дула на время действия партикла.
-
В ti_on_agent_hit pos0 — место куда попадает.
Про то, что за значения в pos1 в ti_on_agent_hit, никто ничего не говорил
Просто хотелось узнать побольше об pos0 pos1 pos2 и тд, а то не могу понять как к дулу прицепить дымок, чтоб он выходил из дула на время действия партикла.
Они разные в разных триггерах.
В ti_on_weapon_attack pos1 положение оружия, не знаю, какой его части.
Но если дым идёт не из дула, а из затвора, то нужно pos1 сдвинуть в сторону куда смотрит агент на длину ствола.
-
В ti_on_agent_hit pos0 — место куда попадает.
Про то, что за значения в pos1 в ti_on_agent_hit, никто ничего не говорил
Просто хотелось узнать побольше об pos0 pos1 pos2 и тд, а то не могу понять как к дулу прицепить дымок, чтоб он выходил из дула на время действия партикла.
Они разные в разных триггерах.
В ti_on_weapon_attack pos1 положение оружия, не знаю, какой его части.
Но если дым идёт не из дула, а из затвора, то нужно pos1 сдвинуть в сторону куда смотрит агент на длину ствола.
Это я уже понял, т.е. можно пробовать методом тыка все pos.
-
т.е. можно пробовать методом тыка все pos.
RTFM наше всё.
Искать недокументированные возможности движка — неблагодарное дело.
-
т.е. можно пробовать методом тыка все pos.
RTFM наше всё.
Искать недокументированные возможности движка — неблагодарное дело.
я так почти всё делал ;), в итоге нашёл много интересного в партиклах.
P.S. Спасибо за неоценимую помощь, теперь буду настраивать партиклы и делать плазму с облезающим скелетом 8-)
-
RTFM наше всё.
Искать недокументированные возможности движка — неблагодарное дело.
А кстати, есть ли где документация по module_mission_templates. В Мануале как-то глухо про это написано. Всё-таки там не то же самое, что и module_triggers.
-
RTFM наше всё.
Искать недокументированные возможности движка — неблагодарное дело.
А кстати, есть ли где документация по module_mission_templates. В Мануале как-то глухо про это написано. Всё-таки там не то же самое, что и module_triggers.
В целом большая часть необходимой информации есть в шапке module_mission_templates.py.
-
В шапке ничего нет про флаги - ti_battle_window_opened, ti_before_mission_start, ti_tab_pressed, ti_on_agent_spawn, ti_question_answered, ti_inventory_key_pressed, ti_on_agent_spawn, ti_on_agent_hit, ti_on_leave_area, ti_on_agent_killed_or_wounded
Какой для какого случая? Назначение некоторых можно понять, а другие -фиг их знает.
В module_map_icons и module_scene_props тоже есть похожие флаги в тригерах.
Пишу их, а сам точно не знаю, правильно это или нет. :blink:
-
Учи английский. :D ti_before_mission_start, насколько помню, старт миссии. Да. Еще можно глянуть, когда этот шаблон используется и так понять, что значит ti____. Или экспериментируй.
-
ti_battle_window_opened - вроде срабатывает при открытии окна персонажа в бою, может еще при открытии каких окон=/
ti_before_mission_start - срабатывает один раз перед стартом боя (когда еще картинка сцены не выведена)
ti_tab_pressed - срабатывает при нажатии кнопки TAB на клаве
ti_on_agent_spawn - срабатывает при спауне нового агента на сцену
ti_on_agent_hit - срабатывает при любом попадании по любому агенту
ti_on_agent_killed_or_wounded - срабатывает когда любой агент ранен или убит
ti_on_leave_area - вроде при выходе со сцены (когда выходишь через край сцены, при появлении соответсвующей строчки)
ti_inventory_key_pressed - если нажата кнопка инвентаря
ti_question_answered - кажется срабатывает при ответ на всплывающий вопрос (типа когда всплывает такое окошо "хотите покинуть битву" и т.п)
-
Спасибо, shturmfogel.
Подскажи пожалуйста ещё. В module_scene_props. Чем эти флаги отличаются друг от друга.
ti_on_scene_prop_use, ti_on_init_scene_prop, ti_on_scene_prop_init,
-
ti_on_scene_prop_use - срабатывает когда игрок юзает сцен_пропс (например лестницы в мультиплееры, при нажатии клавиши F... ну собственно когда окошечко использования появляется)
ti_on_init_scene_prop, ti_on_scene_prop_init, - одно и то же, срабатывает один раз при наличии сцен_пропса с этим триггером на сцене (при загрузке сцены)
-
Понял. Спасибо.
-
Сейчас занимаюсь геральдикой для лошадей http://rusmnb.ru/index.php?topic=13486.0 (http://rusmnb.ru/index.php?topic=13486.0) и есть такая проблема. В файле module_items прописан триггер для лошади
[(ti_on_init_item, [(store_trigger_param_1, ":agent_no"),(store_trigger_param_2, ":troop_no"),
(try_begin), #for in missions
(agent_is_active, ":agent_no"),
(agent_get_rider, ":agent_no", ":agent_no"),
(try_end),
(call_script, "script_shield_item_set_banner", "tableau_wse_warhorse_chain", ":agent_no", ":troop_no")])]],
Проблема здесь случается тогда, когда заходишь на сервер и есть "ничейный" конь, то вылазиют ошибки что :agent_no = -1 и все такое, но тем не менее рисуется нормально задник и накладывается ничейный банер. Сделал вот-так:
[(ti_on_init_item, [(store_trigger_param_1, ":agent_no"),(store_trigger_param_2, ":troop_no"),
(try_begin), #for in missions
(agent_is_active, ":agent_no"),
(agent_get_rider, ":agent_no", ":agent_no"),
(call_script, "script_shield_item_set_banner", "tableau_wse_warhorse_chain", ":agent_no", ":troop_no"),
(try_end)
])]],
Ошибки больше не появляются, но в идвентаре и на поле когда есть ничейная лошадь, то триггер не срабатывает и лошадь получается прозрачной.
Вот как тут быть, чтобы и ошибки не возникало, но в то же время чтобы триггер срабатывал? Может быть в случае когда условие (agent_is_active, ":agent_no") не срабатывает сделать блок else и вызвать (call_script, "script_shield_item_set_banner", "tableau_wse_warhorse_chain", 0, 0) или как то так?
-
http://forums.taleworlds.com/index.php/topic,112508.0.html (http://forums.taleworlds.com/index.php/topic,112508.0.html)
По тутору делал все:))) скопировал папку Натив, переименовал, кинул ту да же. В модульке прописал путь, запускаю бат файл (в модульке), он мне пишет, что "python не является внутр. или внешней командой, исполняемой командой или пакетным файлом.". А в конце: Не удается найти "...путь к папке модульной системы/Module System 1.143/*.pyc"
Что делать?:)
-
Mr.Fire (http://rusmnb.ru/index.php?action=profile;u=23393), вот решение ,хотя там где "это тутор"можно было найти это решение ,оно есть .Открой файл бат блокнотом или чем ты там его открываешь,и напиши перед всеми python process_........py,вот так: C:\Python26\ -где Python26 название твоего питона,а C -это диск на котором он у тебя установлен.
В итоге следующие:
C:\Python26\python process_init.py
C:\Python26\python process_global_variables.py
C:\Python26\python process_strings.py
C:\Python26\python process_skills.py
C:\Python26\python process_music.py
C:\Python26\python process_animations.py
C:\Python26\python process_meshes.py
C:\Python26\python process_sounds.py
C:\Python26\python process_skins.py
C:\Python26\python process_map_icons.py
C:\Python26\python process_factions.py
C:\Python26\python process_items.py
C:\Python26\python process_scenes.py
C:\Python26\python process_troops.py
C:\Python26\python process_particle_sys.py
C:\Python26\python process_scene_props.py
C:\Python26\python process_tableau_materials.py
C:\Python26\python process_presentations.py
C:\Python26\python process_party_tmps.py
C:\Python26\python process_parties.py
C:\Python26\python process_quests.py
C:\Python26\python process_scripts.py
C:\Python26\python process_mission_tmps.py
C:\Python26\python process_game_menus.py
C:\Python26\python process_simple_triggers.py
C:\Python26\python process_dialogs.py
C:\Python26\python process_global_variables_unused.py
P.S. В следующий раз поюзай форум,это решение есть в теме ,про модульку и её установку
-
Mr.Fire Возможно, у тебя сам Питон попался бракованный. Такое случается. Найди в нём файл python.exe (если он там есть) и запусти. Должно открыться окно. Если такого файла нет или он не работает, то надо искать другой Питон. Python 2.7.2 тоже подходит.
-
Python 2.7.2 тоже подходит.
У меня такой же глюк был на питоне 2.7, только не помню точно был это 2.7.1. или 2.7.2. Проявлялся не всегда, но бывало, и не один раз. Так что советую использовать старый добрый Python 2.6 (лично я использую 2.6.5, и он у меня никогда не глючил).
Вполне возможно Mr.Fire (http://rusmnb.ru/index.php?action=profile;u=23393), просто не прописал питон в переменных средах, или вообще его не установил. Не факт что так есть, но я тут уже много всяких личностей повидал, так что и это возможно :))
-
У меня такой же глюк был на питоне 2.7, только не помню точно был это 2.7.1. или 2.7.2.
я вообще не смог им пользоваться,не идёт и всё, только 2.6
-
Кто же знает рабочий для мультиплеера скрипт урона по площади?
Перепробовал все возможные, что нашёл, где-то умирают толпы, а где-то за меня боты убиваю других ботов (((
-
Пробовал уже указывать путь к файлу. Это не помогло.
Поставил питон 2.7, так же не заработал. Выводит все те же строки. Мб что-то в настройке питона, он его не видит? Вин7, 64.
Там было написано, как внедрить в систему, но для ХР и Виста+) для семерки нужно?
-
Там было написано, как внедрить в систему, но для ХР и Виста+) для семерки нужно?
вот есть и для 7 http://rusmnb.ru/index.php?topic=2940.0 (http://rusmnb.ru/index.php?topic=2940.0) , извини прямо пальцем показать не могу ,прогресс ещё не дошёл
-
HunterWolf, благодарю за совет штудирования тем по модульной системе, но так и не удалось найти описания изменения стоимости апгрейда войск(( В дгугой теме (откуда ты и направил меня сюда) писал о проблеме
И действительно, по какой-то причине изменения произведенные в файле Troops в игре не имеют результата. Всё также как и до него. Изменения касались правки характеристик юнитов (мощный удар, атлетика и т.п.) и их навыков в обращении с оружием.
Проблема оказалась лишь в начале новой игры. Похоже что файл сохранения привязывает параметры юнитов в её начале и дальнейшие изменения в Troops.тхт не влияют на старое сохранение(( Неужели нету возможности в сейв внести правки?! Потому что корректировка вещей в ITEMS, и другие файлы параметров игры, эти же правки вносит без проблем.
-
Неужели нету возможности в сейв внести правки?! Потому что корректировка вещей в ITEMS, и другие файлы параметров игры, эти же правки вносит без проблем.
В трупсах переодеть можно без сейвов, правки в сейв не внести.
изменения стоимости апгрейда войск(
Завтра скину место где это в модульке
Добавлено: 09 Апреля, 2012, 21:28
Зы. Если кто помнит сразу где это ответте
-
Неужели нету возможности в сейв внести правки?! Потому что корректировка вещей в ITEMS, и другие файлы параметров игры, эти же правки вносит без проблем.
В трупсах переодеть можно без сейвов, правки в сейв не внести.
изменения стоимости апгрейда войск(
Завтра скину место где это в модульке
Добавлено: 09 Апреля, 2012, 21:28
Зы. Если кто помнит сразу где это ответте
Нет, не переодеть, а изменить умения (сильный удар, атлетика и тп) С переодевалкой всё работает. Именно умения почему то требуют начала новой игры. Я использовал Troops editor Morghs_MB_Warband_Tool_v135 может быть более новую версию установить? Версия игры 1.134 русс лиценз.
-
Завтра скину место где это в модульке
Так. 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, число) -- цена за переход. Поставь число в ноль -- цена нулевая.
Именно умения почему то требуют начала новой игры.
А что такого? Можно и вещи из сейва брать, если строчку в ини поставить. Умения, думаю, можно будет править через скрипты, если не начинать новую игру.
-
Спасибо! Муурн, какие скрипты подскажи?))
-
Кхем? Я написал тебе, какие. Смотри мой пост.
script_game_get_upgrade_cost -- этот.
-
Ты похоже прочитал не совсем внимательно, то что ты писал:) Я спрашиваю о скриптах для правки в файле сохранения параметров юнитов (первичных навыков), а не стоимость апгрейда. Чтобы не было необходимости начинать новую игру для применения изменений.
-
Ты потребовал скрипты. Да. Какие? Потому пиши точнее. :) Теперь по твоему вопросу. Скрипты писать необходимо самому. Для этого необходимы module_triggers и, думаю, module_scripts. Далее разбирай скрипты разрабов, читай учебники, ищи алгоритмы. Так я сразу не напишу.
-
Вообще то я вот немного внесу ясностьGefest86 (http://rusmnb.ru/index.php?action=profile;u=23879),
Уважаемый, я не думаю, что разработка скриптов которые позволяют играть на сохранёнках- это адекватное применения для вашего времени и тех у кого вы спрашиваете. За это время вы сто раз бы успели начать игру заново. Есть читы(что бы добиться прежних достижений), есть экспорт перса. Это всяко проще быстрее и проще чем тратить время на то что бы придумывать какие то обходные пути.
-
Многие наверное заметили, играя в старый МиБ, что лица ботов в отряде игрока сохраняются из битвы в битву. В Варбанде такой особенности уже нет.
Если кто-то думает, что мне это просто померещилось, проверте. Начните новую игру в старом МиБе, наберите 5-10 рекрутов и бомбите с ними мелкие банды. Забомнити лица всех ботов и вы увидите, что они сохраняются даже когда боты абгрейтятся. Можно следить, как рекрут бот прокачивается в рыцаря, сохраняя своё лицо.
Объяснить это, лишь одной и той же последовательностью случайных кодов лиц при загрузке сцены, неполучается. Так как, именно убитый бот выбывает из отряда, а не какой-то, принятый последним в отряд.
Скрипты приёма в отряд новых ботов в МиБ и WB совершенно одинаковые. Наверное изменения введены в сами функции игры. Вероятно решили, что эта фишка никому не нужна. А жаль!
-
Объяснить это, лишь одной и той же последовательностью случайных кодов лиц при загрузке сцены, неполучается.
Вероятно решили, что эта фишка никому не нужна.
У ботов есть ДНК. Её можно узнавать и прописывать при добавлении.
Не уверен, что изменения где-то в глубине. ДНК не очень осторожной работой с партиями в скриптах можно убить только так.
Так или иначе, в теории эту фишку можно попытаться восстановить.
Хранить ДНК и аккуратно её восстанавливать, когда игра потёрла.
-
У ботов есть ДНК. Её можно узнавать и прописывать при добавлении.
ДНК - это код лица? Непонимаю.
Я думал, что во время найма генерируется какой-то код, который сохраняется в чём-то вроде слота или трупса. Причём, кол. слотов должно равняться кол. стеков в отряде. Первыми абгрейдятся боты стоящие последними в стеке.
Думаю, во время спауна код заносится в переменную типа Randseed и в сооответствии с псевдослучайныим числами боту генерируется код лица и его снаряжение.
Я пробовал перекидовать Нативу из МиБ в Варбанд. Лица перестают сохраняться. Значит эта фишка забита в движок.
На турнире боты загоняются в трупс и тем самым временно получают индивидуальность. Им можно каждому дать имя пока идёт турнир. Если б и лица сохранять, было бы совсем идеально.
-
ДНК - это код лица? Непонимаю.
DNA,
e.g.
(party_stack_get_troop_dna,destination, party_id, stack_no),
(set_visitor,entry_no, troop_id, dna),
Думаю, во время спауна код заносится в переменную типа Randseed и в сооответствии с псевдослучайныим числами боту генерируется код лица и его снаряжение.
Именно так.
Я пробовал перекидовать Нативу из МиБ в Варбанд. Лица перестают сохраняться. Значит эта фишка забита в движок.
Значит, теперь только явно храня и прописывая днк.
-
Я пробовал всем ботам в турнире прописать вот так:
(set_visitor,entry_no, troop_id, 11111111),
Действительно, в одном раунде у ботов лица почти одинаковые. Только у одних есть борода, а у других нет.
Когда же начинается следущий раунд, лица тоже одинаковые, но уже совершенно другие.
Как будто, кроме ДНК ещё и текущее время учитывается. =/
-
Мда, походу действительно совсем угробили фичу :(
-
Ну есть ещё маленькая надежда. Лицо повторяется в диалоге с ботом своего отряда.
В диалогах с разбойниками и дезертирами лица не повторяются. Хотя, прописано всё одинаково. Вроде бы. Если понять в чём разница, то может что-то выйдет. =/
-
Уважаемые разобравшиеся в модульной подскажите пожалуйста, где искать корректировку лута после осады замка и города, и есть ли возможность добавить туда скрипт который позволит в моде при разделении добычи(трофеев) с союзниками находить что-то типа бутылей с вином или бочек с элем? =))))
-
Dantares (http://rusmnb.ru/index.php?action=profile;u=16528), Собственно просто в моргс идиторе положить по два(от количества будет зависеть сколько их в луте буде, но не один, иначе не выпадет) предмета каждого вида, любому из членов отряда(караван, военный отряд, разбойники). И вуаля после боя будут эти вещи в луте. Как такого лута после осады нет есть лут после сражения(просто отряд). Добавь туда и всё(правда и в полевых сражениях будет выпадать) тогда добавь элите, тогда будешь редко встречать как и элиту.
-
HunterWolf (http://rusmnb.ru/index.php?action=profile;u=20773), какой варварский путь :).
Есть скрипт "party_calculate_loot", самое простое, что можно сделать - после первого блока
(try_begin),
(party_slot_ge,"$g_enemy_party",slot_town_wealth,1),
(party_get_slot,":wealth","$g_enemy_party",slot_town_wealth),
(troop_add_gold,"trp_player",":wealth"),
(try_end),
добавить например такой(try_begin),
(is_between,"$g_enemy_party",walled_centers_begin,walled_centers_end),
(troop_add_item,"trp_temp_troop","itm_ale"),
(troop_add_item,"trp_temp_troop","itm_ale"),
(troop_add_item,"trp_temp_troop","itm_wine"),
(troop_add_item,"trp_temp_troop","itm_furs"),
(try_end),
но можно и усложнить - учесть, какой товар изобилует на местном рынке, какой характер у владельца замка/города, когда город последний раз грабили... добавлять по вкусу, вобщем.
-
ух, здорово! Спасибо за предложенные варианты! опробую оба=) просто если поставить в модульку, то потом можно не опасаться пропадания скрипта при изменениях в ней, да и добавить много вкусностей хочется=))) и спасибо за ссылку на TW. последний раз был там года полтора назад, и уже забыл местоположение=)))
-
Подскажите, какие файлы из модульки отвечают за построение ботов на поле боя (удерживание позиции, выстраивание в несколько рядов и др.)?
-
ValerBOSS (http://rusmnb.ru/index.php?action=profile;u=19867), в этих ищи
module_mission_templates.py
module_scripts.py
module_constants.py
и в презентациях есть. но там за команды отдаваемые игроком. в основном отображение
ну и смотря в каком модуле смотришь.
-
Легионер (http://rusmnb.ru/index.php?action=profile;u=17320), спасибо, сейчас посмотрю.
-
Доброго времени суток вопрос нуба, работать надо в модульной в модуль_скриптс.пи так? там есть(модуль NMC 1.0 beta) интересная строка для караванов и логова бандитов, и отсюда вопрос второй: может имеет смысл добавить в блог
(assign, ":num_looted_items",0),
(try_begin),
(this_or_next|party_slot_eq, "$g_enemy_party", slot_party_type, spt_kingdom_caravan),
(this_or_next|party_slot_eq, "$g_enemy_party", slot_party_type, spt_bandit_lair),
после этой строки схожую фразу про города и замки и затем добавиль схожий момент просто копи пастом в этом месте(else_try),
(party_slot_eq, "$g_enemy_party", slot_party_type, spt_bandit_lair),
(val_div, ":plunder_amount", 2),
(reset_item_probabilities, 1),
(assign, ":range_min", food_begin),
(assign, ":range_max", food_end),
для города и замка? и тогда получим результат лутинга богатств соответственно городов и замков? ведь данные прописи как аз понял(надеюсь правильно) как раз и позволяют не категорично прописывать для каждого замка и города характер таваров но позволяют модульной рассчитать какие тавары будут характерны для области и добавлять их в лут так?
-
Можно вот так видоизменить
(assign, ":num_looted_items",0),
(try_begin),
(this_or_next|party_slot_eq, "$g_enemy_party", slot_party_type, spt_kingdom_caravan),
(this_or_next|party_slot_eq, "$g_enemy_party", slot_party_type, spt_bandit_lair),
(this_or_next|is_between,"$g_enemy_party",towns_begin,towns_end),
(try_begin),
(party_slot_eq, "$g_enemy_party", slot_party_type, spt_kingdom_caravan),
(reset_item_probabilities, 100),
(assign, ":range_min", trade_goods_begin),
(assign, ":range_max", trade_goods_end),
(else_try),
(is_between,"$g_enemy_party",towns_begin,towns_end),
(reset_item_probabilities, 100),
(assign, ":range_min", trade_goods_begin),
(assign, ":range_max", trade_goods_end),
-
в итоге у меня пока получается так
try_begin),
(this_or_next|party_slot_eq, "$g_enemy_party", slot_party_type, spt_kingdom_caravan),
(this_or_next|party_slot_eq, "$g_enemy_party", slot_party_type, spt_town),
(this_or_next|party_slot_eq, "$g_enemy_party", slot_party_type, spt_castle),
(this_or_next|party_slot_eq, "$g_enemy_party", slot_party_type, spt_bandit_lair),
(party_slot_eq, "$g_enemy_party", slot_party_type, spt_village_farmer),
(store_mul, ":plunder_amount", player_loot_share, 30),
(val_mul, ":plunder_amount", "$g_strength_contribution_of_player"),
(val_div, ":plunder_amount", 100),
(val_div, ":plunder_amount", ":num_player_party_shares"),
(try_begin),
(party_slot_eq, "$g_enemy_party", slot_party_type, spt_kingdom_caravan),
(reset_item_probabilities, 100),
(assign, ":range_min", trade_goods_begin),
(assign, ":range_max", trade_goods_end),
(else_try),
(party_slot_eq, "$g_enemy_party", slot_party_type, spt_town),
(reset_item_probabilities, 100),
(assign, ":range_min", trade_goods_begin),
(assign, ":range_max", trade_goods_end),
(else_try),
(party_slot_eq, "$g_enemy_party", slot_party_type, spt_castle),
(reset_item_probabilities, 100),
(assign, ":range_min", trade_goods_begin),
(assign, ":range_max", trade_goods_end),
(else_try),
(party_slot_eq, "$g_enemy_party", slot_party_type, spt_bandit_lair),
(val_div, ":plunder_amount", 2),
и просьба посмотреть правильно ли я сделал?
-
Да, верно, хотя при таком распределении лута можно сократить текст чуток, результат будет такой же
try_begin),
(this_or_next|party_slot_eq, "$g_enemy_party", slot_party_type, spt_kingdom_caravan),
(this_or_next|party_slot_eq, "$g_enemy_party", slot_party_type, spt_town),
(this_or_next|party_slot_eq, "$g_enemy_party", slot_party_type, spt_castle),
(this_or_next|party_slot_eq, "$g_enemy_party", slot_party_type, spt_bandit_lair),
(party_slot_eq, "$g_enemy_party", slot_party_type, spt_village_farmer),
(store_mul, ":plunder_amount", player_loot_share, 30),
(val_mul, ":plunder_amount", "$g_strength_contribution_of_player"),
(val_div, ":plunder_amount", 100),
(val_div, ":plunder_amount", ":num_player_party_shares"),
(try_begin),
(this_or_next|party_slot_eq, "$g_enemy_party", slot_party_type, spt_town),
(this_or_next|party_slot_eq, "$g_enemy_party", slot_party_type, spt_castle),
(party_slot_eq, "$g_enemy_party", slot_party_type, spt_kingdom_caravan),
(reset_item_probabilities, 100),
(assign, ":range_min", trade_goods_begin),
(assign, ":range_max", trade_goods_end),
(else_try),
(party_slot_eq, "$g_enemy_party", slot_party_type, spt_bandit_lair),
(val_div, ":plunder_amount", 2),
-
Ух ты!!!! :thumbup: и в правду так изящнее и легковеснее, Супер! Спасибо! :thumbup: и в итоге все строки в тему ;)
-
У меня 2-а вопроса, если в Morghs M&B Warband Tool создать нового юнита сделать его наемником, то:
1. будет ли это работать?
2. как сунуть его в таверну?
-
Чтоб вновь созданный наёмник появлялся в тавернах, его надо вставлять среди юнитов-наёмников. Между trp_watchman и trp_mercenaries_end. Это самый простой способ.
-
FinGall (http://rusmnb.ru/index.php?action=profile;u=19251), спасибо, сообщу когда запашет
Добавлено: 24 Мая, 2012, 20:58
FinGall (http://rusmnb.ru/index.php?action=profile;u=19251), не помогло, он мне все сносит в игре, т.е. вместо торговца со мной разговаривает Укротитель лошадей, а бандитов нападает 2а в самом начале
-
Доброго времени суток уважаемые! Предыстория : в лордс и рилмс наткнулся на вкусный скрипт найма в таверне у тавернщика первоуровневых волонтеров, что логично есть наемники которых можно нанять лично а есть те кого можно нанять опосредованно. Попытка прописать в варбанде скрипт для натива взятый отсюда(там вроде вообще изначально под версию .808?!) http://forums.taleworlds.com/index.php?topic=70749.0 (http://forums.taleworlds.com/index.php?topic=70749.0)
успеха не добился, хоть и делал по интсрукции. за двое суток опробовал разные варианты... но так и не добился успеха... может ктото подскажет более корректный способ введения этого скрипта в модульку? Модулька ругается на скрипт3 из примера, удивлен поскольку вроде бы все написано логично(но ведь не программер :embarrassed:)
-
Dantares (http://rusmnb.ru/index.php?action=profile;u=16528), ты прописывал в файлы с расширением .ру или в .txt??
-
:blink: .Py, только пи=))) а зачем в тхт? :-\
Может обьяснишь свой вопрос?
-
Ну смотри там написано заносить все в файлы модульной системы аля: constans.py
Ты туторы читал, питон установил, и куда все вписывал вообще?
-
именно так и делал=) :p у тебя сработало? пробовал?
-
у себя нет у меня проблема с тем что питон в "Pach" я прописал неверно, терь думаю как прописывать :D
-
:D ясно, вот и ответ, нашел надо правильно читать сообщения об ошибках.. Ндя! Ну перепропиши и все=) там много ссылок было. питон с нуля мне придется учить, что-ли? Попал...
И еще интереснее, написано разными вариантами питона=) вот такая засадка=)
или нет?! знаний програмирования не хватает катастрофически=)
-
нашел надо правильно читать сообщения об ошибках.
А если выкладывать лог сообщения на сайт то тогда и другие не на пальцах смогут понимать в чём же у тебя ошибка
Зы.
-
WARNING: Global variable never used: $cam_mode
WARNING: Global variable never used: $g_camera_z
WARNING: Global variable never used: $g_camera_y
WARNING: Global variable never used: $g_camera_x
WARNING: Global variable never used: $cam_mode
WARNING: Global variable never used: $cam_mode
WARNING: Global variable never used: $cam_mode
WARNING: Global variable never used: $key_camera_forward
WARNING: Global variable never used: $key_camera_backward
WARNING: Global variable never used: $key_camera_left
WARNING: Global variable never used: $key_camera_right
WARNING: Global variable never used: $key_camera_zoom_min
WARNING: Global variable never used: $key_camera_zoom_min
WARNING: Global variable never used: $key_camera_next
WARNING: Global variable never used: $key_camera_prev
WARNING: Global variable never used: $fplayer_agent_no
WARNING: Global variable never used: $cam_current_agent
WARNING: Global variable never used: $fplayer_agent_no
WARNING: Global variable never used: $cam_current_agent
WARNING: Global variable never used: $cam_mode
WARNING: Global variable never used: $cam_free
WARNING: Global variable never used: $key_camera_next
WARNING: Global variable never used: $key_camera_prev
WARNING: Global variable never used: $key_camera_forward
WARNING: Global variable never used: $g_camera_y
WARNING: Global variable never used: $g_camera_y
WARNING: Global variable never used: $key_camera_backward
WARNING: Global variable never used: $g_camera_y
WARNING: Global variable never used: $g_camera_y
WARNING: Global variable never used: $key_camera_left
WARNING: Global variable never used: $g_camera_x
WARNING: Global variable never used: $g_camera_x
WARNING: Global variable never used: $key_camera_right
WARNING: Global variable never used: $g_camera_x
WARNING: Global variable never used: $g_camera_x
WARNING: Global variable never used: $key_camera_zoom_plus
WARNING: Global variable never used: $g_camera_z
WARNING: Global variable never used: $g_camera_z
WARNING: Global variable never used: $key_camera_zoom_min
WARNING: Global variable never used: $g_camera_z
WARNING: Global variable never used: $g_camera_z
WARNING: Global variable never used: $g_camera_z
WARNING: Global variable never used: $cam_mode
WARNING: Global variable never used: $cam_mode
WARNING: Global variable never used: $g_next_pay_time
WARNING: Global variable never used: $g_next_pay_time
WARNING: Global variable never used: $g_next_pay_time
WARNING: Global variable never used: $g_player_affiliated_troop
WARNING: Global variable never used: $g_player_affiliated_troop
WARNING: Global variable never used: $g_jrider_pres_called_from_menu
WARNING: Global variable never used: $g_character_presentation_type
WARNING: Global variable never used: $g_player_affiliated_troop
WARNING: Global variable never used: $return_menu
WARNING: Global variable never used: $inventory_menu_offset
WARNING: Global variable never used: $current_camp_party
WARNING: Global variable never used: $current_camp_party
WARNING: Global variable never used: $current_camp_party
WARNING: Global variable never used: $current_camp_party
WARNING: Global variable never used: $current_camp_party
WARNING: Global variable never used: $current_camp_party
WARNING: Global variable never used: $current_camp_party
WARNING: Global variable never used: $entrench_time
WARNING: Global variable never used: $g_persuasion_success_count
WARNING: Global variable never used: $g_persuasion_success_count
WARNING: Global variable never used: $g_persuasion_success_count
WARNING: Global variable never used: $g_persuasion_success_count
WARNING: Global variable never used: $g_persuasion_success_limit
WARNING: Global variable never used: $g_persuasion_success_limit
WARNING: Global variable never used: $g_duel_result
WARNING: Global variable never used: $g_duel_result
WARNING: Global variable never used: $g_duel_result
WARNING: Global variable never used: $g_duel_vis_point_opp
WARNING: Global variable never used: $g_duel_vis_point_plyr
WARNING: Global variable never used: $g_duel_result
WARNING: Global variable never used: $g_duel_result
WARNING: Global variable never used: $g_dplmc_terrain_advantage
WARNING: Global variable never used: $g_dplmc_terrain_advantage
WARNING: Global variable never used: $g_dplmc_terrain_advantage
WARNING: Global variable never used: $g_dplmc_terrain_advantage
WARNING: Global variable never used: $g_move_fast
WARNING: Global variable never used: $g_player_end_hp
WARNING: Global variable never used: $g_player_end_hp
WARNING: Global variable never used: $g_player_begin_hp
WARNING: Global variable never used: $g_player_begin_hp
WARNING: Global variable never used: $g_player_end_hp
WARNING: Global variable never used: $g_player_end_hp
WARNING: Global variable never used: $return_menu
WARNING: Global variable never used: $g_player_culture
WARNING: Global variable never used: $diplomacy_var
WARNING: Global variable never used: $diplomacy_var
WARNING: Global variable never used: $g_player_chamberlain
WARNING: Global variable never used: $diplomacy_var
WARNING: Global variable never used: $diplomacy_var
WARNING: Global variable never used: $diplomacy_var
WARNING: Global variable never used: $diplomacy_var
WARNING: Global variable never used: $g_player_chamberlain
WARNING: Global variable never used: $diplomacy_var
WARNING: Global variable never used: $diplomacy_var
WARNING: Global variable never used: $diplomacy_var
WARNING: Global variable never used: $diplomacy_var
WARNING: Global variable never used: $g_player_chamberlain
WARNING: Global variable never used: $diplomacy_var
WARNING: Global variable never used: $diplomacy_var
WARNING: Global variable never used: $g_player_chamberlain
WARNING: Global variable never used: $g_player_chamberlain
WARNING: Global variable never used: $g_buy_foods_when_leaving
WARNING: Global variable never used: $g_sell_items_when_leaving
WARNING: Global variable never used: $g_cur_stack
WARNING: Global variable never used: $g_player_chamberlain
WARNING: Global variable never used: $g_buy_foods_when_leaving
WARNING: Global variable never used: $g_sell_items_when_leaving
WARNING: Global variable never used: $g_auto_sell_price_limit
WARNING: Global variable never used: $g_player_chamberlain
WARNING: Global variable never used: $g_move_fast
WARNING: Global variable never used: $return_menu
WARNING: Global variable never used: $g_gether_npcs
WARNING: Global variable never used: $pool_troop
WARNING: Global variable never used: $pool_troop
WARNING: Global variable never used: $pool_troop
WARNING: Global variable never used: $inventory_menu_offset
WARNING: Global variable never used: $pool_troop
WARNING: Global variable never used: $inventory_menu_offset
WARNING: Global variable never used: $pool_troop
WARNING: Global variable never used: $g_price_threshold_for_picking
WARNING: Global variable never used: $pool_troop
WARNING: Global variable never used: $return_menu
WARNING: Global variable never used: $pool_troop
WARNING: Global variable never used: $return_menu
WARNING: Global variable never used: $g_gether_npcs
WARNING: Global variable never used: $g_gether_npcs
WARNING: Global variable never used: $g_add_bandit_heroes
WARNING: Global variable never used: $g_add_bandit_heroes
WARNING: Global variable never used: $g_player_chamberlain
WARNING: Global variable never used: $g_player_chamberlain
WARNING: Global variable never used: $demanded_castle
WARNING: Global variable never used: $demanded_castle
WARNING: Global variable never used: $demanded_castle
WARNING: Global variable never used: $demanded_castle
WARNING: Global variable never used: $demanded_castle
WARNING: Global variable never used: $demanded_castle
WARNING: Global variable never used: $demanded_castle
WARNING: Global variable never used: $demanded_castle
WARNING: Global variable never used: $g_player_chamberlain
WARNING: Global variable never used: $g_player_chamberlain
WARNING: Global variable never used: $g_player_constable
WARNING: Global variable never used: $g_constable_training_center
WARNING: Global variable never used: $g_player_chancellor
WARNING: Global variable never used: $diplomacy_var
WARNING: Global variable never used: $diplomacy_var
WARNING: Global variable never used: $diplomacy_var
WARNING: Global variable never used: $diplomacy_var
WARNING: Global variable never used: $diplomacy_var
WARNING: Global variable never used: $diplomacy_var
WARNING: Global variable never used: $diplomacy_var
WARNING: Global variable never used: $diplomacy_var
WARNING: Global variable never used: $diplomacy_var
WARNING: Global variable never used: $diplomacy_var
WARNING: Global variable never used: $diplomacy_var
WARNING: Global variable never used: $diplomacy_var
WARNING: Global variable never used: $diplomacy_var
WARNING: Global variable never used: $g_players_policy_set
WARNING: Global variable never used: $g_dplmc_horse_speed
WARNING: Global variable never used: $g_dplmc_horse_speed
WARNING: Global variable never used: $g_dplmc_horse_speed
WARNING: Global variable never used: $g_dplmc_horse_speed
WARNING: Global variable never used: $g_dplmc_battle_continuation
WARNING: Global variable never used: $g_dplmc_battle_continuation
WARNING: Global variable never used: $g_dplmc_battle_continuation
WARNING: Global variable never used: $g_dplmc_battle_continuation
WARNING: Global variable never used: $g_dplmc_terrain_advantage
WARNING: Global variable never used: $g_dplmc_terrain_advantage
WARNING: Global variable never used: $g_dplmc_terrain_advantage
WARNING: Global variable never used: $g_dplmc_terrain_advantage
WARNING: Global variable never used: $g_dplmc_terrain_advantage
WARNING: Global variable never used: $g_dplmc_terrain_advantage
WARNING: Global variable never used: $g_dplmc_terrain_advantage
WARNING: Global variable never used: $g_dplmc_terrain_advantage
WARNING: Global variable never used: $g_dplmc_lord_recycling
WARNING: Global variable never used: $g_dplmc_lord_recycling
WARNING: Global variable never used: $g_dplmc_lord_recycling
WARNING: Global variable never used: $g_dplmc_lord_recycling
WARNING: Global variable never used: $g_dplmc_lord_recycling
WARNING: Global variable never used: $g_dplmc_lord_recycling
WARNING: Global variable never used: $g_dplmc_lord_recycling
WARNING: Global variable never used: $g_dplmc_lord_recycling
WARNING: Global variable never used: $g_dplmc_lord_recycling
WARNING: Global variable never used: $g_dplmc_lord_recycling
WARNING: Global variable never used: $g_dplmc_ai_changes
WARNING: Global variable never used: $g_dplmc_ai_changes
WARNING: Global variable never used: $g_dplmc_ai_changes
WARNING: Global variable never used: $g_dplmc_ai_changes
WARNING: Global variable never used: $g_dplmc_ai_changes
WARNING: Global variable never used: $g_dplmc_ai_changes
WARNING: Global variable never used: $g_dplmc_ai_changes
WARNING: Global variable never used: $g_dplmc_ai_changes
WARNING: Global variable never used: $g_dplmc_ai_changes
WARNING: Global variable never used: $g_dplmc_ai_changes
WARNING: Global variable never used: $g_dplmc_ai_changes
WARNING: Global variable never used: $g_dplmc_ai_changes
WARNING: Global variable never used: $g_dplmc_ai_changes
WARNING: Global variable never used: $g_dplmc_ai_changes
WARNING: Global variable never used: $g_dplmc_gold_changes
WARNING: Global variable never used: $g_dplmc_gold_changes
WARNING: Global variable never used: $g_dplmc_gold_changes
WARNING: Global variable never used: $g_dplmc_gold_changes
WARNING: Global variable never used: $g_dplmc_gold_changes
WARNING: Global variable never used: $g_dplmc_gold_changes
WARNING: Global variable never used: $g_dplmc_gold_changes
WARNING: Global variable never used: $g_dplmc_gold_changes
WARNING: Global variable never used: $g_dplmc_gold_changes
WARNING: Global variable never used: $g_dplmc_gold_changes
WARNING: Global variable never used: $g_dplmc_gold_changes
WARNING: Global variable never used: $g_dplmc_gold_changes
WARNING: Global variable never used: $g_dplmc_gold_changes
WARNING: Global variable never used: $g_dplmc_gold_changes
WARNING: Global variable never used: $g_player_debt
WARNING: Global variable never used: $g_player_debt
WARNING: Global variable never used: $g_player_debt
WARNING: Global variable never used: $g_player_debt
WARNING: Global variable never used: $g_player_debt
WARNING: Global variable never used: $g_player_deposit
WARNING: Global variable never used: $g_player_debt
WARNING: Global variable never used: $g_player_debt
WARNING: Global variable never used: $g_player_debt
WARNING: Global variable never used: $g_player_debt
WARNING: Global variable never used: $g_player_debt
WARNING: Global variable never used: $g_player_debt
WARNING: Global variable never used: $g_player_debt
WARNING: Global variable never used: $g_player_debt
WARNING: Global variable never used: $g_player_debt
WARNING: Global variable never used: $g_player_debt
WARNING: Global variable never used: $g_player_deposit
WARNING: Global variable never used: $g_player_deposit
WARNING: Global variable never used: $g_player_deposit
WARNING: Global variable never used: $g_player_deposit
WARNING: Global variable never used: $g_player_deposit
WARNING: Global variable never used: $g_player_deposit
WARNING: Global variable never used: $g_player_deposit
WARNING: Global variable never used: $g_player_deposit
WARNING: Global variable never used: $drowning
WARNING: Global variable never used: $drowning
WARNING: Global variable never used: $drowning
WARNING: Global variable never used: $drowning
WARNING: Global variable never used: $g_next_pay_time
WARNING: Global variable never used: $g_next_pay_time
WARNING: Global variable never used: $g_next_pay_time
WARNING: Global variable never used: $g_dplmc_gold_changes
WARNING: Global variable never used: $g_dplmc_gold_changes
WARNING: Global variable never used: $g_dplmc_gold_changes
WARNING: Global variable never used: $g_dplmc_ai_changes
WARNING: Global variable never used: $g_dplmc_terrain_advantage
WARNING: Global variable never used: $g_dplmc_terrain_advantage
WARNING: Global variable never used: $g_dplmc_terrain_advantage
WARNING: Global variable never used: $g_player_chamberlain
WARNING: Global variable never used: $g_dplmc_gold_changes
WARNING: Global variable never used: $g_player_affiliated_troop
WARNING: Global variable never used: $g_player_affiliated_troop
WARNING: Global variable never used: $g_player_affiliated_troop
WARNING: Global variable never used: $g_morale_threshold
WARNING: Global variable never used: $g_morale_threshold
WARNING: Global variable never used: $g_twice_consum_food
WARNING: Global variable never used: $g_twice_consum_food
WARNING: Global variable never used: $g_add_bandit_heroes
WARNING: Global variable never used: $g_player_chancellor
WARNING: Global variable never used: $g_player_constable
WARNING: Global variable never used: $g_constable_training_center
WARNING: Global variable never used: $g_constable_training_center
WARNING: Global variable never used: $g_constable_training_center
WARNING: Global variable never used: $g_constable_training_type
WARNING: Global variable never used: $g_constable_training_improved
WARNING: Global variable never used: $g_constable_training_improved
WARNING: Global variable never used: $g_dplmc_lord_recycling
WARNING: Global variable never used: $g_player_affiliated_troop
WARNING: Global variable never used: $g_player_constable
WARNING: Global variable never used: $g_player_chancellor
WARNING: Global variable never used: $g_player_constable
WARNING: Global variable never used: $g_player_chancellor
WARNING: Global variable never used: $g_player_chamberlain
WARNING: Global variable never used: $g_player_chamberlain
WARNING: Global variable never used: $g_player_deposit
WARNING: Global variable never used: $g_player_deposit
WARNING: Global variable never used: $g_player_debt
WARNING: Global variable never used: $entrench_time
WARNING: Global variable never used: $current_camp_party
WARNING: Global variable never used: $current_camp_party
WARNING: Global variable never used: $current_camp_party
WARNING: Global variable never used: $entrench_time
WARNING: Global variable never used: $current_camp_party
WARNING: Global variable never used: $current_camp_party
WARNING: Global variable never used: $current_camp_party
WARNING: Global variable never used: $current_camp_party
Exporting postfx_params...
All Finish ...
Cleaning up...
______________________________
Script processing has ended.
Press any key to exit. . .
скопировало только треть=( причем нижнюю
часть первая
Getting Header Files .........
Getting ID Files .........
Getting Process Files .........
Start Processing...
______________________________
Initializing...
Traceback (most recent call last):
File "process_global_variables.py", line 6, in <module>
from module_dialogs import *
File "D:\Program Files\Mount&Blade - Warband\Modules\NMC Full 1.0 Source\modul
e_dialogs.py", line 33973
"tavernkeeper_buy_peasants_2",[(set_mercenary_source_party,"$tavernkeeper_pa
rty"),"$tavernkeeper_party"),(change_screen_buy_mercenaries)]]],
^
SyntaxError: invalid syntax
Exporting strings...
Exporting skills...
Exporting tracks...
Exporting animations...
Exporting meshes...
Exporting sounds...
Exporting skins...
-
Давай верхнюю в ней судя по предыдущим скринам ошибка
Добавлено: 26 Мая, 2012, 05:00
Вот смотри что написано, строка 33973- в модуле диалог, синтаксическая ошибка, т.е ошибка в написании. Где а фиг знает смотри внимательно, мне так 3 скобки в конце не ясны
-
диалог пи часть первая
#Tavern recruitment and ale START 1/2
[anyone|plyr,"tavernkeeper_talk", [
(store_current_hours,":cur_hours"),
(val_sub, ":cur_hours", 24),
(gt, ":cur_hours", "$buy_drinks_last_time"),
], "I'd like to buy me and my men a barrel of your best ale.", "tavernkeeper_buy_drinks_troops",[]],
[anyone,"tavernkeeper_buy_drinks_troops",
[
], "Of course, {my lord/my lady}. I reckon {reg5} denars should be enough for that. What should I tell the lads?", "tavernkeeper_buy_drinks_troops_2",[
(assign, "$temp", 20),
(store_party_size_wo_prisoners, reg5, "p_main_party"),
(store_mul, "$temp", "$temp", reg5),
(assign, reg5, "$temp"),
]],
[anyone|plyr,"tavernkeeper_buy_drinks_troops_2",
[
(store_troop_gold, ":gold", "trp_player"),
(ge, ":gold", "$temp"),
(str_store_party_name, s10, "$current_town"),
], "The price is fair enough, let my men have at it.", "tavernkeeper_buy_drinks_troops_end",[
]],
[anyone,"tavernkeeper_buy_drinks_troops_end",
[], "Don't worry {sir/madam}. Your men will enjoy their pints.", "tavernkeeper_pretalk",
[
(troop_remove_gold, "trp_player", "$temp"),
(call_script, "script_change_player_party_morale", 20),
(store_current_hours,":cur_hours"),
(assign, "$buy_drinks_last_time", ":cur_hours"),
(rest_for_hours, 2, 5, 0)
]],
[anyone|plyr,"tavernkeeper_buy_drinks_troops_2", [], "Actually, cancel that order.", "tavernkeeper_pretalk",[]],
#Tavern recruitment and ale END 1/2
там же вторая часть
#Tavern recruitment and ale START 2/2
[anyone|plyr,"tavernkeeper_talk", [], "I need to hire some soldiers. Can you help me?", "tavernkeeper_buy_peasants",[]],
[anyone,"tavernkeeper_buy_peasants",
[
(store_encountered_party,reg(3)),
(store_faction_of_party,reg(4),reg(3)),
(store_relation,reg(5),"fac_player_supporters_faction",reg(4)),
(lt, reg(5), -3),
], "I don't think anyone from this town will follow somebody like you. Try your luck elsewhere.", "tavernkeeper_buy_peasants_2",[]],
[anyone,"tavernkeeper_buy_peasants", [], "I know a few fellows who would follow you if you paid for their equipment.",
"tavernkeeper_buy_peasants_2",[(set_mercenary_source_party,"$tavernkeeper_party"),"$tavernkeeper_party"),(change_screen_buy_mercenaries)]]],
[anyone,"tavernkeeper_buy_peasants_2", [], "Anything else?", "tavernkeeper_talk",[]],
#Tavern recruitment and ale END 2/2
восстановлю из быкапа и попробую заново скрипт взял из дамоклова меча
там очень длинная строка но хорошо попробую=)
уф, спасибо вернулся хотя бы к шагу 2(про копирование во время процесса не знал! )
новый вариант проще Getting Header Files .........
Getting ID Files .........
Getting Process Files .........
Start Processing...
______________________________
Initializing...
Compiling all global variables...
Exporting strings...
Exporting skills...
Exporting tracks...
Exporting animations...
Exporting meshes...
Exporting sounds...
Exporting skins...
Exporting map icons...
Creating new tag_uses.txt file...
Creating new quick_strings.txt file...
Exporting faction data...
Exporting item data...
Exporting scene data...
Exporting troops data
Exporting particle data...
Exporting scene props...
Exporting tableau materials data...
Exporting presentations...
Exporting party_template data...
Exporting parties
Exporting quest data...
Exporting info_page data...
Exporting scripts...
Error: Unable to find object:script_add_tavern_troops
ERROR: Illegal Identifier:script_add_tavern_troops
Exporting mission_template data...
Exporting game menus data...
exporting simple triggers...
exporting triggers...
exporting dialogs...
WARNING: Usage of unassigned global variable: $tavernkeeper_party
Checking global variable usages...
WARNING: Global variable never used: $tavernkeeper_party
Imported 35 global variables for saved-game compatability that are not used.
Exporting postfx_params...
All Finish ...
Cleaning up...
______________________________
Script processing has ended.
Press any key to exit. . .
Добавлено: 26 Мая, 2012, 05:14
#Tavern recruitment and ale START 2/2
[anyone|plyr,"tavernkeeper_talk", [], "I need to hire some soldiers. Can you help me?", "tavernkeeper_buy_peasants",[]],
[anyone,"tavernkeeper_buy_peasants",
[
(store_encountered_party,reg(3)),
(store_faction_of_party,reg(4),reg(3)),
(store_relation,reg(5),"fac_player_supporters_faction",reg(4)),
(lt, reg(5), -3),
], "I don't think anyone from this town will follow somebody like you. Try your luck elsewhere.", "tavernkeeper_buy_peasants_2",[]],
[anyone,"tavernkeeper_buy_peasants", [], "I know a few fellows who would follow you if you paid for their equipment.",
"tavernkeeper_buy_peasants_2",[(set_mercenary_source_party,"$tavernkeeper_party", change_screen_buy_mercenaries)]],
[anyone,"tavernkeeper_buy_peasants_2", [], "Anything else?", "tavernkeeper_talk",[]],
#Tavern recruitment and ale END 2/2
урезал блок 2 по максимуму там закольцовки были из родного текста, зачем так и не понял=)
-
Dantares (http://rusmnb.ru/index.php?action=profile;u=16528), Теперь говорит что нет скрипта вот с таким названием script_add_tavern_troops
-
вообще то есть в скриптс пи
#Tavern recruitment and ale START 1/3
(store_add, ":cur_object_no", "p_town_merc_1", ":offset"),
(party_set_slot,":town_no", slot_town_mercs,":cur_object_no"),
#Tavern recruitment and ale END 1/3
#Tavern recruitment and ale START 2/3
(call_script, "script_add_tavern_troops"),
#Tavern recruitment and ale END 2/3
#Tavern recruitment and ale START 3/3
#no input/output
#could need a faction check
#that's from the 808 module system
# "script_add_tavern_troops"),
("add_tavern_troops",
[
(try_for_range,reg(2),merc_parties_begin,merc_parties_end),
(store_party_size,reg(6),reg(2)),
(gt,reg(6),30), #never have many more than 20 troops in the tavern
(store_random,reg(7),8),
(party_add_members,reg(2),"trp_townsman",reg(7)),
(store_random,reg(8),5),
(party_add_members,reg(2),"trp_refugee",reg(8)),
(store_random,reg(9),5),
(party_add_members,reg(2),"trp_manhunter",reg(9)),
(try_end),
]),
#Tavern recruitment and ale END 3/3
промежутки опустил. спасибо пока проверяю на синтаксис
Добавлено: 26 Мая, 2012, 05:43
Getting Header Files .........
Getting ID Files .........
Getting Process Files .........
Start Processing...
______________________________
Traceback (most recent call last):
File "process_init.py", line 2, in <module>
from process_operations import *
File "D:\Program Files\Mount&Blade - Warband\Modules\NMC Full 1.0 Source\proce
ss_operations.py", line 20, in <module>
from module_scripts import *
File "D:\Program Files\Mount&Blade - Warband\Modules\NMC Full 1.0 Source\modul
e_scripts.py", line 65824
^
SyntaxError: invalid syntax
Traceback (most recent call last):
File "process_global_variables.py", line 12, in <module>
from process_operations import *
File "D:\Program Files\Mount&Blade - Warband\Modules\NMC Full 1.0 Source\proce
ss_operations.py", line 20, in <module>
from module_scripts import *
File "D:\Program Files\Mount&Blade - Warband\Modules\NMC Full 1.0 Source\modul
e_scripts.py", line 65824
^
SyntaxError: invalid syntax
Exporting strings...
Exporting skills...
Exporting tracks...
Exporting animations...
Exporting meshes...
Exporting sounds...
Exporting skins...
Traceback (most recent call last):
File "process_map_icons.py", line 6, in <module>
from process_operations import *
File "D:\Program Files\Mount&Blade - Warband\Modules\NMC Full 1.0 Source\proce
ss_operations.py", line 20, in <module>
from module_scripts import *
File "D:\Program Files\Mount&Blade - Warband\Modules\NMC Full 1.0 Source\modul
e_scripts.py", line 65824
^
SyntaxError: invalid syntax
Exporting faction data...
Exporting item data...
Traceback (most recent call last):
File "process_items.py", line 66, in <module>
from process_operations import *
File "D:\Program Files\Mount&Blade - Warband\Modules\NMC Full 1.0 Source\proce
ss_operations.py", line 20, in <module>
from module_scripts import *
File "D:\Program Files\Mount&Blade - Warband\Modules\NMC Full 1.0 Source\modul
e_scripts.py", line 65824
^
SyntaxError: invalid syntax
Exporting scene data...
Traceback (most recent call last):
File "process_scenes.py", line 15, in <module>
from process_operations import *
File "D:\Program Files\Mount&Blade - Warband\Modules\NMC Full 1.0 Source\proce
ss_operations.py", line 20, in <module>
from module_scripts import *
File "D:\Program Files\Mount&Blade - Warband\Modules\NMC Full 1.0 Source\modul
e_scripts.py", line 65824
^
SyntaxError: invalid syntax
Exporting troops data
Exporting particle data...
Traceback (most recent call last):
File "process_scene_props.py", line 7, in <module>
from process_operations import *
File "D:\Program Files\Mount&Blade - Warband\Modules\NMC Full 1.0 Source\proce
ss_operations.py", line 20, in <module>
from module_scripts import *
File "D:\Program Files\Mount&Blade - Warband\Modules\NMC Full 1.0 Source\modul
e_scripts.py", line 65824
^
SyntaxError: invalid syntax
Traceback (most recent call last):
File "process_tableau_materials.py", line 8, in <module>
from process_operations import *
File "D:\Program Files\Mount&Blade - Warband\Modules\NMC Full 1.0 Source\proce
ss_operations.py", line 20, in <module>
from module_scripts import *
File "D:\Program Files\Mount&Blade - Warband\Modules\NMC Full 1.0 Source\modul
e_scripts.py", line 65824
^
SyntaxError: invalid syntax
Traceback (most recent call last):
File "process_presentations.py", line 8, in <module>
from process_operations import *
File "D:\Program Files\Mount&Blade - Warband\Modules\NMC Full 1.0 Source\proce
ss_operations.py", line 20, in <module>
from module_scripts import *
File "D:\Program Files\Mount&Blade - Warband\Modules\NMC Full 1.0 Source\modul
e_scripts.py", line 65824
^
SyntaxError: invalid syntax
Exporting party_template data...
Traceback (most recent call last):
File "process_parties.py", line 6, in <module>
from process_operations import *
File "D:\Program Files\Mount&Blade - Warband\Modules\NMC Full 1.0 Source\proce
ss_operations.py", line 20, in <module>
from module_scripts import *
File "D:\Program Files\Mount&Blade - Warband\Modules\NMC Full 1.0 Source\modul
e_scripts.py", line 65824
^
SyntaxError: invalid syntax
Exporting quest data...
Exporting info_page data...
Traceback (most recent call last):
File "process_scripts.py", line 4, in <module>
from module_scripts import *
File "D:\Program Files\Mount&Blade - Warband\Modules\NMC Full 1.0 Source\modul
e_scripts.py", line 65824
^
SyntaxError: invalid syntax
Traceback (most recent call last):
File "process_mission_tmps.py", line 8, in <module>
from process_operations import *
File "D:\Program Files\Mount&Blade - Warband\Modules\NMC Full 1.0 Source\proce
ss_operations.py", line 20, in <module>
from module_scripts import *
File "D:\Program Files\Mount&Blade - Warband\Modules\NMC Full 1.0 Source\modul
e_scripts.py", line 65824
^
SyntaxError: invalid syntax
Traceback (most recent call last):
File "process_game_menus.py", line 8, in <module>
from process_operations import *
File "D:\Program Files\Mount&Blade - Warband\Modules\NMC Full 1.0 Source\proce
ss_operations.py", line 20, in <module>
from module_scripts import *
File "D:\Program Files\Mount&Blade - Warband\Modules\NMC Full 1.0 Source\modul
e_scripts.py", line 65824
^
SyntaxError: invalid syntax
Traceback (most recent call last):
File "process_simple_triggers.py", line 5, in <module>
from process_operations import *
File "D:\Program Files\Mount&Blade - Warband\Modules\NMC Full 1.0 Source\proce
ss_operations.py", line 20, in <module>
from module_scripts import *
File "D:\Program Files\Mount&Blade - Warband\Modules\NMC Full 1.0 Source\modul
e_scripts.py", line 65824
^
SyntaxError: invalid syntax
Traceback (most recent call last):
File "process_dialogs.py", line 9, in <module>
from process_operations import *
File "D:\Program Files\Mount&Blade - Warband\Modules\NMC Full 1.0 Source\proce
ss_operations.py", line 20, in <module>
from module_scripts import *
File "D:\Program Files\Mount&Blade - Warband\Modules\NMC Full 1.0 Source\modul
e_scripts.py", line 65824
^
SyntaxError: invalid syntax
Traceback (most recent call last):
File "process_global_variables_unused.py", line 3, in <module>
from process_operations import *
File "D:\Program Files\Mount&Blade - Warband\Modules\NMC Full 1.0 Source\proce
ss_operations.py", line 20, in <module>
from module_scripts import *
File "D:\Program Files\Mount&Blade - Warband\Modules\NMC Full 1.0 Source\modul
e_scripts.py", line 65824
^
SyntaxError: invalid syntax
Exporting postfx_params...
All Finish ...
Cleaning up...
______________________________
Script processing has ended.
Press any key to exit. . .
хм упоминается 65824 строка а там всего 65823??? :p
#Tavern recruitment and ale START 3/3
#no input/output
#could need a faction check
#that's from the 808 module system
("script_add_tavern_troops"),
("add_tavern_troops",
[
(try_for_range,reg(2),merc_parties_begin,merc_parties_end),
(store_party_size,reg(6),reg(2)),
(gt,reg(6),30), #never have many more than 20 troops in the tavern
(store_random,reg(7),8),
(party_add_members,reg(2),"trp_townsman",reg(7)),
(store_random,reg(8),5),
(party_add_members,reg(2),"trp_refugee",reg(8)),
(store_random,reg(9),5),
(party_add_members,reg(2),"trp_manhunter",reg(9)),
(try_end),
]
),
#Tavern recruitment and ale END 3/3
последняя редакция вокруг синтаксической танцует=) ХМ будем экспериментировать :thumbup:
Getting Header Files .........
Getting ID Files .........
Getting Process Files .........
Start Processing...
______________________________
Initializing...
Compiling all global variables...
Exporting strings...
Exporting skills...
Exporting tracks...
Exporting animations...
Exporting meshes...
Exporting sounds...
Exporting skins...
Exporting map icons...
Creating new tag_uses.txt file...
Creating new quick_strings.txt file...
Exporting faction data...
Exporting item data...
Exporting scene data...
Exporting troops data
Exporting particle data...
Exporting scene props...
Exporting tableau materials data...
Exporting presentations...
Exporting party_template data...
Exporting parties
Exporting quest data...
Exporting info_page data...
Exporting scripts...
Exporting mission_template data...
Exporting game menus data...
exporting simple triggers...
exporting triggers...
exporting dialogs...
WARNING: Usage of unassigned global variable: $tavernkeeper_party
Checking global variable usages...
WARNING: Global variable never used: $tavernkeeper_party
Imported 35 global variables for saved-game compatability that are not used.
Exporting postfx_params...
All Finish ...
Cleaning up...
______________________________
Script processing has ended.
Press any key to exit. . .
#Tavern recruitment and ale START 3/3
#no input/output
#could need a faction check
#that's from the 808 module system
# ("script_add_tavern_troops",
("add_tavern_troops",
[
(try_for_range,reg(2),merc_parties_begin,merc_parties_end),
(store_party_size,reg(6),reg(2)),
(gt,reg(6),30), #never have many more than 20 troops in the tavern
(store_random,reg(7),8),
(party_add_members,reg(2),"trp_townsman",reg(7)),
(store_random,reg(8),5),
(party_add_members,reg(2),"trp_refugee",reg(8)),
(store_random,reg(9),5),
(party_add_members,reg(2),"trp_manhunter",reg(9)),
(try_end),
]),
# Tempered ############################# SET GLOBAL VARIABLES AND SLOTS AT GAME START ###################################
("init_temp_var",
[
(party_set_slot,"p_main_party",slot_party_entrenched,0),
(assign,"$entrench_time",0),
(assign,"$camp_supply",1), #used for camp over run supply loss
(assign,"$drowning",1), #used to toggle drowning in mission templates off and on
(assign,"$current_camp_party",-1), #used for camp entrenchment, value is -1 or entrenchment party id
]),
]
#Tavern recruitment and ale END 3/3
# modmerger_start version=201 type=2
try:
component_name = "scripts"
var_set = { "scripts" : scripts }
from modmerger import modmerge
modmerge(var_set)
except:
raise
# modmerger_end
специально добавил с куском концовки чтобы всем стала очевидна моя ошибка=)
-
таким же как я товарищам советую обратить внимание на знак перед таврнкипер парти ;) а я в отдых. FinGall спасибо! поправлю ближе к 13.00 по москве. и в 6 утра по другому времени;)
всю ночь пытал скрипт...и добился с помощью Хантервольфа=)
-
Ребят может кто скинуть свой путь в Pach питоновский, нужен Win XP, а то я походу знатно накосячил с прописыванием, потому что он ошибку пишет :(
-
Какую ошибку? Ты скинь сюда, посмотрим, может не в path'e дело.
-
Как то так. Это я запускал: build_module.bat, в папке Source мода
File "process_init.py", line 5
print "Initializing..."
^
SyntaxError: invalid syntax
File "process_global_variables.py", line 23
add_variable(varb, variable_list, variable_uses)
^
TabError: inconsistent use of tabs and spaces in indentation
File "process_strings.py", line 24
print "Exporting strings..."
^
SyntaxError: invalid syntax
File "process_skills.py", line 30
print "Exporting skills..."
^
SyntaxError: invalid syntax
File "process_music.py", line 21
print "Exporting tracks..."
^
SyntaxError: invalid syntax
File "process_animations.py", line 58
print "Exporting animations..."
^
SyntaxError: invalid syntax
File "process_meshes.py", line 23
print "Exporting meshes..."
^
SyntaxError: invalid syntax
File "process_sounds.py", line 49
print "Exporting sounds..."
^
SyntaxError: invalid syntax
File "process_skins.py", line 104
print "Exporting skins..."
^
SyntaxError: invalid syntax
File "process_map_icons.py", line 32
print "Exporting map icons..."
^
SyntaxError: invalid syntax
File "process_factions.py", line 27
print "ERROR faction not found: "+ rel_name
^
SyntaxError: invalid syntax
File "process_items.py", line 60
print "Exporting item data..."
^
SyntaxError: invalid syntax
File "process_scenes.py", line 12
print "Exporting scene data..."
^
SyntaxError: invalid syntax
File "process_troops.py", line 104
print "Exporting troops data"
^
SyntaxError: invalid syntax
File "process_particle_sys.py", line 60
print "Exporting particle data..."
^
SyntaxError: invalid syntax
File "process_scene_props.py", line 26
print "Exporting scene props..."
^
SyntaxError: invalid syntax
File "process_tableau_materials.py", line 25
print "Exporting tableau materials data..."
^
SyntaxError: invalid syntax
File "process_presentations.py", line 27
print "Exporting presentations..."
^
SyntaxError: invalid syntax
File "process_party_tmps.py", line 28
print "Error! NUMBER OF TEMPLATE MEMBERS EXCEEDS 6 " + party_template[0]
^
SyntaxError: invalid syntax
File "process_parties.py", line 28
print "Error: Unable to find menu-id :" + menu_param
^
SyntaxError: invalid syntax
File "process_quests.py", line 29
print "Exporting quest data..."
^
SyntaxError: invalid syntax
File "process_info_pages.py", line 25
print "Exporting info_page data..."
^
SyntaxError: invalid syntax
File "process_scripts.py", line 21
except Exception, err:
^
SyntaxError: invalid syntax
File "process_mission_tmps.py", line 29
print "ERROR: Too many item_overrides!"
^
SyntaxError: invalid syntax
File "process_game_menus.py", line 41
print "Exporting game menus data..."
^
SyntaxError: invalid syntax
File "process_simple_triggers.py", line 19
print "exporting simple triggers..."
^
SyntaxError: invalid syntax
File "process_dialogs.py", line 95
print sentence[ipt_token_pos]
^
SyntaxError: invalid syntax
File "process_global_variables_unused.py", line 22
print "Checking global variable usages..."
^
SyntaxError: invalid syntax
File "process_postfx.py", line 26
print "Exporting postfx_params..."
^
SyntaxError: invalid syntax
Не удается найти C:\Program Files\Mount&Blade - Warband\Modules\New Mod\Source\*
.pyc
______________________________
Script processing has ended.
Press any key to exit. . .
-
результат с батом пройден, но в игре меню не открывается=) надо думать как исправить=)
-
C:\Program Files\Mount&Blade - Warband\Modules\New Mod\Source\
если у тебя также в module_info.py поменяй в другую сторону слэши
-
Легионер (http://rusmnb.ru/index.php?action=profile;u=17320), Прав ты старик, коли в бате написано, так значит и в инфо так и есть
Жесть сколько можно то, не ну не тем не даже того что пишется в самом файле не читают
# Point export_dir to the folder you will be keeping your module
# Make sure you use forward slashes (/) and NOT backward slashes (\)
-
Хантыч, может и не быть у него сурс сторонний , он даж не потрудился в модуль путь указать
Modules\New Mod\Source\
следующий вопрос про - почему не проходят изменения :)
-
если я правильно понял FinGall то мне нужно поменять функции строк
(написание (store_random,reg(7),8), - какая-то устаревшая функция.
Сейчас пишут:
(store_random_in_range, reg(7), 1, 8), #запишет число от 1 до 7
. =/ так что снова в путь=) снова править=)))))
-
Легионер (http://rusmnb.ru/index.php?action=profile;u=17320), а где его прописать?? и слэши где именно заменить?
-
http://rusmnb.ru/index.php?topic=2940.0 (http://rusmnb.ru/index.php?topic=2940.0)
здесь можно посмотреть
-
Что-то я сотворил, теперь я хоть что то новенькое увидел. В Pach неправильно прописано, а вот что там было раньше я незнаю терь думаю что делать
"python" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
"python" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
"python" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
"python" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
"python" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
"python" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
"python" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
"python" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
"python" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
"python" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
"python" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
"python" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
"python" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
"python" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
"python" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
"python" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
"python" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
"python" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
"python" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
"python" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
"python" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
"python" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
"python" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
"python" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
"python" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
"python" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
"python" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
"python" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
"python" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
Не удается найти C:\Program Files\Mount&Blade - Warband\Modules\New Mod\Source\*
.pyc
______________________________
Script processing has ended.
Press any key to exit. . .
Добавлено: 26 Мая, 2012, 19:29
Всем кто помог спасибо все подключил. Все работает) пойду шаманить :thumbup:
-
Подскажите какие модули надо отредактировать, чтобы добавить новых бандитов на карту?
За основу я взял Native и в качестве подопытного отряда sea_raiders.
Отредактировал сначала файл module_troops, скопировав:
["sea_raider","Sea Raider","Sea Raiders",tf_guarantee_boots|tf_guarantee_armor|tf_guarantee_shield,0,0,fac_outlaws,
[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],
Вобщем я просто поменял название sea_raider на new_raider, где new_raider это название нового юнита.
Дальше я полез в module_party_templates и module_parties и сделал тоже самое , что и с модулем troops.
А вот что делать дальше я запутался =) Подскажите пожалуйста, что еще надо отредактировать, чтобы получит полноценный отряд бандитов? ( оружие, доспехи, кол-во в отряде - меня не интересует, это я сделать сам смогу)
-
Dick Jonson (http://rusmnb.ru/index.php?action=profile;u=15038), build_module.bat нажми, он перестроит МС, занесет в текстовики новые данные, заодно и покажет наличие ошибок, если ты сделал все правильно то у тебя будет отряд.
-
Dick Jonson (http://rusmnb.ru/index.php?action=profile;u=15038), ищи script_spawn_bandits в
module_scripts.py
-
Легионер, Balian спасибо за помощь, я ничего не добавил в module_scripts.py по-этому отряда не было).
Подскажите еще одну вещь:
Я задал отряду варваров лидера, но не догоняю в какое время и в каком именно из отрядов он появится? Где это можно поправить и как сделать чтобы этот отряд с лидером появился на карте с начала новой игры?
-
в модульскрипт в геймстарт (первый скрипт) сделай спаун этого отряда.
-
Привет Уважаемым Модмастерам! Закопался в модульной и начинаю притормаживать -ищу ошибку с черным экраном во время выбора флага при выборе дворянина. Модуль альтернатива версия 0.1 . проблема в том что не понимаю пока что выискивать, поскольку еще новичек... просмотрел всю ветку связанную с выбором у глав героя(в альтернативе это одно окно и дальше переход для дворянина выбор флага для других выбор места приземления), и кажется нащупал, но пока не понимаю связано ли это с (g_presentation_obj_1) или нет? Помогите если можете=)
Добавлено: 04 Июня, 2012, 22:00
Уж очень хочется начать дворянином=)
-
Dantares (http://rusmnb.ru/index.php?action=profile;u=16528), К чему это сообщение, что за альтернатива версии нуль одын. Если нашупал тебе виднее тогда связано или нет. Пиши по делу, пока это похожа: Ну вот там это самое , ну вы понили, и чё как быть
-
:thumbup: Нда понятно... в Общем в NMC 1.0 бэта при выборе дворянина вылезает баг в момент перехода в меню выбора флага. вопрос: кто-нибудь может помочь разобраться - это конфликт сборки или еще чего-то?
альтернатива и ГМ3 идут на базе этой сборки... то есть и там это тоже возникает.
Добро! GM V.3= Good mod v.3, AlterNative v.0.1, Native Compilation Mod 1.0 beta,
Спасибо, только не похоже что Рубик решил эту занозу... Но Каба ссылается на сбой задержки меню перед инициализацией флагов... Спасибо... буду думать и советоваться(теперь по ходу с англоязычной аудиторией=)
-
Вообще если это проблема Native Mod Compilation от Бисмарка, то попробуй посмотреть что по этому поводу говорят на оф сайте например Каба:
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.
И так вот мы и выяснили в чем тут дело, теперь юзаем вот эту тему http://forums.taleworlds.com/index.php/topic,111808.0.html (http://forums.taleworlds.com/index.php/topic,111808.0.html) , но в начале смотрим, что же за версия Custom Commander встроено в мод. И смотрим если решения проблемы, ели её Решил сам Рубик, то просто обновляем модульную соответствующими исправлениями Custom Commander, так же можно спросить и там как решить сей баг
NMC 1.0
Так на будуще всё же лучше писать как есть, так большенство из тех кто может вам помочь, ну как то не очень юзают творчество Бисмарка. Мне же в гугле выдало что это расшифровывается как фирма по производству лепнины. А на форуме в поиске тем такого нет.
ГМ3
опять же нет на форуме, но вот гугль помог это оказалось Геомат противоэрозийный 3
-
Если не трудно то не могли бы вы сказать как называется скрипт запускающийся при переходе лорда из одной фракции в другую (т.е вызывающий смену культуры, титула и т.д) Сам найти не могу
-
Скрипт неожиданно так называется "lord_find_alternative_faction"
вызывается он из скрипта "indict_lord_for_treason" а также в симпл триггерах раз в полчаса, и ещё в диалогах вскоре после строки #Lord to be recruited
-
Dargor, а в скрипте "cf_troop_can_intrigue", кажется тоже лордов переманивают? =/
А ещё можно использовать скрипт "change_troop_faction".
Тоже, странное название. :)
-
В cf_troop_can_intrigue проверяется, нет ли рядом "длинных ушей" = нет ли шанса для лорда палева в момент принятия решения. Но с результатом принятия решения этот скрипт уже не связан. change_troop_faction распространяется на всех, не только на лордов. На ГГ например тоже. А вот следом после этого скрипта идёт вызываемый им troop_set_title_according_to_faction. Так как voin-varg (http://rusmnb.ru/index.php?action=profile;u=16569) не пишет, что именно он хочет изменить, то наперечислять-то скриптов можно много.
-
добро! уточню вопрос Варга, при присоединении лорда к фракции игрока(NMC 1.0 beta2) происходит следующее сначала лорд берет войска из custom troops фракции игрока, затем полностью переводит набор войск на ту фракцию к которой пренадлежал в начале, и как итог возник вопрос что делать с этим непотребством...
А) менять выбор найма войск лордом,
Б) менять лорду культуру на нейтрал с вариативностью присоединения к какой-либо фракции и включением скрипта set_title_according_to_faction
В) искать другие варианты??? =)
Еще один баг из данной сборки которую авторы предложили как базу для модостроительства:
Летающие прыгающие бандиты... третий день ищем ошибки в скриптах но пока все зависимые скрипты не выявили...
Отсюда вопрос - только ли триггеры, трупс пи и парти темплатес пи влияют на действия бандитов(в нашем случае) на поле боя?
-
Имеешь в виду войска в его мобильном отряде? См script_cf_reinforce_party, там есть строка
(troop_get_slot, ":party_faction", ":leader", slot_troop_original_faction),
-
Вроде slot_troop_original_faction используется только для претендентов. =/
Вот запись из констант:
slot_troop_original_faction = 14 # for pretenders
-
FinGall (http://rusmnb.ru/index.php?action=profile;u=19251), Не только для неписей также, при их олордивании причём у некоторых уже и культуры заданы. Сам посмотри, что много где используется, не только в претендентах
-
Добрых суток. Наверное, этот пост должен быть тут.
У меня есть несколько запросов по скриптам, навеянные пробегом по наиболее популярным модам.
Во-первых, меня живо зацепила идея более узкой специализации воина на поле боя, как. например, в Руси 13 веке. Кроме разбивки по классам, этому способствует приятная особенность выпадания копий и больших двуручей при попытке закрепить их за спину в бою, что сразу повышает тактическую состовляющую боя, убирая универсалов с металками, копьями, двуручами и щитами одновременно.
В связи с этим, меня интересует скрипт-система для этой фичи. Примерно алгоритм я себе представляю, но моего опыта в Питоне и знаний МС не хватает. Вижу два варианта проверок
1. Грубый, через get_item_type, если двуруч или древковое, то попадает под категорию выбрасываемых на землю.
2. Более элегантный, через get_weapon_length в WSE.
Как дальше выглядит скрипт, я не знаю. То ли это должно запускаться при проигрывании анимации, на серверной или клиентской стороне - непонятно.
Во-вторых, интересует дополнительный слой защиты от автоблокеров. Автоблок-чит работает через патч памяти, изменяя значение у клиента напрямую. Но действует он один раз, следовательно, можно сделать скрипт, постоянно обновляющий переменную multiplayer_block_mode (не помню точно) у клиента и посылающий ему форсированное отключение автоматического режима. Должен он долбить раз в секунду, примерно. Не знаю, реально ли это и поможет ли, но попробовать стоит.
В-третьих, довольно спорная идея убирания оружейных слотов в мультиплеере. С четырех до тред, опять таки для хардкорности и узкой специализации в бою.
И последнее, погодная система. Сам скрипт у меня когда-то был, но увы, запихнул я его не туда, и он менял погоду, скайбоксы и прочие условия только на сервере. Меня интересует алгоритм что то вроде: При загрузке карты устанавливаются значения времени суток, дождя, снега, тумана и тд, и при каждом подсоединении клиента передаются ему, обновляясь при загрузке следующей карты.
-
Спасибо! Поэкспериментирую, в случае найденного удачного решения постараюсь выложить результат :thumbup:
-
Придется у буржуев спрашивать :(
-
Watakushi (http://rusmnb.ru/index.php?action=profile;u=25235), Тут не в этом дело просто большинство не очень разбирается в мульте и её особенностях, а я понимаю что тебя в данном случаи интересует именно этот момент модульки. А вот тех кто может тебе реально помочь просто ещё не было на форуме, но они появятся и посоветуют. Возможно сегодня , может завтра. Их у нас не так много и они не каждый день на форуме
Добавлено: 10 Июня, 2012, 11:03
Зы. По погоде в мульте, было в теме на TaleWorlds, я постараюсь её найти, но и сам посмотри.
-
Кажется, на taleworlds (и даже на rusmnb) была как раз тема по погоде в сингле, т.к. там не требовалась синхронизация переменных сервера с мультиплеерным клиентом.
Ан нет, ошибся, скрипт для мульта. Кажется, с погодой хоть решено.
-
Кстати про погоду в мульте: с ченджлог'е 153 версии (или 150 какой-то) было написано, что при измемении погоды на карте сервера, измемения будут видны всем игрокам, в отличии от предыдущих версий, когда погода всегда была одинаковой (солнечно, 3 часа дня, на небе облака).
-
Кстати про погоду в мульте: с ченджлог'е 153 версии (или 150 какой-то) было написано, что при измемении погоды на карте сервера, измемения будут видны всем игрокам, в отличии от предыдущих версий, когда погода всегда была одинаковой (солнечно, 3 часа дня, на небе облака).
Random rain and fog amounts have been removed in multiplayer. All players now see the same weather.
Версия 1.151. Кажется, наоборот, вообще убрали возможность. Не знаю, как потестить.
-
Там написано: Рандомные дождь и туман были удалены. Все игроки теперь будут видеть одну и ту же погоду.
Добавлено: 10 Июня, 2012, 15:33
ну я это понял как
Кстати про погоду в мульте: с ченджлог'е 153 версии (или 150 какой-то) было написано, что при измемении погоды на карте сервера, измемения будут видны всем игрокам, в отличии от предыдущих версий, когда погода всегда была одинаковой (солнечно, 3 часа дня, на небе облака).
-
Во-первых, меня живо зацепила идея более узкой специализации воина на поле боя, как. например, в Руси 13 веке. Кроме разбивки по классам, этому способствует приятная особенность выпадания копий и больших двуручей при попытке закрепить их за спину в бою, что сразу повышает тактическую состовляющую боя, убирая универсалов с металками, копьями, двуручами и щитами одновременно.
В связи с этим, меня интересует скрипт-система для этой фичи. Примерно алгоритм я себе представляю, но моего опыта в Питоне и знаний МС не хватает. Вижу два варианта проверок
1. Грубый, через get_item_type, если двуруч или древковое, то попадает под категорию выбрасываемых на землю.
2. Более элегантный, через get_weapon_length в WSE.
Делал проверку на оружие как раз через get_type, так как wse тогда не был прикручен.
Как дальше выглядит скрипт, я не знаю. То ли это должно запускаться при проигрывании анимации, на серверной или клиентской стороне - непонятно.
Скрипт у меня сидит в mission_templates. Так что тут с сервером и клиентом конкретно не нужно заморачиваться.
Когда я писал этот скрипт, не было прекрасных триггеров ti_on_item_wielded и ti_on_item_unwielded, поэтому там использовалось три слота и самих триггеров было два штука. А вот у Штурмфогеля как раз используются эти триггеры для достижения аналогичной цели.
Предполагаю такую основную структуру триггера:
В триггере ti_on_item_unwielded проверяем, какое оружие у нас убирается из рук.
Если длинное - спауним перед игроком, затем удаляем его.
В процессе теста триггера обычно набегает ещё куча всяких поправок, поэтому полностью описать всё я не сумею.
Добавлено: 11 Июня, 2012, 14:07
Кстати про погоду в мульте: с ченджлог'е 153 версии (или 150 какой-то) было написано, что при измемении погоды на карте сервера, измемения будут видны всем игрокам, в отличии от предыдущих версий, когда погода всегда была одинаковой (солнечно, 3 часа дня, на небе облака).
А про туман есть что? А то было весело, когда выяснилось, что с DX7 туман не отображается.
-
А про туман есть что?
Видимо, туман не убирали, просто теперь нельзя выставить для него рандомное значение, собственно, как и для дождя.
-
Спасибо, Unknown (http://rusmnb.ru/index.php?action=profile;u=124)!
А вот у Штурмфогеля
Кто это? :)
Предполагаю такую основную структуру триггера:В триггере ti_on_item_unwielded проверяем, какое оружие у нас убирается из рук.Если длинное - спауним перед игроком, затем удаляем его.В процессе теста триггера обычно набегает ещё куча всяких поправок, поэтому полностью описать всё я не сумею.
Попробую как только дойду до этого момента. Куча всяких поправок это случайно не выпадение оружия ниже уровня земли?
-
Watakushi (http://rusmnb.ru/index.php?action=profile;u=25235), Штурфогель((http://rusmnb.ru/index.php?action=dlattach;attach=217;type=avatar)) сюда ещё не заглядывал, он один из Рыцарей мода Крестоносцы :)
-
Фиговый я скриптер. Как и советовалось, положил этот код вниз module_templates.
(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),
]),
При компиляции вылетает ошибка без указания причины в этом триггере, и за ней ошибки во всех данных Mission_template. Грешил на синтаксис, но вроде все перепроверил. После этого блока лежит только закрывающий ]
-
Watakushi (http://rusmnb.ru/index.php?action=profile;u=25235), а почему вниз?
либо в интересующую тебя миссию ( а синтаксис триггера говорит об этом) либо же по аналогии в самом начале файла- и прописать название уже нужной миссии
-
На вскидку.
(store_trigger_param_1, ":agent_unwielding"),
(store_trigger_param_2, ":item_unwielding"),
Пишутся сразу после "[". Это данные которые передаёшь из других скриптов. (Если такие имеются.)
А вообще, если пропишешь в самом начале файла, компилятор это, скорее всего, проглотит. Если там нет других ошибок. Только, чтобы триггер заработал его надо вставлять не в конец module_mission_templates, а в нужную сцену module_mission_templates. Список всех сцен можно посмотреть в ID_mission_templates.
-
Я на процессе починки триггера, и напишу здесь подводные камни, чтобы другие не спотыкались. Во-первых, спасибо господам Легионер (http://rusmnb.ru/index.php?action=profile;u=17320) и FinGall (http://rusmnb.ru/index.php?action=profile;u=19251), эта модульная система и ее структура выедает мне мозги, очень и очень непривычно.
Действительно, стоило положить код в пределах, допустим, multiplayer_dm, как в этом режиме начал наблюдаться эффект.
Из ошибок:
Долго не мог понять, почему troop_remove_item не работает, потом дошло, что для игры troop_id и agent_id это совершенно разные переменные. Нашел функцию agent_unequip_item, и передвинул запись параметров триггера чуть повыше. В итоге, среди триггеров дезматча появилось рабочее выпадение оружия (пока без спауна)
Выглядит так.
(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.
эээ... прямо вниз файла что ли? надо ж не так :)
Погляди на триггер, например, multiplayer_server_spawn_bots, где и как он приводится впервые и как потом на него делают ссылки в режимах игры.
Попробую как только дойду до этого момента. Куча всяких поправок это случайно не выпадение оружия ниже уровня земли?
почти, нужно будет указывать координаты точки спавна. Но это лишь одна правка из возможных. Поскольку я с этим триггером не работал, как уже говорил, то не могу точно сказать, какими будут другие. Например, может появится дублирование оружия :)
-
Да-да, я уже понял суть mission_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),
]),
Но в Нейтиве есть проблема, если купить несколько двуручей и/или копий, то хоть одно из них и берется в руки, другие закрепляются на спину, не вызывая эффекта _on_unwielded. Я хотел было запустить проверку на спауне по слотам, но потом решил, что такая полумера это неплохой компромисс между Русевским хардкором, когда выпадает вообще все, и Нейтивом, где можно закреплять двухметровые пики за доли секунд.
По реалистичности, можно это представить как процесс подготовки к битве, когда пехотинцам на спину закрепляют специально копья, чтобы их можно было единожды снять и использовать в бою. Хотя на самом деле, мне лень тратить еще один день на проверку всех слотов.
Пусть этот триггер валяется тут, кому нужен, сейчас же меня интересует вопрос физике в warband. Сложно ли она меняется, и нужно ли это вообще?
-
вопрос физике в warband
На сколько мне известно, были люди (забыл кто), которые пытались подчинить все игровые объекты физике, и вроде бы небезуспешно.
И это, Watakushi (http://rusmnb.ru/index.php?action=profile;u=25235), ты чего на ЛС не отвечаешь?
-
Watakushi (http://rusmnb.ru/index.php?action=profile;u=25235),
Пусть этот триггер валяется тут
Лучше тут http://rusmnb.ru/index.php?topic=6857.0 (http://rusmnb.ru/index.php?topic=6857.0) , если не сложно, с неким пояснением что это за тригер.
сейчас же меня интересует вопрос физике в warband.
Ан о чём конкретно? Так сказать, ското точно вешать в граммах
-
И снова у меня вопрос=) : как читать этот отчет по ошибке
То что проблема в диалоге я уже понял, но не уверен правильно ли понял о строке... :embarrassed:
по ходу подозреваю проблему в написании (store_faction_of_party,reg(4),reg(3)), этого фрагмента... подскажите пожалуйста=)
#Tavern recruitment START 2/2
[anyone|plyr,"tavernkeeper_talk", [], "I need to hire some soldiers. Can you help me?", "tavernkeeper_buy_peasants",[]],
[anyone,"tavernkeeper_buy_peasants",
[
(store_encountered_party,reg(3)),
(store_faction_of_party,reg(4),reg(3)),
(store_relation,reg(5),"fac_player_supporters_faction",reg(4)),
(lt, reg(5), -3),
], "I don't think anyone from this town will follow somebody like you. Try your luck elsewhere.", "tavernkeeper_buy_peasants_2",[]],
[anyone,"tavernkeeper_buy_peasants", [], "I know a few fellows who would follow you if you paid for their equipment.", "tavernkeeper_buy_peasants_2",[(set_mercenary_source_party,"$tavernkeeper_party"),[change_screen_buy_mercenaries]]],
[anyone,"tavernkeeper_buy_peasants_2", [], "Anything else?", "tavernkeeper_talk",[]],
#Tavern recruitmen END 2/2
если читать хэдер оператион то получается опкод 1320 это try_for_parties,
исходя из этого в блоке ID ищем где может быть 2595... только странно в партиес ИД этого нет... есть в стрингс
[вложение удалено Администратором]
[вложение удалено Администратором]
[вложение удалено Администратором]
-
1. не уверен, что проблема именно с этой частью диалога. Это вообще весь диалог по найму или есть ещё строки?
2. 2595 - это ID какой-то мобильной партии, число которых жёстко не задано; им ID присваиваются динамически, в порядке "вылупления" на свет
3. Я бы написал короче, используя имеющуюся в игре глобалку(store_relation,":rel","$g_encountered_party_faction","fac_player_supporters_faction"),
(lt,":rel",-3),
-
если читать хэдер оператион то получается опкод 1320 это try_for_parties,
исходя из этого в блоке ID ищем где может быть 2595... только странно в партиес ИД этого нет... есть в стрингс
Так между прочим
1320 - change_screen_buy_mercenaries
$tavernkeeper_party проинициализирована какой-то фигней, точнее числом 2595
-
Низкий поклон мастерам! Так и есть, скрипт рекрутирование в таверне у владельца таверны... взял отсюда
http://forums.taleworlds.com/index.php/topic,70749.0.html
Сейчас пытаюсь понять за что отвечают [reg] и как решить эту задачу... я так понял да и опробовал... нанимаются караванщик, стражники из мерков и сарранидская ветка, вместо этого были беженка крестьянин и горожанин, которые тоже прописаны в мерках
Самое смешное, что я уже понимаю что то что годилось для 0.808, для 1.153 не катит... теперь сравниваю и пытаю... но опыт пока не способстует за отсутствием оного=)
-
Dantares (http://rusmnb.ru/index.php?action=profile;u=16528), ты сократил код
вместо
(store_encountered_party,reg(2)),(party_get_slot,"$tavernkeeper_party",reg(2),slot_town_mercs),(set_mercenary_source_party,"$tavernkeeper_party"),(change_screen_buy_mercenaries)
у тебя
(set_mercenary_source_party,"$tavernkeeper_party"),(change_screen_buy_mercenaries)
по не очевидной мне причине, как минимум это приводит к тому, что источник для наёмников не обновляется при путешествиях из города в город.
reg - это просто переменные.
-
Признаю, но в диалогс пи две части и вторая именно как в примере что ты привел... а первая... мда первая прописана кажется криво... и самое смешное, на первый взгляд там ничего что относилось бы к гнайму... только к повышению морали ящиком пива=)
упрощение при проверке на отношения... нда выглядит супер... и как вы это делаете=) :embarrassed:
Извините если туплю.. за полные сутки устал как...
#Tavern recruitment START 2/2
[anyone|plyr,"tavernkeeper_talk", [], "I need to hire some soldiers. Can you help me?", "tavernkeeper_buy_peasants",[]],
[anyone,"tavernkeeper_buy_peasants",
[
(store_encountered_party,reg(3)),
(store_faction_of_party,reg(4),reg(3)),
(store_relation,reg(5),"fac_player_supporters_faction",reg(4)),
(lt, reg(5), -3),
], "I don't think anyone from this town will follow somebody like you. Try your luck elsewhere.", "tavernkeeper_buy_peasants_2",[]],
[anyone,"tavernkeeper_buy_peasants", [], "I know a few fellows who would follow you if you paid for their equipment.",
"tavernkeeper_buy_peasants_2",[(store_encountered_party,reg(2)),(party_get_slot,"$tavernkeeper_party",reg(2),slot_town_mercs),(set_mercenary_source_party,"$tavernkeeper_party"), (change_screen_buy_mercenaries)]],
[anyone,"tavernkeeper_buy_peasants_2", [], "Anything else?", "tavernkeeper_talk",[]],
#Tavern recruitment END 2/2
так правильно?
Извините засыпаю на ходу... спасибо за все утром буду думать и править да проверять.... :embarrassed:
П.с за мной долг :thumbup:!
Поторопился, один раз сработало потом опять сказка началась facepalm Внимательность однако нужна как воздух=)
Добавлено: 15 Июня, 2012, 12:19
то есть если reg 2, и reg (2) в чем тут разница? Не могу никак понять, то вылезает опять та же ошибка, то перестает... (устал бетатестить старт игры...=) переодически вместо наемников выползает иконка моего перса но без возможности нанять=)
выходит ошибка все же где-то в диалог пи... ищем дальше...
И так ли надо добавлять вот этот блок? #####################################################################################
# Test: Tavern recruitment and Ale Begin ############################################
#####################################################################################
[anyone|plyr,"tavernkeeper_talk", [
(store_current_hours,":cur_hours"),
(val_sub, ":cur_hours", 24),
(gt, ":cur_hours", "$buy_drinks_last_time"),
], "I'd like to buy me and my men a barrel of your best ale.", "tavernkeeper_buy_drinks_troops",[]],
[anyone,"tavernkeeper_buy_drinks_troops",
[
], "Of course, {my lord/my lady}. I reckon {reg5} denars should be enough for that. What should I tell the lads?", "tavernkeeper_buy_drinks_troops_2",[
(assign, "$temp", 20),
(store_party_size_wo_prisoners, reg5, "p_main_party"),
(store_mul, "$temp", "$temp", reg5),
(assign, reg5, "$temp"),
]],
[anyone|plyr,"tavernkeeper_buy_drinks_troops_2",
[
(store_troop_gold, ":gold", "trp_player"),
(ge, ":gold", "$temp"),
(str_store_party_name, s10, "$current_town"),
], "The price is fair enough, let my men have at it.", "tavernkeeper_buy_drinks_troops_end",[
]],
[anyone,"tavernkeeper_buy_drinks_troops_end",
[], "Don't worry {sir/madam}. Your men will enjoy their pints.", "tavernkeeper_pretalk",
[
(troop_remove_gold, "trp_player", "$temp"),
(call_script, "script_change_player_party_morale", 20),
(store_current_hours,":cur_hours"),
(assign, "$buy_drinks_last_time", ":cur_hours"),
(rest_for_hours, 2, 5, 0)
]],
[anyone|plyr,"tavernkeeper_buy_drinks_troops_2", [], "Actually, cancel that order.", "tavernkeeper_pretalk",[]],
#####################################################################################
# Test: Tavern recruitment and Ale End ##############################################
#####################################################################################
Ведь если я равильно прочел там только все что касается повышения морали, Так?
Добавлено: 15 Июня, 2012, 15:32
В общем основной ворос что в данном скрипте должно отвечать за ID parties или за Id troops?
In constants py
##########################################################
# Test : Tavern Recruitment Begin ########################
##########################################################
slot_town_mercs = 66
merc_parties_begin = "p_town_merc_1"
merc_parties_end = "p_castle_1"
#########################################################
# Test : Tavern Recruitment End #########################
#########################################################
In Dialogs py
(call_script, "script_end_quest", "qst_deliver_wine"),
]],
#######################################################################################
# Test : Tavern recruitment Begin ###################################################
#######################################################################################
[anyone|plyr,"tavernkeeper_talk", [], "I need to hire some soldiers. Can you help me?", "tavernkeeper_buy_peasants",[]],
[anyone,"tavernkeeper_buy_peasants",
[
(store_encountered_party,reg(3)),
(store_faction_of_party,reg(4),reg(3)),
(store_relation,reg(5),"fac_player_supporters_faction",reg(4)),
(lt, reg(5), -3),
], "I don't think anyone from this town will follow somebody like you. Try your luck elsewhere.", "tavernkeeper_buy_peasants_2",[]],
[anyone,"tavernkeeper_buy_peasants", [], "I know a few fellows who would follow you if you paid for their equipment.", "tavernkeeper_buy_peasants_2",[(store_encountered_party,reg(2)),(party_get_slot,"$tavernkeeper_party",reg(2),slot_town_mercs),(set_mercenary_source_party,"$tavernkeeper_party"),(change_screen_buy_mercenaries)]],
[anyone,"tavernkeeper_buy_peasants_2", [], "Anything else?", "tavernkeeper_talk",[]],
#######################################################################################
# Test : Tavern recruitment end #####################################################
#######################################################################################
# NOTE TO SELF:
# I altered line 8943. The original line looks like this :
# [anyone,"tavernkeeper_buy_peasants", [], "I know a few fellows who would follow you if you paid for their equipment.", "tavernkeeper_buy_peasants_2",[(store_encountered_party,reg(2)),(party_get_slot,"$tavernkeeper_party",reg(2)),slot_town_mercs),(set_mercenary_source_party,"$tavernkeeper_party"),(change_screen_buy_mercenaries)]],
#
# I added the "(" to (slot_town_mercs). Otherwise it gives a syntax.
# I changed it to :
# [anyone,"tavernkeeper_buy_peasants", [], "I know a few fellows who would follow you if you paid for their equipment.", "tavernkeeper_buy_peasants_2",[(store_encountered_party,reg(2)),(party_get_slot,"$tavernkeeper_party",reg(2)),(slot_town_mercs),(set_mercenary_source_party,"$tavernkeeper_party"),(change_screen_buy_mercenaries)]],
###################################################################################
###################################################################################
## [anyone|plyr,"tavernkeeper_talk", []
in Dialogs py 2
(assign, "$buy_drinks_last_time", ":cur_hours"),
]],
#####################################################################################
# Test: Tavern recruitment and Ale Begin ############################################
#####################################################################################
[anyone|plyr,"tavernkeeper_talk", [
(store_current_hours,":cur_hours"),
(val_sub, ":cur_hours", 24),
(gt, ":cur_hours", "$buy_drinks_last_time"),
], "I'd like to buy me and my men a barrel of your best ale.", "tavernkeeper_buy_drinks_troops",[]],
[anyone,"tavernkeeper_buy_drinks_troops",
[
], "Of course, {my lord/my lady}. I reckon {reg5} denars should be enough for that. What should I tell the lads?", "tavernkeeper_buy_drinks_troops_2",[
(assign, "$temp", 20),
(store_party_size_wo_prisoners, reg5, "p_main_party"),
(store_mul, "$temp", "$temp", reg5),
(assign, reg5, "$temp"),
]],
[anyone|plyr,"tavernkeeper_buy_drinks_troops_2",
[
(store_troop_gold, ":gold", "trp_player"),
(ge, ":gold", "$temp"),
(str_store_party_name, s10, "$current_town"),
], "The price is fair enough, let my men have at it.", "tavernkeeper_buy_drinks_troops_end",[
]],
[anyone,"tavernkeeper_buy_drinks_troops_end",
[], "Don't worry {sir/madam}. Your men will enjoy their pints.", "tavernkeeper_pretalk",
[
(troop_remove_gold, "trp_player", "$temp"),
(call_script, "script_change_player_party_morale", 20),
(store_current_hours,":cur_hours"),
(assign, "$buy_drinks_last_time", ":cur_hours"),
(rest_for_hours, 2, 5, 0)
]],
[anyone|plyr,"tavernkeeper_buy_drinks_troops_2", [], "Actually, cancel that order.", "tavernkeeper_pretalk",[]],
#####################################################################################
# Test: Tavern recruitment and Ale End ##############################################
#####################################################################################
In Scripts py 1
# Towns (loop)
(try_for_range, ":town_no", towns_begin, towns_end),
(store_sub, ":offset", ":town_no", towns_begin),
(party_set_slot,":town_no", slot_party_type, spt_town),
# (store_add, ":cur_object_no", "trp_town_1_seneschal", ":offset"),
# (party_set_slot,":town_no", slot_town_seneschal, ":cur_object_no"),
#####################################################################
# Test : Tavern recruitment Begin #################################
#####################################################################
(store_add, ":cur_object_no", "p_town_merc_1", ":offset"),
(party_set_slot,":town_no", slot_town_mercs,":cur_object_no"),
#####################################################################
# Test : Tavern recruitment End ###################################
#####################################################################
Scrpits 2
(try_for_range, ":unused", 0, 8),
(call_script, "script_spawn_bandits"),
(try_end),
###################################################################################
# Test : Tavern Recruitment Begin ###############################################
###################################################################################
(call_script, "script_add_tavern_troops"),
###################################################################################
# Test : Tavern Recruitment End #################################################
###################################################################################
(set_spawn_radius, 50),
Scripts 3
##################################################
# Test: Tavern Recruitment Begin ###############
##################################################
#no input/output
#could need a faction check
#that's from the 808 module system
("add_tavern_troops",
[
(try_for_range,reg(2),merc_parties_begin,merc_parties_end),
(store_party_size,reg(6),reg(2)),
(lt,reg(6),30), #never have many more than 30 troops in the tavern
(store_random,reg(7),8),
(party_add_members,reg(2),"trp_townsman",reg(7)),
(store_random,reg(8),5),
(party_add_members,reg(2),"trp_sea_raider",reg(8)),
(store_random,reg(9),5),
(party_add_members,reg(2),"trp_manhunter",reg(9)),
(try_end),
]),
##################################################
# Test: Tavern Recruitment Begin ###############
##################################################
Parties py
# ("village_reinforcements","village_reinforcements",pf_is_static|pf_disabled, no_menu, pt_none, fac_neutral,0,ai_bhvr_hold,0,(1,1),[]),
#######################################################################################
# Test : Tavern recruitment Begin ###################################################
#######################################################################################
("town_merc_1","sargoth_mercs",pf_disabled, no_menu, pt_none, fac_neutral,0,ai_bhvr_hold,0,(0,0),[]),
("town_merc_2","tihr_mercs",pf_disabled, no_menu, pt_none, fac_neutral,0,ai_bhvr_hold,0,(0,0),[]),
("town_merc_3","veluca_mercs",pf_disabled, no_menu, pt_none, fac_neutral,0,ai_bhvr_hold,0,(0,0),[]),
("town_merc_4","suno_mercs",pf_disabled, no_menu, pt_none, fac_neutral,0,ai_bhvr_hold,0,(0,0),[]),
("town_merc_5","jelkala_mercs",pf_disabled, no_menu, pt_none, fac_neutral,0,ai_bhvr_hold,0,(0,0),[]),
("town_merc_6","praven_mercs",pf_disabled, no_menu, pt_none, fac_neutral,0,ai_bhvr_hold,0,(0,0),[]),
("town_merc_7","uxkhal_mercs",pf_disabled, no_menu, pt_none, fac_neutral,0,ai_bhvr_hold,0,(0,0),[]),
("town_merc_8","reyvadin_mercs",pf_disabled, no_menu, pt_none, fac_neutral,0,ai_bhvr_hold,0,(0,0),[]),
("town_merc_9","khudan_mercs",pf_disabled, no_menu, pt_none, fac_neutral,0,ai_bhvr_hold,0,(0,0),[]),
("town_merc_10","tulga_mercs",pf_disabled, no_menu, pt_none, fac_neutral,0,ai_bhvr_hold,0,(0,0),[]),
("town_merc_11","curaw_mercs",pf_disabled, no_menu, pt_none, fac_neutral,0,ai_bhvr_hold,0,(0,0),[]),
("town_merc_12","wercheg_mercs",pf_disabled, no_menu, pt_none, fac_neutral,0,ai_bhvr_hold,0,(0,0),[]),
("town_merc_13","rivacheg_mercs",pf_disabled, no_menu, pt_none, fac_neutral,0,ai_bhvr_hold,0,(0,0),[]),
("town_merc_14","halmar_mercs",pf_disabled, no_menu, pt_none, fac_neutral,0,ai_bhvr_hold,0,(0,0),[]),
("town_merc_15","yalen_mercs",pf_disabled, no_menu, pt_none, fac_neutral,0,ai_bhvr_hold,0,(0,0),[]),
("town_merc_16","dhirim_mercs",pf_disabled, no_menu, pt_none, fac_neutral,0,ai_bhvr_hold,0,(0,0),[]),
("town_merc_17","ichamur_mercs",pf_disabled, no_menu, pt_none, fac_neutral,0,ai_bhvr_hold,0,(0,0),[]),
("town_merc_18","narra_mercs",pf_disabled, no_menu, pt_none, fac_neutral,0,ai_bhvr_hold,0,(0,0),[]),
("town_merc_19","Shariz",pf_disabled, no_menu, pt_none, fac_neutral,0,ai_bhvr_hold,0,(0,0),[]),
("town_merc_20","Durquba",pf_disabled, no_menu, pt_none, fac_neutral,0,ai_bhvr_hold,0,(0,0),[]),
("town_merc_21","Ahmerrad",pf_disabled, no_menu, pt_none, fac_neutral,0,ai_bhvr_hold,0,(0,0),[]),
("town_merc_22","Bariyye",pf_disabled, no_menu, pt_none, fac_neutral,0,ai_bhvr_hold,0,(0,0),[]),
#######################################################################################
# Test : Tavern recruitment End ###################################################
####################################################################################### Добавил еще в 4 города в таверны эту возможность
("zendar","Zendar",pf_disabled|icon_town|pf_is_static|pf_always_visible|pf_hide_defenders, no_menu, pt_none, fac_neutral,0,ai_bhvr_hold,0,(18,60),[]),
triggers py
#NPC system changes begin
#Move unemployed NPCs around taverns
(24 * 15, 0, 0,
[
(call_script, "script_update_companion_candidates_in_taverns"),
],
[]
),
#######################################################################################
# Test : Tavern recruitment Begin ###################################################
#######################################################################################
(24.0, 0, 0.0, [],
[
(call_script, "script_add_tavern_troops"),# 24 -это время для повторного вызова скрипта -обновляемость#
],
),
#######################################################################################
# Test : Tavern recruitment End #####################################################
#######################################################################################
#Process morale and determine personality clashes
(0, 0, 24,
[],
[
это скрипт по отсекам
-
На сколько мне известно, были люди (забыл кто), которые пытались подчинить все игровые объекты физике, и вроде бы небезуспешно.
Нет, я именно про (мне кажется) другую физику ударов в, например, Руси, Викинге и Бритенвальде. Если с полетом стрел все ясно - надо править projectiles, то с ближним боем непонятно.
ты чего на ЛС не отвечаешь?
Просмотрел как-то. Вот все прочитал и пока ничего не могу никому сказать.
Нужно ли оно вообще с этим заморачиваться? Нейтив довольно условен, аркаден, что ли.
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, то с ближним боем непонятно.
Так ты про анимацию что ли или именно про саму схему\формулу: получения урона, нанесения урона, защиты
Добавлено: 16 Июня, 2012, 00:30
Нужно ли оно вообще с этим заморачиваться? Нейтив довольно условен, аркаден, что ли.
Вот это к чему? в смысле?
-
Нет, я именно про (мне кажется) другую физику ударов в, например, Руси, Викинге и Бритенвальде.
Да, как и сказал Хантер, там всего лишь анимации новые вставлены. Наверно, ты имел ввиду "механика" а не физика? Если да, то поспешу огорчить - она в движке и с ней ничего не поделать.
Просмотрел как-то. Вот все прочитал и пока ничего не могу никому сказать.
Ну хорошо, если надумаешь - пиши. Жду :)
-
Наверно, ты имел ввиду "механика" а не физика? Если да, то поспешу огорчить - она в движке и с ней ничего не поделать.
Видимо, меня конкретно приглючило. Всегда казалось, что в Руси физика ударов, особенно топорами и клинками. совершенно иная, будто резче и "тяжелее" как-то, с инерцией.
Вот это к чему? в смысле?
Я про ковыряние основ боя. Например, бесконечные блоки двуручей с помощью легких ятаганов меня тоже не устраивают. Модульная система тем плоха, что довольно сложно реализовать, например, шанс пробития блока более тяжелым оружем, высчитываемый по разница веса блокируемого и блокирующего оружий.
P.S. Даже банальный верхний удар копьем приходится выковыривать из сторонних модов, хотя в модульной системе он якобы уже есть. В Викингре этим ударом попросту заменили атаку lance'ами, т.к. у викингов такой конницы не было. В Нейтиве такое не прокатит.
-
Здравствуйте!
У меня следующая проблема: Я успешно настроил модульную систему, ошибок не было найдено. Дальше, когда я попробовал создать новый город, а именно создал такой значок в файле module_map_icon- ("new_icon",0,"map_town_a", 5.0,0), и такой отряд в module_parties- ("new_town", "Mod_Town", icon_new_icon|pf_town, no_menu, pt_none, fac_neutral,0,ai_bhvr_hold,0,(-1, -1),[], 170), после чего в игре новый город должен был появиться в центре карты. Но городом и не пахнет, а build_module не выявил ошибок. Правда я делаю мод для огнем и мечом, но и модулька тоже для неё.
Что делать, скажите плз.
-
А новую игру начинал?
-
Да
Добавлено: 20 Июня, 2012, 22:59
Может быть я где-то не там вписываю значок и отряд? :(
-
Ребят подскажите еще одну вещь:
Нужно чтобы созданная мною броня появилась в "ЧИТМЕНЮ", какой файл надо отредактировать?
-
Dick Jonson (http://rusmnb.ru/index.php?action=profile;u=15038), Её надо прописывать черезмодульку а не через текстовик, тогда она и будет видна в чит меню
-
Дык я через модульник делал. Подскажи может это связанно с тем, что я создал броню после кодовых строчек:
["items_end", "Items End", [("shield_round_a",0)], 0, 0, 1, 0, 0],
-
Dick Jonson (http://rusmnb.ru/index.php?action=profile;u=15038), Не может а точно, всё должно прописано быть до этой строки, так они вообще в игре не появиться
-
Подскажите плз!!!!!
-
PanZagloba (http://rusmnb.ru/index.php?action=profile;u=25400), в приведённой тобой информации ошибку не видно.
-
У меня модуль ква почему-то не редактирует файлы игры, а добавляет новые в папку modules. С чем это может быть связано?
Добавлено: 21 Июня, 2012, 21:13
PanZagloba ([url]http://rusmnb.ru/index.php?action=profile;u=25400[/url]), в приведённой тобой информации ошибку не видно.
Нет
Добавлено: 21 Июня, 2012, 23:59
Спасибо всем за внимание, проблема решена! :D
-
с неверным прописанием пути к папке, обычно... =/ в модуль инфо пи смотри правильность прописи пути к файлу модульной папки(именно мода, а не модульной системы) можешь просто с копи-паст путь из адреса папки с заменой слэша(\) на нужный вариант для питона....
-
Подскажите как добавить новых наемников в ОиМ: великие битвы.
-
Кто нибудь может подсказать с помощью чего ограниченна зона где могут передвигаться те или иные бандиты (степных нету нигде кроме степи и т.д.) (ситуация такая добавил в мод корабли, и пиратов, но пираты плавают как попало и даже заплывают за зону на которой не может передвигаться игрок т.е. берут игрока в плен и увозят за карту откуда вернуться не возможно (видимо в рабство продают :D) )
-
voin-varg (http://rusmnb.ru/index.php?action=profile;u=16569), см в скриптах и симпл_триггерс то, что следует за party_set_ai_behavior и упоминаются бандиты.
-
Dargor (http://rusmnb.ru/index.php?action=profile;u=1507), А вот это я так понял как раз у нас в симпли отвечает за их дефолтное расстояние рысканья (party_set_ai_patrol_radius, ":bandit_party", 45)
-
HunterWolf (http://rusmnb.ru/index.php?action=profile;u=20773), да, расстояние в игровых "километрах".
-
Большое Спасибо!
-
Хорошо, спасибо, затролили :thumbup:
Вопрос перезадаю:
Появилась ли возможность в версии 1.53 работать в мультиплеере с:
1. Инвентарь
2. Независимые НПС (не боты).
3. Крафтинг.
Если нет, то поделитесь, пожалуйста, ссылками на скрипты или может у кого-то есть наработки, то можно совместно поработать над эти вопросом.
З.Ы, Тем кому нечего сказать аля HunterWolf или Dantares прошу не съедать мой мозг.
-
Появилась ли возможность в версии 1.53 работать в мультиплеере с:
1. Инвентарь — а когда не было возможности работать с инвентарём? :blink:
2. Независимые НПС (не боты). — НПС = Non playable character, бот = a computer-controlled player or opponent. Повторите вопрос.
3. Крафтинг. — что подразумевается под крафтингом? Анимация долбежа молотом по наковальне? Нет, её не появилось, нужно делать самому.
-
В моде The Wild Wind есть реализация строительства, крафтинга и открытия инвенторя в мультиплеере.
Анимация не проблема, сложность реализации в модульной системе, чтоб это всё работало, просто пока что у меня не отчего оттолкнуться.
Есть кое что на Python script/scheme/source exchange (http://mbx.streetofeyes.com/index.php/topic,43.0.html), но что-то стало с mbrepository.com (This website is offline), поэтому если кто-то успел скачать по ссылка сурс код или просто завалялись старые решения по этому вопросу я и хочу глянуть для примера. Я и сам делился всеми наработками, что у меня есть и не перестану этого делать :)
-
joker7by (http://rusmnb.ru/index.php?action=profile;u=17165), http://www.mbrepository.com/index.php (http://www.mbrepository.com/index.php)
Вот тут посмотри может тему тут продублировали, но у меня всё работает http://mountandblade.nexusmods.com/ (http://mountandblade.nexusmods.com/)
-
С mbrepository.com разобрался, просто google chrome начал тупить с кэшем.
Откопал стабильный скрипт срубания головы (http://mbmodwiki.ollclan.eu/Decapitating_Script), хотя когда-то я этим парился, и есть свой, но этот лучше :D, доработаю его и выложу чуть позже.
-
Столкнулся с непонятным поведением игры - при навешивание на сцен_пропс эффектов particle systems при присутствии в сцене и ее редактировании эффекты присутствуют. Но стоит выйти со сцены и повторно зайти половина стает невидимой.
Есть ограничение на количество частиц которые заспауненны (порожденны) эффектом particle systems?
И если кто знает - ограничение распространяется на участок в пространствe или всю сцену?
И почему сразу все видны, а потом игра не обрабатывает половину из них?
-
Может, слишком много напихал их в сцену? А так - не сталкивался с подобными ограничениями :blink:
А новые particle systems использовал? Если да, то я бы попробовал получить в сцене то же количество частиц с применением только нативовских и сравнил поведение игры.
-
ну в общем около 7000 частиц, по тому сколько стоит в num_particles и сколько навесил. где-то на пространство 3*3 метра игровых.
делал эффект - пытался уменьшить размер частицы и увеличить их число, после 10000 игра не воспроизводит партикл. после пяти тысяч идет не равномерное порождение а вспышками через полсекунды примерно. версия 1.153
мож как то новый флаг с ллодами влияет хз. надо глянуть, мож его автоматом добавляет..
А новые particle systems использовал? Если да, то я бы попробовал получить в сцене то же количество частиц с применением только нативовских и сравнил поведение игры
ты за меш или сам код эффекта?
-
Код.
-
Все таки общее количество частиц. уменьшил втрое и работает. хотя совсем не то что нужно.
-
Хотел заменить в crpg арбалест на аркебузу. Модель заменил, а вот тригер с дымом и звуком работать нормально отказывается. Когда стреляю я, то все нормально, но у других игроков ни дыма, ни звука. Т.е. триггер ti_on_weapon_attack (-51) работает только для меня. Пробовал поставить триггер от факела ti_on_init_item (-50), работает и у меня и у других игроков. Триггер срабатывающий при попадании -52 также работает у всех игроков. Даже не знаю куда копать, может кто нибудь сталкивался с похожей проблемой?
-
Народ поясните в чем разница между просто скриптом и скриптом cf_ ?
добавил новую систему титулов, и бат начал ругаться что надо сменить название иначе операция не будет работать, так в чем такая разница между просто скриптом player_join_faction и cf_player_join_faction?
-
voin-varg (http://rusmnb.ru/index.php?action=profile;u=16569), http://rusmnb.ru/index.php?topic=3629.msg124655#msg124655 (http://rusmnb.ru/index.php?topic=3629.msg124655#msg124655)
-
Хотел заменить в crpg арбалест на аркебузу. Модель заменил, а вот тригер с дымом и звуком работать нормально отказывается. Когда стреляю я, то все нормально, но у других игроков ни дыма, ни звука. Т.е. триггер ti_on_weapon_attack (-51) работает только для меня. Пробовал поставить триггер от факела ti_on_init_item (-50), работает и у меня и у других игроков. Триггер срабатывающий при попадании -52 также работает у всех игроков. Даже не знаю куда копать, может кто нибудь сталкивался с похожей проблемой?
Встречный вопрос, у Вас есть модулька CRPG и Вы сами запускаете сервер?
Пока что у меня сложилось впечатление, что Вы подставляете ID тригеров в txt и пытаетесь играть на сервере, где нет Вашей аркебузы и тригера, который Вы вставляете. :blink:
-
Встречный вопрос, у Вас есть модулька CRPG и Вы сами запускаете сервер?
Пока что у меня сложилось впечатление, что Вы подставляете ID тригеров в txt и пытаетесь играть на сервере, где нет Вашей аркебузы и тригера, который Вы вставляете. :blink:
Разумеется у меня нет модульки CRPG :) Но у меня довольно богатый опыт (http://rusmnb.ru/index.php?topic=13486.0) ковыряния в txt файлах CRPG.
Например для создания геральдики на лошадях испрользуется -50 триггер и все работает. Без проблем можно сделать чтобы метательные ножи дымились при попадании, а вот триггеры на атаку работают только у меня. Почему так не пойму.
-
Встречный вопрос, у Вас есть модулька CRPG и Вы сами запускаете сервер?
Пока что у меня сложилось впечатление, что Вы подставляете ID тригеров в txt и пытаетесь играть на сервере, где нет Вашей аркебузы и тригера, который Вы вставляете. :blink:
Разумеется у меня нет модульки CRPG :) Но у меня довольно богатый опыт ([url]http://rusmnb.ru/index.php?topic=13486.0[/url]) ковыряния в txt файлах CRPG.
Например для создания геральдики на лошадях испрользуется -50 триггер и все работает. Без проблем можно сделать чтобы метательные ножи дымились при попадании, а вот триггеры на атаку работают только у меня. Почему так не пойму.
потому что у тебя и у сервера разные данные, вот и не пашет (вернее не полностью), и вообще зачем тебе ковыряться в txt если мод сетевой, можно баги ловить, так это еще и не совсем честно, (например заменив модель стрелы в полете на более заметную (например горящую) стрелять станет гораздо легче)
-
Встречный вопрос, у Вас есть модулька CRPG и Вы сами запускаете сервер?
Пока что у меня сложилось впечатление, что Вы подставляете ID тригеров в txt и пытаетесь играть на сервере, где нет Вашей аркебузы и тригера, который Вы вставляете. :blink:
Разумеется у меня нет модульки CRPG :) Но у меня довольно богатый опыт ([url]http://rusmnb.ru/index.php?topic=13486.0[/url]) ковыряния в txt файлах CRPG.
Например для создания геральдики на лошадях испрользуется -50 триггер и все работает. Без проблем можно сделать чтобы метательные ножи дымились при попадании, а вот триггеры на атаку работают только у меня. Почему так не пойму.
Скажу так, модить мод, который не использует Ваши модификации приводит все Ваши услилия к нулю, править txt оно то хорошо, но используется восновном для чита, а создание своего мода для M&B на основе модульной системы тяжёлый и не благодарный труд дает результат :D
-
Встречный вопрос, у Вас есть модулька CRPG и Вы сами запускаете сервер?
Пока что у меня сложилось впечатление, что Вы подставляете ID тригеров в txt и пытаетесь играть на сервере, где нет Вашей аркебузы и тригера, который Вы вставляете. :blink:
Разумеется у меня нет модульки CRPG :) Но у меня довольно богатый опыт ([url]http://rusmnb.ru/index.php?topic=13486.0[/url]) ковыряния в txt файлах CRPG.
Например для создания геральдики на лошадях испрользуется -50 триггер и все работает. Без проблем можно сделать чтобы метательные ножи дымились при попадании, а вот триггеры на атаку работают только у меня. Почему так не пойму.
Скажу так, модить мод, который не использует Ваши модификации приводит все Ваши услилия к нулю, править txt оно то хорошо, но используется восновном для чита, а создание своего мода для M&B на основе модульной системы тяжёлый и не благодарный труд дает результат :D
хорошо сказал, особенно про создание мода с помощью модульной :thumbup:
кто нибудь может подсказать как прописать переменную чтобы в нее запоминалось имя персонажа? (опять проблемма с этими титулами код шикарный, титулы дает игроку, вставляется перед именем (при входе в фракцию) получается например Барон Варг и т.д., но потом при выходе из фракции имя не меняется ( и я хочу сделать примерно так
(troop_set_faction, ":spouse", "$players_kingdom"),
(assign, ":Custom_name", ":переменная имени"), (вот она мне и нужна т.е. в новой переменной я хочу запомнить имя у персонажа до того как ему дали титул, а при выходе наоборот переменную имени присваивать значение custon_name)
(call_script, "script_troop_set_title_according_to_faction_gender_and_lands", ":spouse", "$players_kingdom"),
будет ли это работать и какая переменная отвечает за имя?
)
-
потому что у тебя и у сервера разные данные, вот и не пашет (вернее не полностью)
Похоже проблема действительно в этом, но уж как то очень неочевидно все это.
И то что я делаю это лишь безобидное украшательство, никаких читов здесь нет.
-
Как раз задачка про сервера, в Варбанде есть баг с фитчей unequip_item и equip_item или наоборот, это когда нужно во время игры подменить любую вещь у игрока, так вот есть статья (http://forums.taleworlds.com/index.php?topic=215558.0), Vornne (один из разработчиков PW мода) описал решение проблемы с ответами клиента и сервера, это касается только игры на dedicate server, чувствую это затронет всех, кто собирается делать мп-моды, подскажите кто смог разобрать его фитчу, я дошёл пока что до ошибок:
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"),, что вроде более правильно, так как:
(call_script, "script_multiplayer_set_item_available_for_troop", "itm_arrows", "trp_swadian_crossbowman_multiplayer"),
я так понял, что каждому trp_мультиплеерному_классу нужно прописать это, но тогда в меня закупки появится itm_invisible_head, что совсем не надо :embarrassed:
-
Немного поэкспериментировал, вроде сделал всё правильно:
(ti_on_agent_hit, 0, 0, [],
[
(multiplayer_is_server),
(store_trigger_param_1, ":agent"),
(agent_is_human, ":agent"),
(store_trigger_param_3, ":damage"),
(ge, ":damage", 30), # Strong blow
(store_agent_hit_points, ":hp", ":agent", 1),
(val_add, ":hp", 5),
(ge, ":damage", ":hp"), # Damage > HP + 5 (account for armour soak)
(agent_get_position, pos1, ":agent"),
(get_distance_between_positions, ":distance", pos1, pos0),
(is_between, ":distance", 160, 176), # If neck hit
(agent_get_item_slot, ":item", ":agent", 4),
(try_begin),
(ge, ":item", 1),
(agent_unequip_item, ":agent", ":item"),
(call_script, "script_agent_equip_item", ":agent", ":item"), # dedecate fix
(try_end),
(agent_equip_item, ":agent", "itm_invisible_head"), # Replace with invisible head
(particle_system_burst, "psys_game_blood_3", pos1, 200), # Blood
(play_sound_at_position, "snd_decapitation", pos4),
(try_begin),
(agent_set_position, ":agent", pos1),
(agent_set_animation, ":agent", "anim_death_cut_head"),
(try_end),
(set_spawn_position, pos1),
(spawn_scene_prop, "spr_head_dynamic_male"), # Flying head, SP only
]),
*spr_head_dynamic_male - прописывается в module_scene_props.py, там всё работает.
(item_set_slot, "itm_invisible_head", slot_item_multiplayer_item_class, multi_item_class_type_light_helm),
в конце module_scripts
# dedicate fix
("agent_equip_item",
[(store_script_param, ":agent_id", 1),
(store_script_param, ":item_id", 2),
(try_begin),
(multiplayer_is_server), # this script should only be called on the server, so this check is just to make sure
(agent_equip_item, ":agent_id", ":item_id"), # for the server combat calculations
(item_get_type, ":item_type", ":item_id"),
(is_between, ":item_type", itp_type_head_armor), # make sure the item is an armor one before messaging all clients
(get_max_players, ":max_players"),
(try_for_range, ":player_id", 1, ":max_players"), # start at 1, since 0 is the server
(player_is_active, ":player_id"),
(multiplayer_send_2_int_to_player, ":player_id", multiplayer_event_agent_equip_item, ":agent_id", ":item_id"),
(try_end),
(try_end),
]),
, но с эвентами так и не понял:
("game_receive_url_response",
[
(else_try),
(eq, ":event_type", multiplayer_event_agent_equip_item),
(store_script_param, ":agent_id", 3),
(store_script_param, ":item_id", 4),
(try_begin),
(agent_is_active, ":agent_id"),
(is_between, ":item_id", all_items_begin, all_items_end),
(agent_equip_item, ":agent_id", ":item_id"),
(try_end),
]),
Ошибка при компиляции:
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
___________________
От ошибок избавился, дальнейшее обсуждение скрипта веду на taleworlds.com (http://forums.taleworlds.com/index.php/topic,215558.15.html) !
-
Написал код для module_mission_templates
("arena_duel_geoffrey",mtf_arena_fight,-1,
"Dueling Geoffrey",
(56, mtef_visitor_source|mtef_team_0, af_override_horse, aif_start_alarmed, 1, []),
(58, mtef_visitor_source|mtef_team_2, af_override_horse, aif_start_alarmed, 1, []),
[common_inventory_not_available,
(ti_tab_pressed, 0, 0, [(display_message, "@Geoffrey: Trying to flee, Peasant?")], [])
(1, 3, ti_once,[(main_hero_fallen),],
[(disable_party,"pt_geoffrey_party"),(assign,"$geoffrey_duel",3),
# (change_screen_return),
(jump_to_scene,"scn_zendar_center")
]
),
(2, 3, ti_once,[( all_enemies_defeated, 1),(neg|main_hero_fallen, 0),],
[(assign,"$geoffrey_duel",2),
# (remove_troop_from_site,"trp_geoffrey","scn_the_happy_boar"), ##Remove Geoffrey from the tavern scene
(disable_party,"pt_geoffrey_party"),
# (change_screen_return),
(jump_to_scene,"scn_zendar_center")
]
),
],
),
при компиляции:
Start Processing...
______________________________
Traceback (most recent call last):
File "process_init.py", line 2, in <module>
from process_operations import *
File "E:\Mount&Blade - Warband\Modules\Native plus+\Source\process_operations.
py", line 21, in <module>
from module_mission_templates import *
File "E:\Mount&Blade - Warband\Modules\Native plus+\Source\module_mission_temp
lates.py", line 15725, in <module>
(jump_to_scene,"scn_zendar_center")
TypeError: 'tuple' object is not callable
Traceback (most recent call last):
File "process_global_variables.py", line 12, in <module>
from process_operations import *
File "E:\Mount&Blade - Warband\Modules\Native plus+\Source\process_operations.
py", line 21, in <module>
from module_mission_templates import *
File "E:\Mount&Blade - Warband\Modules\Native plus+\Source\module_mission_temp
lates.py", line 15725, in <module>
(jump_to_scene,"scn_zendar_center")
TypeError: 'tuple' object is not callable
Exporting strings...
Exporting skills...
Exporting tracks...
Exporting animations...
Exporting meshes...
Exporting sounds...
Exporting skins...
Traceback (most recent call last):
File "process_map_icons.py", line 6, in <module>
from process_operations import *
File "E:\Mount&Blade - Warband\Modules\Native plus+\Source\process_operations.
py", line 21, in <module>
from module_mission_templates import *
File "E:\Mount&Blade - Warband\Modules\Native plus+\Source\module_mission_temp
lates.py", line 15725, in <module>
(jump_to_scene,"scn_zendar_center")
TypeError: 'tuple' object is not callable
Exporting faction data...
Exporting item data...
Traceback (most recent call last):
File "process_items.py", line 66, in <module>
from process_operations import *
File "E:\Mount&Blade - Warband\Modules\Native plus+\Source\process_operations.
py", line 21, in <module>
from module_mission_templates import *
File "E:\Mount&Blade - Warband\Modules\Native plus+\Source\module_mission_temp
lates.py", line 15725, in <module>
(jump_to_scene,"scn_zendar_center")
TypeError: 'tuple' object is not callable
Exporting scene data...
Traceback (most recent call last):
File "process_scenes.py", line 15, in <module>
from process_operations import *
File "E:\Mount&Blade - Warband\Modules\Native plus+\Source\process_operations.
py", line 21, in <module>
from module_mission_templates import *
File "E:\Mount&Blade - Warband\Modules\Native plus+\Source\module_mission_temp
lates.py", line 15725, in <module>
(jump_to_scene,"scn_zendar_center")
TypeError: 'tuple' object is not callable
Exporting troops data
Exporting particle data...
Traceback (most recent call last):
File "process_scene_props.py", line 7, in <module>
from process_operations import *
File "E:\Mount&Blade - Warband\Modules\Native plus+\Source\process_operations.
py", line 21, in <module>
from module_mission_templates import *
File "E:\Mount&Blade - Warband\Modules\Native plus+\Source\module_mission_temp
lates.py", line 15725, in <module>
(jump_to_scene,"scn_zendar_center")
TypeError: 'tuple' object is not callable
Traceback (most recent call last):
File "process_tableau_materials.py", line 8, in <module>
from process_operations import *
File "E:\Mount&Blade - Warband\Modules\Native plus+\Source\process_operations.
py", line 21, in <module>
from module_mission_templates import *
File "E:\Mount&Blade - Warband\Modules\Native plus+\Source\module_mission_temp
lates.py", line 15725, in <module>
(jump_to_scene,"scn_zendar_center")
TypeError: 'tuple' object is not callable
Traceback (most recent call last):
File "process_presentations.py", line 8, in <module>
from process_operations import *
File "E:\Mount&Blade - Warband\Modules\Native plus+\Source\process_operations.
py", line 21, in <module>
from module_mission_templates import *
File "E:\Mount&Blade - Warband\Modules\Native plus+\Source\module_mission_temp
lates.py", line 15725, in <module>
(jump_to_scene,"scn_zendar_center")
TypeError: 'tuple' object is not callable
Exporting party_template data...
Traceback (most recent call last):
File "process_parties.py", line 6, in <module>
from process_operations import *
File "E:\Mount&Blade - Warband\Modules\Native plus+\Source\process_operations.
py", line 21, in <module>
from module_mission_templates import *
File "E:\Mount&Blade - Warband\Modules\Native plus+\Source\module_mission_temp
lates.py", line 15725, in <module>
(jump_to_scene,"scn_zendar_center")
TypeError: 'tuple' object is not callable
Exporting quest data...
Exporting info_page data...
Traceback (most recent call last):
File "process_scripts.py", line 7, in <module>
from process_operations import *
File "E:\Mount&Blade - Warband\Modules\Native plus+\Source\process_operations.
py", line 21, in <module>
from module_mission_templates import *
File "E:\Mount&Blade - Warband\Modules\Native plus+\Source\module_mission_temp
lates.py", line 15725, in <module>
(jump_to_scene,"scn_zendar_center")
TypeError: 'tuple' object is not callable
Traceback (most recent call last):
File "process_mission_tmps.py", line 5, in <module>
from module_mission_templates import *
File "E:\Mount&Blade - Warband\Modules\Native plus+\Source\module_mission_temp
lates.py", line 15725, in <module>
(jump_to_scene,"scn_zendar_center")
TypeError: 'tuple' object is not callable
Traceback (most recent call last):
File "process_game_menus.py", line 8, in <module>
from process_operations import *
File "E:\Mount&Blade - Warband\Modules\Native plus+\Source\process_operations.
py", line 21, in <module>
from module_mission_templates import *
File "E:\Mount&Blade - Warband\Modules\Native plus+\Source\module_mission_temp
lates.py", line 15725, in <module>
(jump_to_scene,"scn_zendar_center")
TypeError: 'tuple' object is not callable
Traceback (most recent call last):
File "process_simple_triggers.py", line 5, in <module>
from process_operations import *
File "E:\Mount&Blade - Warband\Modules\Native plus+\Source\process_operations.
py", line 21, in <module>
from module_mission_templates import *
File "E:\Mount&Blade - Warband\Modules\Native plus+\Source\module_mission_temp
lates.py", line 15725, in <module>
(jump_to_scene,"scn_zendar_center")
TypeError: 'tuple' object is not callable
Traceback (most recent call last):
File "process_dialogs.py", line 9, in <module>
from process_operations import *
File "E:\Mount&Blade - Warband\Modules\Native plus+\Source\process_operations.
py", line 21, in <module>
from module_mission_templates import *
File "E:\Mount&Blade - Warband\Modules\Native plus+\Source\module_mission_temp
lates.py", line 15725, in <module>
(jump_to_scene,"scn_zendar_center")
TypeError: 'tuple' object is not callable
Traceback (most recent call last):
File "process_global_variables_unused.py", line 3, in <module>
from process_operations import *
File "E:\Mount&Blade - Warband\Modules\Native plus+\Source\process_operations.
py", line 21, in <module>
from module_mission_templates import *
File "E:\Mount&Blade - Warband\Modules\Native plus+\Source\module_mission_temp
lates.py", line 15725, in <module>
(jump_to_scene,"scn_zendar_center")
TypeError: 'tuple' object is not callable
Exporting postfx_params...
Exporting ground_spec data...
All Finish ...
______________________________
Script processing has ended.
Press any key to exit. . .
КАК ИСПРАВИТЬ?????????????????? :cry: :cry: :cry: :cry: :cry: :cry: :cry: :cry: :cry: :cry: :cry: :cry:
-
И у меня вопрос.
Я пытаюсь добавить обьект в игру. Все как надо, создал брф, прописал в module.ini, сделал материалы, присвоил их к обьекту. Дальше вроде нужно прописать обьект в module_scene_props, чтобы из редактора его на сцену можно было поместить. Вот только вопрос - в сцен пропсе целая гора списков, а в какой прописывать обьект? Или вообще, лучше создать новый?
И еще один вопрос. Методом тыка (полунаучного) я таки прописал обьект в сценпропсах. Но в игре все наложенные на него текстуры - белые, хотя в брф-е я всё настроил. Или все-таки не всё? Или проблема в сцен пропс?
В общем, если кому не трудно, подскажите.
P.S. И прошу, не закидывайте тапками за нубство - я изучением модульки занялся, по сути, 2 часа назад :)
-
Как следует из ошибки
(jump_to_scene,"scn_zendar_center")
TypeError: 'tuple' object is not callable
объект "scn_zendar_center" не может быть вызван.
Проблема в том, что файл module_mission_templates.py напрямую не использует сцены из module_scenes.py, что видно в самом верху файла т.к. там отсутствует запись from module_scenes import *
То есть компилятор просто не понимает, что это такое "scn_zendar_center"
Решение:
1. Задавать сцену до начала миссии, как это собственно и делается везде.
2. Либо попробовать прописать в начале module_mission_templates.py строку from module_scenes import * (не пробовал, гарантировать работоспособность не могу)
-
ValerBOSS (http://rusmnb.ru/index.php?action=profile;u=19867),
Не совсем понятно проблема, но...
Создаёшь мешь переносишь её в брфку с пропсами, (чтоб не создавать новую, не поясняю, надеюсь сам понимаешь, где и что надо написать в названиях в окошках материалов и текстур в брф идиторе)
Теперь надо сделать колизии материал. лень лить прикрепляю ниже с начало тот что БРФ, потом тот что БРФ2
Ну а по добавлению в модульку мож вот это прочесть:
Разберём запись объекта в module_scene_props.
(нажмите для открытия / скрытия)
Код: [Выделить]
("my_house",0,"dom","bo_dom", [])
«"my_house"» - идентификатор сцены (не должен повторяться);
«0» - флаг объекта, определяющий его свойства («0» - значит специальных свойств нет)
(нажмите для открытия / скрытия)
sokf_type_container — сундук;
sokf_type_ai_limiter — плоский ограничитель движения ботов;
sokf_type_barrier — плоский ограничитель движения;
sokf_type_barrier_leave — ограничитель движения игрока, предлагающий покинуть сцену при приближении;
sokf_type_ladder — лестница (изменяется анимация хотьбы по объекту);
sokf_type_barrier3d — объёмный ограничитель движения;
sokf_add_fire — эффект огня (в последних версиях не используется);
sokf_add_smoke — эффект дыма (в последних версиях не используется);
sokf_add_light — эффект света (в последних версиях не используется);
sokf_show_hit_point_bar — показывает красную строчку здоровья при приближении или при нажатии на «F»;
sokf_invisible — модель объекта отображается только в режиме редактирования;
sokf_destructible — разрешает разрушать объект (нужен ещё и триггер);
sokf_moveable — разрешает анимировать объект (пример: осадная башня);
sokf_dynamic_physics — объект обсчитывается физическим движком «Havok» (сильно грузит систему; не работает в сетевой игре).
«"dom"» - модель объекта;
«"bo_dom"» - тело (физическая модель) объекта;
«[]» - скрипты, используемые объектом.
Статичные объекты
Статичные объекты — любые объекты, имеющие лишь модель и тело (физическая модель). Они просто стоят на сцене, и мы наслаждаемся их видом. К примеру, любой дом — статичный объект.
Чтобы сделать объект с новой моделью, нам понадобятся его модель и тело, загнанные в архив BRF, который лежит в папке «Resource» модуля (есть вопрос по архивам? - Задай здесь!), и «module_scene_props».
1) Сделаем запись в «module_scene_props» (до последней «]»):
Код: [Выделить]
("my_house",0,"dom","bo_dom", []),
2) Сохраняем и компилируем;
3) В «module.ini» прописываем строчку «load_mod_resource = dom», где «dom» - название вашего архива.
Вуаля! У вас новый объект, который вы можете свободно размещать на сцене. А можете и не размещать.
Звуковые объекты
«Звуковой объект» - любой объект с простейшим скриптом для звучания. Чтобы его сделать вам понадобятся файлы «module_scene_props» и «module_sounds».
В примере разбирается объект без тела и с невидимой моделью (т.е. она видна только в режиме редактирования).
1) Сделаем запись в «module_scene_props»:
Код: [Выделить]
("Sound_swamp",sokf_invisible,"question_mark","0", [
(ti_on_scene_prop_init,
[
(play_sound, "snd_swamp_1", 0),
]),
]),)
2) Чтобы звук проигрывался, указываем на него системе в module_sounds(добавляем до последней «]»):
Код: [Выделить]
("swamp_1", sf_priority_4|sf_vol_5|sf_looping,["swamp.ogg"]),
Разберём запись звука.
(нажмите для открытия / скрытия)
Код: [Выделить]
("swamp_1", sf_priority_4|sf_vol_5|sf_looping,["swamp.ogg"]),
«"swamp_1"» - идентификатор звука;
«sf_priority_4|sf_vol_5|sf_looping» - флаги, определяющие свойства звука.
(нажмите для открытия / скрытия)
sf_2d — обсчитывает звук лишь в плоскости;
sf_looping — играет звук по кругу;
sf_start_at_random_pos — играет с случайного места композиции;
sf_priority_1-10 — приоритет, определяющий какие звуки заглушают другие (большие гасят меньшие);
sf_vol_1-15 — громкость.
«["swamp.ogg"]» - название звукового файла.
3) Компилируем;
4) Добавляем в папку «sounds» модуля сам звук «swamp.ogg» (формат звука важен!);
5) Указываем в «module.ini» мода «scan_module_sounds = 1» (не добавлять, а земенить здесь «0» на «1»).
Объект готов. После добавления на сцену слышаться лягушки, комары и бульканье. Или что вы ещё вставите.
Примечание: наличие большого числа звуковых объектов тормозит игру и может привести к её вылету.
Анимационные объекты[/b]
Анимационные объекты — объекты, обладающие анимацией.
Есть два пути анимирования:
в «module_scene_props» - запускает анимацию для каждого типа объектов (например: дверь, пугало) во всех режимах;
в «module_mission_templates» - запускает анимацию для каждого типа объектов, возможно и не предназначенных для того в том или ином режиме (скажем, можно так анимировать всё что угодно: дома, столы, стены...), но режим игры указывается вручную.
Здесь разбирается второй способ:
1) Откройте файл «module_mission_templates»;
2) После конца любой записи (до последней «]») создайте вашу запись;
Ниже представлен пример такой записи с комментариями. Доступные команды смотрите в «header_operations».
Код: [Выделить]
move_head = (0, 0, 0, [
(scene_prop_get_num_instances, ":count_of_head", "spr_skeleton_head"), # сосчитали, сколько всего голов на сцене
(try_for_range, ":cur_head", 0, ":count_of_head"), # пускаем цикл операций для каждой головы
(scene_prop_get_instance, ":head_instance", "spr_skeleton_head", ":cur_head"), # обсчитали голову
(prop_instance_get_position,pos1,":head_instance"), # и её местоположение
(position_move_z, pos1, 1000), # сдвинули координату z на 1000 единиц
(prop_instance_animate_to_position, ":head_instance", pos1, 2000), # заставили двигаться голову к этой позиции, то есть вверх, за 20 секунд.
(try_end), - закончили цикл
],
[])
Простейшие команды анимации
(нажмите для открытия / скрытия)
3) Найдите триггер режима, в котором должна играть анимация. Далее разбирается для режима «deathmatch»;
Найдите
Код: [Выделить]
"multiplayer_dm",mtf_battle_mode,-1, #deathmatch mode
4) Найдите
Код: [Выделить]
multiplayer_server_check_polls,
5) Добавтье после скрипт «move_head,»;
6) Сохраните и скомпилируйте.
Если вы сделали всё как в примере, то на сцене увидите взлетающие черепа.
Разрушаемые объекты
Разрушаемые объекты - , не поверите, объекты которые игрок может разрушить. При этом проигрывается определённая анимация. К сожалению, у меня нет подробной информации, только лишь пример разрушаемого объекта. Сделан он на основе «дверей».
Вам понадобится файл «module_scene_props».
1) Откройте «module_scene_props»;
2) Найдите любую анимированную дверь, например «castle_f_door_b»;
3) Скопируйте запись со всеми триггерами после;
4) Удалите строчку «check_castle_door_use_trigger,»;
Это была строка, отвечающая за «открываемость» двери, остальное (оставшееся) связано с уничтожением и анимацией «смерти».
5) Измените запись по вашему усмотрению, но не забывайте сменить идентификатор.
Таким образом можно сделать разрушаемым всё: от домов до заборчиков. Только представьте, как это могут использовать игроки... Представьте и ужаснитесь — они же смогут попасть куда угодно и все эти места надо будет проработать!
Боле подробно писать не знаю что, точнее надо более конкретно спрашивать, всё что можно есть в хейдер оперейшн и хейдер сценс пропс
[вложение удалено Администратором]
[вложение удалено Администратором]
[вложение удалено Администратором]
-
Пробовал сделать так
("arena_duel_geoffrey",mtf_arena_fight,-1,
"Dueling Geoffrey",
(56, mtef_visitor_source|mtef_team_0, af_override_horse, aif_start_alarmed, 1, []),
(58, mtef_visitor_source|mtef_team_2, af_override_horse, aif_start_alarmed, 1, []),
[common_inventory_not_available,
(ti_tab_pressed, 0, 0, [(display_message, "@Geoffrey: Trying to flee, Peasant?")], [])
(1, 3, ti_once,[(main_hero_fallen),],
[(disable_party,"pt_geoffrey_party"),(assign,"$geoffrey_duel",3),
(change_screen_return),
(finish_mission,0)
]
),
(2, 3, ti_once,[( all_enemies_defeated, 1),(neg|main_hero_fallen, 0),],
[(assign,"$geoffrey_duel",2),
# (remove_troop_from_site,"trp_geoffrey","scn_the_happy_boar"), ##Remove Geoffrey from the tavern scene
(disable_party,"pt_geoffrey_party"),
(change_screen_return),
(finish_mission,0)
]
),
],
),
Та же самая хрень
объект "scn_zendar_center" не может быть вызван.
Ха-ха рабочий код:
(
"zendar_arena_fight",mtf_arena_fight,-1,
"You will fight a match in the arena. The fighter to score 9 points first wins.",
[
(16,mtef_visitor_source,af_override_horse|af_override_weapons|af_override_head,0,1,[]),
(0,mtef_visitor_source|mtef_team_0,af_override_all,aif_start_alarmed,1,[itm_practice_bow,itm_practice_arrows,itm_practice_horse,itm_red_tourney_armor, itm_red_tourney_helmet]),
(1,mtef_visitor_source|mtef_team_0,af_override_all,aif_start_alarmed,1,[itm_heavy_practice_sword,itm_red_tourney_armor, itm_red_tourney_helmet]),
(2,mtef_visitor_source|mtef_team_0,af_override_all,aif_start_alarmed,1,[itm_heavy_practice_sword,itm_practice_horse,itm_red_tourney_armor, itm_red_tourney_helmet]),
(3,mtef_visitor_source|mtef_team_0,af_override_all,aif_start_alarmed,1,[itm_practice_lance,itm_practice_shield,itm_practice_horse,itm_red_tourney_armor, itm_red_tourney_helmet]),
(4,mtef_visitor_source|mtef_team_0,af_override_all,aif_start_alarmed,1,[itm_practice_bow,itm_practice_arrows,itm_red_tourney_armor, itm_red_tourney_helmet]),
(5,mtef_visitor_source|mtef_team_0,af_override_all,aif_start_alarmed,1,[itm_practice_sword,itm_practice_shield,itm_red_tourney_armor]),
(6,mtef_visitor_source|mtef_team_0,af_override_all,aif_start_alarmed,1,[itm_heavy_practice_sword,itm_practice_horse,itm_red_tourney_armor]),
(7,mtef_visitor_source|mtef_team_0,af_override_all,aif_start_alarmed,1,[itm_practice_lance,itm_practice_shield,itm_practice_horse,itm_red_tourney_armor, itm_red_tourney_helmet]),
(8,mtef_visitor_source|mtef_team_1,af_override_all,aif_start_alarmed,1,[itm_practice_bow,itm_practice_arrows,itm_blue_tourney_armor,itm_blue_tourney_helmet]),
(9,mtef_visitor_source|mtef_team_1,af_override_all,aif_start_alarmed,1,[itm_practice_lance,itm_practice_shield,itm_practice_horse,itm_blue_tourney_armor,itm_blue_tourney_helmet]),
(10,mtef_visitor_source|mtef_team_1,af_override_all,aif_start_alarmed,1,[itm_heavy_practice_sword,itm_blue_tourney_armor,itm_blue_tourney_helmet]),
(11,mtef_visitor_source|mtef_team_1,af_override_all,aif_start_alarmed,1,[itm_practice_sword,itm_practice_shield,itm_blue_tourney_armor,itm_blue_tourney_helmet]),
(12,mtef_visitor_source|mtef_team_1,af_override_all,aif_start_alarmed,1,[itm_practice_bow,itm_practice_arrows,itm_practice_horse,itm_blue_tourney_armor]),
(13,mtef_visitor_source|mtef_team_1,af_override_all,aif_start_alarmed,1,[itm_practice_lance,itm_practice_shield,itm_practice_horse,itm_blue_tourney_armor,itm_blue_tourney_helmet]),
(14,mtef_visitor_source|mtef_team_1,af_override_all,aif_start_alarmed,1,[itm_heavy_practice_sword,itm_blue_tourney_armor]),
(15,mtef_visitor_source|mtef_team_1,af_override_all,aif_start_alarmed,1,[itm_practice_sword,itm_practice_shield,itm_blue_tourney_armor]),
],
[
(ti_before_mission_start, 0, 0, [], [(call_script, "script_change_banners_and_chest")]),
(ti_tab_pressed, 0, 0, [],
[(question_box,"str_give_up_fight")]),
(ti_question_answered, 0, 0, [],
[(store_trigger_param_1,":answer"),(eq,":answer",0),(jump_to_scene,"scn_zendar_center"),]),
(1, 4, ti_once, [(main_hero_fallen,0)],
[(jump_to_scene,"scn_zendar_center")]),
(1, 4, ti_once, [(num_active_teams_le,1),(neg|main_hero_fallen,0)],
[(store_remaining_team_no,"$zendar_winner_team"),(assign,"$arena_fight_won",1),(jump_to_scene,"scn_zendar_center")]),
(ti_inventory_key_pressed, 0, 0, [(display_message,"str_cant_use_inventory_arena")], []),
],
),
-
Создаёшь мешь переносишь её в брфку с пропсами, чтоб не создавать новую
Ну, мне это не грозит, я её уже создал :)
тот что БРФ
Коллизия есть.
тот что БРФ2
Эмм вот тут я сделал так: создал материалы и на каждый присвоил тектуру в diffuseA и бамп, для которых был. После уже присвоил в брфке с пропсами их. К стати брфку с материалами я тоже создал, старые вообще не использовал.
И еще - все изменения вносятся как в мод, т. е. я заполняю пустые папки Resourses и Textures, по этому, собственно, и не использую другие брф-ы, по причине их отсутствия.
Ну а по добавлению в модульку мож вот это прочесть:
(нажмите для открытия / скрытия)
Ух-ты, не подозревал, что в справочнике по ВРС-у есть раздел про добавление обьектов! Надо изучить!
Не совсем понятно проблема, но...
Проблемы
1) Не знаю куда прописывать обьект (сейчас в справочник загляну)
2) В игре текстур нет, обьект белый. (Судя по всему это от того, что я не создал брфку с текстурами.)
-
Janycz (http://rusmnb.ru/index.php?action=profile;u=20234), проблема в запятых
например в конце строки
y: Trying to flee, Peasant?")], []) должна быть, а нету
'tuple' object is not callable - обычно признак "слипания" слов и фраз.
ValerBOSS (http://rusmnb.ru/index.php?action=profile;u=19867), ты мог ошибиться в названии материала/текстуры. Также бывает, что материал прописан в одном брф, а меш в другом, причём в модуль.ини сначала прописан тот, где меш, а позже - файл с материалом (в таком случае игра может запутаться и как бы не найти материал, тогда записи нужно переставить местами либо объединить сами брф-файлы).
-
Дело обстоит не совсем так как, я описал. Продолжаю вопрос тут (http://rusmnb.ru/index.php?topic=634.msg612675#msg612675).
-
Janycz ([url]http://rusmnb.ru/index.php?action=profile;u=20234[/url]), проблема в запятых
например в конце строки
y: Trying to flee, Peasant?")], []) должна быть, а нету
'tuple' object is not callable - обычно признак "слипания" слов и фраз.
Сработало!
-
Подскажите пожалуйста как прикрутить меню к городу.
Просто создал город и очень хочу прикрутить к нему отдельное меню.
Заранее спасибо! :)
-
Yionex (http://rusmnb.ru/index.php?action=profile;u=25893), смотри скрипт game_event_party_encounter
в этот блок добавь по аналогии свой город и направление в твое меню. ну и сделать соответственно в "модуль_гейм_меню" свое меню города.
(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"),
(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),
-
Извините пожалуйста но я не понял меню я сделал.
(
"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]]),
]
),
меню простое но я дополню его когда научусь привязывать
и вот город
("kazemat","Kazemat's", icon_castle_a|pf_town, no_menu, pt_none, fac_kingdom_7,0,ai_bhvr_hold,0,(-1, -1),[], 28),
-
Когда партия игрока встречается с любой другой партией на карте вызывается из движка скрипт - "game_event_party_encounter"который расположен в module_scripts.py и который определяет вызов нужного меню в зависимости от того с какой партией встретился игрок.
если партия город - то меню города
(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_village),
(jump_to_menu, "mnu_village"),
Проще всего для уразумения что к чему сделать по аналогии с партией зендар
(else_try),
(eq, "$g_encountered_party", "p_zendar"),
(jump_to_menu, "mnu_zendar"),
вставить сюда блок
(else_try),
(eq, "$g_encountered_party", "p_zendar"),
(jump_to_menu, "mnu_zendar"),
# NEW BLOCK
(else_try),
(eq, "$g_encountered_party", "p_kazemat"),
(jump_to_menu, "mnu_kazemat_enter"),
# END NEW BLOCK
(else_try),
(eq, "$g_encountered_party", "p_salt_mine"),
(jump_to_menu, "mnu_salt_mine"),
теперь ваше меню
("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]]),
скобки операций должны быть круглыми. в мс посмотрите внимательно синтаксис.
само меню написано неправильно. расмотрите меню
"zendar" в файле module_game_menus.py
-
само меню написано неправильно. расмотрите меню
Ха-ха
Правильно оно написано
-
верно :embarrassed:. сбило с толку куча квадратных скобок.
-
Всё равно не хочет работать вызывается стандартное меню города помогите пожалуйста!
-
Yionex (http://rusmnb.ru/index.php?action=profile;u=25893), покажи весь свой измененный скрипт "game_event_party_encounter" и полностью свое меню "kazemat_enter".
По моему, ты в скрипте не в то место добавил. До него условие могло просто-напросто не дойти.
-
("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),
(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),
...
выполняется раньше. И, соответственно, ни одно последующее 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),
...
P.S.: В теге "code" теги не работают ) Он для того и сделан, чтобы показывать текст "как есть". Для цвета, шрифта и т.д. используй цитату (или спойлер).
-
Нет не получилось
-
А в parties этот город точно называется "kazemat"?
Вот у меня добавление
(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),
безотказно открывает меню деревни в Дириме.
Вероятно, у тебя $g_encountered_party != "p_kazemat", так как сам город имеет иной ID.
-
("kazemat","Kazemat's",icon_town|pf_town, no_menu, pt_none, fac_kingdom_7,0,ai_bhvr_hold,0,(18,60),[]),
Всё заработало незнаю как но просто поставил модульку заново и всё заново написал
И ещё не подскажешь как посмотреть все сцены в игре с их названием?
-
Yionex (http://rusmnb.ru/index.php?action=profile;u=25893), module_scenes.py
а если названия как в игре, то тогда в module_strings. А если русские то в modules/%module%/languages/ru/game_strings.csv
-
И ещё не подскажешь как посмотреть все сцены в игре с их названием?
Ну как бы все сцены прописаны в "module_scenes.py". Но это какой-то слишком простой ответ =). Наверное, я не понял вопроса.
Добавлено: 12 Августа, 2012, 13:16
Опоздал с ответом на 10 секунд :D
-
Спасибо но вот теперь у меня возник такой вопрос как поместить определённого npc в определённый город и сцену???
-
Спасибо но вот теперь у меня возник такой вопрос как поместить определённого 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],
Нужное выделил красным
1-ое сцена (scn_town_1_tavern)
2-ое точка входа (entry(30))
-
А скриптами можно как нибудь??
-
(set_visitor, 45, "trp_fugitive"),(45 - entry_point)
(set_jump_mission,"mt_village_center"), выбор миссии в мишион теплс
(jump_to_scene,":village_scene"), выбор сцены
(change_screen_mission), переход
в мишион теплс в нужной миссии должна быть точка входа.
(45, mtef_visitor_source,af_override_horse|af_override_weapons|af_override_head,0,1,[]),
с флагом mtef_visitor_source
если тот вариант что предлагал Janycz, то mtef_scene_source.
вроде так если память не подводит.
-
А вот возможно будет ли сделать что после выполнения определённой миссии город передаются другой фракции или вобще в него нельзя заходить и как вобще делать проверки на выполнение чего нибудь?
-
http://rusmnb.ru/index.php?topic=3629.msg124655#msg124655 (http://rusmnb.ru/index.php?topic=3629.msg124655#msg124655)
здесь доступно вполне описано. проверки осуществляются через операции слотов, либо проверяется на равенство/неравенство/больше/меньше, значение которое хранится в переменных - как в локальных ":destination", так и в глобальных "$g_destination",
Ответ на первый вопрос - все можно.
-
Есть ли возможность заставить операцию повторяться до тех пор, пока условия не будут удовлетворены, до победного, так сказать? Конкретнее вот тут:
(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),
нужно что бы строка (ge, ":player", 1), повторялась до тех пор, пока игроков действительно не станет 1 или более. Без этой строки скрипт за считанные секунды загаживает чат сообщениями об ошибке, однако после спауна первого игрока всё встаёт в норму. С нею же он просто отключается, так как при запуске карты игроков нет.
-
Андреус Ас (http://rusmnb.ru/index.php?action=profile;u=6306),
В модульной системе невозможно в любом месте создать бесконечно замкнутый цикл. Это сделано специально. Но, тем не менее, в некоторых местах доступны интервалы повторения блока операций.
Зачем отлавливать момент спавна бесконечным циклом? Почему просто не сделать вот так:
(ti_on_agent_spawn, 0, 0, [
# doing something...
Если хоть кто-то заспавнился - игроков уже в любом случае 1 или более.
А вообще, надо брать пример с разработчиков =)
Например:
common_battle_order_panel_tick = (
0.1, 0, 0, [],
[
(is_presentation_active, "prsnt_battle"),
(call_script, "script_update_order_panel_statistics_and_map"),
])
-
Arantir (http://rusmnb.ru/index.php?action=profile;u=15409), почему невозможно? :-\все зависти от условий блока тригера, каждый фрейм будет работать и пробегать по всем агентам и отлавливать тех что заданы.
Андреус вопрос непонятен. условия выполняются скрипт работает. если хоч поставь (ge, ":player", 0), тогда и ошибок не будет. а так у тебя проверка на то что хоть один но должен быть.
-
Arantir, почему невозможно? :-\все зависти от условий блока тригера, каждый фрейм будет работать и пробегать по всем агентам и отлавливать тех что заданы.
По моему первое и третье предложения моего сообщения уже и так ответили на этот вопрос.
Объясняю =)
1) Нельзя вот так вот взять и в, к примеру, module_scripts внутри какого-то скрипта сделать бесконечный цикл.
2) Можно делать что-либо периодически неограниченное количество раз при помощи специально созданных для этого модулей. Например, module_simple_triggers на глобальной карте, module_mission_templates для сцен (например, битва, прогулка по городу, зал в замке).
Андреус Ас (http://rusmnb.ru/index.php?action=profile;u=6306), вероятно, привел скрипт из module_mission_templates и поставил первым параметром ноль. А это период между повторными выполнениями блока кода внутри триггера (ноль значит скрипт не повторяется). А это всего-лишь один триггер из многих возможных в миссии. Соответственно можно вместо просто придумивания какого-то бесконечного цикла запихнуть все это в отдельный триггер с периодом выполнения 0.1 сек. и впихнуть где-нибудь в требуемом месте миссии.
p.s.: У меня редко получается внятно объяснить. Хорошим учителем мне явно не стать :laught:
-
Arantir (http://rusmnb.ru/index.php?action=profile;u=15409), ничего не понял , но
0,0,0, это
1 - проверяется каждый фрейм
2 - ноль это задержка с которой сработает триггер
3 0 -это сколько раз
а бесконечный цикл зависит от условий
-
Уверен? =)
common_battle_order_panel_tick = (
0.1, 0, 0, [],
[
(is_presentation_active, "prsnt_battle"),
(call_script, "script_update_order_panel_statistics_and_map"),
])
Обновляет панель статистики (Backspace) в бою каждые 0.1 секунды.
# Each mission-template is a tuple that contains the following fields:
# 1) Mission-template id (string): used for referencing mission-templates in other files.
# The prefix mt_ is automatically added before each mission-template id
#
# 2) Mission-template flags (int): See header_mission-templates.py for a list of available flags
# 3) Mission-type(int): Which mission types this mission template matches.
# For mission-types to be used with the default party-meeting system,
# this should be 'charge' or 'charge_with_ally' otherwise must be -1.
#
# 4) Mission description text (string).
# 5) List of spawn records (list): Each spawn record is a tuple that contains the following fields:
# 5.1) entry-no: Troops spawned from this spawn record will use this entry
# 5.2) spawn flags.
# 5.3) alter flags. which equipment will be overriden
# 5.4) ai flags.
# 5.5) Number of troops to spawn.
# 5.6) list of equipment to add to troops spawned from here (maximum 8).
# 6) List of triggers (list).
# See module_triggers.py for infomation about triggers.
#
# Please note that mission templates is work in progress and can be changed in the future versions.
# Each trigger contains the following fields:
# 1) Check interval: How frequently this trigger will be checked
# 2) Delay interval: Time to wait before applying the consequences of the trigger
# After its conditions have been evaluated as true.
# 3) Re-arm interval. How much time must pass after applying the consequences of the trigger for the trigger to become active again.
# You can put the constant ti_once here to make sure that the trigger never becomes active again after it fires once.
# 4) Conditions block (list). This must be a valid operation block. See header_operations.py for reference.
# Every time the trigger is checked, the conditions block will be executed.
# If the conditions block returns true, the consequences block will be executed.
# If the conditions block is empty, it is assumed that it always evaluates to true.
# 5) Consequences block (list). This must be a valid operation block. See header_operations.py for reference.
Структура триггера
(
<интервал выполнения>
, <задержка перед каждым выполнением>
, <задержка после каждого выполнения>
, [ # Блок условий.
# Тело триггера выполняется только при соответствии условиям
]
,
[ # Тело триггера.
# Некий код, который будет выполнятся при выполнении заданных условий с заданным интервалом, после заданной задержки и с последующей заданной задержкой.
]
)
-
уверен.
1) Check interval: How frequently this trigger will be checked
именно. но не с 0,1 секунды как ты пишешь , а с каким то своим внутреигровым временем. на глобальной карте то понятно 0,1 игрового часа. а в мишион темплс это как то неясно. но явно не секунды. сидел с секундомером мерял. :p
0 это не проверка на то что он
(ноль значит скрипт не повторяется).
а именно с постояной проверкой каждый миг игрового времени. то есть интервал отсутствует. а 0,1 это с интервалом в 0,1.
Добавлено: 25 Августа, 2012, 02:17
А это период между повторными выполнениями блока кода внутри триггера (ноль значит скрипт не повторяется)
поставь ti_onse
0,0,ti_onse, и триггер проверится только раз.
вот и не будет повторятся
-
Легионер (http://rusmnb.ru/index.php?action=profile;u=17320), 1 равняется ровно-ровно 1 секунде в сценах и 1 игровому часу на глобальной карте.
Но в сценах - именно реальные секунды.
-
проверь.
-
Проверил. Поставил число 5.
Замер одного выполнения: 5.05 секунд
Замер 5 последовательных выполнений: 25,13 секунд.
С учетом человеческого фактора вполне можно сказать, что 5 - это 5 секунд.
Погрешность вычислений составила 2,4% =)
-
Люди, помогите! Кто нибудь пробовал уменьшить частоту перехода лордов от короля к королю?
Частые перебежчики сильно портят все впечатление от игры, перебегают нереально часто! Пожалуйста посоветуйте-научите как это исправить через МС.
-
Arantir, дело в том, что мне нужно что бы этот триггер проверялся постоянно, а не только на спауне агента. А ti_on_agent_spawn только так и работает, верно? Или я неправильно знаю?
Легионер, не помогло. Дело в том, что при запуске карты игроков на ней нет. Скрипт же всё равно берёт несуществующее количество игроков, ищет там активных а потом уже смотрит, есть ли у них в руках определённый предмет. Так как агентов-то и нет как таковых до спауна, то эта строка:
(agent_get_wielded_item,":atm",":other",0),
будет ругаться на неверного (несуществующего) агента ":other", да так, что безвозвратно (буквально) загадит чат первому подключившемуся к серверу игроку. Не катастрофа, конечно, учитывая что после спауна никаких проблем не будет, однако...
-
если проблема только в загаживании, то можно попробывать отключить сообщения. не знаю правда в мульте будет работать, в сингле работает -
(set_show_messages, <value>), #0 disables window messages 1 re-enables them.
До спауна первого игрока
-
Андреус Ас (http://rusmnb.ru/index.php?action=profile;u=6306), твой триггер и так по идее выполняется постоянно, раз за разом.
Ошибка скорее логическая:
(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),
Ты делаешь так, как будто ":player" - это уже некий объект, представляющий игрока. но это не так. Это всего лишь переменная, инкрементируемая циклом. В данном случае поочередно принимающая значения 0, 1, 2, ..., ":num_players". Строка "(ge, ":player", 1)" как бы бессмысленна.
В данном случае ":player" - это некий ID игрока из списка игроков. Чтобы проверить, есть ли действительно агент с таким ID, нужно попробовать у этого агента извлечь какое-то значение и проверить его на корректность.
Например, "(player_get_agent_id, ":other", ":player")". Если с ID равным ":player" нету ни одного агента, то, скорее всего, в ":other" попадет значение -1.
Соответственно надо сделать как-то так:
(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),
...
-
Arantir ([url]http://rusmnb.ru/index.php?action=profile;u=15409[/url]), ничего не понял , но
0,0,0, это
1 - проверяется каждый фрейм
2 - ноль это задержка с которой сработает триггер
3 0 -это сколько раз
а бесконечный цикл зависит от условий
Третья цифра - через какое время проверяется этот триггер, если он сработал. ti_once фактически означает "больше не проверять".
-
Третья цифра - через какое время проверяется этот триггер, если он сработал. 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
-
Спасибо за подробный разбор триггера! :thumbup:
-
Всем спасибо за помощь, вроде бы вариант с отключением-включением чата работает.
-
Доброго времени суток!
Есть небольшой вопрос по модульке скорее философского, нежели практического характера :) буду рад, если кто поможет.
Насколько я понимаю, в модульке есть возможность использовать пользовательские переменные (слоты). Вот про них и хотелось бы узнать:
1. Как они объявляются, как используются, как уничтожаются (если уничтожаются вообще)?
2. Какой у них срок жизни и область видимости?
Например: можно ли привязать к агенту слот, задать ему значение в триггере, прописанном в module_items.py, а затем уже в module_missions_templates.py проверять значение этого слота? Или можно ли привязать слот к трупсу, задавать его в одной миссии, а проверять в другой?
Если у кого-то еще под рукой окажутся наглядные примеры использования, буду благодарен до конца дней своих.
-
Пояснение понятия Слот.
(автор Dargor (http://rusmnb.ru/index.php?action=profile;u=1507), )
Для целого ряда существующих в игре объектов возможно создание специальных ячеек памяти, называемых слотами (slot). Слоты упрощают хранение и систематизацию информации, избавляют нас от необходимости сочинять и запоминать тьму-тьмущую переменных. Вот список таких объектов: item, agent, faction, party, party_template, scene, scene_prop, troop, quest, player, team. Для каждой сцены, для каждого предмета, юнита и т.д. мы можем создать почти неограниченное множество слотов (ячеек памяти). Чтобы обращаться к этим слотам годятся как порядковые номера (от нуля до... почти бесконечности), так и названия. Названия вновь придуманных слотов необходимо прописать в файле module_constants.py. Учтите, что большое количество слотов уже имеют свои названия и используются игрой в различных ситуациях.
Например, для агентов в нативе используется 26 слотов, пронумерованных от 0 до 25 и снабжённых названиями типа slot_agent_is_running_away (в данном случе это слот с номером 15). Следовательно, надёжнее всего новый слот создать с номером 26, это на 100% защитит нас от багов, связнных с использованием одного и того же слота двумя разными скриптами. Упомянутый слот позволяет для любого из агентов, находящихся на сцене, сделать запись, что он в данный момент убегает (дезертирует):
(agent_set_slot, ":cur_agent", slot_agent_is_running_away, 1),
Даже если агентов на сцене 200, мы обходимся одной строкой и не мучаемся созданием двухсот (плюс ещё сколько-то про запас) переменных. Согласитесь, одна строка это гораздо удобнее, чем сотни строк. Причём приведённую выше строку мы можем записать и так:
(agent_set_slot, ":cur_agent", 15, 1),
Функционировать всё будет точно так же, разница лишь в том, что человеку обычно легче запомнить несущие значения слова, чем набор чисел. В нашем примере slot_agent_is_running_away означает - вот константа, используемая для обозначения слота агента, где хранится информация, убегает он или нет. Если какое-то название слота вам сложно запомнить, то вы можете ввести для него альтернативное название. Для этого достаточно в файле module_constants.py добавить соответствующую запись:
run_away = slot_agent_is_running_away
и тогда наша строка-пример преображается в следующую с полным сохранением своей функции:
(agent_set_slot, ":cur_agent", run_away, 1),
Для обращения к слотам мы также можем использовать переменные, например следующий скрипт позволяет с помощью трёх строк сделать значение всех двадцати шести слотов агента равным нулю:
(try_for_range, ":unused", 0, 26),
(agent_set_slot, ":cur_agent", ":unused", 0),
(try_end),
Кстати, для любого слота, в который мы ещё не записывали никакого числа, игра будет считать его содержимое равным нулю. Итак, для обращения к слоту можно применять его номер, название, любое альтернативное название, любую переменную, а также простые арифметические выражения:
(agent_set_slot, ":cur_agent", run_away + 1, 1),
в данном случае мы обратились уже к следующему слоту, имеющему номер 16.
По отношению к слотам нам доступны следующие операторы:
(agent_set_slot,<agent_id>,<slot_no>,<value>), записывает в слот число (value)
(agent_get_slot,<destination>,<agent_id>,<slot_no>), узнаёт записанное в слот число
(agent_slot_eq,<agent_id>,<slot_no>,<value>), делает строгую проверку (содержимое слота равно определённому значению)
(agent_slot_ge,<agent_id>,<slot_no>,<value>), делает нестрогую проверку (содержимое либо больше, либо равно определённому значению)
(neg|agent_slot_eq,<agent_id>,<slot_no>,<value>), делает нестрогую проверку (содержимое либо больше, либо меньше определённого значения)
(neg|agent_slot_ge,<agent_id>,<slot_no>,<value>), делает строгую проверку (содержимое меньше определённого значения)
Разумеется при работе с другим объектом вместо слова agent будет фигурировать что-то из списка item, faction, party, party_template, scene, scene_prop, troop, quest, player или team.
-
Спасибо огромное! Все понятно и по полочкам. Еще небольшой вопрос.
Можно ли в слот писать не число, а например, позицию, которая, если я правильно понимаю, по сути набор из 6-и чисел.
-
Можно записать айди позиции, но это не лучший вариант, так как другие скрипты могут изменить данные которые хранит позиция. Лучше сохранять нужные данные позиции в отдельные слота, это избавит от потенциальных багов.
-
Спасибо огромное! Все понятно и по полочкам. Еще небольшой вопрос.
Можно ли в слот писать не число, а например, позицию, которая, если я правильно понимаю, по сути набор из 6-и чисел.
По идее не 6, а 9, там ещё масштабирование есть.
Вытащить все нужные компоненты в fixedpoint (position_get_*, position_get_scale_* , position_get_rotation_around_* ) и записать в слоты.
Более простого способа не знаю.
PS у позиции есть ещё origin, т.е. ещё 3 компоненты, вроде как.
-
Ну мне только трех координат хватит :) Спасибо большое!
-
Доброго времени суток! У меня вопрос по модульке, а именно по диалогам. Третий день с ними мучаюсь, а толку никакого.
module_dialogs.py (З.Ы.: на текст диалогов не смотрите, я плохо знаю английский.)
[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)]),
На карте появляются, всё норм, но диалог не срабатывает (точнее срабатывает, но не мой). Срабатывает вот этот:
Чего вы хотиите?
-Сдавайся или умри!
-Ничего. Мы оставим вас в покое.
Подскажите, что нужно сделать чтобы при встрече на карте партии dhara_soldiers, срабатывал мой диалог?
-
Куда добавлен диалог? В начало, конец, середину?
Срабатывает первый подходящий.
Возможно в этом проблема.
-
Rongar (http://rusmnb.ru/index.php?action=profile;u=722), в самый конец
Добавлено: 27 Октября, 2012, 12:19
Rongar (http://rusmnb.ru/index.php?action=profile;u=722), а куда лучше всего новые диалоги добавлять?
Добавлено: 27 Октября, 2012, 12:30
О! Теперь диалог выыводится, воин добавляется, но после всего этого меня бросает в бой с этой партией. =(
-
а куда лучше всего новые диалоги добавлять?
Спроси что-нибудь по-проще. Там в модулке такое рубилово, что ничего конкретного посоветовать невозможно. Правильно может добавлять диалоги только человек, который наизусть знает их всех.
О! Теперь диалог выыводится, воин добавляется, но после всего этого меня бросает в бой с этой партией. =(
Это проблемы того, как это всё работает.
Нужно добавить
(assign, "$g_leave_encounter",1)
[anyone,"dhara_soldiers_yes",[],"We very surprised. Ok. We attach to your group","close_window",[
(troop_join,"trp_dhara_soldiers"), (assign, "$g_leave_encounter",1)]],
[anyone,"dhara_soldiers_no",[],"Ok. We wait you.","close_window",[(assign, "$g_leave_encounter",1)]],
-
Rongar (http://rusmnb.ru/index.php?action=profile;u=722), А что это за переменная
$g_leave_encounter
?
-
Эта переменная инициализируется то ли в скриптах, когда начинается встреча с другой партией, то ли в game_menu. И потом в game_menu проверяется значение.
-
А можно ли найти где-нибудь чистую модульку (Без фракций, воинов, диалогов и т.д., только с основными триггерами и скриптами) ?
-
Saturn35 (http://rusmnb.ru/index.php?action=profile;u=27096), http://forums.taleworlds.com/index.php/topic,249336.0.html (http://forums.taleworlds.com/index.php/topic,249336.0.html)
-
HunterWolf (http://rusmnb.ru/index.php?action=profile;u=20773), спасибо.
Добавлено: 29 Октября, 2012, 13:15
А вы не подскажете, модулька 1.154 с игрой версии 1.153 будут совместимы?
Добавлено: 29 Октября, 2012, 14:27
А, и ещё, уважаемые форумчане, есть ли среди вас кто-нибудь, кто может немножко меня поучить работе с модулькой (больше, чем есть в мануале на этом форуме), а? Буду очень благодарен (выше упомянутого мануала не хватило).
-
А вы не подскажете, модулька 1.154 с игрой версии 1.153 будут совместимы?
Т.е. наоборот
MS 1.153 c игрой 1.154. Да, будут.
-
А что такое agent и где о нём можно почитать?
Добавлено: 30 Октября, 2012, 10:34
и где объявляются переменные типа $talk_with_merchant ?
-
некоторое из не доделаного
Операции для работы с агентом
Агент (agent ) - Субъект сцены. к агентам относятся - мертвые, живые, раненые юниты, игрок , а также итем
лошадь, котарая может являться отдельным агентом сцены.
(agent_is_in_special_mode,<agent_id>), - проверит что заданный агент в данный момент является участником действий которые определенны операциями.
(agent_is_routed,<agent_id>), - Проверяет, что агент сбежал из боя (запаниковал, добежал до края карты и исчез).
(get_player_agent_no,<destination>), - запишет в переменную игрока как агента
(get_player_agent_kill_count,<destination>,[get_wounded]), - запишет в переменную общее число убитых юнитов игроком.
[get_wounded] -
0 - общее число и убитых и раненных
1- только убитых.
(agent_is_alive,<agent_id>), - проверит что заданный агент жив.
(agent_get_speed, <position_no>, <agent_id>), - запишет в позицию скорость агента по Х и У
(agent_refill_wielded_shield_hit_points, <agent_id>),- восстановит количество ХР щиту, который в данный момент в руках у заданного агента
(agent_is_wounded,<agent_id>),- проверит что заданный агент ранен.
(agent_is_human,<agent_id>), - проверит что заданный агент человек (не лошадь)
(get_player_agent_own_troop_kill_count,<destination>,[get_wounded]), -запишет в переменную общее число
[get_wounded] = 1 раненых и убитых
[get_wounded] = 0 убитых
союзников игрока.
(agent_is_ally,<agent_id>), - проверит что заданный агент принадлежит к союзной партии вступившей в бой на стороне игрока.
(agent_is_non_player, <agent_id>), - проверит что агент не является игроком.
(agent_is_defender,<agent_id>), - проверит что агент относится к стороне защитников.
(agent_is_active,<agent_id>), - проверит что агент активен.
(agent_get_look_position, <position_no>, <agent_id>), - запишет позицию на которую смотрит агент
(agent_get_position,<position_no>,<agent_id>), - запишет позицию на которой находится агент.
(agent_set_position,<agent_id>,<position_no>), -телепортирует агента на заданную позицию
(agent_set_look_target_agent, <agent_id>, <agent_id>), - принудит первого агента смотреть на второго агента
(agent_get_horse,<destination>,<agent_id>), - запишет в переменную агента-лошадь, которую имеет агент.
Примечание - запишет не ID Item лошадь а именно ай ди агент.
(agent_get_rider,<destination>,<agent_id>), - в данной операции в ID агента - лошадь. в переменную запишется ID агент всадник этой лошади.
(agent_get_party_id,<destination>,<agent_id>), - запишет в переменную ID партии к которой относится агент.
(agent_get_entry_no,<destination>,<agent_id>), -запишет в переменную Точку входа агента
(agent_get_troop_id,<destination>, <agent_id>), - запишет в переменную troop_id которое имеет агент человек.
(agent_get_item_id,<destination>, <agent_id>), - запишет в переменную item_id лошади которое имеет лошадь агент.
(store_agent_hit_points,<destination>,<agent_id>,[absolute]) - запишет в переменную число очков здоровья агента.
[absolute]=0 - запишет число в процентном соотношении
[absolute]=1 - запишет реальное число здоровья.
Дефолтно установлен процентный параметр
(agent_set_hit_points,<agent_id>,<value>,[absolute]), - задаст агенту заданное число очков здоровья
[absolute]=0 - запишет число в процентном соотношении
[absolute]=1 - запишет реальное число здоровья.
Дефолтно установлен процентный параметр
(agent_deliver_damage_to_agent, <agent_id_deliverer>, <agent_id>, <value>, [item_id]), - заданный агент<agent_id_deliverer> нанесет заданное число урона второму агенту. если значение <= 0 урон будет высчитыватся движком из оружия которым наносится урон. опциональный параметр [item_id] позволяет указать оружие из которого будет высчитываться урон.
(agent_get_kill_count,<destination>,<agent_id>,[get_wounded]), - запишет в переменную количество
[get_wounded] = 1 раненых и убитых
[get_wounded] = 0 убитых
заданным агентом в текущем сражении
(agent_set_invulnerable_shield, <agent_id>, <value>), - при
<value> = 1 - задает неуязвимость агенту
<value> = 0 - отключает неуязвимость
(agent_get_wielded_item,<destination>,<agent_id>,<hand_no>), - запишет в переменную ID итема находящегося в заданной руке агента
<hand_no>=0 - правая рука
<hand_no>=1 - левая рука
(agent_get_ammo,<destination>,<agent_id>, <value>), - запишет в переменную количество боеприпасов для стрелкового оружия.
<value>= 1 для стрелкового которое в руках агента.
<value>= 0 для всего стрелкового что имеет в слотах агент
(agent_refill_ammo,<agent_id>),- восстановит количество боеприпасов для стрелкового и метательного оружия которое имеет агент.
(agent_has_item_equipped,<agent_id>,<item_id>), - проверит что агент экипирован определенной вещью.
(agent_set_scripted_destination,<agent_id>,<position_no>,<auto_set_z_to_ground_level>), - задает позицию на которую агент будет двигаться в обязательном порядке. после перемещения агент будет ждать дальнейшего скриптования в состоянии пассивной защиты ( атаковать врагов находящихся в радиусе действия оружия).
Примечание - процесс скриптования агента нужно начинать с позиции которую агент имеет в данный момент.
Опциональный параметр
<auto_set_z_to_ground_level> = 0 - оставит координату по оси Z та что задана в позиции
<auto_set_z_to_ground_level> = 1 - установит 0 по оси Z ( уровень земли).
(agent_get_scripted_destination,<position_no>,<agent_id>), - запишет позицию на которуюю заскриптован агент.
(agent_force_rethink, <agent_id>), -заставляет агента персчитать свои действия в ходе процесса скриптования.
(agent_set_no_death_knock_down_only, <agent_id>, <value>),- делает агента бессмертным подобно юниту герою. (<value> = 1), либо отключает заданное действо (<value> = 0)
(agent_set_horse_speed_factor, <agent_id>, <speed_multiplier-in-1/100>), - умножит скорость лошади которую имеет агент на заданное число.
(agent_clear_scripted_mode,<agent_id>), - очищает агента от заскриптованых действий
(agent_set_speed_limit,<agent_id>,<speed_limit(kilometers/hour)>), - установит лимит скорости агента (только для ии агентов,)
(agent_ai_set_always_attack_in_melee, <agent_id>,<value>), - вынуждает агента использовать оружие ближнего боя.(<value>=1), или очищает от данной операции .(<value>=0)
(agent_get_simple_behavior, <destination>, <agent_id>), - запишет в переменную модель поведения ии агента . модель поведения установленна константами в header_mission_templates.py
(нажмите для открытия / скрытия)
(agent_get_combat_state, <destination>, <agent_id>), запишет в переменную combat_state(?) которое имеет агент.
константы покрыты мраком.. в МС имеется одно упоминание в скрипте "siege_move_archers_to_archer_positions_defender"
# 7 = no visible targets (state for ranged units)
(agent_set_animation, <agent_id>, <anim_id>, [channel_no]), заставит агента проигрывать заданную анимацию.
опциональный параметр [channel_no] в дефолте 0
[channel_no]=0 нижняя часть тела ( передвижение, смерть, анимация получения урона)
[channel_no]=1 верхняя часть тела (анимация ударов стрельбы и тд)
-
Что делает store_trigger_param_1, *2 и *3 ?
-
Вытаскивает в переменную параметры триггера, если они есть.
ti_on_agent_hit = -28.0 #can only be used in module_mission_templates triggers
# Trigger Param 1: damage inflicted agent_id
# Trigger Param 2: damage dealer agent_id
# Trigger Param 3: inflicted damage
# Register 0: damage dealer item_id
# Position Register 0: position of the blow
# rotation gives the direction of the blow
# Trigger result: if returned result is greater than or equal to zero, inflicted damage is set to the value specified by the module.
Добавлено: 30 Октября, 2012, 14:58
А что такое agent и где о нём можно почитать?
Агент — это сущность отражающая бегающих по сцене людей и лошадей.
Каждому агенту соответствует либо предмет (лошадь), либо тип солдат из тех, что описаны в module_troops.
и где объявляются переменные типа $talk_with_merchant ?
C $ — это глобальные переменные. Чтобы найти, где им присваивается значение нужно, искать их сквозь всю модульку напрямую.
-
А как узнать агенты нескольких игроков сразу? Например у меня начальный квест, два герой вступают в битву с четырьмя противниками, и после битвы активируется диалог. Как узнать например что агенты противника мертвы? Как вообще узнать агенты противника?
-
Легионер привёл команды. Там почти всё необходимое есть.
Понадобиться ещё try_for_agents — цикл сквозь всех агентов. Есть команды для опроса состояния агентов, получения трупсов соотвествующих агентам и т.д.
-
1.Как сделать неизменяемым имя игрока и как его присвоить игроку?
2. Почему в консоле может быть ругань на сравнение элемента массива агентов, с агентом игрока?
(neq,":agents",":player_agent"),
3. Вот эти все "neq" , "eq" и прочие обрабатываются как условия? (Т.е.:
(eq,":a",":i")
равно
if($a==$i)
) ?
4. Переменные типа :переменная нужно записывать куда-нить в файлы модульки, или можно где угодно придумать новую переменную и дать ей любое значение?
Недовопрос: Переменные типа :переменная - это локальные переменные или слоты?
-
1. Имя любого юнита меняет операция troop_set_name . Соответственно, чтобы имя игрока было неизменным не применяйте операцию troop_set_name к trp_player, или кто у вас там является игроком.
2. Чтобы понять причину ругани нужен текст ошибки из лога и сам код из модульки.
3. Да. При невыполнения условия весь последующий код выполняться не будет.
4. переменные типа ":" - это локальные переменные. Их можно объявить когда угодно и в любом месте, но работать они будут только в этом конкретном блоке кода (например если в блоке условий появления диалога объявить переменную ":troop_id", то в блоке последствий этого диалога её придётся объявить ещё раз). Эти переменные кстати в отличие от глобальных переменных "$" и слотов не записываются в сэйвы.
Это не слоты, это именно переменные.
-
Есть ли какие-нибудь программы для редактирования сцен, просмотра айтемов (items) (последние с отображением айтема (изображение айтема))?
-
Есть ли какие-нибудь программы для редактирования сцен
Внутренний редактор сцен. Нужно включить Edit mode в стартовом меню. ctrl+e в сцене.
-
просмотра айтемов (items) (последние с отображением айтема (изображение айтема))?
Нет программ, чтобы напрямую из списка итемов просмотреть её модель.
Проще всего использовать связку Morgh's Mount & Blade WB/WFAS Editor (http://rusmnb.ru/index.php?action=dldir;sa=details;lid=34) и Open-BRF editor (http://rusmnb.ru/index.php?action=dldir;sa=details;lid=26)
Из Morgh's эдитора копируете имя меша нужного итема и поиском в Open-BRF находите и просматриваете его модель.
Добавлено: 31 Октября, 2012, 17:07
Есть ли какие-нибудь программы для редактирования сцен
очень подробно о редактировании сцен (http://rusmnb.ru/index.php?topic=8919.0)
-
Возможно ли реализовать несколько валют?
-
Возможно ли реализовать несколько валют?
И пункты обмена?
В TLD несколько валют.
-
Возможно ли реализовать несколько валют?
Наличность в игре по сути такой же troop_slot , только захардкореный. Но его значение легко вытаскивается в любую переменную операцией store_troop_gold, также изменяется операциями troop_add_gold и troop_remove_gold. Так что не проблема создать сколько угодно валют (новых troop_slot), привязав основные игровые деньги к этим слотам (динамически изменяющиеся курсы и пр.). А дальше уж дело фантазии и техники, как всё это будет взаимодействовать.
-
Возможно ли в ходе игры расширить глоб. карту; например какой-то там квест выполнил и карта расширилась.
-
Нет. Карта динамически не меняется.
-
uhanich (http://rusmnb.ru/index.php?action=profile;u=15855), а перегородить чем-нибудь непроходимым карту можно, а потом это что-то убрать?
2. И всё-же как запретить изменять имя игрока (Игрока!), которое легко меняется в пункте меню "Игрок" (где хар-ки, навыки и прочее) ?
-
а перегородить чем-нибудь непроходимым карту можно, а потом это что-то убрать?
Чисто теоретически...Создать два невидимых неподвижных отряда на карте (первый будет преградой) и тригером с определённой частотой проверять расстояние от него до отряда игрока. При расстоянии меньше определённого "отбрасывать" игрока ко второму отряду (есть такая операция party_relocate_near_party). В теории должно работать. Не проверял.
И всё-же как запретить изменять имя игрока (Игрока!), которое легко меняется в пункте меню "Игрок" (где хар-ки, навыки и прочее) ?
Никак. По крайней мере в случае с самим игроком. Это захардкорено. Переименования компаньонов можно отслеживать в диалоге с ними и возвращать им старое имя.
ЗЫ. Настоятельно рекомендую проштудировать файл header_operations.py и поиском в остальных файлах модульки найти примеры применения тех или иных операций. Это сильно облегчает обучение и понимание структуры модульки :)
-
uhanich (http://rusmnb.ru/index.php?action=profile;u=15855), я не знаю, может у меня модулька натива какая-то другая, но у меня в ней ни одного комментария, а без комментариев поди разберись где, что и за что отвечает =)
В header_operations зачастую только описание применения ф-ции, типа:
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>)
http://rusmnb.ru/index.php?topic=3629.0 (http://rusmnb.ru/index.php?topic=3629.0)
-
И всё-же как запретить изменять имя игрока (Игрока!)
Тут подумал. Всё таки можно. Если на старте игры куда нибудь записать имя игрока, а потом опять же тригером через определённые промежутки времени возвращать исходное имя. Костыль конечно, но работать будет.
-
Есть ли в M&B Script какой-нить триггер или условие или ещё что, которое отвечало бы за нажатие определённой клавиши? (Типа: OnKeyPress)
<Т.е. если игрок на поле боя нажал такую-то клавишу, то произошло то-то.>
Фактически по нажатии на клавишу моментально изменится погода на сцене (на дождь), появится густой серый туман и прозвучит звук грома, а один (любой) из противников станет союзником. Длится сие чудо (гром, дождь, туман) будет секунд 20, а вот противник ставший союзником будет до конца боя. По окончанию боя он умрёт.
А, вот, пока писал ещё один вопрос появился:
Есть ли какая-нибудь команда выхода из цикла? (Типа: "break;" какого-нибудь. Здесь то она не так будет писаться конечно...)
-
Есть ли в 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),
Таким образом цикл продолжит работу, но не уже не будет выполнять все действия, а просто быстро переберёт остаток интервала
-
uhanich (http://rusmnb.ru/index.php?action=profile;u=15855), а для (try_for_agents) такое тоже прокатит?
-
для любой try_for_
-
Я наверное уже достал вас своими нубскими вопросами, но у меня появляются постоянно новые.
Реально ли это а один (любой) из противников станет союзником.
Как это реализовать я приблизительно знаю, но вот есть сомнения по поводу того, станет ли он действительно союзником и пойдёт ли рубить своих ? :D
Добавлено: 01 Ноября, 2012, 23:05
2. Есть ли функция рандома? (Типа: rand(1,5); - выдаст число в диапазоне от одного до пяти)
-
Как это реализовать я приблизительно знаю, но вот есть сомнения по поводу того, станет ли он действительно союзником и пойдёт ли рубить своих ? :D
Должен. Возможно только после смены отношений придётся ещё сделать agent_force_rethink
2. Есть ли функция рандома? (Типа: rand(1,5); - выдаст число в диапазоне от одного до пяти)
store_random_in_range
Я наверное уже достал вас своими нубскими вопросами, но у меня появляются постоянно новые.
Напрягает, что это становиться состоянием души. Тот же store_random_in_range можно было найти прямым поиском по header_operations.py
-
Saturn35 (http://rusmnb.ru/index.php?action=profile;u=27096), Вы наверно что бы не напрягать людей, прото потратьте часть времени от спасение мира. на простое чтение модульки если не понятен хейдер в большинстве случаев его можно понять воспользовавшись поиском по модульке и увидев его применение, реально каждую операцию вам пояснять скоро устанут, так как вы ленитесь сами их поискать
-
Чисто теоретически...Создать два невидимых неподвижных отряда на карте (первый будет преградой) и тригером с определённой частотой проверять расстояние от него до отряда игрока. При расстоянии меньше определённого "отбрасывать" игрока ко второму отряду (есть такая операция party_relocate_near_party). В теории должно работать. Не проверял.
можно записывать с определенной частотой фрейма (зависит от того куда скинуть нужно) позицию партии игрока. потом скидывать партию при определенных условиях. можно натыкать тупо мостов по полосе и сделать невидимыми задав флаг.
а вот со скидкой партии могут быть траблы. она не останавливается а тупо прет на указанную перед этим мышкой позицию.
я ее ставил на отдых. по другому че-то никак
-
я ее ставил на отдых. по другому че-то никак
А если подряд применить:
(rest_for_hours, 1, 0, 0), #начать ожидание
(rest_for_hours, 0, 0, 0), #остановить ожидание
?
Теоретически две эти операции выполненные последовательно должны мгновенно остановить отряд. Завтра попробую.
-
Можешь не проверять работает. :)
только лучше
(rest_for_hours_interactive,1 , 0,0),
(rest_for_hours_interactive,0 , 0, 0),
чтобы партия не пропадала с карты
-
Не утерпел и проверил сразу)))
Действительно последовательное выполнение этих операций фактически идентично нажатию клавиши пробел на глобальной карте :) Так что отряд можно мгновенно остановить без особых проблем.
Добавлено: 02 Ноября, 2012, 01:26
чтобы партия не пропадала с карты
А ну да. Само собой :)
-
Почему в консоли, на операциях сравнения, появляется сообщение "'tuple' object is not callable" ?
Везде всё объявлено.
(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)
])
Добавлено: 02 Ноября, 2012, 09:41
название переменной изменял, несколько раз build_module запускал, даже удалял всё и после каждой написаной строчки модуль строил, всё-равно на сравнениях ошибка вылезает.
-
Запятую забыли после (try_for_agents,":agents")
Обычная синтаксическая ошибка :)
и в конце тоже, после (try_end)
При возникновении проблем с компиляцией, в первую очередь проверяйте синтаксис. 90% ошибок просто от невнимательности.
А зачем, есть же форум где скажут, это ж проще чем выискивать самому))))
-
Просто чтоб удостовериться.
Точно нельзя вытащить в переменную пункт назначения партии игрока (если цель партия - её id, если просто место на карте - его координаты) на глобальной карте (место, куда кликнула мышка)?
Операции get_party_ai_object и party_get_ai_target_position не работают применительно к p_main_party, ровно как и slot_party_ai_object ей тоже не присваивается.
Вдруг я что-то упустил.
-
Вопрос: Написал я диалоги, построил мод, всё нормально, в консоли никаких ошибок. При запуске игры вылетает ошибка, что файл неожиданно закончился.
Unexpected End of File while reading file: Modules\Sword of Truth\conversation.txt
Почему такое происходит? (Почему может быть неожиданное окончание, и как с этим бороться?)
-
Unexpected End of File while reading file
Удалите все сейвы и файлы экспорта персонажей.
-
Почему такое происходит? (Почему может быть неожиданное окончание, и как с этим бороться?)
Ошибка сборки мода.
Либо, если действительно
в консоли никаких ошибок.
запускаемый и собираемый мод не совпадают.
-
Не обязательно.
По какой то причине у меня названия всех файлы эпрорта персонажей сменили кодировку. В названиях кракозябры. Ничего не трогал 100%
При запуске игры получал эту ошибку, хотя сборка происходила без ошибок.
Удалил файлы экспорта, всё заработало.
Такое впечатление, что кроме основных файлов игры, экспрорты тоже проверяются.
На тайлвудсе об этом тоже где то было упоминание.
-
для меня это самая страшная ошибка, ибо вылазит на большие по размеру быстрые стринги.
не всегда, не часто, иногда даже переписав полностью диалог не лечится. иногда лечится изменением мест условных переносов текста ..
сегодня вылезло с жалобой на скрипт.тхт хотя не работал в нем. работал в презентации с запуском из первого игрового меню. 4 перезагрузки дата файла. перезапустил игру чтоб не грузить оперативу пятым - выскочило. перекомпилировал - пропало :-\
Удалил файлы экспорта, всё заработало.
надо будет попробывать..
-
Такое впечатление, что кроме основных файлов игры, экспрорты тоже проверяются.
Чудные дела твои, Господи.
Есть, кстати, ещё причины. В процессе сборки при обработке большого числа чего-то может запросто произойти переполнение. И итоги там такие же — недописанные файлы и т.п.
перекомпилировал - пропало :-\
Возможно, стоит удалять txt перед сборкой. Processes сканируют (если есть) quick_strings.txt, variabies.txt и возможно ещё какие-то (на самом деле известно, что сканируются ID_, созданные на предыдущем этапе, и, если пересобирать несколько раз, результаты могут несколько меняться).
-
А номер агента изменяемый или нет? Т.е. Если я в самом начале игры (в стартовой миссии) дам значение агента ГГ например глобальной переменной, я смогу пользоваться глоб.переменной до самого окончания игры?
-
Не сможешь использовать, номер агента игрока меняется от миссии к миссии.
-
Кто нибудь сталкивался с некорректной работой операции troop_set_plural_name при использовании русификации?
Проблема в том, что последствия этой операции никак не отражаются в игре, игра продолжает брать оригинальное название из файла русификации.
Причём операция всё же работает, т.к. если сохраниться после применения этой операции, и запустить английскую версию игры, то все изменения видны.
Фигня какая-то :-\
-
А с самой русификацией точно всё в порядке?
Что устанавливается в качестве нового имени? qstr_, str_, или строка введённая игроком?
-
1. А что с ней может быть не так?
2. пробовал и qstr_ и str_. А как это "строка введённая игроком"?
-
1. А что с ней может быть не так?
Отсутствуют, неправильные соответствующие qstr, str в русификации.
2. пробовал и qstr_ и str_. А как это "строка введённая игроком"?
e.g.
http://forums.taleworlds.com/index.php/topic,57775.msg1493989.html (http://forums.taleworlds.com/index.php/topic,57775.msg1493989.html)
-
Решилось удалением строки trp_имя юнита_pl
Теперь в русской версии юнит нормально переименовывается. Причём как латиницей и кирилицей. Костыль конечно, но другого выхода я не пока не нашёл :(
Добавлено: 07 Ноября, 2012, 21:14
неправильные соответствующие qstr, str в русификации.
Раз решилось редактированием файла troops.csv, значит проблема не в qstr и str рассуждая логически
[url]http://forums.taleworlds.com/index.php/topic,57775.msg1493989.html[/url]
те же стринги насколько я понял. просто динамически собранные из мелких стрингов.
Добавлено: 07 Ноября, 2012, 21:20
Судя по тому, что в нативе эта операция вообще не используется, велика вероятность, что разрабы её просто не доделали нормально :)
-
Кто нибудь знает как рассчитывается опыт, получаемый при убийстве\оглушении агента в бою? Насколько я понял, это захардкорено, но может быть известна точная формула?
Вопрос снимается. Форуму вычислил.
-
Все не пойму куда же лезть что бы изменить экипировку участников турниров.
Знает кто?
-
VIN_LEO (http://rusmnb.ru/index.php?action=profile;u=21349),
В module_scripts script_set_items_for_tournament
В module_mission_templates arena_melee_fight
-
Спасибо, посмотрим :)
-
Где прописывается размещение текста, в разных окнах (инвентарь, скиллы, основное меню, напр.), или это захардкодено?
-
Везде по разному. Зависит от окна и текста. Спрашивайте конкретно. Что-то захардконено, что-то нет.
-
uhanich (http://rusmnb.ru/index.php?action=profile;u=15855), Инвентарь, окно умений и навыков, фракции, главное меню (при старте игры которое) (в принципе меня интересуют все окна)
-
Какой именно текст? В каждом окне куча полей для текста. Если речь идёт о координатах размещения текста в этих окнах, читай следующее сообщение от Легионера (Легионер (http://rusmnb.ru/index.php?action=profile;u=17320), спасибо, не знал :)), сам же текст иногда может быть изменён.
Инвентарь - текст описание предмета, при наведении на него курсора, редактируется в script_game_get_item_extra_text
Окно персонажа - Название и описание умений редактируются в module_skills.py, атрибутов и навыков только с помощью изменение файлов локализации.
Окна фракций, локаций, квестов и персонажей - основной текст не редактируется, но могут быть добавлены собственные стоки (заметки) с помощью операций add_***_note, ищите их в header_presentations.py и смотрите примеры их использования в нативе.
-
Если речь идёт о координатах размещения текста в этих окнах, то это не редактируется,
uhanich (http://rusmnb.ru/index.php?action=profile;u=15855),заглянь в game_variables в папке мода.
но некоторое все же вшито
-
Есть два вопроса.
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,
[(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 дала гораздо более вменяемый (но совершенно не подходящий к модели длинноствольного ружья) результат.
Так вот, насколько я прав, и где можно откопать эту анимацию. Если она захардкодена, то как подсунуть свежую?
-
Есть два вопроса.
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,
[(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
все по ценам
по второму сделать свою анимацию и заменить существующую. все анимации в архивах с анимацией в папке комон_рес
-
Я точно знаю, что стоимость эта зависит от уровня отряда,
Очень много умных слов, можно просто посмотреть как это сделано например в Натив, ищем скрипты где встречается слово wage, и смотрим, в Натив нет уровня отряда есть уровень юнита в нём, есть уменьшение стоимости от скила есть 5 групп различных ценовых юнитов. Есть уменьшение стоимости от того что это гарнизон, вот и посмотрите что вам и как надо сделать от погоды ли или от чего то ещё. Что можно сделать сразу с отрядом можете увидеть тут http://rusmnb.ru/index.php?topic=11290.0 (http://rusmnb.ru/index.php?topic=11290.0) в пункте скрипты
Поэкспериментировав со следующим примером
Это эксперимент не с анимацией, а с её флагами, а ещё более точно с итемами и применяемой к ним анимации, вся анимация как и везде находится в графическом файле, а в игре она преобразовано как и любой ресурс 3D в BRF формат, находится в папке ресурсов. Читаем это что знать что к чему и что от куда http://rusmnb.ru/index.php?topic=15189.0 (http://rusmnb.ru/index.php?topic=15189.0)
потом тут http://rusmnb.ru/index.php?topic=10824.0 (http://rusmnb.ru/index.php?topic=10824.0)
потом тут http://rusmnb.ru/index.php?topic=12996.0 (http://rusmnb.ru/index.php?topic=12996.0)
Сань ты следишь что ли за мной :D Сижу тут пишу уже 15 минут, ссылки собирая по форуму))0
-
Спасибо за оперативные ответы.
Первый вопрос оказался как раз из той категории вопросов, глупость которых осознаешь сразу же, лишь получив ответ.
По второму меня интересует как раз, каким образом привязывается анимация к флагу. Можно ли привязать к нему свой вариант (он уже есть и зашит в brf) или обязательно найти стандартную и просто загружать на ее место свою с таким же именем?
-
В брф только визуальный эфект (почитайте темы) пожалуйста ну пожалуйста что я дал, там же есть всё это, остальное в module_animations
-
Как раз читаю. Просматривал их все раньше, ответов не нашел. Сейчас перечитываю внимательнее - раз что-то пропустил, то буду исправляться.
-
Как ввести в игру текстуру? И в какой
Добавлено: 16 Ноября, 2012, 15:35
Как добавить в игру текстуру или перетекстурить уже существующий предмет (текстура есть). В файле module_items.py везде указаны мэши, но нигде не указано откуда они грузятся (ведь есть файлы weapon_meshes1.brf ; weapon_meshec_c.brf ; weapon_meshes_b.brf)?
-
Saturn35 (http://rusmnb.ru/index.php?action=profile;u=27096),
Читаем это что знать что к чему и что от куда [url]http://rusmnb.ru/index.php?topic=15189.0[/url] ([url]http://rusmnb.ru/index.php?topic=15189.0[/url])
-
Товарищи помогите пожалуйста кто знает.
Надумал способ как сделать задержку боту. при использование скила стан_щитом для ботов.
Единственное не получается склеить два триггера в module_mission_templates.py
Я тут клею как могу но что то белебердень какаенто выходит. ведать путаюсь со всякими скобочками-командами .
Вот условный пример по воросу. :embarrassed:
sp_shield_bash_3 = (
0.0, 0.0, 0.0,
[(eq, "$sp_shield_bash_ai", 1)],
[ (get_player_agent_no, ":player_agent"),
Ну там бла бла бла ...
((тут механизм запуска следуйщего тригера через 1сек],
НУ и следом этот тригер чтоб запускался через 1 сек..
sp_shield_bash_4 = (
1.0, 0.0, 0.0,
[(eq, "$sp_shield_bash_ai", 1)],
[ (get_player_agent_no, ":player_agent"),
Ну там бла бла бла ...],
Так вот суть вопроса.. Как склеить два триггера с задержкой ну там в 1-1.5 секунды ?
Тут для подробности чего я хочу этим добиться.
1) надо что бы первый триггер захватывал ботом цель, патом делал анимацию удара щитом,жертва в последствии никакого удара не получает. Но бот уже сделал действие.
А затем через 1 секунду срабатывал второй триггер и...
2) Опять сканирует расстояние и уже сеюсекунду схватывает цель, накладывая на неё последствия. в виде анимации повреждения ну и урона.( Просто если за эту секунду игрок вышел из зоны то ему удастся избежать удара или нанести свой удар.)
ну собственно всё выше описанное ради этой необходимой супер-необходимой задержки! :o
-
Петрон (http://rusmnb.ru/index.php?action=profile;u=11487), Если я правильно понял суть вопроса, и нужна просто секундная задержка между операциями, то использовать 2 тригера вообще не нужно. Для этого в тригере есть интервал задержи перед применением последствий
(0.0, 0.0, 0.0). А значит первое действие вы пихаете в блок условий тригера (между первой парой квадратных скобок), а второе действие, которое должно произойти с задержкой в блок последствий тригера (вторая пара квадратных скобок)
Схематичный пример
sp_shield_bash_3 = (
0, 0.1, 0,
[код самого удара],
[код последствий удара])
-
uhanich спасибо за ответ. Но таким образом я уже работал.
И получилось у игрока работает на ура. Но вот что касается бота.
Он начинает капризничать и появляются серьёзные проблемы с частостью использования этого кода ботом. не пойму, то ли с таймером который штраф на использование даёт, то ли из за сканера и захвата-перехвата цели... (плюс код для бота перекручен так что сканер расстояния и захват цели идёт первее анимации удара а я ещё не очень разбираюсь со всеми тонкостями захвата цели и по зоне охвата и всё такое и у меян лезло уйма ошибок когда там химичил. видима что то не учёл.. )
Ну я ещё похимичу, скорее всего этот способ от uhanich сработает и для бота.
Блин ведать скорее всего таймер и запрещал скрипту тогда делаться :-\
Ладно вот собственно этот код который я хочу домучить своей задержкой. :D
sp_shield_bash_3 = (
0.0, 0.0, 0.25, [(eq, "$sp_shield_bash_ai", 1)],
[
(get_player_agent_no, ":player_agent"),
(try_for_agents, ":agent"),
(neq, ":agent", ":player_agent"),
(agent_is_alive, ":agent"),
(agent_is_human, ":agent"),
(try_begin),
(neg|agent_slot_ge, ":agent", sp_agent_shield_bash_timer, 1), #Less than.
(agent_slot_eq, ":agent", slot_agent_is_running_away, 0), #Isn't routing.
(agent_get_wielded_item, ":item", ":agent", 1), #Offhand.
(this_or_next|eq, ":item", "itm_shield_wood_risty_01a"),
(this_or_next|eq, ":item", "itm_shield_wood_risty_02a"),
(this_or_next|eq, ":item", "itm_shield_wood_risty_01b"),
(this_or_next|eq, ":item", "itm_shield_wood_risty_01c"),
(this_or_next|eq, ":item", "itm_sheld_empair_litl_a1"),
(this_or_next|eq, ":item", "itm_sheld_empair_normal_a1"),
(this_or_next|eq, ":item", "itm_sheld_empair_litl_a2"),
(this_or_next|eq, ":item", "itm_sheld_empair_normal_a2"),
(eq, ":item", "itm_lethersheld2"),
################################################################################################
(agent_get_attack_action, ":action", ":agent"),
(eq, ":action", 0), #Free.
(agent_get_horse, ":horse", ":agent"),
(eq, ":horse", -1), #No horse.
######## захват цели по зоне на применение. (начало)
(agent_get_team, ":team", ":agent"),
(agent_get_position, pos1, ":agent"),
(assign, ":victim", -1),
(assign, ":minimum_distance", 115),
(try_for_agents, ":suspect"),
(agent_is_alive, ":suspect"),
(agent_is_human, ":suspect"),
(agent_get_position, pos2, ":suspect"),
(neg|position_is_behind_position, pos2, pos1), #Suspect can't be behind basher.
(agent_get_team, ":suspect_team", ":suspect"),
(neq, ":suspect_team", ":team"),
(get_distance_between_positions, ":distance", pos1, pos2),
(le, ":distance", ":minimum_distance"),
(assign, ":minimum_distance", ":distance"),
(assign, ":victim", ":suspect"),
(try_end), ### захват цели по зоне на применение. (Конец)
(ge, ":victim", 0),
(agent_get_horse, ":horse", ":victim"),
(eq, ":horse", -1),
(store_random_in_range, ":rand", 8, 18), #15, 26 #8, 18),
(agent_set_slot, ":agent", sp_agent_shield_bash_timer, ":rand"), #20 is 20*0.25=5seconds.
(agent_set_animation, ":agent", "anim_shield_bash"),
(agent_play_sound, ":agent", "snd_mah_shield_stun_01a"),### 1 anim ####
(try_end), # последствия которые ловит жертва после удара щитом по блоку щитом.
(agent_play_sound, ":victim", "snd_wooden_hit_low_armor_high_damage"),
(agent_get_defend_action, ":action", ":agent"),
(try_begin),
(eq, ":action", 2), #Blocking. Besplatno 0, Parirovanie 1, Block 2
(neg|position_is_behind_position, pos1, pos2), #If basher isn't behind victim.
(agent_get_wielded_item, ":item", ":victim", 1), #Offhand.
(gt, ":item", 0),
(item_get_type, ":type", ":item"),
(eq, ":type", itp_type_shield),
(agent_set_animation, ":victim", "anim_block_shield_bash"),# Anim
(agent_play_sound, ":victim", "snd_hit_punch_01a"), ### 2 sound
(else_try),# тут последствия которые ловит жертва после удачно прошедшего удара.
(agent_set_animation, ":victim", "anim_hit_rand_stun01a"),
(agent_play_sound, ":victim", "snd_hit_shield_stun_01a"),### 3 sound
(try_end),
(try_end), # как я понял это таймер штраф на время по использованию скила
(agent_get_slot, ":timer", ":agent", sp_agent_shield_bash_timer),
(val_sub, ":timer", 1),
(val_max, ":timer", 0),
(agent_set_slot, ":agent", sp_agent_shield_bash_timer, ":timer"),
(try_end),
])
И всё-таки хотелось бы узнать какой командой можно прописать активацию следующего триггера. просто что бы он следом запускался.. Возможно ли это? =/
Ну что касается этих цифр. (0.0, 0.0, 0.0).
Как ине уже когда то обьяснили..
1) Это начало старта скрипта после активации
2) Это вторые квадратные скобки где можно указать задержку второе децствие.
3) Это частость применения ( ну типа с каким интервалом будет запускать операцию, прочитывать первые и 2-рые квадратные скобки.
HunterWolf - Ну я собственно извеиняюсь... Не хотел устраивать тут флуд не по теме, просто хотел узнать один момент и выложить модернизированный код.
Ну я видел что тут тоже задают вопросы и хотел совместить полезное с полезным или типа того...
Походу не самая удачная моя идея ... =/
Больше тут вопросами не флужу только ответами постараюсь. =/
-
HunterWolf (http://rusmnb.ru/index.php?action=profile;u=20773), Большая просьба перенести в Модульная система. Вопросы и ответы. (http://rusmnb.ru/index.php?topic=11317.0)
Петрон (http://rusmnb.ru/index.php?action=profile;u=11487),
какой командой можно прописать активацию следующего триггера
Тригеры на то и тригеры, что срабатывают самостоятельно либо по времени, либо по условию (см. header_triggers.py, все возможные условия там) и отдельной команды на запуск тригера естественно не существует.
Ну что касается этих цифр. (0.0, 0.0, 0.0).
Первая пара цифр - частота проверки блока условий (первые [])
Вторая пара цифр - время задержки перед выполнением блока последствий (вторые []) , в случае, если условия были выполнены.
Третья пара цифр - время перезарядки тригера. Сколько времени должно пройти после последнего выполнения блока последствий, перед тем, как тригер снова начнёт проверять блок условий.
Вся эта инфа есть в самом верху файла module_triggers.py, правда на английском. И хотя в этом файле описываются тригеры для глобальной карты, принцип построения тригеров в module_mission_templates.py точно такой же. Только единица измерения времени там не часы а секунды.
Больше тут вопросами не флужу только ответами постараюсь.
Вот и нужно было сразу задать вопрос в вопроснице, а делиться рецептами в рецептнице ;)
-
Такое впечатление, что кроме основных файлов игры, экспрорты тоже проверяются.
Чудные дела твои, Господи.
Есть, кстати, ещё причины. В процессе сборки при обработке большого числа чего-то может запросто произойти переполнение. И итоги там такие же — недописанные файлы и т.п.
перекомпилировал - пропало :-\
Возможно, стоит удалять txt перед сборкой. Processes сканируют (если есть) quick_strings.txt, variabies.txt и возможно ещё какие-то (на самом деле известно, что сканируются ID_, созданные на предыдущем этапе, и, если пересобирать несколько раз, результаты могут несколько меняться).
странное еще дело с переносами текста - "\", иногда проходит, иногда нет.
-
Легионер (http://rusmnb.ru/index.php?action=profile;u=17320), Для переноса текста всегда пользовался символом ^. Проблем не было =/
-
Вот сделал я локацию, написал меню, скрипт прописал, мисион темплейтс, компилится нормально, без ошибок, в самой игре ошибок нет тоже, но стоит мне подойти к этой локации (столкнутся т.е.), как игра вылетает. От чего сие происходит?
-
Легионер ([url]http://rusmnb.ru/index.php?action=profile;u=17320[/url]), Для переноса текста всегда пользовался символом ^. Проблем не было =/
uhanich (http://rusmnb.ru/index.php?action=profile;u=15855), это для переноса в игре, вроде не замечал проблем,
а вот с слэшем обратным неоднократно ( он для удобства в модульке, на то как текст переносится в игре не влияет).
Добавлено: 18 Ноября, 2012, 15:56
Вот сделал я локацию, написал меню, скрипт прописал, мисион темплейтс, компилится нормально, без ошибок, в самой игре ошибок нет тоже, но стоит мне подойти к этой локации (столкнутся т.е.), как игра вылетает. От чего сие происходит
ошибка в скрипте который отвечает за столкновение партий. откуда ты в меню направление дал...
-
Легионер (http://rusmnb.ru/index.php?action=profile;u=17320), из module_scripts.py
-
я знаю что из модуль_скриптс. там ошибка, или само меню (что менее вероятно)
-
Вот сделал я локацию
Что это значит? Создали сцену?
За последствия столкновений партии игрока с другими партиями первоначально отвечает скрипт game_event_party_encounter. Оттуда и нужно плясать.
Вылет игры без сообщений об ошибке обычно бывает по двум причинам:
1. Аппаратная ошибка. Например нехватка оперативной памяти.
2. Выполнение каких то недопустимых операций. Сам сталкивался с таким, когда модулька собирается нормально, но при выполнении определённой операции игра вылетает.
Не видя кода, больше не скажешь.
-
локация - партия с флагом pf_village, сцена тоже сделана, но до сцены дело не доходит.
Код:
module_scripts.py В скрипте отвечающем за столкновения:
(eq,"$g_party_encounter","p_house"),
(jump_to_menu,"mnu_house_1"),
module_game_menus.py
("house_1",mnf_enable_hot_key,"House","none",
[],
[
("next",[],"Войти",[]),
]),
-
(eq,"$g_party_encounter","p_house"),
(jump_to_menu,"mnu_house_1"),
может всё же
(eq,"$g_encountered_party","p_house"),
(jump_to_menu,"mnu_house_1")
?
в скрипте game_event_party_encounter id встречной партии хранится в переменной $g_encountered_party, тогда как $g_party_encounter вовсе нигде не используется.
Сдаётся мне вы просто были не внимательны.
-
Заменил, всё-равно не робит...
-
Ну это единственная ошибка в предоставленном куске кода.
Меню то появляется, или краш происходит сразу при столкновении?
-
uhanich (http://rusmnb.ru/index.php?action=profile;u=15855), при столкновение игра несколько секунд висит, а потом вылетает (меню не появляется).
-
Ну тогда нужно смотреть полностью и меню и скрипт. Скорее всего ошибка из разряда банальных оплошностей. Если не хочешь светить весь код, можешь скинуть мне в ЛС, гляну.
-
uhanich (http://rusmnb.ru/index.php?action=profile;u=15855),
module_scripts.py
("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),
]),
Как я и говорил. Ошибка от невнимательности. И ошибка очевидная.
Каждая новая проверка (eq) в вашем случае должна бить новой попыткой (try)
-
Спасибо. Заработало.
А, вот ещё вопрос. Когда я расставляю входные точки, т.е. прописываю их в мисион темплейтс и входных персонажей например 100, мне нужно прописывать 100 точек?
Если да, то зачем тогда параметр кол-ва трупсов для спауна?
-
Нет. на одной точке может спавниться сколько угодно агентов за раз. Это очевидно если открыть любую сцену обычной битвы,там точка спавна для каждой команды всего одна.
-
Хм. А я вот ставил спавн трёх героев на одной точке, заранее прописав ей максимальное кол-во спавнов 20. Но у меня игра сразу же завершилась крашем. Сделал три точки - никаких крашей.
Добавлено: 18 Ноября, 2012, 19:44
Т.е. не сразу же, а при входе в локацию (на сцену).
-
Смотрите доступные флаги в header_mission_templates, смотрите примеры применения этих флагов в оригинале, и всё поймёте.
Насколько я понял, вы выпилили из модульки весь натив и решили писать всё с нуля. Оно конечно круто, но без обращения к оригинальной модульке и вы вряд ли быстро чему-то научитесь. Смотрите код оригинала, смотрите как он работает в самой игре, и большинство вопросов отпадёт.
-
Так я по возможности так и делаю (подсматриваю в код натива), но иногда мне просто непонятно, почему оно так, тогда я бегу сюда.
Добавлено: 19 Ноября, 2012, 14:20
Вопрос: Есть текстура волос, сами волосы длинные, по пояс где-то, они при движении проваливаться же будут? Есть какой-нибудь мехнизм, что-бы этого избежать?
-
Вопрос: Есть текстура волос, сами волосы длинные, по пояс где-то, они при движении проваливаться же будут? Есть какой-нибудь мехнизм, что-бы этого избежать?
Насколько я знаю, механизма избежать нет.
-
Здравствуйте. Я пару дней как читаю Ваш форум, пытаясь найти нужную информацию - и уже с тем как редактировать troops файл в Morgh's редакторе у меня никаких проблем нет: все мои изменения прекрасно работают. За что большое спасибо Вашему форуму. А потребности изменять другие файлы пока не имею - вся моя задумка вполне укладывается только в изменение нескольких параметров troops-файла.
Проблема в том, что моей целью является перенос, мною сделанных изменений в troops-файле, именно в мультиплеер на свой сервер. Вот допустим если я создаю свою карту и запускаю с ней сервер, то у каждого, заходящего на мой сервер, игрока файл карты скачивается автоматически и заменяет файл в папке игры, вместо того чтобы, допустим, кикать игрока за то что его файлы таинственный образом не совпадают с файлами сервера на который он зашел.
Мне нужно чтобы, измененный мною troops-файл, делал тоже самое и все, заходящие на мой сервер игроки, играли не только при моей карте но и при моих параметрах юнитов (допустим с убранными некоторыми видами оружия и измененными навыками). Реально ли это сделать? Т.е. говоря совсем просто, я просто хочу чтобы на моем сервере были определенные изменения в балансе, одинаковые для всех.
-
Подскажите как совместить Imperial Rome и Diplomacy.Так чтобы карта, солдаты,доспехи названия в общем вся римская тематика осталась, а из Diplomacy только чтобы была развита дипломатия.Заранее спасибо.
-
Цезарь-1999 (http://rusmnb.ru/index.php?action=profile;u=27931), Спросить у Опциона модульную систему , ели даст то продолжим разговор :D
-
Никто не задавался вопросом о создании аналога выбора класса из MM и Наполеоника, где вместо сухого текста в меню красивая презентация с тремя подкатегориями: Пехота, Кавалерия, Специальные войска?
Нужно бы (давно были идеи у некоторых) сделать то же самое, но для реалий преимущественно средневековых и/или фентезийных войск, с разбивкой по тем же трем вкладкам - Пехота, Лучники, Кавалерия. То, что есть в Нейтиве и остальных модов - довольно уныло, три класса, где каждый пехотинец тебе и копейщик, и шок-пехота, и щитоносец, и метальщик, и на дуде игрец. Было бы идеально, и довольно несложно реализуемо, кстати, сделать что-то вроде линейки войск из Total War, где четко есть тяжелая, легкая, средняя пехота с подразновидностями, несколько типов лучников, конницы и тому подобное. При этом не убирать возможность покупки снаряжения, оставив возможность апгрейда, скажем, с тяжелой кольчуги на латы или с длинного лука на составной при достаточном количестве золота.
На самом деле странно, что этого еще нет, ведь вопрос только реализации системы презентаций. С Наполеоника брать не вариант, потому что, во-первых, там слишком много завязано на переменных, скриптах артиллерии с кучей проверок, разобраться сложно и много лишнего очень, а во-вторых, после использования исходников Наполеоника нужно вставлять неудобный скрипт в инсталлятор мода для проверки присутствия ключа на DLC.
Итого: нужен аналог красивого и удобного меню из Наполеоника, без ненужной мишуры вроде предпросмотра войск и оружия снизу, но возможности кастомизации, например, текстового литературного описания и графического показателя статистик (владение оружием и тому подобное).
-
wse позволяет перехватывать игровое окно.
-
wse позволяет перехватывать игровое окно.
В Наполеонике это сделано явно без WSE. Да и сам родоначальник Маунт и Мушкет работал без него. Дело лишь в файле презентаций и выдачи списков юнитов, а module_presentation - моя слабость. Было бы неплохо соорудить аналогию, если бы я знал как, ведь применение не ограничено никаким модом, все будет на автомате.
-
wse внедрен в наполеоник на уровне движка. во вторых у вас нет возможности перехватить игровое окно партии. вернее есть, но uhanich (http://rusmnb.ru/index.php?action=profile;u=15855), тестил и там не все гладко.
игровые окна не в модуль_презентация. они вшиты в движок.
-
игровые окна не в модуль_презентация. они вшиты в движок.
А как же выбор юнитов в Ботоводе Руси, например? Там вполне себе игровое окно, с менюшками, выбором и красивостями. То же Escape-меню во всех админ-модах рисуется именно презентациями, дополнительный чат в PW и выбор магии в одном из малоизвестных модов тоже сделан через module_presentations. Я что-то путаю?
wse внедрен в наполеоник на уровне движка
Буду знать. Придется значит и его осваивать.
-
я веду разговор о сингле. если подразумевалось другое, то нужно пояснять то, о чем вы мечтаете.
если мульт, то там совершенно другое и да там сделано в презентациях.
-
Ну конечно я имел ввиду мультиплеер, прощу прощения, если сразу непонятно. Мне казалось, что у Наполеоника есть только мультиплеерная сторона.
-
Watakushi (http://rusmnb.ru/index.php?action=profile;u=25235), Вопрос то в чём собственно по модульной системе (см. название темы)? Единственный знак вопроса в вашем сообщении это
Никто не задавался вопросом о создании ............?
Ответ да, но к теме он отношения не имеет.
Если вы собираетесь сами этом заняться и хотите узнать, как именно это сделать, то к сожалению простого ответа вам пока никто не даст, т.к пока нет на русском языке уроков по презентациям. Придётся осваивать самому, ковыряя модульку натива. На конкретные вопросы здесь возможно и ответят.
Если вы просто ищите единомышленников или тех, кто будет готов реализовать ваши желания, то вам сюда (http://rusmnb.ru/index.php?board=176.0) или сюда (http://rusmnb.ru/index.php?board=24.0)
Презентации один из самых сложных файлов модульки. Именно поэтому почти никто не берётся их писать.
-
Хорошо, сам так сам. Или в ином разделе тему создам, когда наработки будут.
-
Пара вопросов:
1) Нужно сменить иконки караванов в зависимости от фракции. Можно это сделать через _scripts, а не создавать шаблон партии каждого каравана?
т.е. на подобии этого
(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 ругается на неиспользованную переменную
2) Нужно убрать возможность создания собственного королевства. Где оно прописано и какие переменные отвечают за это?
-
Van (http://rusmnb.ru/index.php?action=profile;u=6232),
1.
Ищи скрипт script_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"),
2.
Основная переменная - "$players_kingdom". Именно в ней хранится id фракции к которой принадлежит ГГ. При создании своего королевства туда записывается fac_player_supporters_faction, при поступлении на службу одной из фракций id этой фракции, в противном случае её значение -1.
Делается это технически просто, но нужно учесть множество побочных моментов, т.к в нативе на это многое завязано. Как минимум нужно придумать, как поступать с захваченным замком\городом, если ГГ не принадлежит ни к одной фракции. Просто вырезать этот кусок кода не получится, нужно переписывать, ибо чревато серьёзными багами.
-
Если кто может помочь!Я собрал несколько человек,для создания мода.Они все занимаются звуками,3d моделями,сценами и т.п. А я взялся за модульную систему.Кое что я понял но все же не все.Можете помочь мне?Тоесть разобраться с модульной системой.Вот мои первые вопросы по МС:
1.Можно ли как нибудь сделать так,что бы вместо топориков были гранаты?
2.Можно ли сделать газовое оружие(т.е. типа огнемет только с газом вместо огня,все это будет сделано,точнее почти сделано),что бы оно убивало ни как стрелой или болтом а просто сбивало с ног противника и убивало бы его(газом).
3.Как сделать из арбалета/лука,винтовку/пистолет?не 3д модель
Добавлено: 04 Января, 2013, 12:06
Забыл сказать.Мод про Первую Мировую Войну
-
1.Можно ли как нибудь сделать так,что бы вместо топориков были гранаты?
2.Можно ли сделать газовое оружие(т.е. типа огнемет только с газом вместо огня,все это будет сделано,точнее почти сделано),что бы оно убивало ни как стрелой или болтом а просто сбивало с ног противника и убивало бы его(газом).
3.Как сделать из арбалета/лука,винтовку/пистолет?не 3д модель
1. Да можно
2. Не понимаю сути нужна смерть бота, какая разница от чего он умер не свидетельство же о смерти писать. Смерть на расстоянии возможна
3. Не вижу смыла это делать когда уже есть вид вооружение огнестрел в игре
-
а как его открыть,я читал на форуме(на этом) что огнестрел закрыт,и еще ведь мод то про первую мировую,там оружие не наполионовской эпохи,а нарезные,тоесть анимация перезарядки да и сама модель огнестрела должны быть другими,не так ли?
-
Я просто не в курсе чем он закрыт, ели вы мне скажите то может я скажу вам чем его открыть. На счёт всего остального - сделайте другую анимацию(те тко у вс там модели делает в команде должны знать) ну в инструкциях и уроках есть темы по анимации
-
спасибо
-
Такой вот глупый вопрос: где находятся скомпилированные файлы? Найти никак не могу. :embarrassed:
-
Волдеронд (http://rusmnb.ru/index.php?action=profile;u=14551), вы должны были указать папку в module_info.py
-
Хочу создать мод где в кампанию могут играть несколько человек (в идеале хочу сделать 5). Имеется в виду не Battle Time где люди могут просто подключится к сражению. А чтобы они точно также как и ты бегали по карте, нанимали войска, делали квесты, сражались вообщем все что можешь делать и ты в одиночной.
Но я в разработке модов ничего не понимаю, в учебнике - http://rusmnb.ru/index.php?topic=3091.0 (http://rusmnb.ru/index.php?topic=3091.0) описано только как изменять модели, оружия, карты но мне это все не нужно, мне только надо сделать компанию в мультиплеере.
Кто умеет создавать моды пожалуйста подскажите как можно создать такой мод.
-
Ashlagan (http://rusmnb.ru/index.php?action=profile;u=26337),
Никак
-
Ashlagan ([url]http://rusmnb.ru/index.php?action=profile;u=26337[/url]),
Никак
Что это совершенно не возможно?
-
На существующем движке нет. Не буду перечислять всех ограничений, не позволяющих этого сделать, но поверьте, их множество.
-
На существующем движке нет. Не буду перечислять всех ограничений, не позволяющих этого сделать, но поверьте, их множество.
Печально а так хотелось поиграть с друзьями.... Случайно не знаете какой-нибуть игры на подобие того что я хотел сделать.
-
Как добавить навык "огнестрельное", чтоб у юнитов он тоже был? В модуль ини огнестрел "включил".
-
Как добавить навык "огнестрельное", чтоб у юнитов он тоже был? В модуль ини огнестрел "включил".
Можно так:
["mountain_bandit_hero_b","Mountain Bandit Hero","Mountain Bandits Hero",tf_mounted|tf_guarantee_armor|tf_guarantee_boots|tf_guarantee_ranged|tf_guarantee_horse,0,0,fac_outlaws,
[itm_flintlock_pistol,itm_cartridges,itm_dirk,itm_dirk,itm_highlad_broadsword,itm_s_h1_1,itm_s_h1_2,
itm_h_h1,itm_b_h1,itm_b_h2,itm_a_h3,itm_a_h3_1,itm_a_h2,itm_a_h2_1,itm_s_h2,itm_s_h2_1,itm_saddle_horse],
def_attrib|level(11),wp(90)|wp_firearm(30),knows_common|knows_power_draw_2,rhodok_face_young_1, rhodok_face_old_2],
-
wp_firearm(30)
Как всё просто оказывается facepalm
Добавлено: 13 Февраля, 2013, 03:12
Ещё вопросик: есть мушкет, к нему идёт анимация передвижения (немного изменёная анимация шеста), вот эту анимация где добавлять? в неиспульзуемой анимации? или туда где стоит родная анимация шеста? или ещё где?
Пробовал оба варианта - и не получается...
-
В module_items
Прописываешь мушкет с флагами itp_type_musket ,itcf_shoot_musket|itcf_reload_musket
Посмотри, как у пистоля сделано.
Лучше пользоваться редактором Morghs.
А тригер звука выстрела и дыма можно заимствовать у пистоля.
-
FinGall (http://rusmnb.ru/index.php?action=profile;u=19251),
В module_itemsПрописываешь мушкет с флагами itp_type_musket ,itcf_shoot_musket|itcf_reload_musketПосмотри, как у пистоля сделано.Лучше пользоваться редактором Morghs. А тригер звука выстрела и дыма можно заимствовать у пистоля.
Именно так у меня и стоят галочки :)
Я вот про эти строчки.
[0.8, "musket_run_forward_right", 0, 24, arf_use_walk_progress|arf_cyclic|blend_in_walk|arf_make_walk_sound,pack2f(0.4,0.9), (0, 0, 0), 0.4],
Новые анимации передвижения ботов с мушкетом.
-
чтобы заменить по простому без кодинга с подменой -
[0.8, "musket_run_forward_right", 0, 24, arf_use_walk_progress|arf_cyclic|blend_in_walk|arf_make_walk_sound,pack2f(0.4,0.9), (0, 0, 0), 0.4],
musket_run_forward_right - имя анимы из опен брф
0, 24 - кадры для проигрывания
-
Анимация оружия в бою зависит от флага прописанного итему. Если двуручнику поставить флаги одноручного меча, то им будут пользоваться, как одноручным. Конечно, если эта анимация имеется в игре.
По логике, если есть флаг itp_type_musket, то должна быть и соответсвующая анимация. =/
Если же добавлять новую анимацию, то нужно:
1. Добавить её в БРФ-файл.
2. Прописать в module_animations (с именем из БРФ)
3. Прописать в нужной сцене соответствующим агентам. (причём, для низа и верха отдельно)
А лучше, исползуй модульку "Огнём и мечём" и не парься с этим.
-
FinGall (http://rusmnb.ru/index.php?action=profile;u=19251),
Анимация оружия в бою зависит от флага прописанного итему
А анимации движения с оружием?
1. Уже есть (musket_run_forward_right и т.д. 10 анимаций)
2. Это я и хотел узнать.
3. Метод "ctrl+c/ctrl+v" подойдёт?
У меня "Варбанд". Посмотрел модульку ОиМ, там вроде у всех ружей itp_type_crossbow, и Наолеоник Варс тоже.
Или всё-таки проще мушкету присвоить itp_type_crossbow, и
заменить по простому без кодинга с подменой
?
-
Посмотрел модульку ОиМ, там вроде у всех ружей itp_type_crossbow, и Наолеоник Варс тоже.
Или всё-таки проще мушкету присвоить itp_type_crossbow, и
Попробуй.
В module_items копируешь арбалет. Меняешь название и модель арбалета на мушкет. Замени триггер арбалета на триггер из пистоля. И даешь трупсу.
Только заряжать будут опуская вниз и стрелять болтами.
-
Попробуй.В module_items копируешь арбалет. Меняешь название и модель арбалета на мушкет. Замени триггер арбалета на триггер из пистоля. И даешь трупсу. Только заряжать будут опуская вниз и стрелять болтами.
Да. Вроде разобрался.
Только сильно смущает, что мушкет в слоте инвентаря отображается "как арбалет" - сверху. Можно это исправить?
И ещё вопрос - как добавить новую причёску, и надеть её боту?
-
Попробуй.В module_items копируешь арбалет. Меняешь название и модель арбалета на мушкет. Замени триггер арбалета на триггер из пистоля. И даешь трупсу. Только заряжать будут опуская вниз и стрелять болтами.
Да. Вроде разобрался.
Только сильно смущает, что мушкет в слоте инвентаря отображается "как арбалет" - сверху. Можно это исправить?
И ещё вопрос - как добавить новую причёску, и надеть её боту?
прописать в module_scins.py в том месте где прописаны прически. потом сделать фейс в редакторе лиц в игре нажать ктрл+е и скопировать код.
(с включенным режимом редактирования в лаунчере)
вставить его в конце записи о боте в модуль трупс либо вместо кода, либо вместо константы (янг_свадиан_фейс или что то подобное )
-
прописать в module_scins.py в том месте где прописаны прически. потом сделать фейс в редакторе лиц в игре нажать ктрл+е и скопировать код.(с включенным режимом редактирования в лаунчере)вставить его в конце записи о боте в модуль трупс либо вместо кода, либо вместо константы (янг_свадиан_фейс или что то подобное )
Спасибо, получилось.
А вот с wp_firearm(30)
пока не получается. В игре всё также - 0.
-
Подскажите - можно ли, чтоб игрок начинал новую игру, уже имея юнитов в отряде? Я пробовал через Morghs editor - не получается.
-
Перед тем как его выбрасывает на карту нужно присоединить кого-нибудь к отряду.
Смотреть
либо module_scripts.py:game_start
либо module_game_menu.py
-
Подскажите - можно ли, чтоб игрок начинал новую игру, уже имея юнитов в отряде? Я пробовал через Morghs editor - не получается.
Можно добавить в module_parties. Добавить команьонов в "main_party".
Например:
("main_party","Main Party",icon_player|pf_limit_members, no_menu, pt_none,fac_player_faction,0,ai_bhvr_hold,0,(-17.6, 79.7),[(trp_player,1,0),(trp_npc1,1,0),(trp_npc2,1,0),(trp_npc3,1,0)]),
Это добавили 3 неписей по 1чел.
Через Morghs editor тоже можно. Через parties editor в p_main_party. Но только в текстовых файлах.
-
Можно добавить в module_parties. Добавить команьонов в "main_party"
А я их в hero party записывал.
Спасибо, сработало. Весело смотреть, как они в начале игры бандюгана мочат:)
-
А если в скрипт "game_start" добавить строчку:
(ai_mesh_face_group_show_hide, "p_main_party", 1),
то лица у ботов в твоём отряде будут сохраняться так же, как и у неписей. Пока их не убьют.
Тогда, ещё прикольние за ними наблюдать.
-
Произвёл изменения представленные в этой теме http://rusmnb.ru/index.php?topic=11306.0, (http://rusmnb.ru/index.php?topic=11306.0,) всё замечательно работает в своём моде. Большое спасибо за такие нужные, интересные правки. Проблема только в том, что не знаю как совместить их с мини-модом "Дипломатия". Ведь поправленные файлы заменят дипломатийные, как совместить?
-
Дарутан (http://rusmnb.ru/index.php?action=profile;u=29689), Делать эти изменения не в модуле Натив, ав модуле Дипломатия
-
А как? Если указывать модульной системе папку с дипломатией, она тамошние файлы меняет на свои новые при щелчке на build_module.bat.
-
Так вы попробуй те взять модульную систему не мода натив, а мода дипломатия.
-
HunterWolf (http://rusmnb.ru/index.php?action=profile;u=20773), даже не знал что есть модульные системы специально под моды. Вот только на вашем форуме нашёл под версию 4.2 - http://rusmnb.ru/index.php?action=dldir;sa=details;lid=88, (http://rusmnb.ru/index.php?action=dldir;sa=details;lid=88,) она подойдёт для изменений на 4.3? Просто на 4.3 что-то не нахожу, может тоже подскажете...
-
Скомелируй текст. файлы и проверь. Скорее всего пойдёт. Это на ранних версиях может не пойти.
-
Доброго дня или другого времени суток всем.
Есть вопрос - как "прикрутить" новую анимацию нпсу. Очень хотелось бы сделать танцовщицу как в
http://rusmnb.ru/index.php?topic=11355.msg421745#msg421745 (http://rusmnb.ru/index.php?topic=11355.msg421745#msg421745)
То есть, чтобы через диалог запускалась анимация - поговорил с танцовщицей и она танцует.
зы. искренне ваш Жуков)
-
Прочитать туторы( http://rusmnb.ru/index.php?board=9.0 (http://rusmnb.ru/index.php?board=9.0) ) по анимации, освоить анимацию в 3d редакторе. Готово
-
HunterWolf, спасибо за бесценный совет)
Как бы читал. Многое понять легко, многое понимается со скрипом, но понимается. пока что уверенно себя чувствую только в трупс и партиес...
Наверное мне нужно конкретизировать вопрос:
Как прописать анимацию запускаемую диалогом?
я использовал в диалогс вот такой шаблон:
[trp_dancer,"start", [], "Hello. Do you want me to me to dance for you?^ It's 30 denars only", "dancer_talk",[]],
[anyone|plyr,"dancer_talk", [(store_troop_gold, ":cur_gold", "trp_player"),
(ge, ":cur_gold", 30)],
"Alright. Let me see it.","dancer_talk_ok",[(troop_remove_gold, "trp_player", 30),]],
[anyone|plyr,"dancer_talk",
[
(store_troop_gold, ":cur_gold", "trp_player"),
(lt, ":cur_gold", 30),
], "Sorry, I cannot afford it at the moment.", "dancer_talk_nomoney",[]],
[anyone|plyr,"dancer_talk", [], "Not now, pretty. Perhaps later.", "dancer_talk_no",[]],
[trp_dancer,"dancer_talk_nomoney", [], "Alright. Come back when you have some cash", "close_window",[]],
[trp_dancer,"dancer_talk_no", [], "As you like. Come again when you are in the mood^ for some entertainment.", "close_window",[]],
[trp_dancer,"dancer_talk_ok", [], "Here I am!", "close_window",[
(assign, ":agent_no", "trp_dancer"),
(agent_set_animation, ":agent_no", "anim_dance"),]
],
Пробовал по разному прописывать анимацию "trp_dancer" в анимацион модуле, - безуспешно. Больше того, даше если выставить одну из стандартных анимаций например
(agent_set_animation, ":agent_no", "lady_stand"),]
все равно пишет что какой-то не такой agent.
Вот такой косяк.
-
(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 и не агент вовсе :)
-
uhanich спасибо, помогло! на агента ругаться перестал, ура ура.)
Танцовшица продемонстрировала офигенный комплекс тайчи))
Не совсем то что что ожидалось (я скопировал брф с новой анимацией из wedding dance и пропиал ее в module ini) но по крайней мере все скомпилировалось и танцовщица честно пыталась что то делать за свои деньги)
осталось видимо правильно прописать в анимацию в анимацион, а это ужу в общем мелочи.
Еще раз спасибо Уханич!
-
Народ, кто-нибудь знает, как к мушкету вторую вспышку от выстрела (в смысле дым) прикрутить, та что должна быть из замка? Из дула дым нормально валит.
Да кстати, саму вспышку (в смысле - огонь от выстрела), тоже не знаю, как вставить.
-
В общем я сдаюсь :cry:
Как сделать чтобы из диалога с нпс запустить анимацию нпса?
вот диалог
[trp_xerina,"start", [], "Hello. Do you want me to me to dance for you?^ It's 50 denars only", "xerina_talk",[]],
[anyone|plyr,"xerina_talk", [(store_troop_gold, ":cur_gold", "trp_player"),
(ge, ":cur_gold", 50)],
"Alright. Let me see it.","xerina_talk_ok",[(troop_remove_gold, "trp_player", 50),]],
[anyone|plyr,"xerina_talk",
[
(store_troop_gold, ":cur_gold", "trp_player"),
(lt, ":cur_gold", 50),
], "Sorry, I cannot afford it at the moment.", "xerina_talk_nomoney",[]],
[anyone|plyr,"xerina_talk", [], "Not now, pretty. Perhaps later.", "xerina_talk_no",[]],
[trp_xerina,"xerina_talk_nomoney", [], "Alright. Come back when you have some cash", "close_window",[]],
[trp_xerina,"xerina_talk_no", [], "As you like. Come again when you are in the mood^ for some entertainment.", "close_window",[]],
[trp_xerina,"xerina_talk_ok", [], "Here I am!", "close_window",[
(assign, ":agent_no", "trp_xerina"),
(agent_set_animation, ":agent_no", "anim_dancer_1"),]
],
Вот как прописал анимацию в module animacion
["stand_lady", 0,
[29.0, "lady_stand", 0, 863, arf_use_stand_progress|arf_cyclic, 0, (0, 0, 0), 0.25],
],
["stand_lord", 0,
[10.0, "lord_stand", 0, 111, arf_use_stand_progress|arf_cyclic, 0, (0, 0, 0), 0.25],
],
["dancer_1", 0,
[20.0, "dancer_1", 0, 387, arf_blend_in_5],
],
["dancer_2", 0,
[20.0, "dancer_2", 0, 387, arf_blend_in_5],
],
["dancer_3", 0,
[20.0, "dancer_3", 0, 387, arf_blend_in_5],
],
["pose_1", 0,
[3.0, "poses", 0, 0, arf_cyclic],
],
["pose_2", 0,
Анимацию взял из wedding dance, перенес брфку, прописал в module ini.
Как б все компилируется, но в диалоге, когда должна пойти анимация выскакивает ошибка.
-
Та же самая ошибка, что и в первый раз. Ответ тремя постами выше.
-
uhanich, так как тремя постами выше тоже ошибка. Я пробовал по разному - и ни фига...
_____________________
Стоп. переписал еще раз диалог - все пошло. Способ uhanichа работает :)
-
пажалуйста очень прошу подскажите как убрать удар щитом в моде The_Peloponnesian_War Альфа версия 0.6 .хотя наверное если обЪясните всё равно непойму . если токо кто-то из вас хорошо разбирающейся смог бы исправить файлы чтобы небыло удара щитом и выложить их для скачки чтобы их можно было вставить в мод с заменой . пожалуйста помогите там на форуме многие спрашивают . Ещё сегодня смотрел видео иностранец играл в этот мод его били как салагу с этим ударом щитом и зачем разрабы мода ставят такой прибомбас хотябы сделали как в риме чтобы можно было отключать его
-
да так и никто на мою прозьбу неответил
-
напишите разработчикам, чтоб сделали опционально.
никто не ответил, потому что без модульки Это мало реально, да и если бы была, никто не взялся бы за это, с конкретным вопросом бы помогли, по этой теме , если бы вы взялись сами это делать.
Это из серии - парни придите ко мне, почините мне сантехнику, потому что я не умею, а объяснения не пойму все равно.
-
да нет если это сложно тогда непарьтесь в другой мод поиграю хотя пелопенесию жаль хорошая тема но создатели сами её и за.......ли этим ударом щитом . Чтобы этот удар делать надо было сделать чтобы от него можно было увернутся а не так что тебя все как лоха сбивают и режут как свинью а ты и сделать нечего неможеш , типо вау круто удар щитом а в процессе полная опа . Чисто самому токо на коне биться или пускай войско само воюет))
-
Всем доброго времени суток, тема такова хочу добавить на глобальную карту новых бандитов а точнее - стаи волков, да так, чтобы они возобновлялись потом.(Стаи волков будут ПОМИМО 6и стандартных бандитов!) вот, что я прописал, в скриптах:
(set_spawn_radius, 5),
(try_for_range, "p_wolfs_spawn_point", villages_begin, villages_end),
(store_random_in_range, ":random_value", 0, 5),
(eq, ":random_value", 0),
(spawn_around_party, "p_wolfs_spawn_point", "pt_wolfs"),
(try_end),
все бы хорошо, но их появилось АЖ ЦЕЛЫХ 20!(+ -) :blink:, подскажите пожалуйста как сделать так, чтобы их стало от 5и до 10и отрядов?
-
Так деревень больше сотни. Вот и прикинь вероятнось спауна.
чтоб не превышало 10, можно сделать так.
(store_num_parties_of_template, reg2, "pt_wolfs"),
(try_begin),
(le, reg2, 10),
(store_random_in_range, ":random_value", villages_begin, villages_end),
(set_spawn_radius, 5),
(spawn_around_party, ":random_value", "pt_wolfs"),
(try_end),
Каждое срабатывание скрипта даст одну стаю возле какой-то деревни.
Но я бы лучше прописал это в module_triggers.
(Посмотри как там сделаны охотники за головами.)
-
Когда-то давно задавался вот этот вопрос:
3. где прописаны какая кнопка что делает - хочу сделать вставание на дыбы на одну кнопку.
на который никто не ответил.
Собственно сейчас меня интересует этот же вопрос, разве что вставание на дыбы сгодится и не на одной кнопке - знать бы хоть в каком файле модульки (и, желательно, в каком месте этого файла)) искать назначение кнопок.
-
Скорее всего это не в модульке прописано. Иначе оно было бы в module_mission_templates.
Но можно самому присвоить горяч. клавишу для выполнения чего либо. В том числе и анимации.
Например:
dplmc_key_k = (
0, 0, 0,
[(key_clicked, key_k),
],
[
Здесь код, который надо выполнить.
])
Потом +dplmc_key_k надо добавлять в конце шаблонов сцен, где ты хочешь это использовать. Перед последней ")".
Помоему, вся лошадиная анимация в anim_horse. Толко надо определить кадры вставания на дыбы.
Лучше поговорить с Baltijec. Он занимался лошадиной анимацией.
-
FinGall (http://rusmnb.ru/index.php?action=profile;u=19251), спасибо за совет, но я вижу, что это пока малость не мой уровень знаний и умений :); я думал, что будет проще - поменять где-то клавишу на нужную и всего делов - наивный facepalm.
-
спасибо FinGall, я также пробовал так, но это выдало ошибку :-\?!:
(set_spawn_radius, 5),
(try_for_range, "p_wolfs_spawn_point", 0, 5),
(store_random_in_range, ":random_value", 0, 10),
(eq, ":random_value", 0),
(spawn_around_party, "p_wolfs_spawn_point", "pt_wolfs"),
(try_end),
просто мне нужно, чтобы они появились в определенном месте, например в степях, а там медведи в снегах и т.д.
И хотел бы спросить, будут ли держаться на карте эти стаи после того как их убьют, или они одноразовые?(ну то есть будут ли спауниться еще?)
-
У функции (spawn_around_party, "p_wolfs_spawn_point", "pt_wolfs"),
"p_wolfs_spawn_point" - это должен быть номер партии (локации) в радиусе от которой спаунится партия типа "pt_wolfs".
А ты её задаёшь (try_for_range, "p_wolfs_spawn_point", 0, 5),
Вероятно выдаётся ошибка - "Нет такой партии".
Если например: (spawn_around_party, "p_town_1", "pt_wolfs"), то будет спаун твоей стаи возле города "p_town_1".
Чтобы спаунились стаи регулярно, надо прописать этот скрипт в module_triggers.
Пример
(24.0, 0, 0.0,
[
(store_num_parties_of_template, reg2, "pt_manhunters"),
(lt, reg2, 10)
],
[
(set_spawn_radius, 1),
(store_add, ":town_22_plus_one", "p_town_22", 1),
(store_random_in_range, ":selected_town", "p_town_1", ":town_22_plus_one"),
(spawn_around_party, ":selected_town", "pt_manhunters"),
]),
Такой тригер раз в сутки спаунит партию типа "pt_manhunters" рядом каким-либо городом, если таких партий меньше 10.
-
Спасибо тебе добрый Человек, все получилось , через module_triggers, сделал так:
(24.0, 0, 0.0,
[
(store_num_parties_of_template, reg2, "pt_cattle_herd"),
(lt, reg2, 10)
],
[
(set_spawn_radius, 1),
(store_add, ":town_22_plus_one", "p_town_22", 1),
(store_random_in_range, ":selected_town", "p_town_1", ":town_22_plus_one"),
(spawn_around_party, "p_steppe_bandit_spawn_point", "pt_cattle_herd"),
]),
правда когда моделирует систему говорит:
WARNING: Local variable never used, selected_town, at: 0
Не знаю, что это?! Но работает все регулярно :thumbup:
-
Он говорит, что эти строки
(store_add, ":town_22_plus_one", "p_town_22", 1),
(store_random_in_range, ":selected_town", "p_town_1", ":town_22_plus_one"),
в твоём тригере лишние. Их можно отключить.
-
подскажите по диалогам, как переход сделать .
-при болтавне с нпс , если получаем у него квест -при следующем разговоре с ним -- переход к "одному" диалогу. :)
- а если при болтавне с нпс , отказываемся от квеста , то при следующем разговоре с ним -- переход к "другому" диалогу. :(
-
Проще всего найти похожий диалог и посмотреть, как он сделан. Я сперва нахожу фразу в русификаторе и смотрю, чего искать в module_dialogs.
Принцип:
Это как бы в середине диалога, так как в сцене и при стокновении начало диалога разное.
[anyone|plyr, "talk1", [Условие],"Ответ игрока", "talk2", [Действие]],
[anyone, "talk2", [Условие],"Ответ НПС", "close_window",[Действие]],
здесь фраза "talk1" переходит в "talk2",
а фраза "talk2" заканчивает диалог "close_window".
Может быть несколько фраз с одним идентификатором, но разным условием. На экране будет первая чьё условие окажется верным.
-
Помогите мне пожалуста! :o
Делаю мод к M&B,но возникла проблема с модульной системой.Создаю анимацию,но не могу найти module_animations.py.
module_mission_templates.py.
Откриваю папку Warband-module-native-///
А там куча блокнотов МС.module.ini,я все таки нашел,а где все остальное искать?
Ссилка:http://rusmnb.ru/index.php?topic=10824.0(здесь брал статью). :)
Спасибо!!! : :)
-
http://rusmnb.ru/index.php?topic=15189.0 (http://rusmnb.ru/index.php?topic=15189.0)
-
Если уже отвечали на вопрос, то, пожалуйста, скажите хоть где искать.
Суть вопроса в чем. Имеется мод. В нем сделано очень много изменений. Поставил модульную систему, но в ней эти изменения не прописаны и при компиляции убираются. Можно ли как-нибудь сделать так, что бы эти изменения прописались в МС. А то заново их там прописывать слишком долго... Заранее спасибо.
-
olovo (http://rusmnb.ru/index.php?action=profile;u=21078), вообще нет, но можно попробовать вот это (http://rusmnb.ru/index.php?topic=17294.0).
-
olovo ([url]http://rusmnb.ru/index.php?action=profile;u=21078[/url]), вообще нет, но можно попробовать вот это ([url]http://rusmnb.ru/index.php?topic=17294.0[/url]).
Спасибо большое, не работает, но все равно спасибо, что откликнулись.
-
Пожалуйста помогите мне со скриптами модульной системой на карте в мультиплеере.
1)Как(пожалуйста полностью) сделать так, чтобы оружия, разбросанные в редакторе на карте, могли поднимать игроки?Где и что в скриптах нужно делать для этого?
2)Как сделать так, чтобы игрок, подойдя к двери и нажав кнопку F (ею дверь открывается) переместился в другое место, до такой же но другой двери, как будто вошел в то сооружение, на котором была дверь(я не о Passage а о скриптах двери)
ЗА ЛЮБОЙ ОТВЕТ БУДУ ОЧЕНЬ БЛАГОДАРЕН, ВСЕМ СПАСИБО ЗАРАНЕЕ!
-
2)Как сделать так, чтобы игрок, подойдя к двери и нажав кнопку F (ею дверь открывается) переместился в другое место, до такой же но другой двери, как будто вошел в то сооружение, на котором была дверь(я не о Passage а о скриптах двери)
Зачем такое извращение, просто сделайте открывающуюся дверь.
Что же до перемещений вообще, насколько мне известно, телепорты (passages) это единственный путь их реализации.
-
Вопрос такой: что нужно прописать в модульке для туториала (подозреваю, что скопировать из скриптов старта новой игры), чтобы там можно было пользоваться инвентарем (чтобы можно было открыть окно инвентаря по нажатию І)?
-
Зачем такое извращение, просто сделайте открывающуюся дверь.
Что же до перемещений вообще, насколько мне известно, телепорты (passages) это единственный путь их реализации.
дело в том, что объектов, в которые можно заходить очень мало и в основном все остальные сплошные.А вот если поставить заскриптованую дверь на входе в сплошной дом, и сделать так чтобы игрок переместился в какой-то туннель или ещё что-то, где такая самая дверь, тогда бы было лучше на много.И ещё, Passage работает только в одиночной игре.
Добавлено: 10 Июня, 2013, 14:19
Вопрос такой: что нужно прописать в модульке для туториала (подозреваю, что скопировать из скриптов старта новой игры), чтобы там можно было пользоваться инвентарем (чтобы можно было открыть окно инвентаря по нажатию І)?
Я немного не это имел в виду.Я хотел сделать так, чтобы из категории объектов 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, раньше пропадание не работало))
вместо позиции энтри_пойнта можно устанавливать любую позицию, это я как пример
-
Если уже отвечали на вопрос, то, пожалуйста, скажите хоть где искать.
Суть вопроса в чем. Имеется мод. В нем сделано очень много изменений. Поставил модульную систему, но в ней эти изменения не прописаны и при компиляции убираются. Можно ли как-нибудь сделать так, что бы эти изменения прописались в МС. А то заново их там прописывать слишком долго... Заранее спасибо.
Можно юзнуть:
http://rusmnb.ru/index.php?topic=9845.0 (http://rusmnb.ru/index.php?topic=9845.0)
http://rusmnb.ru/index.php?topic=5451.0 (http://rusmnb.ru/index.php?topic=5451.0)
-
Просмотрел форум, не нашел. Где прописана задержка после прыжка? Подскажите пожалуйста, если кто в курсе.
-
Прыжок это анимация следующие действия начинается сразу после окончания первого (все условия написаны выполнения анимации в module_animations.py), к сожалению нет у меня описания хейдер аниматион, можно поискать на ТВ по этим хейдерам, плюс есть хейдеры amf_priority_jump и amf_priority_jump_end) смотрите и ищите информацию по этим флагам
-
Спасибо, действительно, если понизить приоритет amf_priority_jump_end агент после прыжка продолжает перемещение без остановки. Но вот временной промежуток между завершением прыжка и новым прыжком где можно изменить - так и не нашел.
-
Это уже в брф в самом ресурсе анимации скорее всего, т.е возможно там есть кусок состояния спокоствия после приземления если убрать этот кадр то анима будет завершатся раньше
-
Так дело в том что после завершения прыжка можно сразу продолжать бег, тоесть проигрывается анимация бега, следственно анимация прыжка завершена. А вот прыгнуть опять можно лишь спустя некоторое время. За это время успевает проиграться 3-4 шага бега.
-
Господа, извиняюсь за глупый вопрос, но...
Как установить и подготовить модульную систему, чтобы M&B Warband её распознавал?
-
http://rusmnb.ru/index.php?topic=5710.0 (http://rusmnb.ru/index.php?topic=5710.0)
-
А вот ещё вопрос... Как изменить год игры? Там 1257, я хочу 2042. Это в модульке изменяется?
-
Это в модульке изменяется?
Да, в файле module_scripts
-
"Python" не является внутренней или внешней командой, исполняемой программой или пакетным файлом.
Не удаётся найти *директория мода*\Module system 1.15*.pyc
Такое высвечтивается при запуске build_module.bat
-
И что ответов в темах что я дал нет?- прискорбно, ещё можно поиском воспользоваться
-
"Python" не является внутренней или внешней командой, исполняемой программой или пакетным файлом.
Не удаётся найти *директория мода*\Module system 1.15*.pyc
Такое высвечтивается при запуске build_module.bat
На это может влиять версия питона, какая у вас?
-
"Python" не является внутренней или внешней командой, исполняемой программой или пакетным файлом.
Не удаётся найти *директория мода*\Module system 1.15*.pyc
Такое высвечтивается при запуске build_module.bat
А у тебя в module_info правильно записан маршрут поиска?
Нужно ставить "/".
Например:
export_dir = "C:/Mount&Blade Warband/Modules/Mod/"
-
Я тут в моде сделал 14 фракций-королевств, прописал каждому 10 лордов и 10 леди
Теперь такая поблема: нужно задать семейные связи(раздаю в "script_initialize_aristocracy")
("initialize_aristocracy",
[
#LORD OCCUPATIONS, BLOOD RELATIONSHIPS, RENOWN AND REPUTATIONS
#King ages
(try_for_range, ":cur_troop", kings_begin, kings_end),
(troop_set_slot, ":cur_troop", slot_troop_occupation, slto_kingdom_hero),
(store_random_in_range, ":age", 50, 60),
(troop_set_slot, ":cur_troop", slot_troop_age, ":age"),
(try_end),
(troop_set_slot, "trp_kingdom_5_lord", slot_troop_age, 47),
(troop_set_slot, "trp_kingdom_7_lord", slot_troop_age, 43),
(troop_set_slot, "trp_kingdom_8_lord", slot_troop_age, 26),
(troop_set_slot, "trp_kingdom_9_lord", slot_troop_age, 32),
(troop_set_slot, "trp_kingdom_10_lord", slot_troop_age, 45),
(troop_set_slot, "trp_kingdom_12_lord", slot_troop_age, 33),
#The first thing - family structure
#lords 1 to 8 are patriarchs with one live-at-home son and one daughter. They come from one of six possible ancestors, thus making it likely that there will be two sets of siblings
#lords 9 to 12 are unmarried landowners with sisters
#lords 13 to 20 are sons who still live in their fathers' houses
#For the sake of simplicity, we can assume that all male aristocrats in prior generations either married commoners or procured their brides from the Old Country, thus discounting intermarriage
(try_for_range, ":cur_troop", kingdom_ladies_begin, kingdom_ladies_end),
(troop_set_slot, ":cur_troop", slot_troop_occupation, slto_kingdom_lady),
(try_end),
(assign, ":cur_lady", "trp_kingdom_1_lady_1"),
(try_for_range, ":cur_troop", lords_begin, lords_end),
(troop_set_slot, ":cur_troop", slot_troop_occupation, slto_kingdom_hero),
(store_random_in_range, ":father_age_at_birth", 23, 26),
# (store_random_in_range, ":mother_age_at_birth", 19, 22),
(try_begin),
(is_between, ":cur_troop", "trp_knight_1_1", "trp_knight_2_1"),
(store_sub, ":npc_seed", ":cur_troop", "trp_knight_1_1"),
(assign, ":ancestor_seed", 1),
(else_try),
(is_between, ":cur_troop", "trp_knight_2_1", "trp_knight_3_1"),
(store_sub, ":npc_seed", ":cur_troop", "trp_knight_2_1"),
(assign, ":ancestor_seed", 4),
(else_try),
(is_between, ":cur_troop", "trp_knight_3_1", "trp_knight_4_1"),
(store_sub, ":npc_seed", ":cur_troop", "trp_knight_3_1"),
(assign, ":ancestor_seed", 7),
(else_try),
(is_between, ":cur_troop", "trp_knight_4_1", "trp_knight_5_1"),
(store_sub, ":npc_seed", ":cur_troop", "trp_knight_4_1"),
(assign, ":ancestor_seed", 10),
(else_try),
(is_between, ":cur_troop", "trp_knight_5_1", "trp_knight_6_1"),
(store_sub, ":npc_seed", ":cur_troop", "trp_knight_5_1"),
(assign, ":ancestor_seed", 13),
(else_try),
(is_between, ":cur_troop", "trp_knight_6_1", "trp_knight_7_1"),
(store_sub, ":npc_seed", ":cur_troop", "trp_knight_6_1"),
(assign, ":ancestor_seed", 16),
(else_try),
(is_between, ":cur_troop", "trp_knight_7_1", "trp_knight_9_1"),
(store_sub, ":npc_seed", ":cur_troop", "trp_knight_7_1"),
(assign, ":ancestor_seed", 19),
(else_try),
(is_between, ":cur_troop", "trp_knight_9_1", "trp_knight_10_1"),
(store_sub, ":npc_seed", ":cur_troop", "trp_knight_9_1"),
(assign, ":ancestor_seed", 22),
(else_try),
(is_between, ":cur_troop", "trp_knight_10_1", "trp_knight_11_1"),
(store_sub, ":npc_seed", ":cur_troop", "trp_knight_10_1"),
(assign, ":ancestor_seed", 25),
(else_try),
(is_between, ":cur_troop", "trp_knight_11_1", "trp_knight_12_1"),
(store_sub, ":npc_seed", ":cur_troop", "trp_knight_11_1"),
(assign, ":ancestor_seed", 28),
(else_try),
(is_between, ":cur_troop", "trp_knight_12_1", "trp_knight_13_1"),
(store_sub, ":npc_seed", ":cur_troop", "trp_knight_12_1"),
(assign, ":ancestor_seed", 31),
(else_try),
(is_between, ":cur_troop", "trp_knight_13_1", "trp_knight_14_1"),
(store_sub, ":npc_seed", ":cur_troop", "trp_knight_13_1"),
(assign, ":ancestor_seed", 34),
(else_try),
(is_between, ":cur_troop", "trp_knight_14_1", "trp_knight_1_1_wife"),
(store_sub, ":npc_seed", ":cur_troop", "trp_knight_14_1"),
(assign, ":ancestor_seed", 37),
(try_end),
(try_begin),
(lt, ":npc_seed", 8), #NPC seed is the order in the faction
##diplomacy start+ do not overwrite reputation if it was already set explicitly
(troop_get_slot, ":reputation", ":cur_troop", slot_lord_reputation_type),
(try_begin),
(lt, ":reputation", 1),
#Original behavior:
(assign, ":reputation", ":npc_seed"),
(try_end),
##diplomacy end+
(store_random_in_range, ":age", 45, 64),
##diplomacy start+ only set father if not already set
(try_begin),#<- dplmc+ added
(troop_slot_eq, ":cur_troop", slot_troop_father, -1),#<- dplmc+ added
(store_random_in_range, ":father", 0, 3), #three possible fathers (native plus)
(val_add, ":father", ":ancestor_seed"),
(troop_set_slot, ":cur_troop", slot_troop_father, ":father"),
(try_end),#<- dplmc+ added
##diplomacy end+
#wife
##diplomacy start+ do not rebind an already-set wife
(try_begin),
(troop_slot_eq, ":cur_troop", slot_troop_spouse, -1),
#There may be a better solution, but to avoid oddities disable automatic spouses if there is a gender mismatch.
#Mods that add additional races may want to tweak this (for example if some races shouldn't intermarry).
(call_script, "script_dplmc_store_is_female_troop_1_troop_2", ":cur_troop", ":cur_lady"),
#Types are stored to reg0 and reg1.
(neq, reg0, reg1),#lord and lady aren't both female or both non-female
(val_mul, reg0, reg1),
(eq, reg0, 0),#at least one of lord or lady is non-female
##diplomacy end+
(troop_set_slot, ":cur_troop", slot_troop_spouse, ":cur_lady"),
(troop_set_slot, ":cur_lady", slot_troop_spouse, ":cur_troop"),
(store_random_in_range, ":wife_reputation", 20, 26),
(try_begin),
(eq, ":wife_reputation", 20),
(assign, ":wife_reputation", lrep_conventional),
(try_end),
(troop_set_slot, ":cur_lady", slot_lord_reputation_type, ":wife_reputation"),
(call_script, "script_init_troop_age", ":cur_lady", 49),
(call_script, "script_add_lady_items", ":cur_lady"),
(val_add, ":cur_lady", 1),
##diplomacy start+
(try_end),
##diplomacy end+
#daughter
##diplomacy start+
(try_begin),
##diplomacy end+
(troop_set_slot, ":cur_lady", slot_troop_father, ":cur_troop"),
(store_sub, ":mother", ":cur_lady", 1),
(call_script, "script_init_troop_age", ":cur_lady", 19),
##diplomacy start+
#fix native bug (daughters are their own mothers)
#(troop_set_slot, ":cur_lady", slot_troop_mother, ":cur_lady"),
(troop_set_slot, ":cur_lady", slot_troop_mother, ":mother"),
(try_begin),
#swap father and mother slots if the lord was female (do nothing if both were female)
(call_script, "script_dplmc_store_is_female_troop_1_troop_2", ":cur_troop", ":mother"),
(neq, reg0, 0),#:cur_troop is female
(eq, reg1, 0),#:mother is not female
(troop_set_slot, ":cur_lady", slot_troop_mother, ":cur_troop"),
(troop_set_slot, ":cur_lady", slot_troop_father, ":mother"),
(try_end),
##diplomacy end+
(store_random_in_range, ":lady_reputation", lrep_conventional, 34), #33% chance of father-derived
(try_begin),
(le, ":lady_reputation", 25),
(troop_set_slot, ":cur_lady", slot_lord_reputation_type, ":lady_reputation"),
(else_try),
(eq, ":lady_reputation", 26),
(troop_set_slot, ":cur_lady", slot_lord_reputation_type, lrep_conventional),
(else_try),
(eq, ":lady_reputation", 27),
(troop_set_slot, ":cur_lady", slot_lord_reputation_type, lrep_moralist),
(else_try),
(assign, ":guardian_reputation", ":reputation"),
(try_begin),
(this_or_next|eq, ":guardian_reputation", lrep_martial),
(eq, ":guardian_reputation", 0),
(troop_set_slot, ":cur_lady", slot_lord_reputation_type, lrep_conventional),
(else_try),
(eq, ":guardian_reputation", lrep_quarrelsome),
(troop_set_slot, ":cur_lady", slot_lord_reputation_type, lrep_otherworldly),
(else_try),
(eq, ":guardian_reputation", lrep_selfrighteous),
(troop_set_slot, ":cur_lady", slot_lord_reputation_type, lrep_ambitious),
(else_try),
(eq, ":guardian_reputation", lrep_cunning),
(troop_set_slot, ":cur_lady", slot_lord_reputation_type, lrep_adventurous),
(else_try),
(eq, ":guardian_reputation", lrep_goodnatured),
(troop_set_slot, ":cur_lady", slot_lord_reputation_type, lrep_adventurous),
(else_try),
(eq, ":guardian_reputation", lrep_debauched),
(troop_set_slot, ":cur_lady", slot_lord_reputation_type, lrep_ambitious),
(else_try),
(eq, ":guardian_reputation", lrep_upstanding),
(troop_set_slot, ":cur_lady", slot_lord_reputation_type, lrep_moralist),
(try_end),
(try_end),
(call_script, "script_add_lady_items", ":cur_lady"),
(val_add, ":cur_lady", 1),
##diplomacy start+
(try_end),
##diplomacy end+
#high renown
(else_try), #Older unmarried lords
(is_between, ":npc_seed", 8, 12),
(store_random_in_range, ":age", 25, 36),
##diplomacy start+ do not overwrite reputation if it was already set explicitly
(troop_get_slot, ":reputation", ":cur_troop", slot_lord_reputation_type),
(try_begin),
(lt, ":reputation", 1),
#Original behavior:
(store_random_in_range, ":reputation", 0, 8),
(try_end),
##diplomacy end+
(store_random_in_range, ":sister_reputation", 20, 26),
(try_begin),
(eq, ":sister_reputation", 20),
(assign, ":sister_reputation", lrep_conventional),
(try_end),
(troop_set_slot, ":cur_lady", slot_lord_reputation_type, ":sister_reputation"),
(troop_set_slot, ":cur_lady", slot_troop_guardian, ":cur_troop"),
##diplomacy start+
#Initialize parents
(try_begin),
(troop_slot_eq, ":cur_troop", slot_troop_father, -1),
(store_mul, ":new_index", ":cur_troop", DPLMC_VIRTUAL_RELATIVE_MULTIPLIER),#defined in module_constants.py
(val_add, ":new_index", DPLMC_VIRTUAL_RELATIVE_FATHER_OFFSET),#defined in module_constants.py
(troop_set_slot, ":cur_troop", slot_troop_father, ":new_index"),
(troop_slot_eq, ":cur_lady", slot_troop_father, -1),
(troop_set_slot, ":cur_lady", slot_troop_father, ":new_index"),
(try_end),
(try_begin),
(troop_slot_eq, ":cur_troop", slot_troop_mother, -1),
(store_mul, ":new_index", ":cur_troop", DPLMC_VIRTUAL_RELATIVE_MULTIPLIER),#defined in module_constants.py
(val_add, ":new_index", DPLMC_VIRTUAL_RELATIVE_MOTHER_OFFSET),#defined in module_constants.py
(troop_set_slot, ":cur_troop", slot_troop_mother, ":new_index"),
(troop_slot_eq, ":cur_lady", slot_troop_mother, -1),
(troop_set_slot, ":cur_lady", slot_troop_mother, ":new_index"),
(try_end),
##diplomacy end+
(call_script, "script_init_troop_age", ":cur_lady", 21),
(call_script, "script_add_lady_items", ":cur_lady"),
(val_add, ":cur_lady", 1),
(else_try), #Younger unmarried lords
#age is father's minus 20 to 25
(store_sub, ":father", ":cur_troop", 12),
##diplomacy start+
#Some submods don't pay attention to this aspect of the troop list, and
#so initialization produces absurd or impossible results. Prevent such
#things from appearing in the game.
(try_begin),
#"father" can be father or mother
#(troop_get_type, ":parent_type", ":father"),
(try_begin),
#(eq, ":parent_type", tf_female),
(call_script, "script_cf_dplmc_troop_is_female", ":father"),
(assign, ":parent_slot", slot_troop_mother),
(assign, ":other_parent_slot", slot_troop_father),
(else_try),
(assign, ":parent_slot", slot_troop_father),
(assign, ":other_parent_slot", slot_troop_mother),
(try_end),
(troop_slot_eq, ":cur_troop", ":parent_slot", -1),
(store_add, ":logical_minimum_age", ":father_age_at_birth", 16),
(troop_slot_ge, ":father", slot_troop_age, ":logical_minimum_age"),
#Passed test
(troop_set_slot, ":cur_troop", ":parent_slot", ":father"),
#Set mother if not already specified
(try_begin),
(troop_slot_eq, ":cur_troop", ":other_parent_slot", -1),
(troop_get_slot, ":mother", ":father", slot_troop_spouse),
(troop_set_slot, ":cur_troop", ":other_parent_slot", ":mother"),
(try_end),
(troop_get_slot, ":father_age", ":father", slot_troop_age),
(store_sub, ":age", ":father_age", ":father_age_at_birth"),
(troop_get_slot, ":reputation", ":cur_troop", slot_lord_reputation_type),
(try_begin),
#Don't change reputation if it already has been set
(lt, ":reputation", 1),
#50% chance of having father's rep
(store_random_in_range, ":reputation", 0, 16),
(gt, ":reputation", 7),
(troop_get_slot, ":reputation", ":father", slot_lord_reputation_type),
(try_end),
(else_try),
#Average age is [45,63] minus [23,25], so [22, 38]
(store_random_in_range, ":age", 22, 39),
(troop_get_slot, ":reputation", ":cur_troop", slot_lord_reputation_type),
#Don't change reputation if it already has been set
(lt, ":reputation", 1),
(store_random_in_range, ":reputation", 0, 8),
(try_end),
#diplomacy end+
(try_end),
(try_begin),
(eq, ":reputation", 0),
(assign, ":reputation", 1),
(try_end),
(troop_set_slot, ":cur_troop", slot_lord_reputation_type, ":reputation"),
(call_script, "script_init_troop_age", ":cur_troop", ":age"),
(try_end),
(try_begin),
(eq, "$cheat_mode", 1),
(assign, reg3, "$cheat_mode"),
(display_message, "@{!}DEBUG -- Assigned lord reputation and relations"),
# (display_message, "str_assigned_lord_reputation_and_relations_cheat_mode_reg3"), #This string can be removed
(try_end),
# (try_for_range, ":cur_troop", pretenders_begin, pretenders_end),
# (troop_set_slot, ":cur_troop", slot_troop_occupation, slto_inactive_pretender),
# (store_random_in_range, ":age", 25, 30),
# (troop_set_slot, ":cur_troop", slot_troop_age, ":age"),
# (eq, ":cur_troop", "trp_kingdom_5_pretender"),
# (troop_set_slot, ":cur_troop", slot_troop_age, 45),
# (try_end),
]),
Но вот раздается не так, как надо: некоторые леди остаются без лордов; лордам раздаются леди из не своих королевств :( :( :cry: :cry:
Как это можно подправить??? :cry: :cry: :cry: :cry: :cry: :cry:
-
Народ, нужна помощь :embarrassed: Распишите мне, пожалуйста, как создать новый город, чтобы все хорошо работало. то есть были горожани, страж замка, тюремщик и т.д. И еще такой вопрос, можно ли как то сделать такую вещь: Сначала город разрушен, в нем никого нет, или 2-3 нпс, в меню выбрать "отстроить город за (допустим) 25 000 динаров" после этого ждем 15 (или больше дней), и появляется нормальный город со всему торговцами и прочими нпс? Буду невероятно благодарен :)
-
Народ, нужна помощь Распишите мне, пожалуйста, как создать новый город, чтобы все хорошо работало.
http://rusmnb.ru/index.php?topic=3642.75 (http://rusmnb.ru/index.php?topic=3642.75)
Читай с ответа №79 и дальше.
Сначала город разрушен, в нем никого нет, или 2-3 нпс, в меню выбрать "отстроить город за (допустим) 25 000 динаров" после этого ждем 15 (или больше дней)
Это немного сложнее.
1. Надо будет городу задать иконку "Разрушенный-город".
2. Задать гл. переменную, которая проверяет разрушен город или нет.
3. Сделать для него соответствующую сцену и меню. (Сцену не обязательно)
4. Потом в меню пункт "отстроить город" прописать - изменить значение гл. переменной, чтобы загружалось нормальное меню города и поменять иконку города на обычную.
Как-то так.
-
1) Как сделать слот для второй таверны в городе?
2) Как добавлять(в каких именно module_...) кузнеца и т. д.
-
1) Как сделать слот для второй таверны в городе?
В одном городе или во всех?
Если в одном, то добавить сцену таверны в module_scene.
В module_game_menu в меню города добавить подменю, который будет переводить во вторую таверну
В сцене города добавить портал, приписав ему номер нового меню из module_game_menu .
2) Как добавлять(в каких именно module_...) кузнеца и т. д.
module_troops.
Персонажи в сценах появляются тремя способами:
1. прописыванием в module_troops сцены.
2. set_visitors перед загрузкой сцены.
3. spawn_agent, add_reinforcements_to_entry и т.п. во время миссии.
Кузнецы в нэйтиве добавляются в сцены вторым способом. set_visitors прописывает их в сцену в module_game_menu. Какой кузнец в какую сцену определяется слотом slot_center_smithies, который инициализируется в script_game_start.
Тавернщики первым.
-
Доброго времени суток.
Подскажите пожалуйста: как сделать , чтобы отряд village-farmers для каждой фракции были свои? А то нападаешь на саранидских фермеров, а там европейские крестьяне!
-
1.Сперва, в module_troops для каждой фракции делаешь своих trp_farmer и trp_peasant_woman.
2. Потом, в module_party_templates для каждой фракции делаешь свои village_farmers.
3. Дальше, в module_scripts находишь скрипт "create_village_farmer_party" и вместо
(spawn_around_party, ":village_no", "pt_village_farmers"),
делаешь это с проверкой
(try_begin),
(eq, ":party_faction", "fac_kingdom_1"),
(spawn_around_party, ":village_no", "pt_village_farmers1"),
(else_try),
(eq, ":party_faction", "fac_kingdom_2"),
(spawn_around_party, ":village_no", "pt_village_farmers2"),
(else_try),
...
и так все фракции
...
(try_end),
Вроде, должно получиться.
-
Спасибо Котяра :), попробую сегодня, что получится расскажу!
Добавлено: 29 Сентября, 2013, 22:36
Блин что-то не получается =/
В общем сделал я вот так:
(try_begin),
(eq, ":party_faction", "fac_kingdom_1"),
(set_spawn_radius, 0),
(spawn_around_party, ":village_no", "pt_village_farmers"),
(assign, ":new_party", reg0),
(else_try),
(eq, ":party_faction", "fac_kingdom_2"),
(set_spawn_radius, 0),
(spawn_around_party, ":village_no", "pt_looters"),
(assign, ":new_party", reg0),
(else_try),
В итоге получилась каша малаша, крестьяне свадов стали вегирами по фракции, и бегали просто так, а еще из одной вегирской деревни команда крестьян побежала в Саргот, при том они были нордами!
Ну все равно спасибо.
-
Отключи строчку
(spawn_around_party, ":village_no", "pt_village_farmers"),
и вместо неё вставь:
(try_begin),
(eq, ":party_faction", "fac_kingdom_1"),
(spawn_around_party, ":village_no", "pt_forest_bandits"),
(else_try),
(eq, ":party_faction", "fac_kingdom_2"),
(spawn_around_party, ":village_no", "pt_taiga_bandits"),
(else_try),
(eq, ":party_faction", "fac_kingdom_3"),
(spawn_around_party, ":village_no", "pt_steppe_bandits"),
(else_try),
(eq, ":party_faction", "fac_kingdom_4"),
(spawn_around_party, ":village_no", "pt_sea_raiders"),
(else_try),
(eq, ":party_faction", "fac_kingdom_5"),
(spawn_around_party, ":village_no", "pt_mountain_bandits"),
(else_try),
(eq, ":party_faction", "fac_kingdom_6"),
(spawn_around_party, ":village_no", "pt_desert_bandits"),
(else_try),
(spawn_around_party, ":village_no", "pt_village_farmers"),
(try_end),
Начни новую игру
и вместо крестьян будут бегать бандиты соответствующие по нации фракциям.
Только разбойники в города не пойдут, а будут патрулировать. Потому что они разбойники.
Потом надо будет их заменить на крестьян данных фракций, как я раньше говорил.
Только, копируй "village_farmers" и заменяй название.
Надо будет ещё диалоги добавлять. Искать village_farmers и так же делать для новых отрядов фермеров.
-
В общем по вышеприведенному примеру, что то не получилась.
Поэтому я сделал так:
(try_begin),
(is_between, ":town_no", towns_begin, towns_end),
(set_spawn_radius, 0),
(eq, ":party_faction", "fac_kingdom_2"),
(spawn_around_party, ":village_no", "pt_vaegir_villagers"),
(assign, ":new_party", reg0),
(party_set_faction, ":new_party", ":party_faction"),
(party_set_slot, ":new_party", slot_party_home_center, ":village_no"),
(party_set_slot, ":new_party", slot_party_last_traded_center, ":village_no"),
(party_set_slot, ":new_party", slot_party_type, spt_village_farmer),
(party_set_slot, ":new_party", slot_party_ai_state, spai_trading_with_town),
(party_set_slot, ":new_party", slot_party_ai_object, ":town_no"),
(party_set_ai_behavior, ":new_party", ai_bhvr_travel_to_party),
(party_set_ai_object, ":new_party", ":town_no"),
(party_set_flags, ":new_party", pf_default_behavior, 0),
(store_sub, ":item_to_price_slot", slot_town_trade_good_prices_begin, trade_goods_begin),
(try_for_range, ":cur_goods", trade_goods_begin, trade_goods_end),
(store_add, ":cur_good_price_slot", ":cur_goods", ":item_to_price_slot"),
(party_get_slot, ":cur_village_price", ":village_no", ":cur_good_price_slot"),
(party_set_slot, ":new_party", ":cur_good_price_slot", ":cur_village_price"),
(try_end),
(assign, reg0, ":new_party"),
(try_end),
(извиняюсь не знаю как делать флажок скрытно)И так для каждой фракции. Просто строки после (assign, ":new_party", reg0), это и есть команды торговли фермерам, а new_party насколько я понял переменная. Вот и получается после каждого скрипта-спауна идут команды для каждого типа фермеров отдельно, и они торгуют. :)
Кстати там в диалогах не совсем обязательно копировать с village_farmers, единственное что, репутация у фракции не портится после нападения на них.
Добавлено: 02 Октября, 2013, 00:45
Я заменил village_farmers для каждой фракции, а также их диалоги, но для идеальности хочется сделать для каждой фракции свои village_defenders. Тероитечски я почти придумал как это сделать, а именно в module_scripts там где строки:
(call_script, "script_refresh_village_defenders", ":village_no"),
(call_script, "script_refresh_village_defenders", ":village_no"),
(call_script, "script_refresh_village_defenders", ":village_no"),
(call_script, "script_refresh_village_defenders", ":village_no"),
добавить строки:
(call_script, "script_refresh_village_defenders2", ":village_no"),
(call_script, "script_refresh_village_defenders2", ":village_no"),
(call_script, "script_refresh_village_defenders2", ":village_no"),
(call_script, "script_refresh_village_defenders2", ":village_no"),
далее создаю скрипт "script_refresh_village_defenders2":
("refresh_village_defenders2",
[
(store_script_param_1, ":village_no"),
(assign, ":ideal_size", 50),
(try_begin),
(party_get_num_companions, ":party_size", ":village_no"),
(lt, ":party_size", ":ideal_size"),
(party_add_template, ":village_no", "pt_looters"),
(try_end),
]),
Вот только вопрос в том: как сделать, чтобы команда:(call_script, "script_refresh_village_defenders2", ":village_no"),
, была прикреплена именно скажем к ''fac_kingdom_2''?
-
Всем доброго времени суток :)
Вопрос вот в чем: как сделать, чтобы в замках нанимались более лучшие войска, чем в деревне? А точнее, где находится меню замка(когда уже заехали внутрь него) в module_game_menus, и как перенести в него строку recruit_volunteers?
В остальном я думаю разберусь как сделать скрипты, для этой команды.
-
Ну так вызов его сделать и всё из меню(просто пункт в меню) так же как в деревне. На Тайлевордс где есть или в ОСП или в учебниках в разделе это уже готовое
-
Strannuck (http://rusmnb.ru/index.php?action=profile;u=29687), почитай тут (http://forums.taleworlds.com/index.php/topic,202029.0.html).
-
Спасибо, все сделал. :)
Правда нанимаются они только когда замок твой!
Добавлено: 06 Октября, 2013, 04:06
Всем привет.
Подскажите пожалуйста, кто знает, как сделать, чтобы можно было допустим в меню лагеря выбирать культуру?
-
Блин, никто не знает?! :(
Подскажите хотя бы скрипт изменяющий фракцию игрока. И надо ли для этого создавать новый скрипт в module_scripts, или можно module_game_menus обойтись?
-
"$players_kingdom" - просто пишешь в эту переменную идентификатор фракции.
Так:
(assign, "$players_kingdom", "fac_фракция"),
А культара присваивается как-то так:
(faction_set_slot, "fac_player_supporters_faction", slot_faction_culture, "fac_culture_1"),
-
Спасибо, попробую через module-game-menus в меню лагеря. :) Просто я сделал скрипты, чтобы можно было в городах и замках нанимать проф. юнитов, а когда захватываешь город там по умолчанию нанимаются свадийские юниты.
-
Подскажите где взять модульную систему на варбанд 1.158?
-
http://www2.taleworlds.com/en/Games/Warband/Download (http://www2.taleworlds.com/en/Games/Warband/Download)
-
Где можно почитать про module_presentations.py? Как создавать и использовать свои презентации, разбор записей и т.д.
-
Ну всё что есть есть в этом разделе http://rusmnb.ru/index.php?board=9.0 (http://rusmnb.ru/index.php?board=9.0) и в этом на английском в презентациях на форуме на нашем больше всех разбирается Уханич, но он ушёл на покой http://forums.taleworlds.com/index.php?board=64.0 (http://forums.taleworlds.com/index.php?board=64.0)
-
больше всех разбирается Уханич, но он ушёл на покой
Печаль. Я как раз в его скрипте (http://rusmnb.ru/index.php?topic=16794.0) пытаюсь разобраться, может получится с этого сделать возможность грабить магазины.
-
есть инструмент по упрощенному созданию презентаций на талевордсе. не помню где лежит.. косячный немного, но позволяет не парить мозг с координатами контейнеров.
Гидеон (http://rusmnb.ru/index.php?action=profile;u=22971), ничего сложного в этом файле нет. много глобальных переменных, но это названия контейнеров. каждый вид контейнера задается операцией. ( слайдер, поле текста, прокрутка). текст что будет туда помещен тоже.
указывается размер и позиция на экране. отсчет от нуля левый нижний угол.
все действия в триггерах. в каком случае применять какой расписывал в справочнике.
найдите скриптик тот.. и сделайте пустой бокс и проверяйте операции , можно запуск сделать прямо при старте игры вашей презентации.
-
есть инструмент по упрощенному созданию презентаций на талевордсе. не помню где лежит.. косячный немного, но позволяет не парить мозг с координатами контейнеров.
Гидеон ([url]http://rusmnb.ru/index.php?action=profile;u=22971[/url]), ничего сложного в этом файле нет. много глобальных переменных, но это названия контейнеров. каждый вид контейнера задается операцией. ( слайдер, поле текста, прокрутка). текст что будет туда помещен тоже.
указывается размер и позиция на экране. отсчет от нуля левый нижний угол.
все действия в триггерах. в каком случае применять какой расписывал в справочнике.
найдите скриптик тот.. и сделайте пустой бокс и проверяйте операции , можно запуск сделать прямо при старте игры вашей презентации.
По сути, каждому контролу присваевается деструктор в виде глобальной переменной(Почти как в WinAPI). Через него и управляют контролом.
-
Вопрос: можно ли через модульную систему отключить показ очков и оставшегося времени в мультиплеере (говорю про наполеоник)? Очки - те, которые отображаются рядом с флагами команд в левом верхнем углу, время - в правом.
Сам копался в модульке - как я понял за вывод на экран этих значений отвечают {reg..} в файле strings. как определить какая из строчек отвечает именно за те цифры? и как заставить не выводить их?
-
Доброе время суток,друзья!!!Подскажите пожалуйста,я создал через модульку отряд,который в игре будет играть роль разбойников типа Морских Пиратов и Воров путем копирования морских пиратов и редактируя его,но незнаю как сделать что бы мои отряды моявились в игре,как задать точку где они будут появляться...???Буду очень благодарен...!!!Спасибо!!!
-
Здравствуйте,скажите,что такое Модульная Система мода(я очен не просвящённый в этих делах,но есть желание!)
-
http://rusmnb.ru/index.php?topic=15189.0 (http://rusmnb.ru/index.php?topic=15189.0)
-
Помогите!
Пытался в свой мод добавить обезглавливание. Вроде,всё правильно добавил,стартовый батник ошибок не выдавал. После этого,в игре убралась кровь при ранении,а появился снег,который выпадает в момент ранения. Убрал из партикла всё добавленное. Захожу - в игре,при ранении,какой-то белый пар. И каков же исход:
Какой-то пар и нет обезглавливания.
Прошу,если кто знает - ответьте!
-
Попробуй спросить у "Перевоспитаный Доктор". У него в Моде есть обезглавливание.
http://rusmnb.ru/index.php?action=profile;u=25819 (http://rusmnb.ru/index.php?action=profile;u=25819)
-
Привет народ. Как зареспить на сцене трупс который будет атаковать гг? Пытался по аналогии с ареной но не получилось. Понятно что через модуле гейм меню но как именно это для меня загадка. Сцена не города не деревни.а как бы нейтральная .с наступившим вас.!
-
парни расскажите как вернуть женитьбу в Rus XIII
-
Всем привет! У меня к добрым мастерам вот такой вопрос:
Можно ли придать конкретному лорду отдельный, отличный от общефракционного, набор войск? К примеру, если у меня есть фракция Гондор, которой принадлежит город Дол Амрот со своим лордом, могу ли я сделать так, чтобы гарнизон этого города и армия этого лорда состояли исключительно из специальных Дол-Амротских парней в блестящих доспехах и синих плащах, не представленных ни в одной другой армии?
Если отойти от этого примера: возникало же у кого-нибудь желание придать одному лорду сплошных лучников, другому - одну кавалерию, а третьему - всего вперемешку? Та же проблема, как понимаете.
Тот же вопрос (потенциально более дурацкий) хотелось бы задать про стражу в городе - можно ли ее задавать своевольно для каждого отдельного города, или она задается на уровне фракции и этого уже никак не поменять? Все-таки не хотелось бы, чтобы в "моде", намекающем на чрезвычайное разнообразие игрового мира и так далее, стражники были везде одинаковые.
-
healhound
Вообще-то, линейки войск приписаны фракциям. Вернее их культурам.
Но при большом желании можно сделать и так, как ты хочешь.
Один из способов - в module_simple_triggers добавить тригер, который будет каждый час (или чаще) проверять войска нужного города и заменять не родные на родные того же уровня.
А со стражниками вообще просто.
1. Сперва надо создать их для каждого города свои в module_troops.
2. В module_game_menus в меню "town_center" там где прописаны охранники, а так же страж замка и тюрьмы - расписать своих для каждого города отдельно.
И всё.
-
FinGall, большое спасибо! попробую.
-
Создал тему а потом прочитал... ну как всегда.
Меня интересует в это:
У гильд мастера можно спросить "как идёт торговля?", на что он ответит разными товарами и процентом на их стоимость(Обычно меньше 110.0% не показывает).
Так вот я хочу к цене товара, в скобках ещё добавить этот процент.
Пример:
Красители 200(100.0%), идём в др город а там они дорогие 400(200.0%) или дешёвые 100(50.0%)
Вопрос 1.
Как можно внедрить эту формулу в игру:
(Итоговая цена за товар умножить на 100 и поделить на базовую цену)= (результат%) ?
Вопрос 2.
Как отобразить строку с этим результатом рядом с ценой предмета?
В файлах перевод было вот так: ui_price|Цена: %d
-
Простите если вопрос уже был (хотя поиск результата не дал).
Как в модульную систему грузануть готовый мод, чтобы изменить некоторые параметры в нем?
То есть я поставил модульную систему, прописываю путь к моду в ней, запускаю build_module.bat ... и на этом модульная система ломает весь мод меняя его файлы на свои. Как сделать чтобы этот процесс запустился задом наперед? То есть чтобы система не заменяла файлы мода своими, а считала с них инфу?
ПС. если что, пытаюсь подредактировать Prophesy of Pendor 3.611
-
Как в модульную систему грузануть готовый мод, чтобы изменить некоторые параметры в нем?
никак.
build_module переводиться как - построить модуль.
Т.е. ты строишь модуль на основе того, что у тебя имеется.
А т.к. скорее всего у тебя модульная система от "натива" - то и на выходе у тебя получается "натив"
Т.е. редактировать готовые моды можно только через текстовик.
-
banner20
Можно попытаться декомпилировать файлы мода с помощью WMD.
Получится МС этого мода. Только надо туда скопировать build_module и остальные файлы из МС Нативы.
http://rusmnb.ru/index.php?topic=17294.0 (http://rusmnb.ru/index.php?topic=17294.0)
Правда, у меня антивирусы воспринимают WMD, как вирус. Приходится их отключать перед использованием.
-
Т.е. редактировать готовые моды можно только через текстовик.
А где в модуле хранятся данные о размере партий, если известно что они точно были закодированы в питоне? (то что в scripts.txt - не помогает, размеры партий остаются как были)
Можно попытаться декомпилировать файлы мода с помощью WMD.Получится МС этого мода. Только надо туда скопировать build_module и остальные файлы из МС Нативы.[url]http://rusmnb.ru/index.php?topic=17294.0[/url] ([url]http://rusmnb.ru/index.php?topic=17294.0[/url])
ошибка, просит х86 систему :(
-
Тут проблема все делал как сказано в уроке модульной системы все работает но вот когда я цепляю М к моду вообще любому и и открываю для редактирования например module_items то у меня загружается вместо модифицированного item обычный нативовский, хотя в module_info прописал путь к моду как исправить?
-
Подскажите,как в модульной системе WFaS перенести лордов и города из одной фракции в другую (извиняюсь если вопрос не в теме)
-
Честно говоря, я не знаю что такое WFaS. Но если лорды не распределяются по фракциям во время загрузки игры, можно поменять у лорда фракцию в module_troops. И там же переставить этого лорда между лордов нужной фракции.
А что касается городов, в Нативе они распределяются во время загрузки. В module_scripts в скрипте "game_start" начиная со строки:
#Give centers to factions first, to ensure more equal distributions
Можно поменять там, но если если дальше этот город распределяется конкретному лорду, то фракция города будет та же что и у лорда. (и у относящихся к этому городу деревень тоже).
-
Здравствуйте премногоуважаемые форумчане,
я тут сделал перевод кратких описаний module-файлов модульной системы,
но пока плохо в ней разбираюсь и хотел бы, чтобы меня поправили если я где-то ошибся:
mission-templates.py
1) Идентификитор миссии, используется для ссылки на миссию из прочих .ру файлов (при ссылке употребляется с префиксом mt_).
2) Флаги миссии (список доступных флагов в файле header_mission-templates.py - они там рассортированы по кучкам).
3) Тип миссии (по умолчанию используется тип "встреча партий", она может быть: 'charge' (атака), 'charge_with_ally' (атака с союзником), в прочих случаях '-1') (смотрите файл header_mission_types.ру).
4) Текст описания миссии.
5) Список записей касающихся появления юнитов, каждый список включает в себя:
5.1) Номер точки входа (в сцене) в которой появится юнит,
5.2) spawn flags (Флаги появления),
5.3) alter flags, по всей видимости служат для выборочной очистки слотов с используемыми предметами у юнитов,
5.4) ai flags , похоже касаются приоритетов поведения юнитов управляемых искусственным интелектом,
5.5) Колличество юнитов для появления,
5.6) Перечень снаряжения для появляющегося(ихся) (не более 8-ми предметов).
6) Список используемых триггеров (смотрите файл module_triggers.py).
module_dialogs.ру
В процессе диалога линии диалогов считываются игрой сверху-вниз.
Ежели линия диалога принадлежит игроку, то подчинённые линии выводятся на экран ввиде вариантов ответа.
Ну а если линия диалога принадлежит кому-то другому, то в силу первого правила игра автоматически останавливает выбор на первом (самом верхне) варианте.
1) Здесь приводится тот, с которым игрок будет вести диалог.
Обычно это идентификатор юнита (troop-id). Возможно также употреблять здесь идентификатор партии добавляя перед ним 'party_tpl|'.
Чтобы сделать диалог потенциально доступным через любые юниты/партии (чтобы не совсем через любые надо дописывать условия в блок условий)
используется 'anyone'. После добавляется '|plyr', если линия диалога должна принадлежать игроку (персонаж игрока говорит) и
'|other(troop_id)', если линия диалога принадлежит другому лицу (конечно это "лицо" должно присутствовать в сцене).
2) Стартовые установки диалога. Здесь указывается то, чем вызван диалог:
При встрече с партией на глобальной карте - "start",
При разговоре с NPC в городе - "start",
После помощи в бою другой партии - "party_relieved",
После освобождения пленника - "prisoner_liberated",
После победы над партией противника - "enemy_defeated",
Если диалог вызван триггером - "event_triggered".
3) Блок условий (похоже может содержать самые разные операции, т.е. не только условия) (список доступных операций в файле header_operations.py).
4) Текст диалога.
5) Установки конца диалога. If a dialog line is picked, the active dialog-state will become the picked line's ending dialog-state.
6) Блок последствий (список доступных операций в файле header_operations.py).
7) Здесь может быть указано имя звукового файла.
module_factions.py
1) Идентификатор фракции, используется для ссылки на фракцию из прочих .ру файлов (при ссылке употребляется с префиксом fac_).
2) Название фракции (которое будет отображаться в игре).
3) Флаги фракции (список доступных флагов в файле header_factions.py).
4) Слаженость действий членов фракции (похоже варьируется от 1.0 до -1.0).
5) Список отношений с другими фракциями:
5.1) Фракция с которой устанавливаются отношение,
5.2) Значение отношений (от 1.0 до -1.0).
6) Состав (ranks).
7) Цвет фракции (по умолчанию - серый).
module_info_pages.py
1) Идентификатор описания, используется для ссылки на описание из прочих .ру файлов (при ссылке употребляется с префиксом ip_).
2) Название описания (отображается на экране описаний).
module_meshes.py
1) Идентификатор модели, используется для ссылки на модель из прочих .ру файлов (при ссылке употребляется с префиксом mesh_).
2) Флаги модели (список доступных флагов (он там один) в файле header_meshes.py).
3) Имя ресурса модели.
4) Смещение модели по оси x.
5) Смещение модели по оси y.
6) Смещение модели по оси z.
7) Поворот модели относительно оси x.
8) Поворот модели относительно оси y.
9) Поворот модели относительно оси z.
10) Растяжение модели по оси x.
11) Растяжение модели по оси y.
12) Растяжение модели по оси z.
Все вышеперечисленные операции автоматически производятся над моделью сразу после её загрузки.
module_music.py
1) Идентификатор трека, используется для ссылки на трек.
2) Имя файла трека.
3) Флаги трека (список доступных флагов в файле header_music.py).
4) Флаги продолжительности трека, которые указывают на ситуации или места в которых трек будет продолжать проигрываться
(список доступных флагов в файле header_music.py).
module_particle_systems.py
1) Идентификатор визуального эффекта, используется для ссылки на эффект из прочих .ру файлов (при ссылке употребляется с префиксом psys_).
2) Флаги визуального эффекта (список доступных флагов в файле header_particle_systems.py).
3) Имя модели (в brf архиве).
4) Колличество частиц испускаемых в секунду.
5) Продолжительность жизни частицы (в секундах).
6) Сила трения (скорость которую частица теряет от трения).
7) Сила гравитации (отрицательная величина заставляет частицу подниматься ввысь).
8) Величина турбулентности: величина случайного разброса (в метрах).
9) Сила турбулентности: сколько частиц будут затронуты.
10, 11) Alpha keys (наверное имеется ввиду прозрачность).
12, 13) Red keys.
14, 15) Green keys.
16, 17) Blue keys.
18, 19) Scale keys (наверное имеется ввиду масштабирование).
Каждое свойство задаётся двумя keys (10-19) и каждый key содержит две записи (время, величина) (time, magnitude).
Например scale key (0.3,0.6) означает, что состояние (means) scale для каждой частицы будет 0.6 во время 0.3,
где время = 0 - открытие состояния (means) частицы, а время = 1 - завершение состояния.
Величины интерполируются в промежутке между двумя keys и остаются неизменными вне пределов keys
(The magnitudes are interpolated in between the two keys and remain constant beyond the keys).
(насколько я понял: величина - это пиковое значение силы операции (прозрачность, масштабирование или изменение цветов),
которое будет достигаться в указаное время, т.е. на приведённом выше примере: частицы станут изменяться с начала жизни (0)
по указанное время (0.3) до размеров характеризуемых величиной (0.6), затем (начиная сразу после 0.3) будут
возвращаться в исходное состояние до конца жизни (1))
20) Величина коробки в которой появляются частицы.
21) Начальная скорость частиц.
22) Случайность точек появления.
23) Скорость вращения частиц.
24) Торможение вращения (с каждой секундой).
module_parties.py
1) Идентификатор партии, используется для ссылки на партию из прочих .ру файлов (при ссылке употребляется с префиксом p_).
2) Имя партии.
3) Флаги партии (список доступных флагов в файле header_parties.py).
4) Идентификатор меню, которое используется при встрече с партией. Значение '0' используется для встречи по умолчанию.
5) Идентификатор шаблона партии. По умолчанию - pt_none.
6) Фракция.
7) Особенность поведения партии (список доступных personality modifiers в файле header_parties.py) (храбрость и агрессивность).
8) Тип искусственного интеллекта партии (в файле header_parties.py).
9) Преследуемая партия. '0' - если нет.
10) Координаты появления.
11) Состав партии:
11.1) Идентификатор юнита,
11.2) Колличество юнитов,
11.3) Флаги членов партии. Для пленников 'pmf_is_prisoner'.
12) Угол поворота (иконки на глобальной карте) по вертикальной оси (для неподвижных) (можно проигнорировать).
module_presentations.py
1) Идентификатор презентации, используется для ссылки на презентацию из прочих .ру файлов (при ссылке употребляется с префиксом prsnt_).
2) Флаги презентации (список доступных флагов в файле header_presentations.py).
3) Фон презентации (смотрите файл module_meshes.py).
4) Простые триггеры (simple triggers) и операции действующие совместно с презентацией.
module_scene_props.py
1) Идентификатор реквизита, используется для ссылки на реквизит из прочих .ру файлов (при ссылке употребляется с префиксом spr_).
2) Флаги реквизита (список доступных флагов в файле header_scene_props.py).
3) Имя 3D модели.
4) Название объекта.
5) Простые триггеры (simple triggers) и операции действующие совместно с реквизитом.
module_scenes.ру
1) Идентификатор сцены, используется для ссылки на сцену из прочих .ру файлов (при ссылке употребляется с префиксом scn_).
2) Флаги сцены (список доступных флагов в файле header_scenes.py).
3) Имя модели. Применяется только для сцен в помещении. Для сцен под открытым небом "none".
4) Имя корпуса. Применяется только для сцен в помещении. Для сцен под открытым небом "none".
5) Минимальная позиция: минимальные (x,y) координаты дающие предел для перемещения игрока.
6) Максимальная позиция: максимальные (x,y) координаты дающие предел для перемещения игрока.
(похоже 5 и 6 - две точки в углах прямоугольника лежащие на концах его диагоналей)
7) Уровень воды.
8) Код местности (его можно сгенерировать во встроенном редакторе сцен).
9) Список других сцен доступных из описываемой сцены
(внимание. это может быть изменено в новых версиях модульной системы)
(в новых модульках для перемещения между сценами используются точки входа (passages)
и the passage's variation-no is used to select the game menu item that the passage leads to).
10) Список юнитов-сундуков использующихся в сцене. Сундук можно добавить разместив его на сцене в режиме редактора.
The chest's variation-no is used with this list for selecting which troop's inventory it will access.
module_scripts.ру
1) Идентификатор скрипта, используется для ссылки на скрипт (при ссылке употребляется с префиксом script_).
2) Блок операций (список доступных операций в файле header_operations.py).
module_skills.ру
1) Идентификатор навыка, используется для ссылки на навык из прочих .ру файлов (при ссылке употребляется с префиксом skl_).
2) Название навыка.
3) Флаги навыка (список доступных флагов в файле header_skills.py).
4) Максимальный уровень навыка.
5) Описание навыка (отображается в окне персонажа в качестве толкования навыка).
Ниже этого пояснения в файле приводится список навыков вшитых в игру.
Неиспользуемые навыки помечены флагом 'sf_inactive'.
Для добавления нового навыка надобно редактировать зарезервированные или не вшитые в игру.
module_skins.py
1) Идентификатор кожи, используется для ссылки на кожу.
2) Флаги кожи. Ещё не используется, и должно быть '0'.
3) Модель тела.
4) Модель ноги (только левая).
5) Модель руки (только левая).
6) Модель головы.
7) Face keys (касается ключевых точек лица, которые используются для его изменения)
(в файле расписаны сразу после этого описания)
8) Список моделей причёсок.
9) Список моделей растительности на лице.
10) Список текстур причёсок.
11) Список текстур растительности на лице.
12) Список текстур лица.
13) Список голосов.
14) Имя скелета (то, что обеспечивает анимацию и правильное взаиморасположение моделей).
15) Scale (наверное масштабирование) (пока что может работать неполноценно).
16) Кровь 1. Не добавляйте это чтобы оставить по умолчанию.
17) Кровь 2. Не добавляйте это чтобы оставить по умолчанию.
(эффекты кровопролития в файле module_particle_systems.py)
18) Ограничения для face keys (не добавляйте если не хотите использовать ограничения).
module_sounds.ру
1) Идентификатор звука, используется для ссылки на звук из прочих .ру файлов (при ссылке употребляется с префиксом snd_).
2) Флаги звука (список доступных флагов в файле header_sounds.py).
3) Список используемых звуковых файлов (похоже один из них каждый раз выбирается случайно).
module_tableau_materials.ру
(как я понял изначальные записи этого файла отвечают за смену частей текстур на геральдическом снаряжении, баннерах и может ещё чего)
1) Идентификатор сменной текстуры, используется для ссылки на сменную текстуру из прочих .ру файлов (при ссылке употребляется с префиксом tab_).
2) Флаги сменной текстуры (список доступных флагов в файле header_tableau_materials.py).
3) Имя шаблона материала (не понимаю - что это).
4) Ширина сменной текстуры.
5) Высота сменной текстуры.
6) Tableau mesh min x (int): divided by 1000 and used when a mesh is auto-generated using the tableau material.
7) Tableau mesh min y (int): divided by 1000 and used when a mesh is auto-generated using the tableau material.
8) Tableau mesh max x (int): divided by 1000 and used when a mesh is auto-generated using the tableau material.
9) Tableau mesh max y (int): divided by 1000 and used when a mesh is auto-generated using the tableau material.
10) Блок операций (список доступных операций в файле header_operations.py).
Блок операций будет выполнен когда активируется сменная текстура.
(здесь я обзавал "tableau" сменной тектурой - не знаю как будет правильно)
Высота баннера - 200, ширина с древком - 85, без древка - 75.
Описания файлов module_tableau_materials.ру и module_postfx.ру вообще непонял.
И ещё, не может-ли кто дать конкретных ссылок на описания флагов из header-файлов?
Заранее огромное спасибо.
-
Ещё раз приветствую всех. Не подскажет-ли кто: идентификатор(ы) нужного(ых) агента(ов) можно получить только через try_for_agents и далее путём отсеивания или же каждый агент в сцене имеет конкретный заранее известный идентификатор, который сразу возможно употреблять в операциях для агентов?
Заранее благодарю.
-
Вопрос снят. Пост ликвидирован.
-
Простите, может я чего-то не понимаю, но разве "])" не закрывают блок операций и скрипт целиком соответственно и стало быть, скрывая их от ведения аппарата вы допускаете ошибку, потому как это нарушает структуру скрипта, может зря вы поставили "#" в начале этой последней строки?
Может я не точно выразился.
Если перекрывать скрипт целиком, то ведь нужно убирать ото всюду ссылки на него (call_script...).
Можно прочистить только его блок операций (то, что в [] ).
-
Простите, может я чего-то не понимаю, но разве "])" не закрывают блок операций и скрипт целиком соответственно и стало быть, скрывая их от ведения аппарата вы допускаете ошибку, потому как это нарушает структуру скрипта, может зря вы поставили "#" в начале этой последней строки?
Может я не точно выразился.
Если перекрывать скрипт целиком, то ведь нужно убирать ото всюду ссылки на него (call_script...).
Можно прочистить только его блок операций (то, что в [] ).
Нет, - ошибка не в этом была (и не могла в этом быть). В любом случае я разобрался и всё исправил, - теперь работает корректно. Вопрос снимается.
-
Ещё раз приветствую всех. Не подскажет-ли кто: идентификатор(ы) нужного(ых) агента(ов) можно получить только через try_for_agents и далее путём отсеивания или же каждый агент в сцене имеет конкретный заранее известный идентификатор, который сразу возможно употреблять в операциях для агентов?
Заранее благодарю.
Заранее в каком смысле?
Идентификатор агента определяется при появления агента на сцене и фиксируется за ним до уничтожения сцены.
Момент появления агента можно отследить через триггеры.
-
В troop есть (уже прописаны но не активны в игре) чёрные всадники кергиты и ещё конные рыцари (по три всадника каждых, - то есть всего шесть).
Я хочу активировать их в моде как дополнительные банды (по мимо имеющихся), вроде как не большие набеги в Кальрадии.
Мне подсказали что : Можно их добавить в скрипт "spawn_bandits". Это в module_scripts.
Только их надо прописать к фракции (минорной), чтобы они знали с кем воевать.
ВОПРОС : как конкретно (пошагово, что, как, где) брать, вписывать, добавить в скрипт "spawn_bandits" в module_scripts. ???
В party_templates они так прописаны :
pt_black_khergit_raiders Black_Khergit_Raiders 562949953421320 0 7 312 192 2 20 0 193 6 14 0 191 10 10 0 -1 -1 -1
pt_dark_hunters Dark_Hunters 2 0 6 137 196 4 22 0 195 10 20 0 194 13 25 0 -1 -1 -1
(соответственно в troop их номера : 191, 192, 193, 194, 195, 196.)
-
Помогите, как сделать, чтобы отдых(остаться в городе на ночлег) брался в таверне у трактирщика за плату от 7 до 15 динаров за 1 человека. В какие модуле что писать? буду очень благодарен.
-
В диалогах прописывать.
Прописывать почти тоже, что прописано в game_menu для пункта меню отдых в городе.
-
А как поменять "класс" войск - пехота, лучники, кавалерия? А то у меня кавалерия получилась лучниками.
-
Я бы добавил в конце скрипта "game_start".
(troop_set_class, <troop_id>, <value>),
Классы войск <value> от 0 до 8.
0 - пехота.
1 - стрелки.
2 - конница.
3...8 - пользовательские.
-
Эээмммм....
Добавлять новый класс мне пока не нужно.
У меня есть кавалерия а класс у них лучники (и кстати пехота тоже - лучники :crazy:). Наверно что-то лишнее прописал в модульке (сейчас нет под рукой) вроде - all_..._ranged?
-
Может кто-нибудь дать развернутый ответ как добавить в мод товары чтоб они продавались, а то я добавил палатки а на них вес другой написан например
["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кг как поправить.
-
Может кто-нибудь дать развернутый ответ как добавить в мод товары чтоб они продавались, а то я добавил палатки а на них вес другой написан например
["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.
Но одним хитрым способом можно сделать больше. Но тогда надо модульку переписать.
Добавлено: 06 Мая, 2014, 21:52
Тут возникла проблема.
Мне нужно создать обычную крепость, какими являются другие.
Но нужно сделать ее ничейной <=> без лорда, я пробовал отдать ee fac_outlaws, fac_neutral, no_faction.
Но данная крепость принадлежит Player Faction, а ее лорд - игрок.
Как сделать ее ничейной?
-
В модульной системе максимальный компилируемый вес предмета 255 / 4 = 63,75.
Спасибо не знал, буду думать.
-
Тут возникла проблема.
Мне нужно создать обычную крепость, какими являются другие.
Но нужно сделать ее ничейной <=> без лорда, я пробовал отдать ee fac_outlaws, fac_neutral, no_faction.
Но данная крепость принадлежит Player Faction, а ее лорд - игрок.
Проще всего расположить запись с добавленным вне пределов указанных в module_constants (towns_begin, castles_begin, towns_end...), короче говоря после salt_mine. А в скриптах отвечающих за распределение я ещё толком не разбирался.
-
Проще всего расположить запись с добавленным вне пределов указанных в module_constants (towns_begin, castles_begin, towns_end...), короче говоря после salt_mine. А в скриптах отвечающих за распределение я ещё толком не разбирался.
Так нельзя.
Мне нужно расположить внутри castles_begin и castles_end.
-
Тогда могу предложить следующее: в конце скрипта game_start вставьте вот это
(party_set_slot, "<идентификатор вашего замка>", slot_center_ex_faction, fac_neutral),
И хочу спросить... Я пишу скрипт, скрипт большой и с логическими ошибками. Чтобы было легче разобраться с ошибками решил отмониторить то, когда и какие значения будут принимать его переменные с помощью сообщений (которые записываются в журнал истории). Но журнал едва-ли вмещает то, что я желаю в нём увидеть. ...Так как его расширить, не подскажете?
...Так вот, отмониторил я его переменные (пришлось частями) и выяснилось, что у некоторых конструкций try_begin проверяются только первые несколько блоков (не выполняется даже то, что непосредственно после else_try). Скажем, вот эту конструкцию (try_begin),
(display_message, "@b1."),
(this_or_next|eq, ":rele", 0),
(eq, ":rele", 2),
(ge, ":suit", ":width"),
(val_add, ":rele", 2),
(assign, ":suit", 0),
(else_try),
(display_message, "@b2."),
(this_or_next|eq, ":rele", 1),
(eq, ":rele", 3),
(ge, ":suit", ":length"),
(val_add, ":rele", 2),
(assign, ":suit", 0),
(else_try),
(display_message, "@b3."),
(eq, ":block", 3),
(neq, ":slip_width", 0),
(eq, ":slip_length", 0),
(assign, ":block", 1),
(assign, ":radius", 1),
(else_try),
(display_message, "@b4."),
(eq, ":block", 3),
(eq, ":slip_width", 0),
(neq, ":slip_length", 0),
(assign, ":block", 2),
(else_try),
(display_message, "@b5."),
(eq, ":block", 3),
(neq, ":slip_width", 0),
(neq, ":slip_length", 0),
(assign, ":block", 0),
(assign, ":spire", 2),
(else_try),
(display_message, "@b6."),
(eq, ":block", 3),
(eq, ":slip_width", 0),
(eq, ":slip_length", 0),
(assign, ":block", 0),
(assign, ":spire", 1),
(assign, ":rele", 2),
(else_try),
(display_message, "@b7."),
(ge, ":suit", ":spire"),
(assign, ":suit", 1),
(val_add, ":rele", 1),
(try_begin),
(display_message, "@b8."),
(eq, ":block", 0),
(gt, ":rele", 3),
(val_add, ":spire",2),
(val_add, ":radius",1),
(assign, ":rele", 0),
(else_try),
(display_message, "@b9."),
(eq, ":block", 1),
(try_begin),
(eq, ":rele", 2),
(val_sub, ":spire", 1),
(val_add, ":radius",1),
(else_try),
(display_message, "@b10."),
(this_or_next|eq, ":rele", 1),
(eq, ":rele", 3),
(val_add, ":spire", 1),
(val_sub, ":radius", 1),
(else_try),
(display_message, "@b11."),
(gt, ":rele", 3),
(val_add, ":spire",1),
(val_add, ":radius",2),
(assign, ":rele", 0),
(try_end),
(else_try),
(display_message, "@b12."),
(eq, ":block", 2),
(try_begin),
(display_message, "@b13."),
(eq, ":rele", 2),
(val_add, ":spire", 1),
(val_sub, ":radius", 1),
(else_try),
(display_message, "@b14."),
(this_or_next|eq, ":rele", 1),
(eq, ":rele", 3),
(val_sub, ":spire", 1),
(val_add, ":radius",1),
(else_try),
(display_message, "@b15."),
(gt, ":rele", 3),
(val_add, ":spire", 3),
(assign, ":rele", 0),
(try_end),
(try_end),
(try_end),
я даже вытащил из скрипта и разместил обособленно... ...Вместо того, чтобы заканчиваться на третьем else_try теперь почему-то заканчивался на шестом. В силу каких-таких правил, интересно, такое происходит?
Ясно: надо было и тестировать как скрипт, а не пихать в триггер для миссии (они похоже не рассчитаны на объёмные конструкции).
-
Помогите кто-нибудь, пожалуйста. Как я уже сказал, пишу скрипт (для построения юнитов различными строями). В конце скрипта у меня два цикла, для расчёта позиций и для поиска наиболее подходящего для позиции агента, один в другом (изначально расположил цикл для подбора агента в цикле для расчёта позиций). В цикле по агентам, как только находился более подходящий агент, происходила перепись его идентификатора из одной переменной в другую (похоже, что такое можно делать только в mission_templates), из которой брался идентификатор для скриптования.
...
(get_distance_between_positions, ":distance_1", ":position", ":target_position"),
(lt, ":distance_1", ":distance_2"),
(assign, ":distance_2", ":distance_1"),
(assign, ":agent_2", ":agent"),
(try_end),
(agent_set_scripted_destination, ":agent_2", ":target_position", 1),
(assign, ":distance_2", 100000),
(try_end),
На деле игра (как раз на этом-самом скриптовании) жаловалась на инвалидский идентификатор агента.
...Этот вариант в любом случае не подойдёт, т. к. будет сложновато (если вообще возможно) исключить для цикла идентификаторы уже заскриптованых агентов (в случае ежели они и до этого находились в заскриптованом состоянии). Посему решил сделать по-другому. Но ежели просто поменять циклы местами (внутри цикла по агентам цикл для расчёта позиций), то получается, что для каждого агента будут персонально просчитываться одни и те же позиции.
Вот если бы разместить эти циклы отдельно один от другого: в первом позиции рассчитываются и записываются в регистры позиций, скажем с pos66 по pos109, а во-втором агенты будут по-очереди примеряться на каждую позицию и скриптоваться на более подходящую из них. Просто я не могу сообразить, как можно было бы осуществить запись расчётов на каждой интерацие в новый регистр.
-
Есть следующее меню:
("town_recrut_unique_troops",0,
"Recruting {s20}.",
"none",
[
(party_get_slot, ":trp", "$current_town", slot_town_unique_troop),
(str_store_troop_name_plural, s20, ":trp"),
],
[
("recrut_all",
[
(party_get_slot, ":num", "$current_town", slot_town_num_unique_troop),
(store_troop_gold, ":gold", "trp_player"),
(assign, "$cpp_req_gold", ":num"),
(val_mul, "$cpp_req_gold", 200),
(assign, reg0, "$cpp_req_gold"),
(gt, ":num", 0),
(troops_can_join, ":num"),
(ge, ":gold", "$cpp_req_gold"),
], "Recrut all ({reg0} denars)",
[
(party_get_slot, ":trp", "$current_town", slot_town_unique_troop),
(party_get_slot, ":num", "$current_town", slot_town_num_unique_troop),
(party_add_members, "p_main_party", ":trp", ":num"),
(troop_remove_gold,"trp_player","$cpp_req_gold"),
(party_set_slot, "$current_town", slot_town_num_unique_troop, 0),
(jump_to_menu, "mnu_town"),
]
),
("recrut_one",
[
(party_get_slot, ":num", "$current_town", slot_town_num_unique_troop),
(store_troop_gold, ":gold", "trp_player"),
(gt, ":num", 0),
(troops_can_join, 1),
(ge, ":gold", 200),
], "Recrut one (200 denars)",
[
(party_get_slot, ":trp", "$current_town", slot_town_unique_troop),
(party_get_slot, ":num", "$current_town", slot_town_num_unique_troop),
(party_add_members, "p_main_party", ":trp", 1),
(troop_remove_gold,"trp_player", 200),
(val_sub, ":num", 1),
(party_set_slot, "$current_town", slot_town_num_unique_troop, ":num"),
]
),
("go_back",[],"Forget it.",
[
(jump_to_menu, "mnu_town"),
]),
]
),
Интересует пункт recrut_all: По слоту slot_town_num_unique_troop хранится значение 4. Но на экране отображается Recrut all (184 denars) вместо Recrut all (800 denars). Но деньги у игрока забирает как надо т.е 800 динаров. В чем ошибка???? :-\ :-\ :-\ :-\ :-\ :-\ :-\ :-\ :-\ :-\
-
Ошибка в том, что блок команд пункта меню выполняется после активация этого пункта меню.
А строки формируются раньше.
Нужно вычисления, сколько будет стоит найм всех, перенести в блок команд всего меню.
Куда-то сюда
[
(party_get_slot, ":trp", "$current_town", slot_town_unique_troop),
(str_store_troop_name_plural, s20, ":trp"),
],
Добавлено: 18 Мая, 2014, 02:04
...Этот вариант в любом случае не подойдёт, т. к. будет сложновато (если вообще возможно) исключить для цикла идентификаторы уже заскриптованых агентов (в случае ежели они и до этого находились в заскриптованом
Слоты агентов вам в помощь.
-
Благодарю, Rongar. Возьму слот slot_agent_courage_score - всё равно собираюсь держать всех и постоянно в заскриптованом состоянии (в любом случае нужно будет попробовать добавить слотов). Теперь можно сказать, что скрипт принял нужную форму, только вот все агенты скриптуются на одну точку - ну да это уже мои проблемы (я знаю где ошибся).
-
Ошибка в том, что блок команд пункта меню выполняется после активация этого пункта меню.
А строки формируются раньше.
Нужно вычисления, сколько будет стоит найм всех, перенести в блок команд всего меню.
Куда-то сюда
[
(party_get_slot, ":trp", "$current_town", slot_town_unique_troop),
(str_store_troop_name_plural, s20, ":trp"),
],
Не помогло
("town_recrut_unique_troops",0,
"Recruting {s20}.",
"none",
[
(party_get_slot, ":trp", "$current_town", slot_town_unique_troop),
(str_store_troop_name_plural, s20, ":trp"),
(party_get_slot, ":num", "$current_town", slot_town_num_unique_troop),
(assign, "$cpp_req_gold", ":num"),
(val_mul, "$cpp_req_gold", 200),
(assign, reg0, "$cpp_req_gold"),
],
[
("recrut_all",
[
(party_get_slot, ":num", "$current_town", slot_town_num_unique_troop),
(store_troop_gold, ":gold", "trp_player"),
(gt, ":num", 0),
(troops_can_join, ":num"),
(ge, ":gold", "$cpp_req_gold"),
], "Recrut all ({reg0} denars)",
[
(party_get_slot, ":trp", "$current_town", slot_town_unique_troop),
(party_get_slot, ":num", "$current_town", slot_town_num_unique_troop),
(party_add_members, "p_main_party", ":trp", ":num"),
(troop_remove_gold,"trp_player","$cpp_req_gold"),
(party_set_slot, "$current_town", slot_town_num_unique_troop, 0),
(jump_to_menu, "mnu_town"),
]
),
("recrut_one",
[
(party_get_slot, ":num", "$current_town", slot_town_num_unique_troop),
(store_troop_gold, ":gold", "trp_player"),
(gt, ":num", 0),
(troops_can_join, 1),
(ge, ":gold", 200),
], "Recrut one (200 denars)",
[
(party_get_slot, ":trp", "$current_town", slot_town_unique_troop),
(party_get_slot, ":num", "$current_town", slot_town_num_unique_troop),
(party_add_members, "p_main_party", ":trp", 1),
(troop_remove_gold,"trp_player", 200),
(val_sub, ":num", 1),
(party_set_slot, "$current_town", slot_town_num_unique_troop, ":num"),
]
),
("go_back",[],"Forget it.",
[
(jump_to_menu, "mnu_town"),
]),
]
),
-
Возьму слот slot_agent_courage_score - всё равно собираюсь держать всех и постоянно в заскриптованом состоянии (в любом случае нужно будет попробовать добавить слотов).
Слоты можно свои добавлять. Главное чтобы номера не пересекались с уже существующими.
Не помогло
Загадка какая-то. Примеров, когда так работает по коду дофига.
Две версии осталось только
1. Сменить регистр на что-то побольше. Возможно где-то переписывается.
2. Сделать через строку
(str_store_string,s11,блабалбал{reg0}),
-
Загадка какая-то. Примеров, когда так работает по коду дофига.
Две версии осталось только
1. Сменить регистр на что-то побольше. Возможно где-то переписывается.
2. Сделать через строку
(str_store_string,s11,блабалбал{reg0}),
Я использовал другой регистр (reg60). Оно помогло
-
Подскажите на, что указывает данная ошибка, возникает через некоторое время после боя, если не заходить в села, замки, города. (всю модульную перерыл понять не могу, при срабатывание забивает лог сообшений, номера партий могут быть разные)
script error on opcode:1680:Invalid Party ID: 2769;LINE NO:10:
At Game triggers trigger no: 33 consequences.
At Game triggers trigger no: 33 consequences.
(хотя бы в общих чертах где искать)
-
script error on opcode:1680:Invalid Party ID: 2769;LINE NO:10:
At Game triggers trigger no: 33 consequences.
At Game triggers trigger no: 33 consequences.
=
сбой возникает при попытке использовать идентификатор агента в операции party_get_battle_opponent (смотрите в header_operations номер 1680) в триггере номер 33, 2769 - это насколько я понимаю значение, которое операция получила вместо идентификатора партии, и 10 - точно не знаю наверное строка в триггере.
-
Спасибо посмотрю
Добавлено: 19 Мая, 2014, 15:31
триггере номер 33
еще вопрос триггере номер 33 где искать.
Добавлено: 19 Мая, 2014, 16:18
Дикий-дикий повар
Все спасибо, нашел :thumbup:
-
Объясните мне плиз:
1. Где находить размер гарнизона замка и города, и отрядов лордов и Гг. мне нужно установить 150, 400, 100 и 100 соответственно. И отключить влияние известности и харизмы на повышение кол-ва людей в отряде, только сто, не больше.
2.Как сделать чтобы с начала игры карта была в "тумане", то есть ни замков, ни городов, ни деревень ничего не было видно, только когда Гг проезжает рядом уже появляется и остается на всегда.
3.Чтобы в деревни нанимались только крестьяне, а не новобранцы культур. И найм их зависел от известности и отношения к деревне, например: с известностью в 100 ед и отношению в 10, Гг мог нанять от 5 до 7 крестьян.
П.С. если это где-то есть, то ссылку киньте. Заранее спасибо.
-
Привет Именно он
1. Для этого тебе нужен Morghs M&B WB-WFAS Editor(скачать можно прямо с сайта если не ошибаюсь), в Party templates editor там изменяешь pt_kingdom_1_reinforcements_a, или pt_kingdom_2_reinforcements_a и всех остальных.
2. Также нужен Morghs M&B WB-WFAS Editor, в parties editor там убираешь флажок always_visible, и все.
3. Для этого тебе понадобится МС(модульная система), там в module_scripts, находишь культуру фракции и находишь:
(faction_set_slot, "fac_culture_1", slot_faction_tier_1_troop, "trp_swadian_recruit"),
изменяешь на например:
(faction_set_slot, "fac_culture_1", slot_faction_tier_1_troop, "trp_farmer"),
и т.д.
Ссылки на скачивание:
-Morghs M&B WB-WFAS Editor:
http://rusmnb.ru/index.php?action=dldir;sa=details;lid=34 (http://rusmnb.ru/index.php?action=dldir;sa=details;lid=34)
-МС(модульная система):
http://rusmnb.ru/index.php?action=dldir;sa=details;lid=185 (http://rusmnb.ru/index.php?action=dldir;sa=details;lid=185)
P.S. Здесь же на сайте можно найти как ими пользоваться
-
Дана презентация:
("janycz_notification_war_declared", 0, mesh_load_window, [
(ti_on_presentation_load, [
(presentation_set_duration, 999999),
(set_fixed_point_multiplier, 1000),
(str_store_faction_name, s1, "$g_rus_kingdom_attacker"),
(str_store_faction_name, s2, "$g_rus_kingdom_defender"),
(assign, ":mesh1", "mesh_pic_arms_rus"),
(assign, ":mesh2", "mesh_pic_arms_rus"),
(try_begin),
(eq, "$g_rus_kingdom_attacker", "fac_kingdom_2"),
(assign, ":mesh1", "mesh_pic_arms_horde"),
(else_try),
(eq, "$g_rus_kingdom_attacker", "fac_kingdom_3"),
(assign, ":mesh1", "mesh_pic_arms_poland"),
(else_try),
(eq, "$g_rus_kingdom_attacker", "fac_kingdom_4"),
(assign, ":mesh1", "mesh_pic_arms_teu"),
(try_end),
(try_begin),
(eq, "$g_rus_kingdom_defender", "fac_kingdom_2"),
(assign, ":mesh2", "mesh_pic_arms_horde"),
(else_try),
(eq, "$g_rus_kingdom_defender", "fac_kingdom_3"),
(assign, ":mesh2", "mesh_pic_arms_poland"),
(else_try),
(eq, "$g_rus_kingdom_defender", "fac_kingdom_4"),
(assign, ":mesh2", "mesh_pic_arms_teu"),
(try_end),
(create_game_button_overlay, "$g_presentation_obj_1", "@Continue"),
(position_set_x, pos1, 500),
(position_set_y, pos1, 50),
(overlay_set_position, "$g_presentation_obj_1", pos1),
(create_mesh_overlay, reg0, ":mesh1"),
(position_set_x, pos1, 250),
(position_set_y, pos1, 400),
(overlay_set_position, reg0, pos1),
(position_set_x, pos1, 4*0.294*500),
(position_set_y, pos1, 4*0.458*500),
(overlay_set_size, reg0, pos1),
(create_mesh_overlay, reg0, ":mesh2"),
(position_set_x, pos1, 750),
(position_set_y, pos1, 400),
(overlay_set_position, reg0, pos1),
(position_set_x, pos1, 4*0.294*500),
(position_set_y, pos1, 4*0.458*500),
(overlay_set_size, reg0, pos1),
(create_text_overlay, reg1, "@Declaration of War^^{s1} has declared war against {s2}!"),
(position_set_x, pos1, 500),
(position_set_y, pos1, 800),
(overlay_set_position, reg1, pos1),
#(create_text_overlay, reg1, "@Declaration of War^^{s1} has declared war against {s2}!", tf_center_justify),
# (overlay_set_color, reg1, 0xFFFFFFFF),
# (position_set_x, pos1, 500),
# (position_set_y, pos1, 875),
# (overlay_set_position, reg1, pos1),
# (position_set_x, pos1, 1000),
# (position_set_y, pos1, 1000),
# (overlay_set_size, reg1, pos1),
]),
(ti_on_presentation_event_state_change,
[
(store_trigger_param_1, ":object"),
(store_trigger_param_2, ":value"),
(try_begin),
(eq, ":object", "$g_presentation_obj_1"),
(presentation_set_duration, 0),
(try_end),
]),
]),
Вызывается следующим образом из меню reports:
("dbg_war_menu",[],"DEBUG: WAR MENU",
[
(assign, "$g_rus_kingdom_attacker", "fac_kingdom_1"),
(assign, "$g_rus_kingdom_defender", "fac_kingdom_2"),
(start_presentation, "prsnt_janycz_notification_war_declared"),
]
),
Результат на скрине mb4.jpg
Но не появляется надписть Declaration of War {s1} has declared war against {s2}!, там, где должна быть надпись (ожидание.jpg).
Как это исправить??? :-\ :-\ :-\ :-\ :-\ :-\
Добавлено: 06 Июня, 2014, 21:38
Уже исправил
-
Добрый день. Народ, подскажите в чем проблема. Использовал скрипт на разделение денег. Условно на дукаты и динары
#script_game_get_money_text:
# This script is called from the game engine when an amount of money needs to be displayed.
# INPUT: arg1 = amount in units
# OUTPUT: result string = money in text
("game_get_money_text",
[
(store_script_param_1, ":denars"),
(store_div, ":ducats", ":denars", 240),
(val_mod, ":denars", 240),
(assign, reg0, ":ducats"),
(assign, reg1, ":denars"),
(str_store_string, s1, "@{reg0} ducats and {reg1} denars"),
(set_result_string, s1),
]),
Однако, в магазинах как были цены в динарах, так и осталось. Аналогично и по еженедельным выплатам и доходам. Подскажите, в чем проблема может быть?
-
Подскажите, есть оператор который заставляет просчитать партию ее маршрут, объясняю когда мы заставляем партию при помощи назначения поведения следовать туда -то, она начинает движение по прямой к этой цели и только когда, во что-нибудь упрется (горы или реку), начинает просчитывать свой маршрут, а можно сделать чтоб сразу.
-
Подскажите, есть оператор который заставляет просчитать партию ее маршрут, объясняю когда мы заставляем партию при помощи назначения поведения следовать туда -то, она начинает движение по прямой к этой цели и только когда, во что-нибудь упрется (горы или реку), начинает просчитывать свой маршрут, а можно сделать чтоб сразу.
Оператора нет. Но ты можешь реализовать это через поиск в глубину (как в классической задаче про путника)
-
Оператора нет. Но ты можешь реализовать это через поиск в глубину (как в классической задаче про путника)
Грузить будет.
-
Оператора нет. Но ты можешь реализовать это через поиск в глубину (как в классической задаче про путника)
Грузить будет.
Согласен.
-
Заметил, одну странность, я нанял в таверне (на последние деньги) наемников, через некоторое время выдал жалование остался должен им около тысячи , в следующем бою их всех героически угробил, а долг остался, (как я понимаю они ко мне с того света ночью являются и деньги требуют), как это поправить чтоб долг соответствовал количеству бойцов и менялся когда их количество уменьшается, а то как-то неуютно, ну зачем мертвецам деньги? Может кто хорошо в бютжет презенташион разбирается или уже редактировал ее, а то я туда залез там черт ногу сломит.
-
Если уж разглядывать такие тонкости, то неплохо бы добавить: как будет происходить распределение "погашенного долга" между подопечными? Снять с крайних убитых (это будет выглядеть по меньшей мере странно)? Случайно обделить некоторых? Или обделить всех в процентах (особенно чудесно ежели в компании без торговцев: "та-а-ак, в прошлый раз я вам задолжал и раздал что было, некоторые из нас не вернулись из боя, это сколько же я должен доплатить?.. ...Эх мне бы секретаршу".)?
А что по презентации непонятно? Или надо целиком разбирать?
-
А что по презентации непонятно? Или надо целиком разбирать?
Непонятно следующее, как сделать отдельно долг который мы должны замкам и городам, и отдельно своему отряду, а то там считается все сразу в общем, и как выделить отдельно сколько мы должны отряду (где во общем самая главная текучка) не понято.
-
Найдите строку (assign, "$g_player_debt_to_party_members", ":player_new_debt_to_party_members"), - когда всё подсчитано и выведено на экран переписывает новые долги (локальная) в старые (глобальная), поскольку будем разделять, здесь понадобятся две сроки: для компании и для владений. Переменная ":player_new_debt_to_party_members" выше заполняется из reg0 и в этом же try-блоке выводится на экран, а в конце его вызывается скрипт провоцирующий реакцию компаньёнов с типом характера tmt_egalitarian. Содержимое этого блока, начиная с вывода текста и заканчивая (val_sub, ":cur_y", 27), (расстояние меж строк) надо удвоить: для вывода оплаты компании возьмите переменную ":total_wage" (в ней то, что вам нужно), для поселений ":all_centers_accumulated_taxes_and_rents" (налоги) + ":tax_lost" (потери налогов) + ":<где-нибудь после (val_add, ":net_change", ":net_profit"), сложите net_profit в новую переменную (объявите, естественно, вне цикла try_for_range)>" (производства).
Ещё что-нибудь?
-
Ещё что-нибудь?
Спасибо буду пробовать, если что спрошу.
-
В каком файле описаны характеристики оружий/брони?
-
В каком файле описаны характеристики оружий/брони?
В файле item_kinds.txt , но для того чтобы он был понятен используй это
http://rusmnb.ru/index.php?action=dldir;sa=details;lid=34 (http://rusmnb.ru/index.php?action=dldir;sa=details;lid=34)
Добавлено: 21 Июня, 2014, 17:02
Доброго времени суток.
В общем хочу сделать охоту, для этого нужно сделать всадника(на олене например) невидимым, тогда мы будем видеть только оленя и атаковать его, но когда мы его убиваем всадник же остается, а значит мы его не убили(да еще бегает невидимый).
Скажите пожалуйста следующее:
как прописать скрипт, чтобы при смерти оленя, умирал и его всадник?
-
В триггере мисси с минимальным интервалом проверяешь, есть ли у всадника
конь олень. Если оленя под всядником нет, убиваешь всадника в скрипте.
Или как вариант используешь ti_on_agent_killed_or_wounded, в нём проверяешь кто сдох, и если это олень, то... вот тут нужно будет вспомнить, кто был его всадником.
-
В триггере мисси с минимальным интервалом проверяешь, есть ли у всадника конь олень. Если оленя под всядником нет, убиваешь всадника в скрипте.
Или как вариант используешь ti_on_agent_killed_or_wounded, в нём проверяешь кто сдох, и если это олень, то... вот тут нужно будет вспомнить, кто был его всадником.
Напиши скриптами пожалуйста, буду очень благодарен. Остальное добавлю сам :)
Добавлено: 22 Июня, 2014, 14:46
Доброго времени суток.
Подскажите пожалуйста, как сделать так: чтобы лорды определенной фракции никогда не переметнулись?
-
Может-ли кто помочь со скриптом? Ежели есть на то время, конечно (не хочу никого отвлекать от чего бы там ни было). Ежели можете - напишите ЛС.
Разобрался.
-
Для чего нужны в модульной (И.Г. Custom Commander) файлы -
_project
build_module_check_tags
build_ms_acp
-
Такой вопрос: пехотинец вооружён пикой и саблей, в бою использует только саблю. Как заставить использовать пику в бою? П.С. пика тяжелее и дороже.
И ещё: как-нибудь можно сделать "наименование" войск-ботов в две строчки? А то длиннющие названия получаются.
-
Такой вопрос: пехотинец вооружён пикой и саблей, в бою использует только саблю. Как заставить использовать пику в бою?
http://forums.taleworlds.com/index.php/topic,296147.0.html (http://forums.taleworlds.com/index.php/topic,296147.0.html)
-
[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>
TypeError: unsupported operand types(s) for +: 'NoneType' and 'List'
You need to import it from the modified header_troops procedure.
Мой гуманитарный мозГ не создан для этого :)
'NoneType' and 'List' - это у меня и вылазиет.
-
Решил добавить свою фракцию для игрока, воспользовался советами что здесь нашел да и в модульке посмотрел. Сделал, но вылезла странная ошибка -
Traceback (most recent call last):
File "process_faction.py", line 70, in <mobule>
save_factions(relations)
File "process_faction.py", line 42, in save_factions
file.write("fac_%s %s %d %d \n"%(convert_to_identifer(faction[0]), replace_spaces(faction[1]), faction[2], fac_color))
File "C:\source\process_common.py", line 28, in replace_spaces
return string.replace(s0," ","_")
File "C:\Python26\lib\string.py", line 517, in replace
return s.replace(old, new, maxsplit)
AttributeError: 'int' object has no attribute 'replace'
Это если не ошибаюсь атрибуты как у вещей, и как они применяются к людям?
-
AttributeError: 'int' object has no attribute 'replace'
Объект типа int не имеет метода replace.
Вы написали где-то число вместо строки.
-
Объект типа int не имеет метода replace.
Вы написали где-то число вместо строки.
Проще говоря я где то, не то вставил?
-
Вы написали где-то число вместо строки.
пропустил одно слово в строке. вроде своя фракция есть. но игра начинается с надписи "фракция игрока потерпела поражение" и в взятых деревнях/замках/городах нанимаются те кому раньше принадлежало, своих нет
-
Подскажите пожалуйста, есть возможность увеличить нативовский инвентарь больше чем на 100 ечеек, и можно ли редактировать окно партии.
-
Подскажите пожалуйста, есть возможность увеличить нативовский инвентарь больше чем на 100 ечеек, и можно ли редактировать окно партии.
Редактировать нельзя никак.
В WSE можно переписать с нуля. Там есть возможность перехватить переход в меню партии, в инвентарь и в окно персонажа, и подсунуть свою презентацию.
-
В WSE можно переписать с нуля.
Спасибо, думал принципиально не связываться с WSE.
А с ним реально сделать окно инвентаря юнита на тысячу ячеек?
-
Pavvvell (http://rusmnb.ru/index.php?action=profile;u=34617),
инвентарь — это не только окно, это ещё и сам инвентарь.
И вот собственно с внутренним игровым размером основная проблема.
Я уже не очень хорошо помню, так как давно эксперименты проводил.
Попробуй сам, это не сложно, проще чем найти результаты, хотя они скорей всего должны быть, как на этом форму так и на офф.
В моdule_skills увеличить верхнюю границу inventory_managment до 15.
Создать персонажа с максимальным значением im, запросить у него размер рюкзака командами.
Завелосипедивание окна инвентаря ради увеличения числа ячеей, имхо, не стоит выделки. Проще через game_menu допилить какие-нибудь караваны, автолут и т.п.
-
Завелосипедивание окна инвентаря ради увеличения числа ячеей, имхо, не стоит выделки. Проще через game_menu допилить какие-нибудь караваны, автолут и т.п.
Попробую, но у меня уже по несколько ящиков на юнита. Не знаешь есть ограничение на количество трупсов?
-
В моdule_skills увеличить верхнюю границу inventory_managment до 15.
Создать персонажа с максимальным значением im, запросить у него размер рюкзака командами.
Вроде бы придётся редактировать и header_skills?
-
Вроде бы придётся редактировать и header_skills?
Не нужно.
В 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
В общем виде
[skill]_n = n * (16**[skill_ID])
Функция для генерации уровня скилла у солдата:
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, только название у функции ещё сократить.
-
То есть вы предлагаете вместо определения которое обычно идёт в 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, только название у функции ещё сократить.
Функцию расположи в module_troops перед troops = [
Использование: knows_ironflesh_4|knows_power_strike_3
можно заменить на set_skill(skl_ironflesh, 4)|set_skill(skl_power_strike, 3)
-
А весь этот шаманизм поможет увеличить максимальный инвентарь хотя бы в два раза?
-
А что говорить? Rongar уже всё сказал. Скилл захардкорен, так что к числу ячеек в инвентаре не подкопаешься. Хотя, на счёт замещения презентацией стандартного окна инвентаря - это кому как. Проще сделать менюшку со ссылками на инвентари специально добавленных troops и их навык инвентаря или их кол-во зависящее от навыка ГГ.
-
Проще добавить пункт в диалоге с компаньоном, позволяющий взглянуть на его инвентарь.
Функция:
(change_screen_loot, "$g_talk_troop"),
открывает инвентарь любого трупса.
Самому компаньону доступ в свой инвентарь запрещён, а игрок может ложить туда и забирать, что хочет.
-
Как создать новую фракцию в НВ?
Кто может подробно объяснить все, или будет кто желающий помочь, буду очень благодарен! facepalm
P.S. Я знаю азы, что нужно делать)
-
День добрый!
Сказали перенести вопрос оттуда http://rusmnb.ru/index.php?topic=18960.0 (http://rusmnb.ru/index.php?topic=18960.0) сюда.
Подскажите пожалуйста, а как бы привязать себе со старта замок, а вместе с этим, в этом же диалоге, осуществить передачу прав на руководство фракцией к ГГ, так что бы бывший король стал вашим лордом если это возможно, ну или на худой конец скончался от ран у Вас на руках :) ?
-
Кто знает подскажите пожалуйста, где в модульной определяется поведение партий лордов, их тактика что ли? А то хочу ее немного подправить, а модульку лопатить времени нет.
-
Вполне понятное желание.
Основное (зависит еще и от того, что нужно сделать):script_init_ai_calculation и два последующих, вызов первого простым триггером после # Decide vassal ai
process_kingdom_parties_ai" и два последующих, вызов первого простым триггером после # Process alarms, и к этому script_allow_vassals_to_join_indoor_battle и script_process_alarms.
При надобности могу пояснить.
-
Спасибо посмотрю если, что отпишусь.
Добавлено: 30 Сентября, 2014, 15:15
Еще раз спасибо, почти все, что мне нужно было находится в скриптах process_hero_ai и npc_decision_checklist_party_ai, но последний сволочь не просто длинный, он блин громадный, буду разбирать.
Добавлено: 30 Сентября, 2014, 16:37
Возник вопрос где задаются значения слота slot_party_ai_state для партий лордов, а то во всех скриптах про них только спрашивают.
-
Есть ещё интересный скрипт party_set_ai_state. Слот, которым вы интересуетесь также задаётся при спауне партий (тоже в скриптах).
-
Чувствую я во всем этом долго разбираться буду.
-
А как можно создать панель инвентаря во всю ширину окна презентации, (не В 3 ячейки шириной, а в десять-двенадцать)?
И вообще где можно найти сведения, мануал или пояснения к файлу module_presentations.
-
Есть где нибудь подробная инструкция по добавлению новых отрядов, пошагово и с объяснением зачем, что и как? Можно и на английском. А то я попытался создать по образцу других отрядов деревенскую милицию в варбандовском нэйтиве, создать получилось, триггер срабатывает, отряд бегает по карте, патрулирует. Скрипт сделал по наитию из урезанного create_village_farmers, диалоги вообще не добавлял, где-то недокрутил, где-то перекрутил, названием отряда служит почему-то дата его появления, диалог он подхватил от бандитов, а у бандитов наоборот диалог от манхантеров.
-
Здраствуйте, у меня такая проблема, установил модульную систему но у меня ошибка, вот скриншот ошибки и как я прописал путь к папке и в Path (может что то упустил) :
(http://s7.hostingkartinok.com/uploads/images/2014/11/4f08ed242d1a97739857908a29e51bed.png)
(http://s7.hostingkartinok.com/uploads/images/2014/11/49dbf6e741025a816ae7091def091cf8.png)
(http://s7.hostingkartinok.com/uploads/images/2014/11/c70e5cc1e070ac1a89a87ee859c60138.png)
-
Доброго времени суток! Такой вопрос: как вносить изменения в обмундирование и снаряжение игрока в Mount and Blade: Napoleonic Wars так, чтобы игра адекватно эти изменения воспринимала и не пыталась втихаря кикнуть меня с моего же сервера за читерство? Боты переодеваются и перевооружаются хорошо, а игрок бегает раздетый:) Есть подозрение, что это в модульке где-то прописано, поэтому задаю вопрос здесь.
С уважением, Ivkolya.
-
Здраствуйте, у меня такая проблема, установил модульную систему но у меня ошибка, вот скриншот ошибки и как я прописал путь к папке и в Path (может что то упустил) :
Походу, вы используете Python 3.4.2, а надо использовать Python 2.7.x
-
Переношу вопрос из отсюда --- http://rusmnb.ru/index.php?topic=19771.0 (http://rusmnb.ru/index.php?topic=19771.0)
Здраствуйте форумчане. Подскажите,как сделать игрока королём фракции? :( Не так типо фракция игрока, а допустим Королём свадов или вегиров =/
Может для этого нужно сменить фракцию самого ГГ?
-
Не работает модулька! Не пойму в чем дело! Делаю карту, как написано в здешнем руководстве. Все прописываю, карта отображается в списке, захожу, а там холмы всякие, лес в общем. А карта генерировалась как песчанная. Более того - решил в outer_terrain прописать снег - не реагирует! Почему такая штука? Вроде экспортирует, карту видит, на нее заходит - а не работает(( Ведь не в стим же писать? Вряд ли у меня одного такая проюлема
-
Не работает модулька! Не пойму в чем дело! Делаю карту, как написано в здешнем руководстве. Все прописываю, карта отображается в списке, захожу, а там холмы всякие, лес в общем. А карта генерировалась как песчанная. Более того - решил в outer_terrain прописать снег - не реагирует! Почему такая штука? Вроде экспортирует, карту видит, на нее заходит - а не работает(( Ведь не в стим же писать? Вряд ли у меня одного такая проюлема
facepalm Речь идет о сцене или о глобальной карте?
-
речь идет о сцене. Смех в том, что сцена распознается но желает рандомно генерироваться. То есть она не задается по коду, что я прописал, а всегда разная. При этом она неизменно лесная, то есть не снег и не пески. Пробовал несколько раз заходить на нее - и каждый раз картина разная. Буднто бы стоит рандомная генерация. А я ее не ставил. И outer_terrain у меня вообще снежный прописан, а там так же plain..
-
речь идет о сцене. Смех в том, что сцена распознается но желает рандомно генерироваться. То есть она не задается по коду, что я прописал, а всегда разная. При этом она неизменно лесная, то есть не снег и не пески. Пробовал несколько раз заходить на нее - и каждый раз картина разная. Буднто бы стоит рандомная генерация. А я ее не ставил. И outer_terrain у меня вообще снежный прописан, а там так же plain..
Удалите *.sco файл Вашей сцены из папки SceneObj Вашего мода.
-
Эммм.. Поискал - а ее там и нету. Может в ней надо что-то отредактировать, тогда появится?
Отредактировал - вообще в ауте - оно прописывается как scn_random_multi_plain_medium.sco
Ничего не понимаю
вот строчка из кода
("multi_scene_25",sf_generate,"none", "none", (0,0),(100,100),-100,"0x00000007500005000002308c00006699800013a500003f39",
[],[],"outer_terrain_snow"),
Это файл module_scenes
P.S. Зменил номер мульти-сцены на 28 - и все заработало... Странно - я проверял - номер был свободным. Но все равно спасибо за отзывчивость) Плюс поставил)
-
Как отключить музыку при входе в таверну.
-
Как отключить музыку при входе в таверну.
Может это..?
(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),
]),
Нет, пробовал удалял, тогда играет музыка которая играла на глобальной карте, а вот как ее убрать, или туда что звук "тишины" поставить, может что проще есть?
(http://storage1.static.itmages.ru/i/15/0110/h_1420918484_6299077_7ff59d9db4.png)
(stop_all_sounds,1),
Спасибо,
испробовано, выключает все звуки кроме музыки, мне надо наоборот.
О, я неправильно понял.. музыка в смысле трек а не саунд, сори.. да, тогда через
(play_track,<track_id>, [options]), # 0 = default, 1 = fade out current track, 2 = stop current track
-
Нет, пробовал удалял, тогда играет музыка которая играла на глобальной карте, а вот как ее убрать, или туда что звук "тишины" поставить, может что проще есть?
Добавлено: 11 Января, 2015, 13:59
Еще где можно исправить отсчет календаря, чтоб в году не двенадцать месяцев было а четыре по временам года (просто зима тридцать дней, весна тридцать дней и тд), хочу экономику прописать, а с двенадцатью месяцами хрен урожая дождешься. И в порядке фантазии кто нибудь думал, как по ходу игры можно заменить карту на другое время года или текстуры.
Добавлено: 11 Января, 2015, 14:02
(stop_all_sounds,1),
Спасибо,
испробовано, выключает все звуки кроме музыки, мне надо наоборот.
-
Нет, пробовал удалял, тогда играет музыка которая играла на глобальной карте, а вот как ее убрать, или туда что звук "тишины" поставить, может что проще есть?
Мне почему-то кажется, что только через звук тишины.
Так как для фоновой музыке нигде не устанавливается начало или конец проигрыша, устанавливается "плейлист", и дальше она движком играется всегда.
Еще где можно исправить отсчет календаря, чтоб в году не двенадцать месяцев было а четыре по временам года (просто зима тридцать дней, весна тридцать дней и тд), хочу экономику прописать, а с двенадцатью месяцами хрен урожая дождешься.
Нету никакого календаря. Есть дни (и часы) с начала игры и отображение этих дней в виде строки
game_get_date_text.
Тебе нужно просто правильно по дням строчку сформировать.
И в порядке фантазии кто нибудь думал, как по ходу игры можно заменить карту на другое время года или текстуры.
Вроде бы, MAXHARDMAN когда-то скриншоты показывал или даже видео постепенного наступления зимы.
Насколько я понимаю, это можно сделать через набрасывание моделей снега на глобалку. Плюс ещё придётся со локальными картами повозиться, их типа придётся иметь по две на каждую сцену.
-
Изменяюсь заранее, наверняка такой вопрос уже задавали, но ответ я найти не смог( Вопрос такой : у меня стандартная версия Mount and Blade, "warband" не понравился, как снять ограничение на 32 вида юнитов в отряде?,что бы было как в warband. Заранее спасибо этот вопрос очень важен для меня.
-
misha19901 (http://rusmnb.ru/index.php?action=profile;u=38084),
ставить enchanced version
http://rusmnb.ru/index.php?action=dldir;sa=details;lid=201, (http://rusmnb.ru/index.php?action=dldir;sa=details;lid=201,). ЕМНИП, ключ должен подойти как от M&B, так и от WB.
-
Спасибо всем с музыкой разобрался,
(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),
(play_cue_track , "track_bogus"),
(else_try),
(call_script, "script_music_set_situation_with_culture", mtf_sit_town),
(try_end),
]),
Трэк bogus это и есть фиктивный трэк тишины, он оказывается есть а нативе но не используется.
-
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.
Спасибо! Ещё вопрос если кто знает , где меняется значение которое отмечает каких именно юнитов я могу нанимать в городах? Там например "наёмные арбалетчик" или "наёмный конный мечник" по стандарту стоят они, хотелось бы разнообразить этот момент.
-
-Прошу подскажите как сменить баннеры своим сопартийцам так что б все работало правильно?
Баннер работает, но не отображается на щите и иконке вверху персонажа. :(
Итак я заменил их баннеры на свои собственные,
и когда я делаю их лордами или лордом, баннер который я им добавил - он не отображается не на иконке героя, щите и броне герольдической тоже. показывает баннер дефаулт, *чаще всего он белый*, и так почти с каждым героем происходит. Получается что если я меняю дефаултный баннер иконка у всех моих персонажей кроме героя превращается в одну и ту же( дефаулт баннер можно заменить своим, но я так не хочу), я хочу сделать как у обычных лордов что б отображались мои флаги на щитах и на иконках сверху персонажей на поле боя.
(надеюсь понятно описал ситуацию) Такая проблема возникла в моде ACOK причем в каждом патче. хочу эту проблему убрать. facepalm
Хотел бы еще один вопрос уточнить
Как сменить характеристику морали сопартийцев? типа - воин,коварный,добрый, злой и тд, и поменять их родное поселение или локацию, что б когда я сделал их лордами у них были войска например из локации игрока а не из их собственной.
да хотел бы добавить, так же не могу понять - как поменять благородство сопортийца, что б лорды не шумели о том что я сделал крестьянина дворянином.
Видать это все в одном месте, по сути.
-
Доброго времени суток.
Подскажите как сделать чтобы "npc_1" появлялся именно в городах "fac_kingdom_2" например?
Предпологаю это будет выглядеть так:
try_for_range: "npc_1" до "npc_3"
eq "faction_town" "fac_kingdom_1"
скрипт\команда появления нпс
а также нужно удалить старый скрипт который им дает команду появляться в любом городе.
Только как это прописать правильно?
-
Это в скрипте "update_companion_candidates_in_taverns" - исправьте его. Например, забейте для каждого НПС в слот slot_troop_original_faction (скажем, в скрипте game_start) нужную фракцию (troop_set_slot,<troop_id>,slot_troop_original_faction,<faction_id>), а в скрипте размещающем компаньонов, в цикле по городам, добавьте проверку соответствия фракций компаньона и города, и, чтобы не сильно пострадала вероятность успешного перемещения (потому как новой проверкой отсеивается большая часть городов), зациклите всё это дело на несколько раз. Получается, что-то такое:
("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),
]),
Но, на то, что тут написано я бы сильно не надеялся - лучше самому всё написать и перепроверить. Удачи.
-
Дикий Дикий повар,
Спасибо круг поиска сильно сузился))
-
Пожалуйста,подскажите как в МС поменять максимальное количество характеристик,возможные дать юнитам.
Добавлено: 22 Февраля, 2015, 01:15
например дать королю 31 очков силы
-
Смотрите здесь http://rusmnb.ru/index.php?topic=431.msg7349800#msg7349800 (http://rusmnb.ru/index.php?topic=431.msg7349800#msg7349800) ответы #429 #430.
-
Как в Зендаре расставить стражу и горожан, понимаю что одними ТВ не обойтись, надо их где то и как то их прописать.
если не сложно подскажите где и как (хотя бы примерно)
-
Расстановка стражников делается в game_menu перед стартом миссии.
Каких стражников выставлять определяется по слотам фракции города (то ли текущей, то ли исходной)
Горожане докидываются так же в module_game_menu, а управляются уже в самой миссии.
ЕМНИП, то включение Зендара без специальных усилий приводит к тому, что у него нейтральная фракция без правильных слотов, своё стартовое меню (а не town), дефолтовая миссия (а не town_center), торговцы и другие неписи прописаны через module_troops (а не через module_game_menu), отсутствуют AI Mesh, нужные для адекватного блуждания горожан, свой набор точек входа и порталов в сцене.
Соответственно нужно либо унифицировать Зендар под обычные города, либо адаптировать общий код под него.
-
Соответственно нужно либо унифицировать Зендар под обычные города, либо адаптировать общий код под него.
да уж. видимо нереально мне сделать. как обычный город не годится, а изменить общий код - даже не представляю как
-
Смотрите здесь [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") заменены на тишину.
А настоящие звучащие звуки животных проигрываются с помощью триггеров в миссиях.
-
В TLD дефолтовые лошадиные звуки ("neigh","horse_snort","horse_low_whinny") заменены на тишину.
А настоящие звучащие звуки животных проигрываются с помощью триггеров в миссиях.
Думаю что это самое суровое, но правильное решение для этой нетерпимой к другим скачущим тварям игры. Наверно так и сделаю, раз развел зверинец от кота до слона :).
-
Та же ерунда, хотя на шаманизм смахивает.
-
Подскажите пожалуйста,как сделать так чтобы село когда его хочешь сжечь не сдавалось,а бились не смотря на количество солдат у меня
-
Может поможете мне с одним вопросом, а...? Как добавить торговца в деревню, и дать ему один или несколько, неизменных предметов?
-
Подскажите.я создал новую фракцию(не свады и вегири,а типа бандитов)
module_factions
("dinok","Dinok", 0, 0.5,[("kingdom_1",-0.15),("kingdom_1",-0.15),("kingdom_2",-0.15),("kingdom_3",-0.15),("kingdom_4",-0.15),("kingdom_5",-0.15),("kingdom_6",-0.15),("commoners",-0.2),("merchants",-0.5),("manhunters",-0.6),("player_faction",-0.15)], [], 0x0800FF),
в module_party_templates
("dinok","dinok",icon_gray_knight|carries_goods(20),0,fac_dinok,soldiervar_personality,[(trp_dinok_rozved,10,60),(trp_dinok,20,60)]),
почему когда отряды "Динок" сражаются с родоками или вегирами и тд,почему я не могу родокам помочь когда отношение с фракцией стоить на 0
-
Геннадий (http://rusmnb.ru/index.php?action=profile;u=31211), может это от уровня ГГ или еще каких-то параметров зависит, например состоит во фракции или нет. мне помнится тоже не всегда кнопка помощи появляется. надо в game_menus глянуть условия
может-быть кто знает, что неправильно в этих скриптах? они на раздачу сцен замкам и деревням. выделенное зеленым работает корректно, остальное - нет
т.е. в игре не все сцены правильными отображаются, как по скрипту. вместо них загружаются другие
###castle_scenes
(try_for_range, ":var50", "p_castle_1", "p_village_1"),
(store_faction_of_party, ":var63", ":var50"),
(try_begin),
(this_or_next|eq, ":var63", "fac_kingdom_1"),
(this_or_next|eq, ":var63", "fac_kingdom_3"),
(this_or_next|eq, ":var63", "fac_kingdom_5"),
# (store_random_in_range, ":var11", 1, 17),
(try_begin),
# (eq, ":var11", 1),
(party_set_slot, ":var50", 10, "scn_castle_euro1_exterior"),
(else_try),
(party_set_slot, ":var50", 10, "scn_castle_euro2_exterior"),
(else_try),
(party_set_slot, ":var50", 10, "scn_castle_euro3_exterior"),
(else_try),
(party_set_slot, ":var50", 10, "scn_castle_euro4_exterior"),
(try_end),
(else_try),
(this_or_next|eq, ":var63", "fac_kingdom_4"),
(this_or_next|eq, ":var63", "fac_kingdom_6"),
# (store_random_in_range, ":var11", 1, 17),
(try_begin),
(party_set_slot, ":var50", 10, "scn_castle_pagan_exterior"),
(else_try),
(party_set_slot, ":var50", 10, "scn_castle_marienwerder_exterior"),
(else_try),
(party_set_slot, ":var50", 10, "scn_castle_trakai_exterior"),
(try_end),
(else_try),
(eq, ":var63", "fac_kingdom_2"),
# (store_random_in_range, ":var11", 1, 4),
# (try_begin),
(party_set_slot, ":var50", 10, "scn_castle_ladoga_exterior"),
# (else_try),
(party_set_slot, ":var50", 10, "scn_castle_torzhok_exterior"),
# (try_end),
(try_end),
(try_end),
(party_set_slot, "p_castle_3", 10, "scn_castle_ladoga_exterior"),
(party_set_slot, "p_castle_3", 27, 1),
(party_set_slot, "p_castle_37", 10, "scn_castle_torzhok_exterior"),
(party_set_slot, "p_castle_37", 27, 0),
(party_set_slot, "p_castle_20", 10, "scn_castle_wenden_exterior"),
(party_set_slot, "p_castle_20", 27, 1),
(party_set_slot, "p_castle_24", 10, "scn_castle_marienwerder_exterior"),
(party_set_slot, "p_castle_24", 27, 0),
# (party_set_slot, "p_castle_5", 10, "scn_castle_trakai_exterior"),
# (party_set_slot, "p_castle_5", 27, 0),
###village scene
(try_for_range, ":var51", "p_village_1", "p_salt_mine"),
# (store_sub, ":var16", ":var51", "p_village_1"),
(store_faction_of_party, ":var63", ":var51"),
(try_begin),
(this_or_next|eq, ":var63", "fac_kingdom_1"),
(this_or_next|eq, ":var63", "fac_kingdom_2"),
(this_or_next|eq, ":var63", "fac_kingdom_3"),
(this_or_next|eq, ":var63", "fac_kingdom_4"),
(this_or_next|eq, ":var63", "fac_kingdom_6"),
# (store_random_in_range, ":var11", 1, 3),
(try_begin),
# (eq, ":var11", 1),
(party_set_slot, ":var51", 10, "scn_village_baltic"),
(else_try),
(party_set_slot, ":var51", 10, "scn_village_baltic2"),
(try_end),
(else_try),
(eq, ":var63", "fac_kingdom_5"),
(party_set_slot, ":var51", 10, "scn_village_snow"),
(try_end),
(try_end),
###
#Scene party and
-
(eq, ":var63", "fac_kingdom_5"),
Фракции точно прописаны уже?
В обычном module_scripts сначала идёт прописывание сцен, а потому уже всякие script_give_center_to_faction to_lord.
(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), подряд без условий. И потом ниже тоже самое.
спасибо за наводку. похоже в этом и дело все
-
Van (http://rusmnb.ru/index.php?action=profile;u=6232), кнопка помощи появляется когда я у меня будут плохие отношение с фракцией(например Родоки),то я могу помочь бандитам Динкок
и они делаются нейтральными.Нужно что бы они всегда воевали с игроком и фракциями
-
Геннадий (http://rusmnb.ru/index.php?action=profile;u=31211), а просто увеличить минус отношений к фракциям не поможет?
Или можно еще войну декларировать через триггеры
-
Доброго времени суток, Уважаемые. Не вполне уверен, что выбрал тему правильно, но надеюсь перенаправите по нужному адресу. Вопрос следующего содержания: можно ли вставить в мод продолжение боя войсками после оглушения ГГ. Просто нашёл мод по душе, а этой важной на мой взгляд функции в нём нет и автор пропал. Может кто выдирал отдельно или просто чего слышал. Буду очень признателен за помощь :)
-
Вопрос следующего содержания: можно ли вставить в мод продолжение боя войсками после оглушения ГГ
http://forums.taleworlds.com/index.php/topic,63178.msg1641483.html#msg1641483 (http://forums.taleworlds.com/index.php/topic,63178.msg1641483.html#msg1641483) - одна из первых версий DeathCam
http://forums.taleworlds.com/index.php/topic,134460.0.html (http://forums.taleworlds.com/index.php/topic,134460.0.html) - доработанная версия с навигацией с исопльзованием мышкой
http://forums.taleworlds.com/index.php/topic,282550.0.html (http://forums.taleworlds.com/index.php/topic,282550.0.html) - еще более доработанная
-
Vanok,спасибо огромное :D
-
Доброго времени суток.
У меня build_module.bat выдает syntax error даже в тех файлах, которые не были изменены вовсе.
Что я неправильно делаю?
-
Belo4ka96 (http://rusmnb.ru/index.php?action=profile;u=31284),
Скорей всего, это наведённые ошибки в результате того, что неправильно измены те файлы, которые были изменены :)
Есть WRECK
http://forums.taleworlds.com/index.php/topic,325102.0.html (http://forums.taleworlds.com/index.php/topic,325102.0.html)
C ним немного проще искать ошибки.
-
Здравствуйте. Хотел бы задать вопрос. Например я играю в мод версии 1.0 и там есть город... выходит версия 1.1 уже без него. Можно ли перенести этот город из версии 1.0 в версию 1.1?
-
IVIephesto (http://rusmnb.ru/index.php?action=profile;u=38200), можно, конечно, но придется ручками править файлы. Если точнее, переносить соответствующий код и редактировать сопутствующие файлы (ибо модульной системы с исходным кодом мода у Вас вероятно нет). Без необходимых навыков лучше не соваться, ну или соваться, но с пониманием, что в данном вопросе Вам никто не поможет, ибо дело это сугубо добровольное и желающие вряд ли найдутся. Если все же решите взяться, подробную информацию можно найти в соседнем разделе - http://rusmnb.ru/index.php?board=9.0 (http://rusmnb.ru/index.php?board=9.0)
-
Спасибо за ответ. Надо поковыряться.
-
Rognar,
WRECK тут не помогает.
build_module.bat выдает эту ошибку даже когда ничего не изменено :blink:
-
Какая ошибка?
-
Rognar,
во всех файлах "process_" SyntaxError: Missing parentheses in call to 'print'
также в process_strings.py line 30
TabError: inconsistent use of tabs and spaces in indentation
print "Exporting strings"
-
У тебя Python 3.x
Нужен Python 2.7.x
https://www.python.org/downloads/ (https://www.python.org/downloads/)
-
Возможно уже этот вопрос не раз задавался - пытаюсь сейчас найти на форме, но всё же. Ситуация: есть готовый мод, хочется доработать его при помощи модульной системы. Как настроить питоноские файлы в модульке, чтобы при компеляции текстовики были уже требуемого начального мода. То есть как обновить файлы модульки?
-
Maja12 (http://rusmnb.ru/index.php?action=profile;u=23403), никак. либо декомпилятор в руки, либо открытые исходники мода
-
Декомпилятор?
-
да http://rusmnb.ru/index.php?topic=17294.0 (http://rusmnb.ru/index.php?topic=17294.0)
-
Спасибо, сейчас изучим. Я как понимаю, это работа громоздкая.
-
В модульной есть команды для изменения скилов и атрибутов тупсов, а как изменить или назначить их уровень.
-
Товарищи, прошу помочь решить проблему с лутом
Хочу, чтобы в луте были вещи, которые я добавил, допустим из одного осп добавил топоры и дал их морским разбойникам.
При победе над ними - в луте нет этих топоров.
Залез в item editor, выбрал один из топоров и поставил флаг always loot - теперь этих предметов около 10 за один бой, т.е их дофига с лута падает, а навык сбора трофеев у меня 0.
Подскажите, как мне сделать им лут, как у стандартных предметах в Native
-
Подскажите, как мне сделать им лут, как у стандартных предметах в Native
Оставь всё как есть, десяток раз победи разбойников, должны пару раз попасться.
-
Мне всегда было интересно кое-что.
В модульке есть ID, header, proces, module и т.д
Допустим, возьмем модульку MOD CALRADIA - A NATIVE EXPANSION AND MOD COMPILATION WITH SOURCE
Там в папке модульки есть такие файлы:
array, formAI, formations, freelancer, modmerger, pbod, trees, util
Там прописаны коды и т.д, в module или еще где, этих кодов нету, но build_module читает и эти файлы
Вопрос в том, почему он читает их?
Например фрилансер, скрипт фрилансера не прописан в module_script, он прописан в freelancer_script, почему build_module читает freelancer_script и в моде фрилансер есть?
И как мне файлы KAOS POLITICAL KIT также как и файлы Freelancer прописать в модульку, чтобы она их читала как отдельный файл, но встраивала в мод?
-
Python же.
build_module напрямую читает только process_.
Остальные файлы подгружаются через import.
В module_scripts или где-то ещё должно быть import freelancer_script или что-то подобное.
-
Mixail228 (http://rusmnb.ru/index.php?action=profile;u=36866), это ModMerger все. загляни в modmerger_options, там и прописаны модификации которые добавлены. запускай modmerger_installer и собственно инсталлируй в свою модификацию или наоборот удаляй если надо. где-то на TaleWorlds была подробна инструкция что это такое и как работает ModMerger
-
Mixail228 ([url]http://rusmnb.ru/index.php?action=profile;u=36866[/url]), это ModMerger все. загляни в modmerger_options, там и прописаны модификации которые добавлены. запускай modmerger_installer и собственно инсталлируй в свою модификацию или наоборот удаляй если надо. где-то на TaleWorlds была подробна инструкция что это такое и как работает ModMerger
О, спасибо большое!
-
Подскажите, что делать если для установки мода нужна версия 1.158 а у меня версия в steam 1.167. Steam закачивает самую последнюю версию, так что поставить туда патч не выйдет.
Так же я пробовал скачать нужную мне версию с офф сайта, но когда ввел свой ключ, в активации мне отказали. Пробовал получить manual ключ, который получил на офф сайте, но и он тоже не сработал.
Что делать? Кроме того что установить мод на пиратскую версию, других вариантов не вижу..
-
Кстати, вопрос в тему, а можно как нибудь простым способом, довести версию модульки своего мода с 153 до 167 не переписывая в ручную файлы 167, а например тупо скопировав файлы из 153 и заменить ими файлы путона в 167 и скомпилировать их 167 батом, или там есть какие-то глубокие различия (и какие именно). И вообще чего такого втолкнули в 160 версию, что она перестала поддерживать более ранние.
-
Pavvvell (http://rusmnb.ru/index.php?action=profile;u=34617), ответа не знаю, но если бы задался целью на него ответить, то прошёлся бы по файлам модулек WinMerge, или kdiff3 или чем-то подобным, сравнивая 153, твой мод и 167.
-
Кстати, вопрос в тему, а можно как нибудь простым способом, довести версию модульки своего мода с 153 до 167 не переписывая в ручную файлы 167, а например тупо скопировав файлы из 153 и заменить ими файлы путона в 167 и скомпилировать их 167 батом, или там есть какие-то глубокие различия (и какие именно). И вообще чего такого втолкнули в 160 версию, что она перестала поддерживать более ранние.
Еще одна причина, почему хорошо пользовать Мерджер. Модульная поменяла версию, а твоему коду без разницы. Он хранится в отдельных файлах, спокойно атачится и 153 работает на 16X.
Mixail228 ([url]http://rusmnb.ru/index.php?action=profile;u=36866[/url]), это ModMerger все. загляни в modmerger_options, там и прописаны модификации которые добавлены. запускай modmerger_installer и собственно инсталлируй в свою модификацию или наоборот удаляй если надо. где-то на TaleWorlds была подробна инструкция что это такое и как работает ModMerger
Зачем же далеко ходить. Эта простыня сначала появилась у нас: http://rusmnb.ru/index.php?topic=8964.0
-
сравнивая 153, твой мод и 167
Спасибо, наверное придется, но это не совсем простой путь.
Добавлено: 22 Мая, 2015, 17:22
Еще одна причина, почему хорошо пользовать Мерджер.
Когда я начинал я о нем ничего не знал, а теперь поздно, я сам до конца не помню. что у меня и где поменено и добавлено.
-
Кстати а где можно взять 167 модульную?
Добавлено: 14 Июня, 2015, 10:36
а так же WinMerge и т.д. и можно найти такую программу которая бы определяла какие текстуры у меня в моде используются а какие просто место занимают, хочу ресурсы почистить.
-
программу которая бы определяла какие текстуры у меня в моде используются а какие просто место занимают, хочу ресурсы почистить.
Не думаю, что такая есть. Но можно написать свою.
-
Но можно написать свою.
Шутку оценил, но у меня на это шариков не хватит.
-
программу которая бы определяла какие текстуры у меня в моде используются а какие просто место занимают
вроде бы в OpenBRF есть такая функция
-
вроде бы в OpenBRF есть такая функция
По моему с помощью его можно только вручную проверить какие текстуры входят в тот или иной материал, а их (текстур) более 2000, долго перебирать. Или я чего то не знаю?
-
Pavvvell (http://rusmnb.ru/index.php?action=profile;u=34617), Module -> Show unreferenced texture files
-
Спасибо гляну.
Добавлено: 15 Июня, 2015, 19:13
Спасибо еще раз, нащел левых текстур на 160 мегабайт, а какая замечательная эта программа брф оказывается.
-
Подскажите пожалуйста как поменять начальные характеристики ГГ
-
В модуле troops есть вот такой блок, в нём и описаны те стартовые значения, к которым потом плюсуются баллы при создании персонажа в начале игры:
["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],
-
Pavvvell
Кстати а где можно взять 167 модульную?
По идеи должна быть тут
https://www.taleworlds.com/en/Games/Warband/Download
Но её там нет :(
Ещё одна программа сравнения файлов Advanced Visual Compare v1.2
http://freesoft.ru/advanced_visual_compare_v12
-
Но её там нет
Вот именно, хотя по идее мне и 166 должно хватить (167 секретная какая-то), за ссылки спасибо посмотрю.
-
Значит так хочу услышать ваше мнение, я скачал 166 версию (167 не нашел), пропатчил Варбанд до 167, скопировал из модульки (153) своего мода, файлы module_ и ID_ , в 166 с заменой, переписал (тупо скопировав однотипные путоновские файлы) файлы типа BAK (кто нибудь мне объяснит зачем они вообще нужны?), скомпилировал, ошибок не было ( как я понял 166 модульная подходит к167 патчу, во всяком случае не ругается), начал новую игру вроде пашет. Вопрос вот я таким диким образом перешел на 166 версию, будут ли у меня потом проблемы.
-
Pavvvell (http://rusmnb.ru/index.php?action=profile;u=34617), BAK это скорее всего backup файлы, копии твоих предыдущих изменений. на компиляцию не влияют
если ты "тупо" переписал файлы, то это не порт. игра может и запустится, но изменения которые были в патчах после 153 не появятся
-
Ну я header_ файлы и сам бат не трогал, так что тело модульки 166-е.
Добавлено: 21 Июня, 2015, 14:28
переписал один скрипт применил операцию по подсчету веса item_get_weight которой раньше не было, пашет, считает.
-
RGL Error: more than 32 samples per sound.
Не понимаю, что это значит.
-
Такой вопрос появился: как-то можно скрыть нижнюю часть ног, если штаны и обувь совмещены с верхней одеждой, чтобы не было как тут
(http://cs629301.vk.me/v629301177/e62f/_QcQEmTySCo.jpg)
средствами модульной системы? (если подгонять модель сапог под модель ног, как и делать невидимыми ноги не вариант, лишние полигоны и лишняя нагрузка ни к чему)
itp_covers_legs скрывает только верхнюю часть ног :(
-
Так можно сделать фейковую модель сапог из одного треугольника, чтобы не нагружать игру. Для ботов - подойдет отлично, для игрока - нет. Насколько мне известно, скрыть голени никак нельзя. Можно, как вариант, вообще удалить их в module_skins, но минус этого подхода очевиден.
-
На TW предложили простое решение, которое вроде снимает все эти проблемы - не просто сделать фейковую модель голеней с пустым мешем, а еще и голени привязать к мешу тела, этим по идее должны быть сняты все эти проблемы))
Добавлено: 13 Августа, 2015, 18:21
И второй вопрос сразу, не хотел смешивать его с предыдущим: каким образом можно заставить предмет появляться только в определенной анимации, заменяя при этом другой предмет?
Нужно сделать анимацию стойки и ходьбы с ружьем на левом плече, чтобы пальцы левой руки были под прикладом.
Пробовал применить флаг arf_stick_item_to_left_hand, но ничего не вышло, ружье все равно в правой руке находится, вот код анимации, если нужен:
["stand_crossbow", 0, amf_client_prediction,
[2.0, "staff_cstance", 0, 60, arf_use_stand_progress|arf_cyclic|arf_stick_item_to_left_hand, 0, (0, 0, 0), 0.0],
Но, подозреваю, он в этом случае и не помог бы, так как ружье должно быть на длину приклада выше относительно руки, чем его держат сейчас, и я так понимаю, что для этой анимации нужно добавлять другую модель ружья с другими координатами (и возможно с параметрами щита, чтобы по умолчанию привязать ее к левой руке). Поэтому возник такой вопрос, как заставить эту новую модель появляться только в анимации стойки и ходьбы с ружьем и чтобы персонаж не пользовался им как щитом, а использовал блок ружья, как обычно? Или может есть другой, более простой способ переместить ружье налево и выше?
Заранее спасибо.
UPD. Подумал, что можно это попробовать сделать с помощью вертексной анимации, тогда вопрос - а как заставить при анимации шага и стойки с оружием использовать эту вертексную анимацию?
-
На TW предложили поменять значения оффсета для мушкетов, но я так понимаю, что тогда оффсет изменится и для анимации перезарядки например, чего хотелось бы избежать.
Поэтому, думаю, лучше все же использовать вертексную анимацию, по типу того как солдат взводит курок ружья при перезарядке или как курок спускается при выстреле, но я не видел нигде ничего по добавлению вертексной анимации в скелетальную.
(http://cs629301.vk.me/v629301177/fabb/TOUERj2PVIA.jpg) (http://cs629301.vk.me/v629301177/fac3/0nt_sGLDY50.jpg)
Вот как должно быть, сделал модель, привязанную как щит к левой руке, нужно только объединить ее с такой же моделью обычного ружья и заставить скелетальную анимацию шага или стойки использовать новую модель вместо обычной.
-
Есть вопрос. Может быть кто пробовал добавлять в деревню строку набора дополнительных юнитов?
Пробовал разобраться сам, покопавшись в скрипте апдейта и рекрутирования юнитов. но не могу понять:
(faction_get_slot, ":veterans_troop", ":center_culture", slot_faction_tier_4_troop)
при дублировании всего скрипта "update_volunteer_troops_in_village" в деревне остается только последний tier_4 указанный мною. Как добавить обновление всех юнитов параллельно друг другу?
А вообще может кто даст ссылку на описание команд модульки желательно 1.15x и 1.16x. Не могу к сожалению часто бывать в нете. Захожу как получиться(получается ну очень редко).
-
komtur (http://rusmnb.ru/index.php?action=profile;u=40027), у нас на форуме есть особый раздел к кучей полезных руководств. Вот, к примеру, статья по командам: http://rusmnb.ru/index.php?topic=3629.0
-
Уж извините. Но копание в этой http://rusmnb.ru/index.php?topic=3629.0 теме попахивает копрофагией или некрофилией, кому как. Некорректные описания и кривое руководство. Если кого-нибудь не затруднит дать ссылку хотя бы на англоязычную версию...
-
komtur (http://rusmnb.ru/index.php?action=profile;u=40027), то есть ссылка на оригинал в самой статье Вас не устраивает, Вам отдельно ее не блюдечке подавай? Впрочем, Вы удивитесь, текст оригинала аналогичен и за исключением языка от приведенной статьи не отличается. Не хочется копаться в старье - изучайте сами самостоятельно.
-
Именно так и не иначе. Только на блюдечке, только с каемочкой. Можно не голубой, хоть фиолетовой. Не важно. Разбираюсь сам. Разбираюсь основательно. Только ерунда выходит, старые команды. очень старые. Проще вообще забить и забыть.
-
Про команды есть нормальная статья: http://rusmnb.ru/index.php?topic=14396.0
-
Здравствуйте, возможно мой вопрос покажется странным но мне нужно удалить фракцию.
Но подробнее, я взял модификацию нетива и переменил стандартные фракции на свои,название королевств, королей, солдат, ветки развития и т. д. причем никаких ошибок или багов не выскакивало, но потом я решил сделать не 6 а 5 фракций, нашел тему на форуме как создать новую фракцию и сделал ее в обратном процессе, но модульная система постоянно ругалась, дошло до того что я удалил все записи которые содержали хоть какой то намек на 6 фракцию, но результат все равно 0, поэтому этому я хотел бы спросить, как правильно удалить фракцию(фракции) без ошибок? Если не трудно опишите процесс более подробно
-
Fron_De_Bef (http://rusmnb.ru/index.php?action=profile;u=40530), могу сказать, значит не все записи удалил. лучше всего комментировать, а не удалять, дабы в случае ошибки можно было вернуть. ну и внимательнее посмотри все переменные связанные с этой фракцией. надо удалять кусками код. особенно на module_scripts обрати внимание
-
Van я точно удалили все записи, я специально открывал все файлы и искал поисковиком везде где были словосочетания kingdom_6, cultura_6, sarranid ( в моем случае я удалял сарранидов) или вообще хоть какой то намек на связь с этой фракцией а совет по поводу коментировать записи а не удалять тоже не очень сработал я переписал замки солдат лордов и прочее другой фракции,(короля и претендента удалил) но модульная система опять начала ругаться что есть какая то ошибка баннеров для лордов а после вооще написала что вся это конитель привела к ошибке над навыком харизма :blink: поэтому я и прошу помощи в этом вопросе потому как создать фракцию мануалов полно, а вот как удалить нету
-
Здравствуйте. Задача следующая: хочу, чтобы лук выстреливал больше одной стрелы за раз, скажем пять. Спрашивал это в общих вопросах по модостроению, дали ссылку на западный форум, но я ничего не понял. Покопался еще немного и нашел эту тему http://rusmnb.ru/index.php?topic=14396.0 это то что мне нужно? Помогите пожалуйста разобраться в триггерах или скриптах или что там вообще нужно для моей задачи, один я к сожалению разобраться не могу.
-
konstantin насчет лука я не знаю но у пистолетов точно есть такая функция изменяется она в модульной системе в папке под названием module_items вот запись пистолета
["flintlock_pistol", "Flintlock Pistol", [("flintlock_pistol",0)], itp_type_pistol |itp_merchandise|itp_primary ,itcf_shoot_pistol|itcf_reload_pistol, 230 , weight(1.5)|difficulty(0)|spd_rtng(38) | shoot_speed(160) | thrust_damage(45 ,pierce)|max_ammo(1)|accuracy(65),imodbits_none,
[(ti_on_weapon_attack, [(play_sound,"snd_pistol_shot"),(position_move_x, pos1,27),(position_move_y, pos1,36),(particle_system_burst, "psys_pistol_smoke", pos1, 15)])]],
max_ammo (максимальный запас) - числовое значение.
Число выстрелов, которое может быть сделано из пистоля, до того как он потребует перезарядки.
я конечно не уверен но этот параметр можешь попробовать сунуть в запись лука
-
Fron_De_Bef похоже что это многозарядность. То есть если поставить 6, то будет револьвер, а мне нужно, чтобы все шесть вылетали одновременно.
-
а что тебе мешает? поставь ту же многозарядность на параметр 6 ( к примеру) и увеличь скорость выстрела и скорость перезарядки по сути это будет оружие которое быстро стреляет но визуально оно будет выглядеть как ты хочешь 1 перезарядка 6 выстрелов одновременно, конечно не идеальное решение проблемы но все же, вот параметры
spd_rtng (уровень скорости) - числовое значение.
Скорость перезарядки пистоля. Определяет насколько быстро войско способно перезарядить пистоль и выстрелить снова. Большее значение – более быстрая перезарядка.
shoot_speed (скорость выстрела) - числовое значение.
Скорость полета пули. Высокое значение – большая скорость.
-
Задача следующая: хочу, чтобы лук выстреливал больше одной стрелы за раз
Это можно сделать, например, примерно так (триггер к предмету):
(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),
]
),
Где писать - смотрите на примере огнестрельного или геральдической брони.
-
Дикий-дикий повар: спасибо большое, но я наверное не туда пишу. Записал в module_items, выдает ошибки при сборке.
https://yadi.sk/i/ewLCPpSfj9TVv
-
Посмотрите, везде-ли правильно стоят скобки, везде-ли, где полагается быть запятым, стоят запятые (так например, не забыта-ли запятая после списка модификаторов предмета - перед блоком с триггерами).
И ещё, наверное стоило сказать, pos1 в триггерах ti_on_weapon_attack - суть ещё один параметр триггера, в который сохраняется положение задействованного оружия (можно посмотреть в header_triggers.py).
-
Подскажите, пожалуйста, как правильно удалить (через модульную систему) все фракции, города-замки-деревни, всех персонажей и юнитов, а также квесты - чтобы начать делать мод с нуля.
А то, когда я начал удалять строчки типа: "town_1"... ; "kingdom_1"... при компилировании начали выскакивать ERROR, - причём в тех файлах, в которых ничего не трогал. :o
-
Подскажите, пожалуйста, как правильно удалить (через модульную систему) все фракции, города-замки-деревни, всех персонажей и юнитов, а также квесты - чтобы начать делать мод с нуля.
А то, когда я начал удалять строчки типа: "town_1"... ; "kingdom_1"... при компилировании начали выскакивать ERROR, - причём в тех файлах, в которых ничего не трогал. :o
все фракции, города-замки-деревни, всех персонажей и юнитов, а также квесты
facepalm
потому что строчки типа: "town_1"... нужно удалять и во всех других файлах модульки ибо этот "town_1"... -это ID партии, который используется" везде в модульке"
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.
Может у кого был такой косяк: на старте игроку выдается аж 23 уровень. и еще двойники игрока появляются в некоторых локациях.
подозреваю, что напутаны либо переменные, либо id
?
-
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", т.е игрок.
-
Захардкорено в движке игры.
как бы узнать какие он операции выполняет после этих окн? может скрипты какие вызывает?
я явно накосячил с 23 уровнем. в генерации персонажа такого не прописано, в game_start и troops тоже все норм
-
JeckWolf ломать что то гораздо проще чем сделать!
Предлагаю подходить к процессу модинга менее радикально и делать копии перед началом правок.
Подскажите, пожалуйста, как правильно удалить (через модульную систему) все фракции, города-замки-деревни, всех персонажей и юнитов, а также квесты - чтобы начать делать мод с нуля.
Удалять не обязательно, можно закомментировать поставив в начале строчки #
фракции в module_factions.py
города-замки-деревни в module_parties.py и их можно корректно исключать из игры
Например
("village_1", "Yaragar", icon_village_a|pf_village, no_menu, pt_none, fac_neutral,0,ai_bhvr_hold,0,(-60, -9.5),[], 100),
Ставим флаг pf_disabled
("village_1", "Yaragar", pf_disabled|icon_village_a|pf_village, no_menu, pt_none, fac_neutral,0,ai_bhvr_hold,0,(-60, -9.5),[], 100),
После чего деревня исключается из игрового процесса.
Подскажите, где в модульной (а возможно и не в ней) хранятся следующие строчки возникающие в начале игры:
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.
Van я то же ищу если найду, отпишусь.
-
города-замки-деревни в module_parties.py и их можно корректно исключать из игры
деревни - да, можно отключить флагом pf_disabled, но от остального к сожалению останутся хвосты, всю фракцию так не удалишь, надо лезть в скрипты и остальные файлы модульной. прямо все, никогда не удалял, максимум 3-4 фракции
-
world_silmarillion@bk.ru, большое спасибо за подсказку.
Добавлено: 05 Октября, 2015, 22:49
Вопрос жизни и смерти! :D
Я, создал на карте область, окружённую непроходимыми горами, оставил узкий проход. В узком проходе стоит замок. ВОПРОС: как сделать, чтобы вражеские войска, не могли пройти через этот проход, внутрь местности окруженной горами, но отряд игрока и дружественные отряды, - могли пройти?
Или, хотя бы, как сделать, чтобы вражеские отряды убегали, приблизившись к замку?
Можно ли, это сделать, редактируя файлы модульной системы, или с помощью, какой-нибудь функции программы Morghs M&B WB-WFAS Editor, или другого редактора?
-
JeckWolf
Могу подсказать 3 варианта:
1) О нём говорили тут на форуме, где конкретно подсказать не могу, заключается в том что выбирается какой то радиус от замка и когда партия подходит ближе то срабатывает скрипт и происходит либо битва либо партия появляется на глобальной карте дальше радиуса срабатывания скрипта.
2) Убрать проход(сделать его непроходимым), а в меню замка добавить пункт который будет переносить Игрока в недоступную область. И поставить объект внутри области, через который можно будет выйти.
Посмотрите может эта тема Вам поможет http://rusmnb.ru/index.php?topic=20185.0
3) Создать несколько сильных партий, привязать к замку, сделать маленький радиус перемещения.
-
world_silmarillion@bk.ru, большое спасибо!!!!
-
Всем доброго здоровья. Подскажите пожалуйста какие нужно внести изменения и в какие файлы МС, чтобы можно было нанимать в городах торговцев, тавернщиков, гильдмастеров, мастеров арены как НПС в свой отряд?
-
чтобы можно было нанимать в городах торговцев, тавернщиков, гильдмастеров, мастеров арены как НПС в свой отряд?
Добромир а если не секрет зачем Вы их в отряд то затащить хотите :)
И как это должно выглядеть?
Изменений много, начать можно хоть с module_dialogs.py
Какие - зависит от того как Вы себе это представляете, но конкретнее к сожалению подсказать не смогу.
Учебник по МС, есть и про module_game_menus
http://rusmnb.ru/index.php?topic=17658.0
Много интересного на первых страницах этой темы, и в других темах данного форума, попробуйте поиском пройтись.
-
Здравствуйте, кто может ответить на пару моих вопросов или кинуть ссылку на тему по данным вопросам
1) Как сделать фракцию нейтральной
2) Возможно ли создать в игре новый тип оружия? Поясню в игре есть одноручное двуручное луки арбалеты и т. д. и соответственные навыки для их прокачки, я (к примеру) хочу создать парное оружие (парные мечи или что то типо этого), у меня лично есть одна идея, но я не совсем в ней уверен, а именно создать новый клинок для левой руки, который с одноручным клинком в правой руке образует парное оружие, при этом когда берется дополнительный(левый) клинок он дает какой нибудь бонус(например к скорости или урону).
Собственно вопрос возможно ли такое или это параноидальный бред шизофреника? Если у вас есть альтернативный вариант хотелось бы его услышать увидеть
-
Добромир а если не секрет зачем Вы их в отряд то затащить хотите :)
Всеобщая мобилизация :D
В мирное время они заимаются своим делом, а если враг у ворот, все как один, постоим за отечество. Такая возможность воплощена в моде МиБ Возрождение Кальдарадии.
Выглядит это так, ГГ заходит в таверну и говорит тавернщику:
"Бросай эту нору, присоединяйся" а в ответ: "Я люблю это место, но раз ты этого желаешь, {playername}, я с тобой"
-
Fron_De_Bef
1) Как сделать фракцию нейтральной
Если имелось в виду как сделать отношения между фракциями нейтральными, то посмотрите тут
http://rusmnb.ru/index.php?topic=180.msg7423826#msg7423826
2) Возможно ли создать в игре новый тип оружия?
думаю что нельзя, но возможно можно заменить навык арбалета на свой.
По клинкам в левой руке вместо щита есть тема где то тут на форуме.
В принципе в жизни возможно многое, не стоит так категорично ограничивать себя в фантазиях :D
Добромир не знал что такое реализовано, спасибо приму к сведению.
Хочу и сам реализовать возможность забирать, но немного по другому, хочу что бы они находились в гарнизоне, и их оттуда можно было просто забрать, без всяких диалогов. Как пока не знаю. Вам надо в том числе нужные диалоги добавлять для них в module_dialogs.py, а идентификаторы персонажей соответственно в module_troops.py смотреть.
-
world_silmarillion@bk.ru Благо дарю
-
искал как сделать гранату ,и наткнулся тут http://rusmnb.ru/index.php?action=pmxblog;sa=view;uid=21638
Решил проверить на камне http://prntscr.com/8v5hlh но ничего не происходит
Добавлено: 25 Октября, 2015, 19:01
Все вопрос снят ,все работает все замечательно
-
Можно ли сделать так чтобы в игре каждый день появлялись солдаты разного уровня как у лордов. Если да то как?
-
Что Вы имеете в виду под появлением солдат разного уровня? Появляться в армии игрока или где-то еще?
-
Что Вы имеете в виду под появлением солдат разного уровня? Появляться в армии игрока или где-то еще?
ну лорд проиграл сражение, и он появляется в каком-то городе и потом у него появляется солдаты разного уровня в его отряде, можно ли как-то сделать так чтобы и у меня так-же каждый день появлялись солдаты при необходимости?
-
В продолжение этого поста
искал как сделать гранату ,и наткнулся тут [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
),
-
эм, что то у меня не пошло http://prntscr.com/8vg9pc
скопировал все и в ставил на камень http://prntscr.com/8vga7w
Добавлено: 26 Октября, 2015, 13:28
вернулся пока к своему коду , изменил pos1 на pos3 http://prntscr.com/8vghcg
попадая в тело противнику , ГГ перестало дамажить ,сперва обрадовался .Но тут же перестал радоваться когда увидел что падая на землю ,граната не дамажит (
-
Сикомор, партиклы пишутся в другой файл (particle_systems).
-
Окей ,новый эррор http://prntscr.com/8vgvu5
Без изминений итема все компилится
Изменяо итем , вылазит эррор
http://prntscr.com/8vgwfg партиклы вставил в самый низ
http://prntscr.com/8vgw2o
Конечно не удивительно что у меня ничего не выходит , я в этом деле полное дно.Даже больше скажу ,не дно (так как дно в этой сфере хоть какие то азы знает) ,а чел которой без понятия как и что куда вписывать ,если нет подробной инфы .
-
Там есть две строчки agent_deliver_damage, нужно написать "itm_stones" вместо "itm_frag_grenades" - это потому, что ид этого итема был изменён, а помимо этого всё нормально.
-
хм , в игре http://prntscr.com/8vhpla
а так все работает .
Хотя конечно бы хотелось понять что в моем коде не так ,он мне ближе к сердцу =) к тому же там настроил неплохой эффект взрыва
Я так понимаю добавить дым когда камень летит нельзя? ,только с помощью WSE?
Хотя помню комрад Janycz (http://rusmnb.ru/index.php?action=profile;u=20234), , где то в теме с огненными стрелами говорил ,что у него получилось добавить огонь без WSE
-
сикомор а что граната от joker7by не подошла?
http://rusmnb.ru/index.php?topic=6857.msg405749#msg405749
http://rusmnb.ru/index.php?topic=180.msg403837#msg403837
А горшки с горючей смесью, аля молотов коктейль кто-нибудь делал?
-
Проще было скопировать, как есть не изменяя, ни agent_deliver_damage, ни то, что в первых кавычках и откомпилить два раза (на первай раз при упоминании свежедобавленого предмета всегда будет ошибка). А эффект можно сменить (particle_system_burst).
А горшки с горючей смесью, аля молотов коктейль кто-нибудь делал?
Делал.
-
world_silmarillion@bk.ru (http://rusmnb.ru/index.php?action=profile;u=22637), не видел этого вариант ,нужно попробовать .
Главное что я протестовал "свой код" от А до Я .От мирных сцен,таверн ,до осад и боев в деревнях ,даже в мультиплеере .Все хорошо и прекрасно работает .Чего не скажешь на открытых сценах глобальной карты .Там и начинается рулетка ,каждое попадание в противника за сотни метров ,может стать роковым для ГГ
Кстать ,сделал также разрывные стрелы на этом коде,все бы нечего если бы не этот баг) .
Нашел на TW тоже там у людей такая же проблем была https://forums.taleworlds.com/index.php/topic,94641.msg6175844.html#msg6175844
Добавлено: 27 Октября, 2015, 01:14
Проще было скопировать, как есть не изменяя, ни agent_deliver_damage, ни то, что в первых кавычках и откомпилить два раза (на первай раз при упоминании свежедобавленого предмета всегда будет ошибка). А эффект можно сменить (particle_system_burst).
ок попробую
Добавлено: 27 Октября, 2015, 01:23
Делал.
горящий огонь наносил урон ?
Добавлено: 27 Октября, 2015, 15:16
Проще было скопировать, как есть не изменяя, ни agent_deliver_damage, ни то, что в первых кавычках и откомпилить два раза (на первай раз при упоминании свежедобавленого предмета всегда будет ошибка). А эффект можно сменить (particle_system_burst).
Моя ошибка была , не вписал во вторую строчку итем камней . Сейчас все норм , без ошибок , как раз то что доктор прописал .
Единственное не могу пока разобраться с радиусов взрыва ,как то не предсказуемо он себя ведет .
Бывает не так далеко от взрыва находишься , урон не проходит .Бывает взрыв далеко ,урон проходит
https://youtu.be/gCUJvaG-fZE
Добавлено: 27 Октября, 2015, 15:50
еще вопрос , почему то у гранат доктора звук ненавсю да и плотность эффектов слаба ,вот приведу пример https://youtu.be/qvtjvv4zS-Q
я заменил его на свои http://prntscr.com/8vvl16
Кстати попробовал с измененным module_particle_systems.py и "стоковым" ,результат один и тоже
Добавлено: 27 Октября, 2015, 15:53
зы. world_silmarillion@bk.ru (http://rusmnb.ru/index.php?action=profile;u=22637), у товарища joker7by (http://rusmnb.ru/index.php?action=profile;u=17165), таже беда что и в моем коде , так что вариант Доктора самый лучший ,у него таких косяков не наблюдается .Единственное нужно разобраться с радиусом поражения
Добавлено: 27 Октября, 2015, 16:07
Насколько я понимаю blast damage с дистанцией 200 это радиус самого взрыва ,с уроном 50 -200
А shatter damage это радиус осколков с разлетом 2000 и 25тью уронами (хотя там еще есть (val_max, ":distance", 15), но я хз что это )
-
Дикий-дикий повар
А горшки с горючей смесью, аля молотов коктейль кто-нибудь делал?
Делал.
И .... :D
сикомор
...Там и начинается рулетка ,каждое попадание в противника за сотни метров ,может стать роковым для ГГ...
...Бывает не так далеко от взрыва находишься , урон не проходит .Бывает взрыв далеко ,урон проходит ...
Так может это и нормально, всегда есть вероятность что и героя может осколками задеть :)
А кидать из укрытия не пробовали? Ну из ямы какой или из-за дерева?
Очень порадовали взрывающиеся стрелы, давно о них мечтал :) Было бы очень здорово увидеть их например в "Делимся скриптами для МС", как собственно и вариант гранат.
-
world_silmarillion@bk.ru (http://rusmnb.ru/index.php?action=profile;u=22637), осколки это хорошо ,кстати только что проверил, из за укрытия работает https://youtu.be/sbSFJfNQMZ8
Конечно кидать из за дерева не получится ,граната быстрее падает на землю чем сам прячешься за дерево . Хотя если на дальнее расстояние кидать ,то возможно и спрячешься )
Вот только это для осколочной осколки хороши , мне бы пока оглушающую сделать , без радиуса осколков . Хотя если подумать то осколки можно записать и в плюс .Есть эпицентр взрыва ,к примеру в радиусе двух метров балванчик падает заживо от разрыва перепонок . Те которые находятся подальше менее страдают .
Вот только бы сделать настоящий радиус поражения звуком .То есть есть эпицентр и есть дальняя точка поражения http://prntscr.com/8vw9cm В зависимости где ты находишься от взрыва , столько у тебя и снимает хп
Добавлено: 27 Октября, 2015, 16:57
Очень порадовали взрывающиеся стрелы, давно о них мечтал Было бы очень здорово увидеть их например в "Делимся скриптами для МС", как собственно и вариант гранат.
Ну код на гранаты дал Дикий-дикий повар (http://rusmnb.ru/index.php?action=profile;u=34819), также можно сделать и стрелы , просто заменить названия итемов на стрелы .
Я лишь могу поделится эфектами и звуком :
(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),
Добавлено: 27 Октября, 2015, 17:05
...Там и начинается рулетка ,каждое попадание в противника за сотни метров ,может стать роковым для ГГ...
Так может это и нормально, всегда есть вероятность что и героя может осколками задеть
:laught: скорее не нормально
https://youtu.be/mEMxIXDi7v8
https://youtu.be/iTmrpKe0xI8 (это мой код)
Добавлено: 27 Октября, 2015, 20:12
Что то я не понял , решил код Доктора вставить в дипломатию ,как сразу полезли ошибки http://prntscr.com/8vyov1
-
Насколько я понимаю blast damage с дистанцией 200 это радиус самого взрыва ,с уроном 50 -200
А shatter damage это радиус осколков с разлетом 2000 и 25тью уронами (хотя там еще есть (val_max, ":distance", 15), но я хз что это )
Да, урон в зависимости от дистанции (здесь в сантиметрах), val_max определяет минимальное значение для переменной, val_clamp определяет минимальное и максимальное значения для переменной, (assign, ":num_shatters", 30), применяется в качестве кол-ва осколков,(store_random_in_range, ":gear", 0, 2050), (lt, ":distance", ":gear"), вероятность попадания осколка зависит от дистанции, урон от осколка зависит от дистанции и определяется в районе 15 - 80.
Что то я не понял , решил код Доктора вставить в дипломатию ,как сразу полезли ошибки
Точно не могу сказать о причине, надо проверить header_operation, на наличие и соответствие строчки agent_is_in_line_of_sight = 1826 - эта операция для определения видимости агента с позиции (чтобы осколки не били сквозь твердые объекты). Надеюсь русскоязычные комментарии в .ру файлах не оставлялись?
мне бы пока оглушающую сделать , без радиуса осколков
В чем проблема проставить знак '#' в начале каждой строки, начиная с (assign, ":num_shatters", 30),?Цитировать (выделенное)
Цитировать (выделенное)
А горшки с горючей смесью, аля молотов коктейль кто-нибудь делал?
Делал.
И ....
Замечательно: объятые пламенем погорельцы бросают оружие и бегут в панике позабыв обо-всём, ну или тухнут.
-
спс Повар
А по поводу этого :
еще вопрос , почему то у гранат доктора звук ненавсю да и плотность эффектов слаба ,вот приведу пример [url]https://youtu.be/qvtjvv4zS-Q[/url]
можно как то исправить?
-
Я повар, а не
Я скриптер, а не мастер аудио-видео эффектов. Партиклы только как нибудь попробую настроить.
А разве партиклы - не ветка 3дэ моделлинга? Есть такие навыки?
-
В 3д моделинге есть небольшие скудные навыки , но я не о том .
Я лишь скопировал свой звук и эффекты в твой код .На видео видно разницу в эффектах и громкости звука .
У тебя там был один звук и один эффект , я же сделал два звука и пять эффектов http://prntscr.com/8vvl16 Вот и все .
У меня вышел пышный взрыв с дымом и громкость громче , у тебя как то вяло (взрыв с лука это мой код, граната это твой код)
-
Здравствуйте дорогие друзья! Можно ли как то сделать так чтобы ГГ всегда давали войска когда он отдыхает где ни будь. Лорды когда терпят поражение то они спавнятся в замке и у них быстро набирается отряды. Я хотел бы чтобы и ГГ так же мог набирать людей в отряд c неба, ну и это облегчает жизнь и можно будет смело грабить деревни и т.д. Я слышал что нужно прописать это в module_scripts в поле cf_reinforcements_party, но я не знаю что нужно прописывать. Ну и там же написано кто каких войнов получает. Помогите плиз, мне это очень нужно!!!
-
Есть ли возможность загрузить в модульную систему Prophesy of pendor, а не Native?
-
Есть ли возможность загрузить в модульную систему Prophesy of pendor, а не Native?
Для этого нужна сама модулька от Prophesy of pendor.
-
Для этого нужна сама модулька от Prophesy of pendor.
А такая существует?
-
А такая существует?
У авторов она имеется. Есть ли в свободном доступе, я не знаю, но вроде бы нет.
-
У авторов она имеется. Есть ли в свободном доступе, я не знаю, но вроде бы нет.
Спасибо за информацию. Жаль что нету возможности поработать с более совершенным модом, кроме как Морфом или Твиком, а переделывать Натив дело слишком длительное. Ксати не подскажете, нет ли аналогичных программ для работы с квестами по принципу вышеперечисленных?
Добавлено: 16 Ноября, 2015, 10:27
У авторов она имеется. Есть ли в свободном доступе, я не знаю, но вроде бы нет.
Упс разобрался. Здесь на форуме есть компилятор который вытаскивает тхт файлы из любой базы и переделывает их в питоновские. Фактически реальное решение моего вопроса.
Добавлено: 16 Ноября, 2015, 12:10
После корректировки питоновских файлов, а именно module_dialogs.py какие необходимы действия что бы они оказались в игре - просто запустить build_module.bat или что-то еще?
-
Здравствуйте! Я делаю карту для мультиплеера Napoleonic Wars и у меня появилась потребность добавить при помощи модульки поднимаемые предметы, анимацию и разрушаемые стены.
Как сценоделу, мне очень не хочется изучать язык питона и разбираться в устройстве модульной системы, но надо добавить небольшой интерактив на карту. Прошу опытных мододелов разъяснить глупцу, как сделать деревянную стену на карте разрушаемой (или хотя бы анимированной), а после использовать ее на карте для мультиплеера стандартного NW. На будущее это пригодится и другим людям с подобной проблемой.
Благодарю! =/
-
Здравствуйте! Я делаю карту для мультиплеера Napoleonic Wars и у меня появилась потребность добавить при помощи модульки поднимаемые предметы, анимацию и разрушаемые стены.
Скажу замашка уже не из легких. Особенно про разрушаемые стены.
Как сценоделу, мне очень не хочется изучать язык питона и разбираться в устройстве модульной системы, но надо добавить небольшой интерактив на карту.
1. Для того чтоб изучить модульную систему совсем не нужно изучать питон. так как питон в чистом виде не используется, а нужен только для компиляции скриптов
2. Раз ты сценодел, и занимаешься исключительно созданием объектов на сцене, то по тех. части тебе нужно найти единомышленника. Который будет скриптовать твою сцену.
Прошу опытных мододелов разъяснить глупцу
Столь нелегкие замашки могут занять целый гайд. И в одном сообщении это не напишешь. Если уж кто и решится то тебе повезло, а если нет то изучай модульку сам. Или ищи себе приятеля мододела :D
Добавлено: 17 Декабря, 2015, 17:17
У меня такой вопрос:
Просматривая файл module_map_icons, я решил поискать модели всех этих иконок. Все модели нашел в папке CommonRes в файле map_icon_meshes. И других начинающихся со слова map
Но вот не задача, я не нашел меши вот этих иконок:
(http://s8.hostingkartinok.com/uploads/images/2015/12/100f640aa8fdcf2220abdecdd5c0f049.png)
Как я понял, это лагерь который создается, когда мы останавливаемся на карте на некоторое время.
Второе это карабль, а третье это корабль на земле. Вопрос: где все эти меши? :-\
P.S Почему в игре нет кораблей, а здесь есть? Или я просто не замечал корабль? Они и правда есть? :o
-
Скажу замашка уже не из легких. Особенно про разрушаемые стены.
Ну, вот немного повозившись в инструкциях по созданию разрушаемых стен у Лемранта, я научился добавлять в scene_props объектам свойства разрушения. Оказалось, не так уж и трудно это сделать. Но возникает вопрос: если я добавлю формально новый объект (к примеру, разрушаемая) в scene_props, но пропишу ему существующую .brf модельку, он будет работать в мультиплеере или можно переделывать только уже прописанные объекты?
И таки еще вопрос, когда я хотел добавить появление "живых" объектов, скопипастил этот код:
(try_begin),
(store_current_scene, ":cur_scene"),
(eq, ":cur_scene", "scn_multi_scene_1"),
(try_begin),
(entry_point_get_position, pos1, 85), # берёте позицию той точки, на которой должно происходить появление. Обязательно новая, не занятая точка. Как тут.
(set_spawn_position, 1), # далее следуют команды появления:
(spawn_horse, "itm_training_horse"), # прописываете лошадь.
(try_end),
(try_end),
...и вставил в mission_templates после "ti_after_mission_start" в после нужного мне режима (battle).
Единственное, что сделал - заменил "scn_multi_scene_1" На "scn_dust", карту из NW и лошадь на "admin_horse". Специально залезал в item_kinds и смотрел, правильно-ли я назвал свою лошадь.
Как я понял, строка "entry_point_get_position, pos1, 85" отвечает за то, чтобы присвоить точке входа (entry point) при значении 85 функцию спауна выбранного объекта (лошади). Так вот, я все правильно скомпилировал без ошибок, зашел на карту Dust, поставил Entry Point со значением 85, но лошадь не заспаунилась и ничего не произошло, когда я тестировал карту.
Вопрос: что я делаю не так, как можно исправить эту ошибку? Очень хочется добавить на свою карту интерактива, а друга-скриптера, к сожалению, нет.
P.s. Сам имею некоторый опыт в программировании :3
-
Здравствуйте уважаемые мастера-мододелы. Прошу сильно не раздражаться, ибо к программированию вообще никакого отношения не имею, разве что математика в образование имело место быть и ваш Справочник по модульной системе мучаю. Однако белых мест полно, а охота пуще неволи, отсюда и просьба пролить свет на мою путаницу с культурой фракций и игрока.
много букв в сполере
1. Столкнулся в скрипте "game_start"с тем, что фракции игрока назначается Свадийская культура, следующими строками кода:
(assign, ":player_faction_culture", "fac_culture_1"),
(faction_set_slot, "fac_player_supporters_faction", slot_faction_culture, ":player_faction_culture"),
(faction_set_slot, "fac_player_faction", slot_faction_culture, ":player_faction_culture"),
Решил попробовать присвоить культуру согласно выбранного города при старте игры и в module_game_menus.ру в "start_phase_2", как мне кажется, эти пункты меню исполняются игрой первыми, а потом уже "game_start" скрипт. И в условиях каждого города добавил строчку :
(faction_set_slot, "fac_player_faction", slot_faction_culture, "fac_culture_N"),
Где N меняется от 1-6 соответственно культуре фракции, в столицу которой отправился ГГ.
А в скрипте "game_start"строку (assign, ":player_faction_culture", "fac_culture_1"), заменил на:
(faction_get_slot, ":player_faction_culture ", "fac_player_faction", slot_faction_culture)
Однако при сборке модуля получил ошибку: TypeError: `tuple` object is not callable
2. Вторая попытка, свои изменения закомментировал. Столкнувшись с ошибкой обратил внимание, что в условиях для выбираемых городов назначаются глобальные переменные, вспомнилась и такая "$g_player_culture" из модульки дипломатии, пробую через неё, добавляя в "start_phase_2" следующею строку:
(assign, "$g_player_culture", "fac_culture_N"),
ну и уже в скрипте "game_start" переменную пытаюсь определить следующим образом:
(assign, ":player_faction_culture", "$g_player_culture"),
Модуль собирается без ошибок, однако задача не решается: в замке захваченном ГГ свадийские стражники меняются на наемников - trp_hired_blade, а не на стражу соответствующей культуры. То есть свадийскую культуру убрали, а другую так и не назначили.
3. Решил попробовать положить это значение "fac_culture_N" в новь созданный слот slot_troop_culture=167 в скрипте "game_start" для возможных боевых трупсов (не нпс):
(troop_set_slot, "trp_forest_bandit", 167, "fac_culture_1"),
(troop_set_slot, "trp_vaegir_recruit", 167, "fac_culture_2"),
Но попытка сравнения значений в своем скрипте положенных значений:
(troop_get_slot, ":troop_culture", ":stack_troop", 167)
(try_begin),
(eq, ":troop_culture", ":player_culture"),
(val_add, ":argument_za", 3),
(try_end),
Опять выдаёт туже ошибку: TypeError: `tuple` object is not callable
4. В примере кода дипломатии есть даже вычитание с этим значением в таком виде:
(try_begin),
(this_or_next|le, "$g_player_culture", 0),
(neg|is_between, "$g_player_culture", "fac_kingdom_1", "fac_kingdoms_end"),
(str_store_string, 11, "@Your kingdom has no specified culture"),
(else_try),
(store_sub, ":var0", "$g_player_culture", "fac_kingdom_1"),
(val_add, ":var0", "str_kingdom_1_adjective"),
(str_store_string, 11, ":var0"),
(str_store_string, 11, "@Your kingdom culture is: {s11}"),
(try_end),
Как я понимаю путем вычитания они таким образом чистят строковую переменную.
5. Ну и чем дальше в лес, тем меньше понимание, что сие вообще физически значит "fac_culture_1", "fac_culture_2",и т.д. до "fac_ kingdoms _end", строковое значение или числовое?
Как побороть ошибку: TypeError: `tuple` object is not callable в моих попытках, или может подскажите другой способ определения культуры игрока и его фракции.
Да и еще вопрос, чем отличаются "fac_player_supporters_faction" и "fac_player_faction" и когда они возникают?
Кстати глобальные переменные "$g_...._..." где хранятся?
-
не все эти много букв прочел ,
но эта ошибка : TypeError: `tuple` object is not callable
Вроде как жалоба на отсутствие запятой или точки
А в скрипте "game_start"строку (assign, ":player_faction_culture", "fac_culture_1"), заменил на:
(faction_get_slot, ":player_faction_culture ", "fac_player_faction", slot_faction_culture) ,
-
bogmir Огромное спасибо за ответ, а то я уже совсем голову сломал facepalm
Буду дальше мучить свой мод и свой мозг :)
-
Вот я прикрепил бахештура к таверне-
["npc5","Baheshtur","Baheshtur",tf_hero|tf_unmoveable_in_party_window,scn_town_9_tavern|entry(6),reserved,fac_commoners,
он стоит где ему и указано, нанимаешь его, выходишь он у тебя в отряде, снова в таверну и опять же видишь его. поскажите пожалуйста что не так?
-
То что ты его привязал, а механизма отвязки не сделал.
-
То что ты его привязал, а механизма отвязки не сделал.
если не секрет - как?
-
Northmen (http://rusmnb.ru/index.php?action=profile;u=34089), по-моему это дело лучше в скриптах прописывать отвечающих за npc
-
по-моему это дело лучше в скриптах прописывать отвечающих за npc
подсказать не можешь как?
-
Northmen (http://rusmnb.ru/index.php?action=profile;u=34089), скрипт initialize_npcs, там строка
(troop_set_slot, "trp_npc1", slot_troop_home, "p_town_7"),
ищешь нужного непися и назначаешь в slot_troop_home нужный город
в game_menus находишь меню town_tavern
(reset_visitors),
можно назначить точку входа (assign, ":cur_entry", 17),
далее команду
(set_visitor, ":cur_entry", "trp_твой_npc"),
либо просто
(set_visitor, 2, "trp_npc"), где 2 номер ентри_пойнта
сцену тоже можно назначить
(jump_to_scene, "scn_town_9_tavern"), - это переход к нужной сцене
поправьте, если что-то не так написал. я не большой спец в этой теме, сам делаю так
-
slot_troop_home применяется, как ячейка для идентификатора партии, при приближении к которой NPC рассказывает доп. часть своей истории.
(jump_to_scene, "scn_town_9_tavern"), - так получится, что из любого города на "scn_town_9_tavern".
Там в этом пункте меню дальше имеется цикл:
(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 к конкретному городу, можно, например, так:
я попробовал-
\module_scripts.py", line 3207
(assign, ":end_cond, 0),
^
Syntax Error: EOL while scanning string literal
но ведь все строчки кончаются затятой
-
А мама не говорила вам не "копипастить"? У переменнгой ":end_cond" отсутствуют закрывающие кавычки.
-
А мама не говорила вам не "копипастить"? У переменнгой ":end_cond" отсутствуют закрывающие кавычки.
говорила, а так же - не спеши, будь внимательным.
-
Спасибо, учту.
-
подсказать не можешь как?
Вроде бы тут дело в слоте - slot_troop_occupation.
Вот проверка:
(troop_slot_eq, ":companion_candidate", slot_troop_occupation, 0),
если там 0, то компаньон спаунится в таверне города записанного в slot_troop_cur_center.
Когда компаньон в отряде, в данном слоте пишется slto_player_companion, вместо 0.
Проверка не срабатывает и компаньона в таверне нет.
-
Спасибо, учту.
я вообщето про себя. был бы я внимательней, заметил бы отсутствие кавычек
-
Как объявить переменную, для использования только питоновскими скриптами, но не игрой? А то у меня build_module ругается на вспомогательные питоновские списки, дескать игровые переменные не могут быть массивами. А они в игровых скриптах и не используются, только в питоновских, для автоматизации некоторых процессов.
# max_parties = []
# max_parties.append(16) # Sea raiders
# max_parties.append(16) # Mountain bands
# max_parties.append(16) # Forest bands
# max_parties.append(16) # Steppe bands
# max_parties.append(16) # Taiga bands
# max_parties.append(16) # Desert bands
# max_parties.append(42) # Looters
max_band_hero_num = 138
cur_band_hero_num = 0
# for i in max_parties:
# max_band_hero_num = max_band_hero_num + i
# temp_bandit_hero = ["steppe_bandit_leader","Steppe Bandit","Steppe Bandits",tf_hero|tf_randomize_face|tf_guarantee_boots|tf_guarantee_armor|tf_guarantee_horse|tf_guarantee_ranged|tf_mounted,0,0,fac_outlaws,
# [itm_arrows,itm_sword_khergit_1,itm_winged_mace,itm_spear, itm_light_lance,itm_nomad_bow,itm_nomad_bow,itm_short_bow,itm_jarid,itm_leather_steppe_cap_a,itm_leather_steppe_cap_b,itm_nomad_cap,itm_nomad_cap_b,itm_khergit_armor,itm_steppe_armor,itm_leather_vest,itm_hide_boots,itm_nomad_boots,itm_leather_covered_round_shield,itm_leather_covered_round_shield,itm_saddle_horse,itm_steppe_horse,itm_steppe_horse],
# def_attrib|level(24),wpe(40,120,0,120),knows_riding_4|knows_horse_archery_3|knows_power_draw_3,khergit_face_young_1, khergit_face_old_2]
troops = [
["looter_leader","Looter","Looters",tf_hero|tf_randomize_face|tf_guarantee_armor,0,0,fac_outlaws,
[itm_arrows,itm_spiked_mace,itm_sword_viking_1,itm_short_bow,itm_falchion,itm_nordic_shield,itm_rawhide_coat,itm_leather_cap,itm_leather_jerkin,itm_nomad_armor,itm_nomad_boots,itm_wrapping_boots,itm_saddle_horse],
def_attrib|level(10),wpe(16,48,0,48),knows_common|knows_power_draw_1,bandit_face1, bandit_face2],
["mountain_bandit_leader","Mountain Bandit","Mountain Bandits",tf_hero|tf_randomize_face|tf_guarantee_armor|tf_guarantee_boots,0,0,fac_outlaws,
[itm_arrows,itm_sword_viking_1,itm_spear,itm_winged_mace,itm_maul,itm_falchion,itm_short_bow,itm_javelin,itm_fur_covered_shield,itm_hide_covered_round_shield,
itm_felt_hat,itm_head_wrappings,itm_skullcap,itm_ragged_outfit,itm_rawhide_coat,itm_leather_armor,itm_hide_boots,itm_nomad_boots,itm_wooden_shield,itm_nordic_shield],
def_attrib|level(22),wpe(38,114,0,114),knows_common|knows_power_draw_2,rhodok_face_young_1, rhodok_face_old_2],
["forest_bandit_leader","Forest Bandit","Forest Bandits",tf_hero|tf_randomize_face|tf_guarantee_armor|tf_guarantee_ranged|tf_guarantee_boots,0,0,fac_outlaws,
[itm_arrows,itm_axe,itm_hatchet,itm_quarter_staff,itm_short_bow,itm_hunting_bow,
itm_common_hood,itm_black_hood,itm_shirt,itm_padded_leather,itm_leather_jerkin,itm_ragged_outfit,itm_hide_boots,itm_leather_boots],
def_attrib|level(22),wpe(38,114,0,114),knows_common|knows_power_draw_3,swadian_face_young_1, swadian_face_old_2],
["sea_raider_leader","Sea Raider","Sea Raiders",tf_hero|tf_randomize_face|tf_guarantee_boots|tf_guarantee_armor|tf_guarantee_shield,0,0,fac_outlaws,
[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(32),wpe(42,126,0,126),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],
["steppe_bandit_leader","Steppe Bandit","Steppe Bandits",tf_hero|tf_randomize_face|tf_guarantee_boots|tf_guarantee_armor|tf_guarantee_horse|tf_guarantee_ranged|tf_mounted,0,0,fac_outlaws,
[itm_arrows,itm_sword_khergit_1,itm_winged_mace,itm_spear, itm_light_lance,itm_nomad_bow,itm_nomad_bow,itm_short_bow,itm_jarid,itm_leather_steppe_cap_a,itm_leather_steppe_cap_b,itm_nomad_cap,itm_nomad_cap_b,itm_khergit_armor,itm_steppe_armor,itm_leather_vest,itm_hide_boots,itm_nomad_boots,itm_leather_covered_round_shield,itm_leather_covered_round_shield,itm_saddle_horse,itm_steppe_horse,itm_steppe_horse],
def_attrib|level(24),wpe(40,120,0,120),knows_riding_4|knows_horse_archery_3|knows_power_draw_3,khergit_face_young_1, khergit_face_old_2],
["taiga_bandit_leader","Taiga Bandit","Taiga Bandits",tf_hero|tf_randomize_face|tf_guarantee_boots|tf_guarantee_armor|tf_guarantee_ranged,0,0,fac_outlaws,
[itm_arrows,itm_sword_khergit_1,itm_winged_mace,itm_spear, itm_light_lance,itm_nomad_bow,itm_nomad_bow,itm_short_bow,itm_jarid,itm_javelin,itm_vaegir_fur_cap,itm_leather_steppe_cap_c,itm_nomad_armor,itm_leather_jerkin,itm_hide_boots,itm_nomad_boots,itm_leather_covered_round_shield,itm_leather_covered_round_shield],
def_attrib|level(32),wpe(42,126,0,126),knows_common|knows_power_draw_4|knows_power_throw_3,vaegir_face_young_1, vaegir_face_old_2],
["desert_bandit_leader","Desert Bandit","Desert Bandits",tf_hero|tf_randomize_face|tf_guarantee_boots|tf_guarantee_armor|tf_guarantee_horse|tf_mounted,0,0,fac_outlaws,
[itm_arrows,itm_arabian_sword_a,itm_winged_mace,itm_spear, itm_light_lance,itm_jarid,itm_nomad_bow,itm_short_bow,itm_jarid,itm_sarranid_cloth_robe, itm_sarranid_cloth_robe, itm_skirmisher_armor, itm_desert_turban, itm_turban,itm_leather_steppe_cap_b,itm_leather_covered_round_shield,itm_leather_covered_round_shield,itm_saddle_horse,itm_arabian_horse_a],
def_attrib|level(24),wpe(40,120,0,120),knows_riding_4|knows_horse_archery_3|knows_power_draw_3,khergit_face_young_1, khergit_face_old_2],
]
while cur_band_hero_num < max_band_hero_num:
troops.append(["steppe_bandit_leader","Steppe Bandit","Steppe Bandits",tf_hero|tf_randomize_face|tf_guarantee_boots|tf_guarantee_armor|tf_guarantee_horse|tf_guarantee_ranged|tf_mounted,0,0,fac_outlaws,
[itm_arrows,itm_sword_khergit_1,itm_winged_mace,itm_spear, itm_light_lance,itm_nomad_bow,itm_nomad_bow,itm_short_bow,itm_jarid,itm_leather_steppe_cap_a,itm_leather_steppe_cap_b,itm_nomad_cap,itm_nomad_cap_b,itm_khergit_armor,itm_steppe_armor,itm_leather_vest,itm_hide_boots,itm_nomad_boots,itm_leather_covered_round_shield,itm_leather_covered_round_shield,itm_saddle_horse,itm_steppe_horse,itm_steppe_horse],
def_attrib|level(24),wpe(40,120,0,120),knows_riding_4|knows_horse_archery_3|knows_power_draw_3,khergit_face_young_1, khergit_face_old_2])
troops.reverse()
cur_band_hero_num = cur_band_hero_num + 1
troops[0][0] = "bandit_hero_"+str(cur_band_hero_num)
troops.reverse()
Цикл, в конце файла, прекрасно отрабатывает, создавая 138 болванок для лидеров банд, но, при этом, число пришлось задать статично, а не исходя из суммарного максимального числа банд, и саму болванку прописать прямо в цикле. Использую последнюю официальную модульную + ModMerger.
UPD: Вопрос оказался, скорее, по Питону, чем по модульной. Мораль: используйте функции.
from module_constants import *
import copy
troops = []
def add_hero(troops, hero_temp, max_band_hero_num):
cur_band_hero_num = 0
hero_id = hero_temp [0]
while cur_band_hero_num < max_band_hero_num:
hero = copy.deepcopy(hero_temp)
troops.append(hero)
cur_band_hero_num = cur_band_hero_num + 1
troops[-1][0] = hero_id+"_"+str(cur_band_hero_num)
def create_troop_list(troops):
troops_templates = (
["looter_leader","Looter","Looters",tf_hero|tf_randomize_face|tf_guarantee_armor,0,0,fac_outlaws,
[itm_arrows,itm_spiked_mace,itm_sword_viking_1,itm_short_bow,itm_falchion,itm_nordic_shield,itm_rawhide_coat,itm_leather_cap,itm_leather_jerkin,itm_nomad_armor,itm_nomad_boots,itm_wrapping_boots,itm_saddle_horse],
def_attrib|level(10),wpe(16,48,0,48),knows_common|knows_power_draw_1,bandit_face1, bandit_face2],
["mountain_bandit_leader","Mountain Bandit","Mountain Bandits",tf_hero|tf_randomize_face|tf_guarantee_armor|tf_guarantee_boots,0,0,fac_outlaws,
[itm_arrows,itm_sword_viking_1,itm_spear,itm_winged_mace,itm_maul,itm_falchion,itm_short_bow,itm_javelin,itm_fur_covered_shield,itm_hide_covered_round_shield,
itm_felt_hat,itm_head_wrappings,itm_skullcap,itm_ragged_outfit,itm_rawhide_coat,itm_leather_armor,itm_hide_boots,itm_nomad_boots,itm_wooden_shield,itm_nordic_shield],
def_attrib|level(22),wpe(38,114,0,114),knows_common|knows_power_draw_2,rhodok_face_young_1, rhodok_face_old_2],
["forest_bandit_leader","Forest Bandit","Forest Bandits",tf_hero|tf_randomize_face|tf_guarantee_armor|tf_guarantee_ranged|tf_guarantee_boots,0,0,fac_outlaws,
[itm_arrows,itm_axe,itm_hatchet,itm_quarter_staff,itm_short_bow,itm_hunting_bow,
itm_common_hood,itm_black_hood,itm_shirt,itm_padded_leather,itm_leather_jerkin,itm_ragged_outfit,itm_hide_boots,itm_leather_boots],
def_attrib|level(22),wpe(38,114,0,114),knows_common|knows_power_draw_3,swadian_face_young_1, swadian_face_old_2],
["sea_raider_leader","Sea Raider","Sea Raiders",tf_hero|tf_randomize_face|tf_guarantee_boots|tf_guarantee_armor|tf_guarantee_shield,0,0,fac_outlaws,
[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(32),wpe(42,126,0,126),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],
["steppe_bandit_leader","Steppe Bandit","Steppe Bandits",tf_hero|tf_randomize_face|tf_guarantee_boots|tf_guarantee_armor|tf_guarantee_horse|tf_guarantee_ranged|tf_mounted,0,0,fac_outlaws,
[itm_arrows,itm_sword_khergit_1,itm_winged_mace,itm_spear, itm_light_lance,itm_nomad_bow,itm_nomad_bow,itm_short_bow,itm_jarid,itm_leather_steppe_cap_a,itm_leather_steppe_cap_b,itm_nomad_cap,itm_nomad_cap_b,itm_khergit_armor,itm_steppe_armor,itm_leather_vest,itm_hide_boots,itm_nomad_boots,itm_leather_covered_round_shield,itm_leather_covered_round_shield,itm_saddle_horse,itm_steppe_horse,itm_steppe_horse],
def_attrib|level(24),wpe(40,120,0,120),knows_riding_4|knows_horse_archery_3|knows_power_draw_3,khergit_face_young_1, khergit_face_old_2],
["taiga_bandit_leader","Taiga Bandit","Taiga Bandits",tf_hero|tf_randomize_face|tf_guarantee_boots|tf_guarantee_armor|tf_guarantee_ranged,0,0,fac_outlaws,
[itm_arrows,itm_sword_khergit_1,itm_winged_mace,itm_spear, itm_light_lance,itm_nomad_bow,itm_nomad_bow,itm_short_bow,itm_jarid,itm_javelin,itm_vaegir_fur_cap,itm_leather_steppe_cap_c,itm_nomad_armor,itm_leather_jerkin,itm_hide_boots,itm_nomad_boots,itm_leather_covered_round_shield,itm_leather_covered_round_shield],
def_attrib|level(32),wpe(42,126,0,126),knows_common|knows_power_draw_4|knows_power_throw_3,vaegir_face_young_1, vaegir_face_old_2],
["desert_bandit_leader","Desert Bandit","Desert Bandits",tf_hero|tf_randomize_face|tf_guarantee_boots|tf_guarantee_armor|tf_guarantee_horse|tf_mounted,0,0,fac_outlaws,
[itm_arrows,itm_arabian_sword_a,itm_winged_mace,itm_spear, itm_light_lance,itm_jarid,itm_nomad_bow,itm_short_bow,itm_jarid,itm_sarranid_cloth_robe, itm_sarranid_cloth_robe, itm_skirmisher_armor, itm_desert_turban, itm_turban,itm_leather_steppe_cap_b,itm_leather_covered_round_shield,itm_leather_covered_round_shield,itm_saddle_horse,itm_arabian_horse_a],
def_attrib|level(24),wpe(40,120,0,120),knows_riding_4|knows_horse_archery_3|knows_power_draw_3,khergit_face_young_1, khergit_face_old_2],
)
add_hero(troops, troops_templates[0], looter_band_max_parties)
add_hero(troops, troops_templates[1], mountain_band_max_parties)
add_hero(troops, troops_templates[2], forest_band_max_parties)
add_hero(troops, troops_templates[3], sea_raid_max_parties)
add_hero(troops, troops_templates[4], steppe_band_max_parties)
add_hero(troops, troops_templates[5], taiga_band_max_parties)
add_hero(troops, troops_templates[6], desert_band_max_parties)
create_troop_list(troops)
-
Здравствуйте!
Для Rogirg4282
...У меня такой вопрос:
Просматривая файл module_map_icons, я решил поискать модели всех этих иконок. Все модели нашел в папке CommonRes в файле map_icon_meshes...
([url]http://s8.hostingkartinok.com/uploads/images/2015/12/100f640aa8fdcf2220abdecdd5c0f049.png[/url])
...Как я понял, это лагерь который создается, когда мы останавливаемся на карте на некоторое время.
Второе это карабль, а третье это корабль на земле. Вопрос: где все эти меши?
В particles_2.brf . Лучше поздно чем никогда :)
-
Как полностью удалить партию(города, замка деревни)
Проставляю # или удаляю строки файла module_parties и скриптс, при билде выдает ошибку, потом игра ломается.
Что я упустил?
Я так понимаю, если партию стереть то сцены и боты которые она использовала будут неактивны.
Полагаю дело в module_scripts?
Прошу не игнорировать это единственное, что мне не позволяет закончить мод.
-
Как полностью удалить партию(города, замка деревни)
Проставляю # или удаляю строки файла module_parties и скриптс, при билде выдает ошибку, потом игра ломается.
Что я упустил?
Я так понимаю, если партию стереть то сцены и боты которые она использовала будут неактивны.
Полагаю дело в module_scripts?
Прошу не игнорировать это единственное, что мне не позволяет закончить мод.
нужно удалить в module_scripts в первом скрипте инициализацию партии, присвоение фракции и лорду
-
Как сделать что бы лорды не бегали между фракциями, а были всегда подчинены стартовому королю?
Я знаю модульку, просто укажите что редактировать, а лучше ещё и как.
-
Доброго времени суток.
Я уже писал в другой теме, но ответа так и не получил.
Сделал мод, где (ссылка_внизу):
- 1-я фракция - 3 города, 6 замков и 3 деревни. 10_лордов.
- 2-я фракция - 2 города, 9 замков и 0 деревень. 13_лордов.
Лорды уперто не хотят осаждать! , грабят,воюют, кучкуются, но не осаждают.
Вопрос, почему так может быть?
У меня ощущение, что дело в process_hero_ai, которое я не трогал. Но в чем именно не знаю.
Если есть какие-либо предположения прошу поделиться.
Ссылка:
http://commando.com.ua/mb/modswarband/page,1,2,3474-mod-alteron.html#comment (http://commando.com.ua/mb/modswarband/page,1,2,3474-mod-alteron.html#comment)
-
Всем привет! Я тут решил разбавить себе карту шайками странствующих рыцарей (1 свадийский рыцарь и шелупонь в роли свиты). Добавил отряд в party_template, добавил скрипт спавна, и они начали спавниться. Мне это дико понравилось и я решил по понту добавить им диалоги, прилежно скопировав и видоизменив бандитские (код под катом)
#Stranger Knight
[party_tpl|pt_stranger_knight,"start", [(eq, "$g_encountered_party_template", "pt_stranger_knight")],
"Who are you?", "strangerknight",0],
[anyone|plyr,"strangerknight", [], "I am {playername}.", "strangerknight_2",[]],
[anyone,"strangerknight_2", [], "Hello, {playername}. What you want from me?", "strangerknight_3",[]],
[anyone|plyr,"strangerknight_3", [], "Nothing, sir. Only greeting you.", "close_window",[(assign, "$g_leave_encounter",1)]],
[anyone|plyr,"strangerknight_3", [], "I want fight with you! Prepare to die!", "strangerknight_4",[]],
[anyone,"strangerknight_4", [], "What!? I will set your head on my pike!","close_window",[[encounter_attack]]],
Однако при компиляции выдает, мол
Traceback (most recent call last):
File "process_dialogs.py", line 6, in (module)
from module_dialogs import *
File "C:\Mount&Blade\Modules\Native\Module_system 1.158\module_dialogs.py", line 26297 (самая последняя строчка, к которой даже не притрагивался)
SyntaxError: invalid syntax
Что я сделал не так?
Добавлено: 08 Июня, 2016, 03:01
Вопрос отпал сам собой. Просто я кодил жопой.
Все работает, прошу пардону за беспокойства.
Добавлено: 08 Июня, 2016, 03:02
Вопрос отпал сам собой. Просто я кодил жопой.
Все работает, прошу пардону за беспокойства.
-
Что я сделал не так?
SyntaxError: invalid syntax
Так-то вам еще компилятор сказал, что вы нарушили довольно своеобразный синтаксис Python.
Проблема была в отсутствующем пробеле?
-
Кавычки не там поставил :D
И, раз тут отвечают, задам еще вопрос: как привязать добавленный замок к сцене этого замка? Допустим, я добавил castle_49 в module_parties.py. Прописал его в module_scripts как замок. Все отлично, только при входе в сцену там вместо замка какая-то деревня.
Добавлено: 08 Июня, 2016, 10:00
Ну конечно же, я добавил castle_49 в module_scenes.py, но это все равно не помогло.
-
Tribesman (http://rusmnb.ru/index.php?action=profile;u=42623), может-быть по батятцки немного объясню, но
есть слоты партий, они хранятся в module_constants.py
тебе нужны
slot_town_center = 10###непосредственно для сцены
slot_town_castle = 11###для внутренних покоев замка
slot_town_prison = 12###для тюрьмы
еще
slot_center_siege_with_belfry = 27###для осады с передвижной башней
присваиваешь необходимые сцены следующей командой в module_scripts.py в script_game_start
(party_set_slot, "p_castle_49", 10, "scn_castle_49_exterior"),
(party_set_slot,"p_castle_49",11,"scn_castle_49_interior"),
(party_set_slot,"p_castle_49",12,"scn_castle_49_prison"),
(party_set_slot, "p_castle_49", 27, 1),
если обратишь внимание, то там есть запись типа
(try_for_range, ":castle_no", castles_begin, castles_end),
(store_sub, ":offset", ":castle_no", castles_begin),
(val_mul, ":offset", 3),
# (store_add, ":senechal_troop_no", "trp_castle_1_seneschal", ":offset"),
# (party_set_slot,":castle_no", slot_town_seneschal, ":senechal_troop_no"),
(store_add, ":exterior_scene_no", "scn_castle_1_exterior", ":offset"),
(party_set_slot,":castle_no", slot_castle_exterior, ":exterior_scene_no"),
(store_add, ":interior_scene_no", "scn_castle_1_interior", ":offset"),
(party_set_slot,":castle_no", slot_town_castle, ":interior_scene_no"),
(store_add, ":interior_scene_no", "scn_castle_1_prison", ":offset"),
(party_set_slot,":castle_no", slot_town_prison, ":interior_scene_no"),
(party_set_slot,":castle_no", slot_town_reinforcement_party_template, "pt_center_reinforcements"),
(party_set_slot,":castle_no", slot_party_type, spt_castle),
(party_set_slot,":castle_no", slot_center_is_besieged_by, -1),
(try_end),
собственно она распределят сцены для всех замков в промежутке от castles_begin до castles_end, смотрим в константах:
castles_begin = "p_castle_1"
castles_end = villages_begin
т.е. по идее тебе достаточно вписать партию (замок) перед первой из деревень, за последним замком
-
Van (http://rusmnb.ru/index.php?action=profile;u=6232), огромное спасибо!
-
Застрял в паре мелочей. В порядке важности:
- в меню отряда недельная плата у юнитов в динарах. Хотя везде рубли, и слово denar в поиске не ищется. Зашито в игру?
- хочу добавить в деревни ещё один вид мужиков-крестьян, прописываю в модуль_констант village_walker_male_a (дословно не помню) под номером 59. Прописываю в скриптах его же, но результата нет.
- как отключить туториал при старте новой игры, при настройке лица персонажа. Такой же туториал при первом посещении marketplace. Искал message_box и tutorial_box, но толком не понял, оно или нет.
Добавлено: 09 Июня, 2016, 16:34
- в меню отряда недельная плата у юнитов в динарах. Хотя везде рубли, и слово denar в поиске не ищется. Зашито в игру?
Павел уже подсказал.
-
- хочу добавить в деревни ещё один вид мужиков-крестьян, прописываю в модуль_констант village_walker_male_a (дословно не помню) под номером 59. Прописываю в скриптах его же, но результата нет.
в module_troops он у тебя вставлен перед trp_spy_walker_1?
-
вставлен перед trp_spy_walker_1?
Да. Добавил village_walker_1, _2, _3. Но уже ладно, обошёлся без этого)
-
Помогите со скриптом, что бы при убийстве врага восстанавливалось хп
Еще так же такой вопрос 1.0 влияет на высоту персонажа в итоге ведь? менял на 20 на 0.90 на 2 но нечего не меняется, возможно я что-то упустил?
"skel_human", 1.0,
-
3 кода с wb facepalm какой-то возможно даже на восстановление хп, может кто помочь разобраться и написать свой код для ИГ?
1 код:
("overflow_damage_effect_extra_hp", [
(store_script_param, ":inflicted_agent", 1),
(store_script_param, ":inflicted_damage", 2),
(try_begin),
(gt,":inflicted_agent", -1),
(gt,":inflicted_damage", 0),
(store_agent_hit_points, ":inflicted_agent_hp", ":inflicted_agent", 1),
(this_or_next|lt, ":inflicted_agent_hp", ":inflicted_damage"),
(neg|agent_is_human, ":inflicted_agent"),
(agent_get_slot, ":extra_hp", ":inflicted_agent", slot_agent_extra_hp),
(gt, ":extra_hp", 0),
(val_add,":extra_hp", ":inflicted_agent_hp"),
(val_sub,":extra_hp", ":inflicted_damage"),
(agent_set_slot, ":inflicted_agent", slot_agent_extra_hp, ":extra_hp"),
(try_begin),
(le, ":extra_hp", 0),
(agent_set_no_death_knock_down_only, ":inflicted_agent", 0),
(try_end),
(try_begin),
(agent_get_troop_id, ":troop_no", ":inflicted_agent"),
(agent_has_item_equipped, ":inflicted_agent", "itm_felguard_body"),
(agent_has_item_equipped, ":inflicted_agent", "itm_felguard_calf"),
(this_or_next|eq, ":troop_no", "trp_cheat_man"),
(eq,"$g_use_special_item", 1),
(agent_set_no_death_knock_down_only, ":inflicted_agent", 1),
(agent_set_slot, ":inflicted_agent", slot_agent_extra_hp, 5000),
(try_end),
(try_end),
]),
2 код:
("init_extra_hp",
[
(store_script_param_1, ":agent_no"),
(get_player_agent_no, ":player_agent"),
(try_begin),
(party_slot_eq, "p_main_party", slot_party_use_extra_hp, 1),
(agent_is_human, ":agent_no"),
(agent_get_troop_id, ":troop_no", ":agent_no"),
(store_add,":extra_hp","$g_game_difficulty",-1),
(val_max,":extra_hp",1),
(try_begin),
(agent_get_troop_id, ":troop_no", ":agent_no"),
(troop_is_hero, ":troop_no"),
(val_mul,":extra_hp",2),
(try_end),
(try_begin),
(eq, ":agent_no",":player_agent"),
(assign,reg1,":extra_hp"),
(store_div,reg2,":extra_hp",2),
(display_message, "@this_battle, you and all hero have {reg1} extra_hp,troop has {reg2} extra_hp"),
(try_end),
(call_script, "script_get_troop_max_hp", ":troop_no"),
(assign, ":max_hp", reg0),
(val_mul, ":max_hp", ":extra_hp"),
(agent_set_slot, ":agent_no", slot_agent_extra_hp, ":max_hp"),
(agent_set_no_death_knock_down_only, ":agent_no", 1),
#(agent_set_slot, ":agent_no", slot_agent_spawned, 1),
(else_try),
(party_slot_eq, "p_main_party", slot_party_horse_use_extra_hp, 1),
(neg|agent_is_human, ":agent_no"),
(agent_get_item_id, ":horse", ":agent_no"),
(ge, ":horse", 0),
(store_agent_hit_points,":cur_hp",":agent_no",1),
(agent_set_hit_points,":agent_no",100,0),
(store_agent_hit_points,":max_hp",":agent_no",1),
(agent_set_hit_points,":agent_no",":cur_hp",1),
(assign,":max_hp",100),
(store_add,":extra_hp","$g_game_difficulty",1),
(val_max,":extra_hp",1),
(val_mul,":max_hp",":extra_hp"),
(agent_set_max_hit_points,":agent_no",":max_hp",0),
#(agent_set_no_death_knock_down_only, ":agent_no", 1),
(agent_set_slot, ":agent_no", slot_agent_extra_hp, ":max_hp"),
(try_end),
]),
3 код:
("cf_agent_heal",
[
(store_script_param, ":agent_caster",1),
(agent_get_troop_id, ":troop_no", ":agent_caster"),
(store_character_level,":level",":troop_no"),
(agent_get_position, pos1, ":agent_caster"),
(store_mul,":ch_bonus",":level",100),
(val_mul,":level",5),
(assign,":victim",-1),
(try_begin),
(store_agent_hit_points,":life",":agent_caster",0),
(le, ":life", 50),
(assign,":victim",":agent_caster"),
(try_end),
(try_for_agents,":agent"),
(agent_is_alive,":agent"),
(agent_is_human,":agent"),
(eq,":victim",-1),
(assign, ":continue", 0),
(try_begin),
(agent_is_ally, ":agent"),
(agent_is_ally, ":agent_caster"),
(assign, ":continue", 1),
(else_try),
(neg|agent_is_ally, ":agent"),
(neg|agent_is_ally, ":agent_caster"),
(assign, ":continue", 1),
(try_end),
(eq, ":continue", 1),
(neg|agent_slot_eq, ":agent", slot_agent_has_been_special_ability, heal),
(agent_get_position, pos2, ":agent"),
(get_distance_between_positions,":distance",pos2,pos1),
(le,":distance",":ch_bonus"),
(store_agent_hit_points,":life",":agent",0),
(lt,":life",90),
(assign,":victim",":agent"),
(try_end),
(try_begin),
(eq,":victim",-1),
(store_agent_hit_points,":life",":agent_caster",0),
(lt,":life",90),
(assign,":victim",":agent_caster"),
(try_end),
(ge,":victim",0),
(agent_set_slot, ":victim", slot_agent_has_been_special_ability, heal),
(agent_get_position, pos21, ":victim"),
(store_agent_hit_points,":life",":victim",0),
(val_add,":life",":level"),
(agent_set_hit_points,":victim",":life",0),
(position_move_z,pos21,100),
(particle_system_burst, "psys_heal_effect", pos21, 10),
(agent_set_slot, ":victim", slot_agent_special_damage_type, 0),
(agent_set_slot, ":victim", slot_agent_special_damage_time, 0),
(agent_set_slot, ":victim", slot_agent_special_damage_power, 0),
(neg|agent_slot_eq, ":victim", slot_agent_is_running_away, 0),
(agent_stop_running_away, ":victim"),
(agent_clear_scripted_mode,":victim"),
(agent_set_slot, ":victim", slot_agent_is_running_away, 0),
]),
-
Еще так же такой вопрос 1.0 влияет на высоту персонажа в итоге ведь?
да
менял на 20
ого! жестко.. :-\
пару банальных вопросов: МС скомпилировали? скин необходимый приписали юниту?
http://forums.taleworlds.com/index.php/topic,183200.msg4547229.html#msg4547229 (http://forums.taleworlds.com/index.php/topic,183200.msg4547229.html#msg4547229)
-
Да скомпелирован, да-да, именно на том сайте написано, что изменив всего в skins размер скелета можно его увеличить, но он не увеличился и поэтому значит надо что то ещё делать, если бы скелет увеличился, персонажа голова бы была намного выше, но изменений нет.
-
Скелет 2.0
Должно все работать.
-
Везет, но на ИГ почему-то не хочет просто изменяя на 2.0
-
Кто-нибудь в курсе за что отвечают эти операторы: item_has_capability и item_has_property ?
-
Кто-нибудь в курсе за что отвечают эти операторы: item_has_capability и item_has_property ?
item_has_capability - используется в команде (item_has_capability, <item_kind_no>, <capability>), которая проверяет, есть ли у предмета <item_kind_no> свойство <capability>. <capability> - свойство предмета с приставкой itc или itcf типа itcf_thrust_polearm, itcf_carry_crossbow_back, itcf_shoot_bow и т. д., если я не ошибаюсь.
item_has_property - то же самое что я описал выше, только в команде (item_has_property, <item_kind_no>, <property>) <property> - свойство предмета с приставкой itp типа itp_type_polearm, itp_primary, itp_penalty_with_shield, itp_wooden_parry и т.д.
-
Спасибо, то есть если я хочу выбрать предметы со свойством itp_civilian я могу применить оператор item_has_property ?, а как выбрать предметы со свойством imodbits_cloth ?
-
Спасибо, то есть если я хочу выбрать предметы со свойством itp_civilian я могу применить оператор item_has_property ?, а как выбрать предметы со свойством imodbits_cloth ?
Вроде бы да. Для выбора предмета с модификатором есть команда (item_has_modifier, <item_kind_no>, <item_modifier_no>), вместо <item_modifier_no> поставьте "imodbits_cloth".
-
Спасибо по item_has_property работает правильно, по imodbits_cloth проверю, отпишусь.
-
Парни, всем привет :)
Прошу помощи у знающих людей. Хочу сделать маленький скрипт по следующему принципу: на карте есть стойло где спавнятся лошади и там же расположены стога с сеном. Я хочу чтобы когда у игрока лошадь повреждена можно было подойти к сену и ее ХП восстанавливалось до полного. Написал триггер в mission temlates, но он нифига не работает, весь мозг сломал :( :( :( В скриптовании я нуб, так что сильно не пинайтесь...
(0, 0, 0, [],
[
(multiplayer_is_server),
(try_begin),
(store_current_scene, ":cur_scene"),
(eq, ":cur_scene", "scn_multi_scene_17"),
(scene_prop_get_num_instances, ":count_of_straw_b", "spr_straw_b"),
(try_for_range, ":cur_straw_b", 0, ":count_of_straw_b"),
(scene_prop_get_instance, ":straw_instance", "spr_straw_b", ":cur_straw_b"),
(prop_instance_get_starting_position, pos1,":straw_instance"),
(try_for_range, ":cur_agent"),
(agent_is_human, ":cur_agent"),
(agent_is_alive, ":cur_agent"),
(agent_get_horse, ":horse", ":cur_agent"),
(neq, ":horse", -1),
(agent_get_position, pos2, ":horse"),
(get_sq_distance_between_positions, ":dist", pos1, pos2),
(try_begin),
(le, ":dist", 10000),
(store_agent_hit_points, ":hp", ":horse"),
(lt, ":hp", 1),
(agent_set_hit_points, ":horse", 1),
(try_end),
(try_end),
]),
-
Valerian60 (http://rusmnb.ru/index.php?action=profile;u=45457),
Я полагаю, что код не работает из-за команды lt, ":hp", 1 (это условие подтверждает что ":hp" меньше одной единицы) после которой команда перестает выполняться, потому что кол-во ХП живой лошади вроде не может быть меньше одного.
я вообще советую вместо
(try_begin),
(le, ":dist", 10000),
(store_agent_hit_points, ":hp", ":horse"),
(lt, ":hp",1),
(agent_set_hit_points, ":horse", 1),
(try_end),
поставить:
(try_begin),
(le, ":dist", 10000),
(store_agent_hit_points, ":hp", ":horse"),
(assign, ":hp_new", ":hp"), #создает новую переменную равную значению жизни лошади (не знаю, может быть можно и без нее)
(val_add, ":hp_new", 5), #прибавляет к значению жизней лошади 5 единиц
(agent_set_hit_points, ":horse", ":hp_new"), #увеличевает таким образом кол-во ХП лошади на 5
(try_end),
И еще советую вместо нулей вначале (вот этих: 0, 0, 0, []) поставить какие-нибудь значения, например 0.5, 0.5, 0, [], чтобы сценарий срабатывал каждые полсекунды, например.
-
Спасибо. Попробовал сейчас внести твои исправления, но, по прежнему, ничего не работает :( Может ещё есть какие мысли?
-
Valerian60 (http://rusmnb.ru/index.php?action=profile;u=45457),
Не забыли ли вы добавить написанный триггер в нужную миссию?
Почему используете get_sq_distance_between_positions, а не get_distance_between_positions? Я не знаю чем они отличаются, поэтому прошу попробовать без sq.
-
Не забыли ли вы добавить написанный триггер в нужную миссию?
Почему используете get_sq_distance_between_positions, а не get_distance_between_positions? Я не знаю чем они отличаются, поэтому прошу попробовать без sq.
В общем, нифига не вышло.... :( Триггер добавлен в миссию "Бой до смерти". Использовал и get_sq_distance_between_positions, и get_distance_between_positions, нихрена не выходит, лошадь не лечится.... Ладно, спасибо за подсказки, буду дальше экспериментировать 8-) Если выйдет что путнее, напишу ;)
-
Valerian60
я для сетевой игры ничего не писал и могу ошибаться, но по моему у тебя в конце двух (try_end), не хватает. У тебя цикл (try_for_range, ":cur_straw_b", 0, ":count_of_straw_b") не закрыт ну и бегин первый.
-
У тебя цикл (try_for_range, ":cur_straw_b", 0, ":count_of_straw_b") не закрыт ну и бегин первый.
Цикл закрыл, но нифига... Видимо чего-то еще не хватает, либо я супер нуб :D :D Есть у меня подозрение, что я неправильно инициализировал лошадь как агента, но операция (agent_get_horse, ":horse", ":cur_agent"), вроде верная... :)
-
Все, проблема решилась, огромное спасибо человеку под ником Зюзя :thumbup: :thumbup: :thumbup: Как и обещал, вот рабочий скрипт на исцеление лошади:
(0.5, 0.5, 0, [],
[
(multiplayer_is_server),
(try_begin),
(store_current_scene, ":cur_scene"),
(eq, ":cur_scene", "scn_multi_scene_17"),
(scene_prop_get_num_instances, ":count_of_straw_b", "spr_straw_b"),
(try_for_range, ":cur_straw_b", 0, ":count_of_straw_b"),
(scene_prop_get_instance, ":straw_instance", "spr_straw_b", ":cur_straw_b"),
(prop_instance_get_starting_position, pos1,":straw_instance"),
(try_for_agents, ":cur_agent"),
(agent_is_human, ":cur_agent"),
(agent_is_alive, ":cur_agent"),
(agent_get_horse, ":horse", ":cur_agent"),
(neq, ":horse", -1),
(agent_get_position, pos2, ":horse"),
(get_sq_distance_between_positions, ":dist", pos1, pos2),
(try_begin),
(le, ":dist", 2500),
(store_agent_hit_points, ":hp", ":horse"),
(assign, ":hp_new", ":hp"),
(lt, ":hp_new", 100),
(agent_set_hit_points, ":horse", 100, 0),
(try_end),
(try_end),
(try_end),
(try_end),
]),
-
Парни, хай всем :)
Есть еще один вопрос, может кто знает. Какая функция в модульной системе может отследить был ли совершен удар игроком (агентом) по какому-либо предмету (scene_props) расположенному на сцене? :embarrassed:
-
В module_scene_props есть триггер ti_on_scene_prop_hit.
Для удобства приведу цитату из header_triggers:
ti_on_scene_prop_hit = -42.0 #can only be used in module_scene_props triggers
# Trigger Param 1: prop instance number (номер пропса)
# Trigger Param 2: hit damage (повреждение, если разрушаемое)
# Position Register 1: Hit Position (позиция удара)
# Position Register 2: x holds attacker agent id (координата х pos2 содержит ид атаковавшего)
Следовательно, чтобы узнать, кто нанес удар, нужно использовать операцию
(position_get_x,<destination_fixed_point>,<position_no>),
По сути, должно сработать. Однако нужно проверять, так как я давно работал с module_scene_props.
Совет: для примера можно найти разрушаемые объекты и посмотреть, как там реализован этот триггер.
-
Как убрать модульную систему ???? Обратно файлы были txt ?
-
Уважаемые знатоки модостроения, прошу помощи!
Сломал себе мозг по поводу точки входа ГГ в таверне. :-\
Если я правильно понимаю в module_mission_templates первый блок
mission_templates = [
(
"town_default",0,-1,
"Default town visit",
[(0,mtef_scene_source|mtef_team_0,af_override_horse,0,1,pilgrim_disguise),
(там после определения точек входа, определяются условия по пьянице и убийце)
Нулевая точка входа должна относится к ГГ, но добавляя к af_override_horse другие флаги, на ГГ это никак не отражается. :(
Если я ошибаюсь, подскажите пожалуйста эту заветную точку :), очень хочется сбросить с ГГ половину снаряги при входе в таверну.
-
Сломал себе мозг по поводу точки входа ГГ в таверне.
Собственно говоря, вы правильно все делали, но, к сожалению (в данной ситуации), в модульной системе есть скрипт, который прописывает для точки входа флаг. Вам нужно зайти в module_game_menus и найти "town_tavern". Немного ниже будут следующие строки:
(try_begin),
(eq,"$all_doors_locked",1),
(display_message,"str_door_locked",0xFFFFAAAA),
(else_try),
(call_script, "script_cf_enter_center_location_bandit_check"),
(else_try),
(assign, "$town_entered", 1),
(set_jump_mission, "mt_town_default"),
(mission_tpl_entry_set_override_flags, "mt_town_default", 0, af_override_horse),
(try_begin),
(eq, "$sneaked_into_town",1),
(mission_tpl_entry_set_override_flags, "mt_town_default", 0, af_override_all),
(try_end),
Привел большой кусок кода только потому, что это все взаимосвязанные элементы, а точнее - скрипт спауна игрока. Для вашей задачи требуется только одна строка:
(mission_tpl_entry_set_override_flags, "mt_town_default", 0, af_override_horse),
Самый простой способ - удалить ее, тогда все, что вы изменили в module_mission_templates должно сработать. Правда, если в module_mission_templates после не убрать или изменить pilgrim_disguise, то, если вы удалите какой-то предмет одежды, его должна заменить часть одежды пилигрима.
И напоследок совет: если есть какие-то проблемы с появлением агентов, а в module_mission_templates все правильно - ищите скрипт, который вызывает их появление. То есть, если сцена и агент появляются после нажатия кнопки меню - ищите эту кнопку. Если после диалога - ищите диалог. И так далее. Скорее всего, ответ будет там.
-
Зюзя низкий поклон за столь развернутый, а самое главное, понятный ответ :)
Жаль, что вернусь к компу с модулькой и питоном только через пару дней, жуть как чешется добро творить на право и налево для ГГ моего сына :D
И раз пошла такая пьянка, может вы подскажите еще по одному вопросику :)
Захотелось мне в своем моде тоже завесть зависимость скила мощный выстрел от того, что на руки одето.
На просторах форума отсылка -делай как с книгами. Там основное зерно - это изменить маленький скрипт "game_get_skill_modifier_for_troop" под свои нужды.
Модифицировал
#script_game_get_skill_modifier_for_troop
# This script is called from the game engine when a skill's modifiers are needed
# INPUT: arg1 = troop_no, arg2 = skill_no
# OUTPUT: trigger_result = modifier_value
("game_get_skill_modifier_for_troop",
[(store_script_param, ":troop_no", 1),
(store_script_param, ":skill_no", 2),
(assign, ":modifier_value", 0),
(try_begin),
(eq, ":skill_no", "skl_wound_treatment"),
(call_script, "script_get_troop_item_amount", ":troop_no", "itm_book_wound_treatment_reference"),
(gt, reg0, 0),
(val_add, ":modifier_value", 1),
(else_try),
(eq, ":skill_no", "skl_trainer"),
(call_script, "script_get_troop_item_amount", ":troop_no", "itm_book_training_reference"),
(gt, reg0, 0),
(val_add, ":modifier_value", 1),
(else_try),
(eq, ":skill_no", "skl_surgery"),
(call_script, "script_get_troop_item_amount", ":troop_no", "itm_book_surgery_reference"),
(gt, reg0, 0),
(val_add, ":modifier_value", 1),
## mymod
(else_try),
(eq, ":skill_no", "power_draw"),
(try_begin),
(troop_has_item_equipped,":troop_no","itm_leather_gloves"),
(val_add, ":modifier_value", 1),
(else_try),
(troop_has_item_equipped,":troop_no","itm_gauntlets"),
(val_add, ":modifier_value", -2),
(else_try),
(this_or_next|troop_has_item_equipped,":troop_no","itm_mail_mittens"),
(troop_has_item_equipped,":var0","itm_scale_gauntlets"),
(val_add, ":modifier_value", -10),
(try_end),
## mymod
(try_end),
(set_trigger_result, ":modifier_value"),
]),
Результат половинчатый, скил мощный выстрел в характеристиках ГГ и непесей меняется четко - на руках mail_mittens скил 0.
Да только игре пофиг, ГГ и непесь как мог взять и стрелять из требовательного лука, так и дальше может. :blink:
Чисто для проверки в module_constants.py
reference_books_end = trade_goods_begin заменил на reference_books_end = "itm_wrapping_boots" дабы включить рукавицы в книги, однако результат прежний :(
-
Да только игре пофиг, ГГ и непесь как мог взять и стрелять из требовательного лука, так и дальше может.
Насколько я помню, нельзя брать вещь, если не хватает навыка. Точно не знаю, могу с уверенностью сказать, что с атрибутами так. Другое дело, что если уже надето, сам предмет не снимается, даже если не хватает навыка (что поделать, в игре нет понижения навыков, вот разработчики этим и не стали морочить себе голову).
Так или иначе, это можно исправить скриптом, который будет проверять уровень навыка и, если он недостаточен, снимать предмет. Правда, насколько помню, нет команды проверить у предмета требуемый скилл, поэтому действие придется прописывать для каждого предмета.
К слову, можно задействовать два пути: пойти через troops или через module_mission_templates. Если первый вариант, то нужно у каждого troop проверять навык, и для каждого слота оружия и каждого типа оружия с ограничением писать перемещение в инвентарь (а точнее, сначала удалять, а потом такое же оружие с таким же модификатором добавлять). Не говоря уже о том, когда активировать скрипт, чтобы игрок не мог его обойти. Так что такой способ невероятно сложен, зато честно предупреждает игрока, что в грядущем сражении у него не будет того или иного оружия.
Второй способ гораздо проще: у каждого агента в каждой mission_templates проверять право на владение оружием и, если он не может... удалять. Это очень жестоко по отношению к игроку (раз - и неожиданно оказался без любимого лука, а кругом десятки врагов), и вызовет справедливую неприязнь. Но навскидку, этот способ проще раз в десять реализовать.
Возможно, я как-нибудь напишу скрипт для такой задачи, но не знаю, когда.
-
Насколько я помню, нельзя брать вещь, если не хватает навыка. Точно не знаю, могу с уверенностью сказать, что с атрибутами так. Другое дело, что если уже надето, сам предмет не снимается, даже если не хватает навыка
В моем случае ГГ и непись - одевает(берет) и снимает длинный лук с требованием сильного выстрела 3, в кольчужных рукавицах, которые изменили скил на 0. А самое обидное одевая кожаные перчатки увеличивающие скил на +1, ГГ и непись не может взять лук с большим требованием на 1, чем его реальный скил.
Сейчас проверил, на сцене и в инвентаре при проверке возможности взять лук используется базовая характеристика скила. Где же эта собака(проверка) зарыта? >:(
Хотя изменение скила перчатками-рукавицами в игре тоже отражается: соответственно сразу меняется наносимый урон и процесс прицеливания тоже. :-\
Сама идея ограничения была увидена в моде Русь 13 век, там ели на ГГ был требовательный лук, и и одев рукавицы решил воспользоваться, то лук просто скидывается на землю.
-
А самое обидное одевая кожаные перчатки увеличивающие скил на +1, ГГ и непись не может взять лук с большим требованием на 1, чем его реальный скил.
Здесь ничто не поможет, похоже, это движок игры.
Где же эта собака(проверка) зарыта?
Насколько помню, проверка на сцене и в инвентаре тоже происходит в движке. Модульная система здесь не поможет.
Сама идея ограничения была увидена в моде Русь 13 век, там ели на ГГ был требовательный лук, и и одев рукавицы решил воспользоваться, то лук просто скидывается на землю.
Мне так обидно. Я же это и предлагал!
Второй способ гораздо проще: у каждого агента в каждой mission_templates проверять право на владение оружием и, если он не может... удалять. Это очень жестоко по отношению к игроку (раз - и неожиданно оказался без любимого лука, а кругом десятки врагов), и вызовет справедливую неприязнь. Но навскидку, этот способ проще раз в десять реализовать.
Попробуйте написать триггер в mission_templates, который будет осуществлять свою проверку и удалять оружие, если оно не подходит.
-
Уважаемый Зюзя, прошу прощения за несколько поздний ответ (благо работы подвалило :)
Мне так обидно. Я же это и предлагал!
И уж тем более никого не хотелось обидеть :)
Попробуйте написать триггер в mission_templates, который будет осуществлять свою проверку и удалять оружие, если оно не подходит.
Для меня это означает разбирательством с новым пластом модульки (тригеры для агентов в сценах). И похоже Банерлорд выйдет раньше чем я сыграю хоть разок в свой мод facepalm
В соседней теме вы давали советы про огнестрел и сбивание с ног, попробую для себя что то выжать :crazy:
-
Уважаемые господа,нужна ваша помощь
Добавил новую фракцию в мультиплеер. играть за фракцию можно,боты есть и классы тоже,но для покупки брони доступная только стандартная(их нетива) новые вещи не видны вообще,хотя я их добавил на покупку
Подскажите пожалуйста как добавить модовые вещи
Добавлено: 17 Ноября, 2016, 22:58
Уже разобрался,я забыл новой броне слоты приписать в мульте
-
Я сделал спавнящихся воинов как в начале было показано. Короче тупо копировал)) Но мне модулька пишет ошибку "Tupe Error:'tuple' objekt is not callable что это за черт, я же тупо копировал?
-
Но мне модулька пишет ошибку "Tupe Error:'tuple' objekt is not callable
Данная ошибка выдается, если у переменной не проставлен префикс. Не совсем понятно, о каком коде вы спрашиваете (надо было дать его цитатой), но если это тот, который на самой первой странице, то попробуйте заменить vaegir_knight на trp_vaegir_knight.
-
Чтобы правильно установить питон, ему надо прописать путь.
Но у меня в системных переменных не активна нужна кнопка "изменить". Права администратора есть. Почему так?
-
Но мне модулька пишет ошибку "Tupe Error:'tuple' objekt is not callable что это за черт, я же тупо копировал?
Похоже что у вас где-то пропущена запятая. Ошибка говорит об этом 8-) Проверьте код повнимательнее ;)
-
Чтобы правильно установить питон, ему надо прописать путь.
Но у меня в системных переменных не активна нужна кнопка "изменить". Права администратора есть. Почему так
Я вообще скрипты пишу в текстовом редакторе, (открываю ру файлы прогой Notepad++) а не в питоне)) А компилирую все bat файлом. Так что по сути этот питон нафиг не нужен... :)
-
Парни, всем снова ку ;)
Вопрос у меня все тот же, касается отслеживания удара по предмету на сцене (scene_props). Вот как можно реализовать например движение платформы после удара мечом например по черепу (spr_skeleton_head)? Или как на дуэльном сервере Lidus запускается ФТ после удара игроками по наковальне? Зюзя, писал про триггер ti_on_scene_prop_hit в module_scene_props, но может есть еще какие варианты? :embarrassed: Буду рад любым подсказкам :embarrassed:
-
Здравствуйте!
Тут интересовались созданием юнитов разного размера, и мне вопросы задавали, поэтому отпишусь здесь, хоть и с опозданием.
Для создания юнита имеющего стандартный скелет нужно внести следующие изменения:
Файл module_skins.py
После
(
"undead", 0,
"undead_body", "undead_calf_l", "undead_handL",
"undead_head", undead_face_keys,
[],
[],
[],
[],
[("undeadface_a",0xffffffff,[]),
("undeadface_b",0xffcaffc0,[]),
], #undead_face_textures
[], #voice sounds
"skel_human", 1.0,
),
Добавляем свой мужской или женский скелет, например
(
"dorbeor", 0,
"man_body", "man_calf_l", "m_handL",
"male_head", man_face_keys,
["man_hair_s","man_hair_m","man_hair_n","man_hair_o", "man_hair_y10", "man_hair_y12","man_hair_p","man_hair_r","man_hair_q","man_hair_v","man_hair_t","man_hair_y6","man_hair_y3","man_hair_y7","man_hair_y9","man_hair_y11","man_hair_u","man_hair_y","man_hair_y2","man_hair_y4"], #man_hair_meshes ,"man_hair_y5","man_hair_y8",
["beard_e","beard_d","beard_k","beard_l","beard_i","beard_j","beard_z","beard_m","beard_n","beard_y","beard_p","beard_o", "beard_v", "beard_f", "beard_b", "beard_c","beard_t","beard_u","beard_r","beard_s","beard_a","beard_h","beard_g",], #beard meshes ,"beard_q"
["hair_blonde", "hair_red", "hair_brunette", "hair_black", "hair_white"], #hair textures
["beard_blonde","beard_red","beard_brunette","beard_black","beard_white"], #beard_materials
[("manface_young_2",0xffcbe0e0,["hair_blonde"],[0xffffffff, 0xffb04717, 0xff502a19]),
("manface_midage",0xffdfefe1,["hair_blonde"],[0xffffffff, 0xffb04717, 0xff632e18, 0xff502a19, 0xff19100c]),
("manface_young",0xffd0e0e0,["hair_blonde"],[0xff83301a, 0xff502a19, 0xff19100c, 0xff0c0d19]),
# ("manface_old",0xffd0d0d0,["hair_white","hair_brunette","hair_red","hair_blonde"],[0xffffcded, 0xffbbcded, 0xff99eebb]),
("manface_young_3",0xffdceded,["hair_blonde"],[0xff2f180e, 0xff171313, 0xff007080c]),
("manface_7",0xffc0c8c8,["hair_blonde"],[0xff171313, 0xff007080c]),
("manface_midage_2",0xfde4c8d8,["hair_blonde"],[0xff502a19, 0xff19100c, 0xff0c0d19]),
("manface_rugged",0xffb0aab5,["hair_blonde"],[0xff171313, 0xff007080c]),
# ("manface_young_4",0xffe0e8e8,["hair_blonde"],[0xff2f180e, 0xff171313, 0xff007080c]),
("manface_african",0xff807c8a,["hair_blonde"],[0xff120808, 0xff007080c]),
# ("manface_old_2",0xffd5d5c5,["hair_white"],[0xffffcded, 0xffbbcded, 0xff99eebb]),
], #man_face_textures,
[(voice_die,"snd_man_die"),(voice_hit,"snd_man_hit"),(voice_grunt,"snd_man_grunt"),(voice_grunt_long,"snd_man_grunt_long"),(voice_yell,"snd_man_yell"),(voice_stun,"snd_man_stun"),(voice_victory,"snd_man_victory")], #voice sounds
"skel_human", 0.95,
psys_game_blood,psys_game_blood_2,
[[1.7, comp_greater_than, (1.0,face_width), (1.0,temple_width)], #constraints: ex: 1.7 > (face_width + temple_width)
[0.3, comp_less_than, (1.0,face_width), (1.0,temple_width)],
[1.7, comp_greater_than, (1.0,face_width), (1.0,face_depth)],
[0.3, comp_less_than, (1.0,eyebrow_height), (1.0,eyebrow_position)],
[1.7, comp_greater_than, (1.0,eyebrow_height), (1.0,eyebrow_position)],
[-0.7, comp_less_than, (1.0,nose_size), (-1.0,nose_shape)],
[0.7, comp_greater_than, (1.0,nose_size), (-1.0,nose_shape)],
[2.7, comp_greater_than, (1.0,chin_size), (1.0,mouth_nose_distance), (1.0,nose_height), (-1.0,face_width)],
]
),
Где :
"skel_human", 0.95, - размер юнита с шагом в 0.01;
dorbeor название Вашего скина, которое будет фигурировать в описании юнита, в файле module_troops.py
Файл header_troops.py
После
tf_undead = 2
Добавляем название своего скина из module_skins.py, например
tf_dorbeor = 3 # (man Doriath / man Beor) 0.95 from tf_male Что бы не запутаться, комментируем какой фракции или линейке принадлежит, желательно на английском.
Где :
3 - следующий порядковый номер за последним имеющимся, в данном случае - "tf_undead = 2";
Файл module_troops.py
Теперь вносим дополнительный флаг и разделитель tf_dorbeor| в запись юнитов, рост которых хотим сделать как у dorbeor(0.95)
Изменяем например "Steppe Bandit"
["steppe_bandit","Steppe Bandit","Steppe Bandits", tf_guarantee_boots|tf_guarantee_armor|tf_guarantee_horse|tf_guarantee_ranged| tf_mounted,0,0,fac_outlaws,
[itm_arrows,itm_sword_khergit_1,itm_winged_mace,itm_spear, itm_light_lance, itm_nomad_bow,itm_nomad_bow,itm_short_bow,itm_jarid,itm_leather_steppe_cap_a, itm_leather_steppe_cap_b,itm_nomad_cap,itm_nomad_cap_b,itm_khergit_armor, itm_steppe_armor,itm_leather_vest,itm_hide_boots,itm_nomad_boots, itm_leather_covered_round_shield,itm_leather_covered_round_shield, itm_saddle_horse,itm_steppe_horse,itm_steppe_horse],
def_attrib|level(12),wp(100), knows_riding_4|knows_horse_archery_3|knows_power_draw_3, khergit_face_young_1, khergit_face_old_2],
Получаем
["steppe_bandit","Steppe Bandit","Steppe Bandits", tf_dorbeor|tf_guarantee_boots|tf_guarantee_armor|tf_guarantee_horse|tf_guarantee_ranged| tf_mounted,0,0,fac_outlaws,
[itm_arrows,itm_sword_khergit_1,itm_winged_mace,itm_spear, itm_light_lance, itm_nomad_bow,itm_nomad_bow,itm_short_bow,itm_jarid,itm_leather_steppe_cap_a, itm_leather_steppe_cap_b,itm_nomad_cap,itm_nomad_cap_b,itm_khergit_armor, itm_steppe_armor,itm_leather_vest,itm_hide_boots,itm_nomad_boots, itm_leather_covered_round_shield,itm_leather_covered_round_shield, itm_saddle_horse,itm_steppe_horse,itm_steppe_horse],
def_attrib|level(12),wp(100), knows_riding_4|knows_horse_archery_3|knows_power_draw_3, khergit_face_young_1, khergit_face_old_2],
Или для героев
["npc1","Borcha","Borcha",tf_dorbeor|tf_hero|tf_unmoveable_in_party_window, 0, reserved, fac_commoners,[itm_khergit_armor,itm_nomad_boots,itm_knife],
str_8|agi_7|int_12|cha_7|level(3),wp(60),knows_tracker_npc| knows_ironflesh_1|knows_power_strike_1|knows_pathfinding_3|knows_athletics_2|knows_tracking_1|knows_riding_2, #skills 2/3 player at that level
0x00000004bf086143259d061a9046e23500000000001db52c0000000000000000],
Имейте в виду, что при изменении размера юнита, все вещи из его инвентаря, кроме лошади, также автоматически изменяются пропорционально его размеру.
Для юнитов с нестандартным скелетом посложнее, точно пока сказать не могу, у самого есть некоторые вопросы.
-
всем привет. установил я мод freelancer пытался чутя для себя подправить с мс, но модулька ругается при компиляции. Кто-то с этим уже сталкивался?
-
Привет, кто-то знает, можно ли заспавнить лошадь и посадить на нее игрока на сцене?
-
Парни, всем привет 8-)
Снова хочу попросить у Вас подсказку, надеюсь что поможете)) Вопрос вот в чем, никто не знает случаем, какой скрипт в модульке отвечает за включение/отключение автоблока в настройках игры?
Буду признателен любым подсказкам :embarrassed:
Собственно говоря, вопрос порожден вот чем 8-) Есть команда для агента (agent_set_defend_action, <agent_id>, <value>, <duration-in-1/1000-seconds>), почему агент, в данном случае бот, выполняет заданное мною действие защиты только в том случае, если в настройках игры способ блокирования стоит автоматический? Может можно как-то активировать автоблок только для конкретного бота(ов)?
-
Хочется протестить анимацию на entry point и добавить анимированную стрелку из туториала на карту для NW.
Вырезал такой кусок кода из туториала в mission_templates:
(scene_prop_get_instance, ":prop_instance", "spr_pointer_arrow", 0),
(entry_point_get_position, pos0, 3),
(position_set_z_to_ground_level, pos0),
(prop_instance_stop_animating,":prop_instance"),
(prop_instance_set_position, ":prop_instance", pos0),
(assign, "$g_pointer_arrow_height_adder", 120),
Изменил значение точки входа и поставил # в строку про уровень земли, которая, вроде как, только для миссий (пробовал компилировать и с ней, если что). Добавил условия. Получилось так:
(call_script, "script_iterate_pointer_arrow"),
(try_begin),
(store_current_scene, ":cur_scene"),
(eq, ":cur_scene", "scn_mp_beach"),
(scene_prop_get_instance, ":prop_instance", "spr_pointer_arrow", 0),
(entry_point_get_position, pos1, 88),
#(position_set_z_to_ground_level, pos0),
(prop_instance_stop_animating,":prop_instance"),
(prop_instance_set_position, ":prop_instance", pos0),
(assign, "$g_pointer_arrow_height_adder", 10),
(try_end),
Нашел строку (assign, "$g_multiplayer_game_type", multiplayer_game_type_battle), , добавил в ti_before_mission_start строку (assign, "$g_pointer_arrow_height_adder", 100),
а в ti_after_mission_start сунул свой вышевыложенный код.
Компилит без ошибок, но на карте в режиме битвы на точке 88 царит пустота :(. Прошу помочь, кому не лень разобраться)
----------
И да, как при движении объекта сделать его твердым, чтобы на нем можно было стоять? Ибо те же лестницы при движении прозрачны для игрока, а вот лодки - всегда твердая поверхность. Ииии, я прошу прощения за обилие вопросов :embarrassed: , но как хоть примерно привязать анимацию какого-то объекта к нажатию на лебедку/удару по объекту etc.? Ибо когда я искал код анимации опускной решетки, я нашел только это (store_script_param, ":instance_id", 1),
(prop_instance_get_scene_prop_kind, ":scene_prop_id", ":instance_id"),
(try_begin),
(this_or_next|eq, ":scene_prop_id", "spr_winch_b"),
(eq, ":scene_prop_id", "spr_winch"),
(assign, ":effected_object", "spr_portcullis"),
(else_try),
(assign, ":effected_object", ":scene_prop_id"),
(try_end),
(scene_prop_get_slot, ":item_situation", ":instance_id", scene_prop_open_or_close_slot),
(try_begin), #opening/closing portcullis
(eq, ":effected_object", "spr_portcullis"),
(try_begin),
(eq, ":item_situation", 0),
(str_store_string, s0, "str_open_gate"),
(else_try),
(str_store_string, s0, "str_close_gate"),
(try_end),
Честно, не совсем понимаю, что означает команда "str_store_string" и куда она отсылается. Встроенный API Sublime Text не особо помог(... как я понял, это из движка игры...
-
Хочется протестить анимацию на entry point и добавить анимированную стрелку из туториала на карту для NW.
Уточни конкретно что ты хочешь сделать, а то я не очень понял :) Просто добавить pointer_arrow в то место где находится твоя entry point или хочешь заставить стрелку двигаться в этом месте? :)
-
Заставить двигаться, конечно. Впрочем, это можно сделать и обычной анимацией на все объекты на карте, но если на карте много стрелок и не требуется анимировать все, выделить конкретно одну, нужную, для анимации я могу только через entry point или создав новый объект с другим названием. В туториале NW анимированная стрелка появлялась именно на entry point.
-
Заставить двигаться, конечно. Впрочем, это можно сделать и обычной анимацией на все объекты на карте, но если на карте много стрелок и не требуется анимировать все, выделить конкретно одну, нужную, для анимации я могу только через entry point или создав новый объект с другим названием. В туториале NW анимированная стрелка появлялась именно на entry point.
Если никто до завтра не подскажет, то завтра отпишусь, есть у меня вариант. Просто сейчас я от компа далеко. А если сильно охота, то попробуй использовать скрипт перемещения черепа на сцене в mission templates, разместив его в соответствующей миссии. Скрипт этот вроде в этой теме один парень пораньше выкладывал 8-)
-
Да впрочем не надо уже, я сам за ночь разобрался 8-)
На entry point стрелку так и не получилось добавить, но анимацию к просто новому объекту оказалось добавить проще простого. Главное, чтобы на сервере это все работало... =/
-
Всем привет, кто пробовал Freelancer декомпилировать? У меня потом на него МС ругается
-
Всем привет! Добавил новую форму в NW, создал новые лица солдатам в генераторе, прописал их в модульной системе (добавил их сначала в конец списка лиц, потом в начало списка, но разницы не увидел при изменении положения лиц в списке, и назначил только эти новые лица юнитам), но столкнулся с несколькими проблемами:
а) у многих ботов лица сгенерированы абсолютно не в пределах тех, которые я им назначал, особенно хорошо это видно по волосам - в данном случае все боты должны были все иметь эспаньолки и разные виды коротких причесок, а на скриншоте видно, что у некоторых вообще нет усов и бороды, и практически у всех не те прически, которые я им назначал.
(https://pp.vk.me/c638523/v638523177/26f56/wGCbQP5YqaU.jpg)
б) на этом скриншоте не видно, но у некоторых ботов увеличены головы (по сравнению с тем, как я им генерировал внешность) и поэтому сквозь модель головных уборов выступает модель головы.
Кто-нибудь может подсказать, в чем может быть дело?
Я думал посмотреть как сделано так, что у военачальников в NW (например, Кутузова) лица генерируются все время одинаково - но там то же, что у всех, тот же диапазон лиц что и у ботов. Вероятно, это задано где-то в скриптах, но не знаю даже где искать.
По теме нашел только один туториал, как добавлять новые прически в генератор, но там нет ответа на эти вопросы.
-
И снова хочу задать вопрос :D
Подскажите, кто знает, есть ли в модульке возможность задать цикл для повтора одной операции, но несколько раз подряд. Попробую пояснить, например, я пишу такой код:
(try_for_agents, ":agent"),
(agent_is_active, ":agent"),
(agent_is_human, ":agent"),
(agent_is_alive, ":agent"),
(agent_is_alarmed, ":agent"),
(try_begin),
(eq, ...........),
(store_random_in_range, ":chislo", 0, 4),
(agent_set_attack_action, ":agent", ":chislo", 0),
(try_end),
(try_end),
Так вот, мне нужно, чтобы атакующее действие agent_set_attack_action, а точнее, количество его повторов, я мог программно задать, желательно рандомно. Т.е. чтобы агент атаковал например сейчас 3 раза подряд, через какое-то мгновение 1 раз, потом делал серию из 5 атак и.т.д. Вот как это реализовать, может поделитесь идеями? :)
-
Подскажите, кто знает, есть ли в модульке возможность задать цикл для повтора одной операции, но несколько раз подряд.
try_for_range
Вот как это реализовать, может поделитесь идеями?
Триггером вида(я не точно помню, как пишуться триггеры в mission templates(вожможно надо писать вместо (время мгновения,
(t, u, w,
):
(время мгновения, [
(store_random_in_range, ":r", 0, 4),
//атаковать r раз
]),
-
(время мгновения, [
(store_random_in_range, ":r", 0, 4),
//атаковать r раз
]),
А если подробнее :blink: Вы имеете в виду нечто подобное?
(1.0, 0, 0 [],
[
(store_random_in_range, ":r", 2, 5),
(try_for_range, 1, ":r"),
(agent_set_attack_action, ":agent", ":chislo", 0),
(try_end),
-
Как получить ID объектов, которые в редакторе карт находятся во вкладке item_kinds? Я хочу для удобства картоделания прописать автоматический спаун подбираемого оружия в том месте, где был поставлен этот "муляж" чтобы не париться с расстановкой entry_point.
p.s. Я могу написать новые объекты в module_scene_props, используя меши предметов, а потом написать для них код спауна подбираемого оружия, но мне пока не хочется создавать копии одних и тех же предметов, что и в items если в этом нет большого смысла.
Парни, всем снова ку ;)
Вопрос у меня все тот же, касается отслеживания удара по предмету на сцене (scene_props). Вот как можно реализовать например движение платформы после удара мечом например по черепу (spr_skeleton_head)? Или как на дуэльном сервере Lidus запускается ФТ после удара игроками по наковальне? Зюзя, писал про триггер ti_on_scene_prop_hit в module_scene_props, но может есть еще какие варианты? :embarrassed: Буду рад любым подсказкам :embarrassed:
Я пробовал сделать через module_mission_templates, но в итоге все равно надо узнавать ID объекта из scene_props, на котором совершено действие.
Если в module_scene_props прописать объекту то же, что например, написано для лебедки
("winch_b",sokf_static_movement|spr_use_time(5),"winch_b","bo_winch", [
(ti_on_scene_prop_use,
[
(store_trigger_param_1, ":agent_id"),
(store_trigger_param_2, ":instance_id"),
#for only server itself-----------------------------------------------------------------------------------------------
(call_script, "script_use_item", ":instance_id", ":agent_id"),
#for only server itself-----------------------------------------------------------------------------------------------
(try_for_range, ":player_no", 1, multiplayer_player_loops_end), #0 is server so starting from 1
(player_is_active, ":player_no"),
(multiplayer_send_2_int_to_player, ":player_no", multiplayer_event_use_item, ":instance_id", ":agent_id"),
(try_end),
]),
]),
, то в module_scripts можно через 'store_script_param' вызвать переменную, в данном случае ":agent_id" или ":instance_id", которая записала ID активировавшего агента/объекта типа "winch_b", с которым было совершено какое-то действие, в данном случае - активация . Ну а дальше уже через 'prop_instance_get_scene_prop_kind' получить из ID тип объекта (winch_b), и, если это нужный объект - дальше пиши код, что надо делать после нажатия на кнопку. Не знаю, поздно написал или нет - сам недавно с этой фичей разобрался на примере записи открытия/закрытия опускной решетки в module_scripts.
-
Вы имеете в виду нечто подобное?
Да.
-
Всем массовый салямалейкум! Я тут наткнулся, что некто Janycz , да и не только он, наверное, сталкивался с проблемосом в моде Freelancer. Его хрен внедришь, модулька на него всегда ругается, может кто это решил? Заранее благодарю
-
кто пробовал Freelancer декомпилировать?
При декомпиляции декомпилятор не предоставит идеальный код, насколько я знаю. Нужен опытный программист, который сможет исправить ошибки, возникшие при декомпиляции. Поищи на форуме Talewords исходники Freelancer, наверняка где-то имеются.
-
При декомпиляции декомпилятор не предоставит идеальный код, насколько я знаю. Нужен опытный программист, который сможет исправить ошибки, возникшие при декомпиляции. Поищи на форуме Talewords исходники Freelancer, наверняка где-то имеются.
Я пробовал декомпилировать один мод в Native получился чистый без ошибок код. :) Просто есть одно НО) При декомпиляции будут утеряны все локальные переменные, точнее их исходные названия. Вместо переменных ":cur_agent", ":troop", ":item" и.т.д. будет написано ":var0", ":var1", ":var2". Еще в файле module_constants будет пусто. Все слоты которые есть изначально и те которые добавлены мододелом будут утеряны, а в скриптах упоминания на них будут встречаться.
Мне так пришлось полностью переделать скрипт, потому как я так и не понял, что за слот использовал автор. Хотя алгоритм написания скриптов абсолютно верен, а это уже не мало 8-) Есть от чего отталкиваться самому :)
-
Были исходники Фриланса v1.51. В этой теме пример подключения (http://rusmnb.ru/index.php?topic=8964.msg332618#msg332618) через модмерж.
-
Подскажите, если знаете!
Есть в игре объекты (к примеру, еда или черепа), чьи модельки пропадают, когда игрок отходит от них на расстояние . Как можно сделать так, чтобы их было видно на любом расстоянии? Очень нужно!
-
Луций (http://rusmnb.ru/index.php?action=profile;u=41189), может-быть лодов (lods) просто не хватает
-
Луций, может-быть лодов (lods) просто не хватает
Проблема в том, что я делаю мод для мультиплеерного сервера и изменение текстур и .dds файлов за пределами модульной системы повлечет за собой то, что никто этих изменений не увидит со стандартным клиентом. :(
-
Всем привет))
Снова прошу помощи... Проблема вот в чем. Как сделать чтобы например при битве двух игроков когда один умирает, точка его возрождения "entry_point" была в месте его смерти? Я написал код в mission_templates, но он, зараза, почему-то не работает и игроки появляются где попало... :( В чем может быть моя ошибка?
Кстати, подобный скрипт видимо имеется на дуэльном сервере Ludus. Там игроки возрождаются тоже рядом со своим трупом.
(0, 0, 0, [],
[
(multiplayer_is_server),
(store_trigger_param_1, ":cur_agent"),
(try_for_agents, ":cur_agent"),
(agent_is_human, ":cur_agent"),
(agent_is_alive, ":cur_agent"),
(agent_is_active, ":cur_agent"),
(store_agent_hit_points, ":hp", ":cur_agent"),
(try_begin),
(is_between, ":hp", 0, 1),
(assign, ":cur_agent_new", ":cur_agent"),
(agent_get_position, pos2, ":cur_agent_new"),
(store_random_in_range, ":chislo", 0, 65),
(entry_point_set_position, ":chislo", pos2),
(set_jump_entry, ":chislo"),
(agent_set_slot, ":cur_agent_new", slot_agent_spawn_entry_point, ":chislo"),
(try_end),
(try_end),
]),
-
(agent_is_human, ":cur_agent"),
Это лишнее .
(is_between, ":hp", 0, 1),
Я не уверен, но наверное лучше все же написать просто Если можно сделать проще - лучше сделать проще. Мало ли..
(assign, ":cur_agent_new", ":cur_agent"),
Подожди, зачем создавать новую переменную? Если условие с 0 здоровья выполняется, все действия и так можно выполнять на ":cur_agent". Может я что-то не углядел, но как я понимаю, новая переменная тут лишняя. Во всяком случае, когда я делал триггер на постепенную регенерацию, я обошелся без новой переменной. Как по мне, чем меньше лишнего в коде - тем лучше. Вот мой код; может, поможет :(try_for_agents, ":bonused_agent"),
(agent_is_active,":bonused_agent"),
(agent_is_alive,":bonused_agent"),
(agent_get_slot, ":bonused_agent_slot", ":bonused_agent", slot_agent_ate_pork),
(try_begin),
(eq, ":bonused_agent_slot", 2),
(agent_set_slot, ":bonused_agent", slot_agent_ate_pork, 3),
(assign, ":bonused_agent_slot", 3),
(try_end),
(try_begin),
(this_or_next|eq, ":bonused_agent_slot", 2),
(this_or_next|eq, ":bonused_agent_slot", 3),
(this_or_next|eq, ":bonused_agent_slot", 4),
(this_or_next|eq, ":bonused_agent_slot", 5),
(this_or_next|eq, ":bonused_agent_slot", 6),
(eq, ":bonused_agent_slot", 7),
(store_agent_hit_points, ":cur_agent_health", ":bonused_agent", 1),
(assign, ":new_agent_health", ":cur_agent_health"),
(val_add, ":new_agent_health", 5),
(try_end),
(try_begin),
(neq, ":bonused_agent_slot", 8),
(this_or_next|eq, ":bonused_agent_slot", 3),
(this_or_next|eq, ":bonused_agent_slot", 4),
(this_or_next|eq, ":bonused_agent_slot", 5),
(this_or_next|eq, ":bonused_agent_slot", 6),
(eq, ":bonused_agent_slot", 7),
(agent_set_hit_points, ":bonused_agent", ":new_agent_health", 1),
(agent_set_speed_modifier, ":bonused_agent", 90),
(else_try),
(eq, ":bonused_agent_slot", 8),
(agent_set_speed_modifier, ":bonused_agent", 100),
(try_end),
(try_begin),
(eq, ":bonused_agent_slot", 3),
(agent_set_slot, ":bonused_agent", slot_agent_ate_pork, 4),
(else_try),
(eq, ":bonused_agent_slot", 4),
(agent_set_slot, ":bonused_agent", slot_agent_ate_pork, 5),
(else_try),
(eq, ":bonused_agent_slot", 5),
(agent_set_slot, ":bonused_agent", slot_agent_ate_pork, 6),
(else_try),
(eq, ":bonused_agent_slot", 6),
(agent_set_slot, ":bonused_agent", slot_agent_ate_pork, 7),
(else_try),
(eq, ":bonused_agent_slot", 7),
(agent_set_slot, ":bonused_agent", slot_agent_ate_pork, 8),
(try_end),
(try_end)
(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? И зачем тебе тут слоты в этом коде нужны?
-
Привет, Луций.
Спасибо за столь быстрый ответ. ;) У меня есть несколько вопросов по твоему сообщению. Начну по порядку :)
1. (agent_is_human, ":cur_agent"),
Это лишнее .
Почему проверка на то что агент является человеком лишняя? :blink:
2. Я не уверен, но наверное лучше все же написать просто (lt, ":hp", 1),
Если можно сделать проще - лучше сделать проще. Мало ли..
Написал так как ты говорил, плюс ко всему попробовал убрать новую переменную и изменить условие (store_random_in_range, ":chislo", 0, 65), на (store_random_in_range, ":chislo", 0, 63), номер позиции в операции
(agent_get_position, pos2, ":cur_agent_new"), тоже изменил, но из этого роя, не вышло ничего абсолютно. Проверял на себе)) Мой персонаж после смерти так и продолжает появляться где попало. >:(
(agent_set_slot, ":cur_agent_new", slot_agent_spawn_entry_point, ":chislo"),
Такой слот точно есть)) Я его брал как раз-таки из файла module_constants 8-) Я решил использовать слот по той причине чтобы операция возрождения игрока была применена для всех агентов на сцене, удовлетворяющих данным условиям.
Кстати, на форуме taleworlds.com мне посоветовали использовать операцию в триггере ti_on_agent_killed_or_wounded и (set_spawn_position, <position>), для появления игрока, но пока либо я туп и не все понял :D, либо надо использовать другие команды и условия 8-)
-
Привет.
Почему проверка на то что агент является человеком лишняя?
Потому что лошадь все равно не будет спауниться на Entry Point'ах, созданных для игроков. Ну впрочем, оставляй - компьютер чуть быстрее будет обрабатывать всех агентов если исключит лошадей. Это не принципиально.
Написал так как ты говорил, плюс ко всему попробовал убрать новую переменную и изменить условие (store_random_in_range, ":chislo", 0, 65), на (store_random_in_range, ":chislo", 0, 63), номер позиции в операции
(agent_get_position, pos2, ":cur_agent_new"), тоже изменил, но из этого роя, не вышло ничего абсолютно. Проверял на себе)) Мой персонаж после смерти так и продолжает появляться где попало.
Гхм, я тут подумал. Раз агент помер, значит он уже не _alive, да? Он может быть еще _active некоторое время после смерти, но точно уже не _alive ))
Такой слот точно есть)) Я его брал как раз-таки из файла module_constants Я решил использовать слот по той причине чтобы операция возрождения игрока была применена для всех агентов на сцене, удовлетворяющих данным условиям.
Не знаю насчет этой темы, т.к. я сам работаю с модульной системой Napoleonic Wars и там этого слота нет. Так что ничего не могу на этот счет сказать)
ti_on_agent_killed_or_wounded и (set_spawn_position, <position>)
Все правильно, я вспомнил как это делается. Вместо первого нолика своего триггера вписывай ti_on_agent_killed_or_wounded...
Ладно, мне лень объяснять, лучше код попробую сам написать.
Кстати, вместо проверки по уровню здоровья можно использовать
(neg|agent_is_alive, ":cur_agent"),.
Скорее всего это будет выглядеть примерно так:
(ti_on_agent_killed_or_wounded, 0, 0, [],
[
# (multiplayer_is_server),
# (store_trigger_param_1, ":cur_agent"),
(try_for_agents, ":cur_agent"),
(agent_is_human, ":cur_agent"),
(agent_is_active, ":cur_agent"),
(store_agent_hit_points, ":hp", ":cur_agent"),
(try_begin),
(lt, ":hp", 1),
(agent_get_position, pos2, ":cur_agent"),
(store_random_in_range, ":chislo", 0, 63),
(entry_point_set_position, ":chislo", pos30),
(set_spawn_position, pos30),
# (agent_set_slot, ":cur_agent", slot_agent_spawn_entry_point, ":chislo"),
(try_end),
(try_end),
]),
Кстати, я нашел скрипт в module_scripts, на который отсылаются триггеры 'ti_on_agent_killed_or_wounded' из mission_templates. Он называется 'multiplayer_server_on_agent_killed_or_wounded_common'. Там как раз есть код проверки агента на смерть и.т.д... Если что - найди его и посмотри, как там сделано...(agent_is_active,":dead_agent_no"), # Only if we actually killed someone.
(agent_is_human, ":dead_agent_no"), # and not a horse =p
(agent_get_team, ":dead_agent_team", ":dead_agent_no"), # get his team
(neg|agent_is_alive, ":cur_agent"), # вот это - самое главное
-
В продолжении моего вопроса, касаемо, появления игрока на месте своего трупа :D
Попробовал я разные варианты написания кода с разными условиями и событиями, но так нифига путнего из этого не вышло. Зато, было установлено, что в файле mission_templates.py в любой миссии, например, deathmatch за появление игрока отвечает триггер такого типа:
(1, 0, 0, [],
[
(multiplayer_is_server),
(get_max_players, ":num_players"),
(try_for_range, ":player_no", 0, ":num_players"),
(player_is_active, ":player_no"),
(neg|player_is_busy_with_menus, ":player_no"),
(player_get_team_no, ":player_team", ":player_no"), #if player is currently spectator do not spawn his agent
(lt, ":player_team", multi_team_spectator),
(player_get_troop_id, ":player_troop", ":player_no"), #if troop is not selected do not spawn his agent
(ge, ":player_troop", 0),
(player_get_agent_id, ":player_agent", ":player_no"),
(assign, ":spawn_new", 0),
(try_begin),
(player_get_slot, ":player_first_spawn", ":player_no", slot_player_first_spawn),
(eq, ":player_first_spawn", 1),
(assign, ":spawn_new", 1),
(player_set_slot, ":player_no", slot_player_first_spawn, 0),
(else_try),
(try_begin),
(lt, ":player_agent", 0),
(assign, ":spawn_new", 1),
(else_try),
(neg|agent_is_alive, ":player_agent"),
(agent_get_time_elapsed_since_removed, ":elapsed_time", ":player_agent"),
(gt, ":elapsed_time", "$g_multiplayer_respawn_period"),
(assign, ":spawn_new", 1),
(try_end),
(try_end),
(eq, ":spawn_new", 1),
(call_script, "script_multiplayer_buy_agent_equipment", ":player_no"),
(troop_get_inventory_slot, ":has_item", ":player_troop", ek_horse),
(try_begin),
(ge, ":has_item", 0),
(assign, ":is_horseman", 1),
(else_try),
(assign, ":is_horseman", 0),
(try_end),
(call_script, "script_multiplayer_find_spawn_point", ":player_team", 0, ":is_horseman"),
(player_spawn_new_agent, ":player_no", reg0),
(try_end),
]),
Особенно строки выделенные жирным шрифтом. Так вот точка появления игрока случайна и заносится в регистр reg0 в строке (player_spawn_new_agent, ":player_no", reg0), Я пробовал заменить параметр reg0 на цифру 2. Это привело к тому, что я всегда появлялся в одном и том же месте, в точке entry_point = 2. Тогда у меня возник вопрос, как в значение этого регистра reg0 записать позицию, на которой я окочурился в бою?
-
Нужна подсказка, надеюсь что кто-нибудь мне поможет или натолкнет на правильный ход мыслей. Вопрос вот в чем. У меня есть два триггера. Первый срабатывает по событию ti_killed_or_wanted, а второй по событию ti_on_agent_spawn. В первом триггере отслеживается место на котором погиб игрок. В этой позиции генерируется новая entry_point и второй триггер телепортирует игрока на эту точку. Должен сказать, что все работает прекрасно когда игрок только один на сервере, но когда игроков много алгоритм сбивается. Происходит следующее: допустим у нас есть 2 игрока. Первый умирает и первый триггер фиксирует место его смерти. Пусть это будет позиция А. Пока первый умерший игрок не возродился, умирает второй и первый триггер перезаписывает позицию А в позицию Б. Таким образом, второй триггер, срабатывающий после спавна агента, поместит первого игрока, так как он умер раньше в позицию Б, т.е. в место смерти второго игрока.
Так вот, вопрос вот в чём, как мне привязать эту позицию смерти к конкретному игроку? Может есть ещё дополнительные условия... Я думал разные варианты, но в голову пока так ничего и не пришло.... :(
Буду рад любым подсказкам.
-
Можно так: в триггере ti_agent_killed_or_wounded запишите в слот к отдавшему Богу душу агенту (добавьте слот или задействуйте неиспользуемый в ваших условиях) координаты смерти (можно непосредственно из регистра позиций pos(x)), в другой слот время до респавна в виде кол-ва тактов триггера, который будете использовать для спавна. Далее делаете триггер (для спавна) с проверкой на живость агента, ежели агент - труп, то уменьшаем значение в слоте с временем респавна на единицу, и ежели после сего в таковом слоте значение осталось менее единицы, то берём из слота в, каковой записали позицию смерти, координаты и там спавним.
-
Можно так: в триггере ti_agent_killed_or_wounded запишите в слот к отдавшему Богу душу агенту (добавьте слот или задействуйте неиспользуемый в ваших условиях) координаты смерти (можно непосредственно из регистра позиций pos(x))
Дикий-дикий повар, огромное спасибо Вам за вашу подсказку насчет слотов :thumbup: Все получилось в лучшем виде)) Еще немного протестирую конечно скрипт, но по игре в течение часа все работает просто супер :D
-
Вроде угадал с темой, но не уверен... Простите, если что - заплутал на форуме конкретно. :crazy:
Сколько ни качал, а никак не было, чтобы у меня работали: Варбэнд, WSE и модулька. Модулька писала ошибку про отсутствие файла "*.рус"... WSE, буду честным, нафиг мне не сдался. Но вот модулька.... Скиньте пожалуйста ссылку на игру и модульку рабочие? (Тут качал на 1.153 - не работает, на 1.60 не нашёл) Версия не принципиальна, но желательно от 1.153. Заранее спасибо! :embarrassed:
-
Вряд-ли модулька не рабочая, скорее неправильно указан путь до установленого питона в переменной окружения. Или можно попробовать дописать его (путь до питона) в батник, который запускает сборку модуля (вроде, там перед каждым process* дописывается в виде "C:\Program files\python 2.6.6\python.exe"). Лучше правильно перепишите значение для переменной окружения, в теме (http://rusmnb.ru/index.php?topic=2940.0) даже сказано как.
-
скорее неправильно указан путь до установленого питона
Всё делал по этой самой теме. Ошибки подобной нигде не видел... Хотя попробую конечно еще раз, может и правда заработает. Если так, то заранее спасибо.)
-
Вряд-ли модулька не рабочая, скорее неправильно указан путь до установленого питона в переменной окружения. Или можно попробовать дописать его (путь до питона) в батник, который запускает сборку модуля (вроде, там перед каждым process* дописывается в виде "C:\Program files\python 2.6.6\python.exe"). Лучше правильно перепишите значение для переменной окружения, в теме даже сказано как.
Всё делал по этой самой теме. Ошибки подобной нигде не видел... Хотя попробую конечно еще раз, может и правда заработает. Если так, то заранее спасибо.)
Да нафиг Вам сдался этот Питон, один геммор с его установкой, то версия не подходит, то еще какой-то бред напишет... Скачайте как я текстовый редактор типа Notepad++ там все есть и синтаксис питоновского языка подсвечивается и плагинов всяких море и мозг не выносит. А компилировать будете также двойным кликом по файлу build_module.bat Единственное конечно, что путь в файле module_info.py все-таки придется прописать. У меня написано так: export_dir = "C:/Users/vvs/Desktop/My_server_test/Modules/Native/"
Все, больше проблем нет 8-)
-
(2, 0, 0, [(multiplayer_is_server),], ####assassin even securety AI check agr and kill players
[
(try_for_agents,":bot_s"),
(agent_is_active,":bot_s"),
(agent_is_non_player,":bot_s"),
(agent_is_human,":bot_s"),(gt,":bot_s",-1),
(agent_is_alive,":bot_s"),
(agent_get_troop_id,":troop_id",":bot_s"),(gt,":troop_id",-1),
(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"),
(agent_is_active,":agent_no"),(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),
(try_end),
(agent_get_wielded_item,":item_equip_r",":agent_no",0), #0-R 1-L
(try_begin),(neg|agent_is_non_player, ":agent_no"),(is_between,":dist",0,1500),(le,":item_equip_r",-1),
(try_begin),(this_or_next|eq,":troop_id","$npc_weapon"),(eq,":troop_id","$npc_armor"),(is_between,":dist",0,150), #shop npc
(try_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),
(else_try),(neg|agent_is_non_player, ":agent_no"),(is_between,":dist",0,1500), #
(try_begin),(is_between,":dist",0,199),(gt,":item_equip_r",-1),
(else_try),(this_or_next|gt,":item_equip_r",-1), #check player
(agent_set_scripted_destination, ":bot_s", pos2, 1),
(try_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),
(try_end),
(try_end),
]),
где я ошибся? при компиляции все отлично идет, но в сервере при подходе к боту он смертный и не выдает вещи
-
Да нафиг Вам сдался этот Питон
Valerian60 (http://rusmnb.ru/index.php?action=profile;u=45457)-чудак-человек, ежели модулька (в process_* файлы загляни и узри) написана на Python (есть ещё на C++), то он тебе для сборки модуля необходим.
Скачайте как я текстовый редактор типа Notepad++ там все есть и синтаксис питоновского языка подсвечивается и плагинов всяких море
Здесь уже кому-что, текстовых редакторов существует немало и подсветка много где есть (и не обязательно питоновскую тебе module_* ковырять).
один геммор с его установкой, то версия не подходит, то еще какой-то бред напишет
Тем не менее ты его либо установил, либо он уж был у тебя в системе. А без "геммора" никуда, проще только ничего не делать, как-то так вот.
ARIMA (http://rusmnb.ru/index.php?action=profile;u=41514), про смертность, может ещё стоит проверить содержимое переменных "$npc_weapon" и "$npc_armor", более ничего конкретного сказать не могу, т. к. мало описания того, что должен делать триггер, а непосредственно выдача предметов у вас описана в другом месте. Небольшие правки прилагаю:
(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),
])
-
Дикий-дикий повар (http://rusmnb.ru/index.php?action=profile;u=34819), спасибо я подругому все сделал) все работает
-
Valerian60-чудак-человек, ежели модулька (в process_* файлы загляни и узри) написана на Python (есть ещё на C++), то он тебе для сборки модуля необходим.
Почему-то у меня все компилируется бат-файлом, а скрипты пишутся в текстовом редакторе и все компилируется без проблем. Хотя может и был установлен когда-то... точно не скажу... 8-)
-
Парни, есть вопрос)) Допустим, мы имеем какую-то сцену (scene_props), на ней находится бот. Как сделать так, чтобы игрок не мог к нему подойти? Чтобы, например, меня откидывало от него на определенное расстояние назад при приближении к боту или чтобы я упирался словно в невидимую стену... 8-)
-
Valerian60 (http://rusmnb.ru/index.php?action=profile;u=45457), барьеры поставь :laught:
-
Valerian60 ([url]http://rusmnb.ru/index.php?action=profile;u=45457[/url]), барьеры поставь :laught:
Смешно.... :crazy: А по существу?
-
Кстати, может кто подскажет, есть ли в модульке возможность из фиксированного ряда случайных чисел (например 2, 15, 7, 32) определить минимальное? Такой функции я не нашел, но может кто знает как тут можно схитрить :)
-
Почему-то у меня все компилируется бат-файлом, а скрипты пишутся в текстовом редакторе и все компилируется без проблем. Хотя может и был установлен когда-то... точно не скажу...
Батник только указывает process_* файлы которые нужно выполнить, которые написаны на python.
Под барьерами подразумевались scene_props'ы без графики (чисто collision mesh). Невидимые плоские стенки и др. уже входят в состав nativ'а (посмотри props'ы со словом barrier).
может кто подскажет, есть ли в модульке возможность из фиксированного ряда случайных чисел (например 2, 15, 7, 32) определить минимальное?
Хитрить не обязательно, достаточно пройтись циклом по всем числам в списке, например, поиск наименьшего значения по слотам агента:
...
(assign, ":min_value", 2**31),
(try_for_range, ":slot", 0, ":num_slots"),
(agent_get_slot, ":cur_value", ":agent", ":slot"),
(lt, ":cur_value", ":min_value"),
(assign, ":min_value", ":cur_value"),
(try_end),
...
-
Господа и дамы, я просто задолбался.
Для своей модификации хочу добавить городов, замков и прочих населенных пунктов на уже сделанную карту. Так на англоязычных одни аутдэйтэд инструкции, вообще к 0.7 или 0.8 версии ( а на русских самая ранняя из англоязычных))
Вопрос такой:
Кто может перечислить файлы модульки, которые надо редактировать в 1.011, чтобы добавить город?
А то уже по 3 мануалам пытался добавить город - ни черта. И ведь что обидно - манулов нет, а в куче модов города понадобавляли.
вроде module_parties, module_scenes, трупс для сенешалей и прочи.. А еще?
-
всем привет, хочу написать скрипт на набор пленных в варбанд и добавить в список существующих но нет ни знаний ни инструментов
Попробовал через декомпилятор, но чтобы скомпилировать все обратно нужно запускать какие то несуществующие файлы.
Кто подскажет как сделать?
-
А еще?
module_scripts
важно что-бы город в константы попадал типа towns_begin, towns_end и пр. т.е. правильно расположить в партиес
-
Пасиб. Я сегодня на работе разобрался:) Вместо работы создал полнофункциоальные поселения всех трех типов:) Ошибка была в аренном скрипте и сенешалею
-
Здравствуйте. Дело в том, что мне нужна хорошая модульная основа для моддинга. Поискал на ТВ и прочих форумах, не нашёл то, что нужно
Tocans, NMC не подходят
Иначе говоря мне нужна соляна следующих модов выложенных в модульной системе:
Diplomacy
Freelancer
Custom Commander
PBOD
Formations AI
Буду признателен, если дадите ссылку на такие или близкие по параметрам солянки.
-
NMC старых версии вам подойдет. Так же посмотрите Diplomacy 4.litdum
-
NMC старых версии вам подойдет. Так же посмотрите Diplomacy 4.litdum
так дело и в том, что не могу найти НМС старых версий. Нашёл только 1.0 лайт, а там только дипломатия и КК
-
Нашёл только 1.0 лайт, а там только дипломатия и КК
А это собственно примерно то, что и нужно. Freelancer, PBOD и Formations AI внедряются за 3-5 минут.
-
Да, другие моды встраиваются через модмержер пак, это знаю.
Хорошо, попробую. Спасибо, Яныч.
-
Вот такая проблема с mission_templates. Не нашёл статейки об этом файле и по итогу, не знаю как исправить данную ошибку. Может быть кто встречался с этим и поможет? =/
-
OZzz (http://rusmnb.ru/index.php?action=profile;u=49523), ну так Вам отладчик же пишет в каких строках обнаружены ошибки и даже сам код, вызывающий проблемы, показывает. Попробуйте зайти и посмотреть. Может там просто где-то кавычка не стоит или что-то типа того.
-
OZzz ([url]http://rusmnb.ru/index.php?action=profile;u=49523[/url]), ну так Вам отладчик же пишет в каких строках обнаружены ошибки и даже сам код, вызывающий проблемы, показывает. Попробуйте зайти и посмотреть. Может там просто где-то кавычка не стоит или что-то типа того.
Так в том-то и дело, что он пишет где ошибка, но её там нет, либо уж я очень не наблюдательный и плохо разбираюсь в синтаксисе этого файла. Хотя как ни странно, при добавлении еще одного символа "=" ошибка исчезает, но по синтаксису файла это же, вроде, не правильно.
-
OZzz (http://rusmnb.ru/index.php?action=profile;u=49523), значит в другом месте ошибка, где-то рядом, ищите
-
Хотя как ни странно, при добавлении еще одного символа "=" ошибка исчезает, но по синтаксису файла это же, вроде, не правильно.
Вполне возможно, что после этого указанная функция просто исключается из проверки.
-
Van (http://rusmnb.ru/index.php?action=profile;u=6232), может быть и так, просто я не вижу их в упор. но самое забавное в том, что код взят из OSP и тогда удивительно почему он с ошибками.
-
Вы просто поменяли файлы .ру на открытие через Sublime Text (как вижу на скрине), у файлов МС по умолчанию питон должен стоять, по этому и компилятор не читает .ру
-
Special One (http://rusmnb.ru/index.php?action=profile;u=31320), и каким это образом влияет на компиляцию? А никаким. Хоть в Ворде их открывайте все будет точно так же.
Вообще советую пользоваться Notepad++.
OZzz (http://rusmnb.ru/index.php?action=profile;u=49523), есть прогресс?
-
Разницы нет. Я про умолчание. Там у файлов вместо значка питона стоит значок саблайм текст. Нужно сделать по умолчанию питон и заработает. У самого так же было. Через саблайм можно открывать ПКМ на файле -> Open with Sublime Text
-
7erj1 (http://rusmnb.ru/index.php?action=profile;u=21314), нет) Все та же ошибка.
-
Всем привет! Столкнулся с проблемой - поменять порядок войск для выбора юнита в мультиплеере НВ оказалось не так просто. Например, в файле module_troops.py я для теста переместил austrian_grenadier (который до этого был на предпоследнем месте в списке пехоты, перед егерем) на первое место в списке австрийской пехоты, и соответственно в файле module_scripts.py изменил строку, касающуюся состава австрийской пехоты
(this_or_next|is_between, ":troop_no", "trp_austrian_grenadier","trp_austrian_infantry_rifle"), # Austrian
Но после этого вся австрийская пехота осталась как была, а австрийский гренадер оказался в секции Specialists. Кто-нибудь может мне помочь разобраться, что еще нужно изменить или где еще могут быть прописаны касающиеся пехоты данные? Буду очень благодарен :)
-
Привет
Кто знает из-за чего вылазит такая ошибка:
warning: variable name used for both local and global contexts:agility
warning: variable name used for both local and global contexts:strength
warning: variable name used for both local and global contexts:agility
warning: variable name used for both local and global contexts:strength
при компиляции скриптов. :) мозг уже сломал..
Исправлено, Van извините за беспокойство (в лс) :)
-
Здравствуйте. Решил добавить седьмую фракцию в Натив (за основу взята модульная система diplomacy), однако столкнулся с несколькими проблемами. Вот наиболее насущные из них:
1. Иконки новых деревень изначально отображаются такими, как прописаны, однако через несколько секунд после начала игры заменяются на пустынные. Для эксперимента я прописал одной из деревень icon из другого мода, однако здесь также происходит замена. Характерно, что в описании деревень упоминаются оазисы. Подозреваю, что все вышеописанное как-то связано со скриптом ":village_is_at_desert" в module_scripts, но разобраться так и не смог. Между тем, хотелось бы чтобы все отображалось так, как прописано.
https://ibb.co/caWjTn (https://ibb.co/caWjTn)
https://ibb.co/gzdng7 (https://ibb.co/gzdng7)
https://ibb.co/j1jhES (https://ibb.co/j1jhES)
2. Как и в деревнях, в единственном добавленном городе, присутствуют сарранидские мотивы: проявляются они в тюрбанах в турнирной аммуниции. Как сделать турнирную экипировку в нужном городе "общекалерадской"?
https://ibb.co/m6jhES (https://ibb.co/m6jhES)
3. Хотелось бы узнать, можно ли скопировать модель родственных отношений (например, вегирскую) и адаптировать ее для добавляемой фракции. В "initialize_aristocracy" ничего конкретного не нашел.
Буду благодарен за помощь
-
модель родственных отношений (например, вегирскую)
Родственные модели для всех фракций одинаковы.
Иконки новых деревень изначально отображаются такими, как прописаны, однако через несколько секунд после начала игры заменяются на пустынные.
Смотри скрипт 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),
-
Hramadzianin (http://rusmnb.ru/index.php?action=profile;u=49903), про родственные отношения я писал гайд. может-быть поможет http://rusmnb.ru/index.php?topic=21184.0 (http://rusmnb.ru/index.php?topic=21184.0)
-
Спасибо за ответы. С турнирами разобрался, а вот вопрос прописки родственных отношений пока не решен. Сделать их постоянными, конечно, хорошо, но у меня в новой фракции стандартные 20 лордов и леди, так что можно было бы на первое время ограничиться и автораспределением. В initialize_aristocracy добавил несколько строчек, однако эффекта не появилось.
(try_begin),
(is_between, ":cur_troop", "trp_knight_1_1", "trp_knight_2_1"),
(store_sub, ":npc_seed", ":cur_troop", "trp_knight_1_1"),
(assign, ":ancestor_seed", 1),
(else_try),
(is_between, ":cur_troop", "trp_knight_2_1", "trp_knight_3_1"),
(store_sub, ":npc_seed", ":cur_troop", "trp_knight_2_1"),
(assign, ":ancestor_seed", 7),
(else_try),
(is_between, ":cur_troop", "trp_knight_3_1", "trp_knight_4_1"),
(store_sub, ":npc_seed", ":cur_troop", "trp_knight_3_1"),
(assign, ":ancestor_seed", 13),
(else_try),
(is_between, ":cur_troop", "trp_knight_4_1", "trp_knight_5_1"),
(store_sub, ":npc_seed", ":cur_troop", "trp_knight_4_1"),
(assign, ":ancestor_seed", 19),
(else_try),
(is_between, ":cur_troop", "trp_knight_5_1", "trp_knight_6_1"),
(store_sub, ":npc_seed", ":cur_troop", "trp_knight_5_1"),
(assign, ":ancestor_seed", 25),
(else_try),
(is_between, ":cur_troop", "trp_knight_6_1", "trp_kingdom_1_pretender"),
(store_sub, ":npc_seed", ":cur_troop", "trp_knight_6_1"),
(assign, ":ancestor_seed", 31),
(else_try),
(is_between, ":cur_troop", "trp_knight_7_1", "trp_kingdom_2_pretender"),
(store_sub, ":npc_seed", ":cur_troop", "trp_knight_7_1"),
(assign, ":ancestor_seed", 37),
(try_end),
-
Добавил обезглавливание в мод, всё работает! только, когда я отрубаю башку нежите, там выпадает мужская башка, нужно чтоб выпадала голова, нежити. Заготовка готова, в инвентаре её прописал, а вот как сделать, чтоб она выпадала, у мертвяков, я не-знаю. :-\ можете помочь?
Вот тригер обезглавливания, что тут менять?
dismemberment_mod_decap = (
# Trigger Param 1: damage inflicted agent_id
# Trigger Param 2: damage dealer agent_id
# Trigger Param 3: inflicted damage
# Register 0: damage dealer item_id
# Position Register 0: position of the blow rotation gives the direction of the blow
ti_on_agent_hit, 0, 0, [],
[
(store_trigger_param_1, ":victim_agent"),
(store_trigger_param_2, ":attacker_agent"),
(store_trigger_param_3, ":damage"),
(assign, ":attacker_item", reg0), ### Transfer the item ID to make sure it dosn't change while the script is running
(copy_position, pos5, pos0), ### Transfer the position of the hit to make sure it dosn't change while the script is running
(neq, ":victim_agent", -1),
(try_begin), #-- Decapitations --#
(agent_is_human, ":victim_agent"),
(ge, ":attacker_item", 0),
(assign, ":run", 0), ### Reset the run test variable
(try_begin), ### Special weapons that can decap, ovevrrides the below conditions
(this_or_next|eq, ":attacker_item", "itm_supercrossbow"),
(eq, ":attacker_item", "itm_supersledge"),
(assign, ":run", 1),
(else_try),
(neq, ":attacker_item", "itm_mace_1"), ### List of weapons that cannot decapitate
(neq, ":attacker_item", "itm_mace_2"), ### This would be easier to do with a preperty check (for damage type), but I don't know if that is possible or not
(neq, ":attacker_item", "itm_mace_3"),
(neq, ":attacker_item", "itm_staff"),
(agent_get_action_dir, ":attack_dir", ":attacker_agent"), ### Makes sure the attack is either a left or right swing
(this_or_next|eq, ":attack_dir", 1), ### Right swing
(eq, ":attack_dir", 2), ### Left swing
(assign, ":run", 1),
(try_end),
(eq, ":run", 1), ### One of the checks were true, continue to run script
#(assign, reg1, ":damage"), #Debug messages
#(display_message, "@Damage: {reg1}"),
(assign, ":run", 0), ### Reset the run test variable
(try_begin),
(ge, ":damage", 30), ### Minimum damage required to decapitate an agent
(assign, ":run", 1),
(else_try), ### If debugging mode is on, this bypasses the damage requirement check
## (eq,"$g_decapitations_debugging", 1),
(assign, ":run", 1),
## (display_message, "@Decap minimum DMG req bypassed"),
(try_end),
(eq, ":run", 1),
(store_agent_hit_points, ":hp", ":victim_agent", 1),
(val_add, ":hp", 10), ### Victim must have the negative of this hp or below after hit for the script to move on (never put this value below 0 since the agent has to be absolutley positvely dead)!
(ge, ":damage", ":hp"),
### Compare the hit position to the agent's position
(agent_get_position, pos4, ":victim_agent"),
(get_distance_between_positions, ":distance", pos4, pos5),
(agent_get_horse, ":is_mounted", ":victim_agent"),
(try_begin), ### If the agent is on horseback, these values are used (note that these values will not be exactly correct if the horse is very large or very small)
(ge, ":is_mounted", 0), ### Will be -1 if no horse is to be found, so anything above means that the agent is mounted
(assign, ":min_distance", 240), ### Minimum distance from the agent's horse's hooves from which the hit is valid (240 is an approximate value)
(assign, ":max_distance", 260), ### Maximum distance from the agent's horse's hooves to which the hit is valid (260 is an approximate value)
(else_try), ### If the agent is on foot, these values are used
(assign, ":min_distance", 160), ### Minimum distance from the agent's feet from which the hit is valid (160 = slightly below the neck)
(assign, ":max_distance", 176), ### Maximum distance from the agent's feet to which the hit is valid (176 = near the nose)
(try_end),
(is_between, ":distance", ":min_distance", ":max_distance"), ### Check to see if the hit is within the allowed area
(assign, ":run", 0), ### Default variable value before damage test
(try_begin),
(store_div, ":chance", ":damage", 4), ### Chance of decap is damage / 4 right now. Lower this value for higher chances of decapitation (or press M+Right Ctrl for debug more if you just want to test easy decaps in-game).
#(assign, reg1, ":chance"), #Debug messages
#(display_message, "@Decap chance is: {reg1}"),
(store_random_in_range, ":diceroll", 0, 100), ### Randomizer, 0-100
#(assign, reg1, ":diceroll"), #Debug messages
#(display_message, "@Diceroll: {reg1}"),
(le, ":diceroll", ":chance"), ### ":diceroll" must be less than or equal to ":chance", if it is, decapitation occurs!
(assign, ":run", 1), ### SUCCESS!
(else_try), ### If debugging mode is on, bypass chance calculation
## (eq,"$g_decapitations_debugging", 1),
(assign, ":run", 1),
(display_message, "@Decap chance calc bypassed"),
(try_end),
(eq, ":run", 1), ### Time for the fun stuff!
### Gender test for spawning the right head type
(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),
### Randomize the spawned head's and/or helmet's position and orientation
(store_random_in_range, ":z_rotation", 0, 360),
(store_random_in_range, ":y_rotation", -60, 60),
(store_random_in_range, ":x_pos", -90, 90),
(store_random_in_range, ":y_pos", -90, 90),
(position_rotate_z, pos4,":z_rotation"),
(position_rotate_y, pos4,":y_rotation"),
(position_move_x, pos4, ":x_pos"),
(position_move_y, pos4, ":y_pos"),
(position_set_z_to_ground_level, pos4),
(position_move_z, pos4, 5),
(set_spawn_position, pos4),
(assign, ":prunetime", 360), ### This is the time in seconds before the spawned head or helmet gets pruned (removed). Recommended to keep it above 0 to make sure it gets removed eventually or when the scene resets, to prevent performance issues.
#(spawn_item, ":head_type", 0, ":prunetime"), ### This is the old way of spawning the head on the ground with the helmet, disabled because of the new dynamic heads. You can comment away (disable) the dynamic heads spawning further down and uncomment this line for a less performance-needing approach (with no physics involved).
### Does the agent have a helmet or hat equipped?
(agent_get_item_slot, ":item", ":victim_agent", 4), #head slot
(try_begin),
(ge, ":item", 1), ### Does it?
(agent_unequip_item, ":victim_agent", ":item"), ### Yes it does. Unequip it to allow replacement by the invisible helmet further down
(try_begin),
### Don't spawn items with "itp_attatch_armature" flag: rigging causes floating bugs
### This would be much better to do with an item flag check, but I haven't found any way to do that
#(neq, ":item", "itm_with_itp_attatch_armature"),
#(neg|is_between,":item","start_of_itm_range_with_itp_attatch_armature","end_of_itm_range_with_itp_attatch_armature"),
#(set_spawn_position, pos4),
(spawn_item, ":item", 0, ":prunetime"), ### Spawns the agent's currently equipped headgear on the dropped head's position
(try_end),
(try_end),
(agent_equip_item, ":victim_agent", "itm_invisible_head"), ### Put an invisible helmet on the agent's head to "remove" it
(agent_get_position, pos4, ":victim_agent"), ### Refreshes the agent's position
(position_move_z, pos4, ":min_distance"), ### Move to the where the neck used to be attached
### Blood effects! The last variable is the strength. Lower or increase it for more/less blood (or tweak the particle effects themselves in "module_particle_systems.py").
(particle_system_burst, "psys_blood_decapitation", pos4, 40),
(particle_system_burst, "psys_game_blood", pos4, 10),
(particle_system_burst, "psys_game_blood_2", pos4, 10),
(play_sound_at_position, "snd_decapitation", pos4), ### Play some nasty sounds
### Dynamic head spawning! See the bottom of "module_scene_props.py" for physics-related options and more.
(position_move_z, pos4, 20),
(set_spawn_position, pos4),
(assign, ":head_type", "spr_head_dynamic_male"),
(try_begin), ### Gender check (for determening the type of head)
(eq, ":victim_gender", 1),
(assign, ":head_type", "spr_head_dynamic_female"),
(try_end),
(spawn_scene_prop, ":head_type"),
### This below is for the text that shows up when somebody is decapitated.
### Who decapitated who?
(agent_get_troop_id, ":attacker_troop", ":attacker_agent"),
(str_store_troop_name, s0, ":attacker_troop"),
(agent_get_troop_id, ":victim_troop", ":victim_agent"),
(str_store_troop_name, s1, ":victim_troop"),
### Colour check (friend or foe?)
(get_player_agent_no, ":my_agent"),
(agent_get_team, ":my_team", ":my_agent"),
(agent_get_team, ":victim_team", ":victim_agent"),
(try_begin), ### Display it!
(neq, ":my_team", ":victim_team"),
(display_message, "@>>> {s0} decapitated {s1}!", 0xFFFF00), ## Yellow
(else_try),
(display_message, "@>>> {s0} decapitated {s1}!", 0xFF0000), ## Red
(try_end),
(try_end), #-- Decapitations END --#
])
-
FireDemon (http://rusmnb.ru/index.php?action=profile;u=49148), учитесь читать чужой код, а не Ctrl+C -> Ctrl+V.
Вот у вас такой кусок есть в коде, который отвечает за тип отлетаемой башки (мужская, женская):
(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),
ПРимечание: я полностью переписал тот фрагмент говнокода.
-
Товарищи, возникла проблема. Добавил мундиры в игру, в игре отображаются, у солдат с новой одеждой проблем нет. Но когда менял одежду именно лордам, то она у их не отображается, выходят "голыми". Игру новую начинал, в чем проблема - не понимаю.
-
_Patriot_ (http://rusmnb.ru/index.php?action=profile;u=50001), лорды ходят голыми в замке или везде?
-
_Patriot_, если проблема с отображением в замке, то, вероятно, причина в том, что в module_items прописанная лордам одежда не имеет характеристики itp_civilian. Так, если прописано, например
["song_tunic_a","Song_Clothing", [("song_tunic_a", 0)], itp_type_body_armor|itp_merchandise|itp_covers_legs|itp_doesnt_cover_hair, 0,100, weight(5)|abundance(100)|body_armor(15), imodbits_cloth, []],
- одежда в замках отображаться не будет. Чтобы все работало как полагается, надо прописать
["song_tunic_a","Song_Clothing", [("song_tunic_a", 0)], itp_type_body_armor|itp_merchandise|itp_covers_legs|itp_doesnt_cover_hair|itp_civilian, 0,100, weight(5)|abundance(100)|body_armor(15), imodbits_cloth, []],
-
В своем моде (по большей части ограничивающимся добавлением новых фракций) на основе Дипломатии я столкнулся со специфической проблемой, связанной с работой лагерей бандитов. Они неадекватно отображаются (при том, что в map_icons прописаны правильно), не задействуются в миссиях и, по моим ощущениям, не выполняют роль "рассадников" разбойников, при том, что грабить их можно. Так же отображается, кстати, и убежище бандитов из начальной миссии торговца (при этом оно не обнаруживается автоматически после диалога с разбойником из шайки). Возможно, я случайно повредил некоторые скрипты, но хотелось бы знать, где именно их искать. По крайней мере, эта проблема (с небольшими различиями) в определенный момент возникла в двух моих модах, которые писались параллельно, но Натив и оригинальная Дипломатия работают нормально.
https://ibb.co/cu1iAp
https://ibb.co/eqWTbU (https://ibb.co/eqWTbU)
Буду благодарен за помощь
-
Hramadzianin (http://rusmnb.ru/index.php?action=profile;u=49903), с иконками есть такая проблема:
не могут в качестве основных иконок использоваться те, id которых больше 255.
Подробнее. Каждая party может иметь одновременно 3 иконки:
1) Основная. Id не должен превышать 255
2) Флаг. Id не должен превышать 2147483647
3) Дополнительная (extra). Id не должен превышать 2147483647
Поэтому попробуйте так:
Переместите все иконки баннеров в конец списка map_icons.
Если это не поможет, то придется использовать extra-icon. Создается иконка-пустышка с id, не превышающим 255:
("invisible_icon",mcn_no_shadow,"town", 0.0, 0),
И она устанавливается как основная у party. А далеее нужная иконка устанавливается как дополнительная (смотри команду party_set_extra_icon).
-
Здравствуйте. Только вникаю в модостроение, хочу сделать мод на основе Persistent World. В моде все устроено через взаимодействие с объектами. Вопрос, в каком файле (файлах) находятся скрипты объектов? (Я хочу изменить/добавить комбинации крафта)
И еще вопрос, можно ли реализовать строительство в этом моде? Что-бы все эти интерактивные объекты типа верстаков игрок мог поставить там где захочет?
-
Подскажите пожалуйста, как сделать так, чтобы точность лука при прыжке и на бегу не падала? Идеально было бы сделать это в виде навыка по типу уже существующего "horse archer". Весь инет перерыл и ничего не нашёл
-
Доброго времени суток. Я новичок совсем. Пытался создать по гайдам новую фракцию (6) в Огнем и Мечом, но фракций остается 5 просто сдвигаются названия и первая начинает называться "Гос-во игрока". Т.е. Ханство становиться Москвой, Москва Швецией и т.п.
Писал естественно в модульке на ОиМ.
Новые фракции можно добавлять только в Варбанд?
И еще один вопрос как сделать для фракции герб, такой в щите, в текстурах только прямоугольные флаги нашел. Рисовать я умею неплохо.
-
Traceback (most recent call last):
File "process_init.py", line 2, in <module>
from process_operations import *
File "D:\Program Files (x86)\Python\WFaS Module_system 1.143\process_operation
s.py", line 14, in <module>
from module_troops import *
File "D:\Program Files (x86)\Python\WFaS Module_system 1.143\module_troops.py"
, line 1411, in <module>
["kingdom_8_lord", "Shah Abbas II","Kingdom 8 Lord", tf_hero, 0,reserved,
fac_kingdom_8,[itm_rich_horse, itm_ttr_civil_a, itm_good_cavalry_b
oots, itm_good_cavalry_boots, itm_tatar_bahter_a, itm_kl
evetz_good, itm_tatar_han_helmet], knight_attrib_5,wp(220),knight_skills_5,
0x0000000a7f00301b4aaa935b1ba1966a00000000001d97490000000000000000],
NameError: name 'fac_kingdom_8' is not defined
Traceback (most recent call last):
File "process_global_variables.py", line 12, in <module>
from process_operations import *
File "D:\Program Files (x86)\Python\WFaS Module_system 1.143\process_operation
s.py", line 14, in <module>
from module_troops import *
File "D:\Program Files (x86)\Python\WFaS Module_system 1.143\module_troops.py"
, line 1411, in <module>
["kingdom_8_lord", "Shah Abbas II","Kingdom 8 Lord", tf_hero, 0,reserved,
fac_kingdom_8,[itm_rich_horse, itm_ttr_civil_a, itm_good_cavalry_b
oots, itm_good_cavalry_boots, itm_tatar_bahter_a, itm_kl
evetz_good, itm_tatar_han_helmet], knight_attrib_5,wp(220),knight_skills_5,
0x0000000a7f00301b4aaa935b1ba1966a00000000001d97490000000000000000],
NameError: name 'fac_kingdom_8' is not defined
Exporting strings...
Exporting skills...
Exporting tracks...
Exporting animations...
Exporting meshes...
Exporting sounds...
Exporting skins...
Traceback (most recent call last):
File "process_map_icons.py", line 6, in <module>
from process_operations import *
File "D:\Program Files (x86)\Python\WFaS Module_system 1.143\process_operation
s.py", line 14, in <module>
from module_troops import *
File "D:\Program Files (x86)\Python\WFaS Module_system 1.143\module_troops.py"
, line 1411, in <module>
["kingdom_8_lord", "Shah Abbas II","Kingdom 8 Lord", tf_hero, 0,reserved,
fac_kingdom_8,[itm_rich_horse, itm_ttr_civil_a, itm_good_cavalry_b
oots, itm_good_cavalry_boots, itm_tatar_bahter_a, itm_kl
evetz_good, itm_tatar_han_helmet], knight_attrib_5,wp(220),knight_skills_5,
0x0000000a7f00301b4aaa935b1ba1966a00000000001d97490000000000000000],
NameError: name 'fac_kingdom_8' is not defined
Exporting faction data...
Exporting item data...
Exporting scene data...
Exporting troops data
Exporting particle data...
Exporting scene props...
Exporting tableau materials data...
Exporting presentations...
Exporting party_template data...
Exporting parties
Exporting quest data...
Exporting info_page data...
Exporting scripts...
Exporting mission_template data...
Exporting game menus data...
exporting simple triggers...
exporting triggers...
exporting dialogs...
Checking global variable usages...
Exporting postfx_params...
______________________________
Script processing has ended.
Press any key to exit. . .
-
Народ подскажите пожалуйста, есть ли где нибудь в открытом доступе модулька на викинг конквест? И можно ли соответственно в данную МС перенести бронь и оружие натива? И насколько это сложно? В смысле можно просто перенести или надо текстуры и анимации как то подгонять? Спасибо за внимание.
-
Народ подскажите пожалуйста, есть ли где нибудь в открытом доступе модулька на викинг конквест?
Есть. Ее можно скачать с официального сайта TaleWorlds.
И можно ли соответственно в данную МС перенести бронь и оружие натива?
Можно.
И насколько это сложно? В смысле можно просто перенести или надо текстуры и анимации как то подгонять?
Достаточно просто. Ничего особо редактировать и подгонять не нужно.
-
Спасибо за ответ. И хотелось бы узнать ваше мнение о данной МС. Планирую мод где ключевые фракции кочевники однако в моде Викинг конквест конница показалась весьма слабой. Сделали это урезав статы лошадей, юнитов или там проблема глубже? Стоит ли вообще начинать на ее базе модить?
П.С. в основном ради морских боёв позарился на данный МС
-
Здравствуйте. У меня в ходе работы с модульной системой возникло несколько вопросов.
1) Как в ряде поселений условной фракции 3 прописать культуру условной фракции 9? В module_scripts в "game_start" я прописал:
(party_set_slot, "p_town_38", 19, "fac_culture_9"),
(party_set_slot, "p_castle_35", 19, "fac_culture_9"),
(party_set_slot, "p_village_112", 19, "fac_culture_9"), и т.д. по аналогии с тем, как это сделано в decompiler'e мода AD1257. Однако это не дало результата.
2) Опять же про культуру. Как лорду фракции 3 прописать культуру фракции 9?
3) Как можно запретить в ряде городов на турнирах выдавать лошадей и лук-стрелы?
4) Как изменить среднюю скорость перемещения отрядов по ГК?
Буду благодарен за помощь
-
Возникло несколько вопросов.
1. В последних версиях варбанда есть возможность ставить метку guarantee_polearm. Делаю мод на ОиМ, там такой метки нет. Как я понимаю, это в движке прошито и через модульку не исправить?
2. Хотел заменить один из старых перков на новый, увеличивающий скорострельность огнестрела. Возможно ли это через модульку? Через скрипты увеличивать скорострельность за каждый пункт скилла?
-
1. В последних версиях варбанда есть возможность ставить метку guarantee_polearm. Делаю мод на ОиМ, там такой метки нет. Как я понимаю, это в движке прошито и через модульку не исправить?
Да.
-
Всем доброго времени суток, прошу ответа на вопрос или пинка в сторону, где он может находится. Как в меню характеристик персонажа поменять константы относящиеся к умению "Тренер"? То есть изначально они идут ориентировочно 0, 4, 8, 15, 20 ... 60, а их градацию хочется поменять на более резкую а ля 0, 10, 20, ..., 200, где найти как их поменять?
-
Здравствуйте. Возник вопрос, связанный с большим числом фракций: ежедневно в связи с объявлением войн, заключением мира, торговых договоров и т.п. появляется не менее десятка всплывающих окон с соответствующими уведомлениями. Как выключить эту функцию? Буду благодарен за помощь
-
Приветствую. У меня есть вопрос, и я думаю, что проблема решаема. В играх "Карибы!" и "На Карибы. Золото и кровь" на глобальной карте таргет камеры "отвязывается" от отряда ГГ, если вы ведете мышью в сторону. В Варбанде, Классике и в любой другой версии МБ при движении мыши в сторону на глобальной карте, камера вращалась вокруг отряда ГГ - можно было оглядывать окружающую обстановку, отдалятся, приближаться, а в Каррибах - нет. Меня это страшно бесит, я просто не могу нормально поиграть в эту часть (а вот ностальгия чет накатила - хочется). Можно ли это как то решить?
-
Здравствуйте. Помню, на форуме была инструкция по добавлению морских сражений в мод с выложенными скриптами. Не могу найти. Буду благодарен за ссылку
-
Hramadzianin (https://rusmnb.ru/index.php?action=profile;u=49903), https://forums.taleworlds.com/index.php/topic,136095.0.html (https://forums.taleworlds.com/index.php/topic,136095.0.html)
-
День добрый!
Есть проблема, хотел добавить древо войск (линейка фракционных войск) dynamic troop trees в другой мод pack mini-mods есть исходные модульные файлы, получилось создать пункт меню view upgrade trees (написал небольшой код в файле module game_menus)в меню отчеты, кнопки выходы нет, и проблема что писать в других файлах модульной системы солянки мода чтобы отобразилась ветка воинов?
-
Всем доброго времени суток!
Сегодня решил приступиться к модульной системе (Brytenwalda 1.41). У меня уже был Python 3.8.2. На третьем питоне path enironment создаётся сразу при установке, если выставить нужный флаг. Попробовал скомпилировать - ошибки синтаксиса (syntax error).
Поискал, в этой темке (http://"https://rusmnb.ru/index.php?topic=2940.0") советуют скачать 2.6.6 или 2.7.1 2.7.10 версию (инфа 2009-го года). Решив, что дело в поколении версий, скачал последнюю двушку (2.7.18).
Теперь, собственно, вопросы. Их два:
1. Можно ли использовать для компилляции версию Python 2.7.18 или всё-таки работает только указанная 2.7.10?
2. Не могу вручную создать windows path environment: в Панели управления отсутствует ссылка на Дополнительные параметры системы. ОС - Windows 8.1. Кто-то знает, где искать данную опцию?
-
1. Можно ли использовать для компилляции версию Python 2.7.18 или всё-таки работает только указанная 2.7.10?
Можно.
-
Janycz, благодарю!
Со вторым разобрался сам: дополнительные параметры системы на Win 8.1 находятся не на Панели управления, а в Свойствах системы.
Однако, теперь при компилляции выводит море ошибок на каждый пункт. Указание адресов размещения папки с модулем в файле module_info перепроверял, пробовал даже переносить всё по классике в директорию C: - эффекта ноль. В чём может заключаться проблема?
-
Однако, теперь при компилляции выводит море ошибок на каждый пункт. Указание адресов размещения папки с модулем в файле module_info перепроверял, пробовал даже переносить всё по классике в директорию C: - эффекта ноль. В чём может заключаться проблема?
Ну так такие проблемы решают только с полным сообщением об ошибке.
-
Janycz, думал, может, есть какая-то "распространённая ошибка новичков" )
Вот лог ошибки
Initializing...
variables.txt not found. Creating new variables.txt file
Compiling all global variables...
Traceback (most recent call last):
File "process_global_variables.py", line 106, in <module>
save_variables(export_dir, variables,variable_uses)
File "C:\Users\└ээр\Desktop\Brytenwalda\Module_system 1.157 - Brytenwalda 1.41\process_operations.py", line 171, in save_variables
file = open(export_dir + "variables.txt","w")
IOError: [Errno 13] Permission denied: 'C:/Program Files/Mount&Blade/Modules/Bryttrain/variables.txt'
Exporting strings...
Traceback (most recent call last):
File "process_strings.py", line 26, in <module>
save_strings(strings)
File "process_strings.py", line 9, in save_strings
ofile = open(export_dir + "strings.txt","w")
IOError: [Errno 13] Permission denied: 'C:/Program Files/Mount&Blade/Modules/Bryttrain/strings.txt'
Exporting skills...
Traceback (most recent call last):
File "process_skills.py", line 32, in <module>
save_skills()
File "process_skills.py", line 15, in save_skills
ofile = open(export_dir + "skills.txt","w")
IOError: [Errno 13] Permission denied: 'C:/Program Files/Mount&Blade/Modules/Bryttrain/skills.txt'
Exporting tracks...
Traceback (most recent call last):
File "process_music.py", line 23, in <module>
save_tracks()
File "process_music.py", line 15, in save_tracks
file = open(export_dir + "music.txt","w")
IOError: [Errno 13] Permission denied: 'C:/Program Files/Mount&Blade/Modules/Bryttrain/music.txt'
Exporting animations...
Traceback (most recent call last):
File "process_animations.py", line 61, in <module>
write_actions(animations,len(action_codes),action_codes,"actions.txt")
File "process_animations.py", line 24, in write_actions
file = open(export_dir + file_name,"w")
IOError: [Errno 13] Permission denied: 'C:/Program Files/Mount&Blade/Modules/Bryttrain/actions.txt'
Exporting meshes...
Traceback (most recent call last):
File "process_meshes.py", line 25, in <module>
save_meshes()
File "process_meshes.py", line 9, in save_meshes
ofile = open(export_dir + "meshes.txt","w")
IOError: [Errno 13] Permission denied: 'C:/Program Files/Mount&Blade/Modules/Bryttrain/meshes.txt'
Exporting sounds...
Traceback (most recent call last):
File "process_sounds.py", line 51, in <module>
write_sounds(sound_samples, sounds)
File "process_sounds.py", line 13, in write_sounds
ofile = open(export_dir + "sounds.txt","w")
IOError: [Errno 13] Permission denied: 'C:/Program Files/Mount&Blade/Modules/Bryttrain/sounds.txt'
Exporting skins...
Traceback (most recent call last):
File "process_skins.py", line 105, in <module>
export_skins(skins)
File "process_skins.py", line 45, in export_skins
ofile = open(export_dir + "skins.txt","w")
IOError: [Errno 13] Permission denied: 'C:/Program Files/Mount&Blade/Modules/Bryttrain/skins.txt'
Exporting map icons...
Traceback (most recent call last):
File "process_map_icons.py", line 38, in <module>
save_map_icons(variables,variable_uses,tag_uses,quick_strings)
File "process_map_icons.py", line 9, in save_map_icons
ofile = open(export_dir + "map_icons.txt","w")
IOError: [Errno 13] Permission denied: 'C:/Program Files/Mount&Blade/Modules/Bryttrain/map_icons.txt'
Exporting faction data...
Traceback (most recent call last):
File "process_factions.py", line 70, in <module>
save_factions(relations)
File "process_factions.py", line 34, in save_factions
file = open(export_dir + "factions.txt","w")
IOError: [Errno 13] Permission denied: 'C:/Program Files/Mount&Blade/Modules/Bryttrain/factions.txt'
Exporting item data...
Traceback (most recent call last):
File "process_items.py", line 72, in <module>
write_items(variables,variable_uses,tag_uses,quick_strings)
File "process_items.py", line 19, in write_items
ofile = open(itemkinds_file_name,"w")
IOError: [Errno 13] Permission denied: 'C:/Program Files/Mount&Blade/Modules/Bryttrain/item_kinds1.txt'
Exporting scene data...
Traceback (most recent call last):
File "process_scenes.py", line 77, in <module>
save_scenes(variables,variable_uses,tag_uses)
File "process_scenes.py", line 46, in save_scenes
ofile = open(export_dir + "scenes.txt","w")
IOError: [Errno 13] Permission denied: 'C:/Program Files/Mount&Blade/Modules/Bryttrain/scenes.txt'
Exporting troops data
Traceback (most recent call last):
File "process_troops.py", line 107, in <module>
save_troops()
File "process_troops.py", line 13, in save_troops
file = open(export_dir + "troops.txt","w")
IOError: [Errno 13] Permission denied: 'C:/Program Files/Mount&Blade/Modules/Bryttrain/troops.txt'
Exporting particle data...
Traceback (most recent call last):
File "process_particle_sys.py", line 61, in <module>
save_particle_systems()
File "process_particle_sys.py", line 29, in save_particle_systems
ofile = open(export_dir + "particle_systems.txt","w")
IOError: [Errno 13] Permission denied: 'C:/Program Files/Mount&Blade/Modules/Bryttrain/particle_systems.txt'
Exporting scene props...
Traceback (most recent call last):
File "process_scene_props.py", line 32, in <module>
save_scene_props(variables,variable_uses,tag_uses,quick_strings)
File "process_scene_props.py", line 10, in save_scene_props
ofile = open(export_dir + "scene_props.txt","w")
IOError: [Errno 13] Permission denied: 'C:/Program Files/Mount&Blade/Modules/Bryttrain/scene_props.txt'
Exporting tableau materials data...
Traceback (most recent call last):
File "process_tableau_materials.py", line 31, in <module>
save_tableau_materials(variables,variable_uses,tag_uses,quick_strings)
File "process_tableau_materials.py", line 11, in save_tableau_materials
ofile = open(export_dir + "tableau_materials.txt","w")
IOError: [Errno 13] Permission denied: 'C:/Program Files/Mount&Blade/Modules/Bryttrain/tableau_materials.txt'
Exporting presentations...
Traceback (most recent call last):
File "process_presentations.py", line 33, in <module>
save_presentations(variables,variable_uses,tag_uses,quick_strings)
File "process_presentations.py", line 11, in save_presentations
ofile = open(export_dir + "presentations.txt","w")
IOError: [Errno 13] Permission denied: 'C:/Program Files/Mount&Blade/Modules/Bryttrain/presentations.txt'
Exporting party_template data...
Traceback (most recent call last):
File "process_party_tmps.py", line 46, in <module>
save_party_templates()
File "process_party_tmps.py", line 20, in save_party_templates
file = open(export_dir + "party_templates.txt","w")
IOError: [Errno 13] Permission denied: 'C:/Program Files/Mount&Blade/Modules/Bryttrain/party_templates.txt'
Exporting parties
Traceback (most recent call last):
File "process_parties.py", line 69, in <module>
save_parties(parties)
File "process_parties.py", line 12, in save_parties
file = open(export_dir + "parties.txt","w")
IOError: [Errno 13] Permission denied: 'C:/Program Files/Mount&Blade/Modules/Bryttrain/parties.txt'
Exporting quest data...
Traceback (most recent call last):
File "process_quests.py", line 30, in <module>
save_quests()
File "process_quests.py", line 9, in save_quests
ofile = open(export_dir + "quests.txt","w")
IOError: [Errno 13] Permission denied: 'C:/Program Files/Mount&Blade/Modules/Bryttrain/quests.txt'
Exporting info_page data...
Traceback (most recent call last):
File "process_info_pages.py", line 26, in <module>
save_info_pages()
File "process_info_pages.py", line 9, in save_info_pages
ofile = open(export_dir + "info_pages.txt","w")
IOError: [Errno 13] Permission denied: 'C:/Program Files/Mount&Blade/Modules/Bryttrain/info_pages.txt'
Exporting scripts...
Traceback (most recent call last):
File "process_scripts.py", line 40, in <module>
save_scripts(variables,variable_uses,scripts,tag_uses,quick_strings)
File "process_scripts.py", line 10, in save_scripts
file = open(export_dir + "scripts.txt","w")
IOError: [Errno 13] Permission denied: 'C:/Program Files/Mount&Blade/Modules/Bryttrain/scripts.txt'
Exporting mission_template data...
Traceback (most recent call last):
File "process_mission_tmps.py", line 64, in <module>
save_mission_templates(variables,variable_uses,tag_uses,quick_strings)
File "process_mission_tmps.py", line 38, in save_mission_templates
file = open(export_dir + "mission_templates.txt","w")
IOError: [Errno 13] Permission denied: 'C:/Program Files/Mount&Blade/Modules/Bryttrain/mission_templates.txt'
Exporting game menus data...
Traceback (most recent call last):
File "process_game_menus.py", line 47, in <module>
save_game_menus(variables,variable_uses,tag_uses,quick_strings)
File "process_game_menus.py", line 22, in save_game_menus
ofile = open(export_dir + "menus.txt","w")
IOError: [Errno 13] Permission denied: 'C:/Program Files/Mount&Blade/Modules/Bryttrain/menus.txt'
exporting simple triggers...
Traceback (most recent call last):
File "process_simple_triggers.py", line 24, in <module>
save_simple_triggers(variables,variable_uses,simple_triggers,tag_uses,quick_strings)
File "process_simple_triggers.py", line 8, in save_simple_triggers
file = open(export_dir + "simple_triggers.txt","w")
IOError: [Errno 13] Permission denied: 'C:/Program Files/Mount&Blade/Modules/Bryttrain/simple_triggers.txt'
exporting triggers...
Traceback (most recent call last):
File "process_dialogs.py", line 199, in <module>
save_triggers(variables,variable_uses,triggers,tag_uses,quick_strings)
File "process_dialogs.py", line 47, in save_triggers
file = open(export_dir + "triggers.txt","w")
IOError: [Errno 13] Permission denied: 'C:/Program Files/Mount&Blade/Modules/Bryttrain/triggers.txt'
Checking global variable usages...
Exporting postfx_params...
Traceback (most recent call last):
File "process_postfx.py", line 27, in <module>
write_postfx_params(postfx_params)
File "process_postfx.py", line 13, in write_postfx_params
ofile = open(export_dir + "postfx.txt","w")
IOError: [Errno 13] Permission denied: 'C:/Program Files/Mount&Blade/Modules/Bryttrain/postfx.txt'
______________________________
Script processing has ended.
Press any key to exit. . .
Можно ли по этому что-то понять? Может, нужно выставить какие-то допнастройки системы, чтобы среда работала нормально?
-
Годерик, сын Витовта (https://rusmnb.ru/index.php?action=profile;u=51795), смотрите,
черным по белому белым по черному вам Python сообщает: IOError: [Errno 13] Permission denied. Нет прав на запись. Выставите нужные права для папки C:/Program Files/Mount&Blade/Modules/Bryttrain/. Вот поэтому работать с модом и игрой в Program Files не лучшая идея.
-
Janycz, снова благодарю! Компилляция прошла успешно )
-
Доброго времени суток! Через модульную систему пытаюсь заменить музыку в игре 1.011 история героя, компиляция проходит успешно но музыка не звучит!
Пробую заменить песню в главном меню для начала...
("vanila", "vanila.ogg", mtf_sit_main_title|mtf_start_immediately, 0),
Самое интересное что звуки через модульную систему заменяются и работают отлично, а вот с песнями какая-то беда. Конвертировал в разные форматы, в ini считывание музыки из модуля активно и в самой игре звук на максимум... Уже руки опускаются. Посоветуйте что может быть?
mtf_module_track - не помогает
-
Доброго времени суток! В модульной системе WFaS 1.143 почему-то используется дефолтная иконка village_a для деревни во всех фракциях.
В module_parties.py иконки для фракционных деревень прописаны уникальные но работают они только до разграбления деревни на глобальной карте, далее меняются на дефолтную village_a.
В module_map_icons.py иконки для деревень тоже прописаны уникальные но как я понял игра не воспринимает эти записи и ссылается на дефолтную village_a, опять же после разграбления.
3-й день калдую но чары видимо слабые. Подскажите пожалуйста возможно ли это исправить?
-
Jan_Skrzetuski (https://rusmnb.ru/index.php?action=profile;u=51004), у меня есть стойкое подозрения, что Вы на данный момент являетесь единственным человеком в мире, работающим с модулькой ОиМ. Так что, боюсь, только на себя надеется стоит.
-
Так что, боюсь, только на себя надеется стоит.
Нашел ошибку, зарилась она в module_game_menus.ру, отсутствуют части кода и ошибки в иконках, с моими навыками хотя бы за неделю исправить)
-
Прошу помощи!
Некоторые вещи в игре обладают параметром difficulty отличным от нуля, в файле header_items.py этот параметр определен как - ibf_difficulty_bits = 32
Подскажите какой операцией в модульке можно записать в переменную значение этого параметра?
-
Доброго времени суток.
Такой вопрос,хочу добавить новый отряд селян которые ходят в города для конкретной фракции. Юниты и шаблоны отрядов были созданы,но не могу понять как их прописать в скриптах,так чтобы они появлялись только у нужной фракции.Буду благодарен за любую помощь!
P.S:Понял,что за отряд селян отвечает вот этот отрывок кода.
(try_begin),
(is_between, ":town_no", towns_begin, towns_end),
(set_spawn_radius, 0),
(spawn_around_party, ":village_no", "pt_village_farmers"),
(assign, ":new_party", reg0),
(party_set_faction, ":new_party", ":party_faction"),
(party_set_slot, ":new_party", slot_party_home_center, ":village_no"),
(party_set_slot, ":new_party", slot_party_last_traded_center, ":village_no"),
(party_set_slot, ":new_party", slot_party_type, spt_village_farmer),
(party_set_slot, ":new_party", slot_party_ai_state, spai_trading_with_town),
(party_set_slot, ":new_party", slot_party_ai_object, ":town_no"),
(party_set_ai_behavior, ":new_party", ai_bhvr_travel_to_party),
(party_set_ai_object, ":new_party", ":town_no"),
(party_set_flags, ":new_party", pf_default_behavior, 0),
(store_sub, ":item_to_price_slot", slot_town_trade_good_prices_begin, trade_goods_begin),
(try_for_range, ":cur_goods", trade_goods_begin, trade_goods_end),
(store_add, ":cur_good_price_slot", ":cur_goods", ":item_to_price_slot"),
(party_get_slot, ":cur_village_price", ":village_no", ":cur_good_price_slot"),
(party_set_slot, ":new_party", ":cur_good_price_slot", ":cur_village_price"),
(try_end),
(assign, reg0, ":new_party"),
(try_end),
]),
-
Народ, такой вопрос - что нужно прописать в диалоге, чтобы город стал виден только после этого самого диалога? Модулька самая обычная на Миб