Teleportieren

Fragen zu "Adventure Game Studio"? Hier rein!
Antworten
Gast

Teleportieren

Beitrag von Gast »

hallo

gibt es auch einen befehl, womit man den Spieler teleportieren kann, wenn er sich auf einem bestimmten gebiet befindet? :shock:

danke!
Benutzeravatar
PhanTomAs
Adventure-Gott
Adventure-Gott
Beiträge: 3352
Registriert: 14.08.2003, 18:11
Wohnort: Auf'm Mars

Beitrag von PhanTomAs »

Beam me up, Scotty! :mrgreen:
Totoro
Profi-Abenteurer
Profi-Abenteurer
Beiträge: 915
Registriert: 26.07.2003, 19:10
Wohnort: Osaka

Beitrag von Totoro »

Klar gibts das, sogar im normalen event editor... "player stands on hotsport" gibt es da, und dort kannst du dann entsprechende Aktionen auswählen (im Falle eines Teleporters also vermutlich erst eine Animation einspielen, und dann Player - go to a different room"


P.S.: Juhu, 200. Post :D
Zuletzt geändert von Totoro am 18.03.2004, 01:53, insgesamt 1-mal geändert.
Gast

Beitrag von Gast »

nee, noch besser!

man braucht sich garnicht zu teleportieren, sondern man soll nur auf einem gebiet unsichtbar werden, damit man so automatisch zum punkt b gelangt und dann wieder sichtbar wird.

das wär cool und das wär genau das richtige, was ich für mein adventure brauch
Totoro
Profi-Abenteurer
Profi-Abenteurer
Beiträge: 915
Registriert: 26.07.2003, 19:10
Wohnort: Osaka

Beitrag von Totoro »

Dann musst du "set character view" aktivieren, wenn du auf dem unsichtbar-mach-teleporter-feld läufst. Ganz unsichtbar ist für den Spieler vielelicht etwas unübersichtlich, aber vielleciht den Charakter mit hoher Transparenz oder so :)
Gast

Beitrag von Gast »

hm, und wie mach ich den player transparent?

und muss das ein region- oder ein walkableareafeld sein?

vielen dank :D
Totoro
Profi-Abenteurer
Profi-Abenteurer
Beiträge: 915
Registriert: 26.07.2003, 19:10
Wohnort: Osaka

Beitrag von Totoro »

Den Charakter kann man direkt mit dem Befehl
SetCharacterTransparency (CHARID, int amount);
in einem Script transparent machen, wobei du für CHARID die ID des Charakters (für den Hauptcharakter in der Regel EGO) und für int amount den Prozentwert der Transparenz angeben musst, 100 wäre z.B. völlig unsichtbar.
Ich würde einen Hotspot benutzen. Und dann "Player stands on Hotspot" als Interaktion auswählen, run script und im script den Transparenz-Befehl.
Gast

Beitrag von Gast »

und wie mach ich den spieler wieder sichtbar?
Gast

Beitrag von Gast »

Es funzt nich :(

So sieht übrigens mein Script aus

function hotspot1_a() {
// script for hotspot1: Player stands on hotspot (obsolete, use Regions)
SetCharacterTransparency (EGO. int 100);
MoveCharacterBlocking(EGO,474,79,0);
}
Totoro
Profi-Abenteurer
Profi-Abenteurer
Beiträge: 915
Registriert: 26.07.2003, 19:10
Wohnort: Osaka

Beitrag von Totoro »

ohne "int", int bedeutet "integer", also Zahlenwert, ist sozusagen mit "amount" zusammen den Platzhalter für deine 100.
Den Charakter machst du wieder sichtbar, in dem du an gewünschter Stelle den Transparenz-Wert wieder auf 0 setzt.
Ich würde die Transparenz übrigens nie ganz auf 100 setzen, dann weiß ja der Spieler gar nicht was lost ist...
[ZENSIERT]
Adventure-Gott
Adventure-Gott
Beiträge: 4575
Registriert: 13.07.2004, 14:04
Wohnort: Da wo muss
Kontaktdaten:

Beitrag von [ZENSIERT] »

Füge das mal ganz oben in den Room Script ein:

Code: Alles auswählen

function beam(int chas, int anz, int izz) {
  SetCharacterTransparency(chas, 0);
  Wait(5);
  SetCharacterTransparency(chas, 10);
  Wait(5);
  SetCharacterTransparency(chas, 20);
  Wait(5);
  SetCharacterTransparency(chas, 30);
  Wait(5);
  SetCharacterTransparency(chas, 40);
  Wait(5);
  SetCharacterTransparency(chas, 50);
  Wait(5);
  SetCharacterTransparency(chas, 60);
  Wait(5);
  SetCharacterTransparency(chas, 70);
  Wait(5);
  SetCharacterTransparency(chas, 80);
  Wait(5);
  SetCharacterTransparency(chas, 90);
  Wait(5);
  SetCharacterTransparency(chas, 100);
  Wait(5);
  MoveCharacterBlocking(chas, anz, izz, 1);
  Wait(80);
  SetCharacterTransparency(chas, 100);
  Wait(5);
  SetCharacterTransparency(chas, 90);
  Wait(5);
  SetCharacterTransparency(chas, 80);
  Wait(5);
  SetCharacterTransparency(chas, 70);
  Wait(5);
  SetCharacterTransparency(chas, 60);
  Wait(5);
  SetCharacterTransparency(chas, 50);
  Wait(5);
  SetCharacterTransparency(chas, 40);
  Wait(5);
  SetCharacterTransparency(chas, 30);
  Wait(5);
  SetCharacterTransparency(chas, 20);
  Wait(5);
  SetCharacterTransparency(chas, 10);
  Wait(5);
  SetCharacterTransparency(chas, 0);
  Wait(5);
  }
Und in diesem Raum kannst du dann so eine Zeile einfügen:

Code: Alles auswählen

Beam(EGO, 17, 18);
Eine mögliche Beschreibung in der Hilfe:
Beam

Beam(int char, int x, int, y)
Beamt den Spieler an eine bestiimte Stelle im Raum.

CHAR ist der Charakter, der gebeamt wird.
X und Y sind die Koordinaten, an die gebeamt werden

Beispiel:

string didl;
InputBox("Wohin wollen Sie", didl);
if(StrComp(didl, "Tür") == 0) {
Beam(EGO, 31, 17);
}
else {
Display("Reiseziel nicht bekannt");
}
Ihr könnt mich gerne berichtigen, wenn ihr wollt, ich bekomme das nämlich nicht in den Global Script (Undenifed token 'beam')

Danke für alle Antworten
[ZENSIERT]
Adventure-Gott
Adventure-Gott
Beiträge: 4575
Registriert: 13.07.2004, 14:04
Wohnort: Da wo muss
Kontaktdaten:

Beitrag von [ZENSIERT] »

Hi, hab das Beam-Script nochmal erneuert!

Code: Alles auswählen

function CharacterBeam(int chas, int anz, int izz, int sou, int mys) { 
  SetCharacterTransparency(chas, 0); 
  if(sou != 0) {
  PlaySoundEx(sou, 5);
  }
  Wait(5); 
  SetCharacterTransparency(chas, 10); 
  Wait(5); 
  SetCharacterTransparency(chas, 20); 
  Wait(5); 
  SetCharacterTransparency(chas, 30); 
  Wait(5); 
  SetCharacterTransparency(chas, 40); 
  Wait(5); 
  SetCharacterTransparency(chas, 50); 
  Wait(5); 
  SetCharacterTransparency(chas, 60); 
  Wait(5); 
  SetCharacterTransparency(chas, 70); 
  Wait(5); 
  SetCharacterTransparency(chas, 80); 
  Wait(5); 
  SetCharacterTransparency(chas, 90); 
  Wait(5); 
  SetCharacterTransparency(chas, 100); 
  Wait(5); 
  character[chas].x =anz;
  character[chas].x =izz;
  Wait(80); 
  if(mys == 1) {
    if(sou != 0) {
    PlaySoundEx(sou, 5);
    }
    }
  SetCharacterTransparency(chas, 100); 
  Wait(5); 
  SetCharacterTransparency(chas, 90); 
  Wait(5); 
  SetCharacterTransparency(chas, 80); 
  Wait(5); 
  SetCharacterTransparency(chas, 70); 
  Wait(5); 
  SetCharacterTransparency(chas, 60); 
  Wait(5); 
  SetCharacterTransparency(chas, 50); 
  Wait(5); 
  SetCharacterTransparency(chas, 40); 
  Wait(5); 
  SetCharacterTransparency(chas, 30); 
  Wait(5); 
  SetCharacterTransparency(chas, 20); 
  Wait(5); 
  SetCharacterTransparency(chas, 10); 
  Wait(5); 
  SetCharacterTransparency(chas, 0); 
  Wait(5); 
  }
Das gehört ein Museum! Ähh... ich meine ins GlobalScript
In den Global Script Header:

Code: Alles auswählen

import function CharacterBeam(CHARID,int x,int y,int sound,int style);
Die Befehle:

CHARID = Name des Charakters
x, y = Koordinaten
sound = abzuspielender Sound (0 für keinen)
style = Wenn Ton aktiviert ist:
0: Nur am Anfang Beamgeräusch
1: Auch beim Wiederkehren Geräusch (Myst-Style)

Ach ja, im Raum sieht das Script so aus:

Code: Alles auswählen

CharacterBeam(EGO, 15, 39, 0, 0);
Die Idee ist übrigens, dass der Charakter nach und nach ausblendet und dann, für den Benutzer unsichtbar, zum Zielpunkt geht und dann wieder erscheint
Zuletzt geändert von [ZENSIERT] am 09.08.2004, 22:40, insgesamt 1-mal geändert.
Benutzeravatar
Rocco
Adventure-Treff
Adventure-Treff
Beiträge: 1019
Registriert: 25.11.2003, 16:20
Wohnort: Ronville
Kontaktdaten:

Beitrag von Rocco »

für das fortlaufende ändern eines wertes ist es einfacher schleifen zu verwenden,


zB

Code: Alles auswählen

int i = 0;
while (i  < 100) {

  SetCharacterTransparency(chas, i); 
  Wait(5);
  i += 10;
}



[ZENSIERT]
Adventure-Gott
Adventure-Gott
Beiträge: 4575
Registriert: 13.07.2004, 14:04
Wohnort: Da wo muss
Kontaktdaten:

Beitrag von [ZENSIERT] »

Auch wahr, aber dann geht das mit den Tönen nicht.

Wer was damit anfangen kann...
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
[ZENSIERT]
Adventure-Gott
Adventure-Gott
Beiträge: 4575
Registriert: 13.07.2004, 14:04
Wohnort: Da wo muss
Kontaktdaten:

Beitrag von [ZENSIERT] »

Ach so, das sieht dann wohl so aus

Code: Alles auswählen

function beam(int chas, int xpos, int ypos, int sound, int mys) {
int i = 0;
if(sound != 0) {
  PlaySound(sound);
  }
while (i  < 100) { 

  SetCharacterTransparency(chas, i); 
  Wait(5); 
  i += 10; 
}
MoveCharacterBlocking(chas, xpos, ypos);
If(Sound != 0) {
  if(mys == 1) {
    PlaySound(sound);
    }
  }
int a = 100;
while (a  > 0) { 

  SetCharacterTransparency(chas, a); 
  Wait(5); 
  i -= 10; 
}
Keine Ahnung, ob das funktioniert...
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
Antworten