change player-char

Fragen zu "Adventure Game Studio"? Hier rein!
Antworten
falko-diekmann

change player-char

Beitrag von falko-diekmann »

Hallöle,

ich würde ganz gern an einem bestimmten Punkt den spielbaren Charakter wechseln, entweder generell, oder dem Spieler sogar die Wahl überlassen mit wem er weiter spielen möchte.
Ich weiß wohl das mit ags sowas hinzukriegen ist, hab aber in der Hilfe unter change player-character nichts derartiges gefunden.
Auch im Forum nicht, zumindest nicht unter obigen Stichwort.

Weiß einer nen einfachen Rat?
Benutzeravatar
Floyd
Logik-Lord
Logik-Lord
Beiträge: 1088
Registriert: 14.03.2004, 19:59

Beitrag von Floyd »

Für AGS 2.62:

Code: Alles auswählen

SetPlayerCharacter (Name);
Mit neueren Versionen kenne ich mich leider nicht aus, sorry.
MfG Floyd
Benutzeravatar
falko-diekmann
Verpackungs-Wegwerfer
Verpackungs-Wegwerfer
Beiträge: 91
Registriert: 01.11.2005, 15:31
Wohnort: Dortmund
Kontaktdaten:

Beitrag von falko-diekmann »

Hmm, ich verwende die v 2.70.
Ich werde das mal probieren, vielleicht klappet ja.
Aber in welches script muss das? room oder global?

Wenn der Spieler dann vor der Wahl steht, läuft der Befehl run script an, ne?...muss in dieses script wirklich nur dieser eine Befehl, oder kommt da noch mehr rein?
Muss ich dieses script irgendwie nummerieren damit ags weiß was es zu tun hat?

Zu meiner Schande muss ich nämlich gestehen das ich bislang mit den vorgefertigten Befehlen herumwerkle & nur sehr wenig gescriptet habe.
podthepunk
Hobby-Archäologe
Hobby-Archäologe
Beiträge: 122
Registriert: 15.02.2005, 14:59

Beitrag von podthepunk »

Aus der Helpfile zu AGS 27.1 rc2

Scripting ->Charcter functions and properties -> Set as Player
Helpfile hat geschrieben:SetAsPlayer
(Formerly known as SetPlayerCharacter, which is now obsolete)

Character.SetAsPlayer()

Changes the character which the player controls to the specified character. This function will also cause the room to change to the room which the chosen character is currently in (though as with ChangeRoom, the change won't happen until the end of the script).
Additionally, calling this command will cause the "player" variable to be updated to point to the specified character.

Example:

character[MAN].SetAsPlayer();

will change the character that the player controls to character MAN and also change to the room that MAN is in, if he is not in the current room.
Benutzeravatar
Floyd
Logik-Lord
Logik-Lord
Beiträge: 1088
Registriert: 14.03.2004, 19:59

Beitrag von Floyd »

Wenn der Spieler dann vor der Wahl steht, läuft der Befehl run script an, ne?...muss in dieses script wirklich nur dieser eine Befehl, oder kommt da noch mehr rein?
Wenn du einen Auswahlbildschirm erstellst, werden die Charaktere wohl über Hotspots oder direkt als Objekte auswählbar sein, nehme ich an.
Nun klickst du also z.B. bei Hotspot 1 auf den Button "Interaction" und fügst dann bei "Interact Hotspot" "run script" ein, in das du dann den Befehl schreibst (natürlich mit dem entsprechenden Charakter als Wert).
Das Spiel wechselt dann automatisch zu diesem, er sollte sich also schon im richtigen Raum befinden oder du müsstest ihn vor dem "SetAsPlayer" Befehl in eben diesen teleportieren mit NewRoomEx.
MfG Floyd
Benutzeravatar
falko-diekmann
Verpackungs-Wegwerfer
Verpackungs-Wegwerfer
Beiträge: 91
Registriert: 01.11.2005, 15:31
Wohnort: Dortmund
Kontaktdaten:

Beitrag von falko-diekmann »

Ich hab es jetzt so hinbekommen das ags keine Fehlermeldung bringt wenn das script anläuft. Leider passiert überhaupt nichts wenn man das entsprechende Objekt anklickt...NADA...

Ich finde es auch etwas merkwürdig das in der Hilfe steht man solle den Befehl mit "character" beginnen, obwohl das Programm den Begriff "character" gar nicht erkennt und nur das verkürzte "char" durchgehen lässt. Aber eben mit dem Resultat das sich nichts verändert und man immer noch den alten Charakter spielt.

Mein script-Befehl lautet:

char bald , setasplayer;

Das ganze script sieht so aus:

#sectionstart object1_a // DO NOT EDIT OR REMOVE THIS LINE
function object1_a() {
// script for Object 1: Interact object
char bald , setasplayer;
char bald , changeroom (65);
}
#sectionend object1_a // DO NOT EDIT OR REMOVE THIS LINE
Benutzeravatar
Floyd
Logik-Lord
Logik-Lord
Beiträge: 1088
Registriert: 14.03.2004, 19:59

...

Beitrag von Floyd »

Der Befehl lautet doch:

Code: Alles auswählen

character[MAN].SetAsPlayer();

Du musst also nur MAN durch den Namen deines Charakters ersetzen, mehr nicht.
Wie du auf
char bald , setasplayer;

kommst, kann ich mir nicht erklären, wo steht denn etwas derartiges?
Benutzeravatar
falko-diekmann
Verpackungs-Wegwerfer
Verpackungs-Wegwerfer
Beiträge: 91
Registriert: 01.11.2005, 15:31
Wohnort: Dortmund
Kontaktdaten:

Beitrag von falko-diekmann »

Asche auf mein Haupt :oops:

Ich hätte wohl nicht versuchen sollen den Befehl irgendwie abzuwandeln nachdem er beim ersten Mal nicht direkt gefunzt hat.
Hab es nun grad getestet und es funktioniert...kann ja gar nicht sagen wie peinlich mir das ist....

Aber wenn man alles allein macht steht man vielleicht auch manchmal zu dicht vor dem Problem um die Lösung zu sehen :oops:

Danke noch mal...
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Übrigens gibt es im MMM-Starterpack eigens eine Funktion namens SetPlayer(), ich weiß allerdings nicht, ob Du das pack verwendest oder nicht.
Wenn ja, würde ich diese benutzen.
Und ein Blick ins Handbuch schadet auch nicht ;)
Use gopher repellent on funny little man
Antworten