FRAGE an alle wegen SCRIPTS

Das Mitmach-Projekt aus dem Maniac-Mansion-Universum.
Benutzeravatar
Tentakel
Hobby-Archäologe
Hobby-Archäologe
Beiträge: 107
Registriert: 06.10.2005, 18:15
Wohnort: Weißenborn
Kontaktdaten:

FRAGE an alle wegen SCRIPTS

Beitrag von Tentakel »

Hallo, bin neu hier, 12 und hab eine Frage an euch alle.
Ich will irgendeine Aktion ausführen, und nachdem das geschehen ist und ich das nochmalprobieren will, soll eine andere meldung ausgegben werden. z.b. schau an kiste. "darin war eine schraube"
und dann schau an kiste "das wars. mehr war nich drin"

/date :arrow: :arrow:
Anonymous1

Beitrag von Anonymous1 »

Es gibt zwei Möglichkeiten:

Entweder du verwendest den Global-Skript, um eine andere Meldung abzugeben.
Als Beispiel:
If(GlobalInt 0 == 0)
{
DisplaySpeech(GetPlayerCharacter(),"darin war eine schraube.");
AddInventory(1);
SetGlobalInt (0,1) (Anmerk.: Dadurch wird beim GlobalInt die Variable 1 eingeschaltet.)
}
else if (GlobalInt 0 == 1)
{
DisplaySpeech(GetPlayerCharacter(),"das wars. mehr war nich drin.");
}
Diese Variation würde ich eher empfehlen.

Du kannst aber auch den If-Characterhaveinventory-Funktion einsetzen, die zwar auch ähnlich funktioniert wie GlobalInt, bloß wenn du den entsprechenden Gegenstand nicht mehr im Inventar hast der Befehl wieder auf null geht, so dass du erneut den Gegenstand im Object findest.
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

So geht's besser:

Code: Alles auswählen

if (GetGlobalInt(30) == 0) {
  DisplaySpeech(GetPlayerCharacter(),"Darin war eine Schraube.");
  AddInventory(1);
  SetGlobalInt (30,1) // (Anmerk.: Dadurch wird beim GlobalInt die   Variable 1 eingeschaltet.)
}
else if (GetGlobalInt(30) == 1) {
  DisplaySpeech(GetPlayerCharacter(),"Das wars. Mehr war nich' drin.");
}
(Es heisst GetGlobalInt(x), ausserdem sollte man sicherheitshalber nur GlobalInts ab 30 verwenden, sonst kommt man dem Starterpack in die Quere.)

Ich darf Dir auch diesen thread ans Herz legen:
http://www.adventure-treff.de/forum/vie ... php?t=7529
Zuletzt geändert von KhrisMUC am 06.10.2005, 19:15, insgesamt 1-mal geändert.
Use gopher repellent on funny little man
Anonymous1

Beitrag von Anonymous1 »

khrismuc hat geschrieben:

Code: Alles auswählen

if (GetGlobalInt(0) == 0) {
  DisplaySpeech(GetPlayerCharacter(),"Darin war eine Schraube.");
  AddInventory(1);
  SetGlobalInt (0,1) // (Anmerk.: Dadurch wird beim GlobalInt die   Variable 1 eingeschaltet.)
}
else if (GetGlobalInt(0) == 1) {
  DisplaySpeech(GetPlayerCharacter(),"Das wars. Mehr war nich' drin.");
}
Nachmacher!

Quatsch, aber wie khrismuc es besser geschildert hat, funktioniert es auch. :wink:
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Nachmacher?? Ich hab nur die Fehler im code verbessert, damit er auch funktioniert.

Nachtrag:
@Mulle: Schon klar, das es nur ein Spass war. Aber mein code funktioniert nicht "auch", sondern nur meiner funktioniert :mrgreen:
Zuletzt geändert von KhrisMUC am 06.10.2005, 21:26, insgesamt 1-mal geändert.
Use gopher repellent on funny little man
Anonymous1

Beitrag von Anonymous1 »

khrismuc hat geschrieben:Nachmacher?? Ich hab nur die Fehler im code verbessert, damit er auch funktioniert.
Das habe ich nicht Ernst gemeint!!!

Deswegen habe ich im nächsten Satz "Quatsch" hingeschrieben, um meine vorherige Aussage als falsch zu interpretieren.
(Verdammte Wahrheitstafeln in Mathematik!!!)
Benutzeravatar
Lak
Rätselmeister
Rätselmeister
Beiträge: 1586
Registriert: 27.02.2005, 10:43
Wohnort: London (England)

Beitrag von Lak »

Eieieieiei.

Wenn ich mal kurz vom Thema weg darf, ohne das ihr mich gleich Spam vorwerft.

'n Zwölfjähriger? Oh, wie süß :lol: Also ich find's geil das hier jetzt mal jemand ist der richtig jünger ist als ich als einer der wenig unter 17-jährigen, wir sind nich mehr die jüngsten :twisted: :twisted: :lol:

Welcome, Green.
...
Benutzeravatar
Tentakel
Hobby-Archäologe
Hobby-Archäologe
Beiträge: 107
Registriert: 06.10.2005, 18:15
Wohnort: Weißenborn
Kontaktdaten:

Danke

Beitrag von Tentakel »

