Aulus wrote:Shaman88 wrote:
Záleží jestli znáš předem to co chceš aby hráč řekl nebo ne.
Dej přímo příklad kde a v čem to používáš.
Jo, předem znáš, co má PC říct. Jedná se odpověď na hádanku, ale nechci ji do rozhovoru, protože to nemá být výběr z možností.
V podstatě chci, ať se po vyřčení správné odpovědi (nemusí to být a poprvé, pokusů může být nepočítaně) otevře nová větev rozhovoru, po oslovení NPC, kde je naskriptována i odměna.
Všechno zvládnu udělat, jen potřebuju vědět, jak zanést do skriptu, že si hra všimne té správné odpovědi v logu.
Řekněme že správná odpověď je kolo.
Nejpve musíš někdy před danou událostí, třeba když NPC tu hádanku zadává nastavit naslouchání daného vzoru a pak zapnout u té NPC naslouchání konverzace.
Doporucuju to udelat ve skriptu kde NPC rika danou hadanku, nejprve nastavis co ma prijimat:
Nejprve dáš aby poslochalo vůbec:
SetListening(OBJECT_SELF,TRUE);
A pak ten vzor:
SetListenPattern(OBJECT_SELF,"**kolo**",4000); - tohle udělá že to příjme kolo v jakékoli větě
SetListenPattern(OBJECT_SELF,"kolo",4000); tohle přímo kolo
Pozor je to citlive na velke nebo male pismena takze kdybys chtěl třeba at ti to příjme odpověď ve stylu "Správná odpověď je kolo." nebo "Kolo by to mohlo být." tak musíš už trošku chytřeji tam dát i možnosti s velkými písmeny:
SetListenPattern(OBJECT_SELF,"**kolo** || **Kolo**",4000);
Jen pro vysvětlení - to dodá tomu tvému naslouchácímu vzoru identifikátor 4000.
A pak musíš v OnConversation události(ktera se spustí kdyz na nej nekdo promluvi) na daném NPC dodat:
int nMatch = GetListenPatternNumber(); tzn. pokud na na něj někdo promluvi, vytahnes si cislo
if(nMatch == 4000) a to pak srovnas se svymi vzory a mas reseni
{
SpeakString("Sprvávná odpověď);
SetListening(OBJECT_SELF,FALSE); !!! A hlavně nesmíš zapomenout vypnout naslouchání!!!!
}