Thema: Kaufmenü - Eintrag erzeugt nichts Di Jun 01, 2010 6:45 pm
Ich habe jetzt einen Skript gemacht für Gebäude, in denen nur bestimmte Sachen einkaufbar sein sollen. Komischerweise passiert beim Aufrufen des Eintrags im Context Menü überhaupt nichts. Also es wird beim auswählen vom "Essen kaufen" Menü nichts weiter mehr angezeigt. Zur Auwahl vom Braten oder Getränk kaufen komme ich gar nicht erst?
Thema: Re: Kaufmenü - Eintrag erzeugt nichts Di Jun 01, 2010 6:58 pm
Kontext-Funktionen müssen public sein. CreateFood ist als private sinnvoller (ich glaube nicht, dass die Engine damit was anfangen will). Das Ganze muss natürlich im Clonk stehen (appendto reicht). Das Item wird erzeugt, wenn der Clonk weniger Geld hat als es wert ist, also kann man mit 1 Gold einen Teraflint kaufen, mit 50 Gold aber nicht (Beispiel). Das Geld wird dann auch nicht abgezogen (denke aber mal, das fügst du sowieso erst später ein). GetWealth() braucht als 1 Parameter den Besitzer, nicht das Objekt. Also GetWealth(GetOwner(pClonk)). "Nichts kaufbares vorhanden" wird immer angezeigt (die Menüpunkte haben kein szInfoCation).
Das sieht jetzt nach viel aus, aber es sind eher viele kleine Schnitzer die schnell behoben sind. Hauptsächlich liegts wohl an GetWealth(), eventuell machen noch die Deklarationen als "protected" Probleme, der Rest ist mehr oder minder "Optimierungssache".
Bowserkoopa Staatsrat
Alter : 30 Anmeldedatum : 21.12.08
Thema: Re: Kaufmenü - Eintrag erzeugt nichts Mi Jun 02, 2010 3:13 pm
Ok, hier mal mein Fortschritt:
Code:
//----------------Kaufmenü für die Party public func ContextKaufen(pClonk) { [Essen kaufen|Image=CBRD] CreateMenu(CBRD, pClonk, 0, 0, "Nichts kaufbares vorhanden", 0, 1); //AddMenuItem("Braten kaufen", "CreateFood", CBRD); AddMenuItem("Braten kaufen", "CreateFood", CBRD,pClonk,0,0,"Brathähnchen"); AddMenuItem("Getränk kaufen", "CreateFood", SFLA,pClonk,0,0,"Getränk"); }
Es kommt jetzt das Minimenü mit den Kaufbaren Sachen, die Eintrage sind auswählbar, aber ich erhalte immer die Meldung: Nicht genug Geld und das obwohl ich mit 345 Gold eigentlich ein 10 Clunker Getränk kaufen können sollte^^
Extremclonk Staatsrat
Ort : Am Anti-Spam-Limes Anmeldedatum : 19.01.09
Thema: Re: Kaufmenü - Eintrag erzeugt nichts Mi Jun 02, 2010 3:23 pm
Mir scheint das du den Parameter pClonk nicht übergibst. Du übergibst lediglich die ID, die wird ja automatisch übergeben. Ersetzte den 6ten Parameter in AddMenuItem durch pClonk dann sollte dieser als zweiter Parameter für CreateFood übergben werden.
Btw: Du solltest in CreateFood, das ">" durch ein">=" ersetzten, sonst muss man immer einen Clunker mehr haben als das Essen kostet, wo es doch genügt gleich viel zu haben. Und ein "Sound("UnCash")" wäre schön .
Limeox Admiral
Anmeldedatum : 25.04.10
Thema: Re: Kaufmenü - Eintrag erzeugt nichts Mi Jun 02, 2010 3:59 pm
Btw: DoWealth(..., x) macht dass selbe wie SetWealth(..., GetWealth(...)+x), ist aber kürzer und besser zu lesen. Also DoWealth(GetOwner(pClonk), -GetValue(0, iditem))
Bowserkoopa Staatsrat
Alter : 30 Anmeldedatum : 21.12.08
Thema: Re: Kaufmenü - Eintrag erzeugt nichts Mi Jun 02, 2010 4:16 pm
Das ist ja gemein, der Befehl ist ja gar nicht dokumentiert >.< Allerdings funktioniert jetzt das ganze Skript. Ist praktisch denn somit sind individuelle Kaufmenüs leicht realisierbar: