Adventure spiel programieren

MsvP@habdichliebhasi

Erfahrenes Mitglied
Hey ihr fleißigen progger,

Ich arbeite zur zeit mit nem Freund an nem Online Adventure, so ähnlich wie Crimsen Room, etc.

Ich stocke jetzt allerdings ein wenig an dem Inventar, habt ihr schonmal sowas geproggt, oder ne idee wie man am besten so etwas wie einen Inventar (sprich, gegenstand anklicken, automatisch im Inventar und gegenstand ist nicht mehr an dem platz oder aber gegenstand im Inventar heraus nehmen (drag&drop) und irgendwo wieder benutzen?!) umsetzen könnte?!

Wäre klasse wenn ihr mir helfen könntet!

Greetz micha!
 
Hi!

Was genau bereitet dir denn Probleme? Drag&Drop? Verwalten des Inhalts? Bitte etwas genauer werden....

Grüsse,
L
 
Hi,

ich habe so etwas zwar schon gemacht, aber ein Spiel wie "Crimson Room" ist so komplex, dass die Implementierung der Inventarverwaltung abhängig von der Struktur/dem Aufbau Deines Spiels auf sehr viele verschiedene Weisen möglich ist. Deshalb wird es, denke ich, schwierig, Dir hier einen allgemeingültigen Tipp zu geben. Arbeitest Du mit statischen Ansichten, oder rotiert das Bild bei Dir wie im ersten Teil von Crimson Room?

Normalerweise sollten Variablen, die über die Position und den Status des Objektes Auskunft geben, genügen - abhängig davon wird das Objekt im Raum entweder angezeigt/versteckt oder direkt mit removeMovieClip entfernt. Beim Anwählen eines Objektes im Inventar wird dieses abhängig von seinem Modus/seiner Verwendung in einem neuen "Verwaltungsfenster" angezeigt, oder eben zurück in das Spielgeschehen gesetzt.

Beim "Zurückziehen" eines Objektes in die Szene kannst Du natürlich mit der Methode startDrag und dem _droptarget arbeiten - ich würde diese Methode allerdings selber implementieren, wobei Du natürlich die aktuelle Kameraposition kennen musst bzw. Objektkollisionen auf der Szene überpfüfst... Du siehst: es hängt alles sehr mit Deiner Struktur zusammen, z.B. ob sich Deine Szene aus einzelnen Objekten zusammensetzt oder komplette Bilder dargestellt werden, wobei Du mit Koordinaten/Polygonen herumfummeln müsstest... ;)

Gruß

.
 
Zuletzt bearbeitet:
Also das Spiel schaut so aus, das man sich durch eine reihe von Fotos klicken muss, Sprich, das ganze ist mit realaufnahmen gemacht.

Sprich man fängt auf ner Wiese an, da liegen dann reifen, wenn man die anklickt rutschen die Reifen auf Seite und darunter liegt ein Schlüssel, klickt man den schlüssel an verschwinden die Schlüssel und kommen ins Inventar. Danach kann man wieder zurück aus dem bild auf die wiese klicken, und dann natürlich aber auch wieder zu den reifen, wo dann aber kein schlüssel mehr liegen darf!

Sprich keien bewegung als solche sondern einzel Aufnahmen die evtl. leichte animationen beinhalten, aber mehr nicht.
 
Jup .. Prinzip verstanden. Und wo hängst du jetzt genau?

Poste mal dein bisheriges Script, also deinen Ansatz, oder eine Beispieldatei mit dem konkreten Problem, was nicht funktioniert.
Ohne das läßt sich ein konkreter Fehler im Script nur schwer erahnen.

Denn dass du jetzt ein fertiges Script für deine Anwendung mit der Arbeit anderer erwartest, nehm ich jetzt mal nicht an .... wäre ja auch nicht der Zweck eines Forums. :)

Gruß
Rena
 
