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  

 

 Eigene Befehle erstellen

Nach unten 
+9
Faby
Teehee
Patta
Gamer
Flinti
Toastbrot
Bowserkoopa
Voltago
Pitri
13 verfasser
Gehe zu Seite : 1, 2  Weiter
AutorNachricht
Pitri
Feldmarschall
Feldmarschall
Pitri


Männlich Alter : 30
Ort : Karlsruhe
Anmeldedatum : 02.03.09

Eigene Befehle erstellen Empty
BeitragThema: Eigene Befehle erstellen   Eigene Befehle erstellen EmptyMo Nov 09, 2009 4:36 pm

Jeder kennt das: Hazard hat unendlich viele neue Befehle, die es im Originalpaket gar nicht gibt. Ich habe mich mal ein wenig damit auseinandergesetzt und habe erfahren wie das Erstellen von Befehlen geht (zumindest mal inerhalb eines Szenarios. Alles weitere muss man wahrscheinlich mit System.c4g machen ... blablabla)!

Ihr kennt auch sicher den tollen neuen Spawnpoint von Hazard. Manchmal will ich ein Szenario machen, in dem Spawnpoints herrschen und für Nachschub sorgen. Doof nur, dass man dann das ganze Hazardpack laden muss. Und die Spawnpoints funltionieren ohne das Hazard-System nicht richtig. Also benutze ich oft den Spawnpoint vom Alten Hazardpack. Doch manchmal platziere ich zig-Tausend Spawnpoints in einem Szenario.

Und so kann man sich Tipp-Arbeit ersparen:

- Man erstellt eine globale Funtion, die wie euer gewünschter Befehl heißt:
- Die Globale Funktion kann man in Jedem Script verwenden, sofern sie geladen ist!

Code:
#strict 2

global func Spawn()
{
  return(1);
}

- Als nächstes wird sie mit den Eingabemöglichkeiten für die Werte bestückt
- Die Schlüsselworte wie id, int, string... spielen eine wichtige Rolle (warum, bitte unten lesen)!

Code:
#strict 2

global func Spawn(id c4id, int iXOffset, int iYOffset, int iOwner)
{
  return(1);
}

- Toll! Aber wass soll die Funktion jetzt machen? Dafür werden die Werte eingefügt:

Code:
#strict 2

global func Spawn(id c4id, int iXOffset, int iYOffset, int iOwner)
{
  CreateObject(_SPW,iXOffset,iYOffset,iOwner) -> CreateContents(c4id);
  return(1);
}

Wenn alles fertig ist, kann ich
Code:
CreateObject(_SPW,100,100,NO_OWNER) -> CreateContents(FLNT);
mit folgendem ersetzen:
Code:
Spawn(FLNT,100,100,NO_OWNER);

Hier wird ein besitzerloser Spawnpoint mit einem Flint an der Position 100/100 erstellt. Und je mehr Spawnpoints gesetzt werden, desto mehr Tippersparnis hat man dadurch.

Parametertypen:
Indem man vor den Parameter ein int, string, bool, array, id oder object setzt, hat man eine Hilfe bei der Errorbehebung! Wenn man einen falschen typ einsetzt, kommt ein error!
Code:
ERROR: Call to [Befehl] parameter 1: got [Typ1] but expected [Typ2]!


------------------------------------------
Das war mein erstes Tutorial. Ich hoffe, ihr versteht es gut.

Wer einen Rechtschreib- oder Scriptfehler findet, darf ihn ruhig posten (Ich lege sehr viel Wert auf richtige Rechtschreibung und vorallem auf korrekte Scripts)!


Zuletzt von Pitri am Mi Jun 02, 2010 11:41 pm bearbeitet; insgesamt 2-mal bearbeitet
Nach oben Nach unten
http://www.clonk-fanpage.lima-city.de
Voltago
Brigadegeneral
Brigadegeneral
Voltago


Anmeldedatum : 25.09.09

Eigene Befehle erstellen Empty
BeitragThema: Re: Eigene Befehle erstellen   Eigene Befehle erstellen EmptyMo Nov 09, 2009 7:28 pm

Wieder mal ein Fortgeschrittenen Tutuorial das ich gut verstehe Very Happy
Nach oben Nach unten
Bowserkoopa
Staatsrat
Staatsrat
Bowserkoopa


Männlich Alter : 30
Anmeldedatum : 21.12.08

Eigene Befehle erstellen Empty
BeitragThema: Re: Eigene Befehle erstellen   Eigene Befehle erstellen EmptyMo Nov 09, 2009 8:18 pm

