Skočit na obsah


problem s... ani neviem cim vsetkym :)


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

#1 Host_harph_*

Host_harph_*
  • Host

Odesláno 28.06.2004 21:26

hello mam tu takyto skript ktory spustam pri vstupe do lokacie. mal by po prve zavriet a zamknut dvere cez ktore som prisiel a po druhe nastavit encounter kusok dalej na hodnoty podla levelu (to este domyslim). problem je ze dvere nezavrie ani nezamkne tym padom a nefunguje ani funkcia Random(). brr asi budem musiet studovat tie siahodlhe tutorialy na nwnvaulte :D

void main()
{
int nPClevel = GetFactionAverageLevel(GetFirstPC()); // moze byt takto?
int nDiff;
int nSpawn;

object oEnc = GetObjectByTag("stret_test01");
object oHlDvere = GetObjectByTag("Vchodzhradu");

// ked hrac vstupi do areny dvere sa zamknu (nefunguje)
ActionCloseDoor(oHlDvere);
ActionLockObject(oHlDvere);

// nastavenie vlastnosti suboja
if (nPClevel <= 3)
{
nDiff = 1;
nSpawn = Random(3)+1; // vzdy hodi 1 tj Random vracia chybu
}
else if (nPClevel <= 6)
{
nDiff = 2;
nSpawn = Random(6)+3;
}
// atd. to este dokoncim

SetEncounterDifficulty(nDiff, oEnc);
SetEncounterSpawnsMax(nSpawn, oEnc);

SetEncounterActive(TRUE, oEnc);

}
  • 0

#2 Host_Orbeas_*

Host_Orbeas_*
  • Host

Odesláno 28.06.2004 22:44

void main()
{
// zrejme chces level toho, kdo vchazi do lokace a ne toho, kdo se pripojil jako posledni, proto GetEnteringObject();
int nPClevel = GetFactionAverageLevel(GetEnteringObject()); // moze byt takto?
int nDiff;
int nSpawn;

object oEnc = GetObjectByTag("stret_test01");
object oHlDvere = GetObjectByTag("Vchodzhradu");

// ked hrac vstupi do areny dvere sa zamknu (nefunguje)
//Musis ten prikaz priradit dverim, jinak bys to priradil tomu, kdo vola skript(v tomto pripade area a to nefunguje)
AssignCommand(oHlDvere, ActionCloseDoor(oHlDvere));
AssignCommand(oHlDvere, ActionLockObject(oHlDvere));

// nastavenie vlastnosti suboja
if (nPClevel <= 3)
{
nDiff = 1;
nSpawn = Random(3)+1; // vzdy hodi 1 tj Random vracia chybu
}
else if (nPClevel <= 6)
{
nDiff = 2;
nSpawn = Random(6)+3;
}
// atd. to este dokoncim

SetEncounterDifficulty(nDiff, oEnc);
SetEncounterSpawnsMax(nSpawn, oEnc);

SetEncounterActive(TRUE, oEnc);

}

Hmm, trochu bych to upravil. Vyznačil jsem ti, co jsem upravil. Dělal jsem to narychlo, tak to otestuj a vyzkouąej, popřípadě se to jeątě doladí.
  • 0

#3 Host_Lopyk_*

Host_Lopyk_*
  • Host

Odesláno 28.06.2004 22:55

int nPClevel = GetFactionAverageLevel()

Ten GetFactionAverageLevel() vezme prumernej level v parte kde PC je. Takze kdyz budu mit jako vstupujici postava level 10, na uplne jiny lokaci bude level 1 a 2 spolu, tak prumer mame 4.3 ;) a sejde na tom, co ze to chces vlastne delat. Jestli ti zalezi pouze na levelu vstupujici postavy tak na to je funkce GetHitDice() s parametrem objektu ty postavy.
  • 0

#4 Host_Wyvern_*

Host_Wyvern_*
  • Host

Odesláno 28.06.2004 23:01

Jeste bych misto Randomu pouzival ekvivalentni fci v podobe d3(), d6(), ... Na vysledku by se nic zmenit nemelo ale Random() je docela random co se tyce jeho funkcnosti ;]

btw.. toto je dneska (vlastne uz je zitra) muj prvni "rozumnej" prispevek ;] jinak to byly dneska (mysleno vcera) sami zvasty ;] asi bych mel jit uz spat....
  • 0

#5 Host_Lopyk_*

Host_Lopyk_*
  • Host

Odesláno 28.06.2004 23:03

Ale my, mysleno jako vsichni kdo to cetli, sme si uz zvykli, mysleno tak, ze nas uz nemuze nic prekvapit. A nesejde na tom, jestli to bylo vcera nebo dneska ;)
  • 0

