2 chars - und nun??

Fragen zu "Adventure Game Studio"? Hier rein!
Antworten
Benutzeravatar
Sylana voisin
Komplettlösungsnutzer
Komplettlösungsnutzer
Beiträge: 18
Registriert: 10.10.2002, 15:53
Wohnort: ganz tief drin in AGS!!

2 chars - und nun??

Beitrag von Sylana voisin »

???

Also, ich habe 2 Chars. die aktiv Spielen. Wie schaffe ich es, dass die beiden sich ihre Gegenstände im Inventar gegenseitig zuschieben können (wie bei maniac oder zak)

ich habe folgendes versucht:
Steht bei intercat der chars jeweils angepasst drinnen!
int taste;
taste = GetGlobalInt(299);

if (taste == 2) {

MoveCharacterBlocking ( GetPlayerCharacter(), character[ZIELPERSON].x - 30, character[ZIELPERSON].y, 0);

FaceCharacter ( GetPlayerCharacter(), ZIELPERSON);
FaceCharacter ( ZIELPERSON, GetPlayerCharacter());
character[ZIELPERSON].inv[INV-NR.]+=1;
LoseInventory(INV-NR.);


}
das klappt soweit ja auch, wenn ich den Char auf die ZIELPERSON wechsle und dann dort das getauschte Item benutzen will, kommt diese Fehlermeldung:

(Global script line 94)
ERROR: GetInvName: invalid inventory item specified

Also mal im Klartext, wo liegt mein Denkfehler?

Es muss doch möglich sein, dies zu realisieren.
Und wie erreiche ich das, dass es mit jedem Item funktioniert, aber nur bei den 2 Spielchars??
Nur ein Genie
kann meinem geistigen Wirrwar folgen ;)
LucasFan
Tastatursteuerer
Tastatursteuerer
Beiträge: 535
Registriert: 02.03.2002, 14:40
Wohnort: Ronville

Re:2 chars - und nun??

Beitrag von LucasFan »

Hast du für alle Interactions des Items den GetPlayerCharacter() verwendet?
Benutzeravatar
Sylana voisin
Komplettlösungsnutzer
Komplettlösungsnutzer
Beiträge: 18
Registriert: 10.10.2002, 15:53
Wohnort: ganz tief drin in AGS!!

Re:2 chars - und nun??

Beitrag von Sylana voisin »

jup,
sonst könnte ich mit dem 2. char ja keine türen öffnen usw.
Nur ein Genie
kann meinem geistigen Wirrwar folgen ;)
LucasFan
Tastatursteuerer
Tastatursteuerer
Beiträge: 535
Registriert: 02.03.2002, 14:40
Wohnort: Ronville

Re:2 chars - und nun??

Beitrag von LucasFan »

Das habe ich in der Hilfe gefunden:

UpdateInventory();

If you add or remove inventory items manually (ie. by using the character[].inv[] variables rather than the AddInventory/LoseInventory functions), the display may not get updated. In this case, after making your changes, call this function to update what is displayed to the player.


Da ich allerdings noch nie mit zwei Chars gleichzeitig gearbeitet habe, weiß ich nicht ob’s daran liegt.
Benutzeravatar
Sylana voisin
Komplettlösungsnutzer
Komplettlösungsnutzer
Beiträge: 18
Registriert: 10.10.2002, 15:53
Wohnort: ganz tief drin in AGS!!

Re:2 chars - und nun??

Beitrag von Sylana voisin »

auch das hab ich integriert beim wechsel der chars.

das problem ist noch mal, der zielchar hat das item im inventar, nur sobald ich damit interagiere, kommt es zur besagten fehlermeldung.
Nur ein Genie
kann meinem geistigen Wirrwar folgen ;)
Benutzeravatar
Sylana voisin
Komplettlösungsnutzer
Komplettlösungsnutzer
Beiträge: 18
Registriert: 10.10.2002, 15:53
Wohnort: ganz tief drin in AGS!!

Re:2 chars - und nun??

Beitrag von Sylana voisin »

kleine Ergänzung noch:

wenn ich den gegenstand wieder zurückgeben will, kommt die fehlermeldung, sobald ich "Gib" und dann den gegenstand anwähle...