Ist doch umso besser. Wollte schon immer mal eigene Befehle machen können. Erspart man sich einiges beim tippen. Ne Auflistung mit allen Schlüsselwörtern(string usw) wäre evt. noch nützlich. Im Grunde bestimmt man ja nur die Variablen im Skript, wenn man da genau sein will.
Nach oben Nach unten
Pitri
Feldmarschall
Feldmarschall
Pitri


Männlich Alter : 30
Ort : Karlsruhe
Anmeldedatum : 02.03.09

Eigene Befehle erstellen Empty
BeitragThema: Re: Eigene Befehle erstellen   Eigene Befehle erstellen EmptyMo Nov 09, 2009 8:20 pm

Bowserkoopa schrieb:
Ne Auflistung mit allen Schlüsselwörtern(string usw) wäre evt. noch nützlich.

Mehr weiß ich im Moment auch nicht wirklich. da ist noch was mit sz, aber ich find das in der Doku nich...


... Ich werd mich da mal noch Schlau machen und es Oben Adden


Zuletzt von Pitri am Mo Nov 09, 2009 8:36 pm bearbeitet; insgesamt 1-mal bearbeitet
Nach oben Nach unten
http://www.clonk-fanpage.lima-city.de
Toastbrot
Kadett
Kadett
Toastbrot


Männlich Anmeldedatum : 10.03.09

Eigene Befehle erstellen Empty
BeitragThema: Re: Eigene Befehle erstellen   Eigene Befehle erstellen EmptyMo Nov 09, 2009 8:26 pm

Pitri schrieb:
Bowserkoopa schrieb:
Ne Auflistung mit allen Schlüsselwörtern(string usw) wäre evt. noch nützlich.

Mehr weiß ich im Moment auch nicht wirklich. da ist noch was mit sz, aber ich find das in der Doku nich...

Das sz hat nichts zu bedeuten das ist nur ein sogenanntes Präfix. In großen scripten mit vielen Variablen ist es sinnvoll Präfixe wie sz für string und i Integer oder andere zu verwenden um bei einer Variable geneu zu wissen welchen Typ sie hat.
Nach oben Nach unten
Flinti
Kadett
Kadett



Männlich Alter : 31
Anmeldedatum : 07.04.09

Eigene Befehle erstellen Empty
BeitragThema: Re: Eigene Befehle erstellen   Eigene Befehle erstellen EmptyMo Nov 09, 2009 8:46 pm

Du solltest auch noch private, protected und public erwähnen

Zitat :
Die Schlüsselworte wie id, int, string... spielen dabei eine wichtige Rolle:
Schön, dass sie das tuen. Du solltest ihre genaue Funktion noch erläutern, es geht nämlich theoretisch auch ohne. Folgende Schlüsselworte gibt's:

int
object
id
bool
array
string


Sonst ein schönes Tutorial, imho passt das aber besser in den Anfängerbereich rein Smile

PS: Ich wage jetzt einfach mal zu behaupten, dass jeder von euch schon mindestens 20 Funktionen erstellt hat Wink


Zuletzt von Flinti am Mo Nov 09, 2009 8:54 pm bearbeitet; insgesamt 1-mal bearbeitet (Grund : pözer fehler)
Nach oben Nach unten
Gamer
Staatsrat
Staatsrat
Gamer


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

Eigene Befehle erstellen Empty
BeitragThema: Re: Eigene Befehle erstellen   Eigene Befehle erstellen EmptyMo Nov 09, 2009 8:51 pm

Flinti schrieb:
Du solltest auch noch private, protected und public erwähnen

int
object
id
bool
array

Und was ist mit "string"? Das gibts doch auch noch! *Mecker Mecker*
Nach oben Nach unten
http://www.gamer95.npage.de/
Flinti
Kadett
Kadett



Männlich Alter : 31
Anmeldedatum : 07.04.09

Eigene Befehle erstellen Empty
BeitragThema: Re: Eigene Befehle erstellen   Eigene Befehle erstellen EmptyMo Nov 09, 2009 8:54 pm

Ah! Mist! Danke xD

geändert.
Nach oben Nach unten
Bowserkoopa
Staatsrat
Staatsrat
Bowserkoopa


Männlich Alter : 30
Anmeldedatum : 21.12.08

Eigene Befehle erstellen Empty
BeitragThema: Re: Eigene Befehle erstellen   Eigene Befehle erstellen EmptyMo Nov 09, 2009 10:23 pm

Was noch interessant ist zu erwähnen: Wenn man Parameter leer lässt, sollen sie einen vorgegebenen Wert erhalten.
Ansonsten ein wirklich sehr schönes Tut
Nach oben Nach unten
Flinti
Kadett
Kadett



Männlich Alter : 31
Anmeldedatum : 07.04.09

Eigene Befehle erstellen Empty
BeitragThema: Re: Eigene Befehle erstellen   Eigene Befehle erstellen EmptyDi Nov 10, 2009 2:22 pm

