TyruswooStudio / Tyruswoo_AltimitMovement-MZ

Tyruswoo Altimit Movement for RPG Maker MZ
MIT License
2 stars 0 forks source link

Destination is not cleared #5

Closed Nafraju closed 2 months ago

Nafraju commented 3 months ago

Hi,

https://github.com/user-attachments/assets/1184e41b-c248-45af-be4e-37b3fb4df205

as you can see in the video by starting a MapEventPage with trigger = Autorun the Destination is not cleared AND after the Autorun-Page is done then the player continues moving to this previuos set destination.

And: grafik even adding this doesn't help.

McKathlin commented 3 months ago

Good catch, and the video is quite helpful! I want you to know that I'm working on it. This is a complex plugin, so it may take some time. Thanks for your patience!

Nafraju commented 3 months ago

Good catch, and the video is quite helpful! I want you to know that I'm working on it. This is a complex plugin, so it may take some time. Thanks for your patience!

Hi, I am glad that you directly answered ❣️

To get both issues solved is very important to me, because I have a finished RPG-Maker-MZ Game and I want to add pixelmovement as an update(addon).

Your plugin I got free. So I am glad if you fix those .. doesn't matter if it takes longer.

INFO: I couldn't find a support(paypal/...) button anywhere.

McKathlin commented 2 months ago

Thanks for your patience! Now that I've finished fixing the region restrictions compatibility issue, this touch input issue is my top priority to work on this Monday.

McKathlin commented 2 months ago

Hi @Nafraju, I'm trying to reproduce your bug in my test project, but I haven't managed it yet. Tyruswoo Altimit Movement touch input is working as intended for me.

You said that the destination doesn't clear when an Autorun event is running, but in my experience the player can't use touch input (or any kind of input) to set a destination or move the player at all while an Autorun event (or any foreground event) is playing out, and that's how RPG Maker is supposed to work, with or without this plugin.

Did you mean that a parallel (background) event is running? I tried using touch input as a parallel event ended, but nothing went wrong.

Would you please send us a build of your project where you're observing the bug, so that I can debug in context and see what you're seeing? You may email your project zip file to support@tyruswoo.com. Thank you!

Nafraju commented 2 months ago

Hi @McKathlin,

You said that the destination doesn't clear when an Autorun event is running, but in my experience the player can't use touch input (or any kind of input) to set a destination or move the player at all while an Autorun event (or any foreground event) is playing out, and that's how RPG Maker is supposed to work, with or without this plugin.

Yes. But, when you do [as a testsetup] a MapEvent with Page 1 NoneCondition Trigger Parallel and Content

Page 2 Contition Selfswitch "A" Trigger Autorun and Content

When you clicking in circle on the screen to keep the PlayerAvatar moving, while Page 1 is running, then - when it switches to Page 2 it blocks as it should the moving of the Player BUT a) the DestinationSprite keeps showing b) AFTER the Page 2 (the autorun) is done - WITHOUT - another clicking the PlayerAvatar continues moving to that last set destination(Sprite).

ℹ️ This testsetup is NOT something unusual = a expired timer starts a autorun Page


The issue in you coding is: there is ONLY one $gameTemp.clearDestination(); in the whole js file and this is in line 2181 as a part of Game_Player.prototype.moveByInput = function() { but this function is ONLY called from Game_Player.prototype.update = function(sceneActive) { if sceneActive ...

So there is somewhere missing a $gameTemp.clearDestination(); in Game_Player.prototype.update = function(sceneActive) { ??? if (!this.canMove() .. busy .. or sceneNOTactive)

ℹ️ I tried to add this, but it didnot work. Maybe it ($gameTemp.clearDestination();) needs to be placed in another update-function (Scene-Update) or where ever.


Marked in screenshots of you code:

grafik

grafik

Nafraju commented 2 months ago

Hi @McKathlin, (again)

Would you please send us a build of your project where you're observing the bug, so that I can debug in context and see what you're seeing? You may email your project zip file to support@tyruswoo.com. Thank you!

I did an empty new project MZ

I uploaded it to here:

https://mega.nz/file/KckkFKAa#WE3NVlRe7_wzB015a4P65mLhttGGPvhLwpXx1fdYmiA

ℹ️ E-Mail doesn't accept such large files. For security-reasons I don't send zips only rars, because zips are open .. rars not.

McKathlin commented 2 months ago

This is exactly what I needed. Thank you so much!

McKathlin commented 2 months ago

Hi @Nafraju,

I greatly appreciate your patience in communicating with me about the touch target issue. The bugfix is ready and it's part of the newly released Tyruswoo Altimit Movement v0.9.3.

Nafraju commented 2 months ago

Hi @McKathlin,

Thank you. It is working, now. Can you please post here a screenshot (or more) of what you changed ? Reason:

McKathlin commented 2 months ago

Sure! Here's a screenshot of the code snippet I changed to get touch input destination to clear.

sublime_text_2ESdycuywX

The code inside the green rectangle is the code I added to fix the bug. Whenever a non-parallel event page starts, the touch input target clears. I discovered that if I put $gameTemp.clearDestination() there, nothing happened, but if I reset $gamePlayer._touchTarget, that made the target circle go away and canceled the player's remaining movement path. After this, no other changes to the code were necessary.

Does that give you what you need?

Nafraju commented 2 months ago

Hi @McKathlin,

FIRST - you did so much, so I again ask for a support-donation-tip possibility ❣️


Then I want to ask you to do all-sides a favor ❣️

Could you please ADD this [see VS-Code-screenshot very down] to your offical version and make it also Plugincommand "AltMovementAltMovement Playersavatar lock" btw "AltMovementAltMovement Playersavatar unlock" by providing the scriptcall $gamePlayer._locked = true; $gamePlayer._locked = false;

Reason: The last about 10 years I teached everyone to use my (free) plugin to lock/unlock the PlayerAvatar, because it makes it possible to use CEvents in Parallel-Mode and that makes GameMonitoring possible, too. #IFBlocks This CEvent #0001 GAME-MONITOR runs ALL IF-Blocks from New Game until the End. ◆If:GAME_PROZESS_V = 1 ◆Variablen steuern:#0001 GAME_PROZESS_V = 10 ◆ :Beenden ◆If:GAME_PROZESS_V = 10 ◆Variablen steuern:#0001 GAME_PROZESS_V = 20 ◆ :Beenden [The height of the steps here by 10 can be freely chosen. Steps that are too small are not recommended, otherwise nothing will fit between them later, e.g. for extensions/addons.]

And in those IF-Blocks you write the whole Game/Story/VN interacting with Charcater-MapEvents or Deko-MapEvents.

With that by GAME_PROZESS_V ariable the Eventscripting got "line-numbers" like in VS-Code. And Ingame(!!!) by this other parallel-running CEvent ◆If:Button [Pageup] is pressed down ◆Text:None, Dim, Middle : :

GAME_PROZESS_V = \V[0001]
◆ :End you can let EVERY-time prompt this "line-number" to correct issues WITHOUT searching on 100Maps*50MapEvents.

AND THIS WONT WORK without blocking/deblocking the PlayerAvatar 😉


grafik

⬆️ That little thing changes a LOT 😉

McKathlin commented 2 months ago

Hi @Nafraju, thank you so much for offering to donate! You may visit Tyruswoo.com's donation page to make a donation. We've recently updated it to enable one-time donations as well as monthly donations.

I need to address other high-priority bug reports, but I'll return to your latest change request once I have those resolved. I will need time to review your notes, understand the change you're proposing, and document it in a way that makes sense to uninitiated plugin users. If you've written about this feature previously, please feel free to share a link to your previous work.

I appreciate your expertise and attention to detail. I hope you'll get in touch whenever you need help or have an idea. When you do, please open a new issue on the relevant plugin, use Tyruswoo.com's contact form, or send us an email at support@tyruswoo.com. Thank you!

McKathlin commented 2 months ago

Hello again @Nafraju, I've looked over your proposal and I think I understand what it accomplishes. You want to make it possible to run foreground common events as part of a parallel (background) common event loop. If I understand correctly, you can do the same thing without any plugin code changes. Please try the following steps:

Step 1: Set up a common event that does whatever foreground commands you want. Set its trigger to Autorun. Set its switch to a switch that you're not using for anything else. Make sure this autorun common event turns off its own trigger switch at the end. image

Step 2: In your parallel event, go to where you want to call your common event. Instead of directly calling it, turn ON the autorun common event's switch. image

A plugin-based approach sometimes clashes with other plugins, while an event-only approach is more likely to be compatible with all plugins. That's why I recommend this event-only approach.

I've modified your test project to demonstrate what I've explained. I'm following your lead and sharing it with you as a RAR file. You can download it here.

If you've tried the test project and my steps, and you find that you still have a reason for the player lock feature to be added to Tyruswoo Altimit Movement's code, please open a new issue to request it and explain your specific use case. Thank you!

Nafraju commented 2 months ago

Hi @McKathlin, You obviously didn't understand me. I'll make you a sample project, but it will take some time.

McKathlin commented 2 months ago

@Nafraju, I apologize for misunderstanding your request. If you send a sample project my way, I'll be happy to look over it, try to get a better understanding of your request, and include your proposed changes in our build of the plugin if @Tyruswoo and I see fit.

I also want you to know that you have our full permission to alter and redistribute our plugins, per the MIT License. You are welcome to make changes yourself and share those changes with anyone you like. Going through me is optional. :)

Nafraju commented 2 months ago

Hi @McKathlin, [I prefered to not do a new Thread.] Common Event Demo for Nafraju.rar | 1,1GB

First - please play it as I set it.

After you finished the testplaying (by the 'Woof') Please before you do anything else Have a look into CommonEvent #0001 scroll it down and you will see what I mean by "line number" (Blocknuimbers). After this, have a look into the MapEvents (All of them) and you will see that they are only working as triggers for what happend in CEvents.


Second, play it again with this PluginManager (ON/OFF) setting grafik then you will get all issues I found / got too.


Third, you can try to play it with your original Plugin grafik

and by trying to get it working by Autoruns and without this : grafik grafik ...

I am very sure it won't work .. or it is more complicated than having a Plugincommand in you Pixelmovement-Plugin for this grafik grafik

grafik

⬆️ That little thing changes a LOT 😉 .

McKathlin commented 1 month ago

Hello again @Nafraju,

Am I understanding right that the change you're proposing would make Tyruswoo Altimit Movement compatible with PlayerMovementLocking.js? If that is the case, would you please provide a link to where people can find and download PlayerMovementLocking.js? (I tried to search for where PlayerMovementLocking.js was publicly shared, but I couldn't find it.)

I am asking because we only provide a compatibility patch for a third party plugin if that plugin is publicly available. When we do release a compatibility patch, we include a link to the other plugin in our release notes.

Whether or not we release the patch, you are completely welcome to use your patched version of Tyruswoo Altimit Movement in your own project.

Nafraju commented 1 month ago

Hi @McKathlin,

No I am not proposing this (make Tyruswoo Altimit Movement compatible with PlayerMovementLocking.js).

What I am saying is, with this little changes [see in images above]

it includes the whole function of the PlayerMovementLocking.js.

A wunderfull freature would be added to your plugin. Which is about Movement.

.

McKathlin commented 1 month ago

Hi @Nafraju, am I understanding right that you want everything in PlayerMovementLocking.js to become part of Tyruswoo_AltimitMovement.js? If that's the case, I'll need to check in with @Tyruswoo about this significant expansion of our plugin. I'll let you know what we decide within the next day or two.

Nafraju commented 1 month ago

Hi @McKathlin,

the PlayerMovementLocking.js - plugin is just ONE function.

Nafraju commented 1 month ago

@McKathlin

Game_Player.prototype.executeMove = function(direction) {
        if (!this._locked && !this._lockedwoe) {
            this.moveStraight(direction);
        } else if (this._lockedwoe) {
            $gameTemp.clearDestination();
        }
    };

That is the whole PlayerMovementLocking.js - plugin besides the header. But it is for 4 directions only.

McKathlin commented 1 month ago

I see that now. At the same time, there are several plugin commands associated with PlayerMovementLocking.js, all of which require documentation to our standards if we're to adopt them as part of one of our plugins. I need to share your proposal with @Tyruswoo and get his opinion. You'll hear from us in a day or two.

Nafraju commented 1 month ago

@McKathlin wait

Nafraju commented 1 month ago

@McKathlin

Game_Player.prototype.executeMove = function(direction) {
        if (!this._locked) {
            this.moveStraight(direction);
        } else {
            $gameTemp.clearDestination();
        }
    };

I used this plugin for many years and nowadays this is all - what is need. just ON / OFF locking the Movement of the Player. BUT this is for 4 directions only.

For your plugin it is only this

    Game_Player.prototype.update = function(sceneActive) {
        const lastScrolledX = this.scrolledX();
        const lastScrolledY = this.scrolledY();
        const wasMoving = this._wasMoving;
        this.updateDashing();
        if (!$gamePlayer._locked) {/// NAFRAJU ADDED
            if (sceneActive) {
            this.moveByInput();
            }
        } else {/// NAFRAJU ADDED
            $gamePlayer._touchTarget = null;
        }
        Game_Character.prototype.update.call(this);
        this.updateScroll(lastScrolledX, lastScrolledY);
        this.updateVehicle();
        if (!this._isMoving) {
            this.updateNonmoving(wasMoving, sceneActive);
        }
        this._followers.update();
    };

plus a plugin command in the header.

.

Nafraju commented 1 month ago
 * @command set0
 * @text Playersavatar lock
 * @desc see help part of this Plugin
 *
 * @arg text
 * @type note
 * @text Info jsscriptcall
 * @desc Changing this has no effect
 * @default "$gamePlayer._locked = true;"
 *
 * @ --------------------------------------------------------------------------
 *
 * @command set1
 * @text Playersavatar unlock
 * @desc see help part of this Plugin
 *
 * @arg text
 * @type note
 * @text Info jsscriptcall
 * @desc Changing this has no effect
 * @default "$gamePlayer._locked = false;"
Nafraju commented 1 month ago
 * ----------------------------------------------------
 * These are a list of following Plugin Commands:
 * ----------------------------------------------------
 *
 * Playersavatar lock
 *
 *   Locks the movement of the players avatar,
 *
 * Playersavatar unlock
 *
 *   unlocks the movement of the players avatar,
Nafraju commented 1 month ago

@McKathlin that is all.

Nafraju commented 1 month ago

@McKathlin additional note: please keep

Tyruswoo commented 1 month ago

Hi @Nafraju!

First of all, I'm glad @McKathlin was able to help and fix the "Destination is not cleared" bug in this thread, as well as the "Region restrictions are not working" bug you reported. Thank you so much for your help in finding and reporting these bugs!

Thank you also for sharing your code and a sample project demonstrating how to use game monitoring with a parallel process common event, game process variable, and player locking and unlocking. We have found the example project is working perfectly the way you have it set up. However, @McKathlin and I won't be adding the feature to Altimit Movement, for the following reasons:

  1. The feature of player locking and unlocking is useful for games both with and without pixel movement. Therefore, the feature you are recommending does not belong bundled inside Altimit Movement, but rather belongs in another plugin. Such other plugin would ideally include the plugin commands you have recommended, and either alias methods or replacement methods as you have outlined, so as to work correctly with both default RPG Maker movement and with Altimit Movement.
  2. We generally recommend our users avoid using parallel process events. This is due to the increased processing burden of parallel process events, and due to the number of bugs and design errors that occur when beginner users try to use parallel processes (and many of our users are beginner users). Player locking and unlocking is a feature designed for working with a global parallel process common event, so isn't a good fit for our Tyruswoo Studio plugin design style.

That being said, the reason we have our plugins under MIT license is so that it is easy for others to make plugins with any needed alias or replacement methods to override our plugins' behaviors, depending on the project. We would be happy if you maintain and distribute a plugin with the features you have outlined that would be compatible with and extend the Tyruswoo Studio edition of Altimit Movement.

Thanks for your help with our edition of Altimit Movement! Please let us know if you encounter any other bugs you would like us to fix.

Nafraju commented 1 month ago

Hi @McKathlin this following "letter" is mainly addresed to Mr/Mrs @Tyruswoo but I want you to know about its content, because you liked @Tyruswoo 's post, this post, which shocks me.

Hi @Tyruswoo

Reading your (@Tyruswoo) response is kinda shocking me, because since the RPG-Maker-MV is out I am playing a lot of games which are available on the internet. 99% had bugs. To get them playable I start to fix them without having any Maker (because at this time I didn't know that such Makers are existing). So I fixed them by only editing the data.json files. Because of mostly fixing existing games - for me and my friend - there are not many project out there, because publishing those repaired games is illegal because of license-reasons (doing it private for me and friends is legal). After I got to know that there are Makers existing, and also a german community I am helping by fixing even more projects. The listing of all projects on my PC is so long that it is difficult to count them. I think it is 1000000+.

By ALL of the games which I fixed with a Maker

At this point I need to mention that the RPG-Maker are truly made for this Method of Game-Monitoring, because they are providing CEvents (on PARALLEL-Mode) and everywhere Switch and Variable #0001 is preselected.

AND in general here is ONLY this ONE CEvent PARALLEL-running for the GAME-MONITORING. Exception (depending on the kind of the projects): Quests/Missons beside the MainStory are having each its own CEvent / Switch / Process-Variable, BUT there are NEVER running more then 10 CEvent for Quests/Missons at the same time, AND all of them are most of the time running in (german "Leerlauf") like "in Neutral" like a car-gear, because they are ONLY checking if the conditions of the IF-Blocks are valid, when ONE IF-Block is valid ONLY this ONE IF-Block will be executed. So there are NEVER two or more IF-Blocks at a time executed. Exception (depending on the kind of the projects): Some Games having a internal clock and calendarium where points in time are triggering

here you would have more Parallel-running CEvents BUT here - as I recall - maximum plus another 10 to 20 CEvents and they are also ONLY doing counting Frames (not rendering sprites) and if the counting is matching a value they are setting Switches-ON/OFF or Variables.

NOW ⚠️ REASON number ONE the devs of the projects got lost in their own projects !!! Having the whole Story in the ONE CEvent GAME-MONITOR (+ Missions/Quests) and not in 1000 MapEvents scattered over all Game-Maps avoids years-time of searching avoids getting lost in their own projects

And @Tyruswoo as a coding/scripting/programming guy a question for you: EVERY software like VS-Code/Studio Atom ... even the browser-dev-tools are having Linenumbers, so where are the Linenumbers for the Eventscripting of the Maker(s) ❓❓❓ ANSWER There are NONE ‼️

BUT with the GAME_PROZESS_V (and the Quests/Missions Process-Variables) used by the IF-Blocks you have Blocknumbers (almost Linenumbers) and with ONE other PARALLEL-running-CEvent Debug (also by Switch #0001) ◆If:Button [Pageup] is pressed down ◆Text:None, Dim, Top : :\V[0001] \V[1010] \V[1011] \V[1012] \V[1013] \V[1014] \V[0998] :End you have the possibility INGAME to prompt those Blocknumbers (almost Linenumbers).

Even if there is only a typing error in a textmessagebox of the Story it will be found and corrected in under a minute - yes in under a minute. Most devs are keeping those typing errors because they can not find the place where to correct them.

And now @Tyruswoo you are saying to me who found in one day many bugs in your plugin:

We generally recommend our users avoid using parallel process events. This is due to the increased processing burden of parallel process events, and due to the number of bugs and design errors that occur when beginner users try to use parallel processes (and many of our users are beginner users). Player locking and unlocking is a feature designed for working with a global parallel process common event, so isn't a good fit for our Tyruswoo Studio plugin design style.

that you recommend STARTERS (beginner users) to use the get-lost-method to have even less people using the RPG-Maker because they get frustrated ⁉️

INSTEAD OF HELPING them by teaching them to use a Game-Monitoring ⁉️⁉️⁉️

As said I am shocked.

Sorry - by all my effort helping you removing bugs - it is a slap in my face.

And @Tyruswoo

The feature of player locking and unlocking is useful for games both with and without pixel movement. Therefore, the feature you are recommending does not belong bundled inside Altimit Movement, but rather belongs in another plugin. Such other plugin would ideally include the plugin commands you have recommended, and either alias methods or replacement methods as you have outlined, so as to work correctly with both default RPG Maker movement and with Altimit Movement.

you want put a SINGLE Playersavatar MOVEMENT lock function separate of your Altimit MOVEMENT plugin in another MOVEMENT plugin with only this one function in it ⁉️⁉️⁉️ [Beside - that it is impossible by the structure of yours Altimit Movement Plugin.] [Beside - that your Altimit MOVEMENT plugin provides the default RPG Maker movement (4-directions), too]

Sorry - I am really focused on staying calm, polite and respectful. But this is nonsense to not saying bullshit.

And your answer shows that you haven't understood my propose and it shows that you have NOT even read my posting all above including the screenshots because if you would have then you would have understood that I am talking about ONLY

In the interest of ALL RPG Maker users, especially beginners, I hope and wish that you change your mindset and make the suggested changes ❣️

Kindest Regards Nafraju


Additional Note: Recommendation for Startes/Beginners:

AND EVERY Project will be 100% bug-free ❣️

Tyruswoo commented 1 month ago

Hi @Nafraju,

I'm appreciative of you sharing your code and the game monitoring design, but I still disagree that it belongs in AltimitMovement. Player locking and unlocking is useful for projects with either pixel movement or tile-based movement. Therefore, player locking and unlocking does not belong in a pixel movement plugin, but in a more general game monitoring plugin.

I encourage you to develop, maintain, and distribute a plugin designed for improving the game monitoring experience.

My design opinion is that if I were to add game monitoring, I would not make it a stand-alone plugin, but I would include it with a debug or playtest control plugin, such that the plugin can be disabled and removed from the game prior to game deployment, leaving no trace. I would create the plugin in a way that does not require parallel processing, but instead outputs relevant information (such as map name, map ID, event name, event ID, event page, and event list command line number) to the console window, so that users can see the information by accessing the console window with the F12 key as is default for RPG Maker. I would use console.log to output relevant game monitoring information to the console window. Such a plugin could be added to a project and removed from a project without changing any event or common event inside the project, simply by activating and deactivating the plugin from the plugin manager.

You are also welcome to take the AltimitMovement code from us, modify it, and distribute it on your own with your changes however you see fit, according to MIT License terms. That way, my design choices will not be an obstacle. You can create your own design and your own code and promote and share it.

Please note that AltimitMovement was not originally a Tyruswoo Studio plugin, but is in the process of gradually being adopted into the Tyruswoo Studio collection due to user demand. The original creator was not updating the AltimitMovement code but kindly put the code under free and open source licensing. Correcting the original bugs in the plugin takes time since I do not use it in my own projects, but I continue to offer AltimitMovement as a free service to the community due to user requests.