Instance system

Goto down

Instance system

Odoslať  Savior za Št 31 júl 2008 - 16:34

Instance System

'instance' (zkracena verze 'dungeon instance') je v kodu reprezentovana tridou InstanceMap. Tato trida je odvozena z tridy Map, ale ma nekolik specifickych vlastnosti. Jakakoliv mapa muze byt instancovana (muze byt vytvorena jeji kopie), ale ne vsechny mapy jsou dungeony (napriklad battlegroundy).
Celkem existuji 3 typy instanci: normalni, raid a heroic mod instance. Raid groupy muzou vlezt do normalnich instanci i do heroic instanci, a vytvoreni raid grupy je jedina moznost, jak se dostat do raid instance. Narozdil od raid instanci, heroic instance jsou o hodne tezsi, nez normalni instance. Obvykle obsahuji moby s vyssim lvlem, ale take maji lepsi loot. Vetsina normalnich instanci nema heroic mod.

Kdyz hraci vstoupi do instance (InstanceMap::Add), jsou vytvoreny InstanceBinds. Existuji 4 typy:
a) Solo PlayerInstanceBinds je vytvoren, pokud hrac vstoupi do instance sam (neni v zadne skupine).
b) GroupInstanceBinds se vytvori, pokud do instance vstoupi hrac, ktery je v nejake skupine.
c) Permanent PlayerInstanceBinds se vytvori v raid/heroic instancich, pro hrace, kteri aktualne nejsou 'permanentne pripoutani', kdyz jsou uvnitr instance a je zabit boss, nebo pokud vstoupi do instance, ke ktere je group leader 'permenentne pripoutan'. V tuto chvili dostane hrac svoje raid ID (cislo). Timto dojde k "ulozeni" hrace do instance tyto "ulozeni" jsou ukazany v menu character.
d) Permanent GroupInstanceBinds existuji, pokud ma raid leader Permanent PlayerInstanceBind pro stejnou instanci. Tato vlastnost je pouze pro pripad, ze raid leader je offline a potrebujeme vedet, zda mame "ukladat" dalsi hrace (ze skupiny), kteri do instance vstoupi.
poznamka: Ikdyz by stacilo pouzivat jenom PlayerInstanceBinds pro ukladani vsech techto informaci, vzhledem k tomu, ze groupinstancebinds se kopiruji od leadera na dalsi cleny skupinky v instanci, tak tento zpusob by spotrebovaval vic pameti, a potreboval by vic dotazu pro pripady, kdy by tyto informace byly potreba, ale leader by byl offline.

Hrac nebo skupina muze byt v jednu dobu "pripoutana" pouze k jedne instanci stejneho dungeonu a obtiznosti. Napriklad muzete byt permanentne pripoutani k instanci v heroic modu, ale porad muzete chodit (i resetovat) normal mod teto intance nekolikrat za sebou.
Pokud se hrac naloguje do mapy instance bez toho, aby k ni byl pripoutan, (muze se stat, pokud bude v raid instanci "odpoutan a odloguje se"), vytvori se pro nej nova instance, ke ktere bude pripoutan a bude naportovan ke vstupu do instance.
Ve skupine mohou byt hraci, kteri jsou permenentne pripoutani k ruznym instancim (stejne mapy) a take hraci, kteri k zadne instanci teto mapy pripoutani nejsou. Z tohoto duvodu, pokud se zmeni group leader, 'pripoutani' cele skupiny jsou upravena podle permenentnich bindu noveho leadera. Leaderovo 'pripoutani' urcuje, do ktere instance budou ostatni hraci naportovani a "permenentne pripoutani". Ale pokud nejaky clen (krome leadera) vstoupi do jine instance, cela skupina k ni bude pripoutana.
Pokud samotny hrac invituje nekoho, aby vytvorili skupinu (ne kdyz dostane pozvanku do jine skupiny), jeho pripoutane instance se neresetuji, ale hracske pripoutani je zmeneno na pripoutani cele skupiny. Presneji jeho permanentni pripoutani se prenese na nej, i na celou skupinku, ale 'normalni' pripoutani se v tuto chvili rusi a je nahrazeno skupinovym pripoutanimi. Tyto zmeny (group bind) se ztrati, pokud hrac opusti skupinu (a jsou opet nahrazeny normalnimi pripoutanimi).

Trida MapInstanced je v soucane dobe kontejner pro InstanceMaps. Pravdepodobne bude pozdeji zrusena.
V soucasne dobe jsou InstanceMaps jsou vytvareny funkci MapInstanced::GetInstance pres volani GetMap. Pri vytvareni nove instance se nejdrive berou v uvahu permenentni player binds, pote group binds a nakonec solo binds. Pokud zadne neexistuji, je vytvorena nova instance.
InstanceMaps jsou uvolneny z pameti po urcite (nastavitelne) dobe, kdy z instance odejde posledni hrac. Nekolik specialnich pripadu:
1. "reset all instances" bude uspesne pouze v pripade, ze se instanci jiz nikdo nenachazi (v tomto pripade dojde k okazitemu "zahozeni" instance).
2. Pokud se v instanci rozpadne skupina, hraci dostanou 1 minutu, nez budou teleportovani do mista, kde maji nastaven heartstone a mapa bude "zahozena" po dvou minutach. Stejna vec se stane 1 minutu pred global reset time v raid instanci, pokud se v ni zrovna nachazeji nejaci hraci.
3. Pokud group leaer zmeni obtiznost dungeonu, instance je "zahozena" okamzite, jakmile vsichni instanci opusti.

