Skočit na obsah


AI


  • Please log in to reply
21 odpovědí na toto téma

#1 Host_zpirit_*

Host_zpirit_*
  • Host

Odesláno 20.09.2005 11:45

Opilec pro kazdou hospodu.
-nahodne chodi
-pije
-mota se
-sedi
-Jde k nejblizsimu npc/pc a pozdravi ho.

void main()
{
object oCil=GetNearestObject(OBJECT_TYPE_CREATURE);
object oChair = GetNearestObjectByTag("zidle1");
object ostolicka = GetNearestObjectByTag("zidle2");




switch(d20())

                  {
                  case 1:  ClearAllActions();
                           ActionRandomWalk();
                           break;
                  case 2:  if (!GetIsObjectValid(GetSittingCreature(oChair)))
                           {
                           ClearAllActions();
                           ActionMoveToObject(oChair,FALSE);
                           if (!GetIsObjectValid(GetSittingCreature(oChair)))
                              {
                              ActionSit(oChair);
                              }
                           }
                  break;

                  case 3:  ClearAllActions();
                           ActionPlayAnimation(ANIMATION_FIREFORGET_DRINK);
                           ActionPlayAnimation(ANIMATION_LOOPING_PAUSE_DRUNK,120.00);
                           break;

                  case 4:  ActionMoveToObject(oCil,FALSE);
                           ActionPlayAnimation(ANIMATION_FIREFORGET_GREETING);
                           break;


                  case 5:  if (!GetIsObjectValid(GetSittingCreature(ostolicka)))
                           {
                           ClearAllActions();
                           ActionMoveToObject(ostolicka,FALSE);
                           if (!GetIsObjectValid(GetSittingCreature(ostolicka)))
                              {
                              ActionSit(ostolicka);
                              }
                           }
                           break;

                  default :
                           break;
                 }
}


V hospode pouzivam dva typy dedadel stolicku a zidly.
Dává se do onHB

Tak kratcejsi uz to snad byt nemuze:)
Musel jsem pridat ty akce move protoze jinak k zidly utikaly coz nevypada moc dobre hlavne u stariku.

Příspěvek upravil zpirit: 12.03.2006 16:25

  • 0

#2 Host_zpirit_*

Host_zpirit_*
  • Host

Odesláno 20.09.2005 11:46

AI slepice

void main()
{
//tag waypointu kam se maji slepice vracet
object oObject=GetWaypointByTag("kurnik");

switch(d20())
  {
case 1: AssignCommand(OBJECT_SELF,ClearAllActions());
        AssignCommand(OBJECT_SELF,ActionRandomWalk());
        break;

case 2: AssignCommand(OBJECT_SELF,ClearAllActions());
        ActionMoveToObject(oObject,TRUE);
        break;

case 3: AssignCommand(OBJECT_SELF,ClearAllActions());
        ActionMoveToObject(oObject,TRUE);
        break;

case 4: AssignCommand(OBJECT_SELF,ClearAllActions());
        break;
default:
        break;

  }
}


Příspěvek upravil zpirit: 07.12.2005 21:58

  • 0

#3 Host_gGeorg_*

Host_gGeorg_*
  • Host

Odesláno 20.09.2005 12:50

Pekny hracicky.
Ale misto if pouzij
switch ()
case break;
Kod bude lip vypadat a hlavne,
je to mnohem rychlejsi a obvzlast v HB kterej bezi prakticky porad je to znat.
  • 0

#4 Host_zpirit_*

Host_zpirit_*
  • Host

Odesláno 20.09.2005 13:03

Nj ale ted sem narazil na chybu.
Kdyz si sednou a zrovna to vyjde tak ze se napijou tak se posunou vedle zidle a sedi ve vzduchu musim udelat nejakou podminku aby nepily kdyz sedi.
  • 0

#5 Host_Zaki72_*

Host_Zaki72_*
  • Host

Odesláno 20.09.2005 13:09

void main()
{
object oCil=GetNearestObject(OBJECT_TYPE_CREATURE);
object oChair;
oChair = GetNearestObjectByTag("Chair");
object ostolicka;
oChair = GetNearestObjectByTag("stolicka");;
oChair = GetNearestObjectByTag("stolicka");
..........
}
V hospode pouzivam dva typy dedadel stolicku a zidly.
Dává se do onHB

Zobrazit příspěvek

Neni tam nejaky chaos? :biggrin:
Takhle si na tu zidli nikdy nesedne :blink:

Příspěvek upravil Zaki72: 20.09.2005 13:11

  • 0

#6 Host_zpirit_*

Host_zpirit_*
  • Host

Odesláno 20.09.2005 13:14

No koukam ze je to tam dvakrat:)


Tak co ted?

Příspěvek upravil zpirit: 20.09.2005 13:16

  • 0

#7 Ter Leeloo II

Ter Leeloo II

    Cechmistr

  • Admin
  • PipPipPipPipPipPipPipPipPip
  • 2519 Příspěvků:
  • Gender:Male

Odesláno 20.09.2005 13:19

O NWN scriptech nic nevim, ale mam za to, ze by tam melo byt toto. :biggrin:

object oChair;
oChair = GetNearestObjectByTag("Chair");
object ostolicka;
ostolicka = GetNearestObjectByTag("stolicka");

  • 0

#8 Host_zpirit_*

Host_zpirit_*
  • Host

Odesláno 20.09.2005 13:23

Jo to by tam teda byt melo dik za upozorneni.
  • 0

#9 Host_gGeorg_*

Host_gGeorg_*
  • Host

Odesláno 20.09.2005 14:52

Jak psal deklaraci promenych Ter. Tak to je ciste a krasne.
Nicmene NWN script umoznuje misto:
object oChair;
oChair = GetNearestObjectByTag("Chair");
psat:
object oChair = GetNearestObjectByTag("Chair");
A tohle:
int nInt;
nInt = d20();

