Голосование

Какое у вас отношение к игре "Смута"?














Оформление



Пользователей
  • Всего: 28837
  • Последний: kevin32143
Сейчас на форуме
Пользователи: 4
Гостей: 590
Всего: 594

Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - ziff21

Страницы: [1]
1
Извините если уже был такой вопрос! Как избавиться от первого квеста (WB)? И после каких изменений не надо начинать новую игру? Спс
Для того, чтобы отключить первый квест в начале новой игры, нужно найти в самом начале файла game_menus модульки меню с идентификатором (start_phase_2). Вот кусок его кода:
("start_phase_2",mnf_disable_all_keys,
    "You hear about Calradia, 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),],"join a caravan to Praven, in the Kingdom of Swadia.",
       [
         (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_return),
       ]),
       
      ("town_2",[(eq, "$current_startup_quest_phase", 0),],"join a caravan to Reyvadin, in the Kingdom of the Vaegirs.",
       [
         (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_return),
       ]),
... ...
То, что выделено красным, нужно закомментировать, а то, что зеленым - наоборот.  Эти манипуляции можно провести со всеми шестью пунктами меню, а можно вообще придумать что-то свое. Из выше приведенного участка кода видно, что изначально первого квеста не было, партия игрока просто перемещалась к указанному городу и происходил выход на глобальную карту. Потом это было закомментировано и добавлен переход в первое меню стартового квеста (mnu_start_phase_2_5). Правда, я не проверял, работает ли стартовый квест после этих манипуляций, так как лично мне этот квест не нужен вообще. Вполне вероятно, что квест сохранит работоспособность, так как торговец появляется в таверне.

2
Запускаем игру- Переключаем на английский язык- в Configure включаем режим (Start Windowed)-начинаем новую игру-на карте в верхнем правом углу нажимаем View/Create Language Template\Default-выходим -теперь в папке с игрой у нас появилась папочка new language там то и лежат нужные нам файлы с английским текстом ,с ними и работаем.Папка ui.csv находится в папке  languages самой игры,обычно она общая с Нативом,но иногда в ней есть изменения,тогда она скорее всего находиться в папке languages,вашего мода.
Данный метод актуален, если автор создает мод, кардинально отличающийся от Native (полностью изменена карта, другие поселения, фракции, персонажи, задания и т. д.). А если мод является расширением Native (diplomacy, Native expansion и т.д.), то нет необходимости получать исходные файлы английской локализации. Гораздо проще скопировать папку ru из натива (Native\languages), вставить ее в папку languages своего мода и далее просто добавлять строки перевода в уже существующие файлы. Например, создали пункт меню "camp_test_1", сразу же открываем файл game_menus.csv в текстовом редакторе (мне лично нравится Notepad++)  и добавляем в конец файла "mno_camp_test_1|Тестовый пункт". Причем порядок следования строк локализации в файле *.csv не имеет значения, проверено, потому добавлять свой перевод можно в конец файлов. Единственный нюанс может возникнуть при переводе диалогов. ID строки диалога в файле dialogs.csv создается так: сначала идет непосредственно ID самой строки, затем двоеточие ":", а после ID той строки, куда направляет данная строка. Например для строки диалога
[anyone, "start", [], "test phrase 1", "close_window"
[
    #какие-то действия
]],
строка локализации выглядит так: dlga_start:close_window|перевод строки
Если строк с такими условиями несколько:
[anyone|plyr, "test_phrase", [], "test phrase 1", "start", []],
[anyone|plyr, "test_phrase", [], "test phrase 2", "start", []],
[anyone|plyr, "test_phrase", [], "test phrase 3", "start", []],
то перевод этих строк будет выглядеть так:
dlga_test_phrase:start|первая строка
dlga_test_phrase:start.1|вторая строка
dlga_test_phrase:start.2|третья строка
Обратите внимание, что, начиная со второй строки, к ID через точку добавляется порядковый номер строки ( на единицу меньший). В остальных файлах ID для перевода однозначен и не вызывает затруднений. Такой способ локализации избавляет от необходимости выполнять "мартышкин труд". Очень удобно добавлять перевод по мере разработки мода.



3
Первый, весьма интересный вопрос.

Можно ли каким-то образом добавить при атаке еще один пункт "Атаковать самому"? Т.е. ввязатся в драку без войска. За ответы заранее спасибо.
Можно, но не так просто, как кажется.
1. Добавить этот пункт в нескольких меню:
join_battle - меню стандартной битвы, дающее выбор: атаковать, послать в бой войска, отступить.
castle_besiege - меню осады, выбор: повести войска на штурм, послать войска на штурм, подождать, оступить.
Также в других меню, зависит от задумки.
2. Работа с шаблонами миссий (mission templates). Вносить правки в уже существующие шаблоны, такие как:
mt_lead_charge - шаблон стандартной рандомной битвы
mt_castle_attack_walls_defenders_sally - битва у стен крепости с защитниками (защитники делают вылазку.)
mt_castle_attack_walls_belfry - сценарий боя у стен с осадной башней.
mt_castle_attack_walls_ladder - сценарий боя у стен с лестницей.
mt_besiege_inner_battle_town_center - битва в центре двора крепости.
mt_besiege_inner_battle_castle - битва внутри замка.
mt_village_attack_bandits - бой против бандитов за деревню.
mt_village_raid - Разграбление деревни (бой с крестьянами).
Если нет желания править стандартные шаблоны миссий, то можно создать свои. Так безопаснее, но очень разрастется код.
Проще всего реализовать через глобальную переменную. В начальном блоке операций меню определить эту переменную в нулевое значение. Затем в созданном пункте меню эта переменная устанавливается в ненулевое значение, далее в тех шаблонах, где необходимо найти триггеры, отвечающие за появление подкреплений и добавить в их блоки условий проверку этой переменной. Если 0 то вызываем дружественные подкрепления, иначе нет.
Я описал процесс лишь в общих чертах, дал общие подсказки. Конкретная реализация зависит от конкретной задумки.
 

Добавлено: 04 Сентября, 2014, 12:37

Все поборол python'а!!! Установка несколько отличается для Vista x64 от описанной в инструкции. Дело в том что в Vista (по крайней мере у меня),нет системной переменной PATH - есть path и как я понял это не одно и тоже,т.е. PATH надо создать и туды уже прописать C:\python26 . Ну щас дальше faq освою уже по самой модульной системе и вперед!
Необязательно править системную переменную PATH. Можно просто поправить bat-файл модульной системы, заменив команду 'python' на путь к исполняемому модулю питона. (У меня, например, вместо python process_init.py... написано C:\Python26\python.exe process_init.py...).

 

Добавлено: 04 Сентября, 2014, 13:02

1) Как правильно убрать через модульную систему все деревни? Не вызовет ли это каких либо сбоев в игре?
Убрать все деревни можно без сбоев. Но для этого придется конкретно перелопатить модульную систему. Во-первых в script_game_start происходит привязка деревень к крепостям и городам. (ищите комментарий '# fill_village_bound_centers').
Эту привязку нужно убрать. Затем искать по модульной системе конкретные ID деревень а также конструкции циклов и условий(try_for_range) и (is_between) по диапазонам деревень(villages_begin, villages_end), диапазонам крепостей(castles_begin, castles_end) и диапазонам городов(towns_begin, towns_end) и отключить весь код, касающийся деревень. Это довольно долгий процесс.

4
бло,все сделал по инструкции и в итоге вышло две фракции султан саранидов  :cry:

Добавлено: [time]10 Январь, 2011, 10:44:48 [/time]
будьте добры исправте пожалусто туториал,
В туториале все правильно написано, я сам по нему добавлял фракцию. То что у тебя вышло две фракции саранидов ошибка лично твоя, и не надо все сразу валить на туториал. Так что будь добр вместо того что бы обвинять других возьмись за модульку, и поищи где ты ошибся. Единственный нюанс, туториал писался под МиБ, а не под Варбенд, так что учитывай это.
бло,все сделал по инструкции и в итоге вышло две фракции султан саранидов  :cry:

