Danke. Mir fällt allerdings grade auf, dass ich set_sprite_tile mit set_sprite_position verwechselt habe. Jetzt funktioniert es wenigstens so wie gedacht. x3
Ach so. :o
Hier trotzdem eine kleine Erklärung zu der Tile-API, weil ich bis jetzt noch nichts dazu geschrieben habe:
Mit Sprites ist es möglich nicht das ganze Bild anzuzeigen, sondern nur einen Teil davon. In der alten API konnte man ein Quellrechteck innerhalb des Bildes angeben, das angezeigt werden soll. Da das aber etwas benutzerunfreundlich war (um das Quellrechteck zu ändern musste man jedes mal die pixel-genauen Position und Abmessungen angeben), habe ich die entsprechenden Funktionen umgebaut. Die neue API sieht das Bild als eine Matrix aus gleichgroßen Sub-Images (Tiles):
Dabei gibt es mindestens ein Tile (das Tile hat die gleichen Abmessungen wie das Bild) und maximal Image Width * Image Height Tiles (jedes Tile ist genau ein Pixel groß).
Beim Erzeugen eines Sprites mit add_sprite werden die Tile-Abmessungen mit (Image Width, Image Height) und die Tile-Koordinaten mit (0, 0) initialisiert. Danach kann man mit set_sprite_tile_dimensions die Tile-Abmessungen (width, height) und mit set_sprite_tile die Tile-Koordinaten (x, y) setzen.
Beim Setzen der Tile-Abmessungen ist zu beachten, dass die Abmessungen die folgenden Bedingungen erfüllen müssen:
- Image-Breite / Tile-Breite = N, Rest 0
- Image-Höhe / Tile-Höhe = M, Rest 0
Wenn das Bild mit set_sprite_image geändert wird, werden automatisch auch die Tile-Koordinaten und die Tile-Abmessungen zurückgesetzt.
Auf die Namen der Heros kannst du über game.actors[id].name zugreifen (für Party-Member: game.party[id].name). Für Item- und Skill-Namen bietet DynRPG zwar entsprechend RPG::getItemName und RPG::getSkillName, aber ich habe diese Funktionen bis jetzt noch nicht in Lua offengelegt, weil ich diese Funktionen noch nicht wirklich einordnen konnte. :/ Ich bin kurz davor eine neue Version zu releasen und könnte es da einbauen, wenn du es unbedingt brauchst.
Wie und an was (also in welche Richtung) willst du eigentlich den String übermitteln? Nur aus Interesse.
Geändert von Kyuu (13.07.2014 um 16:59 Uhr)
Ich bastel grad an was, und wollte versuchen hinzukriegen, ein Item vom Boden aufzuheben. Beim Aufheben will ich den Namen des Objekts übermitteln und in nem Hero abspeichern, damit man in einer Messagebox einfach mit einem \n[X] darauf zugreifen kann.
Leider funktioniert das grade nicht so ganz. Kann ich game.actors nicht verändern? Weil game.actors[2].name = "Test" spuckt bei mir no member named 'name' aus. :0
game.actors (also das Actors-Array selbst) kannst du nicht ändern, nein. Aber Actor.name auf einen neuen String setzen kann ich einbauen (laut DynRPG-API). ^^
Geändert von Kyuu (13.07.2014 um 19:26 Uhr)
Kein Plan. Ich teste es mal und wenn es keine Probleme macht, mache ich's in die nächste Version rein.
Edit:
Aber kein Crash (soweit ich getestet habe)!
Habe mich übrigens vorhin vertan: name ist nicht das Attribut der Actor-Klasse, sondern das der Battler-Klasse. Die Klasse Monster erbt zwar ebenfalls von Battler, DynRPG bietet aber im Moment keine Möglichkeit, den Namen eines Monsters zu ändern und damit auch RPGSS.
Geändert von Kyuu (13.07.2014 um 20:28 Uhr)
Wie wäre es hiermit?
Ist eigentlich genau das, was du suchst, denke ich. Und das ohne kompliziert extra in einen Hero-Namen zu speichern.
PeAcE
MorDen
Könntest du nicht einfach die ID des Items in eine Variable schreiben und dann im Text "\i[\v[]]" machen?
Ansonsten scheine ich das Problem gerade nicht zu verstehen bzw. weiß ich nicht genau, was du vorhast^^"
PeAcE
MorDen
Danke für das Vertrauen. :>
Neuer Release
rpgss-0.9.0.7z
Screen Blending wurde nun komplett in Assembler geschrieben. Leider lässt sich Screen Blending nicht mit SIMD optimieren, weil die Screen Buffer-Pixel im RGB565-Format sind und damit ungeeignet für SIMD (das Entpacken und Verpacken ist zu teuer). Dennoch ist Screen Blending in RPGSS äußerst schnell und mit der Implementierung in Assembler konnte ich größtenteils Verbesserungen von 50-100% erzielen.
Kleiner Tipp an dieser Stelle: Wer viele und große Images jeden Frame zeichnet, kann bessere Performance erzielen, indem er die Images zuerst auf ein Image-Buffer und den Buffer dann auf den Screen zeichnet. Image-Blending ist in der Regel SIMD-optimiert und damit viel schneller als Screen-Blending.
Partikel + Blend Modes = Awesome
Echt genial! Die Zeichenmethoden von RPGSS sind echt hammer!
Wird langsam echt mal Zeit für's offizielle DynRPG v0.2 ^^
Wie sieht's mit der Performance aus, Kyuu?
PeAcE
MorDen
gibts das auch bewegt? ^^