PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [DynRPG Plugin]Text Plugin



Kazesui
22.05.2012, 12:48
Hab wieder ein Plugin erstellt die ich mit der Welt teilen möchte. Diesmal geht es um einem Plugin der dich Text überall im spielfenster erstellen lässt.
Der plugin lässt dich Text erstellen, ändern, bewegen und wieder verschwinden lassen. Damit kann man z.b. leicht Nummer anzeigen lassen, was für AKS und eigengebastelte menü praktisch sein könnte.

http://rpgmaker.net/media/content/users/3355/locker/DynText.PNG


http://www.youtube.com/watch?v=0kdL_mteRGo

Die Instruksen sind immernoch in Englisch da ich immernoch faul bin, aber kriegt ihr hoffentlich auch so hin. Sollte irgendwas unverständlich sein könnt ihr ja einfach fragen.



Instructions
-------------

The text in this plugin will be drawn right before a picture with ID of your choice. You can choose
which Picture ID needs to be shown for the text to draw in the DynRPG.ini file.
Open this in a text editor and you'll see something along the lines of:

[DynTextPlugin]
PictureID=1

This sets the default picture ID your text images will be associated with. You can however specify in parameters if you want the image to be associated with another picture ID. This is used to mainpulate which layer the texts are shown, like which pictures the texts will be shown above or below.
Also, by adjusting the transparency of a picture, all the associated text images will change transparency along with the picture. This allows for easy fading by a single move picture command.

!!!!!!
But as said above, remember that the picture associated with any text image must be active (i.e. show picture for that id must have been called), for the text images to show!
!!!!!!

comment commands are used like this: you start by typing the command you wish to use, i.e.
@write_text
and you then list up parameters to decide the role of the text. An example of a command would be

@write_text "myText", 10, 10, "Hello World", 0

notice how myText and Hello World has double quotation around them. This is neccessary for any
parameter dealing with actual text. It's also important to seperate parameters with a , (comma).
The first parameter in all instructions is the "identifier tag".
This tells us which text you want to work on. In the example we created a text piece called
"myText". if we later want to remove that text we simply use the same identity when we call

@remove_text.

notice that the contents of a text can be given as a text, using double quotation, or even as a
number, meaning you can use variables as well to decide the content of the text. For example by
writing

@change_text "myText", V10, 0

we change the text we created up there to contain whatever value is found in variable 10.
Change the number into whatever variable you'd like to access instead.

The parameters for color is given from 0 to 19, and contains the same colours as given by your system set.
This means that this is equivalent to the use of \c[n] where n is a number of your choice.

It's possible to use 3 special commands within the text string itself. These are:



\x[text identifier]
returns image text from the text object with the chosen text identifier

\n[number]
returns the name of a hero given by the chosen number

\v[number]
returns the value stored in variable with ID equal to the chosen number

\i[number]
returns the name of the Item with same ID as the chosen number

\I[number]
returns the item description of the item with same ID as the chosen number

\t[number]
returns the skill name of the item with ID equal to the chosen number

\T[number]
returns the the skill description of the skill with ID equal to chosen number.


It's possible to use these commands within both text identifiers, and text images, allowing you to easily
loop through a list items/skills if neccessary. For this purpose, it's also possible to nest commands. This means

you can type \i[\v[20]] to get the item name with ID equal to the value of variable 0020.

Commands
-------------




@write_text
parameter#1: identifier tag for the text
parameter#2: x coordinate of the text
parameter#3: y coordinate of the text
parameter#4: text to be shown in the text
parameter#5: "fixed" is typed here if text moves with map
parameter#6: Color to be used on the text
parameter#7: Set picture id to be associated with

@append_line
parameter#1: identifier tag for text to append to
parameter#2: new line of text to append below the first one
parameter#3: "end" (i.e. just write anything here)

@append_text
parameter#1: identifier tag for text to append to
parameter#2: text string to append to the text

@change_text
parameter#1: identifier tag for text to change
parameter#2: content of new text
parameter#3: color to be used in the text

@change_position
parameter#1: identifier tag for the text to move
parameter#2: x coordinate of new position
parameter#3: y coordinate of new position

@remove_text
parameter#1: identifier tag for text to remove
parameter#2: "end" (i.e. just write anything here)

@remove_all
- removes all texts created with the plugin


Um den plugin downloaden zu können klick an mich! (http://rpgmaker.net/engines/rt2k3/utilities/12/)
Hoffentlich findet irgendwer von euch es nützlich.

MajinSonic
22.05.2012, 13:08
Klasse, Berti :D Richtig tolles Teil :) Ich persönlich brauche es zwar nicht, aber die Möglichkeiten sind ja recht umfangreich. Vorallem,dass man mehrere gleichzeitig anzeigen kann. Ich hoffe mal, dass es nicht zu umständlich umzusetzen ist (instruktion nicht gelesen).
Bin nur aufm Sprung :D

LG
MajinSonic

RPG Hacker
22.05.2012, 13:43
Damit spart man auf jeden Fall eine Menge Pictures und es scheint auch leicht verwendbar zu sein. Ziemlich praktisch!

MarcL
22.05.2012, 21:44
Danke! ;) Ein weiteres tolles Plugin von dir (bin ja ein Fan von deinem Trigonometrie Script) *bedank* und für die Selbstlosligkeit das freizugeben*lob*

Mal sehen ob ich es verwende... ich bin gerade am grübeln ob ich auf DynRPG umsteige, allerdings fehlen mir noch die Funktionen die ich bisher hatte, wobei ich garnicht weiß, ob DynRPG NoRow, UnlockPics und
BetterAep ähnliche Funktionen schon bietet.... (Falls ich es nicht schon irgendwo geschrieben habe, was ich aber glaube, nochmal großen Dank an Cherry für DynRPG *_*)


PS: Hab mir auch dein Partikelplugin angesehen ^^ auch sehr sehr schön! *bedankfürdenfalldassichesverwende*....
....dabei ist mir aber folgendes aufgefallen:

1. In der Beschreibung "fehlt", dass man bei jedem Befehl (bei den oberen ist es angegeben), die Effekt ID als erstes angegeben werden muss - ok wer sich damit auseinandersetzt fitzt sich schon rein

2. Du hast eigenltich mit dem Partikelplugin eine super Grundlage für ein Plugin geschaffen, dass verschiedene Animationen an mehreren Stellen auf der Map anzeigen lassen kann, hab ich recht? - Ich meine wenn ich z.B. auf einer 40x40 Map vier verschiedene Brandherde haben möchte, dann hab ich das Problem, dass Charsets aufwendig sind, eine Battle Animation nur an einer Stelle und über Pictures gezeigt werden kann, und wenn ich Pictures nehme, kann ich sie nicht gleichzeitig animieren und mich auf der Karte bewegen, da ich die Position dann immer neu ausrechnen muss (ok - vielleicht stell ich mich auch nur doof an)
Das wäre von mir nur noch eine Idee für ein Plugin, habe das Gefühl, da müsstest du nicht viel am Plugin ändern ^^° statt den Partikeln müsste "nur" eine Reihe von Bildern durchlaufen werden

@Auge des Sterns:
Naja ich hatte meine gepatchte exe mit DynRPG gepatcht und hab erst später gemerkt, dass es nicht geklappt hat, weil nicht mal cherry's logo kam... :( bei mir hat es wohl nicht hingehauen...

Auge des Sterns
22.05.2012, 23:59
Das ist genial. Ich nehme ein Bild, setze es irgendwie so, dass man es nicht sehen kann und kann mit ein paar kleineren Befehlen Texte als Bilder behandeln.
Nach einer kleinen Einarbeitungsphase habe ich das Plug-In verstanden und mir fällt schon ein, wofür ich dies verwenden kann.

@MarcL
Ich würde mir da keine Gedanken machen. Bei mir funktioniert der BetterAutoEnter Patch noch immer makellos. Für andere Plug-Ins dürfte dies auch gelten.

Corti
23.05.2012, 09:03
Mal sehen ob ich es verwende... ich bin gerade am grübeln ob ich auf DynRPG umsteige, allerdings fehlen mir noch die Funktionen die ich bisher hatte, wobei ich garnicht weiß, ob DynRPG NoRow, UnlockPics und
BetterAep ähnliche Funktionen schon bietet.... (Falls ich es nicht schon irgendwo geschrieben habe, was ich aber glaube, nochmal großen Dank an Cherry für DynRPG *_*)
DynRPG kann diese Dinge nicht direkt ersetzen, eventuell durch Umwege, arbeitet aber gut parallel. NoRow, BetterAEP, UnlockPics, PicInBattle und den PicturePointerPatch benutze ich problemlos damit zusammen.



@Auge des Sterns:
Naja ich hatte meine gepatchte exe mit DynRPG gepatcht und hab erst später gemerkt, dass es nicht geklappt hat, weil nicht mal cherry's logo kam... :( bei mir hat es wohl nicht hingehauen...
Hast du das mit den Unterordern etc. richtig gemacht?

MarcL
23.05.2012, 12:46
DynRPG kann diese Dinge nicht direkt ersetzen, eventuell durch Umwege, arbeitet aber gut parallel. NoRow, BetterAEP, UnlockPics, PicInBattle und den PicturePointerPatch benutze ich problemlos damit zusammen.
Hast du das mit den Unterordern etc. richtig gemacht?

