Oznámit co? skončit co? Počkat než co?
Oznámení, ukončení a počkat než jsou funkce, které budete používat k ovládání skriptu. Pomohou vám kontrolovat skript tak, že nebudou vznikat chyby, nebo "mouchy".
Oznámit (notify) - Oznamuje skončení a čekání než spoušti (triggeru).
Skončit (endon) - Ukončuje funkci it is in when notified.
Počkat než (waittill) - Čeká než objekt oznámí.
Když používáte trio, jinak řečeno oznámit, skončit a počkat než, musíte se ujistit, že používáte ke spuštění objekt. Tady je jak je použijete.
level notify("[Flag]");
level endon("[Flag]");
level waittill("[Flag]");
Level je objekt který jsme použili. Můžete použít jakýkoliv objekt; včetně hráče! Základní pravidlo je když něco oznamujete objektu, objekt "oznamuje" skončení a čekání než spoušti.
Používání oznámení
Tak, jak použijete oznámení? Je to velmi prosté. Řekněme, že chcete oznámit ostatním funkcím, že mají pokračovat nebo zastavit když hráč spustil spoušť. Použijete oznámit k informování skončení a čekání o tom, že mají pokračovat! K použití oznámení musíte mít objekt, který to vyvolá. To je jedna z pěkných věcí o oznámení. Touto cestou několik objektů čeká na jejich oznámení.
Jak to využít
V tomto prvním příkladu budu čekat, než spoušť oznámí pokračovat.
main()
{
spoust = getent("spoust", "targetname");
spoust waittill("trigger"); // Skript ceka, nez spoust oznami ze, byla aktivovana.
}
Teď něco složitějšího!
main()
{
thread oznam_mi();
thread cekej_me();
thread ukonci_me();
}
oznam_mi()
{
wait 10; // ceka 10 sekund nez oznami
level notify("oznam_mi"); // Rekne levelu at "oznami" skoncenim a cekanim.
}
cekej_me()
{
level waittill("oznam_mi"); // ceka nez je oznameno.
iprintln("level oznamil 'oznam_mi'");
}
ukonci_me()
{
level endon("oznam_mi"); // Ukonci funkci kdyz je oznameno.
while(1)
{
iprintln("Opakovat porad?"); //Ne, prestane opakovat za 10 sekund.
wait 1; // pockat a napsat kazdou sekundu.
}
}
Posílání více informací
Pomocí oznámit je tu cesta, jak poslat více informací pro počkat než. Funguje to většinou jako funkce. Je to používáno asi jako tohle.
main()
{
thread oznamMi();
thread pockejMe();
}
oznamMi()
{
wait 5;
// Napred stanovte vlakno, potom pouzijte carku, jako funkce, k poslani ostatnich informaci.
level notify("oznam_mi", 5);
wait 5;
level notify("oznam_mi", 10);
}
pockejMe()
{
// Napred stanovte vlakno, potom pouzijte carku, jako funkce, ke ziskani ostatnich informaci.
// Pokud oznamit posila vice nez jeden argument, neni potreba to pouzit!
level waittill("oznam_mi", cislo);
iprintln(cislo); // Napise 5 po 5 sekundach.
level waittill("oznam_mi");
iprintln(cislo); // Napise 5 znova po 10 sekundach.
}
Vím přeložil jsem to trošku ujetě, ale jsou tu i lidi, co neumí anglicky, takže jim stačí waittill a podobné věci, které přeložit nejde protože jsou definovány takto (v AJ)-takže jsem přeložil co šlo.