Добавлено: 10 Января, 2011, 09:44
будьте добры исправте пожалусто туториал,
Добрый день, товарищи! Вы забыли, что в Warband 6 фракций.
fac_kingdom1 - Свады
fac_kingdom2 - Вегиры
fac_kingdom3 - Кергиты
fac_kingdom4 - Норды
fac_kingdom5 - Родоки
fac_kingdom6 - Сарраниды
Так что, если добавлять, то надо изменить идентификатор.

5
Видел такое в моде 1866 и Prophesy of Pendor, то есть поддержка любой стороны в бою вне зависимости от ее к тебе отношения, как?
Могу подсказать Вам, alexander97, как это можно сделать в ОИМ Великие битвы. Но я думаю, в обычном Warband код МС аналогичен. В module_game_menus.py ищем меню с меткой "pre_join". Данное меню вызывается, когда партия игрока сталкивается с битвой двух партий на глоб. карте. Вот его код:
Зеленым выделены строки кода, отвечающего за проверку отношения к игроку атакующей и защищающейся партии.
Я, правда еще не успел проверить, работает ли при осаде замков(чтобы выбирать, к кому присоединиться - к осаждающим или защитникам), но точно работает при столкновении двух отрядов на карте. Можно помочь даже бандитам, при этом отношение их фракции к игроку улучшается. Выделенные строки можно просто закомментировать.

6
В этоом моде увидел наглядную цепочку развития новобранцев
(лагерь -> Take an action -> View updates trees)...., митежников и т.д...

Так вот вопросик как из этого мода вытащить эту фукцию и втавить например в Native или смой мод. ?
Если эта функция реализована через меню, то, соответственно, необходимо:
  • Найти в game_menus.py меню лагеря. К сожалению, сейчас не могу подсказать, как оно называется. Но можно найти его через файл локализации, если у вас русская версия, это game_menus.csv в native/languages/ru. Там содержатся идентификаторы пунктов всех меню игры и локализация к ним. Найдите нужный идентификатор (без приставки mno_)  и по нему в game_menus.py нужное меню.
  • Затем необходимо добавить в это меню новый пункт, в котором прописать ссылку на будущее новое меню.
  • А потом (желательно сразу же после меню лагеря) написать свое меню, и прописать там необходимые повышения. Только учтите, что вам придется создать также необходимые профили солдат в module_troops.py, а затем через меню скриптовыми функциями удалять из стэка вашей партии старых солдат и добавлять повышенных.
Конкретный код на данный момент не могу вам привести, так как не реализовывал еще сам данное действо, но общий алгоритм действий, я думаю, такой.
Если же вам необходимо, чтобы солдаты повышались обычным образом через экран партии, то в конце файла module_troops.py вы увидите довольно длинный список апгрейдов, выглядит так:

upgrade(troops,"farmer", "townsman")
upgrade(troops,"townsman","watchman")
upgrade2(troops,"swadian_recruit","swadian_skirmisher","swadian_militia")
upgrade(troops,"swadian_militia","swadian_militia_levelup")
upgrade(troops,"swadian_skirmisher","swadian_skirmisher_levelup")
.................................................
.................................................

Функция upgrade(troops, <ид_исходного_бойца>, <ид_повышенного_бойца>) описывает, в кого повышается указанный тип воина. Комбинацией из этой функции вы можете прописать воину линейку повышений.

7
За каждый новый уровень Интелекта дают 2 очка умений.
А за каждый уровень Силы или Ловкости - по 1-му.
Подскажите пожалуйста, можно ли сделать, чтобы за каждый полученный уровень Силы или Ловкости тоже давалось по 2 или 3 очка, причем и у героя, или у NPC? А то прокачаться вообще невозможно!
Я полагаю, размеры повышений за очки умений зашиты в движке, посудите сами, экран повышения уровня персонажа не описан скриптом, а вызывается одной операцией change_screen_view_character, которой опционально передается параметр идентификатор персонажа либо другого солдата. Также как и некоторые другие экраны, например:
change_screen_exchange_members- экран обмена войсками с другой партией;
change_screen_trade_prisoners - экран продажи пленных;
change_screen_equip_other - экран экипировки и т. д. смотрите header_operation

