NPC - po stronie NPC Servera: - ma zapisane unikalne ID tego NPC - posiada wszystkie dane - ustala pozycje gdzie mob ma sie pojawic (spawnlista) - nadzoruje jego zachowanie - AI - Posiada pozycje x,y,z -> Jezeli mob wykonuje ruch na zlecenie NPC Servera, Server zwraca Pakiet informujacy o zakonczeniu Ruchu i pozycji koncowej, w ten sposob Pozycja po stronie NPC Servera sie updatuje, Jezeli mob nie moze wykonac ruchu (np sciana na drodze ktorej nieda sie ominac) Server informuje o niepowodzeniu -> wtedy w NPC Serverze zwieksza sie ilosc nie udanych prob dojscia do celu -> AI moze zadecydowac ze np ten NPC ma zostac teleportowany odrazu do Celu (ktory oszukuje uzywajac bugow terenu) - tu jest trzymana AgroLista, Checi uzycia Ataku lub Skila z ich wartosciami - to tu odbywa sie podejmowanie decyzji kogo atakowac i czym NPC rozszerza L2Object - Po stronie Servera - ma zapisane unikalne ID - to samo co w NPC server -> to jest "graficzna" interpretacja tego moba co jest w NPC serverze - posiada podstawowe statsy takie jak HP MP itd -> sa one synchronizowane z NPC Serverem za pomoca pakietu - Tylko w tej klasie moze nastapic zmiana tych danych, kazda zmiana danych = pakiet do NPC Servera - Tutaj siedzi kalkulator statsow i tu sa dokonywane obliczenia ich - Posiada pozycje, ktora jest dynamicznie zmieniana wciagu ruchu -> nie ma sensu ta zmiana zawalac NPC Server - jemu wystarczy pozycja po zakonczonym ruchu (tak czy siak musi otrzymac pakiet ze dany ruch zostal zakonczony, wiec ten pakiet takze bedzie posiadal dane o pozycji gdzie npc zakonczyl ruch) - Ta klasa nadzoruje dzialanie roznych Effektow np Sleep -> kiedy takie cos zajdzie zostaje wyslany pakiet do NPC Servera informujacy go o tym zajsciu, tak aby AI wiedzialo ze NPC jest uspiony - Tutaj sa funkcje DoCast, DoAttack - szybka funkcja bez zadnego sprawdzania (to czy NPC ma MP i takie tam sprawdzane jest po stronie NPC Servera) - NPC Server rozkazuje rzucic taki czar to on musi zostac rzucony, Server musi sam sie zajasc np podejsciem do celu, sciganiem celu itp -> kiedy atak zostanie zakonczony NPC Server jest o tym informowany, wrazie niepowodzenia takze - Jezeli np ten NPC zostanie zaatakowany przez gracza -> wmomencie leci pakiet do NPC Servera informujacy go o tym - AI w NPC Serverze podejmie decyzje co robic -> np wysle pakiet aby NPC rozpoczol atak - Ta klasa jest tym samym co aktualnie w L2j z tym ze pozbawiona wiekszosci danych, AI, Dropa -> ktore sa w NPC Serverze - Jezeli NPC zginie NPC Server jest o tym informowany, nastepuje Event AI Event_Dead -> Ktory rozdaje Drop itp (wysylajac pakiet z ID i iloscia itemkow ktore dropnely a Server to Interpretuje) - To tutaj siedzi knownlista -> powiedzmy ze w momencie jej updatowania przelatujemy przez wszystkie widzialne obiekty i wysylamy pakiet zawierajacy podstawowe dane tych obiektow np (int a = ilosc obiektow: dla kazdego obiektu -> int b = id, int c = typ (np 1-pc 2-summon 3-npc) -> NPC Server to wysyla do AI jako Event_See_Creature z kazdym z tych oiektow.