RMMZ -- WIP Updated: 0.22 Jun 09 -- Ddm Draegonis's MZ react js components

Draegonis

Villager
Member
Joined
Dec 10, 2014
Messages
14
Reaction score
14
First Language
English
Primarily Uses
RMMZ
So this is my first attempt at publishing something ... what it is, is a collection of components I've made in react that I designed for rpm maker MZ. They may work in RPG maker MV as well but I'm developing on a 64x mac and MV doesn't like mac. (or I should say mac doesn't like MV)

Updated to 0.22: Message Log added ability to wait for input with new plugin command. Filter auto-changes now and "All" doesn't include battle anymore. Also added "none" to modifier keys in plugin params.

Enemy Scan - a component set to see enemies hp/mp/tp. It runs automatically. A lot more features are planned for this component.

Message Log - push messages to a "group" that can be filtered by a dropdown menu.

Quest Log - early implementation, added Progress Log into the Quest Log, basically means you can have "quest" or "progress" items inside the log. Can filter them with the new dropdown menu.

screenShot1.jpgscreenShot2.jpgscreenShot3.jpg

Planned Features:
  1. Merging Quest+Progress into one log with a toggle tags, and Map+Battle log into one with a toggle to filter battle/map text.
  2. Adding more escape codes. Like $data object names
  3. Adding UI buttons to the logs.
  4. Adding more styling. It's mostly placeholder stuff at the moment.
  5. Adding plugin commands for moving, resizing the logs.
  6. Adding a notification system for progress log and the new one I'm working on.
  7. Expanding Enemy Scan to include more features.
  8. Preload battle log or map log text in a param, so you can easily call it if it's something you repeat often.
  9. Being able to preload progresses without having them immediately parsed and displayed.
  10. Easy to call progress templated through params possibly.
  11. Some type of Debug script that will allow you to see the information for progress log and the new log.
Requested Features:
  1. Adding controller support for the logs.
  2. Adding more keyboard control for the logs.

Installation instructions are now found in the DdmDraeDocumentation.docx.

Current version: - Updated to 0.22 -
You can download this on Itch.

The only place I've uploaded the scripts is on Itch. Please don't upload them anywhere else. If you want to let others know about this project just link to here (while it is in development), or the Itch page. I will never send private messages in any platform for exclusive demos/new features. Any new demo/feature will be added to itch for download.

2022 Jun 09 -> 0.22
  • Will need to do modifications to the documentation.
  • Added “none” to the modifiers for inputs so that you don’t need to have any.
  • Message Log
    • Added plugin command waitForInput. Using this will wait till the user uses any of the OK keys which are hard coded to the default ones (Z, Enter, Space). Will add functionality for mouse/touch and custom keys. This has coded game interpreter waits so it may be possible that if the games lags a lot that it will cause issues. It will need further testing.
    • Added an option to have all end of battle text be routed to the message log. Note: default “gold” text in the Terms needs to be changed to remove the “\”.
    • Changed “All” filter to not include Battle text.
    • Added auto-filter changes for map/battle.
    • Added plugin command to change the filter.
2022 Apr 26 -> 0.21
  • Bootstrapped the project with Create React App. It is now a better development environment than what I had before. (I had included Electron in my original environment but in reality this project is mostly focussed on React and it’ll be easier to open the source at a later date)
  • The code splitting is different from the last update. It is recommended to copy the script section in the header and paste it into your index.html in your project. I know it is more complicated but it should be easier loading with all the smaller script chunks.
  • Removed the param in Core for the screen size, I went back to getting it from $dataSystem.advanced.
  • Combined BattleLog and MapLog into MessageLog. Combined ProgressLog into QuestLog. This completes the removal of duplicated code. Before the store slices/core logic were the same, now it is divided between 2 easier to manage types of logs.
  • More edits to params: Core removed BattleLog/MapLog/ProgressLog Enables. Added Filter type params to MessageLog and QuestLog. Atm you can’t change the order of All/Map/Battle or All/Quest/Progress then your custom filters. I plan to change that.
  • Added the ability to Filter the logs.
