Schwierigkeit:
*****
benötigte Vorkenntnisse: etwas wissen über Funktionen sollten vorhanden sein.
und man sollte sich mit der funktionsweise von Zaubern auskennen:
https://cndg.forumieren.de/tutorials-f5/zauber-erstellen-t935.htmdas Tut über zauber steht zwar bei fortgeschritten, aber alles was man hierfür braucht ist zu wissen, wie die Zauber ausgelöst werden.
Benötigt wird weiterhin:
1. der Mystiker aus Metall und Magie
2. ein Gegenstand den er nun zum zaubern benutzen soll
3. eine Idee, was er zaubern können soll
wer kennt ihn nicht, den Mystiker aus Metall und Magie, der mithilfe von Gegenständen Zauber wirkt, je nach dem welchen Gegenstand er gerade in der Hand hält.
Ziel dieses Tutorials ist es, dass der Mystiker mit einer Rüstung von jetzt an Steinschild zaubern kann.
fangen wir an:
als erstes kopieren wir den Mystiker aus dem Metall und Magie Pack heraus, damit wir ihn ändern können ohne das komplette pack zu ändern.
Ist das getan, suchen wir uns den gegenstand, besser gesagt seine ID.
1. ID der Rüstung: ARMR
danach öffnen wir den Script des Mystikers und scrollen bis ganz an das ende.
Dort fügen wir folgende Funktionen ein:
- Code:
-
private func ActivateMystic(pClonk)
{
}
private func MysticTime()
{
}
so, nun müssen wir dem Mystiker aber auch noch sagen, womit er denn zaubern soll. Fügen wir also an die Namen der Funktionen die ID des Gegenstands an:
- Code:
-
private func ActivateMysticARMR(pClonk)
{
}
private func MysticTimeARMR()
{
}
somit kann der Mystiker nun aus einer Rüstung zaubern. Was aber noch nicht festgelegt wurde ist, was er denn nun zaubern kann und wie lange der zauber braucht, um sich wieder aufzuladen.
Kurze Erklärung:
- Code:
-
private func ActivateMysticARMR(pClonk)
{
}
diese Funktion wird aufgerufen, wenn man mit dem Mystiker "doppelgraben" drückt. Dann wird etwas zurückgegeben, was entweder der Zauber ist oder, wenn man mit dem objekt nichts zaubern kann, wird das objekt aktiviert als hätte man ganz normal "doppelgraben" gedrückt.
- Code:
-
private func MysticTimeARMR()
{
}
in dieser Funktion wird später die Zeit zurückgegeben, die der Zauber braucht, um sich wieder aufzuladen.
fahren wir fort:
- Code:
-
private func ActivateMysticARMR(pClonk)
{
return CreateObject(MSSH,0,0,GetOwner(pClonk))->Activate(pClonk);
}
hier wird der Befehl zurückgegeben, der ausgeführt wird beim Zaubern. in diesem Fall wird das Objekt "MSSH" erstellt (der Steinschild-Zauber) und der Zauber wird vom Mystiker aktiviert und damit gezaubert.
- Code:
-
private func MysticTimeARMR()
{
return 36*70;
}
dies gibt die Frames zurück, die benötigt werden zum wiederaufladen. Und die Framezahl wird mit 36 multipliziert, damit man auf die Zahl in Sekunden kommt. In diesem Fall dauert das wiederaufladen also 70 Sekunden (müsste zumindest so sein, so hab ich diese Funktion bisher immer verstanden)
Damit wäre der Mystiker nach dem speichern bereit für einen Test:
Wie man sieht, funktioniert alles prima.
kommen wir nun zum letzten Teil des Tutorials:
ein Zauber, der nicht als eigenes Objekt existiert wie unser Steinschild-Zauber von vorhin. Man nehme nur das "Objekte Zurückschleudern" der Kohle.
- Code:
-
private func ActivateMysticCOAL(pClonk)
{
Sound("Magic*");
Sound("Rip", 0, pObj);
CastParticles ("NoGravSpark", 10, 20, 0, 0, 100, 150, RGB(180,150,150), RGB(180,150,150));
// Fliegende Objekte umkehren
for(var pObj in FindObjects(Find_OCF(OCF_HitSpeed1), Find_NoContainer(), Find_Category(C4D_Object), Find_Distance(150)))
{
SetSpeed(-GetXDir(pObj),-GetYDir(pObj), pObj);
CreateParticle("NoGravSpark", AbsX(GetX(pObj)), AbsY(GetY(pObj)), 0, 0, 150, RGB(180,150,150));
}
return 1;
}
private func MysticTimeCOAL()
{
return 36*3;
}
wie man sieht, kann man auch ganze scriptzeilen in die Funktion schreiben und dann "1" zurückgeben (dadurch wird alles weitere, was normalerweise bei einem Druck auf Doppelgraben ausgeführt wird, sozusagen "abgefangen", also z.B. das Fällen von Bäumen.). Tut man das, wird der gesamte Script ausgeführt beim zaubern.