Hm... Jetzt klappt es! :) ich hab es jetzt nochmal probiert und nochmal meine alte gepatche mit der neuesten Version von DynRPG gepatcht. Jetzt kommt das Icon und alles läuft! Danke für den Hinweis das es klappen müsste :)

Ave
23.05.2012, 13:01
Das Teil ist bestimmt verdammt cool wenn es darum geht Leute zu belauschen und ihnen Informationen zu entlocken oder so. Gute Arbeit!

Kazesui
23.05.2012, 16:36
@MarcL Dass der erste Parameter beim Partikel Effekt plugin ist, ist teileweise beschrieben dadurch dass das Befehlt "create_effect" das begriff "effekt ID" erklärt, was beim späteren befehle benutzt wird.

Und ja, man kann dem plugin benutzen um mehrere "effekte" gleichzeitig erscheinen zu lassen, ist aber auch völlig möglich es mit pictures zu machen. Um es zu animieren brauchst du halt einem event auf dem map der ganz still steht, und dann die screen x und y koordinaten diesem events nehmen, um dann einen bestimten wert da zu addieren oder subtrahieren. Dem wert hängt vom plazierung des event an, und wo das bild sein soll. mit etwas rumspielen mit die zahlen findet man die richtigen werte (also stimmt es irgendwie schon dass die werte ständig neu ausgrechnet werden muss).

es "kann" sein dass ich irgendwann mal "animation vom Partikeln" im Partikel Plugin implentiere, aber bis dahin (ob überhaupt) emphele ich einfach das mit pictures hinzukriegen, weil möglich ist es ganz sicher.

MarcL
23.05.2012, 17:40
wtf das klappt ja tatsächlich ^^° warum ist mir das nicht früher aufgefallen... muss wohl irgendwelche Denkblockaden haben oO; hoffentlich gibt es nicht noch irgendwas, was ich aufwendiger gemacht habe, als es hätte sein müssen...

Oktorok3
29.05.2012, 13:52
Hi, Kazesui!
Ich habe das Plugin getestet (in deinem Testprojekt) und dabei habe ich den Fehler entdeckt,
dass das Plugin sobald man ein neues Event (zu den bereits im Demoprojekt vorhandenen Events)
erstellt, keinen einzigen der eingestellten Texte mehr anzeigt (selbst die parallel laufenden nicht).
Auch wenn das neue Event sofort nach dem erstellen wieder gelöscht wird, funktionieren die
anderen Texte nicht mehr.

Kazesui
29.05.2012, 15:26
Das hört sich ziemlich komisch an. Ich hab gerade versucht den Fehler nach zu produzieren, aber ohne Erfolg.
War es irgendwie einem besonderen Event? War dass der einzige Veränderung?

Oktorok3
29.05.2012, 18:50
Ich habe nun selbst versucht, das wieder so zu machen, und gemerkt woran der Fehler gelegen hat.
Ich hatte nämlich, damit ich es schneller testen kann, das automatisch-starten Event ausgeschaltet, wodurch
das benötigte Picture nun nicht mehr aufgerufen wurde.

Nichtsdestotrotz, sind mir noch ein paar mögliche Verbesserungen für das Plugin engefallen:
--Größe der Schrift ändern
--Zittereffekt für die Schrift>optional ganze Wörter oder nur einzelne Buchstaben (a´la Golden Sun2)
--"Sprengeffekt" für Wörter (das Wort wird gesprengt und die Buchstaben fliegen in alle möglichen Richtungen)

BDraw
01.06.2012, 11:38
Was mich interessieren würde ist, ob das Plugin auch die Makerbefehle \v[n] für Variablen und \N[n] für Heldennamen unterstützt. Damit könnte man dann ja theoretisch sogar komplette Menüs erstellen, ohne zig Abfragen machen zu müssen.

MrSerji
02.06.2012, 19:08
@BDraw:
Wie du sicher sehen kannst, ist über dem Schleim eine 2 und im Video laufen Zahlen, also ja :)

@Kazesui:
So jetzt mal ne Frage meinerseits :)
Also, ich würd dieses Plugin gern verwenden, hab auch mittlerweile verstanden wies funktioniert.
Jetzt kommt mir nur die Frage, wie kann ich das "mitbewegen" ausschalten?
Ich würde gern dieses Plugin verwenden, damit ein Pater eine Rede halten kann ohne Pictures einzusetzen.
Klappt alles, aber wenn du dich etwas vom Pater wegbewegst, wird die "Anzeige" also die Wörter und so, bewegen sich mit :/
Dann hätte ich noch ne frage, muss die Picture "pixel" Datei auf Pic-ID 0001 sein?
Wenn ichs erhöhe sehe ich nichts mehr, aber wenn ich es auf 0001 lasse kann ich keine LE benutzen, da die Bilder bzw. Wörter dann unter der LE sind und das sieht manchmal ziemlich komsich aus xD

MfG Soul

EDIT: Das mit der Pic-ID hab ich jetzt, man sollte umbedingt die ReadMe oder Beschreibung hier im Forum lesen xD

Kazesui
02.06.2012, 20:21
EDIT: Das mit der Pic-ID hab ich jetzt, man sollte umbedingt die ReadMe oder Beschreibung hier im Forum lesen xD
qft

Das "mitbewegen" ist (noch) nicht direkt ausschaltbar, aber man kann es umgehen in selberweise wie mit Pictures (Wie auch schon beschrieben in diesem Thread, bzw. mit Pics).
- Mach einem Event auf dem Map
- Setzt diesem irgendwo hin, am liebsten ganz oben links.
- Lass diesem als parallel Event laufen der ständig die Screen Koordinaten von sich selber holt.
- addier zu diesem Variablen die Pixel Koordinaten des Textes im bezug vom Map (1 Tile = 16 Pixels)
- benutzt den "change_position" Kommando und benutzt die Variabel als Parameter fürs Position.

Mach kein 0.0 Wait in diesem pp Event rein, weil dann siehts schnell komisch aus (gibt sowieso bereits ein getarnter 0.0 Wait am ende einer pp Event Skript).

@BDraw Variable zu zeigen ist schon möglich, allerdings nicht so wie normal im Maker. Du schreibst z.b. V1 als Parameter um das Zahl in Variable 1 zu kriegen, kann aber nicht innerhalb eines Textes geschrieben werden. Laut dem SDK Dokumentation soll es auch möglich sein Helden namen mit N2 ( was das gleiche wie \n[2] wäre ) statt ein Variabel zu benutzen, scheint aber noch nicht zu funktionieren.

Cherry
05.06.2012, 09:02
Was heißt N2 funktioniert nicht? Sollte es eigentlich sehr wohl... Kann ich mal deinen Quellcode sehen (auch wegen der im anderen Forum besprochenen Crashprobleme)?

Kazesui
05.06.2012, 09:13
Hat zumindest nicht funktioniert als ich es ausprobiert habe. Könnte natürlich an irgendein Fehler meinerseits liegen, funktioniert aber halt nicht mit meinem Plugin.
Hier's übrigens der source (http://rpgmaker.net/users/Kazesui/locker/main.cpp) vom Plugin.

Cherry
05.06.2012, 09:54
Hm, kann ich jetzt grad nix falsches dran erkennen... Hast du dir schon mal den Inhalt von "data" in onLoadGame ausgeben lassen?

Kazesui
05.06.2012, 10:04
Ja, hab ich, und auch da scheint nichts falsch zu sein.

Engel der Furcht
23.06.2012, 09:31
Hallöle. Ich habe Cherry's FontChanger verwendet,
Benutzt dieses Plugin also den im Spiel verwendeten Font oder aber eine externe Font-Datei?

Kazesui
23.06.2012, 09:56
Dieser Plugin benutzt den im Spiel verwendeten Font

Engel der Furcht
23.06.2012, 10:00
Dann überleg ich mal weiter mir dieses Plugin zuzulegen :D

Kazesui
23.06.2012, 14:15
Ich hab ein bisschen weiter an dem Plugin gebastelt und der hat jetzt ein neues Befehl: @append_text.
Dieses befehl erlaubt es euch weiterem Text and bereits existierende Texte zu erweiteren.

Neu is jetzt auch die Parameter von @write_text, der jetzt "fixed" als das fünfte Parameter nehmen kann, damit der Text nicht mit das Bildschirm scrollt, sondern mit das Map.
(Das heisst dass das Parameter fürs Farbe is jetzt #6).

Es lässt sich jetzt auch innerhalb des Textes 3 Befehle einzugeben:
\v[Zahl], \n[Zahl] und \x[Text Tag]
\v und \n funktioniert so ziemlich wie in einem normalen Nachricht Befehl, während \x der Text einer anderen schon hergestellten Text holen kann, indem du dem Identifier als Parameter reintust. Das Beispiel Projekt wurde schon geändert damit man die Änderungen sehen kann.

Wichtig: Falls ihr save Dateien mit dem alten Version von diesem Plugin gemacht haben, sind diese mit das neue Version nicht kompatibel.

Engel der Furcht
23.06.2012, 17:14
Funktioniert wunderbar.
Vielen Dank =)

