Hi und Willkommen zu meinem ersten Tutorial, wie man Einem Clonk per #appendto ein Spezialmenü erstellt.
Hier haben wir zwei Möglichkeiten: 1.Wir erstellen eine System.c4g 2.Wir erstellen ein neues Objekt
Wie wir uns auch entscheiden, wir brauchen auf jeden Fall ein Skript mit einem appendto: So weit, so gut. Aber ein Spezialmenü nützt uns nicht, wenn wir es nicht aufrufen können, daher müssen wir den Funktionsknopf fürs Kontextmenü schaffen, dies machen wir mit einer Funktion:
Zitat :
protected func ContextSpezial(){ //schon mal die Funktion [Spezialmenü|Image=FLAG] Spezial(); //Damit die Spezialmenü-Funktion aufgerufen return 1;//Funktion wird "returnd" }
Jetzt haben wir schon mal den Funktionsknopf geschrieben.
Widmen wir uns jetzt mal den Menü-Befehlen:
Die Doku schrieb:
int CreateMenu (id idSymbol, object pMenuObject, object pCommandObject, int iExtra, string szCaption, int iExtraData, int iStyle, bool fPermanent, id idMenuID);
Interessieren brauchen wir uns nur für die ersten zwei Parameter: idSymbol: Objektdefinition, deren Bild als Symbol verwendet wird
Object pMenuObject Das Objekt, Welches das Menü aufruft
Wer mehr wissen will, hier der Link zur Doku:Klick
Hier ein Beispiel:
Zitat :
CreateMenu(FLAG,pObject);
So, jetzt können wir schon mal ein Menü erstellen, es ist aber noch ein bisschen leer, oder
Um das Menü zu befüllen, gibt es den Befehl:
Die Doku schrieb:
int AddMenuItem (string szCaption, string szCommand, id idItem, object pMenuObject, int iCount, int iParameter, string szInfoCaption, int iExtra, any XPar1, any XPar2);
Aber wie bei CreateMenu interessieren wir uns nur für die drei ersten Parameter: szCaption: Text des neuen Menüeintrags
szCommand: Funktion, die Beim klicken aufgerufen wird
idItem: Die ID wird als Bild für den Menüeintrag verwendet. Der Name der Definition kann mit %s in szCaption verwendet werden. Außerdem wird die ID als erster Parameter an den Aufruf von szCommand übergeben, sofern dieser nur ein Funktionsname ist.
CreateMenu(FLAG);//Menü mit dem Bild einer Flagge wird erstellt AddMenuItem("%s","Erstellen",FLNT);//Menü wird gefüllt: ein Bild Mit einem Flint und der Beschreibung Flint, wenn man drückt wird die Funktion Erstellen aufgerufen
protected func Erstellen (object pObject) {//Extra-Funktion CreateContents (Par (0), pObject); //Kriegstn Flint^^ Spezial(); //Damit wird die Funktion erneut aufgerufen return 1; }
Ein Hinweis: Wenn ihr vorhabt, ein Menü mit Activate() zu öffen, tut das so: