Ich habe das Problem, das die Matten nicht richtig funktionieren.
Wenn man an einer Matte zieht soll die Matte zu Seite geschoben werden und ein Schlüssel erscheinen. Irgendwie krieg ich das nicht hin.
Hotspot der Fußmatte:
else if (UsedAction (A_PULL))
{
if (MovePlayer (141,122))
{
FaceDirection(GetPlayerCharacter(),DIR_UP);
ObjectOn(1);
PlaySound(84);
if (GetGlobalInt(30)==1) {
SetGlobalInt(30,0);
ObjectOn(2);
}
}
}
Sprite von der gezogenen Matte:
else if (UsedAction (A_PUSH))
{
if (MovePlayer (141,122))
{
FaceDirection(GetPlayerCharacter(),DIR_UP);
ObjectOff(1);
PlaySound(84);
if (GetGlobalInt(31)==0) {
SetGlobalInt(31,1);
ObjectOff(2);
}
}
}
Schlüssel(Object(2)):
if (UsedAction(A_PICK_UP)) {
if (GetGlobalInt(29)==1) {
SetGlobalInt(31,1);
SetGlobalInt(30,1);
SetGlobalInt(29,0);
Wait(5);
PlaySound(4);
ObjectOff(2);
AddInventory(4);
}
}
Fußmatten
- KhrisMUC
- Adventure-Gott
- Beiträge: 4674
- Registriert: 14.03.2005, 00:55
- Wohnort: München
Ich kann auf den ersten Blick keinen grossen Fehler erkennen, aber ich weiss auch nicht, was die GlobalInts für eine Bedeutung haben und ob der erste Codeabschnitt beim Hotspot steht, oder doch beim Objekt.
Es wäre aber hilfreich, wenn Du dazusagst, was genau nicht funktioniert und was schon klappt.
Sonst kriegt man ein bisschen das Gefühl, dass Du weniger daran interessiert bist, Deinen Code zu verbessern, als vielmehr das fertige Skript auf dem Silbertablett präsentiert zu bekommen.
Davon abgesehen:
Am einfachsten ist es, wenn das Schlüsselobjekt eine niedrigere baseline als die Matte hat und die Matte mit Object.Move verschoben wird. eine GlobalInt gespart
Dann kann man auch über oMatte.X testen, ob sie verschoben wurde oder wieder am Ausgangspunkt liegt noch ne GlobalInt gespart
Da das Schlüsselobjekt immer sichtbar ist, kann man es nur einmal nehmen dritte GlobalInt gespart.
Weiterhin fällt mir auf, dass Du anscheinend am Anfang alle GIs auf 1 setzt, und sie dann auf 0 setzt, wenn etwas passiert ist.
Umgekehrt geht es auch, und dann musst Du nicht in der game_start (oder wo Du's sonst machst) alle GIs auf 1 setzen (denn GIs sind von Haus aus Null).
Es wäre aber hilfreich, wenn Du dazusagst, was genau nicht funktioniert und was schon klappt.
Sonst kriegt man ein bisschen das Gefühl, dass Du weniger daran interessiert bist, Deinen Code zu verbessern, als vielmehr das fertige Skript auf dem Silbertablett präsentiert zu bekommen.
Davon abgesehen:
Am einfachsten ist es, wenn das Schlüsselobjekt eine niedrigere baseline als die Matte hat und die Matte mit Object.Move verschoben wird. eine GlobalInt gespart
Dann kann man auch über oMatte.X testen, ob sie verschoben wurde oder wieder am Ausgangspunkt liegt noch ne GlobalInt gespart
Da das Schlüsselobjekt immer sichtbar ist, kann man es nur einmal nehmen dritte GlobalInt gespart.
Weiterhin fällt mir auf, dass Du anscheinend am Anfang alle GIs auf 1 setzt, und sie dann auf 0 setzt, wenn etwas passiert ist.
Umgekehrt geht es auch, und dann musst Du nicht in der game_start (oder wo Du's sonst machst) alle GIs auf 1 setzen (denn GIs sind von Haus aus Null).
Use gopher repellent on funny little man
Danke für die Tipps. Ich habe Experiemte gemacht und es geht jetzt.
Komisch? Das mit der Fußmatte war so leicht und ich hatte das nicht gewusst. Aber das mit den verschließbaren Schubladen in Daves Starterpack hab ich hingekriegt ohne Hilfe. Die kann man jetzt mit dem Schlüssel automatisch öffnen und verschließen.
Komisch? Das mit der Fußmatte war so leicht und ich hatte das nicht gewusst. Aber das mit den verschließbaren Schubladen in Daves Starterpack hab ich hingekriegt ohne Hilfe. Die kann man jetzt mit dem Schlüssel automatisch öffnen und verschließen.