Thalie http://thalie.pilsfree.cz/forum/ |
|
Užitečné scripty http://thalie.pilsfree.cz/forum/viewtopic.php?f=1&t=5362 |
Page 2 of 3 |
Author: | -RoF- [ 16:07 23. Sep 2011 ] |
Post subject: | Re: Užitečné scripty |
Tak zkoušel jsem a testoval a nevím Dle toho co si psal Quote: 1. Zamčená páka ku_lever_lock.nss Já nevím kam ten script dát, jestli do onused nebo kam. Quote: 2. Otevírání dveří pomocí více pák ku_door_lever.nss zkoušel jsem, dal jsem to k páce do onused Nastavil jsem proměné na páku DOORS_TAG string "dverex" LEVER_COUNT int "2" TIMEOUT float "5" A prostě nic napsalo mi to "není určen tag dveří DOORS_TAG" Quote: Na zmizení NPC je návod Díval jsem se na to, ale taky jsem nepochopil kam ten script na NPC umístnit no. Holt to chce víc návod pro ty co scriptům moc nerozumí, krok po kroku |
Author: | kucik [ 16:16 23. Sep 2011 ] |
Post subject: | Re: Užitečné scripty |
Opraveno 24. 09. 2011 ku_door_lever.nss: Code: void LeverReturn(object oDoors, object oLever) {
AssignCommand(oLever,PlayAnimation(ANIMATION_PLACEABLE_DEACTIVATE)); int iPushed = GetLocalInt(oDoors,"KU_LEVER_PUSHED") - 1; if(iPushed < 0) iPushed = 0; SetLocalInt(oDoors,"KU_LEVER_PUSHED",iPushed); } void main() { int iType = 0; //Doors string sTag = ""; int i; //ovladacmu prvku nastavit tyto promenne: //DOORS_COUNT, int, pocet dveri //PLC_DOORS, int, 1 pokud jsou dvere placeable //DOORS_TAG, string, tag dvari int iCount = GetLocalInt(OBJECT_SELF,"DOORS_COUNT"); float LeverTimeout = GetLocalFloat(OBJECT_SELF,"TIMEOUT"); object oLever = OBJECT_SELF; if(GetLocalInt(OBJECT_SELF,"PLC_DOORS")) { iType = 1; } sTag = GetLocalString(OBJECT_SELF,"DOORS_TAG"); if(iCount < 1) { iCount = 1; } PlayAnimation(ANIMATION_PLACEABLE_ACTIVATE); if(GetStringLength(sTag) > 0) { for(i=1;i<=iCount;i++) { object oDoors = GetNearestObjectByTag(sTag,OBJECT_SELF,i); //SpeakString("mam dvere:"+GetName(oDoors)); int iNeeded = GetLocalInt(oDoors,"LEVER_COUNT"); int iPushed = GetLocalInt(oDoors,"KU_LEVER_PUSHED") + 1; SetLocalInt(oDoors,"KU_LEVER_PUSHED",iPushed); if(iPushed == iNeeded) { AssignCommand(oDoors,ActionOpenDoor(oDoors)); } DelayCommand(LeverTimeout,LeverReturn(oDoors,oLever)); } return; } SpeakString("Neni urceny tag dveri: 'DOORS_TAG'"); } |
Author: | kucik [ 16:17 23. Sep 2011 ] |
Post subject: | Re: Užitečné scripty |
-RoF- wrote: Tak zkoušel jsem a testoval a nevím Dle toho co si psal Quote: 1. Zamčená páka ku_lever_lock.nss Já nevím kam ten script dát, jestli do onused nebo kam. Jo, do onused. |
Author: | kucik [ 19:39 23. Sep 2011 ] |
Post subject: | Re: Užitečné scripty |
Tak mi to posli. Ja zkusim zjistit, co tam nefunguje. |
Author: | Aulus [ 09:50 04. Sep 2013 ] |
Post subject: | Re: Užitečné scripty |
Potřeboval bych poradit s použitím skriptu. Co mám použít za příkaz, když chci, aby NPC nějak reagovalo na konkrétní projev PC mimo rozhovor? Myslím tím to, že PC řekne nějaké konkrétní slovo, NPC odpoví a PC dostane za to odměnu. Zkoušel jsem GetLocalString a TestStringAgainstPattern, ale buď na to jdu úplně špatně nebo na něco zapomínám. Díky za pomoc. |
Author: | Shaman88 [ 12:03 04. Sep 2013 ] |
Post subject: | Re: Užitečné scripty |
Aulus wrote: Potřeboval bych poradit s použitím skriptu. Co mám použít za příkaz, když chci, aby NPC nějak reagovalo na konkrétní projev PC mimo rozhovor? Myslím tím to, že PC řekne nějaké konkrétní slovo, NPC odpoví a PC dostane za to odměnu. Zkoušel jsem GetLocalString a TestStringAgainstPattern, ale buď na to jdu úplně špatně nebo na něco zapomínám. Díky za pomoc. 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áš. |
Author: | Aulus [ 12:19 04. Sep 2013 ] |
Post subject: | Re: Užitečné scripty |
Shaman88 wrote: Záleží jestli znáš předem to co chceš aby hráč řekl nebo ne. 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í. Dej přímo příklad kde a v čem to používáš. 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. |
Author: | Puxina [ 12:34 04. Sep 2013 ] |
Post subject: | Re: Užitečné scripty |
Něco podobné je v dungu v bažinách v tom chrámu s ještěrkama, kde je matematický příklad a když s postavou normálně napíšeš to číslo a dáš enter, tak je tam nějaký script, který spustí portál. Možná by to šlo použít. |
Author: | Shaman88 [ 15:02 04. Sep 2013 ] |
Post subject: | Re: Užitečné scripty |
Aulus wrote: Shaman88 wrote: Záleží jestli znáš předem to co chceš aby hráč řekl nebo ne. 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í. Dej přímo příklad kde a v čem to používáš. 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í!!!! } |
Author: | Aulus [ 15:09 04. Sep 2013 ] |
Post subject: | Re: Užitečné scripty |
Díky moc. |
Author: | Shaman88 [ 15:13 04. Sep 2013 ] |
Post subject: | Re: Užitečné scripty |
Aulus wrote: Díky moc. Hlavně ale pokud budeš upravovat skripty NPC. Tak ten skript vzdy prejmenuj nez ho upravíš protože ten stejny skript pouzivaji všechny NPC. |
Author: | Aulus [ 15:21 04. Sep 2013 ] |
Post subject: | Re: Užitečné scripty |
Shaman88 wrote: Aulus wrote: Díky moc. Hlavně ale pokud budeš upravovat skripty NPC. Tak ten skript vzdy prejmenuj nez ho upravíš protože ten stejny skript pouzivaji všechny NPC. BTW - Proč je to vypnutí naslouchání tak důležité? Aby se to neaktivovalo znovu? |
Author: | innfra [ 15:28 04. Sep 2013 ] |
Post subject: | Re: Užitečné scripty |
Zbytečná zátěž pro server. |
Author: | Shaman88 [ 15:36 04. Sep 2013 ] |
Post subject: | Re: Užitečné scripty |
Jo přesně je to strašná zátěž pro server. To pak to NPC parsuje každou větu co slyší a hledá v něm ty patterny... Když je kolem něj nějaký quest tak to znamená hodně velký problém. |
Page 2 of 3 | All times are UTC + 1 hour [ DST ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |