Herramientas de usuario

Herramientas del sitio


modding:tutoriales:crearmision

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:

<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>

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:

<actor_dialog>vodka_quest_dialog</actor_dialog>
<actor_dialog>vodka_quest_prines</actor_dialog>

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>:

    <info_portion id="quest_vodka_give"></info_portion>
    <info_portion id="quest_has_vodka"></info_portion>
    <info_portion id="quest_vodka_done"></info_portion>

Seguidamente abrimos scripts/dialogs_zaton.script y añadimos al final del archivo:

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

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:

[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

Ahora damos con configs/text/XXX/st_quests_zaton.xml y añadimos antes de <string_table>:

<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>

Guardamos todo, y listo, ¡hemos creado nuestra primer quest! :)

modding/tutoriales/crearmision.txt · Última modificación: 26/12/2014 20:36 (editor externo)