Здравствуйте!
Mixail228 Как добавить в игру новую книгу
http://rusmnb.ru/index.php?topic=3649.0Можно создать вещь, может это Вам поможет
http://rusmnb.ru/index.php?topic=19794.0А вообще, ни первый раз вижу вопрос по книгам, но ответа так и не встречал. Знающие люди помогите разобраться!!!
Искал в МС всё связанное с книгами нашёл следующее:
module_items.py
# A treatise on The Method of Mechanical Theorems Archimedes
#This book must be at the beginning of readable books книги дающие эффект однакратно после прочтения
["book_tactics","De Re Militari", [("book_a",0)], itp_type_book, 0, 4000,weight(2)|abundance(100),imodbits_none],
["book_persuasion","Rhetorica ad Herennium", [("book_b",0)], itp_type_book, 0, 5000,weight(2)|abundance(100),imodbits_none],
["book_leadership","The Life of Alixenus the Great", [("book_d",0)], itp_type_book, 0, 4200,weight(2)|abundance(100),imodbits_none],
["book_intelligence","Essays on Logic", [("book_e",0)], itp_type_book, 0, 2900,weight(2)|abundance(100),imodbits_none],
["book_trade","A Treatise on the Value of Things", [("book_f",0)], itp_type_book, 0, 3100,weight(2)|abundance(100),imodbits_none],
["book_weapon_mastery", "On the Art of Fighting with Swords", [("book_d",0)], itp_type_book, 0, 4200,weight(2)|abundance(100),imodbits_none],
["book_engineering","Method of Mechanical Theorems", [("book_open",0)], itp_type_book, 0, 4000,weight(2)|abundance(100),imodbits_none],
#Reference books Книги дающие бонус, когда находятся в инвентаре
#This book must be at the beginning of reference books
["book_wound_treatment_reference","The Book of Healing", [("book_c",0)], itp_type_book, 0, 3500,weight(2)|abundance(100),imodbits_none],
["book_training_reference","Manual of Arms", [("book_open",0)], itp_type_book, 0, 3500,weight(2)|abundance(100),imodbits_none],
["book_surgery_reference","The Great Book of Surgery", [("book_c",0)], itp_type_book, 0, 3500,weight(2)|abundance(100),imodbits_none],
module_scripts.py
# книги дающие эффект однакратно после прочтения
# Setting book intelligence requirements
(item_set_slot, "itm_book_tactics", slot_item_intelligence_requirement, 9),
(item_set_slot, "itm_book_persuasion", slot_item_intelligence_requirement, 8),
(item_set_slot, "itm_book_leadership", slot_item_intelligence_requirement, 7),
(item_set_slot, "itm_book_intelligence", slot_item_intelligence_requirement, 10),
(item_set_slot, "itm_book_trade", slot_item_intelligence_requirement, 11),
(item_set_slot, "itm_book_weapon_mastery", slot_item_intelligence_requirement, 9),
(item_set_slot, "itm_book_engineering", slot_item_intelligence_requirement, 12),
# Книги дающие бонус, когда находятся в инвентаре
(item_set_slot, "itm_book_wound_treatment_reference", slot_item_intelligence_requirement, 10),
(item_set_slot, "itm_book_training_reference", slot_item_intelligence_requirement, 10),
(item_set_slot, "itm_book_surgery_reference", slot_item_intelligence_requirement, 10),
]),
......................
#script_game_get_item_extra_text:
# This script is called from the game engine when an item's properties are displayed.
# INPUT: arg1 = item_no, arg2 = extra_text_id (this can be between 0-7 (7 included)), arg3 = item_modifier
# OUTPUT: result_string = item extra text, trigger_result = text color (0 for default)
# книги дающие эффект однакратно после прочтения
("game_get_item_extra_text",
[
(store_script_param, ":item_no", 1),
(store_script_param, ":extra_text_id", 2),
(store_script_param, ":item_modifier", 3),
(try_begin),
(is_between, ":item_no", food_begin, food_end),
(try_begin),
(eq, ":extra_text_id", 0),
(assign, ":continue", 1),
(try_begin),
(this_or_next|eq, ":item_no", "itm_cattle_meat"),
(this_or_next|eq, ":item_no", "itm_pork"),
(eq, ":item_no", "itm_chicken"),
(eq, ":item_modifier", imod_rotten),
(assign, ":continue", 0),
(try_end),
(eq, ":continue", 1),
(item_get_slot, ":food_bonus", ":item_no", slot_item_food_bonus),
(assign, reg1, ":food_bonus"),
(set_result_string, "@+{reg1} to party morale"),
(set_trigger_result, 0x4444FF),
(try_end),
(else_try),
(is_between, ":item_no", readable_books_begin, readable_books_end),
# Книги дающие бонус, когда находятся в инвентаре
(try_begin),
(eq, ":extra_text_id", 0),
(item_get_slot, reg1, ":item_no", slot_item_intelligence_requirement),
(set_result_string, "@Requires {reg1} intelligence to read"),
(set_trigger_result, 0xFFEEDD),
(else_try),
(eq, ":extra_text_id", 1),
(item_get_slot, ":progress", ":item_no", slot_item_book_reading_progress),
(val_div, ":progress", 10),
(assign, reg1, ":progress"),
(set_result_string, "@Reading Progress: {reg1}%"),
(set_trigger_result, 0xFFEEDD),
(try_end),
(else_try),
(is_between, ":item_no", reference_books_begin, reference_books_end),
(try_begin),
(eq, ":extra_text_id", 0),
(try_begin),
(eq, ":item_no", "itm_book_wound_treatment_reference"),
(str_store_string, s1, "@wound treament"),
(else_try),
(eq, ":item_no", "itm_book_training_reference"),
(str_store_string, s1, "@trainer"),
(else_try),
(eq, ":item_no", "itm_book_surgery_reference"),
(str_store_string, s1, "@surgery"),
(try_end),
(set_result_string, "@+1 to {s1} while in inventory"),
(set_trigger_result, 0xFFEEDD),
(try_end),
(try_end),
]),
........................
# Книги дающие бонус, когда находятся в инвентаре
#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),
(try_end),
(set_trigger_result, ":modifier_value"),
]),
............................
# Книги дающие бонус, когда находятся в инвентаре
# Скрипт присваивает бонусы юнитам
#script_get_troop_item_amount
# INPUT: arg1 = troop_no, arg2 = item_no
# OUTPUT: reg0 = item_amount
("get_troop_item_amount",
[(store_script_param, ":troop_no", 1),
(store_script_param, ":item_no", 2),
(troop_get_inventory_capacity, ":inv_cap", ":troop_no"),
(assign, ":count", 0),
(try_for_range, ":i_slot", 0, ":inv_cap"),
(troop_get_inventory_slot, ":cur_item", ":troop_no", ":i_slot"),
(eq, ":cur_item", ":item_no"),
(val_add, ":count", 1),
(try_end),
(assign, reg0, ":count"),
]),
module_simple_triggers.py
# Read books if player is resting.
(1, [(neg|map_free),
(gt, "$g_player_reading_book", 0),
(player_has_item, "$g_player_reading_book"),
(store_attribute_level, ":int", "trp_player", ca_intelligence),
(item_get_slot, ":int_req", "$g_player_reading_book", slot_item_intelligence_requirement),
(le, ":int_req", ":int"),
(item_get_slot, ":book_reading_progress", "$g_player_reading_book", slot_item_book_reading_progress),
(item_get_slot, ":book_read", "$g_player_reading_book", slot_item_book_read),
(eq, ":book_read", 0),
(val_add, ":book_reading_progress", 7),
(item_set_slot, "$g_player_reading_book", slot_item_book_reading_progress, ":book_reading_progress"),
(ge, ":book_reading_progress", 1000),
(item_set_slot, "$g_player_reading_book", slot_item_book_read, 1),
(str_store_item_name, s1, "$g_player_reading_book"),
(str_clear, s2),
(try_begin),
(eq, "$g_player_reading_book", "itm_book_tactics"),
(troop_raise_skill, "trp_player", "skl_tactics", 1),
(str_store_string, s2, "@ Your tactics skill has increased by 1."),
(else_try),
(eq, "$g_player_reading_book", "itm_book_persuasion"),
(troop_raise_skill, "trp_player", "skl_persuasion", 1),
(str_store_string, s2, "@ Your persuasion skill has increased by 1."),
(else_try),
(eq, "$g_player_reading_book", "itm_book_leadership"),
(troop_raise_skill, "trp_player", "skl_leadership", 1),
(str_store_string, s2, "@ Your leadership skill has increased by 1."),
(else_try),
(eq, "$g_player_reading_book", "itm_book_intelligence"),
(troop_raise_attribute, "trp_player", ca_intelligence, 1),
(str_store_string, s2, "@ Your intelligence has increased by 1."),
(else_try),
(eq, "$g_player_reading_book", "itm_book_trade"),
(troop_raise_skill, "trp_player", "skl_trade", 1),
(str_store_string, s2, "@ Your trade skill has increased by 1."),
(else_try),
(eq, "$g_player_reading_book", "itm_book_weapon_mastery"),
(troop_raise_skill, "trp_player", "skl_weapon_master", 1),
(str_store_string, s2, "@ Your weapon master skill has increased by 1."),
(else_try),
(eq, "$g_player_reading_book", "itm_book_engineering"),
(troop_raise_skill, "trp_player", "skl_engineer", 1),
(str_store_string, s2, "@ Your engineer skill has increased by 1."),
(try_end),
(unlock_achievement, ACHIEVEMENT_BOOK_WORM),
(try_begin),
(eq, "$g_infinite_camping", 0),
(dialog_box, "@You have finished reading {s1}.{s2}", "@Book Read"),
(try_end),
(assign, "$g_player_reading_book", 0),
]),
Никак не пойму что нужно изменить, что бы:
1. Прочтение скажем книги "book_tactics" давало прирост +1 intelligence(и соответственно +1 skill_points) а не +1 tactics как сейчас ?
2. Увеличить навык(бонус при ношении книги) не на 1 как сейчас, а на 2 или 3 единицы ? Будьте добры подскажите:
3. Влияет ли посещение лордом деревни на возможность набора рекрутов игроком?
4. Привязан ли как то в скрипте набор армии лордом к посещению лордом деревни?
5. Лорды посещают и набирают войска только в принадлежащих им деревнях?
Если возможно укажите ссылки на скрипты.
Заранее благодарю всех ответивших!