Seite 1 von 3

FRAGE an alle wegen SCRIPTS

Verfasst: 06.10.2005, 18:30
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:

Verfasst: 06.10.2005, 18:38
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.

Verfasst: 06.10.2005, 19:11
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

Verfasst: 06.10.2005, 19:13
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:

Verfasst: 06.10.2005, 19:15
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:

Verfasst: 06.10.2005, 19:23
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!!!)

Verfasst: 06.10.2005, 19:45
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.

Danke

Verfasst: 09.10.2005, 17:08
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:

Verfasst: 09.10.2005, 17:25
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 ;)

Verfasst: 09.10.2005, 17:27
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.

aha

Verfasst: 09.10.2005, 17:56
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

Verfasst: 09.10.2005, 18:27
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

Verfasst: 09.10.2005, 18:39
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.");
  }
}

-

Verfasst: 09.10.2005, 18:40
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)

-

Verfasst: 09.10.2005, 18:46
von Tentakel
und danke auch an ManiacFreak, hab gepost, während du schon geschickt hattest.