Aktualnie pracujemy nad:
Zadaniami pobocznymi do modyfikacji Bandyta
PROTOTYPE Mst_Default_DarkLurker(C_Npc) { //----- Monster ---- name = "Mroczny topielec"; guild = GIL_LURKER; aivar[AIV_MM_REAL_ID] = ID_LURKER; level = 25; //----- Attributes ---- attribute [ATR_STRENGTH] = 120; attribute [ATR_DEXTERITY] = 120; attribute [ATR_HITPOINTS_MAX] = 300; attribute [ATR_HITPOINTS] = 300; attribute [ATR_MANA_MAX] = 0; attribute [ATR_MANA] = 0; //----- Protections ---- protection [PROT_BLUNT] = 120; protection [PROT_EDGE] = 120; protection [PROT_POINT] = 120; protection [PROT_FIRE] = 120; protection [PROT_FLY] = 60; protection [PROT_MAGIC] = 120; //----- Damage Types---- damagetype = DAM_MAGIC; damageTotal = 130; // damage [DAM_INDEX_BLUNT] = 0; // damage [DAM_INDEX_EDGE] = 0; // damage [DAM_INDEX_POINT] = 0; // damage [DAM_INDEX_FIRE] = 0; // damage [DAM_INDEX_FLY] = 0; // damage [DAM_INDEX_MAGIC] = 0; //----- Kampf-Taktik ---- fight_tactic = FAI_LURKER; //----- Senses & Ranges ---- senses = SENSE_HEAR | SENSE_SEE | SENSE_SMELL; senses_range = PERC_DIST_MONSTER_ACTIVE_MAX; aivar[AIV_MM_ThreatenBeforeAttack] = FALSE; aivar[AIV_MM_FollowTime] = FOLLOWTIME_LONG; aivar[AIV_MM_FollowInWater] = TRUE; aivar[AIV_MM_Packhunter] = TRUE; //----- Daily Routine ---- start_aistate = ZS_MM_AllScheduler; aivar[AIV_MM_RoamStart] = OnlyRoutine; }; //************** // Visuals //************** //--------------------------------------------------- func void B_SetVisuals_DarkLurker() { Mdl_SetVisual (self, "Lurker.mds"); Mdl_SetVisualBody (self, "Lur_Body", 1, DEFAULT, "",DEFAULT, DEFAULT, -1); }; //************* // Lurker //************* INSTANCE DarkLurker (Mst_Default_DarkLurker) { B_SetVisuals_DarkLurker(); Npc_SetToFistMode(self); };
Po kolei:
PROTOTYPE Coś jak instancja. Najlepiej nazwać to Mst_Default_<kod_potwora>.
name Nazwa. Chyba wiecie o co c'mon.
guild Gildia. Przez to nasz topielec nie będzie atakować innych topielców, będzie chętnie wpieprzać gobliny, będzie z niego lecieć krew, a nie taki szlam itd.
aivar[AIV_MM_REAL_ID] To dość ważne. Przez to między innymi z topielca będą lecieć pazury.
level Poziom. To też definiuje ilość expa, który dostaniemy za zabicie potworka, czyli Lvl*10.
attribute Atrybuty. Chyba nie muszę tłumaczyć...
protection Obrona. To też chyba nie trza tłumaczyć. Powiem tylko, że "FLY" to atak trolla, golema lub po prostu upadek z wysokości.
damagetype Typ obrażeń. Wiecie chyba.
damageTotal To dałem tylko dlatego, że DmgType jest Magic. Jeśli byłby Edge albo Blunt, to Dmg zależałby od siły.
Te pierdoły po dwóch Slashach oczywiście system nie czyta, nie wiem w ogóle po co to jest w każdym skrypcie potworów.
fight_tactic Taktyka walki...
senses Zmysły. Smell to węch, Hear to słuch, See to wzrok. Węch daje np to, że zwierze czuje krew, więc reaguje na zabicie innego stwora. Słuch to reakcja jak podchodzimy moba od tyłu(chyba, że się skradamy).
Jeśli chcemy, aby mob był ślepy to dajemy tylko SENSE_HEAR | SENSE_SMELL itd.........
senses_range Zasięg zmysłów. To co tam jest to stała, najlepiej nie zmieniać.
aivar[AIV_MM_ThreatenBeforeAttack] Potwór ostrzega nas przed atakiem(TRUE) lub od razu nas atakuje(FALSE).
aivar[AIV_MM_FollowTime] Czas gonienia. Tu mamy długi jak wilk czy warg. Normalny to MEDIUM zamiast LONG(tak ma większość potworów). Krótki to SHORT jak krwiopijca.
aivar[AIV_MM_FollowInWater] Goni w wodzie(TRUE) lub nie goni(FALSE). To jest topielec, więc mój wybór jest oczywisty.
aivar[AIV_MM_Packhunter] Polowanie w stadzie(TRUE) jak wargi, wilki czy zębacze; lub samotnie(FALSE) jak demon.
start_aistate Rutyna. Podana jest stała.
aivar[AIV_MM_RoamStart] = OnlyRoutine; Z bólem przyznam - nie wiem.
func void Jak wiadomo. Funkcja. W tym przypadku Visuale. Najlepiej nazwać B_SetVisuals_<kod_potwora>, nie zapominając o () na końcu.
Mdl_SetVisual .MDS stwora.
Mdl_SetVisualBody Ważne tu jest tylko to pierwsze po "self," model .asc oraz drugie - numer textury(nazwa_textury_V1-C.tex; jak ma mieć oryginał to piszemy DEFAULT). -1 to zbroja(a właściwie jej brak). Jak chcemy dać zbroję szkieletowi to po prostu wpisujemy tam kod zbroi.
I w końcu:
INSTANCE <kod_Potwora> (Mst_Default_<kod_potwora>) //Wbije nam do kodu stwora od razu te pierdoły, które wpisaliśmy w prototype.
B_SetVisuals_<kod_potwora>(); Wcześniej zdefiniowana funkcja Visuali.
Npc_SetToFistMode(self); Potwór będzie miał domyślnie(gdybyście wiedzieli ile się namęczyłem, żeby znaleźć to słowo ) włączony tryb bojowy.
Jak wrzucić potwora do świata?
W StartUp dopisujesz linijke np.
Wld_InsertNpc (SKELETON,"GROTA2");
Jak zmniejszać skalę ...Hmm np. tak
Mdl_SetModelScale(self, 0.5, 0.5, 0.5)
Lesterek17- Kolejny sklejony i oczyszczony temat, w końcu to dział tutoriale czyli nie na komentarze nie
Ostatnio edytowany przez krupam (2010-02-13 12:44:36)
Offline