Nowy czar bojowy 8727 3

O temacie

Autor Ezzam

Zaczęty 23.07.2011 roku

Wyświetleń 8727

Odpowiedzi 3

Ezzam

Ezzam

Użytkownicy
posty391
Propsy367
  • Użytkownicy

Ezzam

Nowy czar bojowy
2011-07-23, 11:45(Ostatnia zmiana: 2011-09-03, 13:13)
A wiec zajmiemy się tworzeniem czaru bojowego. Jest to nieco podobne do tworzenia czarów teleportacji, które opisał sawik. A więc do dzieła - najpierw trzeba napisać skrypt zaklęcia w AI\Magic\Spells. Naszym czarem będzie Błękitny płomień.
// ************
// SPL_BlueFlame
// ************

const int SPL_Cost_BlueFlame = 5;
const int SPL_Damage_BlueFlame = 25;


INSTANCE Spell_BlueFlame (C_Spell_Proto)
{
time_per_mana = 0;
damage_per_level = SPL_Damage_BlueFlame;
damageType = DAM_MAGIC;
};

func int Spell_Logic_BlueFlame (var int manaInvested)
{
if (Npc_GetActiveSpellIsScroll(self) && (self.attribute[ATR_MANA] >= SPL_Cost_Scroll))
{
return SPL_SENDCAST;
}
else if (self.attribute[ATR_MANA] >= SPL_Cost_BlueFlame)
{
return SPL_SENDCAST;
}
else //nicht genug Mana
{
return SPL_SENDSTOP;
};
};

func void Spell_Cast_BlueFlame()
{
if (Npc_GetActiveSpellIsScroll(self))
{
self.attribute[ATR_MANA] = self.attribute[ATR_MANA] - SPL_Cost_Scroll;
}
else
{
self.attribute[ATR_MANA] = self.attribute[ATR_MANA] - SPL_Cost_BlueFlame;
};

self.aivar[AIV_SelectSpell] += 1;
};

W instance czaru można dopisać coś dodatkowego, np.
targetCollectType = TARGET_TYPE_UNDEAD;sprawi, ze czar będzie działał tylko na nieumarłych. Wszystkie te linijki są w pliku C_Spell_Proto.d

Następnie trzeba czar dopisać do pliku Spell_ProcessMana.d w ten sposób:
if (activeSpell == SPL_BlueFlame ) { return Spell_Logic_BlueFlame (manaInvested); };Teraz trzeba zająć się plikiem Constants.d, a mianowicie są tam do dopisania 3 rzeczy (z czego bez dwóch czar może działać):
W linijkach 510-646 są id zaklęć. Teraz trzeba wstawić nasze zaklęcie do jednego z nieużywanych slotów. Po zamianie wygląda to tak:
const int SPL_BlueFlame = 90;Niżej (linijki 654-791) są określone nazwy spellFx dla zaklęć. Można zdefiniować je samemu w plikach PfxInstMagic.d i VisualFxInst.d, ale my damy naszemu czarowi efekt kuli ognia. W tym celu wpisujemy
"InstantFireball", // 90 SPL_BlueFlamew odpowiedniej linijce.

Jeszcze niżej jest część odpowiadająca za animacje. Aby nasze zaklęcie miało animację ognistego pocisku, wpisujemy
"FBT",   // 90 SPL_BlueFlameNa koniec w Text.d należy dopisać nazwę zaklęcia:
const string NAME_SPL_BlueFlame = "Błękitny płomień";Żeby użyć zaklęcia trzeba oczywiście stworzyć zwój albo runę, ale ich tworzenie to akurat oczywistość  ;p  .
I na tym kończę tutorial. mam nadzieję że się komuś przyda.
 

krupam

krupam

Użytkownicy
posty105
Propsy43
Profesjabrak
  • Użytkownicy
Scripts\Content\AI\Magic\C_CanNpcCollideWithSpell.d
Tam można dorabiać do czarów funkcje zależne od celu, tzn. jak np Święty pocisk rani tylko złych itp.
Jest tam dość funkcji, ale łatwo się połapać o co chodzi, a można tam naprawdę ciekawe rzeczy wymyślać =J
 

EdekSumo

EdekSumo

Wyspa Khorinis
posty1739
Propsy924
ProfesjaLvl designer
  • Wyspa Khorinis
Krupam zapomniał napisać że trzeba jeszcze dopisać w pliku Text.d w funkcji TXT_SPELLS:
"Błękitny płomień", // 90 SPL_BlueFlameBez tego jak użyjemy czaru to zamiast nazwy czaru pojawi się coś takiego: TXT_SPL_RESERVED_90
 

lukaszsaz

lukaszsaz

Użytkownicy
posty11
  • Użytkownicy

lukaszsaz

Nowy czar bojowy
#3 2012-08-31, 15:22(Ostatnia zmiana: 2012-08-31, 15:38)
Prosze o pomoc . Chodzi o to że mam bład taki U:par redefined identifier : SPL Blueflame ( line 548 ) Zrobiłem wszystko tak jak w pordaniku i dupa , powiem jeszcze że sprawdzam po kroku i ten bład mi sie zrobił jak zrobiłem wszystko z plikiem constants.d

Dobra rozwiązałęm problem teraz jest inny Par : expecter '}" (line 768 )
 


0 użytkowników i 1 Gość przegląda ten wątek.
0 użytkowników
Do góry