FRAGE an alle wegen SCRIPTS
- Tentakel
- Hobby-Archäologe
- Beiträge: 107
- Registriert: 06.10.2005, 18:15
- Wohnort: Weißenborn
- Kontaktdaten:
FRAGE an alle wegen SCRIPTS
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
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
Es gibt zwei Möglichkeiten:
Entweder du verwendest den Global-Skript, um eine andere Meldung abzugeben.
Als Beispiel:
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.
Entweder du verwendest den Global-Skript, um eine andere Meldung abzugeben.
Als Beispiel:
Diese Variation würde ich eher empfehlen.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.");
}
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.
- KhrisMUC
- Adventure-Gott
- Beiträge: 4674
- Registriert: 14.03.2005, 00:55
- Wohnort: München
So geht's besser:
(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
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.");
}
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
Nachmacher!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."); }
Quatsch, aber wie khrismuc es besser geschildert hat, funktioniert es auch.
- KhrisMUC
- Adventure-Gott
- Beiträge: 4674
- Registriert: 14.03.2005, 00:55
- Wohnort: München
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
Nachtrag:
@Mulle: Schon klar, das es nur ein Spass war. Aber mein code funktioniert nicht "auch", sondern nur meiner funktioniert
Zuletzt geändert von KhrisMUC am 06.10.2005, 21:26, insgesamt 1-mal geändert.
Use gopher repellent on funny little man
Das habe ich nicht Ernst gemeint!!!khrismuc hat geschrieben:Nachmacher?? Ich hab nur die Fehler im code verbessert, damit er auch funktioniert.
Deswegen habe ich im nächsten Satz "Quatsch" hingeschrieben, um meine vorherige Aussage als falsch zu interpretieren.
(Verdammte Wahrheitstafeln in Mathematik!!!)
- Lak
- Rätselmeister
- Beiträge: 1586
- Registriert: 27.02.2005, 10:43
- Wohnort: London (England)
-
- Adventure-Gott
- Beiträge: 4575
- Registriert: 13.07.2004, 14:04
- Wohnort: Da wo muss
- Kontaktdaten:
Ich sag nur Agent KatzeLak hat geschrieben:'n Zwölfjähriger? Oh, wie süß 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
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
Ausnahmen bestätigen die Regel
_________________
<Problem> Weil du denken kannst.
Zuletzt bearbeitet von [ZENSIERT] am 16.07.1759, 16:19, insgesamt 54743869-mal bearbeitet
- Mister L
- Rätselmeister
- Beiträge: 1913
- Registriert: 21.03.2005, 01:55
- Kontaktdaten:
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.
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.
- Tentakel
- Hobby-Archäologe
- Beiträge: 107
- Registriert: 06.10.2005, 18:15
- Wohnort: Weißenborn
- Kontaktdaten:
aha
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
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
- Floyd
- Logik-Lord
- Beiträge: 1088
- Registriert: 14.03.2004, 19:59
Das bewirkt nichts (außer einer Fehlermeldung) , also weg damit .Dann rufe ich bei schau an kiste
GetGlobalInt(31); auf und prüfe
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
Der verschwundene Husky - ein 2D Point&Click Adventure
Einen schönen Orbit, Bürger!
Einen schönen Orbit, Bürger!
- ManiakFreak
- Tastatursteuerer
- Beiträge: 510
- Registriert: 01.06.2005, 16:13
- Wohnort: Thun (CH)
- Kontaktdaten:
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.
- Tentakel
- Hobby-Archäologe
- Beiträge: 107
- Registriert: 06.10.2005, 18:15
- Wohnort: Weißenborn
- Kontaktdaten:
-
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)
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)