Resetovani instance je vlastne pojem pro vymazani z databaze (instance, espawn creepu) a odpoutani hracu od ni (group_instance, character_instance). Proste to znamena, ze pokud nekdo vleze do resetovane instance, budou v ni vsichni moobove opet naspawnovani.
poznamka: pokud dojde ke zmene obtiznosti dungeonu, muzete klidne dal kilovat creepy, zmena obtiznosti se projevi, az kdyz bude aktualni instance "zahozena".
Instance MUZE BYT resetovana, pokud k ni neni zadny hrac permanentne pripoutan. Instance BUDE resetovana za urcitych podminek:
1. Po pouziti funkce "reset instances" ve hre. Instanci muze resetovat bud leader, nebo hrac, ktery si instanci "soluje". Timto zpusobem se daji resetovat pouze normal instance, a hra oznamuje vsem hracum ve skupine, zda se reset podaril, nebo ne. Pokud je nekdo ze skupiny, ktera chce instanci resetovat v instanci, reset se nezdari.
2. Po pouziti funkce "change difficulty" ve hre. (uvnitr instanci zakazano) Pro pouziti teto moznosti musi byt splneny stejne podminky jako v pripade 1. a ma za nasledek nasledujici:
a) Pokud obtiznost nastavuje hrac bez skupiny:
Permanent instance binds zustanou nezmenene. Vsechno ostatni je od hrace 'odpoutno' a instance predchozi obtiznosti (ta, ze ktere se obtiznost meni) je resetovana.
b) pokud obtiznost nastavuje group leader
pokud leader zmeni obtiznost, zmeni ji pro vsechny cleny skupiny a nezalezi, jestli jsou uvnitr instance, nebo venku. Pokud mohou byt tyto instance resetovany, tak se tak stane okamzite. Hracum uvnitr instance se zobrazi varovani o zmene obtiznosti, ale nezobrazi se jim casovac pro port do mesta a klidne mohou dal prochazet instanci pretim zvolene obtiznosti, ale pokud opusti instanci, nebo se relognou, uz se zpet naloguji do instance nove zvolene obtiznosti.
3. Raid/heroic instance maji urcity cas, za ktery se resetuji, tento cas je globalni a urcuje, kdy se vsechny instance te ktere mapy resetuji. Tyto global resety se deji jednou za nekolik dni vzdy ve stejnou hodinu.
Casy pro vsechny "ulozene" instance jsou zobrazeny v character okne, spolecne s raid ID, ktera identifikuje instanci. Pokud se skupina nachazi v instanci, kter bude brzy resetovana, dostanou nekolik warningu o resetu instance a nakonec budou odportovani pric z instance.
4. Pokud se pripojite k nejake skupince, vsechny solo instance se resetuji, vcetne heroic instanci, ke kterym nejste pripoutani.
5. Kdyz se skupina rozpadne (vsichni ji opusti), vsechny instance, ke kterym byla skupina pripoutana se resetuji, pokud mohou. Proste pokud nekdo leavne v instanci, dostane odpocet pro portovani.
6. Instance v normal modu se resetuji sami casem, kdyz se sami postupne respawnuji jednotlive creepy v instanci. Tento casovac pro reset normal modu se meni pokazde, kdyz je v instanci zabit nejaky creep a dokud jsou v instanci hraci, instance se neresetuje. Reset time je ulozen v databazi a je spusten, az kdyz je instance "zahozena" a zalezi na hodnotach v creature_respawn tabulce.


Je to skopirovane s valhalla fora.(preklad Ceris)
Nastudujte si to nech to mozme testnut Smile
avatar
Savior
Forum killer
Forum killer

Počet príspevkov : 455
Age : 29
Registration date : 12.04.2008

Zobrazit informácie o autorovi

Návrat hore Goto down

Re: Instance system

Odoslať  Tinuviel za So 2 august 2008 - 15:10

Dává mi to smysl asi jako manuál k japonskému videu, ale není to horší než skripta co jsme měli na právo :-D nebyla by nějaká obrázková verze? Smile Ne teď vážně, jestli jsem to správně pochopil, tak pokud nemá group leader uloženou instanci (není připoután) tak celá jeho skupina jde do nové instance (a ti ze skupiny co jsou připoutáni ke své instanci jsou hozeni do té své) a pokud group leader je připoután k nějaké své instanci tak je do ní hozena i celá jeho skupina?
avatar
Tinuviel
Drtič
Drtič

Počet príspevkov : 106
Age : 30
Registration date : 23.04.2008

Zobrazit informácie o autorovi

Návrat hore Goto down

Re: Instance system

Odoslať  Krabat za Ne 3 august 2008 - 17:23

