Wiki / API Reference

API Reference

Documentacion completa de todas las clases publicas del addon OhMyDialogSystem.

// Clases Principales

// Resources (Godot Resources)

Resource Descripcion Uso
DialogueNodeDataDatos de un nodo individual en el grafo de dialogoInterno, usado por DialogueGraph
CharacterIdentityDefine la personalidad, background y estilo de un NPCUn resource por personaje
WorldContextContexto del mundo, lore, eventos actualesUno o mas por escenario
DialogueGraphGrafo visual de nodos de dialogoUno por conversacion/quest
AIPresetConfiguracion de generacion (temperature, top_p, etc.)Presets reutilizables
VoiceProfileConfiguracion de voz para TTSUn profile por personaje

Ver documentacion completa de Resources

// Signals Comunes

DialogueManager

Signal Parametros Descripcion
dialogue_startedgraph: DialogueGraphEmitido al iniciar un dialogo
npc_speakingspeaker, text, is_streamingEl NPC comenzo a "pensar"
npc_response_tokentoken: StringCada token generado (streaming)
npc_response_completedfull_text: StringRespuesta completa del NPC
player_choices_availablechoices: Array[Dictionary]Opciones disponibles para el jugador
event_triggeredevent_name, data: DictionaryEvento del grafo disparado
dialogue_endedreason: StringConversacion finalizada
model_loading_startedmodel_path: StringInicio de carga del modelo
model_loading_completed-Modelo cargado y listo

LlamaInterface

Signal Parametros Descripcion
model_loadedinfo: DictionaryModelo cargado exitosamente
generation_started-Inicio de generacion
token_generatedtoken: StringToken generado
generation_completedtext: StringGeneracion completada
generation_errorerror: StringError durante generacion

// Ejemplo de Uso Completo

extends Node

# DialogueManager as child node (recommended) or @onready
@onready var dialogue_manager: DialogueManager = $DialogueManager

# Preloaded resources (or use @export to configure in editor)
var merchant_graph := preload("res://dialogues/merchant.tres")
# Note: merchant.tres has model_path = "user://models/mistral-7b-q4.gguf"
# The model is loaded automatically when start_dialogue() is called

func _ready():
    # Configure character and world (or set via @export in editor)
    dialogue_manager.default_character = preload("res://npcs/merchant.tres")
    dialogue_manager.world_context = preload("res://world/fantasy_world.tres")

    # Connect signals
    dialogue_manager.npc_response_completed.connect(_on_npc_response)
    dialogue_manager.player_choices_available.connect(_on_choices)
    dialogue_manager.event_triggered.connect(_on_event)
    dialogue_manager.dialogue_ended.connect(_on_dialogue_ended)

    # Optional: loading indicators
    dialogue_manager.model_loading_started.connect(_on_model_loading)
    dialogue_manager.model_loading_completed.connect(_on_model_ready)

func start_conversation():
    # Model loads automatically from DialogueGraph.model_path
    dialogue_manager.start_dialogue(merchant_graph, DialogueManager.DialogueMode.HYBRID)

func send_message(text: String):
    dialogue_manager.send_player_message(text)

func select_choice(index: int):
    dialogue_manager.select_choice(index)

func _on_npc_response(response: String):
    print("NPC: ", response)

func _on_choices(choices: Array[Dictionary]):
    for i in choices.size():
        print("[%d] %s" % [i + 1, choices[i].text])

func _on_event(event_name: String, data: Dictionary):
    match event_name:
        "open_shop":
            open_shop_ui()
        "give_quest":
            add_quest(data["quest_id"])

func _on_dialogue_ended(reason: String):
    print("Dialogue ended: ", reason)

func _on_model_loading(path: String):
    show_loading_indicator()

func _on_model_ready():
    hide_loading_indicator()
Volver a Home