
problem s... ani neviem cim vsetkym :)
#1 Host_harph_*
Odesláno 28.06.2004 21:26
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);
}
#2 Host_Orbeas_*
Odesláno 28.06.2004 22:44
{
// 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í.
#3 Host_Lopyk_*
Odesláno 28.06.2004 22:55
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.int nPClevel = GetFactionAverageLevel()
#4 Host_Wyvern_*
Odesláno 28.06.2004 23:01
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....
#5 Host_Lopyk_*
Odesláno 28.06.2004 23:03
#6 Host_Mole_*
Odesláno 29.06.2004 06:56
#7 Host_harph_*
Odesláno 29.06.2004 08:49
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
#8 Host_Lopyk_*
Odesláno 29.06.2004 15:09
Sam se ridi podle levelu, ovsem musis splinit nekolik predpokladu.Encounter se sam ridi podle levelu, na to nemusis nic vymejslet.
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.
#9 Host_harph_*
Odesláno 03.07.2004 21:37
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 ;)
#10 Host_Mole_*
Odesláno 05.07.2004 09:00
2. Nebyla to jen nahoda? Co ti da potreti a poctvrte?
3. Udelej si custom encounter s custom NPC.
#11 Host_Lopyk_*
Odesláno 05.07.2004 19:37
Do udalosti AreaExit udelej skript a v nem by melo byt nasledujici: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?
//://////////////////////////////////////////////////////////////////////////// void ClearNPC(object oArea) { object oObject = GetFirstObjectInArea(oArea); while(GetIsObjectValid(oObject)) { if(GetIsPC(oObject)) // Pokud je nekdo na lokaci, konec. return; else if (GetObjectType(oObject) == OBJECT_TYPE_CREATURE) { if (GetIsEncounterCreature(oObject)) DestroyObject(oObject); // Postava se smaze } oObject = GetNextObjectInArea(oArea); } } //://////////////////////////////////////////////////////////////////////////// void CreatureLeave(object oArea) { DelayCommand(30.0, ClearNPC(oArea)); } //://////////////////////////////////////////////////////////////////////////// void main() { CreatureLeave(OBJECT_SELF); }
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.
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.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?
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.3. a da sa nastavit, co a kolko bude vypadavat z priserok v encountroch? som to nikde nenasiel...
#12 Host_harph_*
Odesláno 06.07.2004 17:57
nene zle si ma pochopil ja som nemyslel pocet priser ale to co po sebe zanechaju po smrti ;) ...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.
#13 Host_Lopyk_*
Odesláno 07.07.2004 17:00
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 ;)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...
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.nene zle si ma pochopil ja som nemyslel pocet priser ale to co po sebe zanechaju po smrti ;) ...
#14 Host_harph_*
Odesláno 17.07.2004 14:23

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 :)
#15 Host_Lopyk_*
Odesláno 18.07.2004 00:07
#16 Host_harph_*
Odesláno 18.07.2004 09:23
#17 Host_Mole_*
Odesláno 18.07.2004 09:23
#18 Host_harph_*
Odesláno 18.07.2004 09:26
#19 Host_harph_*
Odesláno 20.09.2004 15:21
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);
}
#20 Host_harph_*
Odesláno 20.09.2004 21:10
Ale aj tak by som rad vedel ako si zadefinujem custom podmienku ;)
#21 Host_Tichondrius_*
Odesláno 20.09.2004 22:37
Kdyľ chceą z nějakého skriptu spustit na objektu oCreature UserDefined, pouľijeą k tomu zhruba tohle:
SignalEvent(oCreature, EventUserDefined(CISLO));
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(); if (nEvent == EVENT_HEARTBEAT) { // Co se má stát při HeartBeatu } else if (nEvent == EVENT_PERCEIVE) { // Co se má stát při uvidění něčeho } else if (nEvent == EVENT_DIALOGUE) { // Co se má stát při dialogu } else if (nEvent == EVENT_DISTURBED) { // Co se má stát při vyruąení } else if (nEvent == EVENT_ATTACKED) { // Co se má stát při napadení } else if (nEvent == EVENT_DAMAGED) { // Co se má stát při zranění } else if (nEvent == EVENT_END_COMBAT_ROUND) { // Co se má stát na konci kola v boji } else if (nEvent == EVENT_SPELL_CAST_AT) { // 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 uživatelů si čte toto téma
0 členů, 0 návětěvníků, 0 anonymních