Objekte Zählen - Wie geht das?

Das Board für Schwierigkeiten beim Adventure-Machen und zum Melden von Bugs
Post Reply
BobDole
PaC-DK Newby
Posts: 6
Joined: 30 Dec 2015, 12:10

Objekte Zählen - Wie geht das?

Post: # 82816Post BobDole
30 Dec 2015, 18:30

Hallo,

ich hab ein bisschen hier im Forum rumgesucht, bin aber nicht wirklich auf etwas gestoßen.

Ich Plane in meinem Spiel mehrere Objekte des gleichen Typs aufzunehmen. (z.B.: Münzen, etc). Diese sollen dann im Inventory gezählt werden.
Sprich: ich habe bereits eine Münze und will eine weitere Aufnehmen. dann soll im Inventory bei den Münzen zum Beispiel eine "2" abgebildet sein, dann eine "3" usw.
Und beim Geld ausgeben sollen die Münzen dem entsprechend wieder verschwinden.
Sprich: Ich habe 10 Münzen und kauf mir etwas für 7 Münzen, dann sollen noch 3 Münzen da sein.

Wie geht das? ich habe absolut keine Ahnung. ich hab's mit dem Examplespiel Coingame versucht herauszubekommen, aber ich kapier das nicht ganz. Was muss ich den jetzt ins Skript schreiben? (on (click), additem (Münze) ist klar; das Zählen fehlt).

*ich nutze die ältere Version 2.9.6, falls das von belangen ist.

Vielen dank im Voraus für die Hilfe :)

japanhonk
PaC-DK God
Posts: 1716
Joined: 05 Feb 2009, 20:36
Location: NRW
Contact:

Re: Objekte Zählen - Wie geht das?

Post: # 82817Post japanhonk
30 Dec 2015, 18:53

Hi,

Wenn Du eine Zahl mit anzeigen willst, würde es Sinn machen, einen Zähler anzulegen.

Bei reiner Itemsteuerung aber gilt :

Wenn Du ein Objekt aufsammelst und die Eigenschaft "Gegenstände gruppieren" eingestellt wurde, wird das Objekt bei additem um 1 erhöht und bei delitem um 1 erniedrigt.

Oder Du kannst Variablen benutzen. Das würde ich persönlich bevorzugen. Ist etwas mehr Arbeit beim Verwalten / Scripten, aber man ist damot flexibler, da man nur eine Zahlenvariable verwaltet, sprich ausliest, dazuaddiert oder abzieht und den Inhalt der Variable - also deren Wert - anzeigen kann.

Eine Variable im Startskript könnte den Namen "Coins" haben.

Sie wird im Startskript auf 0 gesetzt.
Wenn Du dann eine Münze aufsammelst, erhöhst Du die Variable um jeweils 1

Den Wert dieser Variable kannst Du jederzeit auslesen und anzeigen.

Beispiel : Setnum (coins;0)

Beim Aufsammeln einer Münze schreibst Du ins Obektskript der aufzusammelnden Münze :

ifnot_hasitem (self;coin) ---> Ist das Item "Coin" noch nicht im Inventar...
additem (self;coin;1) ---> Blende es im Inventar ab jetzt ein
setnum (coins;+1) ---> Erhöhe die Anzahl der Münzen dann um 1

Wenn Du die Abfrage nach einem Item nicht machst, hast Du nachher jede Münze einzeln im Inventar stehen, das wird recht unübersichtlich. Also zeigst Du 1 Item an und die Anzahl berechnest Du extra.

Du kannst so auch einen Beutel Münzen aufsammeln. Z.B. 100 Stück

Dann müsstest Du beim Aufsammen schreiben : setnum (coins;+100)

Entsprechend beim Abziehen : Setnum (Coins;-1) bei einer Münze.


Um zu verhindern, dass Du "Schulden" machst, solltest Du beim Ausgeben der Münzen eine Abfrage durchführen :

If_num (coins;<1)
{
speech (self;ich habe kein Geld mehr)
break()
}

Oder, wenn etwas 20 Münzen kostet :

If_num (coins;<20)
{
speech (self;So viel Geld habe ich nicht)
break()
}


Die Anzahl der Münzen und die Position des Textes kannst Du im on (mouse) Teil des Items ( z.B. im Inventar beim Überfahren des Items mit dem Zeiger ) per textout Befehl ein - und ausblenden
Dazu gibst Du den INHALT der Variable Coins an, das geschieht über eckige Klammern [ ].

