Autor Thema: GlobalInts für Anfänger  (Gelesen 2100 mal)

Der Kompaniechef

  • volljähriger Tentakel
  • *****
  • Beiträge: 689
    • Profil anzeigen
GlobalInts für Anfänger
« am: 19. Dezember 2014, 20:27:33 »
Moin,
ich habe arg Probleme beim verstehen wie ein globalInt funktioniert./// bis jetzt habe ich nie welche gebraucht.
Dabei stellen sich folgende Fragen:
Wie lege ich so ein Ding an?
Wie starte ich es innerhalb eines Scriptes son ding.
Ich möchte folgendes:
Rayman war der Meinung das man durch PlayerCharwechsel und durch GlobalInts es am besten schaffen kann, 2 Räume,  immer abwechselnd hin und her zuschalten.
Ich möchte das in Raum a das etwas gesagt/getan wird und dann in Raum b etwas gesagt/getan wird und danach wieder zu Raum a gewechselt wird usw.
Sehe Edgar-verleihung, Wink zeigt was redet und danach kommt die Tribüne und von der Tribüne geht es wieder zu Wink.

Ich brauche eine Schritt für Schritt Anleitung vom Anlegen, starten und ausführen der Int-Funktion um das Problem da oben zu lösen...

Hoffe,
Ihr wisst was ich meine,
MfG der Script-Loser ;D JPJF

Cone Arex

  • Mod
  • alter Tentakel
  • **
  • Beiträge: 2302
  • Geschlecht: Männlich
  • Skandal-Entwickler und Idiot
    • Profil anzeigen
    • Conequest
Re: GlobalInts für Anfänger
« Antwort #1 am: 19. Dezember 2014, 21:05:39 »
Schon mal grundsätzlich: VERWENDE.KEINE.GLOBALINTS! Aus dem Zeitalter sollten wir eigentlich schon lange raus sein. Stattdessen bitte vernüftige Variablen verwenden.

Wenn ich dich richtig verstanden habe, kannst du dein Problem mit einer Integer-Variable lösen. In einer Integer-Variable können ganzzahlige Werte ohne Nachkommastellen gespeichert werden. Also 1,2,42, 1337...etc.

Schreib ins GlobalScript.asc (möglichst weit oben):
[ags]int name;
export name;
[/ags]

Und ins GlobalScript.ash:
[ags]import int name;[/ags]
Einmal compilen und dir steht die Variable "name" überall zu Verfügung.
Als Name kannst du festlegen, was du willst. Zulässig sind lateinische Buchstaben(groß und klein), arabische Ziffern und der Unterstrich( _ ). Leerzeichen sind nicht erlaubt, um längere Namen lesbar zuschreiben wird entweder der Unterstrich verwendet ("ein_langer_name") oder Groß- und Kleinschreibung verwendet ("MeinLangerUndAuchGutLesbarerVariablenName"). Bevorzugt wird letzteres, eine Vermischung wie es die SPs vormachen ist schlechter Stil und zu vermeiden.
Der Variable einen Wert zu zuweisen, ist einfach:
[ags]name=42;[/ags]
Du kannst der Variable auch direkt bei der Deklaration einen Wert zuweisen:
[ags]int antwort=42;[/ags]

In den Rooms fragst du dann den Inhalt der Variable ab.
[ags]
if (antwort == 42) // Wird ausgeführt, wenn antwort den Wert 42 hat.
{
   player.Say("Die Antwort ist 42");
}
else if (antwort == 1337) // Wird ausgeführt, wenn antwort den Wert 1337 hat.
{
   player.Say("Die Antwort ist 1337");
}
else // Wird ausgeführt, wenn die antwort irgendeinen Wert hat, der NICHT 42 oder 1337 ist.
{
   player.Say("Die Antwort ist irgendwas anderes.");
}[/ags]
Wichtig ist hier, dass mit zwei Gleichheitszeichen (==) überprüft wird. Ein einzelnes Gleichheitszeichen weist der Variable einen Wert zu.

Um auf deinen Anwendungsfall zurückzukommen: Leg eine Variable namens "cutscenes" an, wie ich es oben gezeigt habe, schreib in Raum a:
[ags]
if (cutscenes == 0)
{
   player.Say("Hallo Welt!");
   cCharacter.SetAsPlayer();
}
else if (cutscenes == 1)
{
   ...
}
[/ags]
In Raum b setzt du dann die Variable auf 1:
[ags]cutscenes = 1;[/ags]
Und bringst wieder in Raum a. Wenn du dann das erste Mal in Raum a bist, wird der erste Block ausgeführt. Wenn du in Raum b warst, wird dann der zweite Block ausgeführt usw.

Ich hoffe, du kannst damit etwas anfangen. Ich merke leider gerade selbst, dass ich das nicht besonders gut erklären kann. :-[


Folge mir auf X und itch.io

MalleTheRedPhoenix

  • Midlife Crisis Tentakel
  • ******
  • Beiträge: 1239
  • Geschlecht: Männlich
    • Profil anzeigen
Re: GlobalInts für Anfänger
« Antwort #2 am: 19. Dezember 2014, 21:12:41 »
Eigentlich hast Du es gut erklärt, Cone Arex. 8)

Und gut, dass Du noch vor mir fertig geworden bist.

Ich wollte nämlich mit meinen AGS 2.72 schon hier ankommen. Und die kommen noch aus der Ursteinzeit von AGS! :D :D :D

Deswegen würde ich empfehlen Cone Arexs Vorschlag anzunehmen. :)
« Letzte Änderung: 19. Dezember 2014, 21:13:35 von MalleTheRedPhoenix »
Wie Phönix aus der Asche

Kiwa

  • volljähriger Tentakel
  • *****
  • Beiträge: 779
  • Geschlecht: Männlich
    • Profil anzeigen
Re: GlobalInts für Anfänger
« Antwort #3 am: 19. Dezember 2014, 21:15:36 »
Du kannst auch eine globale Variable anlegen (AGS 3.2.1) indem du einfach rechts im AGS-Editor den Menüpunkt "Global variables" öffnest und dort mit rechtsklick eine neue Variable anlegst. Da kannst du dann Name und Datentyp der Variablen anlegen. Diese Variablen die du da anlegst sind dann in allen Scripten/Räumen abrufbar.

Wie Cone Arex schon beschrieben hat nimmst du für Sachen zum Abzählen "int" Variablen. Wenn du Fragen zu den anderen Datentypen hast die dort noch angezeigt werden dann frag einfach. Sehr nützlich ist auch der Datentyp bool (der ist wie ein EIN/AUS Schalter).
« Letzte Änderung: 19. Dezember 2014, 21:18:12 von Kiwa »
Das Leben ist ein Adventure. Aber ohne Komplettlösung.

Für fast alles gibt es eine logische Erklärung. Für alles andere ein Placebo.