Autor Thema: Zweite Score-Funktion?  (Gelesen 3660 mal)

Mister L

  • Boss der T.I.A.
  • Globaler Moderator
  • Ehrwürdiger Tentakel
  • *****
  • Beiträge: 3106
  • Geschlecht: Männlich
  • "R.I.P. Clever & Smart † 1958 -2023"
    • Profil anzeigen
    • Maniac Mansion - Night of the Meteor
Zweite Score-Funktion?
« 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?  :-\

KhrisMUC

  • Moderator
  • volljähriger Tentakel
  • *****
  • Beiträge: 988
    • Profil anzeigen
Re: Zweite Score-Funktion?
« Antwort #1 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);
}

Mister L

  • Boss der T.I.A.
  • Globaler Moderator
  • Ehrwürdiger Tentakel
  • *****
  • Beiträge: 3106
  • Geschlecht: Männlich
  • "R.I.P. Clever & Smart † 1958 -2023"
    • Profil anzeigen
    • Maniac Mansion - Night of the Meteor
Re: Zweite Score-Funktion?
« Antwort #2 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?

KhrisMUC

  • Moderator
  • volljähriger Tentakel
  • *****
  • Beiträge: 988
    • Profil anzeigen
Re: Zweite Score-Funktion?
« Antwort #3 am: 23. Juni 2008, 09:16:01 »
Klar:
  label.Text = String.Format("%d", myscore[3]);

Mister L

  • Boss der T.I.A.
  • Globaler Moderator
  • Ehrwürdiger Tentakel
  • *****
  • Beiträge: 3106
  • Geschlecht: Männlich
  • "R.I.P. Clever & Smart † 1958 -2023"
    • Profil anzeigen
    • Maniac Mansion - Night of the Meteor
Re: Zweite Score-Funktion?
« Antwort #4 am: 23. Juni 2008, 15:42:24 »
Dasja einfach.  :)
Was wären wir ohne KhrisMUC.  :D

KhrisMUC

  • Moderator
  • volljähriger Tentakel
  • *****
  • Beiträge: 988
    • Profil anzeigen
Re: Zweite Score-Funktion?
« Antwort #5 am: 23. Juni 2008, 16:40:10 »
Vielleicht gründlicher beim manual lesen...? ;)

Mister L

  • Boss der T.I.A.
  • Globaler Moderator
  • Ehrwürdiger Tentakel
  • *****
  • Beiträge: 3106
  • Geschlecht: Männlich
  • "R.I.P. Clever & Smart † 1958 -2023"
    • Profil anzeigen
    • Maniac Mansion - Night of the Meteor
Re: Zweite Score-Funktion?
« Antwort #6 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?

Rocco

  • Administrator
  • alter Tentakel
  • *****
  • Beiträge: 2352
  • Geschlecht: Männlich
    • Profil anzeigen
    • Maniac Mansion Mania
    • E-Mail
Re: Zweite Score-Funktion?
« Antwort #7 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.

Mister L

  • Boss der T.I.A.
  • Globaler Moderator
  • Ehrwürdiger Tentakel
  • *****
  • Beiträge: 3106
  • Geschlecht: Männlich
  • "R.I.P. Clever & Smart † 1958 -2023"
    • Profil anzeigen
    • Maniac Mansion - Night of the Meteor
Re: Zweite Score-Funktion?
« Antwort #8 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?
 
« Letzte Änderung: 13. Juli 2008, 02:18:28 von Mister L »

Rocco

  • Administrator
  • alter Tentakel
  • *****
  • Beiträge: 2352
  • Geschlecht: Männlich
    • Profil anzeigen
    • Maniac Mansion Mania
    • E-Mail
Re: Zweite Score-Funktion?
« Antwort #9 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);

Mister L

  • Boss der T.I.A.
  • Globaler Moderator
  • Ehrwürdiger Tentakel
  • *****
  • Beiträge: 3106
  • Geschlecht: Männlich
  • "R.I.P. Clever & Smart † 1958 -2023"
    • Profil anzeigen
    • Maniac Mansion - Night of the Meteor
Re: Zweite Score-Funktion?
« Antwort #10 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!  ;)

KhrisMUC

  • Moderator
  • volljähriger Tentakel
  • *****
  • Beiträge: 988
    • Profil anzeigen
Re: Zweite Score-Funktion?
« Antwort #11 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);
}

Mister L

  • Boss der T.I.A.
  • Globaler Moderator
  • Ehrwürdiger Tentakel
  • *****
  • Beiträge: 3106
  • Geschlecht: Männlich
  • "R.I.P. Clever & Smart † 1958 -2023"
    • Profil anzeigen
    • Maniac Mansion - Night of the Meteor
Re: Zweite Score-Funktion?
« Antwort #12 am: 13. Juli 2008, 18:15:41 »
Okay, das probiere ich mal aus. 
Vielen Dank für eure Hilfe.  :)