Script

Das Mitmach-Projekt aus dem Maniac-Mansion-Universum.
Antworten
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Mulle The Striker hat geschrieben:Bitte sag mir, wie ich das Problem beheben kann.
Zu einer der "Player enters screen"-Interactions von Raum 51 fügst Du hinzu:

Code: Alles auswählen

SetGlobalInt(x,1);
Dann änderst Du dein Skript wie folgt ab:

Code: Alles auswählen

if (HasPlayerBeenInRoom(51) && GetGlobalInt(x)==1) {
  SetGlobalInt(x)==0;
  DisplaySpeech(GetPlayerCharacter(),"Puh, dieses ständige Wasserholen und Ansprühen haben mir Zeit und Nerven gekostet."); 
  DisplaySpeech(GetPlayerCharacter(),"Das schlimmste war noch, Ratten als tägliche Mahlzeit zu verspeisen."); 
  DisplaySpeech(GetPlayerCharacter(),"Da bevorzuge ich doch lieber Hamster als Nahrung."); 
  PlayMusic(22); 
  GUIOn(0); 
  GUIOn(1);
}
-statt dem x verwendest Du natürlich die Nummer einer freien GlobalInt.
-...und Ansprühen hat mich Zeit...
Use gopher repellent on funny little man
Anonymous1

Beitrag von Anonymous1 »

Danke für den Rechtschreibfehler, khrismuc (wie peinlich! :oops: ).
Ich versuch das nochmal.
Danke, auch wenn es nicht klappen sollte.
Killerseven

Beitrag von Killerseven »

Ein Weltwunder ist geschehen!!
Es hat geklappt!!
Danke an alle die mir geholfen haben!!!
VIELEN VIELEN DANK!!
Anonymous1

Beitrag von Anonymous1 »

Apropos GlobalInt, aber wie erstelle ich überhaupt einen?
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Musst Du nicht, sobald Du SetGlobalInt(x, y) verwendet hast, existiert er.
Use gopher repellent on funny little man
Anonymous1

Beitrag von Anonymous1 »

Achso, gut.
Nochmals danke!
Ich hatte bei meiner letzten Episode nie den GlobalInt genutzt.
Deswegen auch meine Frage.
Benutzeravatar
Floyd
Logik-Lord
Logik-Lord
Beiträge: 1088
Registriert: 14.03.2004, 19:59

...

Beitrag von Floyd »

khrismuc hat geschrieben:Musst Du nicht, sobald Du SetGlobalInt(x, y) verwendet hast, existiert er.
Wieder was gelernt :) ! Ich dachte bis jetzt immer, man müsste die GlobalInts zunächst im global script definieren!
MfG Floyd
Benutzeravatar
fireorange
Adventure-Treff
Adventure-Treff
Beiträge: 10618
Registriert: 01.05.2005, 18:03

Beitrag von fireorange »

Mulle The Striker hat geschrieben:Danke für den Rechtschreibfehler, khrismuc (wie peinlich! :oops: ).
Ich würde es eher als Grammatikfehler bezeichnen... :lol: :wink:
Mein Animal-Crossing-Tagebuch bei DKSN.

Entwicklerin von Twine-Stories sowie Mini-Adventures aus der Interactive Short Collection. -> fireorange bei itch.io!

Bäckerin von: Beyond the Edge of Owlsgard, A Twisted Tale, Beyond Shadowgate, Twilight Oracle.

Autorin von Minotaurus in den Sternen und weiteren Büchern (tredition, amazon etc).
Gesammelte Gedichte: frei zugängliches Archiv.
Anonymous1

Beitrag von Anonymous1 »

Versucht und schon wieder nix geworden.

Ich hab SetGlobalInt bei Raum 51 eingesetzt.

Mein Ziel ist jedoch, dass er im Raum 25 den Text ausspricht und sich dann nicht wiederholen soll.

Ich hab nämlich folgenden Skript eingesetzt:

Code: Alles auswählen