alles andere funktioniert
Nur ein Genie
kann meinem geistigen Wirrwar folgen ;)
Benutzeravatar
Sylana voisin
Komplettlösungsnutzer
Komplettlösungsnutzer
Beiträge: 18
Registriert: 10.10.2002, 15:53
Wohnort: ganz tief drin in AGS!!

Re:2 chars - und nun??

Beitrag von Sylana voisin »

urgs, ... :-\

wenn ich das spiel starte, und den char wechsle, dann mit diesem einen gegenstand aufnehme, kommt die fehlermeldung auch, sobald ich gib verwende,

ist also abhängig davon, welchen char ich als playerchar definiere in den einstellungen.

könnte es sein, das ich für den 2. char ein eigenes inventar definieren muss??
Nur ein Genie
kann meinem geistigen Wirrwar folgen ;)
Benutzeravatar
Sylana voisin
Komplettlösungsnutzer
Komplettlösungsnutzer
Beiträge: 18
Registriert: 10.10.2002, 15:53
Wohnort: ganz tief drin in AGS!!

Re:2 chars - und nun??

Beitrag von Sylana voisin »

also hier kurz ein teil meines blobal scripts:
string buffer, text;
int cur_mode, mode;
// Fussschritte hörbar
if((character[MARIE].frame == 4))
{PlaySound(1);}
// Initialize the status line to display the score
StrCopy (text, "");
mode = GetGlobalInt(299);
// Now, add text depending on the mode
cur_mode = GetCursorMode();
// Je nach Cursor-Modus wird jetzt ein Verb in die Statuszeile geschrieben
if (cur_mode == MODE_WALK) StrCat(text,"Gehe zu ");
else if (cur_mode == MODE_LOOK) StrCat (text,"Schau an ");
else if (cur_mode == MODE_USE) {
if (mode == 7) StrCat(text,"Benutze ");
if (mode == 2) StrCat(text,"Gib ");
}
else if (cur_mode == MODE_TALK) StrCat(text,"Rede mit ");
else if (cur_mode == 5) StrCat(text,"Nimm ");
else if (cur_mode == 4) {
if (mode ==7) {
StrCat(text,"Benutze ");
GetInvName (player.activeinv, buffer);
StrCat(text,buffer);
StrCat(text," mit ");
}
if (mode ==2) {
StrCat(text,"Gib ");
GetInvName (player.activeinv, buffer); // hier krachts!!!!!!!!!!!!!!!!!!!


StrCat(text,buffer);
StrCat(text," an ");
}
}
else if (cur_mode == 8) {
if (GetGlobalInt(299) == 1) StrCat(text,"Schliesse ");
if (GetGlobalInt(299) == 2) {
StrCat(text,"Gib ");
StrCat(text," mit ");
}
if (GetGlobalInt(299) == 3) StrCat(text,"%ffne ");
if (GetGlobalInt(299) == 4) StrCat(text,"Dr}cke ");
if (GetGlobalInt(299) == 5) StrCat(text,"Ziehe ");
}
ich hoffe, das hilft bei der fehlersuche
:-*
Nur ein Genie
kann meinem geistigen Wirrwar folgen ;)
LucasFan
Tastatursteuerer
Tastatursteuerer
Beiträge: 535
Registriert: 02.03.2002, 14:40
Wohnort: Ronville

Re:2 chars - und nun??

Beitrag von LucasFan »

Ich hab' das mit den 2 Chars eben ausprobiert und weiß nun was du meinst. Könnte vielleicht ein Bug sein. Jedenfalls scheint GetInvItem den Gegenstand nicht zu erkennen. Wohl ein Fall für Chris. Es gäbe natürlich noch die Möglichkeit über GlobalInts bei jedem Wechsel das gerade passende AddInventory() & LoseInventory() für den aktiven Char ablaufen zu lassen, aber diese Arbeit macht sich kein vernünftiger Mensch. Das Gib ebenfalls nicht funktioniert ist auch klar, da beide denselben Befehl ausführen. Naja, mal schlau machen…
LucasFan
Tastatursteuerer
Tastatursteuerer
Beiträge: 535
Registriert: 02.03.2002, 14:40
Wohnort: Ronville