Kazesui
28.06.2012, 20:50
und schon wieder gibts ein Update für diesem Plugin!
diesmal wurde ein paar weitere "innerhalb-des-Textes Kommando's" dazugefügt.
Jetz haben wir noch:
\i[Zahl] der ein Item Name gibt mit selber ID als das Zahl,
\I[Zahl] der die Beschreibung für das Item mit selber ID als das Zahl holt. (Ein großes i)
\t[Zahl] um die Name einer Skill zu holen.
\T[Zahl] um die Beschreibung einer Skill zu holen.

Dazu isses jetzt möglich die Befehle zu kombinieren, bzw. \i[\v[20]] Damit Variabel 0020 entscheiden kann welches Zahl benutzt werden soll.
Es ist auch möglich die Befehle beim "bauen" eines Identifier Tag zu benutzen, was es leichter macht ne Menge Texts innerhalbs einem Loop zu machen,
z.b. für das auflisten von Items für einem Item Menü.

Das Demo hat auch ein Update gekriegt um die neue Funktionen zu zeigen (ich sollte wohl bald dran denken ein neues Video zu machen)

djeurissen
28.06.2012, 21:13
Oh mein Gott, dass ist noch besser als ich es mir erhofft habe^^. Ein RIESEN DANKESCHÖN von mir, das erleichtert die ganze Fummelei mit den Pictures ungemein.
Danke :D

djeurissen
01.07.2012, 18:14
So, ich bin endlich dazu gekommen die verbesserte Version zu downloaden und mir ist ein bug in deinem Test Projekt aufgefallen...
Wenn man den typen unter der Kiste anspricht kommt eine Fehlermeldung und ein schwarzer streifen ist dann die ganze Zeit im bild...

Kazesui
01.07.2012, 19:10
Ist mir selber noch nicht passiert. Im Test Projekt wurde nichts gemacht ausser es zu testen?

djeurissen
01.07.2012, 19:33
Ja O.o... Und es ist auch immerwieder passiert... Also habe ich es nochmal neu gedownloadet und jetzt funktionierts... Ich weiß auch nicht, muss irgendwas kaputt gewesen sein...

TrueMG
08.07.2012, 15:41
Wow, muss ich unbedingt ausprobieren :-) Das ist so ziemlich eines der Features, die ich schon immer im 2k3 vermisste. Gute Arbeit!

[EDIT] Die Updates sind pure Liebe! z.B. Itemnamen ausgeben. Das ist ja traumhaft *-*

[MG]

goldenroy
08.07.2012, 17:09
Episch, damit kann man bestimmt echt viel machen, z.B. Sprechblasen statt Textboxen oder sowas wie auch im Beispielvideo mit "Monster Kill" oder so. Echt genial, werd ich bestimmt mal ausprobieren. x3


\i[Zahl] der ein Item Name gibt mit selber ID als das Zahl,
\I[Zahl] der die Beschreibung für das Item mit selber ID als das Zahl holt. (Ein großes i)
\t[Zahl] um die Name einer Skill zu holen.
\T[Zahl] um die Beschreibung einer Skill zu holen.

Boah, damit könnte man ja ein eigenes Menü ganz einfach machen!

Fuxfell
09.07.2012, 17:08
Das Plugin ist echt eine Bereicherung und ich versuche gerade das Menü meines Taktik-KS darauf umzustellen, aber
es will nicht funktionieren... :(


@write_text "test",V442,V443, \i[445]
Die Variablen 442, 443 sind auf 160, 120.
Variable 445 ist 1. (Item Name und Beschreibung sind nicht leer!)
Es wird jedoch nichts angezeigt.



@write_text "test",V442,V443, \v[445]
Gibt mir jedoch entsprechend eine 1 aus.

Außerdem erhalte ich im Testprojekt eine Fehlermeldung und zwar folgende:
http://www7.pic-upload.de/thumb/09.07.12/378hvwjk7qw.png (http://www.pic-upload.de/view-15043901/fehlermeldung-KazeText.png.html)


(habs nochmal neu runtergeladen, selbes Problem :/)
Hoffe du kannst mir irgendwie weiterhelfen :)

P.S.: Ein Plugin das es einem erlaubt "Fenster" mit dem eingestellten Systemset zu zeichnen
wäre eine super Ergänzung, dann könnte man locker Menüs erstellen, die aussehen wie das
Standardmenü. Eventuell ist dir die Idee ja noch nicht gekommen und du hast Lust es umzusetzen ;)

Kazesui
09.07.2012, 18:19
Es scheint mir als hättest du das Befehl \i ein wenig misverstanden. Was du dort oben versuchst is der Name von Item mit ID 445 zu holen, sprich die 445. Item in die DB.
Was du eigentlich hätte tun sollen wäre \i[\v[445]] zu schreiben, damit \v[445] ne 1 gibt die dann zum \i[1] wird was das erste Item von der Database holt.
Es soll übrigens " zeichen um das Befehl geben, bzw. "\i[\v[445]]".

Habe aber noch keine Ahnunng wieso du den Fehlermeldung in dem Testprojekt kriegst.
Und ich habe mir schon überlegt einem Plugin zu machen der dich unterschiedliche Fenster machen lässt, aber darauf wirst du wahrscheinlich noch warten müssen.

Cherry
09.07.2012, 19:21
Ich hab mal deine DLL in einen Debugger geladen und geschaut was an Adresse 6AB03309 passiert:


6AB032FB |. 8B55 0C MOV EDX, [ARG.2]
6AB032FE |. 8B02 MOV EAX, [EDX]
6AB03300 |. 8B50 FC MOV EDX, [EAX-4]
6AB03303 |> 8B8D A0FEFFFF MOV ECX, [LOCAL.88]
6AB03309 |. 803C08 5D CMP BYTE PTR [EAX+ECX], 5D << Hier crasht es.
6AB0330D |.^ 75 CD JNZ SHORT DynTextP.6AB032DC
6AB0330F |. 83E9 02 SUB ECX, 2
6AB03312 |. 898D A0FEFFFF MOV [LOCAL.88], ECX
6AB03318 |. 85D2 TEST EDX, EDX
6AB0331A |. 78 1A JS SHORT DynTextP.6AB03336


Nachdem in dieser Funktion Stringroutinen aufgerufen werden, gehe ich davon aus, dass ARG.2 (der zweite Parameter der Funktion) ein std::string ist. LOCAL.88 dürfte eine Indexvariable sein. Es crasht bei einem Vergleich eines Zeichens im String mit 0x5D, was, als ASCII interpretiert, eine schließende eckige Klammer ("]") wäre.

Kurz gesagt: Vermutlich bei einer Zeile mit if(string[index] == ']') o.ä. crasht es. Vermutlich durch einen zu hohen Wert in der Indexvariable (schaut mir nach Buffer Overflow aus - 01EA0000 war die Adresse im Screen, auf die ein Zugriff hätte stattfinden sollen. Das ist eine "runde" Adresse und legt nahe, dass über das Ende eines allozierten Speicherbereichs hinaus (der wohl bei 01E9FFFF geendet hat) Lesezugriffe stattfanden).
Falls dir das was hilft.

(Ich hab das Projekt jetzt nicht überprüft, wollte dich aber nur noch sicherheitshalber an diesen Teil der DynRPG-Dokumentation erinnern: "The maximum number of characters per parameter (or command name) is 200. You have to parse the comment yourself if you need more.")

EDIT: Der Befehl JNZ unter der crashenden Zeile ist ein bedingter Sprungbefehl, der auf eine Adresse oberhalb zeigt. D.h. in diesem Fall, wenn das Zeichen im String nicht ein "]"-Zeichen ist, wird im Programmablauf zurückgesprungen. Ich vermute also, es handelt sich um sowas wie do { ... } while(string[index] != ']'). Schaut mir nach irgendeinem Bug in einem der \X[...] Features aus.

EDIT2: Die Funktion, in der es crasht, wird in deinem ganzen Code nur einmal aufgerufen, und zwar nachdem irgendeiner Variablen der Wert 5 zugewiesen wurde (kann natürlich auch ein Enum-Wert sein).

EDIT3: Falls das nicht klar sein sollte: Ich habe da jetzt nichts getestet oder mir an deinem Sourcecode (den ich afaik gar nicht habe) angeschaut. Ich hab dir nur anhand von der Meldung in Fuxfell's Screenshot Hinweise gegeben, die dich zu der Stelle in deinem Code führen könnten, wo der Fehler passiert.

Fuxfell
09.07.2012, 19:49
Oh man, wie peinlich :o

Danke jedenfalls, jetzt klappts mit Skill und Itemnamen :A

Hab aber noch ein Problem mit den Makertextsymbolen:

@write_text "SkillID_Pfeil 1",V442,V443, "$s"
@write_text "SkillID_Pfeil 2",V442,V443, "$t"
@write_text "SkillID_Pfeil 3",V442,V443, "$u"
@write_text "SkillID_Pfeil 4",V442,V443, "$v"

Produziert komische Dinge:
144511445214453

Schreibe ich den Code so:

@write_text "SkillID_Pfeil 1",V442,V443, $s
@write_text "SkillID_Pfeil 2",V442,V443, $t
@write_text "SkillID_Pfeil 3",V442,V443, $u
@write_text "SkillID_Pfeil 4",V442,V443, $v
Funktioniert es beim ersten Mal und macht dann das, wenn ich das Spiel über F12 neu starte:
14455


Ich war übrigens in der Lage eine neue Fehlermeldung zu produzieren, kann sie aber leider nicht rekonstruieren:
14454

Oder ist das doch ein Fehler des Plugins? Gruß

Kazesui
09.07.2012, 20:33
Kurz gesagt: Vermutlich bei einer Zeile mit if(string[index] == ']') o.ä. crasht es.


Dass könnte stimmen. Wenn ein Befehl gefunden wird, fängt ein Funktion an das ganze zu parsen, was hiermit endet:


while(string[i] != ']') i++;
while(string[i+1]==']') i++;



Ich dachte dass std::string auch ein '\0' Terminator am ende hätte (wie ein typischer C string), damit das
string[i+1] kein Problem ausmachen sollte, scheint aber nicht so zu sein hab ich gerade herausgefunden, also könnte es sehr wohl daran liegen (auch wenn ich selber der Fehlermeldung nicht kriegen könnte, nichtmal wenn ich kein ']' hatte, was eigentlich ein Overflow geben müsste).

Sollte nun kein Problem mehr sein

@Fuxfell

Könnte wohl etwas komisch erscheinen. V445 geht nur wenn es für sich selber steht, während die sonstige befehle sollten alle ein Text ausmachen, bzw. innerhalb " zeichen sein. Also ginge V445 oder auch "\v[445]" aber nicht "\i[V445]" oder \i[V445]. Man kann für Texte V445 als auch "\v[445]" benutzen, aber für alles andere (Koordinaten, farbe) geht nur V445 oder halt ein reines Zahl

Fuxfell
09.07.2012, 20:43
Das Beispielprojekt stürzt auch in Version 07 noch bei mir ab, diesmal mit dieser Fehlermeldung:
14456

Übrigens besteht das Problem das ich in meinen vorherigen Post editiert habe auch noch bei
der neuen Version (falls du den Edit nicht gesehen hast ;) )

Kazesui
09.07.2012, 21:01
Dann bin ich mir immernoch nicht ganz sicher @Fehlermeldung. Mal weiterschauen
Das mitm komischen zeug allerdings liegt daran dass du zur zeit das ganze mit einem "end" schliessen muss.
z.b.


@write_text "SkillID_Pfeil 1",V442,V443, "$s", end

Liegt daran dass es noch kleine Probleme geben könnte wenn das letzte Parameter ein Text ist. In das Testprojekt hab ich meistens einfach das ganze mit ,, beendet, ausser wenn ich die zwei letzen Parameter benutzen wollte.

Fuxfell
09.07.2012, 21:12
Danke für die Unterstützung klappt so weit :)

Cherry
10.07.2012, 01:00
@Fuxfell: Kleine Info: Die Fehlermeldung ist jedes Mal dieselbe, nur die Zieladresse ("offset") ist eine andere, was aber nur davon abhängt, wie der Arbeitsspeicher gerade aussieht bei dir. Das relevante ist die erste Zahl (das ist die Adresse, an welcher der Befehl steht, der den Fehler ausgelöst hat).

Das interessante dabei ist dass Fuxfell sagt es stürzt in der neuen Version auch ab, die Adresse aber dieselbe ist wie vorher, was eigentlich unwahrscheinlich ist wenn du in deinem Code was geändert hast. Kann aber auch ein Clue sein im Falle dass deine Änderung nur unterhalb der fehlerhaften Stelle erfolgt ist und dadurch die Adressen oberhalb nicht "verschoben" wurden.

MrSerji
12.07.2012, 03:36
Könnte man in dieses Plugin noch ein Update intergrieren?
Eine Funktion, die die Schrift ganz mit einem Schatten umrandet.
So: http://www.imagesload.net/img/VD-U%20-%20MP%20-%20Nachwort.png
Halt das der Schatten nicht so daneben aussieht wie er es im Standard schon ist^^

Cherry
12.07.2012, 20:15
Das Plugin verwendet die Makerinterne "Text anzeigen"-Funktion. Derartige "Zusatzsachen" sind also entsprechend aufwändig, weil die Standardfunktion des Makers sowas nicht bereitstellt.

MrSerji
12.07.2012, 21:27
Das Plugin verwendet die Makerinterne "Text anzeigen"-Funktion. Derartige "Zusatzsachen" sind also entsprechend aufwändig, weil die Standardfunktion des Makers sowas nicht bereitstellt.
Achso, schade :/
Dann muss ich für die Überschriften und dem ganzen Scheiß weiter Pics benutzen :/

Naja, dennoch klasse dieses Plugin^^
Hilft ungemein viel!