2022 Apr 13 -> 0.20
  • ** Fixed map/battle log autoscroll.
  • The main script will now throw errors if you enable a component but forget to add/enable the script for it. Example: if you enable MapLog in DdmDrae_Core but forget to enable DdmDrae_MapLog in the plugin manager.
  • Completely re-wrote the Readme.txt and ChangeLog.txt into a google doc with all the plugin commands, script calls, and general information. Now inside the scripts is only the basic information on each plugin command or script call, this is to reduce the amount of commented code that needs to be parsed. Included with the files as DdmDraeDocumentation.docx. Note: I will revisit the script call section in order to format it to be more readable.
  • Implemented code chunking, now to install the main script you also need to include the ddmDraeComponents folder in the root folder. This is to try to remove the large initial size of the js file as more components are added. This also helps that if you don't use certain components that it won't load the js for it. If you don't use electron you don't need to add anything to the index.html. If you use these scripts in an electron project you'll need to add: <script> var global = global || window; </script> above the body tag in the index.html. If you don't you'll get a global undefined error. The other solution I found was to make nodeIntegration: true and contextIsolation: false but that is very dangerous to do in any electron project. Added an example index.html for an electron project.
  • Removing a lot of internal/script code duplication, also removed a lot of wasted space in the scripts.
  • Lots of re-organizing the format of the params for the plugin manager.
  • Changed the colours plugin command param to a combo[], it now lists the css colours you can select or type in one if you already know which you would like to use or type in a Hex colour value. Atm it doesn't take RGB values.
  • Changed the BattleLog/MapLog default limit down to 300 each, you're free to change that number if you want.
  • Changed the log loading logic. It now purges the log before loading, so as long as it loads by the DataManager.extractSaveContents you don't need to purge the log before loading. (It won't load the log anyways if you don't use the DataManager.extractSaveContents function).
  • Added escape code \d(){ } to text input, can be used in format blocks. The data names are replaced when the event calls the plugin command and not when they are added onto the log to prevent the leader/member/gold changing on load if the log text is preserved and loaded at a later time after they saved the game.
  • New Component:
    • Quest Log. Barebones functionality, I plan to add some type of rewards etc eventually, also add in quest types for sorting.
  • When starting a new game it will initialise the game switch attached to isFullSwitchId to false.
2022 Mar 14 -> 0.16
  • Added a ReadMe.txt to try to centralise all the extra information.
  • Progress Log
    • Changed some of the function names of some of the script calls. basically changed "entry" -> Tag, to be consistent. (valueOfTag, maxValueOfTag, isTagCompleted, isTagFailed, isTagAccepted)
  • Battle/Map/Progress Log
    • Changed large text input into @type note, when opened it will be easier to read your text. It removes all extra spaces.
  • Added escape code -> \F(c1bi)[text here]. The F C B I are not case sensitive, so it could look like \f(C1BI)[text]. C# (1-9), will hook into the new colours arg added to the push text. 0 = default colour, you don't need to "reset" the colour after a text block, since the C# only affects the text in the block. B, will tell it to bold all the text in the block, and I will italicise the text in the block. You have to follow the format order of C#BI, but you can exclude what you don't want so \f(bi)[text] bold/italic text or only include 1, like \f(i)[text]. \f(c1)[text] is colouring only. This works for all text input including progress log title.
  • ** You will have text errors if you include a format block within a format block. I only have it so that it properly formats 1 block, not nested blocks. You can have more than one in your text.
  • ** Breaking Change -> if you forget to update all the old text inputs to the new note format you will get a JSON.parse error. Basically all the old text don't have the " at the start and will give you an error at index 0.
2022 Mar 12 -> 0.15
  • Renamed the demo project properly... forgot to when I copied stuff over to make it.
  • Progress Log
    • changed it so it'll only show on the map... that way players won't need to manually toggle on/off during battle or the menu.
    • changed "Active" from a button to a div so it doesn't minify the list. This way progress will always update. This is to prevent getting stuck until you unminify the list.
    • changed it so that failed quests can't change values but if you want you can change the status back to "accepted" and then do logic if you want to. (Like giving a second chance or however you want to.) Just be careful because failed quests are not removed from the log, so at some point you'll need to decide to "finished" them.
    • Added script call to check the new array mentioned in Core below. It takes as many "tag" args as you give it and then checks if the tags are in the finished array. Note: only includes progress tags of "completed" -> "finished".
    • Added autoCleanLog param -> it automatically removes finished items and removes the "finished" category from the log.
    • Added isFullSwitchId -> it hooks the boolean that tells you if the progress log is full or not into the game switch id you provide. It defaults to 0 which is no switch, since the id's start 1+.
    • Added to Add Progress Bar args that will allow you to hook it into gameSwitch and gameVariables.
    • Added plugin command Quick Update Progress, it will update the values of the tag's progress by the defined game variable id's you gave it at creation. Note: if you change the game switch exist value to false it will remove that progress bar. The value game var you need to += or set to the new value.
  • Core
    • Added new contents in the save/load information. It is an array of all the tags of every progress item that has finished. The idea of this is so that you can check if the array of finished items has your tag(s) and if it does that means that it has been "finished", then you can do logic based on that. Since it is just a reference to the tag(s), you can't do more complex logic on it, like reviving it.
2022 Mar 09 -> 0.14
  • Core
  • added my contents to DataManager makeSaveContents and extractSaveContents, so you will now have all the logs save and load along with all the other game data. I may set it if there are items to load that will automatically hide the log and then give X amount of time to show it. I'll look into improvements on either the loading or an automatic fade in/out.
  • Progress Log
    • No longer uses the "tag" as the title of the entries. Added a title arg to the Add Progress Bar plugin command. (Although I didn't add it to the update, so once it is set through the plugin command it can't be changed.)
    • Changed render order back to normal (no longer reversed, that was weird and was a test).
    • removed autoscrolling for the progress log, that way if anything is added it won't scroll around if you were looking at progress for a certain entry.
    • The opacity of the progress log is now 100% ... it looked weird and semi faded.
    • Added categories for the progress bars: items are automatically sorted into their status category and you can click on them to expand the list or reduce it.
    • Added default text size param for title and detail text.
    • Added script calls in order to get access to data from the entries in the progress log.
    • When an item becomes finished it can no longer be modified. Although if items are "completed" or "failed" they can still be changed. The idea behind that is if something is finished it is done period, but if items are "completed" or "failed" you may still want to run some logic on them.
    • Rewrote the logic for max items in this log, and have a script call that will let you know if the log is full or not. Now when the log is full it will check if there are any finished items that it can remove to make space for a new entry. As much as I want to never remove any "finished" items -so you can see them for the entire game-, it's to prevent performance issues later with a polluted dom. You will need some other way to keep a record of the finished items. * Note: this will not remove "completed" or "failed" items from the log, since they can still be used for game logic. *
  • Map Log
    • Added default text size for the entire log.
  • Battle Log
    • Added default text size for the entire log.
2022 Mar 07 -> 0.13
  • fixed EnemyScan, changed the Select component to be fixed at x,y (added params). I plan to have some type of way to show weakness strength vrs elements down the line if you have a certain level of skill.
  • Re-added EnemyScan enable boolean to Core.
  • Decided to skip the obfuscation, it is still minimised and babelfied? by webpack. It's a difference of ~200 KB (almost double) in file size. I basically want it to run as fast as possible. (I do plan if the project gets big enough to introduce React.lazy and chunking with webpack.)
  • Minor tweaks but decided to upload this now to get EnemyScan back.
2022 Mar 05 -> 0.12
  • Converted project to Typescript. (Should have started off with it tbh.)
  • Removed component:
    • EnemyScan - reason -> there are other hp bar type scripts, and it needs a rewrite due to library changes. I may re-add at a later date. Edited Core and removed EnemyScan enable boolean.
  • New component:
    • Progress Log - keep track of progress by using the included plugin commands. At the moment, you won't be able to get the status to use in game. That will be added next update with other fine tuning. The limit, although included right now, needs to be rewritten to better handle when only specific progress items are removed.
  • Simplified styling with styled components/react-spring instead of a mix of using style attribute and tailwind/headlessui with some react-spring (react-spring does pretty much same things as headlessui)
  • Core
    • Added gameWidth and gameHeight params, those are used to scale components on the screen. I used to access $dataSystem.advanced for that information but it would sometimes break. The gameWidth/gameHeight is not the UI version but actual project width/height.
  • BattleLog & MapLog
    • Added a limit to how many messages they can contain. I did some testing and at about 2000 messages, in 1 log, it started to cause severe lag. Although I haven't tested a combination, I set the default limit to 500 each.
    • Added a limit param.
    • Added basic word-wrapping. It is automatic with no need for special syntax.
    • Log components are no longer unmounted from the dom, this is to prevent having to re-render the entire list when changing from map -> battle etc. Keep in mind that if you change the limits to a higher number that it can eventually cause a lot of lag in the game.
  • Included comment in the code that points to the licence file, if you plan to use ddmDraeComponents you will need to include the licence file for legal purposes.(As most of the licences require the mention of their licence). I could include it inside the code (commented out) but it will affect loading times some, so I decided to take this path.