Ne brauch kein fertiges script. brauche nen denk ansatz wie ich das am besten umsetze. Sprich. Soll ichs mit Movieclips machen die dann gelöscht werden wenn man sie anklickt.

Mach ich dann nen dublic befehl, ins inventar?! Oder Kann ich das Inventar als eigenen MC machen und da die einzelnen Objekte einfügen?! So das die nur angezeigt werden wenn, der movieclip inventar zu sehen ist?!
 
Hi -

ich würde mit Arrays arbeiten und mit attachMovieClip.

Für jeden Anzeigebereich machst du ein Array, indem der Gegenstandsbezeichner (AS-Identifier), die Position, der Name und sonstwas gespeichert ist.
Deinen Screen läst du dann duch ein durchlaufen des Arrays mit attach Befehlen aufbauen, dein Inventar auch. Bei Drag & Drop verschiebst du dann einfach den Eintrag des Objektes von einem Array in das nächste und baust den Screen erneut auf und vice versa.

So, das ist zumindes mal ne Idee...

Grüsse
B
 
Oder Kann ich das Inventar als eigenen MC machen und da die einzelnen Objekte einfügen?
Wenn die Attribute jedes Objektes in einem Array gespeichert werden ( bsp: my_item[index].current_position), kannst Du die Clips im Umgebungsbildschirm sichtbar bzw. unsichtbar schalten, je nachdem, ob das Objekt schon in Deiner Inventarliste ist. Für die Inventarliste könntest Du z.B. einen identischen, aber größeren und detaillreicheren MC verwenden.

Wenn Du ein Objekt in der Umgebung anklickst, könnte das so ausehen:
PHP:
my_item[index].enviro_mc.onPress = function() {
    var item = _global.menu_item[this.index];
    this._visible = false;
    item.current_position = true; // true für Inventarliste, false für die Umgebung
    item.inventar_mc._visible = true; // jedes Item sitzt schon als Clip unsichtbar im Inventar
}
die MCs in der Inventarliste kannst Du mit Drag&Drop in der Umbebung ablegen, wobei Du die Koordinaten der (unsichtbaren) Clips dort als Zielbereich verwendest.

Wäre z.B. mein spontaner Ansatz (ohne attachMovie etc.), es geht allerdings sicher auf etliche verschiedene Arten, wie die vorhergehenden Posts schon teilweise aussagten.

Gruß

.
 
Mh, ich würde aber lieber die einzelnen Szenen in der Zeitleiste aufbauen, sprich, das jede Szene nen eigenes Schlüsselbild hat.

Kann ich besser mit arbeiten, da ich eher designer als programierer bin.

Ich wollte das jetzt so aufbauen, mal sehen ob das funktioniert:

Ich hab das inventar in nem Mc auf der Hauptebene im 1. schlüsselbild. zusätzlich hab ich in dem Schlüssebild nen weiteren Mc in dem sich dann das spiel abspielt.

In dem mc mache ich dann die einzelnen shclüsselbilder. Da drin gibts die drei ebenen:
Background, Objekte und Actionscript.

Ich wollte jetzt die szene als solche immer in den background legen, halt pro szene ein neues schlüsselbild, und in jedem schlüsselbild auf der objekt ebene das jeweilige item legen. In die ebene As würde ich dann die eigenschaften des Items legen und was passiert wenn man es anklickt.
ist das zu kompliziert oder geht das!
 
Ahhh.. Wieos kann ich denn ein Array nur auf der Bühne definieren, und nicht im As des Mc's, und wieso kann ich die Eigenschaften des Arrays dort nicht ändern.
Ich habe ind er Zeitleiste jetzt :

ball = new Array(310, 220, "true");

stehen

jetzt wollte ich wenn man auf den Ball klickt haben, das ball[0] geändert wird. aber das nit wenn ich:
on (press) {
ball[0] = 100;
}

dem Mc Ball gebe.
 

Neue Beiträge

Zurück