Lingara Lingara لارښود لارښودونه API کتابتونونه اپلیکیشنونه جوړول ځای پر ځای کول ویب اپلیکیشن
ژبه: پښتو

د NPC خبرې اترې

دا پاڼه له انګلیسي ژبې ژباړل شوې ده. که دواړه سره توپیر ولري، انګلیسي پاڼه سمه ده. انګلیسي پاڼه ولولئ

ستاسو په لوبه کې یو کرکټر کولی شي له لوبغاړي سره په هغه ژبه خبرې اترې وکړي چې هغه یې زده کوي، د هغه له کچې سره سمې. هره کرښه چې لوبغاړی یې وايي یوه وار ده: د لوبغاړي کیټ یې لېږي، او د کرکټر ځواب په برخو کې بېرته راځي.

یوه وار څه وړي

هره وار هغه ټول څه لېږي چې کرکټر ورته اړتیا لري، ځکه چې Lingara د وارونو ترمنځ هېڅ خبرې اترې نه ساتي:

  • npc: څوک خبرې کوي. د هغه name له 1 تر 32 تورو پورې دی، او اختیاري persona یې د تشریح یوه کرښه ده، له 1 تر 120 تورو پورې، لکه “د منتو پلورونکی”.
  • scene: اختیاري، چېرته چې خبرې اترې کېږي، له 1 تر 160 تورو پورې.
  • source_lang او target_lang: د لوبغاړي خپله ژبه او هغه ژبه چې زده کوي یې. باید سره توپیر ولري، او کرکټر یوازې په target_lang خبرې کوي.
  • level: د لوبغاړي کچه، له 1 تر 9 پورې. د Lingara لارښود “کچه څه مانا لري” دا پیمانه تشریح کوي.
  • line: هغه څه چې لوبغاړي همدا اوس وویل، له 1 تر 500 تورو پورې.
  • history: تر اوسه پورې خبرې اترې، تر ټولو زوړ لومړی، تر 12 کرښو پورې. هره کرښه یو speaker لري، یا player یا npc، او خپل text، له 1 تر 500 تورو پورې.

هر متن یوازې یوه کرښه ده. ستاسو لوبه خبرې اترې ساتي: د لوبغاړي کیټ د هرې هغې خبرې اترې لپاره چې تاسو یې پرانیزئ کړکۍ ساتي، هره بشپړه شوې وار ورته ور زیاتوي، هر ځواب تر لومړیو 500 تورو پورې لنډوي، او له 12 څخه زیاتې تر ټولو زړې کرښې لرې کوي.

Lingara شخصیت او صحنه ستاسو د لوبې څخه د ناباوري متن په توګه ګڼي. دوی دا شکلوي چې کرکټر څنګه خبرې کوي، هېڅکله دا نه چې څه کولو اجازه لري.

ځواب څنګه رارسي

ځواب د متن د ټوټو په توګه په برخو کې راځي، چې ستاسو لوبه یې د رارسېدو سره سم ور پسې نښلوي. د دوی ترمنځ یو خبرتیا راتلی شي، لکه یو چې وايي ځواب لنډ پرې شو. وار په done پای ته رسي کله چې ځواب بشپړ وي، یا په error کله چې ناکام شوی وي. یوه وار بیا نه پیلېږي: که اړیکه پرې شي، لوبغاړی هغه کرښه بیا وايي.

هر کرکټر ته په یوه وخت کې یوه کرښه ووایئ. هغه کرښه چې کرکټر لا ځواب ورکوي ویل کېږي رد کېږي نه دا چې قطار ته ولاړه شي، ځکه چې د هرې وار پیسې اخیستل کېږي.

څوک پیسې ورکوي

یوازې د یوه مېټر شوي کلاینټ لوبغاړي کولی شي خبرې اترې وکړي، او د هرې وار پیسې د هماغه کلاینټ په حساب لیکل کېږي. د لوبغاړي ټوکن embed:play ته اړتیا لري.

د کوډ بېلګې ژبه

Bevy

fn spawn_seller(mut commands: Commands) {
    let mei = NpcDialogue::new("Mei", "zh", 2)
        .and_then(|npc| npc.with_persona("a dumpling seller"))
        .and_then(|npc| npc.with_scene("the night market"))
        .expect("within Lingara's bounds");
    commands.spawn(mei);
    commands.spawn(Player);
}