Zitat :
Was noch interessant ist zu erwähnen: Wenn man Parameter leer lässt, sollen sie einen vorgegebenen Wert erhalten.
Wenn du bei einem Funktionsaufruf einen Parameter weglässt, ist er Null. Was meinst du? xD
Nach oben Nach unten
Patta
Großadmiral
Großadmiral
Patta


Männlich Alter : 30
Anmeldedatum : 22.05.09

Eigene Befehle erstellen Empty
BeitragThema: Re: Eigene Befehle erstellen   Eigene Befehle erstellen EmptyDi Nov 10, 2009 4:15 pm

er meint es so glaub ich:
wenn man beim Beispiel aus dem Tut z.B. nur
Code:
Spawn(FLNT,100,100);

soll der owner immer eins (1) sein. also wenn man was dahin schreibt für iowner soll es halt eben den hingeschriebenen Wert haben sonst immer 1.
Nach oben Nach unten
http://sites.google.com/site/clonkprojekte/star-wars
Flinti
Kadett
Kadett



Männlich Alter : 31
Anmeldedatum : 07.04.09

Eigene Befehle erstellen Empty
BeitragThema: Re: Eigene Befehle erstellen   Eigene Befehle erstellen EmptyDi Nov 10, 2009 4:43 pm

Dann denkt man daran, dass ein Parameter Null ist, wenn nichts angegeben wurde, und setzt den parameter, sollte er Null sein, eben auf eins Smile
Nach oben Nach unten
Bowserkoopa
Staatsrat
Staatsrat
Bowserkoopa


Männlich Alter : 30
Anmeldedatum : 21.12.08

Eigene Befehle erstellen Empty
BeitragThema: Re: Eigene Befehle erstellen   Eigene Befehle erstellen EmptyDi Nov 10, 2009 5:52 pm

Also beispielsweise wenn man für irgendwas die Geschwindigkeit setzen will und die ist beispielsweise 100 wenn man den Parameter nicht angibt. Irgendwie ging das, aber ich weiß nicht mehr wie.
Nach oben Nach unten
Flinti
Kadett
Kadett



Männlich Alter : 31
Anmeldedatum : 07.04.09

Eigene Befehle erstellen Empty
BeitragThema: Re: Eigene Befehle erstellen   Eigene Befehle erstellen EmptyDi Nov 10, 2009 5:58 pm

if(![geschwiparam])
[geschwiparam] = 100;
Nach oben Nach unten
Bowserkoopa
Staatsrat
Staatsrat
Bowserkoopa


Männlich Alter : 30
Anmeldedatum : 21.12.08

Eigene Befehle erstellen Empty
BeitragThema: Re: Eigene Befehle erstellen   Eigene Befehle erstellen EmptyDi Nov 10, 2009 7:10 pm

Achja, genau das wars Smile
Nach oben Nach unten
Teehee
Brigadegeneral
Brigadegeneral
Teehee


Männlich Alter : 27
Ort : Irgendwo im Nirgendwo :O
Anmeldedatum : 28.09.09

Eigene Befehle erstellen Empty
BeitragThema: Re: Eigene Befehle erstellen   Eigene Befehle erstellen EmptyMi Nov 11, 2009 9:50 pm

... Und wie macht man dass eine Funktion dann z.B. Obbject ist? Wie zum Beispiel object CreateObject?
Nach oben Nach unten
Gamer
Staatsrat
Staatsrat
Gamer


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

Eigene Befehle erstellen Empty
BeitragThema: Re: Eigene Befehle erstellen   Eigene Befehle erstellen EmptyMi Nov 11, 2009 9:53 pm

Wie meinst du das??
Eine funktion z.B Objects ist CreateObject ich versteh nur Bahnhof!
Nach oben Nach unten
http://www.gamer95.npage.de/
Bowserkoopa
Staatsrat
Staatsrat
Bowserkoopa


Männlich Alter : 30
Anmeldedatum : 21.12.08

Eigene Befehle erstellen Empty
BeitragThema: Re: Eigene Befehle erstellen   Eigene Befehle erstellen EmptyMi Nov 11, 2009 10:01 pm

Ich verstehe es auch nicht ganz. Man könnte ja noch nen Befehlstopic machen, in dem man eigene Befehle reinschreiben kann, die andere dann auch verwenden können. Also eigens erstelle Befehle für alle Mitglieder.
Nach oben Nach unten
Teehee
Brigadegeneral
Brigadegeneral
Teehee


Männlich Alter : 27
Ort : Irgendwo im Nirgendwo :O
Anmeldedatum : 28.09.09

Eigene Befehle erstellen Empty
BeitragThema: Re: Eigene Befehle erstellen   Eigene Befehle erstellen EmptyMi Nov 11, 2009 10:01 pm

