Autor Thema: GlobalInt (Och noch ne Frage!)  (Gelesen 5995 mal)

Champ

  • volljähriger Tentakel
  • *****
  • Beiträge: 501
  • Geschlecht: Männlich
  • Ohne Geschmacksverstärker!
    • Profil anzeigen
GlobalInt (Och noch ne Frage!)
« am: 23. November 2010, 21:24:50 »
Kurz und knapp:

"Nimm Stift: "Erstmal sehen, was draußen los ist."

(SetGlobalInt (1)==1) (Nur als Beispiel)

(GetGlobalInt(1)==1)

"Nimm Stift: "Her damit!"

Ich habs versucht, aber nun ist das Skript durch herumexperimentieren im Arsch.

Bei schau kommt es wie gewohnt, aber nach benutze kommt ein Standart Kommentar, eine Fehler Meldung,
beide Texte werden angezeigt, es erscheint ein Fehler in einen Skript, welches ich nicht mal angefasst habe, usw.

Hotspot entfernen geht nicht, da 2 Hotspots nicht übereinander liegen können und ein object sollte es nicht sein.

Könnte Hilfe gebrauchen.
Für den Halloween Streich wird Benard bezahlen!

KhrisMUC

  • Moderator
  • volljähriger Tentakel
  • *****
  • Beiträge: 988
    • Profil anzeigen
Re: GlobalInt (Och noch ne Frage!)
« Antwort #1 am: 23. November 2010, 22:14:26 »
Mir ist nicht ganz klar, warum ein Stift, der mitgenommen werden kann, nicht als Objekt eingebunden werden soll. Egal.

Ich weiß nicht, mit welchem Starterpack oder welcher AGS-Version Du arbeitest; GlobalInts werden bei älteren Starterpacks verwendet, um den Status von Türen zu speichern, man sollte also pauschal keinesfalls die GlobalInts 1-100 verwenden.

Der Stift wird also erst beim zweiten Mal mitgenommen, richtig? Da gibt es die sehr praktische Funktion DoOnceOnly:

  else if (UsedAction(eActPickUp)) {

    if (Game.DoOnceOnly("Stift mitnehmen")) player.Say("Erstmal sehen, was draußen los ist.");
    else {
      player.Say("Her damit!");
      oStift.Visible = false;
      player.AddInventory(iStift);
    }
  }

Game.DoOnceOnly("beliebiger Text") ist beim ersten Mal wahr, danach immer falsch. Der Text muss aber einmalig sein, also am besten eine Beschreibung der Situation; theoretisch könnte man aber auch eine beliebige Zeichenfolge nehmen.

Der Code geht natürlich davon aus, dass man den Stift kein drittes Mal nehmen kann, logischerweise wird ja das Objekt nach dem zweiten Mal ausgeschaltet. Wenn Du das um jeden Preis doch als Hotspot einbauen willst, sag Bescheid.

Bissiger Witzbold

  • volljähriger Tentakel
  • *****
  • Beiträge: 554
    • Profil anzeigen
Re: GlobalInt (Och noch ne Frage!)
« Antwort #2 am: 23. November 2010, 22:36:22 »
Der Stift wird also erst beim zweiten Mal mitgenommen, richtig?
"Nimm Stift: "Erstmal sehen, was draußen los ist." lässt eher vermuten, daß man den Stift erst nehmen darf wenn man draussen war oder aus dem Fenster geguckt hat.


Champ

  • volljähriger Tentakel
  • *****
  • Beiträge: 501
  • Geschlecht: Männlich
  • Ohne Geschmacksverstärker!
    • Profil anzeigen