/// One turn at a time: a line said while the NPC is replying is a `Busy` error.
fn talk(keys: Res<ButtonInput<KeyCode>>, npcs: Query<Entity, With<NpcDialogue>>, mut say: MessageWriter<NpcSay>) {
    if keys.just_pressed(KeyCode::Digit1) {
        for entity in &npcs {
            say.write(NpcSay { entity, line: "饺子多少钱?".into() });
        }
    }
}

/// `streaming` grows as the reply arrives; `turns` holds the finished ones.
fn show_reply(transcripts: Query<&NpcTranscript, Changed<NpcTranscript>>) {
    for transcript in &transcripts {
        if let Some(partial) = &transcript.streaming {
            info!("…{partial}");
        }
    }
}

Unity

public DialogueId OpenDialogue(string npc, string sourceLang, string targetLang, byte level) =>
    Client.DialogueOpen(new DialogueConfig { Npc = new Npc { Name = npc }, SourceLang = sourceLang, TargetLang = targetLang, Level = level });

// The reply streams back as NpcTurn events: append each Fragment's text to your label.
public RequestId Say(DialogueId dialogue, string line) => Client.DialogueSay(dialogue, line);

Godot C#

public long OpenDialogue(string npc, string sourceLang, string targetLang, byte level) =>
    Client.DialogueOpen(new DialogueConfig { Npc = new Npc { Name = npc }, SourceLang = sourceLang, TargetLang = targetLang, Level = level }).Value;

// The reply streams back as NpcTurnFragment signals, then one NpcTurnFinished.
public long Say(long dialogue, string line) => Client.DialogueSay(new DialogueId(dialogue), line).Value;

GDScript

# A LingaraNpc child per character: npc_name, target_lang and level in the
# inspector. say() returns false while a turn is in flight (turns are never
# queued, because each one is billed).
func talk_to_mei(line: String) -> void:
	if mei.say(line):
		bubble.text = "…"


func _on_mei_replied(text: String) -> void:
	bubble.text = text

Unreal C++

void ALingaraEmbedSnippetActor::Say(const FString& Line)
{
	ELingaraCallResult Result;
	FLingaraEmbedError Error;
	if (Dialogue == 0)
	{
		FLingaraDialogueConfig Config;
		Config.Npc.Name = TEXT("Mei");
		Config.Npc.Persona = TEXT("a tea seller at the night market");
		Config.SourceLang = TEXT("en");
		Config.TargetLang = TEXT("zh");
		Config.Level = 2;
		Dialogue = Lingara()->DialogueOpen(Config, Result, Error);
	}
	Reply.Reset();
	Lingara()->DialogueSay(Dialogue, Line, Result, Error);
}

// The reply streams back as npc_turn events: append each fragment.
void ALingaraEmbedSnippetActor::HandleNpcTurn(const FLingaraNpcTurn& Turn)
{
	if (Turn.Dialogue == Dialogue && Turn.Update.Type == ELingaraNpcTurnUpdateType::Fragment)
	{
		Reply += Turn.Update.Text;
	}
}

Kotlin

fun talkToMei(line: String) {
    val dialogue = npc ?: lingara.dialogueOpen(DialogueConfig(Npc("Mei", "a tea seller"), "the tea house", "en", "zh", 2, emptyList()))
    npc = dialogue
    lingara.dialogueSay(dialogue, line)
}

private fun onNpcTurn(update: NpcTurnUpdate) {
    when (update) {
        is NpcTurnUpdate.Opened -> bubble = ""
        is NpcTurnUpdate.Fragment -> bubble += update.text
        is NpcTurnUpdate.Finished -> bubble = update.text
        else -> Unit
    }
}

Java

void talkToMei(String line) {
  if (npc < 0) {
    Npc mei = new Npc("Mei", "a tea seller");
    npc =
        lingara.dialogueOpen(new DialogueConfig(mei, "the tea house", "en", "zh", 2, List.of()));
  }
  lingara.dialogueSay(npc, line);
}

void onNpcTurn(EmbedEvent.NpcTurn turn) {
  if (turn.getUpdate() instanceof NpcTurnUpdate.Fragment fragment) {
    bubble.append(fragment.getText());
  } else if (turn.getUpdate() instanceof NpcTurnUpdate.Finished finished) {
    bubble.setLength(0);
    bubble.append(finished.getText());
  }
}

دا هم وګورئ