Velmi pěkně napsané, výstižně, věcně, odborně a srozumitelně.

Krásně jsi to roztřídil, pojmenoval a vysvětlil. Ale o jakém zaklínání to zde vůbec mluvíš?


confused confused

king
avatar
Krabat
Wtfskillhordesmashermegaspammer
Wtfskillhordesmashermegaspammer

Počet príspevkov : 825
Age : 47
Location : quilendar@email.cz
Registration date : 09.04.2008

Zobrazit informácie o autorovi

Návrat hore Goto down

Re: Instance system

Odoslať  Savior za Ne 3 august 2008 - 17:34

neviem ake zaklinanie myslis. A nepisal som to ja. Je to z fora z valhally.Ale prislo mi ze pol g ani netusi ze valhalla ma forum tak som to zjednodusil Very Happy
avatar
Savior
Forum killer
Forum killer

Počet príspevkov : 455
Age : 29
Registration date : 12.04.2008

Zobrazit informácie o autorovi

Návrat hore Goto down

Re: Instance system

Odoslať  Port za Pi 13 február 2009 - 16:04

Este pridam nieco o Instance systeme.
Jeho ucelom je zabranit famenu Raidov. Plati len pre KZ, Gruula, SSC, a Eye

TAKZE! Ked v raide(KZ, gruul, SSC) zabijete Bossa, kazdy clovek v raide dostane cislo instancie (vsetci rovnake) tzv ID. Svoje id si mozete pozret v okne Social/raid a hore je tlacitko Raid info. ak to mate sede, tak nemate ziadnu id pre ziadny raid.

Tym sa vlastne ulozi do databaze stav vaseho riadu. takze ak by ste prisli na druhy den, nasli ny ste toho jedneho bossa mrtveho. instancia sa uklada znova po zabiti kazdeho bossa.

ID sa maze c stredu v noci(pravdepodobne o 24:00-neviem to presne nebyvam tak dlho hore.

Co sa stane ked:
1. zoberete niekoho dalsieho do raidu(vymena clenov)- novy clovek dostane v momente ako vstupi do instancie Leadrovu ID. Pokial by uz mal inu ID, pbude portnuty do vlastnej instancie-cize do INEJ nej v ktorej je zvysok raidu a NEDA SA S TYM NIC ROBIT

2. Ak na druhy den skladate raid aby ste dokoncili rozrobenu instanciu- Leader musi byt niekto s ID. inak sa stane, ze ked vbehne dnu clovek bez ID, tak ho to portne do novej instancie a ludi s ID do starej-Tuna treba vyjst von, znova zlozit raid, tak aby mal leader ID a ON musi vojst prvy. tym padom bude mat nasledne kazdy jeho ID a dalej sa uz ide normalne.

3.Ak by ste jeden den vecer spravili polku bossov, druhy den doobeda si niekto z predchadzajuceho dna zlozil vlastny raid a siel s nim danu instanciu- tak povodna parta, ktora by vecer prisla dokoncit rozrobeny dung by nasla vsetko mrtve.

4. Ak je plna instancia a budete sa snazit dostat dnu, tak vas to portne tam kde mate HS. Pokial nieste full a niekto sa snazi zlozit raid s vasou ID tak z jeho raidu sa k vam dostanu ludia kym nebude instancia full a budete pozeraz na cudzieho cloveka vo vasom KZ

Valhalacke vynimky.
V1: Pokial spadne server a nik nieje v instancii, tak sa vsetci bossovia a trash resnu. sice ID kazdemu zostane, ale bude sa moct ist znova
V2: AK sa niekto odlogne v danej instancii a spadne server, je to ako keby tam zostal a nic sa neresne

preto chcel zdoraznit. AK chcete ist s gildou, tak NESMIETE ist s nikym inym. Od stvrtka by mohli zacat bezat dva raidy s dvoma ID-"moja" a "Throrova" (mena berte s rezervou je fuk kto to bude leadrovat.

_________________


Question: How many rogues does it take to gank a pally?
Answer: Two. One to attack him and another to wait for him at the inn.

Question: How does a rogue kill a paladin?
Answer: He pickpockets his hearthstone.
avatar
Port
Admin
Admin

Počet príspevkov : 1994
Age : 35
Location : Zvolen-Nitra
Registration date : 17.03.2008

Zobrazit informácie o autorovi

Návrat hore Goto down

Re: Instance system

Odoslať  Port za Pi 18 jún 2010 - 10:20

ID uz funguje presne ako ma, takze lock. Razz

_________________


Question: How many rogues does it take to gank a pally?
Answer: Two. One to attack him and another to wait for him at the inn.

Question: How does a rogue kill a paladin?
Answer: He pickpockets his hearthstone.
avatar
Port
Admin
Admin

Počet príspevkov : 1994
Age : 35
Location : Zvolen-Nitra
Registration date : 17.03.2008

Zobrazit informácie o autorovi

Návrat hore Goto down

Re: Instance system

Odoslať  Sponsored content


Sponsored content


Návrat hore Goto down

Návrat hore


 
Povolenie tohoto fóra:
Nemôžete odpovedať na témy v tomto fóre.