Danke an euch alle. ich glaube ihr habt mir sehr geholfen. If hier jemand noch was zu GlobalIntegers schreiben könnte, da ich nich weiß, was das ist. wäre icch euch dankbar :arrow:
[ZENSIERT]
Adventure-Gott
Adventure-Gott
Beiträge: 4575
Registriert: 13.07.2004, 14:04
Wohnort: Da wo muss
Kontaktdaten:

Beitrag von [ZENSIERT] »

Lak hat geschrieben:'n Zwölfjähriger? Oh, wie süß :lol: Also ich find's geil das hier jetzt mal jemand ist der richtig jünger ist als ich als einer der wenig unter 17-jährigen, wir sind nich mehr die jüngsten :twisted: :twisted: :lol:
Ich sag nur Agent Katze ;)
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
Benutzeravatar
Mister L
Rätselmeister
Rätselmeister
Beiträge: 1913
Registriert: 21.03.2005, 01:55
Kontaktdaten:

Beitrag von Mister L »

Eigentlich isses ganz einfach:

Ein "GlobalInt" ist eine Zahl der man einen Wert zuordnen kann.
In AGS kannst du 500 "GlobalInts" benutzen.

Beispiel: wenn du den "GlobalInt" 20 auf 1 setzt
SetGlobalInt (20, 1);

dann sagt die Spielerfigur z.B. "Da ist nichts drin"

Wenn du dann den "GlobalInt" 20 auf 2 setzt
SetGlobalInt (20, 2);

kannst du die Figur etwas anderes sagen lassen: "Da habe ich schon nachgesehen"


Dazu musst du im Skript immer die Funktion
if (GetGlobalInt(20) == 1) {
benutzen.

Wenn du ein Starterpack benutzt solltest du nicht mit GlobalInt 1 anfangen, weil die Starterpacks schon einige verwenden. Am besten du fängst bei 20 oder 30 an, weil ein einmal gesetzter Wert immer für das ganze Spiel gültig ist. Daher sollte man eine "GobalInt" immer nur für eine bestimmte Aktion einsetzen.
Benutzeravatar
Tentakel
Hobby-Archäologe
Hobby-Archäologe
Beiträge: 107
Registriert: 06.10.2005, 18:15
Wohnort: Weißenborn
Kontaktdaten:

aha

Beitrag von Tentakel »

ok

also ich setze die GloblInt 31 auf 1

SetGlobalInt(31, 1);

Dann rufe ich bei schau an kiste

GetGlobalInt(31); auf und prüfe
if GlobalInt(31) = 1 then person sagt
DisplaySpeech(GetPlayerCharacter(), "Da drin war ein Nagel");
und dann
SetGlobalInt(31, 2); und wenn 31 nicht 1 ist, dann

else
DisplaySpeech(GetPlayerCharcter(), "Mehr is nich drin.");



bei fehlern bitte korrigieren
Benutzeravatar
Floyd
Logik-Lord
Logik-Lord
Beiträge: 1088
Registriert: 14.03.2004, 19:59

Beitrag von Floyd »

Dann rufe ich bei schau an kiste

GetGlobalInt(31); auf und prüfe
Das bewirkt nichts (außer einer Fehlermeldung) , also weg damit :wink: .

Die Zeile, in der der Wert abgeprüft wird, müsste so aussehen:
if (GetGlobalInt(31) == 1) {

Vergiss aber nicht, die Klammer nach "SetGlobalInt(...);" wieder zu schließen.

Da AGS auf C++ basiert, gibt es hier kein then oder End If, sondern Klammern.

MfG Floyd
Benutzeravatar
ManiakFreak
Tastatursteuerer
Tastatursteuerer
Beiträge: 510
Registriert: 01.06.2005, 16:13
Wohnort: Thun (CH)
Kontaktdaten:

Beitrag von ManiakFreak »

Nur noch einen Tipp: Du kannst auch das Script vom Portemonnaie hervorrufen.

Code: Alles auswählen

if (UsedAction (A_OPEN)) {
  if (GetGlobalInt(25)==0) {
    PlaySound(77);
    AddInventory(7);
    DisplaySpeech(GetPlayerCharacter(),"Bis auf eine alte Briefmarke war da nichts drin.");
    SetGlobalInt(25,1);
  }
  else {
    DisplaySpeech(GetPlayerCharacter(),"Da ist nichts mehr zu holen.");
  }
}
Nein, Karussell fahren brauche ich nicht, mir wird schon allein von der Erdrotation schlecht.
Benutzeravatar
Tentakel
Hobby-Archäologe
Hobby-Archäologe
Beiträge: 107
Registriert: 06.10.2005, 18:15
Wohnort: Weißenborn
Kontaktdaten:

-

Beitrag von Tentakel »

also jetzt nochmal den ganzen code:

im first time player enters screen...
SetGlobalInt(31, 1);

und bei schau an kiste


if (GetGlobalInt(31) == 1) {
DisplaySpeech(GetPlayerCharacter(), "Da drin war ein Nagel");
AddInventory(20);
SetGlobalInt(31, 2);
}


DisplaySpeech(GetPlayerCharcter(), "Mehr is nich drin.");






oder???

danke für die hilfe (und im vorraus)
Benutzeravatar
Tentakel
Hobby-Archäologe
Hobby-Archäologe
Beiträge: 107
Registriert: 06.10.2005, 18:15
Wohnort: Weißenborn
Kontaktdaten:

-

Beitrag von Tentakel »

und danke auch an ManiacFreak, hab gepost, während du schon geschickt hattest.
Antworten