Голосование

Как вы относитесь к играм в жанре "симулятор колонии"?












Оформление



Пользователей
  • Всего: 29195
  • Последний: WapKat
Сейчас на форуме
Пользователи: 1
Гостей: 567
Всего: 568

0 Пользователей и 1 Гость просматривают эту тему.

Тема: [Script] Добавление сундуков с предметами в сцены через МС  (Прочитано 1170 раз)

  • Сообщений: 7886
  • За победу в конкурсе "Знамя кальрадийца" За активный вклад в развитие сайта За особо выдающиеся авторские тексты За активную деятельность, связанную с публикациями и помощью другим посетителям За регистрацию на форуме не позже декабря 2011 года и не менее 3000 постов
    • Просмотр профиля

Гайд по добавлению сундуков с предметами на сцену через модульную систему, в которые можно заглянуть и взять вещи. Разрешено использовать данный скрипт без дополнительных согласований, только с указанием авторства и ссылкой на основную тему мода Рассвет новой эры, в любых некоммерческих проектах, связанных с Mount & Blade.
Автор Ordinary
Скрипт был сделан для мода Рассвет новой эры


Для добавления необходимы:
- модульная система (далее МС);
- базовые знания работы с МС и ВРС (встроенным редактором сцен).

Условные знаки:
n1,n2,n3... - номер строки, к которой следует пояснение.
"#########################" - начало и конец кода, который нужно добавить.




Добавить в конец файла module_triggers.py (триггер для заполнения сундуков, запуск 1 раз за игру в самом начале):

###################################
#Generate items for bonus chests#
(0, 0, ti_once, [],
[
(try_for_range, ":chest", "trp_bonus_chest1","trp_bonus_chests_end"), # n1
(try_begin),
(eq,":chest","trp_bonus_chest1"), # n2
(troop_add_items,":chest","itm_iron",5),
(troop_add_items,":chest","itm_bread",2),
(troop_add_item,":chest","itm_mining_pickaxe",imod_rusty),
(troop_add_items,":chest","itm_shirt",3),
(else_try),
(store_random_in_range,":random_number",1,10), # n3
(try_for_range, ":unused",0,":random_number"),
(store_random_in_range,":random_itm","itm_tutorial_spear","itm_items_end"), # n4
(call_script,"script_genarate_modifier_for_chest_item",":random_itm"),
(troop_add_item,":chest",":random_itm",reg0),
(try_end),
(try_end),
(try_end),
#(display_message,"@DEBUG: chest items initialized"),
]),
##################################

Добавить в файл module_scripts.py (скрипт генерации модификаторов вещей для триггера заполнения сундуков):

############################################
#script_genarate_modifier_for_chest_item
#input: item_id
#output: genetated item modifier (stores in reg0)

("genarate_modifier_for_chest_item",
[
(store_script_param, ":item", 1),

(item_get_type,":type",":item"),
(try_begin),
(eq,":type",itp_type_horse),
(store_random_in_range,":random",imod_lame,imod_fresh),
(else_try),
(this_or_next|eq,":type",itp_type_one_handed_wpn),
(this_or_next|eq,":type",itp_type_two_handed_wpn),
(eq,":type",itp_type_polearm),
(store_random_in_range,":random",imod_cracked,imod_powerful),
(else_try),
(this_or_next|eq,":type",itp_type_arrows),
(this_or_next|eq,":type",itp_type_thrown),
(this_or_next|eq,":type",itp_type_bullets),
(eq,":type",itp_type_bolts),
(assign,":random",imod_large_bag),
(else_try),
(eq,":type",itp_type_shield),
(store_random_in_range,":random",imod_plain,imod_sharp),
(else_try),
(this_or_next|eq,":type",itp_type_bow),
(this_or_next|eq,":type",itp_type_musket),
(this_or_next|eq,":type",itp_type_pistol),
(eq,":type",itp_type_crossbow),
(store_random_in_range,":random",imod_heavy,imod_tattered),
(else_try),
(eq,":type",itp_type_goods),
(store_random_in_range,":random",imod_fresh,imod_large_bag),
(else_try),
(this_or_next|eq,":type",itp_type_head_armor),
(this_or_next|eq,":type",itp_type_body_armor),
(this_or_next|eq,":type",itp_type_foot_armor),
(eq,":type",itp_type_hand_armor),
(store_random_in_range,":random",imod_tattered,imod_lame),
(else_try),
(eq,":type",itp_type_book),
(store_random_in_range,":random",imod_old,imod_sharp),
(try_end),
(assign,reg0,":random"),
]),
############################################