if (HasPlayerBeenInRoom(51) && GetGlobalInt(0)==1)
{
 SetGlobalInt(0,1)==0;  
 DisplaySpeech(GetPlayerCharacter(),"Puh, dieses ständige Wasserholen und Ansprühen hat mich Zeit und Nerven gekostet.");
 DisplaySpeech(GetPlayerCharacter(),"Das schlimmste war noch, Ratten als tägliche Mahlzeit zu verspeisen.");
 DisplaySpeech(GetPlayerCharacter(),"Da bevorzuge ich doch lieber Hamster als Nahrung.");
 PlayMusic(22);
 GUIOn(0);
 GUIOn(1);  
}
Was habe ich falsch gemacht?
Benutzeravatar
Floyd
Logik-Lord
Logik-Lord
Beiträge: 1088
Registriert: 14.03.2004, 19:59

...

Beitrag von Floyd »

Es muss

Code: Alles auswählen

SetGlobalInt (1,0);
heißen, und nicht, wie du schreibst,

Code: Alles auswählen

SetGlobalInt(0,1)==0;
!

Bei SetGlobalInt (x,y); ist x die Nummer der Variable und y der Wert.

MfG Floyd
[ZENSIERT]
Adventure-Gott
Adventure-Gott
Beiträge: 4575
Registriert: 13.07.2004, 14:04
Wohnort: Da wo muss
Kontaktdaten:

Beitrag von [ZENSIERT] »

Und abgefragt? Natürlich mit GetGlobalInt(), das eine gültige GlobalInt-ID als Argument entgegennimmt und den Wert dieses GlobalInts zurückgibt!
Es heißt, Leute mit den originellsten Nicknames schreiben die besten Beiträge

Ausnahmen bestätigen die Regel
_________________
<Problem> Weil du denken kannst.

Zuletzt bearbeitet von [ZENSIERT] am 16.07.1759, 16:19, insgesamt 54743869-mal bearbeitet
Anonymous1

Beitrag von Anonymous1 »

Leute, langsam verliere ich die Nerven.
Da ich das erstmal mit den Variabeln arbeite, kann man mit Fehlern rechnen.
Obwohl ihr mir sehr viele Tipps gegeben habt, hat mir das nicht weitergeholfen.
Mein letzter Eintrag war folgender:

Code: Alles auswählen

SetGlobalInt(0,1);
if (HasPlayerBeenInRoom(51) && GetGlobalInt(0)==0)
{
 FaceDirection(GetPlayerCharacter(),DIR_DOWN);
}
else if (HasPlayerBeenInRoom(51) && GetGlobalInt(0)==1)
{
 SetGlobalInt(0,1)==0;  
 DisplaySpeech(GetPlayerCharacter(),"Puh, dieses ständige Wasserholen und Ansprühen hat mich Zeit und Nerven gekostet.");
 DisplaySpeech(GetPlayerCharacter(),"Das schlimmste war noch, Ratten als tägliche Mahlzeit zu verspeisen.");
 DisplaySpeech(GetPlayerCharacter(),"Da bevorzuge ich doch lieber Hamster als Nahrung.");
 PlayMusic(22);
 GUIOn(0);
 GUIOn(1); 
 SetGlobalInt(0,2); 
}


Ich bitte euch Leute, wenn ich das nicht richtig mache, dann geb mir bitte einen ausführlichen und detailreichen Beispiel, wie ich da vorgehen soll.
Ich wäre wirklich sehr, sehr glücklich darüber, wenn es mal klappen würde.
Benutzeravatar
Rocco
Adventure-Treff
Adventure-Treff
Beiträge: 1019
Registriert: 25.11.2003, 16:20
Wohnort: Ronville
Kontaktdaten:

Beitrag von Rocco »

Mulle The Striker hat geschrieben: Mein letzter Eintrag war folgender:

Code: Alles auswählen