switch(nInt)

je stejne jako:
switch(d20())
Edit:
Ehm - pac to mas v HB tak OBJECT_SELF je ten dannej panak. Takze konstrukce:
AssignCommand(OBJECT_SELF,ClearAllActions());
AssignCommand(OBJECT_SELF,ActionSit(ostolicka))

Je zbytecna. Pomala. Staci
ClearAllActions();
ActionSit(ostolicka);

Příspěvek upravil gGeorg: 20.09.2005 15:04

  • 0

#10 Host_zpirit_*

Host_zpirit_*
  • Host

Odesláno 20.09.2005 15:43

zkraceno
  • 0

#11 Host_gGeorg_*

Host_gGeorg_*
  • Host

Odesláno 20.09.2005 16:21

Jen par drobnosti
- mas tam jednu chybu ve trech exemplarich diky ktery ti to nebude fachat spravne :biggrin:
- zavorky se vecinou pisou
{
   xxx
   zzz
   {
      xxx
      yyy
    }
}

  • 0

#12 Host_zpirit_*

Host_zpirit_*
  • Host

Odesláno 20.09.2005 16:27

To jako ze nemaj bejt na kraji pokud nejsou prvni a posledni jo?
jako schudkovitej system?:)

Příspěvek upravil zpirit: 20.09.2005 16:28

  • 0

#13 Brudrafon

Brudrafon

    Starší mistr

  • Hráč
  • PipPipPipPipPipPipPipPip
  • 1979 Příspěvků:
  • Location:Doma

Odesláno 20.09.2005 16:29

To jako ze nemaj bejt na kraji pokud nejsou prvni a posledni jo?
jako schudkovitej system?:)

{
{
      {
      {
      }
      }

}
}
???

Zobrazit příspěvek

mno rika se tomu zavorkova konvence
kdyz ma nejaky script vetsi mnozstvi radku tak pak lezes kurzorem a hleda druhej par ty zavorky
  • 0

#14 Host_zpirit_*

Host_zpirit_*
  • Host

Odesláno 20.09.2005 16:30

No stejne to fachalo uz sem to zkousel.
  • 0

#15 Brudrafon

Brudrafon

    Starší mistr

  • Hráč
  • PipPipPipPipPipPipPipPip
  • 1979 Příspěvků:
  • Location:Doma

Odesláno 20.09.2005 16:31

No stejne to fachalo uz sem to zkousel.

Zobrazit příspěvek

fachat to bude ale jde o prehlednost :o))
  • 0

#16 Ter Leeloo II

Ter Leeloo II

    Cechmistr

  • Admin
  • PipPipPipPipPipPipPipPipPip
  • 2519 Příspěvků:
  • Gender:Male

Odesláno 20.09.2005 16:31

Nemysli treba gG ty podminky v case 2, 6 a 7 ? :biggrin:
  • 0

#17 Brudrafon

Brudrafon

    Starší mistr

  • Hráč
  • PipPipPipPipPipPipPipPip
  • 1979 Příspěvků:
  • Location:Doma

Odesláno 20.09.2005 16:33

Nemysli treba gG ty podminky v case 2, 6 a 7 ?  :biggrin:

Zobrazit příspěvek

Mno ted koukam ze tam jsou ty scripty dva :o))
a o kterym se mluvi ???
  • 0

#18 Host_zpirit_*

Host_zpirit_*
  • Host

Odesláno 20.09.2005 16:40

Takze myslite tohle jo?


case 7: if (!GetIsObjectValid(GetSittingCreature(ostolicka)))
{
ClearAllActions();
ActionSit(ostolicka);
}
break;


Pozde Ter:)

Příspěvek upravil zpirit: 20.09.2005 16:43

  • 0

#19 Ter Leeloo II

Ter Leeloo II

    Cechmistr

  • Admin
  • PipPipPipPipPipPipPipPipPip
  • 2519 Příspěvků:
  • Gender:Male

Odesláno 20.09.2005 16:42

Ja bych to teda myslel takto :biggrin:

case 7:
    if (!GetIsObjectValid(GetSittingCreature(ostolicka))) {
        ClearAllActions();
        ActionSit(ostolicka);
    }
    
    break;

  • 0

#20 Host_gGeorg_*

Host_gGeorg_*
  • Host

Odesláno 20.09.2005 16:55

MNoo.
- tak uz jenom to formatovani textu.Zavorky,mezery,a udelat hlavicku.
- u fire&forget animaci je bezpredmetna doba trvani. Proc je tam 3600 ?
- vazne ma ANIMATION_LOOPING_PAUSE_DRUNK delat 6 minut ?
  • 0

#21 Host_zpirit_*

Host_zpirit_*
  • Host

Odesláno 20.09.2005 16:56

Joo tak to nevim.
Ono je to jedno jak dlouho ne? kdzy se to vyrusi dalsim hodem.

Příspěvek upravil zpirit: 20.09.2005 16:59

  • 0

#22 Brudrafon

Brudrafon

    Starší mistr

  • Hráč
  • PipPipPipPipPipPipPipPip
  • 1979 Příspěvků:
  • Location:Doma

Odesláno 20.09.2005 17:01

Joo tak to nevim.
Ono je to jedno jak dlouho ne? kdzy se to vyrusi dalsim hodem.

Zobrazit příspěvek

mno ja o tech scriptech nic nevim ...

ale void main bude cekat nez se dokonci to co ma ...
takze dalsi hod projde az po nove incializaci void main .. tj az se ukonci vsechny prikazy ne ??
  • 0




0 uživatelů si čte toto téma

0 členů, 0 návětěvníků, 0 anonymních