May 12, 2012

Party Interaction

If you'd like to have your party members show on the map and follow you, and...
  • you think caterpillars make your party look like a bunch of perfect idiots
  • you'd like to interact with them
  • you'd like to take control of them
  • you'd like to program different responses according to the map you're navigating
Then Moonpearl's Party Interaction script is exactly what you need.




Features



Natural movement - party members automatically turn to the player, and follow him only when he walks away.



Interaction - your party members are perfectly regular events which you can program through the eventing system like any others. Thus, copies on each map may exhibit a different behavior.



Share control - you may have the player switch from their current leader to any party members, for example to program different responses from objects according to which party member is being controlled.




Auto place party members - automatically warp party members behind the player whenever transferring to a different map.



Easy to use - fully interfaced with the eventing system - control everything using only variables and switches, no script calls or edits required whatsoever.




Download



The following link provides a script bundle meant to be used along with the Script Manager. Terms of use and instructions are provided within. Please credit me if you use it in your own project. A nice comment is always appreciated.


The following link provides a demo for said script.

13 comments:

  1. I've just discovered your blog, you're so talented! Greetings from Spain!

    ReplyDelete
    Replies
    1. Thank Pólux, your appreciation went straight to my heart. :) Cheers from France.

      Delete
  2. Great blog, and nice work. I'm going to try some of your scripts out.

    ReplyDelete
    Replies
    1. Thanks pal. Please come back and give me some feedback anytime.

      Delete
  3. I'm really impressed by all the scripts here. I'm pleasantly surprised that there are still skilled programmers working on RPGXP.

    There are a few technical problems I've found with this one, though:
    1) Maybe this was a mess-up on my part, but I couldn't get the demo working until I opened the game's script manager.ini and changed the 'MP Party follow' line to 'MP Party Interaction' to match the name of the script bundle folder.

    2) This could be due to the above, but whenever I tried 'Take control', in the demo things respond as if I've swapped, but the on-screen character I controlled was always Aluxes, even after changing maps.

    3) If you have autoplace on and enter a map with a narrow entrance, you get completely blocked:
    http://i.imgur.com/mISsA.png
    And I imagine it would similarly be a hassle to move them away by walking in a loop if there's a specific spot in the map you want to stand.
    Maybe there should be a way of setting them to through while still making them avoid other solid events or terrain? Or a way to make party members move aside (though that would probably create more problems if you're all in a line in a thin corridor)?

    Thanks for everything.

    ReplyDelete
    Replies
    1. Hi Rainy, and thanks for your appreciation.

      1) Whoops, you're absolutely right, it's my mistake here. I changed the script's name after releasing it and forgot to re-upload the demo. I'll fix that ASAP.

      2) Odd. Does it work any better now that you've set the Script Manager.ini to load the bundle correctly? If not, could you please elaborate on this issue? I can't seem to run into it on my part, even when trying and mess things around.

      3) I'd thought of that, but have found no perfect elegant solution to this day. I'd assume that game designers being aware of this issue would either make larger entrances to their maps or at least set party members to "through" (remember they're all regular events!). Also, as a last resort, you can still switch control to an unblocked character (which you seem unable to do for some reason if I understand correctly).

      I'm thinking of a swap places system (i.e. when you run into a party member they walk through you and take your former position while you take yours), which would eliminate this issue, but I fear it makes party interaction a hassle, since the script would have no way to determine whether you're walking to a party member in order to talk with them, or wish to pass through them - so you would end up chasing after party members who constantly swap their positions with yours. So, unless I find a really satisfying solution, things will stay the way they are right now, and you'll have to resort to one of the above mentioned solutions. However, don't hesitate to let me know if an idea comes to mind.

      Happy designing using my works. :)

      Delete
  4. Thanks for the fast reply.

    2) The script didn't work at all before I changed the ini file, now it's just the 'take control' bit that doesn't. Things react as if you've changed, but it just seems like the event swapping in Methods.rb either isn't activating or isn't doing anything.

    3) The swapping place idea sounds like it's on the right track: have you considered a system where if you press a button, you'll swap places with a party member if you're facing them and they're directly in front of you?

    ReplyDelete
    Replies
    1. You're welcome.

      For 2), I honestly have no idea why this happens, especially since it works fine on my part and I see no reason why it wouldn't considering you're using exactly the same demo/script as me. I'm using this script in my current project, so if while running tests I happen to stumble on this problem I'll let you know and look into it.

      For 3), it doesn't seem like an elegant solution to me - besides, I have other scripts which use up many buttons already, so I don't want to reserve yet another for such basic a task. Although if I don't come up with a suitable solution in a reasonable delay I might consider programming this nonetheless for you (and others), knowing that I will never use it personally.

      Delete
    2. Actually, rather than use a whole new button, what about just triggering it by a single or quick double-press of the relevant arrow key when the player is adjacent and facing the party member?

      That way you can walk right up and bump into the event and only swap when you walk into them again.

      I wasn't sure whether RMXP could differentiate between a new key press vs holding it down, but a quick google search suggests it's possible.

      Delete
    3. It is possible indeed. I'll look into that as soon as I'm done with my current project - which will use the Party Interaction but won't possibly have party members blocking the player anyways.

      Delete
    4. Since that will probably not happen for a while, I thought I'd throw in my solution for people without scripting skills:
      I gave the Partymember events a choice option interaction called 'You're in my way' which makes them swap places.

      I'm also working on 'Stick closer', 'keep some distance' and 'stay put', but those need script calls and I find that harder to do.
      At first I tried to make the constants which hold the actors distance to the player also changable via game variables using the Variables Binder - and I was even able to change them, but the events don't seem to notice the change and stubbornly stick to the very first setting. Eh, gotta get a better grasp on how things work, even though scripting gives me a headache.

      Thanks for your work and keeping the blog open!

      Delete
  5. This looks really cool! I want to try it but this is my first time trying to use a script. I manually copy/pasted the files bc I wasn't sure how else to plug it in and idk how to make it work. I really hate to bug for help when you're probably very busy, but I could I get more thorough explanation? Don't feel like you have to though!

    ReplyDelete
    Replies
    1. Hi Lydia, I'm busy indeed but it's more like I'm done with RPG Maker in the first place. ;) What you need to know is to open the demo with RPG Maker, then open the script editor. At the end of the list you'll find a bunch of scripts written by myself, those are the ones you need to copy into your own project's script editor (pretty much like you would copy anyone's scripts actually). Once you've done that, your game should at least run without errors. Let me know if you were able to do that and I can assist you with the next part. :)

      Delete