Eigenschaften zu einem vordefinierten Struct? (AGS 2.7)
-
- Adventure-Gott
- Beiträge: 4575
- Registriert: 13.07.2004, 14:04
- Wohnort: Da wo muss
- Kontaktdaten:
Eigenschaften zu einem vordefinierten Struct? (AGS 2.7)
Hallo,
ich habe da eine Frage: Angenommen, ich habe einen Charakter. Ich nenne ihn hier einfach mal cSpieler. Nun möchte ich cSpieler eine neue variable Eigenschaft hinzufügen. Properties scheidet schonmal aus, weil das konstante Eigenschaften sind. Zum Beispiel möchte ich dem Charakter die Eigenschaft
char geschlecht;
zuweisen (gut ist jetzt ein schlechtes Beispiel, das Spiel handelt ja nicht von einer Geschlechtsumwandlung ). Gut, das kann ich über eine globale Variable regeln. Was aber wenn ich will, dass alle Charaktere diese Eigenschaft besitzen sollen? Da müsste man ja die Struktur ändern. Kennt da jemand eine Möglichkeit?
Danke im Vorraus
[ZENSIERT]
P.S.: Extends scheidet aus, weil die Charaktere auf der Struktur "Character" basieren.
ich habe da eine Frage: Angenommen, ich habe einen Charakter. Ich nenne ihn hier einfach mal cSpieler. Nun möchte ich cSpieler eine neue variable Eigenschaft hinzufügen. Properties scheidet schonmal aus, weil das konstante Eigenschaften sind. Zum Beispiel möchte ich dem Charakter die Eigenschaft
char geschlecht;
zuweisen (gut ist jetzt ein schlechtes Beispiel, das Spiel handelt ja nicht von einer Geschlechtsumwandlung ). Gut, das kann ich über eine globale Variable regeln. Was aber wenn ich will, dass alle Charaktere diese Eigenschaft besitzen sollen? Da müsste man ja die Struktur ändern. Kennt da jemand eine Möglichkeit?
Danke im Vorraus
[ZENSIERT]
P.S.: Extends scheidet aus, weil die Charaktere auf der Struktur "Character" basieren.
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
Ausnahmen bestätigen die Regel
_________________
<Problem> Weil du denken kannst.
Zuletzt bearbeitet von [ZENSIERT] am 16.07.1759, 16:19, insgesamt 54743869-mal bearbeitet
- KhrisMUC
- Adventure-Gott
- Beiträge: 4674
- Registriert: 14.03.2005, 00:55
- Wohnort: München
int male; // 0: female, 1: male
wäre hier sinnvoller. Char steht für ein Ascii-Zeichen.
Soweit ich weiss, gibt es diese Möglichkeit leider nicht.
Ein workaround wäre ein globaler Array.
Man könnte dann z.B. folgendes schreiben:
Mit c???.ID erhält man die interne AGS-Editor-Nummer des Charakters.
wäre hier sinnvoller. Char steht für ein Ascii-Zeichen.
Soweit ich weiss, gibt es diese Möglichkeit leider nicht.
Ein workaround wäre ein globaler Array.
Man könnte dann z.B. folgendes schreiben:
Code: Alles auswählen
if (male[cEgo.ID]) {
PeeAtWall();
}
else {
ComplainAboutExpensiveShoes();
}
Use gopher repellent on funny little man
-
- Adventure-Gott
- Beiträge: 4575
- Registriert: 13.07.2004, 14:04
- Wohnort: Da wo muss
- Kontaktdaten:
Auch ne Idee. Char wäre aber übertragbar ('m' für männlich, 'f' für weiblich und 'n' für ein neutrum)
roflelse {
ComplainAboutExpensiveShoes();
}
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
Ausnahmen bestätigen die Regel
_________________
<Problem> Weil du denken kannst.
Zuletzt bearbeitet von [ZENSIERT] am 16.07.1759, 16:19, insgesamt 54743869-mal bearbeitet
Für so etwas sind die neuen Konstanten auch ganz nützlich:
Wenn du mehrere variable Dinge zusammenfassen möchtest, machst du es am besten so:
Ich hab's hier mal etwas ausführlicher beschrieben: http://www.bigbluecup.com/yabb/index.ph ... #msg247166
Code: Alles auswählen
int Energie[AGS_MAX_CHARACTERS];
Code: Alles auswählen
Energie[cKerl.ID] = 100;
Code: Alles auswählen
// main script header
struct MeinCharakterStruct {
int energie;
char nachname[200];
};
Code: Alles auswählen
// global script
MeinCharakterStruct Charaktere[AGS_MAX_CHARACTERS];
Code: Alles auswählen
Charaktere[cKerl.ID].energie = 100;
StrCopy(Charaktere[cKerl.ID].nachname, "Mueller");
-
- Adventure-Gott
- Beiträge: 4575
- Registriert: 13.07.2004, 14:04
- Wohnort: Da wo muss
- Kontaktdaten:
Auch ne Idee. Ich glaube, die Idee von strazer ist die nützlichste.
Aber was, wenn ich das jetzt auf etwas lokales beziehen will, wie Hotspots (da wird ein Name aber schwer )
Kann man in AGS auch Hash-Arrays (d.h. mit namen als Schlüsseln) ohne Konstanten deklarieren? Ich bin das so von PHP gewöhnt
Aber was, wenn ich das jetzt auf etwas lokales beziehen will, wie Hotspots (da wird ein Name aber schwer )
Kann man in AGS auch Hash-Arrays (d.h. mit namen als Schlüsseln) ohne Konstanten deklarieren? Ich bin das so von PHP gewöhnt
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
Ausnahmen bestätigen die Regel
_________________
<Problem> Weil du denken kannst.
Zuletzt bearbeitet von [ZENSIERT] am 16.07.1759, 16:19, insgesamt 54743869-mal bearbeitet
Dann deklarierst du den Array einfach im room script anstatt im global script. Werte solcher Variablen werden gespeichert wenn man den Raum verlässt.Aber was, wenn ich das jetzt auf etwas lokales beziehen will, wie Hotspots (da wird ein Name aber schwer Wink )
Oder du machst so etwas:
Code: Alles auswählen
// main script header
struct MeinRaumStruct {
int ObjektEnergie[AGS_MAX_OBJECTS];
int ObjektKosten[AGS_MAX_OBJECTS];
};
Code: Alles auswählen
// global script
MeinRaumStruct MeinRaum[300];
Code: Alles auswählen
MeinRaum[7].ObjektEnergie[1] = 90;
Kenne ich nicht, kannst du genauer beschreiben was das ist und was man damit machen kann?Kann man in AGS auch Hash-Arrays (d.h. mit namen als Schlüsseln) ohne Konstanten deklarieren? Ich bin das so von PHP gewöhnt
-
- Adventure-Gott
- Beiträge: 4575
- Registriert: 13.07.2004, 14:04
- Wohnort: Da wo muss
- Kontaktdaten:
OK, in AGS gibt's nur numerische Arrays:
MeinArray[0]
MeinArray[1]
.
.
.
In PHP kann ich die Arrays auch mit NAmen indezieren:
$MeinArray[Schwamm]
$MeinArray[Seife]
.
.
.
Außerdem sind Arrays hier fexibler, es gibt keinen Maximum-Wert. Dafür ist das Durchlaufen schwerer
Diese Möglichkeit wäre in AGS nur so realisierbar:
Hash-Arrays sind vielleicht eher unter dem Namen assiotiative Arrays bekannt.
MeinArray[0]
MeinArray[1]
.
.
.
In PHP kann ich die Arrays auch mit NAmen indezieren:
$MeinArray[Schwamm]
$MeinArray[Seife]
.
.
.
Außerdem sind Arrays hier fexibler, es gibt keinen Maximum-Wert. Dafür ist das Durchlaufen schwerer
Diese Möglichkeit wäre in AGS nur so realisierbar:
Code: Alles auswählen
#define SCHWAMM 0
#define SEIFE 1
MeinArray[10];
MeinArray[SCHWAMM]=234;
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
Ausnahmen bestätigen die Regel
_________________
<Problem> Weil du denken kannst.
Zuletzt bearbeitet von [ZENSIERT] am 16.07.1759, 16:19, insgesamt 54743869-mal bearbeitet
-
- Adventure-Gott
- Beiträge: 4575
- Registriert: 13.07.2004, 14:04
- Wohnort: Da wo muss
- Kontaktdaten: