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 :roll: :oops: 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 :roll: :oops: 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:  -RoF- [ 18:05 23. Sep 2011 ]
Post subject:  Re: Užitečné scripty

Ty scripty mě zničí :)
Takže.....

1. Zamčená páka

Vytvořil jsem script tak jak má být

Dal jsem dveře a tag "dvere" (na dveře jsem dal script ja_door_onopen a proměné jak mají být DOORCLOSE int 1 a DOORCLOSE_DELAY int 1)

Udělal jsem páku a dal na ni script ku_lever_lock
Na páku jsem nastavil proměné
DOORS_TAG string dvere
UNLOCKED string ku_opendoor

Páku jsem zamkl a dal na zem klíč, kterým se páka odemkla.

testoval jsem - nefunguje

------------------------------

2 páky na 1 dveře

Dal jsem dveře a tag byl dverex (na dveře jsem dal script ja_door_onopen a proměné jak mají být DOORCLOSE int 1 a DOORCLOSE_DELAY int 5)

Dal jsem dvě páky vedle sebe script obě mají ku_door_lever
Proměné jsem jim dal
DOORS_COUNT int 1 (otevírá tedy 1 dveře)
DOORS_TAG string dvere x
LEVER_COUNT int 2 (jsou třeba 2 páky)
TIMEOUT float 5 (musí se za obě páky zatáhnout v rozmezí 5 sekund)

testoval jsem - nefunguje

----------------------------------------------

Dál jsem zkoušel i script ku_opendoor

Funguje v pohodě, dám dveře na ně script a proměné a páku a na ni script a proměné. Pohoda. Problém je, kdžy tu páku dám dál od dveří. Pak script selže a nefunguje. Jako by ty dveře nenašel. Viz obrázek :)

Attachments:
paky.jpg
paky.jpg [ 96.22 KiB | Viewed 8605 times ]

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.
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.

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.
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í!!!!
}

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.
Jasně, na to už jsem přišel. :)¨)

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/