Maniac Mansion Mania Forum

MMM-Werkzeugkiste => Technik => Thema gestartet von: Mister L am 22. Juni 2008, 17:53:29

Titel: Zweite Score-Funktion?
Beitrag von: Mister L am 22. Juni 2008, 17:53:29
AGS hat da bereits eine eingebaute Funktion für einen Highscore.
Frage: Ist es möglich auch mehrere Scores im gleichen Game zu erstellen?

Wie müsste so eine Funktion aussehen?  :-\
Titel: Re: Zweite Score-Funktion?
Beitrag von: KhrisMUC am 22. Juni 2008, 21:07:57
Du brauchst im Grunde keine Funktionen, nur einen globalen array.

Mit Funktionen:
// header

import int myscore[10];
import function GivScore(int s, int points);

// global script, nach on_event

int myscore[10]; export myscore;

function GivScore(int s, int points) {
  myscore[s]+=points;
  PlaySound(x);
  on_event(eEventGotScore, points);
}
Titel: Re: Zweite Score-Funktion?
Beitrag von: Mister L am 22. Juni 2008, 21:54:51
Ahja, das sieht übersichtlich aus.
Besten Dank!  :)

Kann ich den Score dann auch in einem GUI-Fenster anzeigen lassen?
Titel: Re: Zweite Score-Funktion?
Beitrag von: KhrisMUC am 23. Juni 2008, 09:16:01
Klar:
  label.Text = String.Format("%d", myscore[3]);
Titel: Re: Zweite Score-Funktion?
Beitrag von: Mister L am 23. Juni 2008, 15:42:24
Dasja einfach.  :)
Was wären wir ohne KhrisMUC.  :D
Titel: Re: Zweite Score-Funktion?
Beitrag von: KhrisMUC am 23. Juni 2008, 16:40:10
Vielleicht gründlicher beim manual lesen...? ;)
Titel: Re: Zweite Score-Funktion?
Beitrag von: Mister L am 12. Juli 2008, 23:25:10
Ich hab das jetzt probiert und natürlich nicht hinbekommen.  :P

Es klappt immerhin soweit, dass im Label die 0 steht und ich beim Aufruf der Funktion den angegebenen Sound höre. Nur erhöht sich die Punktzahl nicht?!?

Wie müsste denn jetzt der Befehl lauten um z.B. 20 Punkte zu geben?
Titel: Re: Zweite Score-Funktion?
Beitrag von: Rocco am 13. Juli 2008, 01:16:21
in khrismucs beispiel gibts das array myscore[10].
damit hast du quasi die möglichkeit 10 verschiedene punktestände anzulegen.

bei der function GiveScore ist der erste parameter für die verwendete variable von den 10 die du verwenden willst, die zweite für den score.

also mit GiveScore(3,20);
hast du der Variable myscore[3] 20 Punkte mitgegeben.
und genau diese variable wird auch mit
label.Text = String.Format("%d", myscore[3]);
ausgegeben.

wenn du GiveScore(1,20); eingibst musst du dementsprechend
label.Text = String.Format("%d", myscore[1]);
eingeben um den Score auszugeben.
Titel: Re: Zweite Score-Funktion?
Beitrag von: Mister L am 13. Juli 2008, 02:17:03
Ahja, das macht die Sache schon klarer.
Geht nur leider Trotzdem nicht. Es bleibt immer noch bei 0... :-\

Ich hab ein GUI mit einem Label erstellt das sich SCORE2 nennt. Dem hab ich bei "script name" den Name "abc" verpasst und dann bei "Before Fadein" das eingetragen:
Zitat
abc.Text = String.Format("%d", myscore[3]);

Kann da der Fehler liegen? Muss ich da mit dem Script-O-Name arbeiten?
 
Titel: Re: Zweite Score-Funktion?
Beitrag von: Rocco am 13. Juli 2008, 04:13:26
glaub ich eher nicht, schätze eher dass du eine variable anzeigst die vorher noch nicht erhöht wurde.
hast du vorher die funktion so aufgerufen? ->
GiveScore(3,20);
Titel: Re: Zweite Score-Funktion?
Beitrag von: Mister L am 13. Juli 2008, 09:36:45
Ah jetzt ja!  :D

Ich muss den Label-Text nach jeder Veränderung aktualisieren!   :o
Bei der eingebauten Score-Funktion reicht ja: GiveScore (20);
Wenn ich
GivScore (3,20);
abc.Text = String.Format("%d", myscore[3]);
 
eingebe, dann wird's erst angezeigt.

Sowas müsst ihr einem Nichtskönner wie mir doch sagen!  ;)
Titel: Re: Zweite Score-Funktion?
Beitrag von: KhrisMUC am 13. Juli 2008, 10:47:00
Du kannst das auch automatisieren, dann musst Du nur für jeden myscore[X] vorher ein Label festlegen:

// global script

GUILabel*scorelabel[10];

// game_start

  scorelabel[3] = abc;

// geänderte Funktion

function GivScore(int s, int points) {
  myscore[s]+=points;
  if (scorelabel[s] != null) scorelabel[s].Text = String.Format("%d", myscore[s]);
  else Display("***Erst scorelabel[%d] festlegen!***", s);
  PlaySound(x);
  on_event(eEventGotScore, points);
}
Titel: Re: Zweite Score-Funktion?
Beitrag von: Mister L am 13. Juli 2008, 18:15:41
Okay, das probiere ich mal aus. 
Vielen Dank für eure Hilfe.  :)