Užitečné scripty

Neaktuální příspěvky jsou shromažďovány zde.

Moderators: DM, WB

User avatar
-RoF-
Ďábel
Posts: 5342
Joined: 20:20 24. Jul 2009

Re: Užitečné scripty

Post by -RoF- »

Tak zkoušel jsem a testoval a nevím :roll: :oops: Dle toho co si psal
1. Zamčená páka
ku_lever_lock.nss
Já nevím kam ten script dát, jestli do onused nebo kam.
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"

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 :)
Aria Oria - pohledná divoká dívka, která ráda své skvostné tělo vystavuje jen ve skromném oblečení. Její postava nese znaky dračí krve, od rudých křídel, přes oranžové dračí oči, až po tělo hřející tak, jako by měla horečku.
Měšťanka Karathy a členka Morusova stánku.

*otisk rudých rtů nad tím malý dráček držící mrkev a to vše ve zlatém poli*
User avatar
kucik
Temnota
Posts: 16272
Joined: 10:42 10. May 2007
Location: Somewhere around nothing
Contact:

Re: Užitečné scripty

Post by kucik »

Opraveno 24. 09. 2011

ku_door_lever.nss:

Code: Select all

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'");
}
Neaktivní a nezasahující do vývoje. Pouze nouzový support pro WB/DM.
***********************************************
Les jambes en l'air, comme une femme lubrique,
Brûlante et suant les poisons,
Ouvrait d'une façon nonchalante et cynique
Son ventre plein d'exhalaisons.
User avatar
kucik
Temnota
Posts: 16272
Joined: 10:42 10. May 2007
Location: Somewhere around nothing
Contact:

Re: Užitečné scripty

Post by kucik »

-RoF- wrote:Tak zkoušel jsem a testoval a nevím :roll: :oops: Dle toho co si psal
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.
Neaktivní a nezasahující do vývoje. Pouze nouzový support pro WB/DM.
***********************************************
Les jambes en l'air, comme une femme lubrique,
Brûlante et suant les poisons,
Ouvrait d'une façon nonchalante et cynique
Son ventre plein d'exhalaisons.
User avatar
-RoF-
Ďábel
Posts: 5342
Joined: 20:20 24. Jul 2009

Re: Užitečné scripty

Post by -RoF- »

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
Aria Oria - pohledná divoká dívka, která ráda své skvostné tělo vystavuje jen ve skromném oblečení. Její postava nese znaky dračí krve, od rudých křídel, přes oranžové dračí oči, až po tělo hřející tak, jako by měla horečku.
Měšťanka Karathy a členka Morusova stánku.

*otisk rudých rtů nad tím malý dráček držící mrkev a to vše ve zlatém poli*
User avatar
kucik
Temnota
Posts: 16272
Joined: 10:42 10. May 2007
Location: Somewhere around nothing
Contact:

Re: Užitečné scripty

Post by kucik »

Tak mi to posli. Ja zkusim zjistit, co tam nefunguje.
Neaktivní a nezasahující do vývoje. Pouze nouzový support pro WB/DM.
***********************************************
Les jambes en l'air, comme une femme lubrique,
Brûlante et suant les poisons,
Ouvrait d'une façon nonchalante et cynique
Son ventre plein d'exhalaisons.
User avatar
Aulus
Čestný člen týmu Thalie
Posts: 5998
Joined: 17:31 22. Jan 2012
Location: Nový Jičín / Brno

Re: Užitečné scripty

Post by Aulus »

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. :)
"Všechny hranice jsou konvence, které čekají, až je někdo přesáhne. Někdo může přesáhnout konvenci, pokud mu k tomu někdo jiný vydá podnět." David Mitchell, Atlas mraků
"But what do we have left once we abandon the lie? Chaos. A gaping pit waiting to swallow us all.”
User avatar
Shaman88
WB Thalie
Posts: 9760
Joined: 09:41 01. Sep 2010
Contact:

Re: Užitečné scripty

Post by Shaman88 »

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áš.
User avatar
Aulus
Čestný člen týmu Thalie
Posts: 5998
Joined: 17:31 22. Jan 2012
Location: Nový Jičín / Brno

Re: Užitečné scripty

Post by Aulus »

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.
"Všechny hranice jsou konvence, které čekají, až je někdo přesáhne. Někdo může přesáhnout konvenci, pokud mu k tomu někdo jiný vydá podnět." David Mitchell, Atlas mraků
"But what do we have left once we abandon the lie? Chaos. A gaping pit waiting to swallow us all.”
User avatar
Puxina
Bůh
Posts: 2521
Joined: 14:39 27. Aug 2013

Re: Užitečné scripty

Post by Puxina »

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.
Abigaill Moon - střelená, praštěná...no dobře prostě vtipkující drobná elfina - princezna Abi

Mireia Chica de Guerra Vasquez - vysoká bojovnice z ciziny s falchionem většinou držící flašku alkoholu - Mireia

Lucka Jehlička - malá hobití druidka s medvědem v kapse - Lucka
User avatar
Shaman88
WB Thalie
Posts: 9760
Joined: 09:41 01. Sep 2010
Contact:

Re: Užitečné scripty

Post by Shaman88 »

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í!!!!
}
User avatar
Aulus
Čestný člen týmu Thalie
Posts: 5998
Joined: 17:31 22. Jan 2012
Location: Nový Jičín / Brno

Re: Užitečné scripty

Post by Aulus »

Díky moc. :)
"Všechny hranice jsou konvence, které čekají, až je někdo přesáhne. Někdo může přesáhnout konvenci, pokud mu k tomu někdo jiný vydá podnět." David Mitchell, Atlas mraků
"But what do we have left once we abandon the lie? Chaos. A gaping pit waiting to swallow us all.”
User avatar
Shaman88
WB Thalie
Posts: 9760
Joined: 09:41 01. Sep 2010
Contact:

Re: Užitečné scripty

Post by Shaman88 »

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.
User avatar
Aulus
Čestný člen týmu Thalie
Posts: 5998
Joined: 17:31 22. Jan 2012
Location: Nový Jičín / Brno

Re: Užitečné scripty

Post by Aulus »

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?
"Všechny hranice jsou konvence, které čekají, až je někdo přesáhne. Někdo může přesáhnout konvenci, pokud mu k tomu někdo jiný vydá podnět." David Mitchell, Atlas mraků
"But what do we have left once we abandon the lie? Chaos. A gaping pit waiting to swallow us all.”
User avatar
innfra
Urozený
Posts: 1551
Joined: 16:59 15. Mar 2009

Re: Užitečné scripty

Post by innfra »

Zbytečná zátěž pro server.
Tariel Reynolt - "Kde mám dárečka?"
Tomas Tane - "Tady si jeden neodpočine."
Finnean Násir Taran - "Za kodex a za sestru!"
Alexandr Rázný - "Už mě to tu nebaví! Puste mě ven!"
Tomáš Alrik Tane - "Já vim, moc mluvim."
Tagar Kovadlina - "Háááá Hřbitůváčka!" - Smazán

Elitní Kazišuk!
User avatar
Shaman88
WB Thalie
Posts: 9760
Joined: 09:41 01. Sep 2010
Contact:

Re: Užitečné scripty

Post by Shaman88 »

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