Einblenden per on (mouse) und textout Befehl und Ausblenden bei on (mouseout) und texthide Befehl

Viel Erfolg

Manni
Es gibt 10 Arten von Usern :
die, die Binärcode verstehen und die, die es nicht tun....
----------------------------------------------------------
STAR TREK FYNE :
http://www.fynegames.homepage.t-online.de

Zimond
Der Engine Papa
Posts: 3420
Joined: 06 Apr 2003, 19:34
Location: Krefeld
Contact:

Re: Objekte Zählen - Wie geht das?

Post: # 82818Post Zimond
30 Dec 2015, 21:44

Wenn man Geld als Währung einsetzt also nicht als Münzgegenstände wäre es empfehlenswert das nicht über eine Anzahl von Items zu regeln.
Es könnte z.B eine dauerhafte Einblendung in einer Bildschirmecke sein. Oder wie ich es in Alühn 2 gemacht habe : Ein Item wie eine Brieftasche oder einen Münzbeutel der beim drüber fahren mit der Maus anzeigt wie viel Münzen drin sind.

Beides auf jeden Fall mit einer Variable geregelt.
Image

BobDole
PaC-DK Newby
Posts: 6
Joined: 30 Dec 2015, 12:10

Re: Objekte Zählen - Wie geht das?

Post: # 82819Post BobDole
31 Dec 2015, 11:23

Hallo,

Erst einmal vielen lieben Dank für eure schnellen und Hilfreichen Antworten.
Die haben mir wirklich sehr geholfen. :)

Soweit so gut klappt es jetzt, dass das Spiel die Münzen aufaddiert.

Aber bei dem Anzeigen des aktuellen Wertes habe ich noch Probleme.

Mein Item - Skript für die Münze sieht jetzt folgendermaßen aus:

on (mouse)
showinfo (Münze [textout] ;true)

on (mouseout)
Showinfo (Münze [texthide] ;true)


das ist vermutlich absoluter Blödsinn der da steht, denn er zeigt mit jetzt immer "0" an.

Anders bekomme ich die Eckigen Klammern [] aber nicht untergebracht.
Es währe schön, wenn ich hier noch einmal Hilfe bekommen könnte.

Vielen Dank.

DeinTroll
Experienced PaC-DK User
Posts: 561
Joined: 07 Sep 2011, 21:33
Location: In der Ortenau
Contact:

Re: Objekte Zählen - Wie geht das?

Post: # 82820Post DeinTroll
31 Dec 2015, 13:06

Du brauchst das Mouseout nicht. Der Text verschwindet von alleine wenn die Maus nicht mehr über dem Objekt ist.

Du musst in die Klammer den Namen deiner Variable die das Geld beinhaltet reinschreiben. Was im fall von Japanhonk dann so aus sehen würde:

on (mouse)
showinfo (Münze [coin] ;true)

mfg Troll
Image

Zimond
Der Engine Papa
Posts: 3420
Joined: 06 Apr 2003, 19:34
Location: Krefeld
Contact:

Re: Objekte Zählen - Wie geht das?

Post: # 82821Post Zimond
31 Dec 2015, 14:13

textout ist ein Befehl, keine Variable.

Wenn du Zb eine dauerhafte Einblendung haben willst die dir die Zahl COIN anzeigt ginge das so.

textout (Geldanzeige ; Münzen : [coin] ; 10 ; 10)

Das blendet dir oben links im Bildschirm dauerhaft eine Textzeile ein die sich automatisch aktualisiert mit dem Wert der Variable coin (erkennt man immer an den eckigen Klammern)

texthide (Geldanzeige) ließe diese Textzeile wieder verschwinden.

Showinfo dient als direkter Text neben der Maus (Balloon tips in Windows genannt) der sofort verschwindet sobald du das objekte oder item verläßt.

Der hat dir übrigens in deinem Text 0 angezeigt weil er eine Variable namens [textout] ausgeben wollte.. wenn es die noch nicht gibt ist der Inhalt immer 0.
Image

BobDole
PaC-DK Newby
Posts: 6
Joined: 30 Dec 2015, 12:10

Re: Objekte Zählen - Wie geht das?

Post: # 82873Post BobDole
05 Jan 2016, 17:58

Okay, vielen Dank erstmal. So langsam bekomme ich den dreh raus.

Klappt alles hervorragend dank euch :)

Post Reply