Muestra las diferencias entre dos versiones de la página.
modding:tutoriales:crearmision [26/12/2014 20:36] |
modding:tutoriales:crearmision [26/12/2014 20:36] (actual) |
||
---|---|---|---|
Línea 1: | Línea 1: | ||
+ | ====== Crear Misiones en Call of Prypiat ====== | ||
+ | ===== Variables básicas ===== | ||
+ | * icon - Icono de la misión | ||
+ | * prior - Prioridad de la misión | ||
+ | * storyline - "true" si es una misión de la historia principal, y "false" si es otro tipo de misión | ||
+ | * title - ID en los archivos XML que representa el título de la misión | ||
+ | * descr - ID en los acrhivos XML que representa la descripción de la misión | ||
+ | * target - ID de la referencia que especifica un lugar concreto para la misión, puede ser un objeto o un stalker (por ejemplo, zat_a2_stalker_barmen sería Beard) | ||
+ | * condlist_x - Condiciones para realizar, modificar, rehacer o fallar la misión | ||
+ | * on_init - Acciones que se ejecutan cuando empieza la misión | ||
+ | * on_complete - Acciones que se ejecutan cuando completa la misión (puedes ver estas funciones en **xr_effect.script**) | ||
+ | * on_reversed - Acciones que se ejecutan cuando falla la misión | ||
+ | * reward_money - Dinero entregado por cumplir la misión | ||
+ | * reward_item - Objeto entregado por cumplir la misión | ||
+ | **NOTA:**// Si las recompensas no te las da un PNJ, estas se pondrán automáticamente en tu inventario.// | ||
+ | |||
+ | ===== Nuestra primera Misión ===== | ||
+ | |||
+ | Cómo ya tenemos alguna idea de lo que vamos a encontrarnos por el camino, empezaremos utilizando los siguientes archivos: | ||
+ | |||
+ | * //configs/gameplay///**dialogs_zaton.xml** | ||
+ | * //configs/gameplay///**info_zaton.xml** | ||
+ | * //configs/gameplay///**character_desc_zaton.xml** | ||
+ | * //configs/text/XXX///**st_quests_zaton.xml** | ||
+ | * //configs/misc///**tm_zaton.ltx** | ||
+ | * //scripts///**dialogs_zaton.script** | ||
+ | |||
+ | ==== Creación de los diálogos ==== | ||
+ | |||
+ | Abrimos //configs/gameplay///**dialogs_zaton.xml** y justo encima de </game_dialogs> añadimos: | ||
+ | |||
+ | <code><dialog id="vodka_quest_dialog"> | ||
+ | <dont_has_info>quest_vodka_done</dont_has_info> | ||
+ | <dont_has_info>quest_vodka_give</dont_has_info> | ||
+ | <phrase_list> | ||
+ | <phrase id="1"> | ||
+ | <text>Lleva una botella</text> | ||
+ | <give_info>quest_vodka_give</give_info> | ||
+ | <action>dialogs_zaton.give_vodka_quest</action> | ||
+ | </phrase> | ||
+ | <phrase id="0"> | ||
+ | <text>Hola, ¿Tienes Vodka?</text> | ||
+ | <next>1</next> | ||
+ | </phrase> | ||
+ | </phrase_list> | ||
+ | </dialog> | ||
+ | |||
+ | <dialog id="vodka_quest_prines"> | ||
+ | <has_info>quest_vodka_give</has_info> | ||
+ | <precondition>dialogs_zaton.is_has_vodka_borode</precondition> | ||
+ | <phrase_list> | ||
+ | <phrase id="1"> | ||
+ | <text>¡Gracias tio!</text> | ||
+ | <give_info>quest_vodka_done</give_info> | ||
+ | </phrase> | ||
+ | <phrase id="0"> | ||
+ | <has_info>quest_has_vodka</has_info> | ||
+ | <text>Aquí tienes el mejor Vodka de la Zona.</text> | ||
+ | <action>dialogs_zaton.transfer_vodka_to_boroda</action> | ||
+ | <next>1</next> | ||
+ | </phrase> | ||
+ | </phrase_list> | ||
+ | </dialog></code> | ||
+ | |||
+ | **NOTA by Dade**: //El tutorial es muy sencillo, y por ello no menciona que en lugar de, por ejemplo, '¡Gracias tio!' podríamos poner 'dademod_gracias' lo cual haría referencia a una ID de algún archivo de texto (supongo que //configs/text/XXX///**st_dialogs_zaton.xml**) y que efectivamente daría el mismo resultado. Fijaros en otras ramas de diálogos y veréis lo que digo.// | ||
+ | |||
+ | Ahora tendremos que hacer que estos diálogos salgan a la luz por boca de algún stalker. Toca abrir //configs/gameplay///**character_desc_zaton.xml** y buscar a Beard. Hallaremos la línea //<actor_dialog>zat_a2_stalker_barmen_actor_info</actor_dialog>// y justo debajo añadimos: | ||
+ | <code><actor_dialog>vodka_quest_dialog</actor_dialog> | ||
+ | <actor_dialog>vodka_quest_prines</actor_dialog></code> | ||
+ | |||
+ | Ya tenemos establecidos los diálogos que se llevarán a cabo durante la misión. Seguimos... | ||
+ | |||
+ | ==== Porciones de Información y Scripting ==== | ||
+ | |||
+ | Una vez abierto //configs/gameplay///**info_zaton.xml** añadimos just antes de //</game_information_portions>//: | ||
+ | |||
+ | <code> <info_portion id="quest_vodka_give"></info_portion> | ||
+ | <info_portion id="quest_has_vodka"></info_portion> | ||
+ | <info_portion id="quest_vodka_done"></info_portion></code> | ||
+ | |||
+ | Seguidamente abrimos //scripts///**dialogs_zaton.script** y añadimos al final del archivo: | ||
+ | <code>function give_vodka_quest() | ||
+ | task_manager.get_task_manager():give_task("quest_vodka_give") | ||
+ | end | ||
+ | function is_has_vodka_borode() | ||
+ | if db.actor:object("vodka") then | ||
+ | return true | ||
+ | end | ||
+ | return false | ||
+ | end | ||
+ | function transfer_vodka_to_boroda(first_speaker, second_speaker) | ||
+ | dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "vodka") | ||
+ | end</code> | ||
+ | |||
+ | Ya hemos definido las 'consecuencias' de realizar el diálogo que habíamos realizado previamente. Hora de ponerlo todo en marcha... | ||
+ | |||
+ | ==== La Misión ==== | ||
+ | |||
+ | Una vez abierto //configs/misc///**tm_zaton.ltx** añadimos al final del todo: | ||
+ | <code>[quest_vodka_give] | ||
+ | icon = ui_inGame2_Put_v_pripyat | ||
+ | prior = 2 | ||
+ | storyline = false | ||
+ | title = {=actor_has_item(vodka)}vodka_barmen_prinesti_name, vodka_barmen_naiti_name | ||
+ | descr = vodka_barmen_descr | ||
+ | target = {=actor_has_item(vodka)}zat_a2_stalker_barmen | ||
+ | condlist_0 = {+quest_vodka_done} complete</code> | ||
+ | |||
+ | Ahora damos con //configs/text/XXX///**st_quests_zaton.xml** y añadimos antes de //<string_table>//: | ||
+ | <code><string id="vodka_barmen_naiti_name"> | ||
+ | <text>Busca vodka para Beard</text> | ||
+ | </string> | ||
+ | <string id="vodka_barmen_prinesti_name"> | ||
+ | <text>Busca vodka para Beard</text> | ||
+ | </string> | ||
+ | <string id="vodka_barmen_descr"> | ||
+ | <text>Beard ha terminado con sus reservas de vodka y te pide que le traigas un par de botellas antes de que la cosa se ponga fea.</text> | ||
+ | </string></code> | ||
+ | |||
+ | Guardamos todo, y listo, ¡hemos creado nuestra primer quest! :) |