#6 Host_Mole_*

Host_Mole_*
  • Host

Odesláno 29.06.2004 06:56

Encounter se sam ridi podle levelu, na to nemusis nic vymejslet.
  • 0

#7 Host_harph_*

Host_harph_*
  • Host

Odesláno 29.06.2004 08:49

super dik za rady dufam ze to pojde.

k tomu encountru: chcel by som urobit modul pre 1 (neskor mozno viacerych) kde je arena ktora sa sama modifikuje podla urovne PC. co ma nastvalo je ze encountru musim presne priradit priserky neda sa to nejak cez skripty? inak to potom budem musiet spravit tak, ze tam manualne nahadzem VSETKY prisery v toolsete a encounter vyber si :D
  • 0

#8 Host_Lopyk_*

Host_Lopyk_*
  • Host

Odesláno 29.06.2004 15:09

Encounter se sam ridi podle levelu, na to nemusis nic vymejslet.

Sam se ridi podle levelu, ovsem musis splinit nekolik predpokladu.

1. Nastaveni obtiznosti encouteru (neplest si s kategorii), cim vyssi obtiznost tim, vic a silnejsich potvor se objevi.

2. Nahazenim celyho portfolia potvor od snadnych po tezky do jednoho setkani a podle levelu vstupujici postavy (party v lokaci) se pak vyberou ty adekvatni. Ovsem je pak treba myslet na to, ze se kazdymu objevi na dany lokaci neco jinyho.
  • 0

#9 Host_harph_*

Host_harph_*
  • Host

Odesláno 03.07.2004 21:37

takze mam tu dalsich par veci na ktore som nevedel prijst:

pre predstavu o co ide: mam uvodnu miestnost, v ktorej su teleporty do aren (PvMonster lahka, tazka, PvNPC lahka tazka atd.). v arenach su encountre ako pisal nadomnou lopyk. ked vstupim do areny aktivuje sa encounter a onexhausted sa otvoria dvere von z areny. ale:

1. ked hrac umre po znovuobjaveni sa teleportne do uvodnej miestnosti. no priserka co ho zabila ostane v arene. ako ju odtial po opusteni areny vymazem, prakticky ako resetnem celu arenu?

2. vosiel som tam s napr. hraniciarom lvl 10 a bojoval som proti vodnemu elementalovi. isiel som druhy krat, dufajuc ze mi vyberie z palety aj nieco ine, no nie - stale dava len vodneho elementala (ako lahka obtiaznost). da sa to nejak zrandomizovat?

3. a da sa nastavit, co a kolko bude vypadavat z priserok v encountroch? som to nikde nenasiel...

thnx za rady ;)
  • 0

#10 Host_Mole_*

Host_Mole_*
  • Host

Odesláno 05.07.2004 09:00

1. V OnExit lokace spoustej script na destroy vsech objektu (GetFirst & GetNext), ktery jsou stvoreny s encountru (GetIsEncountedSpawn nebo tak neco).
2. Nebyla to jen nahoda? Co ti da potreti a poctvrte?
3. Udelej si custom encounter s custom NPC.
  • 0

#11 Host_Lopyk_*

Host_Lopyk_*
  • Host

Odesláno 05.07.2004 19:37

1. ked hrac umre po znovuobjaveni sa teleportne do uvodnej miestnosti. no priserka co ho zabila ostane v arene. ako ju odtial po opusteni areny vymazem, prakticky ako resetnem celu arenu?

Do udalosti AreaExit udelej skript a v nem by melo byt nasledujici:
//&#58;////////////////////////////////////////////////////////////////////////////
void ClearNPC&#40;object oArea&#41;
{
    object oObject = GetFirstObjectInArea&#40;oArea&#41;;

    while&#40;GetIsObjectValid&#40;oObject&#41;&#41;
    {
        if&#40;GetIsPC&#40;oObject&#41;&#41; // Pokud je nekdo na lokaci, konec.
            return;
        else if &#40;GetObjectType&#40;oObject&#41; == OBJECT_TYPE_CREATURE&#41;
        {
            if &#40;GetIsEncounterCreature&#40;oObject&#41;&#41;
                DestroyObject&#40;oObject&#41;; // Postava se smaze
        }

        oObject = GetNextObjectInArea&#40;oArea&#41;;
    }

}

//&#58;////////////////////////////////////////////////////////////////////////////
void CreatureLeave&#40;object oArea&#41;
{
    DelayCommand&#40;30.0, ClearNPC&#40;oArea&#41;&#41;;
}

//&#58;////////////////////////////////////////////////////////////////////////////
void main&#40;&#41;
{
    CreatureLeave&#40;OBJECT_SELF&#41;;

}