2022 Feb 25 -> 0.11
  • I Learned how to do plugin commands so I will be implementing them over time.
  • Changed state management to react redux / reduxjs/toolkit
  • Internal changes:
    • With redux I only parse the plugin params once on load. (I had it parsing them every render... which obviously isn't ideal)
    • Changed state management.
    • Lots of changes to the log component to make it more reusable.
    • Global key input management created.
    • Lots of other minor internal changes.
  • New component:
    • MapLog: you can use a plugin command to push messages to a log that is rendered on the map scene.
  • Core
    • Added MapLog enable/disable.
  • BattleLog
    • Added a lot of plugin commands.
    • Added ability to disable default emerge to do custom via plugin commands.
  • EnemyScan
    • Added a plugin command to toggle.
2022 Feb 23 -> 0.1
  • Initial release -> Core and Components -> BattleLog, EnemyScan.

Terms of use: Released under the Apache 2.0 license, which is free to use including commercial use, you can credit me as Ddm Draegonis.
 
Last edited:

BreakerZero

Veteran
Veteran
Joined
Jul 8, 2018
Messages
1,108
Reaction score
486
First Language
English (USA)
Primarily Uses
RMMV
Mac is actually an x86 vs. x64 matter so Catalina is technically out of the question, and even more so if you have an M1 Mac on Big Sur or newer. That is actually what's blocking MV. Also, MV and MZ have a ton of differences so I am not sure of compatibility.
 

Draegonis

Villager
Member
Joined
Dec 10, 2014
Messages
14
Reaction score
14
First Language
English
Primarily Uses
RMMZ
Well I have tested it some, in a web deployment wrapped in electron (personal project), and even with the native deployment to mac and it works. Granted might be some odd bugs though.

2022 Feb 25: Ddm React Components 0.11
-- learnt how to do plugin commands so will be implementing them over time.
-- changed state management to react redux / reduxjs/toolkit
-- internal change
-- with redux I only parse the plugin params once on load.
(I had it parsing them every render... which obviously isn't ideal)
-- changed state management.
-- Lots of changes to the log component to make it more reusable.
-- global key input management created.
-- lots of other minor internal changes.
New component
-- MapLog: you can use a plugin command to push messages to a log
that is rendered on the map scene.
Core -> 0.11
-- added MapLog enable/disable.
BattleLog -> 0.11
-- added a lot of plugin commands.
-- added ability to disable default emerge to do custom via plugin commands.
EnemyScan -> 0.11
-- added plugin command to toggle.

2022 Mar 05: Ddm Draegonis React Components 0.12
-- converted project to Typescript. (Should of started off with it tbh.)
-- Removed component:
-- EnemyScan - reason -> there are other hp bar type scripts, and it
needs a rewrite due to library changes. I may re-add at
later date. (Next update)
-- Edited Core and removed EnemyScan toggle.
-- New component:
-- Progress Log - keep track of progress by using the included plugin commands. At the moment, you won't be able to get the status to use in game. That will be added next update with other fine tuning. The limit, although included right now, needs to be rewritten to better handle when only specific progress items are removed.
-- Simplified styling with styled components/react-spring instead of a mix of using style attribute and tailwind/headlessui with some react-spring (react-spring does pretty much same things as headlessui)
-- Core
-- added gameWidth and gameHeight params, those are used to scale components on the screen. I used to access $dataSystem.advanced for that information but it would sometimes break. The gameWidth/gameHeight is not the UI version but actual project width/height.
-- BattleLog & MapLog
-- added a limit to how many messages they can contain. I did some testing at about 2000 messages, in 1 log, it started to cause severe lag. Although I haven't tested a combination, I set the default limit to 500 each.
-- added limit param.
-- added basic word-wrapping. It is automatic no need for special
syntax.
-- Log components are no longer unmounted from the dom, this is to prevent having to re-render the entire list when changing from map -> battle etc. Keep in mind that if you change the limits to a higher number that it can eventually cause a lot of lag in game.
-- Inlcuded comment in the code that points to the license file, if you do plan to use ddmDraeComponents you will need to include the license file for legal purposes.(As most of the licenses require the mention their license) I could include it inside the code (commented out) but it will effect loading times some, so I decided to take this path.

2022 Mar 07 Ddm Draegonis React Components 0.13
-- fixed EnemyScan, changed the Select component to be fixed at x,y (added params). I plan to have some type of way to show weakness strength vrs elements down the line if you have a certain level of skill.
-- readded EnemyScan enable to Core.
-- decided to skip the obfuscation, it is still minimized and babelfied? by webpack. It's a difference of ~200 KB (almost double) in file size. I basically want it to run as fast as possible. (I do plan if the project gets big enough to introduce React.lazy and chunking with webpack.)
-- minor tweaks but decided to upload this now to get EnemyScan back.
-- contains no improvements to ProgressLog this update.

2022 Mar 09 Ddm Draegonis React Components 0.14
-- Core
-- added my contents to DataManager makeSaveContents and extractSaveContents, so you will now have the all logs save and load along with all the other game data. It may or may not autoscroll to the bottom, I'll look into it for next update. I may set it if there are items to load that it will automatically hide the log and then given X amount of time to show it. I'll look into improvements on either the loading or an automatic fade in/out.
||** Note if you have something that allows you to load the game outside
of going back to the title screen you need to manually purge the logs
at the moment. **||
-- Progress Log
-- no longer uses the "tag" as the title of the entries. Added a title arg to Add Progress Bar plugin command. (Although I didn't add it to the update, so once it is set through the plugin command it can't be changed.)
-- changed render order back to normal (no longer reversed, that was weird and was a test).
-- removed autoscrolling for the progress log, that way if anything is added it won't scroll around if you were looking at progress for a certain entry.
-- the opacity of the progress log is now 100% ... it looked weird semi faded.
-- added categories for the progress bars: items are automatically sorted into their status category and you can click on them to expand the list or reduce it.
-- added default text size param for title and detail text.
-- added script calls in order to get access to data from the entries in the progress log.
-- when an item becomes finished it can no longer be modified. Although if items are "completed" or "failed" they can still be changed. The idea behind that is if something is finished it is done period, but if items are "completed" or "failed" you may still want to run some logic on them.
** I plan to have an option that will automatically remove finished
progress bars from the log and make it an optional param. **
-- rewrote the logic for max items in this log, and have a script call that will let you know if the log is full or not. Now when the log is full it will check if there are any finished items that it can remove to make space for a new entry. As much as I want to never remove any "finished" items -so you can see them for the entire game-, it's to prevent performance issues later with a polluted dom. You will need some other way to keep a record of the finished items.
* Note: this will not remove "completed" or "failed" items from the log, since they can still be used for game logic. *
-- Map Log
-- added default text size for entire log.
-- Battle Log
-- added default text size for the entire log.

* Custom text size per item via plugin command will come later *
 
Last edited:

Scandalon

Villager
Member
Joined
Mar 17, 2016
Messages
10
Reaction score
0
First Language
English
Primarily Uses
Nice! Thanks for publishing this work of yours. The Map Log component is the closest thing I've found so far to what I've been looking for for my project. I want to have something similar to an online MMO chat box (particularly one similar to FFXI, since that is one I'm most familiar with) for use when having dialogue with NPC's (and probably other situations) instead of using the pop-up message boxes that come standard with RMMZ.

Do you plan on expanding more on the Map Log? Some things that I'd personally be interested in having are:

- Escape codes, similar to (or even more numerous/flexible than) those already in place in rmmz

- Some way to quickly see in one glance the full text of a longer message within the editor (currently cut off visually by the plugin parameter limitation)

- Control of font colors/styles for individual text messages (for example, to help distinguish more quickly between different types/sources of messages in-game)

- Ability to control scrolling of log window with assignable button(s), so that it can be done via keyboard and gamepad.

- Generally, much more and very flexible customization options in the plugin if you intend to keep the javascript code for the components in an essentially un-editable state for users

Thanks again for sharing your work publicly (albeit in-progress, I know and understand). It's really cool!
 

Draegonis

Villager
Member
Joined
Dec 10, 2014
Messages
14
Reaction score
14
First Language
English
Primarily Uses
RMMZ
Yeah I do have plans to expand the map log.

I don't plan to add online functionality to it but all someone needs to do is push messages to it.
Edit: I can most likely create a text input attached to the log but I'd have to have some way for them to get the text to forward it.

Escape codes I'll need to look into how to implement them.
I do plan to give you plugin commands to resize/relocate the log, won't be hard to do. Basically if you know some text will take more space you can resize the log for a time, then when you're done reset it back maybe?
I do plan to add more styling in terms of text and styling the box itself. I also really want to add an ability to hover over a specific text and get a pop-up box of some sort.
I do plan to add UI buttons to the top of the log, and the ability for the user to adjust the size of the log box. Also be able to move it themselves maybe.
As for gamepad I'll need to look into how to implement that.

Yeah right now there's not much for customization, it's early yet and I do hope to add in that ability.

As you said it is still early in what I'm doing or trying to do, I'm no expert programmer just trying and learning as I go.

Edit: You can see from the update logs that I've been working mostly on the progress log the last bit, so I'll spend the next bit to put in some more log functionality.

2022 Mar 12 Ddm Draegonis React Components 0.15
-- Renamed demo project properly... forgot to when I copied stuff over
to make it.
-- Progress Log
-- changed it so it'll only show on the map... that way players won't
need to manually toggle on/off during battle or the menu.
-- changed "Active" from a button to a div so it doesn't minify the
list. This way progress will always update. This is to prevent
getting stuck until you un-minify the list.
-- changed it so that failed quests cant change values but if you want
you can change the status back to "accepted" and then do logic if you
want to. (Like giving second chance or however you want to.) Just be
careful cause failed quests are not removed from the log, so at some
point you'll need to decide to "finished" them.
-- added script call to check the new array mentioned in Core below.
It takes as many "tag" args you give it and then checks if the tags
are in the finished array. Note: only includes progress tags of
"completed" -> "finished".
-- added autoCleanLog param -> it automatically removes finished items
and removes the "finished" category from the log.
-- added isFullSwitchId -> it hooks the boolean that tells you if the
progress log is full or not into the game switch id you provide. It
defaults to 0 which is no switch, since the id's start 1+.
-- added to Add Progress Bar args that will allow you to hook it into
gameSwitch and gameVariables.
-- added plugin command Quick Update Progress, it will update the values
of the tag's progress by the defined game variable id's you gave it
at creation. Note: if you change the game switch exist value to false
it will remove that progress bar. The value game var you need to +=
or set to the new value.
-- Core
-- added a new contents in the save/load information. It is an array
of all the tags of every progress item that has finished. The idea of
this is so that you can check if the array of finished items has your
tag(s) and if it does that means that it has been "finished", then you
can do logic based on that. Since it is just a reference to the tag(s),
you can't do more complex logic on it, like reviving it.
 
Last edited:

Scandalon

Villager
Member
Joined
Mar 17, 2016
Messages
10
Reaction score
0
First Language
English
Primarily Uses
Great, thanks for answering!

Oh, I didn't mean to imply online functionality. I just meant that the game I'm working on will have some similarities to the style of an online game, such as the log window style of showing conversations between the player's character and computer controlled characters (and possibly other in-game related info), rather than the individual pop-up messages that don't record a history of the text.

That would also be really nice to have plugin commands to resize and relocate the log like you are planning. However, what I was trying to get at was the text visibility within the event editor. I'll include a screenshot of what I'm referring to with an example of text:

MapLog Text In Editor.PNG

I don't know if it's even possible to do this in such a way that you'd be able see all of the text at once with out it being cut off. Though the standard "show text" option in the event editor can handle showing multiple lines in the editor, though it doesn't output with word-wrapping so... I don't know.

I am also no expert programmer, though I've managed to create a few of my own scripts and modify some others. I appreciate your time in considering my thoughts and look forward to what you come up with as you continue on. Looks like it'll be pretty cool and quite useful!
 

Draegonis

Villager
Member
Joined
Dec 10, 2014
Messages
14
Reaction score
14
First Language
English
Primarily Uses
RMMZ
I just looked it up, and it seems I can indeed change it to you what looking for. I put @type text,
what I needed to do is put @type note. I'll change it for the next update. I'll test to see if the note has word-wrapping that I don't know yet.

Edit: The note box doesn't word wrap. I'll have to do more testing with it.

Edit2: So it puts \n in the text, all I need to do is find all \n and replace with " " <- a space, and you should be able to organize your text to make it easier to read in the editor. I don't think It'll show more than the start of the text but when you open it, it's much easier to read. I could parse it as json, but then the \n would cause unwanted breaks in the text in the maplog.

Edit3: I went with JSON.parse, basically parse the string then remove all extra spaces. I'll have to include like \tab or something if you want to have a tab spaces. I'll work on making usable escape codes next.

2022 Mar 14 Ddm Draegonis React Components 0.16
-- added a ReadMe.txt to try to centralize all the extra information.
-- Progress Log
-- changed some of the function names of some of the script calls. Basically changed "entry" -> Tag, to be consistent.
(valueOfTag, maxValueOfTag, isTagCompleted, isTagFailed, isTagAccepted)
-- Battle/Map/Progress Log
-- changed large text input into @type note, when opened it will be easier to read your text. It removes all extra spaces, and if you want extra spaces you'll need to use the provided
escape code(s). Will add more.
-- added escape code -> \F(c1bi)[text here]. The F C B I are not case sensitive, so it could look like \f(C1BI)[text]. C# (1-9), will hook into the new colours arg added to the push text. 0 = default colour, you don't need to "reset" the colour after a text block, since the C# only effects the text in the block. B, will tell it to bold all the text in the block, and I will italicize the text in the block. You have to follow the format order of C#BI, but you can exclude what you don't want so \f(bi)[text] bold/italic text or only include 1, like \f(i)[text]. \f(c1)[text] is colouring only. This works for all text input including progress log title.
** You will have text errors if you include a format block within a **
** format block. I only have it so that it properly formats 1 block **
** not nested blocks. You can have more than one in your text. **

* Unfortunately it broke the autoscroll in the log, I'll work on
improving it. **

|** Breaking Change -> if you forget to update all the old text inputs **|
|** to the new note format you will get a JSON.parse error. **|
|** Basically all the old text don't have the " at the start and will **|
|** give you an error at index 0. **|
 
Last edited:

Scandalon

Villager
Member
Joined
Mar 17, 2016
Messages
10
Reaction score
0
First Language
English
Primarily Uses
Wow. I will definitely be trying this out today.
 

Draegonis

Villager
Member
Joined
Dec 10, 2014
Messages
14
Reaction score
14
First Language
English
Primarily Uses
RMMZ
Yeah it's a little bit of work because I don't think I can use the in-game window objects since A ) they render on the pixi canvas, and B ) I'm trying not to destroy the build in functionality of stuff.
So I had to figure out how to use regex to separate the text to be able to apply different styles on the text.

Edit: to remove the emoji I put in by accident. B)
 