Re: GlobalInt (Och noch ne Frage!)
« Antwort #3 am: 23. November 2010, 22:46:19 »
Ja, der Stift war ein schlechtes Beispiel. (Da kann ich ja gleich object on/off machen)
Es ist ein Hotspot, welcher mit einen Gegenstand bearbeitet werden kann, und auf zwei ansichten
angeschaut werden kann. (Z.B. Schau an Zettel: "Ein leerer Zettel."
                                          (GetGlobalInt) (Schau an Zettel: "Immernoch ein Zettel."

Was ich vergessen habe zu sagen, ich benutze AGS 2.7.2.
« Letzte Änderung: 24. November 2010, 09:07:44 von Champ »
Für den Halloween Streich wird Benard bezahlen!

Endres

  • Midlife Crisis Tentakel
  • ******
  • Beiträge: 1264
  • Geschlecht: Männlich
  • En|dres, der
    • ICQ Messenger - 230191486
    • MSN Messenger - enni_puschner@hotmail.de
    • Profil anzeigen
    • e7p.de
    • E-Mail
Re: GlobalInt (Och noch ne Frage!)
« Antwort #4 am: 24. November 2010, 00:33:53 »
Wie schon von KhrisMUC gesagt, lässt sich das auch Prima (sowieso) ohne GIs realisieren.

if(Game.DoOnceOnly("Zettel anschauen")) player.Say("Ein leerer Zettel.");
else player.Say("Immernoch ein Zettel.");

Generell sollte man dennoch auf überflüssige Werte verzichten, und auch hierbei könnte man sich eventuell schon überlegen, einen richtigen Integer oder ein Boolschen Wert zu verwenden, da ein DoOnce-String schon ein bisschen länger ist als ein paar Variablen zu beschreiben. Allerdings lässt sich darüber streiten. GlobalInts sind Mist, punkt.

Erstes Beispiel:
bool bWarDraussen = false; // Im GlobalScript definieren und exportieren mit export bWarDraussen;
function ...() { // Any Click On Hotspot bei Stift
  if(UsedAction(eActLookAt)) {
    player.Say("Das ist ein Stift.");
  } else if(UsedAction(eActPickUp)) {
    if(!bWarDraussen) player.Say("Erstmal sehen, was draußen los ist.");
    else {
      player.Say("Her damit!");
      // ...
    }
  } else Unhandled();
}


Domi:"irc hab ich mir viren geholt.. icq hab ich nimmer"

Champ

  • volljähriger Tentakel
  • *****
  • Beiträge: 501
  • Geschlecht: Männlich
  • Ohne Geschmacksverstärker!
    • Profil anzeigen
Re: GlobalInt (Och noch ne Frage!)
« Antwort #5 am: 24. November 2010, 14:57:23 »
Falls der Edit nicht gezeigt hat, dass ich was neued geschrieben habe, hier nochmal so.
Wo genau im Globalscript?
Und ich benutze AGS 2.7.2
Für den Halloween Streich wird Benard bezahlen!

KhrisMUC

  • Moderator
  • volljähriger Tentakel
  • *****
  • Beiträge: 988
    • Profil anzeigen
Re: GlobalInt (Och noch ne Frage!)
« Antwort #6 am: 24. November 2010, 16:26:34 »
Wo im Globalscript ist prinzipiell egal, solange alle Funktionen, die die Variable verwenden, weiter unten sind.
Mach dir am Bestem der Übersicht halber einen Kommentar mit ein paar Leerzeilen ganz oben:


// meine globalen Variablen

bool WarDraussen;
export WarDraussen;



Jetzt musst Du die Variablendefinition noch im header des Globalscripts importieren:
import bool WarDraussen;
Du kannst jetzt die Variable im Global- und jedem Raumskript verändern oder ihren Wert abfragen.
Wenn Du sie ohne Anfangswert definierst (so wie ich es gemacht habe), ist sie false.
Sobald man also draußen war, setzt man sie auf true:

// innerhalb einer Funktion, z.B. "first time player enters room", room = vor der Haustür

  WarDraussen = true;

Champ

  • volljähriger Tentakel
  • *****
  • Beiträge: 501
  • Geschlecht: Männlich
  • Ohne Geschmacksverstärker!
    • Profil anzeigen
Re: GlobalInt (Och noch ne Frage!)
« Antwort #7 am: 29. November 2010, 18:26:37 »
Habe es mal versucht (den Text ändere ich noch) Ergebniss:

Jedesmal wenn ich nur so ein Script ansehe, fängt mein Gehirn an zu rotieren!
(Eures, nicht meines)
Für den Halloween Streich wird Benard bezahlen!

Timer

  • volljähriger Tentakel
  • *****
  • Beiträge: 763
  • Geschlecht: Männlich
    • ICQ Messenger - 275798409
    • AOL Instant Messenger - commandertimer
    • Profil anzeigen
    • Meine Seite
    • E-Mail
Re: GlobalInt (Och noch ne Frage!)
« Antwort #8 am: 29. November 2010, 18:52:23 »
Hast du bereits bei der Definition und im import im Header das "b" vor dem "WarDraußen"?

Champ

  • volljähriger Tentakel
  • *****
  • Beiträge: 501
  • Geschlecht: Männlich
  • Ohne Geschmacksverstärker!
    • Profil anzeigen
Re: GlobalInt (Och noch ne Frage!)
« Antwort #9 am: 29. November 2010, 18:56:14 »
Lass es mich so sagen:
:O---
Für den Halloween Streich wird Benard bezahlen!

Champ

  • volljähriger Tentakel
  • *****
  • Beiträge: 501
  • Geschlecht: Männlich
  • Ohne Geschmacksverstärker!
    • Profil anzeigen
Re: GlobalInt (Och noch ne Frage!)
« Antwort #10 am: 03. Dezember 2010, 17:42:28 »
Was soviel heißen soll wie.
"Hä? Ich glaube ich blicke nicht richtig durch!"
Für den Halloween Streich wird Benard bezahlen!

Endres

  • Midlife Crisis Tentakel
  • ******
  • Beiträge: 1264
  • Geschlecht: Männlich
  • En|dres, der
    • ICQ Messenger - 230191486
    • MSN Messenger - enni_puschner@hotmail.de
    • Profil anzeigen
    • e7p.de
    • E-Mail
Re: GlobalInt (Och noch ne Frage!)
« Antwort #11 am: 03. Dezember 2010, 18:35:32 »
du hast die Variable bWarDraussen schon definiert, oder? ;)

Wie gesagt. Im GlobalScript folgendes einfügen:
bool bWarDraussen;
export bWarDraussen;
und im GlobalHeader:
import bool bWarDraussen;

Warum benutzt du "DisplaySpeech"?


Domi:"irc hab ich mir viren geholt.. icq hab ich nimmer"

Domi

  • Midlife Crisis Tentakel
  • ******
  • Beiträge: 1078
  • Geschlecht: Männlich
  • Still existing
    • Profil anzeigen
Re: GlobalInt (Och noch ne Frage!)
« Antwort #12 am: 03. Dezember 2010, 18:59:24 »
HA! champ!! doppelpost ;D
"Das Internet vergisst nie."

Champ

  • volljähriger Tentakel
  • *****
  • Beiträge: 501
  • Geschlecht: Männlich
  • Ohne Geschmacksverstärker!
    • Profil anzeigen
Re: GlobalInt (Och noch ne Frage!)
« Antwort #13 am: 03. Dezember 2010, 19:12:04 »
HA! Domi!! Wen kümmerts? :police:
« Letzte Änderung: 03. Dezember 2010, 19:21:14 von Champ »
Für den Halloween Streich wird Benard bezahlen!

ManiacTwister

  • volljähriger Tentakel
  • *****
  • Beiträge: 727
  • Geschlecht: Männlich
  • Aktionslisten Admin
    • Profil anzeigen
    • Aktionsliste
Re: GlobalInt (Och noch ne Frage!)
« Antwort #14 am: 03. Dezember 2010, 19:13:18 »
Doppelposts gelten nach 72 stunden nicht mehr als Doppelpost, wenn wir geade Forum Cherif spieln....

Übrigens dein Post ist völlig unnötig(meiner auch)

Zitate:
Die Intelligenz in der Welt bleibt konstant. Nur dumm, dass die Bevölkerung wächst.
Mein charakter ist derb! fies und gemein!