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  

 

 Zauber erstellen

Nach unten 
+6
Gamer
Mr. X
Wipfmagus
Stephan Borgs
Burning Thing
Toastbrot
10 verfasser
AutorNachricht
Toastbrot
Kadett
Kadett
Toastbrot


Männlich Anmeldedatum : 10.03.09

Zauber erstellen Empty
BeitragThema: Zauber erstellen   Zauber erstellen EmptyMi Jan 06, 2010 2:26 pm

Zauber erstellen:

Vorraussetzungen:
- Funktion
-Sin/Cos

Zauber sind ganz einfache Objecte man kann sie wie jedes andere Object auch mit CreateObject erstellen und man löst sie mittels Activate(object Caster) aus bzw. der Zauberer Ruft diese Funktion im Zauber aus.
Im einfachsten Fall könnte das so Aussehen:
Code:

//Erschaffe einen Clonk
var clonk;
clonk=CreateObject(CLNK,100,100,-1);
//Erschaffe einen Zauber und lasse ihn vom Clonk Zaubern
CreateObject(ZauberID,0,0,-1)->Activate(clonk);

Und der Code des Zaubers könnte in diesem Fall so aussehen:
Code:

  public func Activate(object Caster){
                Sound("Magic*");
                return(RemoveObject());
                                          }

Mit diesem tollen Zauber kann der Zauberer ein magisches Geräusch erzeugen.
Man kann aber auch beliebige andere dinge in die Funktion schreiben
um sinnvolle Ergebnisse zu erzielen dies ist nur ein einfaches Beispiel zur Demonstration.


Damit wären die Grundlagen geschaffen und wir können jetzt an einem richtigen Beispiel lernen
wie man überhaupt das Object erstellt.

Zuerst müssen wir ein neues Object machen und den Defcore ändern:
Defcore:
Spoiler:

Jetzt kann man noch Beschreibung und das Bild des Zaubers ändern und sich schließlich dem script widmen. Dieser Zauber soll sowohl gezielt als auch nicht gezielt verwendet werden können. Er soll einen Glühenden Hagel aus roten Partikeln in die gewählte richtung schleudern und auch über das Kombosystem Verfügbar sein.Zusätzlich soll er wenn man ein Stück Erde im Inventar hat die Farbe der Partikel zu grün ändern.

So wird das nacher aussehen:
Zauber erstellen Zauber11

Der script sieht so aus den werden wir gleich stück für stück durchgehen:
Zitat :

/*-- Ein nuer Zauber --*/

#strict 2

//Diese Funktion wird vom Zauberer Aufgerufen
public func Activate(object Caster)
{
//Magisches Geräusch
Sound("Magic*");
//prüfen ob der Zauberer Zielen kann
if (Caster->~DoSpellAim(this())) return true;
//Ansonsten gerade nach oben Zaubern
ActivateAngle(0);
//und Object löschen
RemoveObject();
}

//Diese Funktion wird vom Zauberer Aufgerufen falls er zielen
//kann in dem moment wo er den Zauber loslässt

public func ActivateAngle(object Caster,int Angle)
{
//Eine Variable die die Farbe der Partikel speichert
var color;
color=RGB(180,0,0);

//Falls der Zauberer einen Erdklumpen im Inventar hat
if(FindContents(ERTH,Caster)){
//Den Erdklumpen entfernen
RemoveObject(FindContents(ERTH,Caster));
//und die Farbe zu grün ändern
color=RGB(0,180,0);
}

//In einer for schleife Particle erzeugen und in die angegebene Richtung schleudern
for(var i=0;i<25;i++)
CreateParticle(
"PSpark", //Particle vom Typ PSpark erzeugen
0,0, // an der Position des Zaubers
Sin(Angle+RandomX(-10,10),10+Random(40)), //am winkel X-
-Cos(Angle+RandomX(-10,10),10+Random(40)), //und Y-Geschwindigkeit berechnen
80,color); //größe und Farbe

//Zauber löschen
return(RemoveObject());
}


//Diese Funktion muss wahr zurückgeben wenn der Zauber gezielt werden kann
public func IsAimerSpell() { return true; }
//Der Zauber ist im Kombomenu unter Feuer zu finden
public func GetSpellClass(object pMage) { return(FIRE); }
//Die Kombo ist Werfen-Werfen-Runter
public func GetSpellCombo(pMage) { return ("442"); }


Das meiste erklärt sich durch die Kommentare einige Stellen nenn ich aber nochmal:

if (Caster->~DoSpellAim(this())) return true;
Hier wird im Zauberer(Caster) die Funktion DoSpellAim mit dem ZAuber als Parameter aufgerufen, diese
gibt true zurück wenn der Zauberer den Zauber zielen konnte ansonsten gibt sie false zurück.Falls
sie true zurückgibt wird die Funktion Activate hier amgebrochen(return true;) ansonsten läuft sie weiter.

CreateParticle("PSpark",0,0,Sin(Angle+RandomX(-10,10),10+Random(40)),-Cos(Angle+RandomX(-10,10),10+Random(40))),80,color);
Zu den Parametern von CreateParticle kann man folgendes Sagen:
1)Name des Particles als string. Ich nehme PSpark weil der Schwerkraftsunabhändig ist
2&3)X/Y-Position hier 0 damit der Particle direkt über dem Zauber entsteht
4)X-Anfangsgeschwindigkeit wird aus dem Winkel mittels Sin berechnet. Der Winkel wird mittels RandomX leicht manipuliert und die geschwindigkeit mittels Random zufallsabhändig gemacht
5)wie bei Parameter4 nur -Cos weil es die Y-Geschwindigkeit ist
6)Größe des Partikles 80 ist in Ordnung
7)Farbe des Particles hier wird die Variable color eingesetzt die entweder Rot oder Grün darstellt

public func GetSpellClass(object pMage) { return(FIRE); }
public func GetSpellCombo(pMage) { return ("442"); }

Für das Kombomenu wichtig die erste Funktion legt fest welchem Element der Zauber angehört und die zweite wie die genaue Kombo ist.Für die erste kann man FIRE=Feuer EART=Erde WATR=Wasser und AIR1=Luft als return-Wert nehmen.Für die zweite setzt man einfach eine Dreistellige Zahl ein die die Kombo darstellt 1:Zurück; 2:Runter; 3:Vorwärts; 4:Werfen; 5:Springen; 6:Graben

Das ist dann auch schon alles was zu einem Zauber gehört jetzt sollte man auch andere Zauber selber entwickeln können.
Viel Spass.
Nach oben Nach unten
Burning Thing
Brigadegeneral
Brigadegeneral
Burning Thing


Männlich Alter : 26
Ort : Wien
Anmeldedatum : 07.06.09

Zauber erstellen Empty
BeitragThema: Re: Zauber erstellen   Zauber erstellen EmptyMi Jan 06, 2010 7:42 pm

Danke, genau sowas hatte ich mir gewünscht. Very Happy
Nach oben Nach unten
Stephan Borgs
Kadett
Kadett
Stephan Borgs


Männlich Alter : 29
Ort : Duisburg Meiderich
Anmeldedatum : 09.03.10

Zauber erstellen Empty
BeitragThema: Re: Zauber erstellen   Zauber erstellen EmptyDi Apr 13, 2010 1:03 pm

//Diese Funktion wird vom Zauberer Aufgerufen
public func Activate(object Caster)
{
//Magisches Geräusch
Sound("Magic*");
//prüfen ob der Zauberer Zielen kann
if (Caster->~DoSpellAim(this())) return true;
//Ansonsten gerade nach oben Zaubern
ActivateAngle(0);
//und Object löschen
RemoveObject();
}

Was ist denn, wenn ich hier RemoveObject weglassen würde?
Was wird dadurch überhaupt gelöscht
Die Erde ja nicht! Question
Nach oben Nach unten
Toastbrot
Kadett
Kadett
Toastbrot


Männlich Anmeldedatum : 10.03.09

Zauber erstellen Empty
BeitragThema: Re: Zauber erstellen   Zauber erstellen EmptyDi Apr 13, 2010 2:20 pm

Der Zauber wird dadurch gelöscht.Denn der ist ja auch nur ein Objekt das den Effect erzeugt und anschließend gelöscht werden muss.
Nach oben Nach unten
Stephan Borgs
Kadett
Kadett
Stephan Borgs


Männlich Alter : 29
Ort : Duisburg Meiderich
Anmeldedatum : 09.03.10

Zauber erstellen Empty
BeitragThema: Re: Zauber erstellen   Zauber erstellen EmptyDi Apr 13, 2010 3:00 pm

Ja, aber was passiert, wenn mans nicht löscht?
Nach oben Nach unten
Wipfmagus
Konteradmiral
Konteradmiral
Wipfmagus


Weiblich Alter : 28
Anmeldedatum : 06.03.10

Zauber erstellen Empty
BeitragThema: Re: Zauber erstellen   Zauber erstellen EmptySa Mai 29, 2010 10:28 pm

Dann ist das Zauberobjekt ewig in der Map, und so etwas frisst Performance, ist unschön gescriptet und könnte die Funktionalität anderer - und dieses - Scripts lahmlegen.
Nach oben Nach unten
Mr. X
Feldmarschall
Feldmarschall
Mr. X


Männlich Alter : 27
Ort : Schweiz/Baselland
Anmeldedatum : 23.02.10

Zauber erstellen Empty
BeitragThema: Re: Zauber erstellen   Zauber erstellen EmptyFr Jun 11, 2010 3:43 pm

irgendwie geht bei mir der Spoiler zur Defcore nicht
Nach oben Nach unten
http://www.klick-mich-blos-nicht.de.vu/
Gamer
Staatsrat
Staatsrat
Gamer


Männlich Alter : 28
Ort : In einem kleinen Dorf in Unterfranken (Bayern)
Anmeldedatum : 10.02.09

Zauber erstellen Empty
BeitragThema: Re: Zauber erstellen   Zauber erstellen EmptyFr Jun 11, 2010 4:13 pm

Ich bestätige das. Das geht auch i-wie bei allen anderen Spoilnern nichtmehr.. Egal welcher Beitrag. Was isn da faul? :O
Nach oben Nach unten
http://www.gamer95.npage.de/
NilsZ
Admiral
Admiral



Männlich Ort : Mein Rekord: 27 Punkte! :D
Anmeldedatum : 07.08.08

Zauber erstellen Empty
BeitragThema: Re: Zauber erstellen   Zauber erstellen EmptyFr Jun 11, 2010 4:22 pm

drückt einfach mal auf quote dann seht ihr was in dem Spoiler drinnen steht.
Nach oben Nach unten
Till
Fähnrich
Fähnrich
Till


Männlich Alter : 26
Ort : Friedenweiler
Anmeldedatum : 12.02.11

Zauber erstellen Empty
BeitragThema: Re: Zauber erstellen   Zauber erstellen EmptySa Feb 26, 2011 4:30 pm

wie mach ich das der zauber dann auch im editor bei "welche zauber gibt es" da sind?
Nach oben Nach unten
http://www.clonk.nuecom.de
Gamer
Staatsrat
Staatsrat
Gamer


Männlich Alter : 28
Ort : In einem kleinen Dorf in Unterfranken (Bayern)
Anmeldedatum : 10.02.09

Zauber erstellen Empty
BeitragThema: Re: Zauber erstellen   Zauber erstellen EmptySa Feb 26, 2011 4:36 pm

Category Wert richtig setzen.
Ein "|C4D_Magic" anhängen sollte genügen.

EDIT: Oh, ich seh grade, das alle Zauber nur Category=C4D_Magic drinnhaben.
Also einfach C4D_Magic setzen und mal F5 / F8 drücken zum reload.
Nach oben Nach unten
http://www.gamer95.npage.de/
Horst
Clonk
Clonk
Horst


Männlich Alter : 26
Anmeldedatum : 06.07.11

Zauber erstellen Empty
BeitragThema: Re: Zauber erstellen   Zauber erstellen EmptyFr Aug 12, 2011 7:36 pm

Ich wollte den Zauber ausprobieren. Aber auf einmal haben die Icons aller Objekte verrückt gespielt und ein Clonk hatte z.B. einen toten Baum als Icon.
Nach oben Nach unten
Magus111
Oberst
Oberst
Magus111


Männlich Alter : 27
Ort : Clonk Planet
Anmeldedatum : 01.01.09

Zauber erstellen Empty
BeitragThema: Re: Zauber erstellen   Zauber erstellen EmptyMo Aug 22, 2011 6:26 pm

Du benutzt nicht zufällig CE oder eine andere nicht aktuelle Clonk Version oder?
Nach oben Nach unten
Horst
Clonk
Clonk
Horst


Männlich Alter : 26
Anmeldedatum : 06.07.11

Zauber erstellen Empty
BeitragThema: Re: Zauber erstellen   Zauber erstellen EmptyFr Okt 14, 2011 3:19 pm

Ich benutze CE.ist das schlimm?
(konnte nicht eher antworten weil mein PC im A**** war)
Nach oben Nach unten
Horst
Clonk
Clonk
Horst


Männlich Alter : 26
Anmeldedatum : 06.07.11

Zauber erstellen Empty
BeitragThema: Re: Zauber erstellen   Zauber erstellen EmptyFr Okt 14, 2011 3:36 pm

Hi
Nach oben Nach unten
Horst
Clonk
Clonk
Horst


Männlich Alter : 26
Anmeldedatum : 06.07.11

Zauber erstellen Empty
BeitragThema: Re: Zauber erstellen   Zauber erstellen EmptyFr Okt 14, 2011 3:36 pm

von Horst
Nach oben Nach unten
Gamer
Staatsrat
Staatsrat
Gamer


Männlich Alter : 28
Ort : In einem kleinen Dorf in Unterfranken (Bayern)
Anmeldedatum : 10.02.09

Zauber erstellen Empty
BeitragThema: Re: Zauber erstellen   Zauber erstellen EmptyFr Okt 14, 2011 3:53 pm

Hm einfach mal CE neu installieren (vorher szens und key sichern) und schauen obs immernoch da ist. Wenn nicht, dann verrate uns mal die Spezifikationen deines PCs (Prozessor, Grafikkarte, RAM etc).
Nach oben Nach unten
http://www.gamer95.npage.de/
Horst
Clonk
Clonk
Horst


Männlich Alter : 26
Anmeldedatum : 06.07.11

Zauber erstellen Empty
BeitragThema: Re: Zauber erstellen   Zauber erstellen EmptyFr Okt 14, 2011 3:57 pm

das mit den "hi" und "von horst" war mein bruder. Wink ok mach ich
Nach oben Nach unten
Gesponserte Inhalte





Zauber erstellen Empty
BeitragThema: Re: Zauber erstellen   Zauber erstellen Empty

Nach oben Nach unten
 
Zauber erstellen
Nach oben 
Seite 1 von 1
 Ähnliche Themen
-
» Schwert mit Zauber
» Zauber auf ein Objekt
» Zauber mit Doppel-Graben

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