Maniac Mansion Mania Forum

MMM-Werkzeugkiste => Technik => Thema gestartet von: 1mal_volltanken am 06. Oktober 2008, 21:15:46

Titel: GlobalInt = GlobalInt + 1
Beitrag von: 1mal_volltanken am 06. Oktober 2008, 21:15:46
Hallo Leute!

Anhand der Betreffzeile werden sicherlich viele, die auch schon mit Basic Erfahrung gemacht haben, ahnen, worum es in diesem Thred geht... ;)

Bekannt ist ja die GlobalInt-Funktion, wonach durch ein vorausgehendes Ereignis bzw. eine vorausgehende Interaktion der GlobalInt (in diesem Falle) manuell geändert wird, wie z.B.

if UsedAction(PUSH) ; GlobalInt(25,1)

Gibt es dort auch einen GlobalInt-Befehl, wonach sich der Wert nach dem Komma automatisch nach dem A=A+1-Prinzip um den jeweils angegebenen Wert erhöht (die Formal kann also auch A=A+4 lauten, etc.)?

Wer weiss? So ein Befehl kann ja immer wieder nützlich sein, zumal er auch viel Aufwand und Arbeit einsparen kann. ;)

BG
der Volltanker
Titel: Re: GlobalInt = GlobalInt + 1
Beitrag von: rulaman am 06. Oktober 2008, 22:35:34
Ich würde mir ne Funktion schreiben

int GlobalInc(int global, int incr)
{
  int g;
  g = GetGlobalInt(global);
  SetGlobalInt(global, g+incr);
  return g;
}

Ungetestet und aus den Fingern gesaugt.
Titel: Re: GlobalInt = GlobalInt + 1
Beitrag von: 1mal_volltanken am 06. Oktober 2008, 22:45:24
Danke! ;)

Hauptsache ist ja, er funktioniert! ;)


BG
der Volltanker
Titel: Re: GlobalInt = GlobalInt + 1
Beitrag von: KhrisMUC am 07. Oktober 2008, 02:49:30
Oder kürzer und einheitlich:

void IncGlobalInt(int gi, int a) {
  SetGlobalInt(gi, GetGlobalInt(gi) + a);
}

Man kann natürlich auch einfach eine globale Variable verwenden:
// header
import int a;

// global script
int a;
export a;
Jetzt kann man nämlich im Skript auch einfach "a = a + 1;" schreiben ... ;)
Titel: Re: GlobalInt = GlobalInt + 1
Beitrag von: 1mal_volltanken am 07. Oktober 2008, 11:01:38
Find ich echt super! ;)

Thx!

der Volltanker
Titel: Re: GlobalInt = GlobalInt + 1
Beitrag von: NsMn am 07. Oktober 2008, 13:59:33
Müsste es nicht auch einfach mit
SetGlobalInt(1,GetGlobalInt(1)+1)gehen?

Edit:Du darfst da übrigens kein Semikolon hinter UsedAction() setzen,wenn ich mich nicht irre.
Titel: Re: GlobalInt = GlobalInt + 1
Beitrag von: 1mal_volltanken am 07. Oktober 2008, 14:25:35
Müsste es nicht auch einfach mit
SetGlobalInt(1,GetGlobalInt(1)+1)gehen?

Edit:Du darfst da übrigens kein Semikolon hinter UsedAction() setzen,wenn ich mich nicht irre.

Ja. Ich hatte es nur als Beispiel SO hingeschrieben und habe es nicht direkt aus dem Script abgeschrieben! ;)
Titel: Re: GlobalInt = GlobalInt + 1
Beitrag von: KhrisMUC am 07. Oktober 2008, 14:53:40
edna_mausi:
Natürlich geht das auch so, es war aber ein allgemeiner Befehl gefragt, wenn ich mich nicht irre.
Titel: Re: GlobalInt = GlobalInt + 1
Beitrag von: 1mal_volltanken am 05. Juni 2012, 12:09:00
Oder kürzer und einheitlich:

void IncGlobalInt(int gi, int a) {
  SetGlobalInt(gi, GetGlobalInt(gi) + a);
}

Man kann natürlich auch einfach eine globale Variable verwenden:
// header
import int a;

// global script
int a;
export a;
Jetzt kann man nämlich im Skript auch einfach "a = a + 1;" schreiben ... ;)


Hallo!

Ich wollte ja im Starterpak die DoorScripts überarbeiten, da dabei wie einmal erwähnt im Alpha-Test Schwierigkeiten aufgetreten waren.
Gehören diese Zeilen jetzt eigentlich in die ASC- oder in die ASH-Datei ?


BG
der Volltanker



EDIT: Hat sich schon erledigt! Habs rausgefunden.
Titel: Re: GlobalInt = GlobalInt + 1
Beitrag von: Endres am 05. Juni 2012, 14:15:16
Jetzt kann man nämlich im Skript auch einfach "a = a + 1;" schreiben ... ;)
Oder aber gleich a += 4;... Für a += 1; auch a++;
AGS kann doch diese schöne Syntax, oder?
Titel: Re: GlobalInt = GlobalInt + 1
Beitrag von: KhrisMUC am 06. Juni 2012, 13:42:36
Ja, aber leider nur für + und -.