Добавить в файл module_troops.py (каждый юнит идет как база данных для вещей, которые в него пихают):

###########CHESTS BEGIN###########
["bonus_chest1","{!}Bonus Chest1","{!}Bonus Chest1",tf_hero|tf_inactive, 0,reserved, fac_neutral,[],def_attrib|level(18),wp(60),knows_common, 0],
["bonus_chest2","{!}Bonus Chest2","{!}Bonus Chest2",tf_hero|tf_inactive, 0,reserved, fac_neutral,[],def_attrib|level(18),wp(60),knows_common, 0],
["bonus_chest3","{!}Bonus Chest3","{!}Bonus Chest3",tf_hero|tf_inactive, 0,reserved, fac_neutral,[],def_attrib|level(18),wp(60),knows_common, 0],
["bonus_chest4","{!}Bonus Chest4","{!}Bonus Chest4",tf_hero|tf_inactive, 0,reserved, fac_neutral,[],def_attrib|level(18),wp(60),knows_common, 0],
["bonus_chest5","{!}Bonus Chest5","{!}Bonus Chest5",tf_hero|tf_inactive, 0,reserved, fac_neutral,[],def_attrib|level(18),wp(60),knows_common, 0],
["bonus_chests_end","{!}Bonus Chests End","{!}Bonus Chest End",tf_hero|tf_inactive, 0,reserved, fac_neutral,[],def_attrib|level(18),wp(60),knows_common, 0], #n1
##################################

Добавить в файл module_scenes.py (в каждую из 5 карт сундук-юнит как показано ниже):

###########CHESTS SCENES BEGIN###########
("village_1", sf_generate, "none", "none", ( 0, 0 ), ( 100, 100 ), -100, "0x0000000030081763000589620000338e00004f2c00005cfb",
[], ["bonus_chest1"], "outer_terrain_plain" ), #n1
("village_2", sf_generate, "none", "none", ( 0, 0 ), ( 100, 100 ), -100, "0x000000003007a21c0003ecfe000001f0000073b100000fd2",
[], ["bonus_chest2"], "outer_terrain_plain" ),
("village_3", sf_generate, "none", "none", ( 0, 0 ), ( 100, 100 ), -100, "0x000000023003dc4e0006118b000029f8000034670000105f",
[], ["bonus_chest3"], "outer_terrain_plain" ),
("village_4", sf_generate, "none", "none", ( 0, 0 ), ( 100, 100 ), -100, "0x0000000230079732000651a00000044c0000177200000234",
[], ["bonus_chest4"], "outer_terrain_plain" ),
("village_5", sf_generate, "none", "none", ( 0, 0 ), ( 100, 100 ), -100, "0x000000003001ce100006097d0000134c000016d8000042a2",
[], ["bonus_chest5"], "outer_terrain_plain" ),
#########################################

Для особо одаренных как добавить вещи в сундуки на нужные сцены.

Например, нужно добавить сундук на сцену village_6. Для этого нужно вставить после строки:
["bonus_chest5","{!}Bonus Chest5","{!}Bonus Chest5",tf_hero|tf_inactive, 0,reserved, fac_neutral,[],def_attrib|level(18),wp(60),knows_common, 0],
Строку:
["bonus_chest6","{!}Bonus Chest6","{!}Bonus Chest6",tf_hero|tf_inactive, 0,reserved, fac_neutral,[],def_attrib|level(18),wp(60),knows_common, 0],

И на сцену:
("village_6", sf_generate, "none", "none", ( 0, 0 ), ( 100, 100 ), -100, "0x000000003001ce100006097d0000134c000016d8000042a2",
[], [], "outer_terrain_plain" ),

Добавить bonus_chest6:
("village_6", sf_generate, "none", "none", ( 0, 0 ), ( 100, 100 ), -100, "0x000000003001ce100006097d0000134c000016d8000042a2",
[], ["bonus_chest6"], "outer_terrain_plain" ),
------------------------------------------

« Последнее редактирование: 13 Июня, 2024, 14:28 от syabr »
  • Ник в Discord: syabr#8770
  • Фракция: Кергиты

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


Powered by SMF 2.0 | SMF © Simple Machines LLC