8
Скилы прописываются в module_skills.py, а не header_skills.py. В header_skills можно разве что поменять ID скила, чтобы обращаться со скриптов к нему по нормальному названию, а не reserved_n.
Эффекты большинства скилов вшиты в движок, и влиянию со стороны модульки не поддаются. Эффекты от некоторых скилов можно поменять в module.ini, или же копаться в скриптах модульки.
Согласен с Leon473 по поводу добавления новых скиллов. Добавить новый скилл можно лишь по следующему принципу: для самого скилла использовать одну из зарезервированных ячеек, заменив идентификатор и название, а также убрать флаг sf_inactive. А затем в каком-нибудь скрипте определять его уровень, и на основании этого производить какие-либо действия (опять же ограниченные набором операций для скриптов, см. header_operations). Таким образом, кстати реализованы эффекты скиллов "Лидерство"(в скрипте script_game_get_companion_limit) и "Содержание пленных"(в скрипте script_game_get_party_prisoner_limit). В этих скриптах определяется размер отряда и макс. кол-во пленных в партии игрока в зависимости от соответствующих навыков.

9
а поподробнее про header_troops можно?
У меня сказано #Не менять этот файл!
Может изменить header_skills?
Господа, я думаю,что смогу Вам помочь со скиллами и атрибутами.
По атрибутам:
В header_troops.py прописаны константы атрибутов, например:
str_3            = bignum | 0x00000003  - константа силы со значением 3
........
........
agi_3            = bignum | 0x00000300 - константа ловкости со значением 3
........
по каждому атрибуту список значений от 3 до 30. (максимально возможные значения каждого атрибута - 63). Значения констант заданы в шестнадцатеричном формате, различаются смещением влево на 1 байт. В этом несложно разобраться, добавляйте в конец списка каждого атрибутасвои значения через константы и будет Вам счастье.
Для примера:
str_63           = bignum | 0x0000003f - сила 63
agi_63           = bignum | 0x00003f00 - ловкость 63
int_63           = bignum | 0x003f0000 - интеллект 63
cha_63           = bignum | 0x3f000000 - харизма 63.
(проверено, работает).

Далее, по скиллам:
Максимальные значения скиллов прописаны в файле module_skills.py. Чтобы в игре иметь возможность повысить скиллы больше 10, необходимо прописать максимумы в данном файле. Только вот не рекомендую увеличивать максимумы больше 15, движок может неадекватно воспринять большие значения, я ковырялся в исходниках некоторых модов(где они выложены) и не встречал повышений скиллов более 15.

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

(troop_raise_skill,<troop_id>,<skill_id>,<value>), - ПОВЫШАЕТ!!!(а не устанавливает) значение указанного скилла на <value> единиц. skill_id прописаны в файле header_skills.py и имеют вид skl_leadership - лидерство и т. д.

(troop_raise_attribute,<troop_id>,<attribute_id>,<value>) - тоже самое с атрибутами, атрибуты прописаны в header_troops.py (ca_strength, ca_agility, ca_intelligence, ca_charisma)

(troop_raise_proficiency,<troop_id>,<proficiency_no>,<value>), - повышение характеристик владения оружием, тоже в header_troops.py (вид wpt_one_handed_weapon - одноручное оружие и т. д.)

troop_raise_proficiency_linear - это, я так понимаю, повышение сверх лимита, определяемого навыком "Владение оружием".

Надеюсь, получилось вполне исчерпывающе.

Страницы: [1]
СиЧЪ Total War СиЧЪ Total War
Сайт "Всадники Кальрадии" не является СМИ. Администрация не несет ответственность за высказывания и публикацию каких-либо материалов, сделанные любыми пользователями форума, в том числе посредством личных и публичных сообщений. Материалы, размещенные на ресурсе третьими лицами, могут содержать информацию, не предназначенную для лиц, не достигнувших совершеннолетия. При обнаружении на ресурсе материалов, нарушающих законодательство Российской Федерации, необходимо обращаться к администрации.
Сайт работает на быстром VPS/VDS хостинге от FASTVPS


Powered by SMF 2.0 | SMF © Simple Machines LLC