SetGlobalInt(0,1);  < das gehört hier nicht hin, 
if (HasPlayerBeenInRoom(51) && GetGlobalInt(0)==0)
{
 FaceDirection(GetPlayerCharacter(),DIR_DOWN);
}
else if (HasPlayerBeenInRoom(51) && GetGlobalInt(0)==1)
{
 SetGlobalInt(0,1)==0;   < funktioniert so nicht
 DisplaySpeech(GetPlayerCharacter(),"Puh, dieses ständige Wasserholen und Ansprühen hat mich Zeit und Nerven gekostet.");
 DisplaySpeech(GetPlayerCharacter(),"Das schlimmste war noch, Ratten als tägliche Mahlzeit zu verspeisen.");
 DisplaySpeech(GetPlayerCharacter(),"Da bevorzuge ich doch lieber Hamster als Nahrung.");
 PlayMusic(22);
 GUIOn(0);
 GUIOn(1); 
 SetGlobalInt(0,2); 
}



if (HasPlayerBeenInRoom(51) && GetGlobalInt(0)==0)
{
DisplaySpeech(GetPlayerCharacter(),"Puh, dieses ständige Wasserholen und Ansprühen hat mich Zeit und Nerven gekostet.");
DisplaySpeech(GetPlayerCharacter(),"Das schlimmste war noch, Ratten als tägliche Mahlzeit zu verspeisen.");
DisplaySpeech(GetPlayerCharacter(),"Da bevorzuge ich doch lieber Hamster als Nahrung.");
PlayMusic(22);
GUIOn(0);
GUIOn(1);
SetGlobalInt(0,1);

}
else if (HasPlayerBeenInRoom(51) && GetGlobalInt(0) == 1)
{
FaceDirection(GetPlayerCharacter(),DIR_DOWN);
}

versuchs mal so,
zu deiner version, das erste setGlobalInt gehört hier nicht her,
sondern je nachdem was du vor hast in den If players enters screen bereich oder so.
so wie es bei dir steht setzt du jedesmal bevor du zu deiner funktion kommst den wert auf 1 und es wird immer der if else
zweig ausgeführt.
SetGlobalInt(0,1)==0; das macht nicht das gewünschte auch hier setzt den wert der variablen 0 auf 1. und nicht auf 0 was du vor hast, da müsstest du folgendes schreiben SetGlobalInt(0,0);
Benutzeravatar
Floyd
Logik-Lord
Logik-Lord
Beiträge: 1088
Registriert: 14.03.2004, 19:59

...

Beitrag von Floyd »

Sollte es immer noch nicht funktionieren, lösch am besten das ganze script. Es neu zu schreiben, erscheint mir sehr viel einfacher, als dauernd Änderungen daran vorzunehmen, da hierbei irgendwann die Übersicht verloren geht. Wenn du willst, kannst du mir das Spiel auch zuschicken, die Mailadresse hab ich dir jedenfalls mal geschickt. MfG Floyd
Anonymous1

Beitrag von Anonymous1 »

HALLELUJA, HALLELUJA!!!
ENDLICH, ICH WURDE GEHEILT!!! :D

ummm..., ach schwachsinn.

Vielen Dank Rocco, dass du dir die Mühe gemacht hast, den Skript für mich umzustellen.
Und wie du anhand meines erlösenden Schreies erkennen konntest, hat es endlich geklappt.
Hoffentlich passiert mir das nicht nochmal.
Ich werde mir den Skript gut merken.
Vielen Dank nochmal und auch an Floyd und khrismuc, ihr habt es wirklich verdient in den Credits erwähnt zu werden.

@Floyd: Wenn du mein Spiel gerne testen möchtest, muss du noch einige Zeit Geduld haben. Ich arbeite gerade noch an den ersten Teil meiner Episode. Wenns soweit ist, schicke ich dir die Daten zu dir rüber.

Okay Jungs, ich werde erstmal die verlorene Zeit für meine Episode nachholen.
Ich werde mich erst am Wochenende im Forum wiedermelden.
Machs gut!
Euer Mulle The Striker! 8) 8) 8)
Antworten