Also, es gibt ja z.B.

func Banane(int Anzahl)

aber, wie macht man dass Banana jetzt zum Beispiel als int benutzt werden kann udn keine fehlermeldung wird? oder geht das nicht?
Nach oben Nach unten
Gamer
Staatsrat
Staatsrat
Gamer


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

Eigene Befehle erstellen Empty
BeitragThema: Re: Eigene Befehle erstellen   Eigene Befehle erstellen EmptyMi Nov 11, 2009 10:05 pm

Zitat :

aber, wie macht man dass Banana jetzt zum Beispiel als int benutzt werden kann

Achso ich glaube du meinst sowas wie
Code:

func Banane(int Anzahl){
/*was weiß ich machen*/
return(Anzahl); /*Zahl zurückgeben wenn man diese Funktion aufruft */
 }
Nach oben Nach unten
http://www.gamer95.npage.de/
Bowserkoopa
Staatsrat
Staatsrat
Bowserkoopa


Männlich Alter : 30
Anmeldedatum : 21.12.08

Eigene Befehle erstellen Empty
BeitragThema: Re: Eigene Befehle erstellen   Eigene Befehle erstellen EmptyMi Nov 11, 2009 10:06 pm

Versteh ich jetzt immer noch nicht ganz, aber du meinst wohl einen Parameter als Zahl erstellen oder? Also bei Banane(5); sollen dann 5 Bananen erzeugt werden?
Nach oben Nach unten
Teehee
Brigadegeneral
Brigadegeneral
Teehee


Männlich Alter : 27
Ort : Irgendwo im Nirgendwo :O
Anmeldedatum : 28.09.09

Eigene Befehle erstellen Empty
BeitragThema: Re: Eigene Befehle erstellen   Eigene Befehle erstellen EmptyMi Nov 11, 2009 10:07 pm

Macht man so dass man dann zb bei MakeCrewMember() ne funktion als objetc benutzen kann? wird ja davon verlangt

Edit: Der C4Scripter sagt ja z.B. auch
Code:
object CreateObject(...
Nach oben Nach unten
Gamer
Staatsrat
Staatsrat
Gamer


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

Eigene Befehle erstellen Empty
BeitragThema: Re: Eigene Befehle erstellen   Eigene Befehle erstellen EmptyMi Nov 11, 2009 10:23 pm

Ich glaube das ist davon abhängig was bei return() einer Funktion drinnen steht..
Weil CreateObject() wenn man es z.B in der Engine ausführt gibt dann sowas wie
CreateObject(ROCK);
->Stein #143
zurück, der Rückgabewert ist hier als eindeutig in jedem Fall ein Obekt.
Bei anderen Funktionen (Random() z.B) ist bei return() eine Zahl (nähmlich die Zuffallszahl) und deshalb heißt es int Random() weil eben in der return() eine Zahl steht.
100 Pro weiß ich das aber nicht, also keine Garantie auf Richtigkeit Wink
Nach oben Nach unten
http://www.gamer95.npage.de/
Flinti
Kadett
Kadett



Männlich Alter : 31
Anmeldedatum : 07.04.09

Eigene Befehle erstellen Empty
BeitragThema: Re: Eigene Befehle erstellen   Eigene Befehle erstellen EmptyMi Nov 11, 2009 11:33 pm

Zitat :
return()

return ist keine Funktion :'(
Nach oben Nach unten
Bowserkoopa
Staatsrat
Staatsrat
Bowserkoopa


Männlich Alter : 30
Anmeldedatum : 21.12.08

Eigene Befehle erstellen Empty
BeitragThema: Re: Eigene Befehle erstellen   Eigene Befehle erstellen EmptyDo Nov 12, 2009 5:35 pm

return gibt nur etwas zurück, beispielsweise 1/0 (Funktion existent oder nicht). Kann man aber auch anders verwenden, wenn es dann eine ID beispielweise zurück gibt. Ist aber eher die Ausnahme. Jetzt muss ich nur noch eine Idee für einen eigene Befehl kriegen, werde warscheinlich einige häufig gebrauchte Skriptteile in kurzer Form bringen.
Nach oben Nach unten
Gesponserte Inhalte





Eigene Befehle erstellen Empty
BeitragThema: Re: Eigene Befehle erstellen   Eigene Befehle erstellen Empty

Nach oben Nach unten
 
Eigene Befehle erstellen
Nach oben 
Seite 1 von 2Gehe zu Seite : 1, 2  Weiter
 Ähnliche Themen
-
» Explosionsgrafiken erstellen
» ziel erstellen
» Zauber erstellen
» Mystikerzauber erstellen
» Bomben erstellen

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