Last edited:

Scandalon

Villager
Member
Joined
Mar 17, 2016
Messages
10
Reaction score
0
First Language
English
Primarily Uses
I understand about the in-game window objects. Anyway, I just tried your latest version (after troubleshooting a self-inflicted bug, aka forgotten autorun event on a test map I made, that kept me from being able to test your script right away) and it's quite nice (except of course for the somewhat broken auto-scroll that you mentioned, and all the random, weird emojis that keep popping up all over the screen...... j/k about the emojis, hehe). And implementing the note box text entry only makes it that much more user-friendly. I'll have to test out some of the other components as well. I look forward to your further forthcoming work on this!
 

Draegonis

Villager
Member
Joined
Dec 10, 2014
Messages
14
Reaction score
14
First Language
English
Primarily Uses
RMMZ
Yeah I didn't know that certain character inputs automatically turned into emojis. I actually might try to implement escape codes for emojis for the logs, but that will wait for other things first.
Thank you for at least for trying out what I'm working on and giving some feedback. I'm working on my last log type for now and then I'll fix the auto-scrolling before I release the next update.

2022 Apr 13 -> 0.20
  • ** Fixed map/battle log autoscroll.
  • The main script will now throw errors if you enable a component but forget to add/enable the script for it. Example: if you enable MapLog in DdmDrae_Core but forget to enable DdmDrae_MapLog in the plugin manager.
  • Completely re-wrote the Readme.txt and ChangeLog.txt into a google doc with all the plugin commands, script calls, and general information. Now inside the scripts is only the basic information on each plugin command or script call, this is to reduce the amount of commented code that needs to be parsed. Included with the files as DdmDraeDocumentation.docx. Note: I will revisit the script call section in order to format it to be more readable.
  • Implemented code chunking, now to install the main script you also need to include the ddmDraeComponents folder in the root folder. This is to try to remove the large initial size of the js file as more components are added. This also helps that if you don't use certain components that it won't load the js for it. If you don't use electron you don't need to add anything to the index.html. If you use these scripts in an electron project you'll need to add: <script> var global = global || window; </script> above the body tag in the index.html. If you don't you'll get a global undefined error. The other solution I found was to make nodeIntegration: true and contextIsolation: false but that is very dangerous to do in any electron project. Added an example index.html for an electron project.
  • Removing a lot of internal/script code duplication, also removed a lot of wasted space in the scripts.
  • Lots of re-organizing the format of the params for the plugin manager.
  • Changed the colours plugin command param to a combo[], it now lists the css colours you can select or type in one if you already know which you would like to use or type in a Hex colour value. Atm it doesn't take RGB values.
  • Changed the BattleLog/MapLog default limit down to 300 each, you're free to change that number if you want.
  • Changed the log loading logic. It now purges the log before loading, so as long as it loads by the DataManager.extractSaveContents you don't need to purge the log before loading. (It won't load the log anyways if you don't use the DataManager.extractSaveContents function).
  • Added escape code \d(){ } to text input, can be used in format blocks. The data names are replaced when the event calls the plugin command and not when they are added onto the log to prevent the leader/member/gold changing on load if the log text is preserved and loaded at a later time after they saved the game.
  • New Component:
    • Quest Log. Barebones functionality, I plan to add some type of rewards etc eventually, also add in quest types for sorting.
  • When starting a new game it will initialise the game switch attached to isFullSwitchId to false.