Re:2 chars - und nun??

Beitrag von LucasFan »

Das ist jetzt nur ein Gedanke, aber hast du mal versucht GetInvName(player.activeinv, buffer); durch GetInvName(GetPlayerCharacter(), buffer); zu ersetzen?
Benutzeravatar
Sylana voisin
Komplettlösungsnutzer
Komplettlösungsnutzer
Beiträge: 18
Registriert: 10.10.2002, 15:53
Wohnort: ganz tief drin in AGS!!

Re:2 chars - und nun??

Beitrag von Sylana voisin »

naja, nun kommen wir der sache langsam näher ;)

der Fehler kommt nicht mher, allerding...

ags würfelt nun die bezeichnungen für item durcheinander

ich übergebe ein messer, ist invitem 4

im inventory ist es auch ein messer, bei beiden chars

die bezeichnung im statusfenster fällt dann so aus:

ich mach gib messer an SIE
im statusfenster taucht aber auf gib cup of water an SIE
ein item mit der bezeichnung hatte ich noch nie integriert

wenn ich dann mit ihr das messer zurückgeben will..
icon stimmt auch da wieder, aber als text taucht bei ihr auf:
gib schaufel an ihn
schaufel ist item1

also, was stimmt hier noch nicht???


btw. wie kann ich die invitemnr. die ich wechsle automatisch in loseinventory(?) bzw charakter[sie].inv[?] +=1 übernehmen,
habe keine lust, für jedes item eine extra abfrage zu generieren
Nur ein Genie
kann meinem geistigen Wirrwar folgen ;)
LucasFan
Tastatursteuerer
Tastatursteuerer
Beiträge: 535
Registriert: 02.03.2002, 14:40
Wohnort: Ronville

Re:2 chars - und nun??

Beitrag von LucasFan »

Noch ein Versuch...

GetInvName (character[GetPlayerCharacter()].activeinv, buffer);
Benutzeravatar
Sylana voisin
Komplettlösungsnutzer
Komplettlösungsnutzer
Beiträge: 18
Registriert: 10.10.2002, 15:53
Wohnort: ganz tief drin in AGS!!

Re:2 chars - und nun??

Beitrag von Sylana voisin »

Jup, nun klapts :o :o :o ;D


fehlt nur noch die möglichkeit, nicht nur den initemnamen auszulesen, sondernauch die itemnummer, zwecks übergabe an loseinventory, verstehst du, was ich meine??
Nur ein Genie
kann meinem geistigen Wirrwar folgen ;)
Benutzeravatar
Sylana voisin
Komplettlösungsnutzer
Komplettlösungsnutzer
Beiträge: 18
Registriert: 10.10.2002, 15:53
Wohnort: ganz tief drin in AGS!!

Re:2 chars - und nun??

Beitrag von Sylana voisin »

zur veranschaulichung:
function character1_a() {
// script for character1: Use inventory on character

int taste;
taste = GetGlobalInt(299);

if (taste == 2) {
MoveCharacterBlocking ( GetPlayerCharacter(), character[MARIE].x - 30, character[MARIE].y, 0);

FaceCharacter ( GetPlayerCharacter(), MARIE);
FaceCharacter ( MARIE, GetPlayerCharacter());

character[MARIE].inv[(character[GetPlayerCharacter()].activeinv)]+=1;
LoseInventory((character[GetPlayerCharacter()].activeinv));
}
else Display("Lieber nicht");
}
ich hab das mal versucht, um automatisch die passende item-nr. zu übergeben, leider klappt das nicht, kann wer helfen?
Nur ein Genie
kann meinem geistigen Wirrwar folgen ;)
LucasFan
Tastatursteuerer
Tastatursteuerer
Beiträge: 535
Registriert: 02.03.2002, 14:40
Wohnort: Ronville

Re:2 chars - und nun??

Beitrag von LucasFan »

Du kannst einen aber auch beschäftigen… ;)

int invname = (character[GetPlayerCharacter()].activeinv);
character[MARIE].inv[invname]+=1;
LoseInventory(character[GetPlayerCharacter()].activeinv);
Antworten