CNDG
Würden Sie gerne auf diese Nachricht reagieren? Erstellen Sie einen Account in wenigen Klicks oder loggen Sie sich ein, um fortzufahren.


Ein Forum, in dem sich neue Clonk Entwickler untereinander austauschen können.
 
StartseiteStartseite  PortalPortal  SuchenSuchen  Neueste BilderNeueste Bilder  AnmeldenAnmelden  LoginLogin  

 

 Mystikerzauber erstellen

Nach unten 
2 verfasser
AutorNachricht
Patta
Großadmiral
Großadmiral
Patta


Männlich Alter : 30
Anmeldedatum : 22.05.09

Mystikerzauber erstellen Empty
BeitragThema: Mystikerzauber erstellen   Mystikerzauber erstellen EmptySa Mai 29, 2010 4:21 pm

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.htm
das 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:


Mystikerzauber erstellen Screenshot009
Mystikerzauber erstellen Screenshot010
Mystikerzauber erstellen Screenshot011
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.


Zuletzt von Patta am So Mai 30, 2010 1:37 pm bearbeitet; insgesamt 1-mal bearbeitet
Nach oben Nach unten
http://sites.google.com/site/clonkprojekte/star-wars
Limeox
Admiral
Admiral
Limeox


Männlich Anmeldedatum : 25.04.10

Mystikerzauber erstellen Empty
BeitragThema: Re: Mystikerzauber erstellen   Mystikerzauber erstellen EmptySa Mai 29, 2010 5:27 pm

Ganz gutes Tutorial.

Ein paar Dinge sind mir aber aufgefallen.
- Es wird der gesamte Mystiker kopiert, aber nur einige Zeilen drangehängt. Ein Appendto wäre um einiges sinnvoller.
- Eine Sekunde hat im Optimalfall 38 Frames. Razz
- return 1 sorgt nicht dafür, dass alles ausgeführt wird. Bei diesen Funktionen wird durch das Zurückgeben eines wahren Wertes nur die engine-interne Verarbeitung abgefangen, also zB das Fällen eines Baumes per Doppelgraben.

Aber sonst gut erklärt.
Nach oben Nach unten
Patta
Großadmiral
Großadmiral
Patta


Männlich Alter : 30
Anmeldedatum : 22.05.09

Mystikerzauber erstellen Empty
BeitragThema: Re: Mystikerzauber erstellen   Mystikerzauber erstellen EmptySo Mai 30, 2010 1:36 pm

ok, also das mit der sekunde und den 38 frames ist mir neu Very Happy
sicher, ein append wäre auch gegangen, da geb ich dir recht, hab ich nur im moment als ich das Tutorial geschrieben habe nicht dran gedacht^^
und zu return 1:
du mienst sicherlich diesen Satz:
Code:

wie man sieht, kann man auch ganze scriptzeilen in die Funktion schreiben und dann "1" zurückgeben. Tut man das, wird der gesamte Script ausgeführt beim zaubern.
der letzte Teil davon bezog sich nciht nur auf das "Return 1" sondern generell darauf, einen größeren Scriptteil zu schreiben in die Funktion und am Ende "1" zurückzugeben. schreib ich aber am besten wohl noch nen Satz zu dem "return 1" hin.
Nach oben Nach unten
http://sites.google.com/site/clonkprojekte/star-wars
Gesponserte Inhalte





Mystikerzauber erstellen Empty
BeitragThema: Re: Mystikerzauber erstellen   Mystikerzauber erstellen Empty

Nach oben Nach unten
 
Mystikerzauber erstellen
Nach oben 
Seite 1 von 1
 Ähnliche Themen
-
» Explosionsgrafiken erstellen
» Bomben erstellen
» Spawn erstellen
» Eigenen Clonkfilm erstellen

Befugnisse in diesem ForumSie können in diesem Forum nicht antworten
CNDG :: Anfänger :: Tutorials-
Gehe zu: