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

Austausch | 
 

 Effekte - Timer ohne DefCore-Änderungen - Flinti Tutorial 1

Vorheriges Thema anzeigen Nächstes Thema anzeigen Nach unten 
AutorNachricht
Flinti
Kadett
Kadett


Männlich Alter : 24
Anmeldedatum : 07.04.09

BeitragThema: Effekte - Timer ohne DefCore-Änderungen - Flinti Tutorial 1   Do Mai 21, 2009 10:16 pm

Voraussetzungen
-Funktionen (Definition, Aufruf, Parameter)
-Timer in der DefCore definieren
-Kommentare

__________________________________________________________

Schonmal darüber geärgert, dass es keine DefCore- und ActMap-Appendtos gibt? Ihr braucht trotzdem einen Timer? So geht's!


Zuerst müsst ihr einen Effektnamen aussuchen. Achtet auf sinnvolle Namesgebung! Ein Effekt namens "bla" macht nicht viel Sinn. In diesem Tutorial nenne ich den Effekt "IntTutorialEffect". Ein vorangestelltes "Int" signalisiert einen internen Effekt. Weiteres in der Doku nachlesen oder auf das nächste Tutorial warten.

Aber beginnen wir! Zuerst wollen wir das Grundgerüst aufsetzen. Für einen reinen, obiektinternen Timer-Effekt, der nach Zerstörung/Entfernung nicht mehr weiter besteht, bietet sich folgendes an:

Code:


//Dies ist unsere "Timer-Funktion"

protected func Fx*Timer (object pTarget)
{
//Das passiert bei jedem Timer-Intervall
}


Dies ist das reine Grundgerüst unseres Timer-Effektes. (Natürlich sind Effekte noch viel vielseitiger - aber dazu später mehr). Jetzt müssen wir nurnoch das Sternchen (*) durch unseren Effektnamen ersetzen und die Anweisungen, die bei jedem Timer-Intervall ausgeführt werden, einfügen. Dabei repräsentiert 'pTarget' das Objekt, das der Timer "trifft", wie bspw. ein Partikeleffekt. Machen wir eine Manaregeneration!

Code:


protected func FxIntTutorialEffectTimer (object pTarget)
{
//Unser Zielobjekt des Timers regeneriert Mana
DoMagicEnergy(1, pTraget);
}


Jetzt haben wir aber ein Problem. Der Effekt ist noch gar nicht gestartet! Jetzt müsst ihr euch überlegen, wann der Effekt gestartet werden soll. In diesem Fall werden wir ihn in Initialize() starten - bei der Erstellung des Objektes! Dazu benötigen wir die Funktion "AddEffect (string szEffectName, object pTarget, int iPrio, int iTimerIntervall, object pCmdTarget)". Das scheint auf den ersten Blick sehr kryptisch. Also lasst uns die Parameter aufschlüsseln!


AddEffect (string szEffectName, object pTarget, int iPrio, int iTimerIntervall, object pCmdTarget)


szEffectName: Ist der Effektname, den wir für das Sternchen oben eingesetzt haben. Also in diesem Falle "Int TutorialEffect"

pTarget: Ist das Ziel des Timers. Ihr werdet wohl "this" am häufigsten angeben: Das aufrufende Objekt selbst! Dies ist auch der Parameter 'pTarget' in der Timer-Funktion.

iPrio: Hierzu später mehr. Eine simple, einfache und tolle '1' sollte hier genügen.

iTimerIntervall: Der Intervall des Timers! Dies kennt ihr schon von 'TimerCall' in der DefCore. Der Intervall bestimmt die Zeit, in der die Timer-Funktion regelmäßig aufgerufen wird.

pCmdTarget: Bestimmt das Objekt, in dem wir unsere Timer-Funktion hineingeschrieben haben. Ein "this" sollte hier ebenfall genügen! (Alternativ könnt ihr die Timerfunktion auch im Szenarioscript als 'global' deklarieren und hier '0' angeben)


So sieht unsere Initialize()-Funktion also jetzt aus:
Code:

protected func Inittialize()
{
//Wir fügen den Effekt "IntTutorialEffect" hinzu, der alle 2 Frames "FxIntTutorialEffectTimer" aufruft,
//da wir als Intervall 2 angegeben haben. Dieser Aufruf erfolgt in diesem Objekt.
AddEffect("IntTutorialEffect", this, 1, 2, this)
}

So. Die Timerfunktion befindet sich perfekterweise schon im Objekt, nun auch die Initialize-Funktion. So sollte das jetzt ungefähr aussehen:

Code:

proetcted func FxIntTutorialEffectTimer (object pTarget)
{
//Unser Zielobjekt des Timers regeneriert Mana
Domagicenergy(1, pTarget);
}

protected func Inittialize()
{
//Wir fügen den Effekt "IntTutorialEffect" hinzu, der alle 2 Frames "FxIntTutorialEffectTimer" aufruft,
//da wir als Intervall 2 angegeben haben. Dieser Aufruf erfolgt in diesem Objekt.
addeffect("IntTutorialEffect", this, 1, 2, this);
}



So. Dies ist das Ende meines Tutorials. Ich hoffe, ihr konntet damit etwas anfangen und eure eigenen, eleganten Timer erstellen.