Skript se spusti jakmile nejaka postava opusti lokaci. Pokud najde nejakeho hrace tak se prerusi. V realu se to resi jeste o trochu komplikovaneji, protoze by se melo sefovat jestli lokaci opousti DM, pripade ovladnutej pritelicek a tak a hlavne by se melo zjistovat jestli je v lokaci nejaky PC mnohem presneji. Toto je jen vykousnuta cast jez ti ma osvetlit tvoje dotazy.

2. vosiel som tam s napr. hraniciarom lvl 10 a bojoval som proti vodnemu elementalovi. isiel som druhy krat, dufajuc ze mi vyberie z palety aj nieco ine, no nie - stale dava len vodneho elementala (ako lahka obtiaznost). da sa to nejak zrandomizovat?

Hlavne odzkouset. Ja kdyz delam setkani, tak je delam jen s jednim typem potvor pripadne s jednou jedinecnou. Pro ucel persistentniho sveta neni zrovna zadouci aby se v jedny lokaci ktera ma mit urcitou obtiznost spawnovali potvory presne podle urovne hrace, ale ta obtiznost byla konstatni.

3. a da sa nastavit, co a kolko bude vypadavat z priserok v encountroch? som to nikde nenasiel...

Jiste, je to na prvni zalozce a jsou to polozky 'Maximum Creatures' a 'Minimum Creatures' Spawne se tudiz ten zadanej pocet od-do dle one obtiznosti.
  • 0

#12 Host_harph_*

Host_harph_*
  • Host

Odesláno 06.07.2004 17:57

juchu funguje to diky :) ale musel som dat prec ten delaycommand lebo mi to mazalo priserky kazdych 30 sekund aj ked som sa vratil spat a to neni pocas suboja moc vhodne...

Jiste, je to na prvni zalozce a jsou to polozky 'Maximum Creatures' a 'Minimum Creatures' Spawne se tudiz ten zadanej pocet od-do dle one obtiznosti.

nene zle si ma pochopil ja som nemyslel pocet priser ale to co po sebe zanechaju po smrti ;) ...
  • 0

#13 Host_Lopyk_*

Host_Lopyk_*
  • Host

Odesláno 07.07.2004 17:00

juchu funguje to diky :) ale musel som dat prec ten delaycommand lebo mi to mazalo priserky kazdych 30 sekund aj ked som sa vratil spat a to neni pocas suboja moc vhodne...

Ten DelayCommand tam byl pro to, aby kdyz postava odejde a hned se vrati, tak aby tam ty NPC zustali. Na Demone je to jeste zajisteni jinak aby se nesmazali v pripade ze v tom intervalu nez se spusti ten skrip tam nekdo prijde. V Arene sou trochu jiny pozadavky ;)

nene zle si ma pochopil ja som nemyslel pocet priser ale to co po sebe zanechaju po smrti ;) ...

Po smrti u sebe zanechaji to, co jim nahazis v toolsetu a zatrhnes volbu 'Dropable' (nevim jak je to cesky) pripadne se do NPC vytvari pri udalosti OnSpawn nejaky obnos penez ci itemy dle urcitych postupu nahody.
  • 0

#14 Host_harph_*

Host_harph_*
  • Host

Odesláno 17.07.2004 14:23

hello uz som tu zas :rolleyes:

chcel by som urobit statistiku o pocte a type zabitych priser, ako bolo napr. vo falloute (krysy : 254, pan baloru : 1 ...). zapisovat to budem do Journalu no neviem kam mam ten script dat - nie je nejaka podmienka OnCreatureDeath alebo nieco podobne? a tiez ako zistim meno NPC (GetName()? asi :))

jo a samozrejme ze tie NPC pochadzaju z encountru, keby boli samostatne tak by to bolo lahke :)
  • 0

#15 Host_Lopyk_*

Host_Lopyk_*
  • Host

Odesláno 18.07.2004 00:07

Vsechny potvory NPC maji skritp kterej spousteji pri svy smrti. Je to asi OnDeath. Tam se vetsinou udavaji ony akce ktery pripisujou XP hracum. Podivej se do skriptu ktery ma u sebe jakakoliv NPC. Jmeno jakyhokoliv objektu samozrejme muzes zjistis pres GetName.
  • 0

#16 Host_harph_*

Host_harph_*
  • Host

Odesláno 18.07.2004 09:23

s normalne umiestnenym NPC to nie je problem, tam je fakt OnDeath, ale ked su tie NPC vyplute z encountru? a este k tomu randomne takze neviem ake vylezu :) to by asi chcelo dat do OnUserDefined ale to neviem pouzivat (zatial) <_<
  • 0

#17 Host_Mole_*

Host_Mole_*
  • Host