2022 Apr 26 -> 0.21
  • Bootstrapped the project with Create React App. It is now a better development environment than what I had before. (I had included Electron in my original environment but in reality this project is mostly focussed on React and it’ll be easier to open the source at a later date)
  • The code splitting is different from the last update. It is recommended to copy the script section in the header and paste it into your index.html in your project. I know it is more complicated but it should be easier loading with all the smaller script chunks.
  • Removed the param in Core for the screen size, I went back to getting it from $dataSystem.advanced.
  • Combined BattleLog and MapLog into MessageLog. Combined ProgressLog into QuestLog. This completes the removal of duplicated code. Before the store slices/core logic were the same, now it is divided between 2 easier to manage types of logs.
  • More edits to params: Core removed BattleLog/MapLog/ProgressLog Enables. Added Filter type params to MessageLog and QuestLog. Atm you can’t change the order of All/Map/Battle or All/Quest/Progress then your custom filters. I plan to change that.
  • Added the ability to Filter the logs.

Edit: Fixed the zip download forgot to include the Rmmz Scripts.
 
Last edited:

Scandalon

Villager
Member
Joined
Mar 17, 2016
Messages
10
Reaction score
0
First Language
English
Primarily Uses
I will hopefully be able to check out this update soon (or the next one if I'm too slow, lol). I've been stuck with some various debugging in my own code for a little while.
 

Scandalon

Villager
Member
Joined
Mar 17, 2016
Messages
10
Reaction score
0
First Language
English
Primarily Uses
So I finally was able to spend some time playing around with it. I've only tried out the Message Log portion, and I find that it can do essentially what I was hoping it would be able to do, so thanks for taking my input and taking the time to implement it! I do have a new, seemingly simpler request. It seems that the way it is set up in v. 0.21, that the toggle key requires a modifier such as a shift or ctrl key, etc. Can you make it an option to assign a key that does not require an additional modifier key to be pushed? Thanks for your consideration, and I look forward to what you come up with in terms of new features, fine tuning, polishing and such.
 

Draegonis

Villager
Member
Joined
Dec 10, 2014
Messages
14
Reaction score
14
First Language
English
Primarily Uses
RMMZ
Small update for now. It adds the wait for message ability you wanted. There is build in game interpreter waits that may bug out if the game lags a lot though I haven't tested it thoroughly. I also added "none" to the modifier keys so it doesn't force you to pick one in the plugin params.

2022 Jun 09 -> 0.22
  • Will need to do modifications to the documentation.
  • Added “none” to the modifiers for inputs so that you don’t need to have any.
  • Message Log
    • Added plugin command waitForInput. Using this will wait till the user uses any of the OK keys which are hard coded to the default ones (Z, Enter, Space). Will add functionality for mouse/touch and custom keys. This has coded game interpreter waits so it may be possible that if the games lags a lot that it will cause issues. It will need further testing.
    • Added an option to have all end of battle text be routed to the message log. Note: default “gold” text in the Terms needs to be changed to remove the “\”.
    • Changed “All” filter to not include Battle text.
    • Added auto-filter changes for map/battle.
    • Added plugin command to change the filter.
 

Scandalon

Villager
Member
Joined
Mar 17, 2016
Messages
10
Reaction score
0
First Language
English
Primarily Uses
Cool, those are some useful additions, for sure. I like the new waitForInput command too, though I don't remember requesting it (assuming you were directing that comment to me and not to someone else).
 

Draegonis

Villager
Member
Joined
Dec 10, 2014
Messages
14
Reaction score
14
First Language
English
Primarily Uses
RMMZ
It's part of the codes you could put in normal show texts. There's one for wait for button input. Instead of putting it in the text i just made it a plugin command to put after the text.

Edit: granted it would be more effective to have breaks in the text that would show on button input but since I got the wait to work I can use what I learned to do more things.
 

Scandalon

Villager
Member
Joined
Mar 17, 2016
Messages
10
Reaction score
0
First Language
English
Primarily Uses
Hey, just wondering if you had any ideas on how to include control of the log scrolling in your script via gamepad and keyboard. I've spent some time trying to get some sort of mouse wheel emulation through button presses, but no luck so far. It seems like it might need to be done internally in React in order to interact with the log window... I'm still not sure. Ultimately, I'm trying to get control of the log scrolling via a gamepad thumb stick. I can already get the data I need from the gamepad input, so that half is no problem for me. And I think the focus on the log window would need to be active permanently so that it doesn't require a mouse hover for this to work. In any case, thanks for taking the time to consider this request!
 

Latest Threads

Latest Posts

Latest Profile Posts

I fixed my little itch.io issue... apparently filenames are case-sensitive. After I renamed the file IconSet.png instead of Iconset.png, it worked. I changed it back and forth a few times just to confirm this.

I'm gonna go beat my head against the wall now.

and an original idea of people having alter egos is back... finally.
Another camping area.
I just found out somebody pirated my 3,99$ game. I spent over a year making it and somebody just publish it for free a week after early access released.

I should be glad, cuz if they pirate you, that means your game has to be good, but im not. I barely sold any copy. Didn't get any info from most of the sites I wrote.

Forum statistics

Threads
124,642
Messages
1,164,924
Members
163,465
Latest member
leika_roun
Top