Cherry
12.07.2012, 21:29
Naja, man kann natürlich eine eigene Textengine einbauen, z.B. mit der FreeType (http://www.freetype.org/) Bibliothek. Ist aber halt mehr Arbeit als einfach die Funktion RPG::Image::drawText (http://rpg-maker.cherrytree.at/dynrpg/class_r_p_g_1_1_image.html#a21ba9ccb9b4f660004b725106554438a) von DynRPG aufzurufen. http://cherrytree.at/misc/smilies/020tongue.gif

Kazesui
12.07.2012, 22:38
So ziemlich was Cherry gesagt hat. Es wäre um einiges umständlicher, und ich habe zur zeit etwas begränzt von Zeit.

Cherry
12.07.2012, 23:45
Achso, schade :/
Dann muss ich für die Überschriften und dem ganzen Scheiß weiter Pics benutzen :/

Naja, dennoch klasse dieses Plugin^^
Hilft ungemein viel!

Naja, ein Trick wäre wohl, den Text mehrfach anzuzeigen, ein paar mal mit einer komplett schwarzen Farbe im Systemset (als Rand) und als letztes mit der richtigen Farbe in der Mitte obendrauf.

MrSerji
12.07.2012, 23:49
Naja, ein Trick wäre wohl, den Text mehrfach anzuzeigen, ein paar mal mit einer komplett schwarzen Farbe im Systemset (als Rand) und als letztes mit der richtigen Farbe in der Mitte obendrauf.xD
Das wär ne Idee :D

RPG Hacker
13.07.2012, 14:18
Setzt drawText denn nicht auch schon automatisch den Schatten unten rechts? Wenn ja, dann dürfte das schwer werden. Ansonsten geht das ganz gut. So habe ich das auch bei meinen Spielen immer gelöst.

MagicMaker
13.07.2012, 16:21
Wenn man den Text 5mal rendert und bei 4 Fällen alles mit Farbe 19 oder so überstreicht die dann wie
der Schatten aussieht (Schattenfeld selber sollte transparent sein), müsste es ja eigentlich klappen.

Cherry
13.07.2012, 18:53
Im Falle, dass man ein nichttransparentes Schattenfeld verwendet, müsste man doch 3x (links oben, links unten, recht oben) zeichnen können, und dann in der Mitte, oder? Könnte vielleicht ein paar zusätzliche Schattenpixel erzeugen, da bin ich mir nicht sicher - müsste man schauen, wie das dann aussieht...

RPG Hacker
13.07.2012, 18:59
Im Falle, dass man ein nichttransparentes Schattenfeld verwendet, müsste man doch 3x (links oben, links unten, recht oben) zeichnen können, und dann in der Mitte, oder?

Hmm... Kann mir nicht vorstellen, dass das funktioniert, wie erwartet. Wenn es überhaupt funktionieren würde, wäre der Schatten an eher seltsamen Stellen.

Die beste Methode wäre wohl tatsächlich, als Schattenfarbe Transparenz zu nehmen, dann mit schwarzer Schrift die 4 oder 8 umliegenden Pixel zu beschreiben und dann die normale Farbe in die Mitte zu setzen.

MagicMaker
13.07.2012, 20:09
Im Falle, dass man ein nichttransparentes Schattenfeld verwendet, müsste man doch 3x (links oben, links unten, recht oben) zeichnen können, und dann in der Mitte, oder?
Wenn ich das in Paint probiere, kommt so manche Konstruktion raus, aber nicht, was man sich
unter einer Umrandung vorstellt. ^-^


Die beste Methode wäre wohl tatsächlich, als Schattenfarbe Transparenz zu nehmen, dann mit schwarzer Schrift die 4 oder 8 umliegenden Pixel zu beschreiben und dann die normale Farbe in die Mitte zu setzen.
+①

Oktorok3
20.07.2012, 20:38
Es wäre sehr hilfreich zu wissen, wie viele Zeichen in Zeile1 verwendet werden können,
denn wenn man einfach mal selber rumtestet, kommt schnell ein Error und bringt das Spiel
zum abstürzen :(

Auch schade, das man nicht in einem zusammenhängenden Text mehrere Zeilen verwenden kann,
außer man benutzt für jede neue Zeile @write_text "..."

Wäre natürlich echt hilfreich, wenn dieses noch entsprechend geändert würde.

MagicMaker
20.07.2012, 21:10
Ich denke mal, da hier auf das Standardsystem zugegriffen wird, ist nach 50 Zeichen die Screenbreite voll.

(320 - 16) / 6 = 50 r4

Oktorok3
22.07.2012, 13:13
@Kazesui

Kannst du eventuell noch den source-code hochladen?

Kazesui
22.07.2012, 18:43
Die aktuelle Source (http://rpgmaker.net/users/Kazesui/locker/TextMain.cpp)

Es ginge schon mehrere Zeile hinzukriegen in dem ein neues befehl introduziert wird (nur schade das \n schon benutzt wird), müsste dann aber so einiges an dem Code ändern weil man dafür wahrscheinlich mehrere Bilder brauchen wird, und der Code bis jetzt arbeitet nur an einzelnden Bilder (bzw. RPG::Image).
Ist bestimmt alles machbar und nicht ganz zu umständlich, könnte aber beim bugtesting trotzdem lange dauern und ich bin zur zeit etwas beschäftigt. Könnte also etwas dauern bevor daran genauer hinschaue

Cherry
24.07.2012, 14:02
Naja, wenn du das RPG::Image höher machst kannst du ja trotzdem mit drawText die zweite Zeile beschreiben.

Oktorok3
24.07.2012, 18:14
@Kazesui
Danke für den source code.
Damit konnte ich mit meinem Laienwissen in C++ noch die Anzeige des Heldenberufs und die StatusConditions
hinzufügen und kompatibel machen.
Versucht habe ich es auch unter anderem mit exp, lv, hp, mp usw., so das diese für die einzelnen Helden angezeigt werden können, aber das hat mit meinen Einstellungen nur Bugs gegeben, weil ich die Fehler nicht zuordnen konnte :( Schade, aber ich hoffe damit beschäftigst du dich vielleicht auch noch.

Nebenbei: Schade ist, dass der @remove_all Comment nicht funktioniert und einen Error hervorruft :(

@Cherry
Mehr Zeilen würden bestimmt einige freuen.
Ist es auch mögich, da der Text über ein Picture angezeigt wird, noch einzustellen, das man ihn sowohl verkleinern, oder vergrößern kann?
Wäre auch äußerst nützlich!

Kazesui
24.07.2012, 19:53
Naja, wenn du das RPG::Image höher machst kannst du ja trotzdem mit drawText die zweite Zeile beschreiben.

Ist mir ganz zufälliger weise heut früher auch aufgefallen, was es um einiges einfacher gemacht hat.


Danke @remove_all bug, hatte ich bis jetzt übersehen, sollte aber jetzt behoben sein.
Dazu gibts jetzt noch ein weiteres Comment Befehl:

@append_line
parameter#1: Den Tag der Text der geändert werden soll
parameter#2: Der Text der am nächsten Zeil stehen soll
parameter#3: "end" (einfach nur als dritte parameter hinschrieben)

Oktorok3
25.07.2012, 14:53
Zuerst hab ich mal die neue @remove_all Funktion getestet->
Resultat: Erst kommt für jeden Text, der gelöscht werden soll eine allgemeine Meldung mit dem Namen des Textes, die man wegklicken muss z.B.
http://i48.tinypic.com/wqsaxi.png
(Meldung vom Namen des Textes

Dann musste ich den Char ein weiteres mal anklicken, bis seine Texte removed wurden :/

Ich habe ich bei mir noch zwei weitere Funktionen hinzugefügt,
die du deinem Source-Code auch noch hinzufügen solltest:

case 'N':
{
int n = atoi(parseText(s.substr(2, size)).c_str());
return RPG::actors[n]->getDegree();
}
case 'c':
{
int n = atoi(parseText(s.substr(2, size)).c_str());
return RPG::getConditionName(n);
}


Fürs Readme:
\c[number] Returns the name of a condition with ID equal to chosen number.
\N[number] returns the degree of a hero given by the chosen number

Einen Fehler im readme bitte ich dich auch noch zu verbessern-> \v[number] kann man so nicht verwenden, sondern nur-> Vnumber returns the value stored in variable with ID equal to the chosen number
also bitte nur das so geschriebene zum neuen ändern, nicht die Funktion zum vorher geschriebenen...

Bitte auch die Buchstaben behalten, da ich diese schon verwendet habe.
Wäre außerdem hilfreich, wenn du jedesmal den neuen source-code mit hochladen würdest!

Ich bitte dich außerdem noch->
Current level,
Current experience points,
getMaxHp,
getMaxMp,
getAttack,
getDefense,
usw...
für alle Maximalwerte und dasselbe noch für die aktuellen HP
und MP Werte hinzuzufügen, da ich diese Dinge gerne mit dem Textplugin benutzen würde und ich keine Ahnung habe, wie man diese hinzufügen kann, ohne das Fehler (Errors beim Compile- und Build Befehl von devcpp) autauchen.

Und natürlich freue ich mich über die neue Funktion :)
Es ist wie ich gemerkt habe möglich, beliebig viele Zeilen damit hinzuzufügen, (sehr gut!) nur wäre es besser, wenn man schreiben könnte z.B. @append_line(15) und später dann einzelne Zeilen mit @remove_line(15) wieder zu löschen.

Kazesui
26.07.2012, 20:38
Zuerst hab ich mal die neue @remove_all Funktion getestet->
Resultat: Erst kommt für jeden Text, der gelöscht werden soll eine allgemeine Meldung mit dem Namen des Textes, die man wegklicken muss z.B.


Hab ich für das debuggen benutzt, und anscheinend ganz schnell vergessen wieder weg zu tun. Sollte jetzt weg sein.



Ich habe ich bei mir noch zwei weitere Funktionen hinzugefügt,
die du deinem Source-Code auch noch hinzufügen solltest:

case 'N':
{
int n = atoi(parseText(s.substr(2, size)).c_str());
return RPG::actors[n]->getDegree();
}
case 'c':
{
int n = atoi(parseText(s.substr(2, size)).c_str());
return RPG::getConditionName(n);
}


Sind jetzt auch drin, nur wird \a (wie in ailment) statt \c benutzt. Das ist weil beim Normalen Nachrichten werden \c für die Farbe des Textes benutzt, und um es so Intuitiv wie möglich zu halten, werde ich da nicht \c benutzen. Zudem kann es auch sein dass ich später irgendwann mal \c für ein ähnliches Farben befehl machen werde (damit nicht das ganze Text der selbe Farbe kriegen muss).

Verstehe aber nicht was du meinst mit damit dass es im Readme ein Fehler gibt bezuglich \v[number]. Entweder hast du einem Bug gefunden, was nichts mit dem readme zu tun hat, oder du hast den Readme nicht klar genug gelesen, bzw.
"It's possible to use 9 special commands within the text string itself",
was so viel heisst dass der \v[nummer] innerhalb Quotations Zeichen sein muss damit es funktioniert, und es auch nur dort funktionieren wird, wo man auch ein Text als Parameter reinschrieben kann (z.b. nicht für dem Position des Textes weil der Parameter dafür nur ein Nummer sein kann).



Ich bitte dich außerdem noch->
Current level,
Current experience points,
getMaxHp,
getMaxMp,
getAttack,
getDefense,
usw...
für alle Maximalwerte und dasselbe noch für die aktuellen HP
und MP Werte hinzuzufügen, da ich diese Dinge gerne mit dem Textplugin benutzen würde und ich keine Ahnung habe, wie man diese hinzufügen kann.


Die Werte holst du dir ganz einfach indem du sie in einem Variabel einliest, und dann das Variabel als Text anzeigst. Habe da nicht vor extra Funktionen dafür in dem Plugin einzubauen da es kein Problem sein sollte es einfach innerhalb der Maker selbst zu lösen.



wäre es besser wenn man schreiben könnte z.B. @append_line(15) und später dann einzelne Zeilen mit @remove_line(15) wieder zu löschen.

Da hast du mir aber neugierig gemacht. Wofür willst du das benutzen?

Oktorok3
26.07.2012, 22:47
Okay, funktioniert nun tadellos damit, danke!


Die Werte holst du dir ganz einfach indem du sie in einem Variabel einliest, und dann das Variabel als Text anzeigst. Habe da nicht vor extra Funktionen dafür in dem Plugin einzubauen da es kein Problem sein sollte es einfach innerhalb der Maker selbst zu lösen.


Schade das du das nicht auch mit den anderen Werten vorhast, die man auch im Maker in Variablen speichern kann, denn gerade wenn diese im Plugin wären, würdest du mir einen großen Gefallen tun, da...spekulieren wir einfach mal, ich würde gerade zufälligerweise an einem eigenen Menü mit mehr als vier Helden arbeiten, dann wäre es zwar freilich auch kein Problem all das mit dem Maker einzustellen...jedoch wenn ich da für jeden einzelnen Helden jeden Wert in einer Variable speichere, dann komme ich bei einem Helden auf mindestens 10 Variablen, bei 8 Helden auf 80 Variablen usw.
Du siehst, damit kann man eben eine Menge Variablen einsparen.

Und ebenfalls würde es mir eine bedeutend große Hilfe darstellen, wenn du (das vorhergende zwar nicht machen solltest) aber dennoch (und darum bitte ich dich außerordentlich) einstellst, das man durch eine Item ID zusätzlich auch die davon im eigenen Besitz vorhandenen anzeigen lassen kann! (Ich weiß, auch das ist im Maker einstellbar, aber sagen wir mal ich habe 400 Items (400 Variablen) und entscheide mich irgendwann dazu noch zusätzliche 541 möglich zu machen (nun insgesamt 941 Variablen einzustellen), oder will mal in der Itemdatenbank ein bisschen umordnen,
wäre besonders diese neue Funktion eine extrem Variablen-, Zeit- und Arbeitsaufwand sparende Methode!
(Ich will dir nicht zuviel aufhalsen und ich würde es ansonsten einfach selber machen, aber ich kann leider nunmal diese Programmiersprache nicht...)




wäre es besser wenn man schreiben könnte z.B. @append_line(15) und später dann einzelne Zeilen mit @remove_line(15) wieder zu löschen.
Da hast du mir aber neugierig gemacht. Wofür willst du das benutzen?

Das wäre sicherlich für das Menue an dem ich gerade arbeite von Vorteil.
Eine Erkennung der Nummer der hinzugefügten Zeile ist aber ja auch allgemein äußerst nützlich!

Ein großes Problem jedoch stellt für mich aber derzeit die Tatsache dar, dass es bisher nicht möglich ist, mehrere Textebenen zu erstellen, sprich:
den Text z.B. erst mit der Picture ID 30 und später mit der ID 32 , 34 usw. (eben wie man es gerade benötigt) anzuzeigen, sondern das der gesamte mit dem Plugin geschriebene Text mit ein und derselben PictureID angezeigt und gelöscht werden kann. Mehrere "Ebenen" wären mir von großem Vorteil!
Also das man sagen wir: den Text, der mit der ID30 erstellt wurde kann man per Move Picture sanft verschwinden lassen, die Texte mit PicID32, 34 usw. sollen bleiben.

(Das man sozusagen mehrere Ebenen erstellen kann, indem man bei @write_text verschiedene Zahlen (z.B.@write_text"boy1" @write_text"boy2" usw. verwenden kann weiß ich)

Weitere Frage:
Ist es auch mögich, da der Text über ein Picture angezeigt wird, noch einzustellen, das man ihn sowohl verkleinern, oder vergrößern kann, sprich z:B. ShowPicture34, Magnification 200% ?

Und pleeeeease dann den neuen source code auch hochladen *anfleh und bettel* !!

djeurissen
27.07.2012, 01:07
Wartemal, du brauchst doch nicht für 400 Items 400 Variablen...
Du brauchst gerademal 1...
Du machst eine Unendlichkeitsschleife und fragst jedes Item ab und lässt es dann anzeigen oder nicht und erhöhst dann die Variable, die das Item abfragt um 1...

Cherry
27.07.2012, 01:11
...nur dass es noch keinen Item-Pointer für den 2k3 gibt.

Wobei das in DynRPG auch zu lösen wäre. Man könnte z.B. ein Item als "Magic Value" verwenden, was in der DynRPG.ini festlegbar ist, sagen wir mal Item #666.
Wenn dieses Item in einem der Item-Eventbefehle ausgewählt ist, wird stattdessen die Item ID aus einer Variable (auch in der INI festzulegen) gelesen.

onEventCommand wäre das richtige Callback, man kann da nämlich auch die Parameter zur Laufzeit umschreiben.

djeurissen
27.07.2012, 09:56
Hups, sry war was müde XD...

Habe nicht richtig nachgedacht was ich geschrieben habe :/...
Ich meinte eigentlich das man nach und nach die 400 Items selber abfragt, das mag zwar total nervig sein braucht aber auch nur 1 Variable.

Cherry
27.07.2012, 12:47
Mit RMEventFactory lässt sich da extrem Arbeit sparen.

Kazesui
29.07.2012, 19:21
@Oktorok:

Wie hier oben noch erwähnt wurde, brauchst du nicht ein neues Variabel für jedem "Stat".
Einfach ein call event für jedem Held machen wo der wert in einem Temporären Variabel gelesen wird, und dann innerhalb ne Schleife mit dem Plugin raus schreiben. Ist echt kein Problem.
Das es etwas aufwänder für dem Items wäre stimmt schon, kenne da aber auch nicht gerade wo sich diesem wert sich befindet.

Da wäre wohl Cherry's Alternativ dafür eine lösung, aber gehört eher in ein seperates Plugin als noch in diesem einzubauen. So bis das gemacht wäre, bist du da auch noch auf dem Maker Befehle angewiesen.
Die grösse zu ändern wäre zwar möglich, allerdings sieht es ziemlich grausaum aus wenn wenn du was anderes als 100% oder so ab 200% wählen wurdest, und ab 200% wirds schon ziemlich gross.
Da bin ich auch noch ein bisschen faul, weil ich dann den Save und Load Funktionen noch umschreiben muss, und ich denke 200%+ geht auch locker mit Bilder (Kannste ja sogar ein andere font benutzen), da sie nicht zu häufig sein sollten. Kann aber sein dass ich da noch was machen werde.

Das mit dem ebenen ist allerdings ein guter Punkt an dem ich selber auch schon gedacht habe. Ich habe das mit nur einem Picture gelöst weils einfacher und ein bisschen effektiver ist. Ich erkenne aber dass es schon recht nützlich wäre mehrere Ebenen haben zu können, und da es ja jetzt nachegefragt wurde, werde ich mal dran gucken schätz ich.

Dein antwort zu meine Frage bezuglich das entfernen von bestimmten Zeilen, hat aber wenig gebracht. Wenn ich neugierig wozu es gut sein soll und du so ziemlich einfach sagst dass es halt äusserst nützlich wäre (du erwähntest nix Konkretes), dann glaub ich schnell dass es eher nicht nötig ist, und dass man es statt dessen mit mehrere @write_text stattdessen lösen kann, da du ja \v in dem Name des Textes reinmachen kann, und somit selber die Zeilen selbst entfernen.

+ Source (http://rpgmaker.net/users/Kazesui/locker/TextMain2.cpp)

Oktorok3
30.07.2012, 19:44
Okay,
das ist schön das du diese Verbesserungen auch einbauen wirst!
Zu der Schriftvergrößerung-> ich habe da allerdings auch an eine mögliche Verkleinerung z.B. 50% (optimal wäre natürlich wenn man einfach eine beliebige Prozentzahl eingeben könnte) gedacht, was auch praktisch wäre, ist jetzt aber nicht so dringend, das du dich damit beeilen musst.
Am wichtigsten sind mir vorerst die Textebenen.
Jetzt heißt es für mich also erstmal brav warten und ich wende mich derweil anderen Punkten zu.

Achja, danke für den aktuellen source-code!

Kazesui
30.07.2012, 20:02
Hab ich auch gemeint @50%
Ist kleiner als 100% und sieht wie oben gesagt schon recht grausam aus. Ist auch nicht so komisch, denn du muss ja bedenken dass der schrift meistens 1 pixel weit ist bei 100%, und ist ja etwas schwierig etwas kleiner als 1 Pixel zu kriegen. Ist auch der Grund wieso es erst ab 200% etwas besser aussieht grösse Werte spielen willst, aber dann ist es eh gleich zu groß.

Oktorok3
01.08.2012, 14:33
Du hast recht, habe ich inzwischen auch gemerkt!
Naja, schau einfach mal wie und ob du das machen willst.
Vergrößerung ginge ja theoretisch, nur ist wie gesagt jetzt auch nicht so dringend.

Kazesui
05.08.2012, 10:54
Und wieder ein update:

http://rpgmaker.net/media/content/users/3355/locker/DynTextYeah.png

bei "@write_text" es jetzt ein 7. Parameter. Dieser lässt dich ein Picture ID auswählen, der das Ebene vom Text entscheiden will. Wichtig ist nur zu beachten dass es dem Picture mit diesem ID schon angezeigt werden muss damit der Text auch angezeigt wird. Der Alpha wert sind immernoch von das gewählte Bild abhängig.

Wichtig zu beachten ist das Save Dateien die mit dem alten mit einem älteren version des Plugin gemacht wurde sind nicht mehr mit dem neuen Kompatibel. Sprich, nur wenn man mit dem neusten Version speichert, kann man dem Speicherstand auch richtig laden.

Dazu wurde auch ein paar kleine Bugs behoben (Weitere zeile wurde nicht angezeigt wenn neu geladen, und weitere zeile + append_text waren nicht gerade Kompatibel mit einander).

Cherry
12.08.2012, 20:14
Vorschlag: Fenster zusammenbauen lassen, entweder auf Basis von Pictures oder des Systemsets: http://rpg-maker.cherrytree.at/dynrpg/class_r_p_g_1_1_system_graphic.html#a6fe8091d200070ff733d675320eb26c3

Kazesui
14.08.2012, 13:39
http://rpg-maker.cherrytree.at/dynrpg/class_r_p_g_1_1_system_graphic.html#a6fe8091d200070ff733d675320eb26c3

Ah, da ist doch die Load Font Methode, die ich sicher war daß ich mal gesehen hatte, aber halt nicht mehr finden konnte als ich an dem Text Plugin anfing.
Und @Fenster zusammen zubauen, will ich auch noch, nur nicht sicher wann

Cherry
14.08.2012, 13:48
Dieses LoadFont ist aber mit Vorsicht zu genießen. Das Textsystem des Makers hat immer nur eine Font geladen und eine Font zu laden ist eine (vergleichsweise) langsame Methode weil die Buchstaben mit dem Systemset und dem Glyph kombiniert und zwischengespeichert werden, wenn mich nicht alles täuscht. Das heißt die Methode dann irgendwie 100x pro Sekunde aufzurufen oder so ist eine ganz schlechte Idee.

Ich hatte das verlinkt wegen des systemImage Members.

Kazesui
14.08.2012, 14:01
Schon klar @systemImage Members, halt hatte ich nach dem loadFont methode schonmal gesucht.
Werde natürlich ausprobieren müssen wie gut es sich benutzen lässt, und sollte ja eigentlich nur 2 mal pro Befehl gerufen werden, bzw. einmal vor das schreiben des Textes an einem Image, und dannach wieder zurück zum default (was wohl möglicherweise auch ärger bereiten kann im falle vom schon geänderten Font je nachdem).

Cherry
14.08.2012, 15:22
Das Problem ist man kann zurzeit die Defaultfont nicht auslesen. Speed: Für einmaliges Textgeschreibe gehts ja, aber wenn das z.B. eine Zahlenanzeige ist die der Benutzer in jedem Frame aktualisieren will - ich sehe die Lagprobleme schon kommen.

EDIT: Hm, ich hätte sogar einen Workaround für das Auslesen der Defaultfont:

char * getDefaultFont() {
return reinterpret_cast<char *>(RPG::system->systemFont == RPG::SYSF_MSGOTHIC ? 0x4884D4 : 0x4884EC);
}

Kazesui
14.08.2012, 17:04
Kewl @workaround.

Wo wir schon dabei sind, hast du irgendein besonderen weg die Speicher Adressen zu finden? Und weiß du ob evt. die sonstige Item Optione möglicherweise nahe an die Selbe Addresse von dem du der Name holst? Ich könnte dank deinem Chipset pointer schon die Terrain ID's und "Passbarkeigt" finden, und wurde gern sehen ob ich dasselbe noch für die Items und Skills tun könnte, wenn ich irgendein Referenz Punkt hätte.

Cherry
14.08.2012, 18:34
Naja, ich hab eine über mehr als 5 Jahre aufgebaute Datenbank, im Prinzip ist das der Assemblycode des Makers, aber kommentiert und die diversen Adressen und Funktionen mit Namen versehen, etc.

Dann hilft dir wohl der Sourcecode der DynRPG-Funktionen weiter:


std::string getSkillName(int id) {
DStringPtr *p = (**reinterpret_cast<NamedCatalogPtr<DStringPtr *> **>(0x4CDBC4))[id];
if(!p) return "";
return p[2];
}

std::string getSkillDescription(int id) {
DStringPtr *p = (**reinterpret_cast<NamedCatalogPtr<DStringPtr *> **>(0x4CDBC4))[id];
if(!p) return "";
return p[3];
}

std::string getItemName(int id) {
DStringPtr *p = (**reinterpret_cast<NamedCatalogPtr<DStringPtr *> **>(0x4CDB14))[id];
if(!p) return "";
return p[2];
}

std::string getItemDescription(int id) {
DStringPtr *p = (**reinterpret_cast<NamedCatalogPtr<DStringPtr *> **>(0x4CDB14))[id];
if(!p) return "";
return p[3];
}

std::string getConditionName(int id) {
DStringPtr *p = (**reinterpret_cast<NamedCatalogPtr<DStringPtr *> **>(0x4CDE84))[id];
if(!p) return "";
return p[2];
}


:)

(Die Funktionen gibts ja nur weil ich noch keine RPG::Skill und RPG::Item Klassen gemacht habe aber trotzdem schon Zugriff auf diese wesentlichen Teile ermöglichen wollte.)

Die Adressen da sind also genauso zu verstehen wie etwa die Adresse von RPG::actors, was z.B. so deklariert ist:


static RPG::NamedCatalogPtr<RPG::Actor *> &actors = (**reinterpret_cast<RPG::NamedCatalogPtr<RPG::Actor *> **>(0x4CDDC8));

Du kannst dir also RPG::skills, RPG::items und RPG::conditions so denken:


static RPG::NamedCatalogPtr<RPG::Skill *> &skills = (**reinterpret_cast<RPG::NamedCatalogPtr<RPG::Skill *> **>(0x4CDBC4));
static RPG::NamedCatalogPtr<RPG::Item *> &items = (**reinterpret_cast<RPG::NamedCatalogPtr<RPG::Item *> **>(0x4CDB14));
static RPG::NamedCatalogPtr<RPG::Condition *> &conditions = (**reinterpret_cast<RPG::NamedCatalogPtr<RPG::Condition *> **>(0x4CDE84));

...nur dass die Klassen dazu noch nicht definiert wurden.

Wenn du jetzt beispielsweise RPG::Skill so beginnst zu definieren:


class Skill {
public:
void **vTable;
int id;
DStringPtr name;
DStringPtr description;

// Hier kommt noch mehr, was ich aber noch nicht analysiert und dokumentiert habe
}

...kannst du das schon so verwenden:


RPG::skills[123]->name

:)

Das ganze SDK baut ja auf einem riesigen Hack auf, der nur durch Variablenreferenzen und der Zuweisung durch direkt derefernzierte, zu einem Pointer gecastete Konstatadressen funktioniert, dazu Wrapperklassen wie NamedCatalogPtr die einfache Array-Syntax für komplexe Delphi-Datenstrukturen erlauben und in C++ "nachgebaute" Delphi-Klassen. Dadurch sind meine Klassen binärkompatibel mit denen des Makers, die Variablenreferenzen verweisen direkt auf die Objekte des Makers und dein Compiler erzeugt dann Code der direkt diese Objekte manipuliert, ohne einen "Zwischenlayer". Das meiste von DynRPG wird ja "wegkompiliert", d.h. wenn du z.B. "RPG::system->saveAllowed = false;" schreibst, erzeugt dein Compiler Code der wirklich nur den Wert einer Variablen ändert, als wenn der Maker es selbst getan hätte. Dadurch ist DynRPG ja auch viel schneller als etwa der DestinyPatch.

Kazesui
14.08.2012, 18:45
Vielen dank!
Da werd ich mal sehen was ich noch so finden kann :)

Cherry
14.08.2012, 18:50
Ich hab vorhin den Post nochmal editiert, falls du es nicht gesehen hast...

Oktorok3
15.08.2012, 16:12
@Cherry
Um nochmal auf die Sache mit dem Item-Pointer zurückzukommen,
so wie du das sagst, klingt das ja recht einfach

...nur dass es noch keinen Item-Pointer für den 2k3 gibt.

Wobei das in DynRPG auch zu lösen wäre. Man könnte z.B. ein Item als "Magic Value" verwenden, was in der DynRPG.ini festlegbar ist, sagen wir mal Item #666.
Wenn dieses Item in einem der Item-Eventbefehle ausgewählt ist, wird stattdessen die Item ID aus einer Variable (auch in der INI festzulegen) gelesen.

onEventCommand wäre das richtige Callback, man kann da nämlich auch die Parameter zur Laufzeit umschreiben.

Kannst du das nicht locker machen, also ein kleines Plugin dazu? Würde mir eine Menge Arbeit ersparen.
Solche Sachen schiebe ich momentan auf (alles Manuell im Maker ohne derartige Stützen einzustellen), weil bestimmte Dinge mit den bisher vorhandenen Möglichkeiten nicht mehr wirklich übersichtlich oder einfach zu umständlich zu Scripten sind.

Falls das kein Problem für dich ist und du das machst, wäre ich wirklich dankbar!

@Kazesui, Cherry
Da ich wie bereits bekannt ein Menü mit dem Plugin erstelle, wäre es natürlich umso hilfreicher, wenn auch z.B. Die Heldenklassen abgefragt werden können. ->möglich?
Nochmal nachgefragt: Ist es wirklich ein so großes Problem noch die Heldenwerte hinzuzufügen?
Ich weiß, das man die meisten auch schon im Maker speichern kann, nur will ich es so machen, das die Helden nicht auf vorbestimmten Plätzen sein müssen ->Held 1 Platz1, Held 2 Platz 2 usw.
Set Var 2000->Held ID1 LV, Set Var 2001->Held ID1 EXP, Set Var 2002->Held ID1 HP usw.
Diese Methode für 10 Werte und sagen wir 40 Heldenplätze in der Datenbank anzuwenden, wenn man Heldenplätze auch noch für andere Dinge (z.B. Namenspeicherungen aller Art) verwendet, ist dann ja um einiges umständlicher und Variablenfressender als einfach in einem Comment einzugeben:
@write_text "lv1", 0, 30, "\(levelHeld)[1]"
@write_text "lv1", 0, 30, "\(levelHeld)[367]"
@write_text "hp1", 0, 30, "\(hpHeld)[367]" usw.

Cherry
16.08.2012, 18:14
Naja du kannst derweil ja einfach RMEventFactory nehmen und dir damit ein Common Event erstellen lassen was wie z.B. ein Heldpointer funktioniert.

Also du machst sowas:

<> Conditional Branch: If Var[HeldID] == 99
....<> Change Variable [HeldHP] = HP von Held #99
: End Case

Und dann lässt du dir von RMEventFactory das z.B. 20x kopieren und statt "99" eben von 1 bis 20 durchlaufen lassen.
Das verwendest du dann als Common Event, etwa so:

<> Change Variable [HeldID] = 4
<> Call Event: Helden-HP abfragen
<> Message: Held 4 hat \v[HeldHP] HP!

@Kazesui:
Wäre natürlich toll wenn du das irgendwann so erweitern könntest dass es nicht mehr (nur) das Standardtextsystem nutzen kann sondern eigene Fonts aus Bildern (wie das Textbox-Skript für den 2k mit Destiny). Zu Beachten ist dabei die Palette - am performantesten wäre es wenn man festlegt dass alle Fontbilder die im selben RM-Picture gezeigt werden, dieselbe Palette haben müssen.

@all:
Hab ich jetzt nicht getestet, aber wenn ich mich richtig erinnere, müsste mit dem Plugin auch $A und dergleichen gehen, weil die Makerengine das automatisch richtig anzeigt!

Oktorok3
17.08.2012, 17:51
Danke Cherry, sehr gute Methode!
Auf diese Idee bin ich bisher nicht gekommen -
sehr simple Lösung, bei diesem scheinbar komplizierten Problem.
Süperb! :bogart:

MarcL
20.08.2012, 09:35
hallöchen :)

ich hab mal ne Frage zu dem "fixed" Parameter.
Funktioniert der, stelle ich mich zu dumm an (wahrscheinlich) oder unterstelle ich dem Parameter eine ganz andere Funktion als er wirklich hat?

Hat den Befehl schon wer getestet? Muss man da irgendwas beachten? ^^;

@Kazesui: ^^ ah danke! Ich hab mir das Demonstrations Projekt nochmal angsehen und gemerkt, dass ich die Anführungszeichen um das Fixed vergessen hatte ^^°°°
Und ich muss nochmal sagen, dass dieses Script gepaart mit dem Stealth und dem Pathfinding Script --> *___* pure awesomeness

Kazesui
20.08.2012, 15:15
Es funktioniert in das Demonstration Projekt (Wird bei die Dame oben links verwendet).
Wie sieht denn dein Befehl aus? Fixed macht daß der bild mit das Map scrollt. Allerdings sollte man hier beachten dass die Koordinaten dann in pixel Koordinaten relativ zum Map sind (bzw. anders als beim screen relative Koordinaten). Also soll der Text z.b. bei tile 30, 33 erscheinen, muss du die pixel koordinaten 480, 528 eingeben

Fuxfell
20.08.2012, 19:02
Ich glaube ich habe einen Bug im @append_text command gefunden:
http://www7.pic-upload.de/thumb/20.08.12/n3nhe1e1aca.png (http://www.pic-upload.de/view-15686388/example.png.html)



@write_text "AktHP", 240, 110, V22, end
@append_text "AktHP", " | ",end
@append_text "AktHP", V23 ,end


Fügt mir zweimal das "I V23" hinten an den Text an. Könnte natürlich auch sein, das du wolltest, dass @append_text
genau diese Funktion hat! Ich hatte es aber so verstanden, dass einfach nur das was in dem @append_text drin
steht hinten dran geschrieben wird ;)

(Hab das so gelöst, weil @write_text "AktHP", 240, 110, V22 "|" V23, end nicht das angezeigt hat, was ich wollte :/)

Kazesui
20.08.2012, 19:58
Das sieht wie ein Bug aus, ja. Werde dran schauen.(Das V22 "|" V23 aber nicht. So funktioniert das einfach nicht)
Sollte allerdings auch gehen es so zu machen


@write_text "AktHP", 240, 110, "\v[22] | \v[23]", end

Fuxfell
20.08.2012, 20:22
Oh man, so klappts natürlich! (Hast du mir ja ein paar Seiten vorher schonmal erklärt -_-')
Hoffentlich bleibts jetzt bei mir hängen! (Immerhin hat meine Lernresistenz doch was gutes und ich hab nen Bug aufgespürt :) )

Oktorok3
12.09.2012, 15:11
Habe ich schon als PN geschrieben,
aber hier nun nochmal, damit es alle wissen die eventuell derzeit mit dem Textplugin arbeiten:
Ein weiterer Bug im Plugin ist, das man im Text keine Anführungszeichen verwenden kann, da diese das Ende des Textes markieren.
Es wundert mich, dass das bisher niemandem außer mir aufgefallen ist, aber das dazu, damit man Bescheid weiß.

MagicMaker
12.09.2012, 15:38
↑ Weder verwende ich das Plugin, noch weiss ich, wie es funktioniert, aber benutzt man für solche Probleme nicht
üblicherweise Zeichencodes wie \" ?

Kazesui
12.09.2012, 15:42
Üblicherweise schon, wird aber von SDK anscheinend anders geparsed und funktioniert desshalb leider nicht mit dem Plugin.

BDraw
27.10.2012, 10:39
Wäre es möglich das Plugin so zu modifizieren, dass es nicht für alle Texte die selbe PictureID benutzt, damit man unterschiedliche Transparenzen einstellen kann?

Oktorok3
27.10.2012, 14:48
Da es mit dem Plugin bereits möglich ist, unterschiedliche Pic-IDs zu verwenden, kann man auch unterschiedliche Transparenzwerte verwenden...

BDraw
27.10.2012, 15:16
Da es mit dem Plugin bereits möglich ist, unterschiedliche Pic-IDs zu verwenden, kann man auch unterschiedliche Transparenzwerte verwenden...

Und wie geht das? Aus der Anleitung im Startpost lese ich nur heraus, dass man einmal eine ID festlegt, auf der dann alle Texte angezeigt werden.


The text in this plugin will be drawn right before a picture with ID of your choice. You can choose
which Picture ID needs to be shown for the text to draw in the DynRPG.ini file.
Open this in a text editor and you'll see something along the lines of:

[DynTextPlugin]
PictureID=1

This sets the default picture ID your text images will be associated with. You can however specify in parameters if you want the image to be associated with another picture ID. This is used to mainpulate which layer the texts are shown, like which pictures the texts will be shown above or below.
Also, by adjusting the transparency of a picture, all the associated text images will change transparency along with the picture. This allows for easy fading by a single move picture command.

EDIT: Okay, falsch gelesen, sorry. Steht ja auch da, "You can however specify in parameters if you want the image to be associated with another picture ID", aber wo genau muss ich das in dem Befehl setzen?

EDIT2: Zu blöd zum lesen... Ignoriert mich einfach, hab's gefunden. Argh. x_x

IndependentArt
29.12.2014, 10:39
versuche mich grad reinzuarbeiten und hab ein paar fragen.

wozu genau brauche ich diese beiden pixel-pictures? also, ohne sie scheint der text nicht zu funktionieren, schon klar. aber ich hab nirgends eine erklärung dazu gefunden.

das mit dem ID zuweisen scheint bei mir nicht zu funktionieren. ich verstehe das so, dass ich, wenn ich die vergebene ID mit picture befehlen anwähle, den text dann wie ein picture behandeln kann, oder?
ich hab foldendes ausprobiert: @write_text "a", 50, 50, "testtext", "fixed", 3, 1

wird angezeigt, wunderbar. der letzte parameter ist ja die ID. sollte ich das jetzt nicht mit move picture als picture 1 ansteuern können?

edit: 2. frage hat sich geklärt. geht nur für transparenz und nicht für rotate oder son quatsch :D

btw. ist es aber gut, dass ich den thread mal ausgegraben hab, solche genialen sachen sollten nicht in vergessenheit geraten ;)

MrSerji
09.01.2015, 16:50
Die Pixelbilder brauchst du gar nicht. Kannst auch ein einfaches Bild benutzen.
Also ich habe ein Picture von mir benutzt, selbst mit der einfachen Textbox geht das xD

Frage:
Ist es möglich den Text langsam nacheinander schreiben zu lassen?
Nicht diese Möglichkeit: @append_text
Sondern eine "Vereinfachte" Möglichkeit. Wäre umständlich alle Buchstaben einzeln so hinzuzufügen. Und wenn imer Wörter aus dem Nichts auftauchen, ist das auch nicht schön ^^Danke schon mal im Voraus :D

- Soul

IndependentArt
05.02.2015, 09:31
so, ich möchte nochmals festhalten wie toll dieses ding ist, und dass ich mein spiel bereits um ca. 400 pictures entrümpelt habe :D

hab jetzt allerdings scheinbar doch ein problem gefunden:
wenn ich den append_line befehl zu oft benutze, kommt eine fehler meldung.
21978

bei meinem spiel gibts den fehler glaub ich ab dem 6. befehl hintereinander.
ich habs auch im test-projekt des plugins versucht, hier verhält es sich etwas anders. da gibt es keine fehlermeldung, sondern alles hängt sich gandenlos auf, so dass ich fast nur rauskomme, indem ich den rpg_rt.exe prozess beende.

MrSerji
05.02.2015, 17:06
Ich bekomme diesen Fehler net, benutze append_text aber auch nicht. Bei append_line ist es aber so, dass du ab dem 4. Befehl (bei mir zumindestens) einen hänger bekommst und das Spiel eine Zeit lang einfriert bevor es weiter geht.

- Soul

IndependentArt
05.02.2015, 17:19
ich meinte append_line, sorry ^^

aber alternativ mache ich jetzt eben einzelne texte. das ist unwesentlich komplizerter.
aber vielleicht ist es als bugreport interessant.