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  

 

 Kaufmenü - Eintrag erzeugt nichts

Nach unten 
3 verfasser
AutorNachricht
Bowserkoopa
Staatsrat
Staatsrat
Bowserkoopa


Männlich Alter : 30
Anmeldedatum : 21.12.08

Kaufmenü - Eintrag erzeugt nichts Empty
BeitragThema: Kaufmenü - Eintrag erzeugt nichts   Kaufmenü - Eintrag erzeugt nichts EmptyDi 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?

Code:
//----------------Kaufmenü
protected func ContextKaufen(pClonk)
{
   [Essen kaufen|Image=CBRD]
   CreateMenu(GOLD, 0, 0, 0, "Nichts kaufbares vorhanden", 0, 1);
   AddMenuItem("Braten kaufen", "CreateFood", CBRD);
   AddMenuItem("Getränk kaufen", "CreateFood", SFLA);
}

protected func CreateFood(id item, pClonk)
{
   if (GetWealth(pClonk) < GetValue(0, item))
      CreateContents(item);
   else
      Message("Nicht genug Geld!", pClonk);
}
Nach oben Nach unten
Limeox
Admiral
Admiral
Limeox


Männlich Anmeldedatum : 25.04.10

Kaufmenü - Eintrag erzeugt nichts Empty
BeitragThema: Re: Kaufmenü - Eintrag erzeugt nichts   Kaufmenü - Eintrag erzeugt nichts EmptyDi 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".
Nach oben Nach unten
Bowserkoopa
Staatsrat
Staatsrat
Bowserkoopa


Männlich Alter : 30
Anmeldedatum : 21.12.08

Kaufmenü - Eintrag erzeugt nichts Empty
BeitragThema: Re: Kaufmenü - Eintrag erzeugt nichts   Kaufmenü - Eintrag erzeugt nichts EmptyMi 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");
}

private func CreateFood(id iditem, pClonk)
{
   if (GetWealth(GetOwner(pClonk)) > GetValue(0, iditem))
      {
      SetWealth(pClonk,GetWealth(pClonk)-GetValue(0,iditem));
      CreateContents(iditem);
      }
   else
      Message("Nicht genug Geld!", pClonk);
}
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^^
Nach oben Nach unten
Extremclonk
Staatsrat
Staatsrat
Extremclonk


Männlich Ort : Am Anti-Spam-Limes
Anmeldedatum : 19.01.09

Kaufmenü - Eintrag erzeugt nichts Empty
BeitragThema: Re: Kaufmenü - Eintrag erzeugt nichts   Kaufmenü - Eintrag erzeugt nichts EmptyMi 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 Wink.
Nach oben Nach unten
Limeox
Admiral
Admiral
Limeox


Männlich Anmeldedatum : 25.04.10

Kaufmenü - Eintrag erzeugt nichts Empty
BeitragThema: Re: Kaufmenü - Eintrag erzeugt nichts   Kaufmenü - Eintrag erzeugt nichts EmptyMi 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))
Nach oben Nach unten
Bowserkoopa
Staatsrat
Staatsrat
Bowserkoopa


Männlich Alter : 30
Anmeldedatum : 21.12.08

Kaufmenü - Eintrag erzeugt nichts Empty
BeitragThema: Re: Kaufmenü - Eintrag erzeugt nichts   Kaufmenü - Eintrag erzeugt nichts EmptyMi 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:
Code:
public func ContextKaufen(pClonk)
{
   [Essen kaufen|Image=CBRD]
   CreateMenu(CBRD, pClonk, 0, 0, "Nichts kaufbares vorhanden", 0, 1);
   AddMenuItem("Braten kaufen", "CreateFood", CBRD,pClonk,0,pClonk,"Brathähnchen");
   AddMenuItem("Getränk kaufen", "CreateFood", SFLA,pClonk,0,pClonk,"Getränk");
}

private func CreateFood(id item, pClonk)
{
   if (GetWealth(GetOwner(pClonk)) >= GetValue(0, item))
      {
      DoWealth(GetOwner(pClonk), -GetValue(0, item));
      CreateContents(item,pClonk);
      //Für Extremclonk
      Sound("Uncash");
      }
   else
      Message("Nicht genug Geld!", pClonk);
}
Nach oben Nach unten
Gesponserte Inhalte





Kaufmenü - Eintrag erzeugt nichts Empty
BeitragThema: Re: Kaufmenü - Eintrag erzeugt nichts   Kaufmenü - Eintrag erzeugt nichts Empty

Nach oben Nach unten
 
Kaufmenü - Eintrag erzeugt nichts
Nach oben 
Seite 1 von 1

Befugnisse in diesem ForumSie können in diesem Forum nicht antworten
CNDG :: Sonstiges :: Scripthilfe-
Gehe zu: