Frage zum Script, das der Charakter sich nicht bewegt.

Fragen zu "Adventure Game Studio"? Hier rein!
Antworten
Benutzeravatar
Rayman
Logik-Lord
Logik-Lord
Beiträge: 1388
Registriert: 07.01.2006, 20:08

Frage zum Script, das der Charakter sich nicht bewegt.

Beitrag von Rayman »

Hallo,

es gibt ja viele Möglichkeiten, das der Charakter sich nicht bewegen soll, wenn er auf einer Walkablearea sich befindet.

Aber was ist der einfachste Scrip, dass sich der Charakter nicht bewegen soll und was ist der Scrip, das er sich wieder bewegen soll?
[ZENSIERT]
Adventure-Gott
Adventure-Gott
Beiträge: 4575
Registriert: 13.07.2004, 14:04
Wohnort: Da wo muss
Kontaktdaten:

Beitrag von [ZENSIERT] »

IMO am besten:

Walkable Area feststellen, auf der sich der Char befindet und diese dann an-/ausschalten:

Ausschalten:

Code: Alles auswählen

int area = GetWalkableAreaAt (cChar.x, cChar.y);
RemoveWalkableArea(area);
Anschalten:

Code: Alles auswählen

int area = GetWalkableAreaAt (cChar.x, cChar.y);
RestoreWalkableArea(area);
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
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Mir is grad langweilig :mrgreen:

Es geht noch kürzer:

Code: Alles auswählen

RemoveWalkableArea(GetWalkableAreaAt(player.x, player.y));
und
RestoreWalkableArea(GetWalkableAreaAt(player.x, player.y));
Use gopher repellent on funny little man
Benutzeravatar
Rayman
Logik-Lord
Logik-Lord
Beiträge: 1388
Registriert: 07.01.2006, 20:08

Beitrag von Rayman »

Besten Dank!

Jetzt weiß ich Bescheid! =D> :D

Es ist erstaunlich, was es bei AGS alles für Möglichkeiten gibt.
Benutzeravatar
Rayman
Logik-Lord
Logik-Lord
Beiträge: 1388
Registriert: 07.01.2006, 20:08

Beitrag von Rayman »

Hallo, ich habe eine neue Meldung:

ich hatte den
RemoveWalkableArea(GetWalkableAreaAt(player.x, player.y)); -
Scrip benutzt und wollte später in meinem Spiel die Walkablearea mit den Einschalt-Scrip
wieder anstellen, aber es kommt immer eine Fehlermeldung,
woran könnte das liegen?
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Poste doch bitte die Fehlermeldung, sonst können wir nur raten :roll:
Use gopher repellent on funny little man
Benutzeravatar
Rayman
Logik-Lord
Logik-Lord
Beiträge: 1388
Registriert: 07.01.2006, 20:08

Beitrag von Rayman »

Error: RestoreWalkableArea: invalid area number specified (1-15).
[ZENSIERT]
Adventure-Gott
Adventure-Gott
Beiträge: 4575
Registriert: 13.07.2004, 14:04
Wohnort: Da wo muss
Kontaktdaten:

Beitrag von [ZENSIERT] »

Weg:

Code: Alles auswählen

int area = GetWalkableAreaAt (cChar.x, cChar.y);
if(area>0 && area<16) RestoreWalkableArea(area);
Hin:

Code: Alles auswählen

int area = GetWalkableAreaAt (cChar.x, cChar.y);
if(area>0 && area<16) RemoveWalkableArea(area);
hehe, mach den mal kürzer, khrismuc :twisted:
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
Rayman
Logik-Lord
Logik-Lord
Beiträge: 1388
Registriert: 07.01.2006, 20:08

Beitrag von Rayman »

Ich habe den Verwendet, aber wenn ich einen Gegenstand mit einem Object verwende, dann soll sich die Figur wieder bewegen, aber der RestoreWalkableArea(area);-Scrip funktioniert nicht.
Die Figur bleibt immer noch stehn und rührt sich nicht.

Woran könnte das Problem liegen?
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Zensi, Du hast Restore und Remove vertauscht :twisted:

Code: Alles auswählen

// room script
int area=1;

...

function irgendwas() {
  // interaction, nach der der Spieler sich nicht mehr bewegen kann
  area=GetWalkableAreaAt(player.x-GetViewportX(), player.y-GetViewPortY());
  RemoveWalkableArea(area);
}

...

function objectX_y() {
  // script for Object X (name): Use inventory on object
  if (...) {
    RestoreWalkableArea(area);
    ...
  }  
}
Selbstverständlich kannst Du diesen Code nicht 1:1 übernehmen, das ist klar, Du musst natürlich RunScript-Interactions benutzen, die die functions dann erstellen.

PS: Eine Folge von mehreren Befehlen: Script/Skript
Use gopher repellent on funny little man
[ZENSIERT]
Adventure-Gott
Adventure-Gott
Beiträge: 4575
Registriert: 13.07.2004, 14:04
Wohnort: Da wo muss
Kontaktdaten:

Beitrag von [ZENSIERT] »

khrismuc hat geschrieben:Zensi, Du hast Restore und Remove vertauscht :twisted:
Nein, ich hab nur "hin" und "weg" vertauscht. Nächstes Mal überprüf deine Aussagen nochmal :twisted:
khrismuc hat geschrieben:PS: Eine Folge von mehreren Befehlen: Script/Skript
Ach nein... das Ganze heißt dann doch Programm ;)
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
Rayman
Logik-Lord
Logik-Lord
Beiträge: 1388
Registriert: 07.01.2006, 20:08

Beitrag von Rayman »

Ich will euch nicht die Seele vom Leib ausfragen, aber das Problem geht weiter.

Ich hatte bei "Player enters screen (after fadein)

int area = GetWalkableAreaAt (player.x, player.y);
if(area>0 && area<16) RemoveWalkableArea(area);

benutzt und beim Object hatte ich bei "Use Inventory on Object"

if (UsedAction(A_USE_INV)) {
if (character[GetPlayerCharacter()].activeinv == 21) {
DisplaySpeech(GetPlayerCharacter(),"(--GEHEIM--);
Wait(20);
ChangeCharacterView(GetPlayerCharacter(), 9);
SetCharacterSpeechView(GetPlayerCharacter(), 10);
SetGlobalInt(53, 1);
SetGlobalInt(64, 0);
int area = GetWalkableAreaAt (player.x, player.y);
if(area>0 && area<16) RestoreWalkableArea(area);
}
}

geschrieben. Wie könnte ich das mit den Run-Script so dollmetschen? :oops: :roll: :oops: :( :?:
[ZENSIERT]
Adventure-Gott
Adventure-Gott
Beiträge: 4575
Registriert: 13.07.2004, 14:04
Wohnort: Da wo muss
Kontaktdaten:

Beitrag von [ZENSIERT] »

Code: Alles auswählen

int area = GetWalkableAreaAt (player.x, player.y);
if(area>0 && area<16) RemoveWalkableArea(area);
SetGlobalInt(110, area);

Code: Alles auswählen

if (UsedAction(A_USE_INV)) {
if (character[GetPlayerCharacter()].activeinv == 21) {
DisplaySpeech(GetPlayerCharacter(),"(--GEHEIM--);
Wait(20);
ChangeCharacterView(GetPlayerCharacter(), 9);
SetCharacterSpeechView(GetPlayerCharacter(), 10);
SetGlobalInt(53, 1);
SetGlobalInt(64, 0);
int area = GetGlobalInt(110);
if(area>0 && area<16) RestoreWalkableArea(area);
}
} 
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
Rayman
Logik-Lord
Logik-Lord
Beiträge: 1388
Registriert: 07.01.2006, 20:08

Beitrag von Rayman »

Ich bedanke mich bei khrismuc und ZENSI das ihr mir geholfen habt.
Ich bin nun weiter gekommen. :D :arrow: \:D/
Antworten