Odesláno 18.07.2004 09:23

Zmen defaultni script od bioware a tim pokryjes vsechny NPC.
  • 0

#18 Host_harph_*

Host_harph_*
  • Host

Odesláno 18.07.2004 09:26

heh, to by slo! pozriem sa na to... :)
  • 0

#19 Host_harph_*

Host_harph_*
  • Host

Odesláno 20.09.2004 15:21

hello uz som zasa skusal nejake srandy a mam tento problemik:

ako vytvorim OnUserDefined podmienku? Napr. by som chcel spravit, aby straznik ked pride noc (18 hod.) vytiahol faklu a ked pride rano (6. hod) zas ju schoval. Skusal som to dat do OnHeartBeat, ale nejak to neslo a tu faklu vytiahol az ked som nanho zautocil :) ale predstava tak 10 strazcov ako kazdych 6 sekund otravuju server... Radsej by som to dal do OnUserDefined ako o 18. hod a o 6. hod (GetTimeHour)... Zatial mam takyto skript v OnHeartBeat straznika:

if ( (GetTimeHour() >= 18) || (GetTimeHour() < 6) )
{
AssignCommand(oStraz03, ActionEquipItem(oTorch001, INVENTORY_SLOT_LEFTHAND)); /* namiesto oStraz03by asi slo aj OBJECT_SELF ja len ci to musim Assignovat alebo ne, ak to bezi priamo na tom objekte */
}
else
{
ActionUnequipItem(oTorch001);
}
  • 0

#20 Host_harph_*

Host_harph_*
  • Host

Odesláno 20.09.2004 21:10

No tak som to cele umiestnil do OnHeartBeat oblasti a funguje to len u straznikov, ktory nemaju zadane waypointy. U tych, ktory sa pohybuju, to ide len ak ich prechadzku prerusim utokom...

Ale aj tak by som rad vedel ako si zadefinujem custom podmienku ;)
  • 0

#21 Host_Tichondrius_*

Host_Tichondrius_*
  • Host

Odesláno 20.09.2004 22:37

Ten skript v userdefined je ok, ale problém je ten, ľe ho musíą nějak spustit. OnUserDefined ti neběľí sám od sebe, ale musí ho nějaká akce spustit.
Kdyľ chceą z nějakého skriptu spustit na objektu oCreature UserDefined, pouľijeą k tomu zhruba tohle:
SignalEvent&#40;oCreature, EventUserDefined&#40;CISLO&#41;&#41;;

Pak si v tom UserDefined skriptu ohlídáą co potřebujeą. Takhle to je třeba dělané pro potvory, kdy aby si udělal nějakou vlastní s vlastním chováním nemusíą modifikovat kaľdý její skript, ale dáą jí do OnUserDefined tohle:

   int nEvent = GetUserDefinedEventNumber&#40;&#41;;

    if &#40;nEvent == EVENT_HEARTBEAT&#41; 
{ // Co se má stát při HeartBeatu

    } else if &#40;nEvent == EVENT_PERCEIVE&#41;
 { // Co se má stát při uvidění něčeho

    } else if &#40;nEvent == EVENT_DIALOGUE&#41; 
{ // Co se má stát při dialogu

    } else if &#40;nEvent == EVENT_DISTURBED&#41; 
{ // Co se má stát při vyruąení

    } else if &#40;nEvent == EVENT_ATTACKED&#41; 
{ // Co se má stát při napadení

    } else if &#40;nEvent == EVENT_DAMAGED&#41; 
{ // Co se má stát při zranění

    } else if &#40;nEvent == EVENT_END_COMBAT_ROUND&#41; 
{ // Co se má stát na konci kola v boji

    } else if &#40;nEvent == EVENT_SPELL_CAST_AT&#41; 
{ // Co se má stát při zakouzlení kouzla na mě

    }

 atd..

Díky tomu nemusíą mít jeden skript pro HeartBeat, druhej pro smrt, třetí pro dialog, ale stačí jeden, ve kterym máą vąechny vlastní nastavení pro danou potvoru.

Snad sem to vysvětlil srozumitelně ;)

BTW občas bejvá docela kumąt vymyslet, kdy správně spustit ten UserDefined event. S těma pochodněma bych to nejspíą udělal přes Percieved( kdyľ spatří hráče), pokud by byla noc, a neměl by v ruce pochodeň tak ji vytáhne, pokud je den, tak naopak. Hlásilo by se to o slovo vľdycky, kdyľ by stráľný potkal hráče. Kdyľ by nikoho nepotkal, tak by myslim nevadilo, ľe třeba pochodeň nemá ne?
Lepąí řeąení mě v tuto noční hodinu bohuľel nenapadá.. ;)
  • 0




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

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