WICHTIG: In den fertigen Scripts habe ich Fehler eingebaut Razz. Dies wird euch dazu bewegen, nichts außer die Vorlagen zu kopieren. Vorlagen wird auch ein erfahrener Scripter kopieren, um sich Schreibarbeit zu ersparen Very Happy


Das nächste Tutorial über Effekte zeigt euch, wie ihr eigene Zauber erstellen könnt!


Zuletzt von Flinti am So Okt 04, 2009 12:49 am bearbeitet; insgesamt 5-mal bearbeitet
Nach oben Nach unten
Benutzerprofil anzeigen
Gamer
Staatsrat
Staatsrat
avatar

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

BeitragThema: Re: Effekte - Timer ohne DefCore-Änderungen - Flinti Tutorial 1   Do Mai 21, 2009 10:19 pm

Lustig^^
Inittialize()
Das mal zu Initialize() (ohne doppel "t")
Endlich check ich mal Effekte! DANKE!

_________________
Star Wars Projekt Homepage: http://sites.google.com/site/clonkprojekte/star-wars

Das Burg Projekt.................................................................... Schaut doch mal im Super-Mario Clonk Editon Forum vorbei!
Nach oben Nach unten
Benutzerprofil anzeigen http://www.gamer95.npage.de/
Flinti
Kadett
Kadett


Männlich Alter : 24
Anmeldedatum : 07.04.09

BeitragThema: Re: Effekte - Timer ohne DefCore-Änderungen - Flinti Tutorial 1   Do Mai 21, 2009 10:20 pm

>In den fertigen Scripts haben sich Fehler eingeschlichen. Dies wird euch dazu bewegen, nichts außer die Vorlagen zu kopieren

Wink



Gern geschehen, übrigens!
Nach oben Nach unten
Benutzerprofil anzeigen
Flinti
Kadett
Kadett


Männlich Alter : 24
Anmeldedatum : 07.04.09

BeitragThema: Re: Effekte - Timer ohne DefCore-Änderungen - Flinti Tutorial 1   Do Mai 21, 2009 10:29 pm

Ich habe mich doch bemüht, Fehler einzubauen Sad
Nach oben Nach unten
Benutzerprofil anzeigen
Mega Hazard
Staatsrat
Staatsrat
avatar

Männlich Alter : 25
Ort : Brunswiek *helllau*
Anmeldedatum : 24.01.08

BeitragThema: Re: Effekte - Timer ohne DefCore-Änderungen - Flinti Tutorial 1   Fr Mai 22, 2009 1:05 am

Zum Titel möchte ich mal folgendes sagen:

Schedule bzw. ScheduleCall machen das viel einfacher.

_________________
"The 1337 2[_]1€z, but u don't know..."
Nach oben Nach unten
Benutzerprofil anzeigen http://megahazard.lima-city.de/Main.htm
Flinti
Kadett
Kadett


Männlich Alter : 24
Anmeldedatum : 07.04.09

BeitragThema: Re: Effekte - Timer ohne DefCore-Änderungen - Flinti Tutorial 1   Fr Mai 22, 2009 1:47 am

Ist aber letztendlich auch nichts anderes als ein Effekt - außerdem möchte ich hiermit auf mein nächstes Tutorial weiterleiten :-)
Nach oben Nach unten
Benutzerprofil anzeigen
Simsi
Staatssekretär
Staatssekretär
avatar

Männlich Alter : 25
Ort : Vaihingen/Enz
Anmeldedatum : 30.03.08

BeitragThema: Re: Effekte - Timer ohne DefCore-Änderungen - Flinti Tutorial 1   Fr Mai 22, 2009 11:17 am

Geniale idee mit den fehlern. hab mich zuerst auch geärgert, aber dann hab ichs unten gelesen...

lasst uns auf einen zweiten teil hoffen Very Happy

_________________
Copy this into your signature to have it in your signature.
Nach oben Nach unten
Benutzerprofil anzeigen
Yasu
Oberst
Oberst
avatar

Anmeldedatum : 11.12.08

BeitragThema: Re: Effekte - Timer ohne DefCore-Änderungen - Flinti Tutorial 1   Mo Jun 29, 2009 2:00 pm

ja gel ... wo bleibt das? Will haben! xD
Nach oben Nach unten
Benutzerprofil anzeigen http://operation-rising-sun.forumieren.info
Flinti
Kadett
Kadett


Männlich Alter : 24
Anmeldedatum : 07.04.09

BeitragThema: Re: Effekte - Timer ohne DefCore-Änderungen - Flinti Tutorial 1   Sa Jul 11, 2009 11:46 pm

Hm...wenig Zeit..andere Clonkprojekte...spätestens in 4 Wochen, frühestens in einer...
Nach oben Nach unten
Benutzerprofil anzeigen
Gesponserte Inhalte




BeitragThema: Re: Effekte - Timer ohne DefCore-Änderungen - Flinti Tutorial 1   

Nach oben Nach unten
 
Effekte - Timer ohne DefCore-Änderungen - Flinti Tutorial 1
Vorheriges Thema anzeigen Nächstes Thema anzeigen Nach oben 
Seite 1 von 1
 Ähnliche Themen
-
» Benachrichtigung bei Freundschaftsanfrage ohne Module
» Text kopieren ohne Links??
» Forum selbst gestalten ohne html-Kenntnisse
» Code temporär deaktivieren ohne löschen (Kommentar-Befehl?)
» Könne Gäste auch ohne Anmeldung....?

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