Jump to content


  • Content Count

  • Joined

  • Last visited

  • Days Won


Posts posted by Kayzee

  1. The nice thing about script calls in move routes is you can just use 'self' to get the current event object like this:

    $game_variables[0] = self.x
    $game_variables[0] = self.y
    $game_variables[0] = self.direction

    Though in this case it is probobly better to use '@' to look up the current event object's private attributes/variables directly like this:

    $game_variables[0] = @x
    $game_variables[0] = @y
    $game_variables[0] = @direction

    In either case replace 0 with whatever variable number you want.


    Also, Just FYI: Let explain the difference between these two things for a bit, it may be handy in the future. You see, RPG Maker VX Ace uses Ruby, and in Ruby all of an objects attributes/variables are basically like secrets that only it knows. However you are able to make it so an object can tell other things the secret when asked. Why is this important? Because objects usually don't give away all their secrets, a lot of things it might need to figure out on the spot and can't just give a secret answer for, and sometimes they can just outright lie. An object can respond to things any way it likes.


    Basically 'self.' is gonna give you what the object will tell everyone else when asked, and '@' is gonna give you some of the secret information it keeps hidden from everything else.


  2. I have a character like that in my game too sorta! Not sure if I am gonna make her explicitly sexual (probobly pretty lewd though), but she definitely could be described as some kind of predator. Shes a fairy who basically tries to steal the player away to fairyland to play with forever. She is very cute, often makes horrible puns, and can be comedically childish. She also can be very creepy, sort of manipulative, and amoral. But I mean, she is a fairy. That's kind of to be expected.


    Am I worried that a character that is both comedic and more then a bit predatory will undermine the impact of the more unsavory aspects of her personality? Actually no. I expect in fact the more comedic elements to actually reinforce the impact of her creepy otherworldly predatory nature. Basically she is a character that (if I write her right) should seem cute but the more time you spend talking to her the more you notice she is ever so slightly 'off' compared to normal humans, and after a while she starts going form endearing to creepy and back so suddenly and casually as to really send chills down the player's spine.


    In fact I am sorta worried about going to far and actually creeping people the heck out. I don't really want people to hate the character, after all she is me. ;)







  3. Wish granted! You now have a much better perspective on 2D graphics. You can't actually draw any better or have any new skills or anything, but your attitude sure as changed and that has to count for something right?


    I wish that annoying voice in my head that always begs and whines to leave it alone (even when I actually am) would, ya know, not do that. Yeah this gonna backfire horribly but at this point a change would be refreshing. >_>

  4. What's really interesting to me is this line:

    On 6/3/2020 at 5:34 PM, Chaos Krux said:

    The game acts as if no action was inputed at all. It doesn't even take any MP or TP away from the user.


    Do the skills in question have any other effects besides calling common events? Do they work if given one? Calling a common event is done differently to how other effects work, so I wonder if something is causing skills without any normal effects/damage to be ignored?


    More technically, MP/TP costs are paid and common events are set up in the same place, the battler's 'use_item' method. If for some reason this isn't called for some skills, the result will be no MP/TP gets taken away and common events are not run.


    Edit: Also might have to do with the skill's scope if it's set to 'None'.

  5. I did do something like that in VX Ace with scripts actually. I remember at one point I was trying to get a ghost enemy to work by turning 'through' on and off but I kept running into problems. I mean the idea of keeping through off in walkable areas and turning it on before it moves into a wall sound simple enough, but the catch is through also needs to be on when exiting a wall, and if it's on it will ignore all character (events, player, and so on) collisions too, so it will step into characters when exiting walls.


    I eventually made a 'pass type' script that fiddled with how characters decide what map tiles are 'passable' so that characters could either swim (move through water), fly (move over water/pits), or act like a ghost (phase through every kind of map tile). Since this ghost movement was only for map tiles, character collisions still worked and a ghost couldn't just step on a square that had another character on it.


    On an unrelated note, my little 'pass type' script had a lot of kinda silly advanced features. I also allow any feature object (aka states, equipment, classes, or anything else the game checks for features related to a battler) to set pass types too, so you could have a status effect that made the player float, or since all the enemies in my game are events with a battler attached to it it works on enemies too. Also made some little neat visual effects. When swimming it acts like a tile with the bush flag so the character looks half-submerged, flying characters float up and down a bit and have a shadow that changes size/opacity in sync with the float, and ghost characters are always have half their normal opacity if they are inside a wall.

  6. 8 hours ago, DorFenn said:

    Regarding the Note Tag I was going to try it, but when I read a tutorial and it was too much to scan, I decided to use the conditionals after all. From what I do, three skills are nothing compared to those people who use a lot of them.


    Yeah note tags can be a pain in the butt to deal with sometimes, especially since every script basically needs it's own way to load/parse them. Personally though when I write scripts I don't even bother making each script load/parse it's own note tags and use this script to load/parse stuff for all my scripts instead. It makes things a million times simpler for me as someone who makes a lot of my own scripts. If you only are using three skills though? Yeah, just use conditionals I say.

  7. On 5/29/2020 at 3:41 PM, roninator2 said:

    Ok. So it may have been a clash with the object.class features/calls/sets? can't remember the term.

    interesting. Thanks


    Methods maybe? Operators in Ruby are really just fancy methods. For example this would be how you actually define '+':


    class SomeClass
      def +(value)
        # do something here

    Really in Ruby 'x + y' kinda translates to 'x.+(y)'


    1 hour ago, PhoenixSoul said:

    About the only improvement I would make is to change it so that it scans for one skilltype by ID.
    Like, have all healing spells/skills be one skilltype ID (this is zero-based but ID 0 is 'None' and is not typically used by the player).


    Personally I would have probobly used a note tag of some kind.


    Though really items and skills are basically the same thing. In most cases you could probably just use reusable items instead of skills, but I don't know if that is practical in this case.

  8. 8 hours ago, roninator2 said:

    That;s why I suggested the << operator as an alternate.

    I didn't think there was an issue with the << operator though. 


    One alternative to 'x += y' for arrays would I think be 'x.push(*y)' where * in this case is the splat operator. Not sure if 'x << *y' would work though, because although .push accepts multiple arguments, I am not sure if << does.


    8 hours ago, roninator2 said:

    I had used in my project something like this

    object = data1

    totaldata = totaldata + object

    and that works. but 

    totaldata += object ; does not

    I don't understand why. If + works by itself then math operators are defined but += is not? They all fall under their parent classes, or at least they should.


    Yeah that's weird... as far as I know += should be defined if + is defined... Though it could be that for totaldata's class '+' is not defined, but it is for object's class and Ruby will use object's '+' when it encounters that situation because for numbers x + y and y + x are the same thing. This isn't always true for other types of objects, but I could imagine this being assumed.


    If so, this is what I might expect to happen if 'totaldata' is nil (or undefined) and 'object' is a string. Saying something like ' nil + "string" ' might actually work fine then because Ruby would reinterpret it as ' "string" + nil ' which would try and convert nil to a string by calling nil.to_s which I believe always returns the empty string (aka ""). Therefore 'totaldata = totaldata + object' would work, even though it really shouldn't.


    However 'totaldata += object' would not. Because + is not defined for totaldata, += would not be defined either and in this case Ruby would not assume that x += y is the same as y += x because they obviously wouldn't be the same even for numbers.


    Usually in that case you would want to set totaldata to "" before you start using it. That way you are absolutely sure it's a string.


    3 hours ago, DorFenn said:

    Yes, I know it is rare that I have asked based on all the skills, but I realized that it is convenient for me to do it conditionally. In this way I can control what skills are seen and what others are not.


    Forgive the confusion.


    Good luck then! *sprinkles fairy dust on you*

  9. 6 hours ago, roninator2 said:


    If that gives an error then there is a coding block where that section does not recognize using math operators in a full capacity. 

    the other option that may work is

    @data << $data_skills.select {|skill| usable?(skill) }

    The << is a push operator. It is used to add on data


    Keep in mind that += and << do very different things. Pretty sure that << works identically to the .push method, adding something as a new member on to the array. On the the other hand += is a way of combining two arrays into one. In this case, '$data_skills.select {|skill| usable?(skill) }' is an array containing all usable skills. Using << here would add one new member to the @data array containing the usable skills array, which is not what we would want is it? Using += here would add each member of the usable skills array to the end of the @data array, which is what we would actually want to do.


    Side note: By a 'section that does not use math operators in a full capacity' I can only assume you are talking about the traditional difference between 'statements' and 'expressions' in many programing languages. In some languages operations like += might be defined as 'statements' and not allowed to be used where the language expects an 'expression'. Probably mostly in languages that use '=' to both set if used as a statement (such as 'x = 5') and compare things if used as an expression (such as 'if x = 5') rather then use '=' to set and '==' to compare. In Ruby however the difference between 'statements' and 'expressions' is virtually (but I don't think entirely) nonexistent.


    Otherwise, math operators are defined purely by the object(s) they operate on. The biggest reason something like 'x += y' might give an error is that ether the + operator is not defined for the class of x, or that the + operator for the class of x is unable to handle an object of the class of y. Happens most often in my experience because x and/or y were never actually set and default to nil.


    Then again...


    4 hours ago, DorFenn said:

    Thank you very much Rorinator! I have managed to show it, now I only have to lay some basic things and it be like new.


    In case someone has a similar problem attached as it should be the code.


      def make_item_list
        if skill = $game_party.members.any? { |actor| actor.skills.include?($data_skills[9]) }
        @data = $game_party.all_items.select {|item| include?(item) }
        @data << $data_skills[9]
        @data.push(nil) if include?(nil)
        @data = $game_party.all_items.select {|item| include?(item) }
        @data.push(nil) if include?(nil)    

    Greeting and have a nice day.


    I am kind of confused because I thought you wanted a bunch of skills to show up in the item menu, not just one?


  10. Why not both? That is, why not start the game with passive sea travel and give the player a ship of their own later in the story? This is actually something that's pretty common in JRPGs, particularly the Final Fantasy series. When game starts out, you don't really have a lot of options on where you can travel, and the game can be quite linear. But after a suitably climatic part of the story the player reaches what I have heard described as 'the Freedom Point', where the player can finally go anywhere they wish. This can often happen in stages too, which is why RPG Maker has different vehicle types. A boat for shallow water, a ship for shallow+deep water, and an airship that can go everywhere. Also many Final Fantasy games aren't afraid to give you a ship or airship for a little bit and take it away later, but they eventually give it back for good.

  11. Cause you are using '@data =' twice in make_item_list, so the list of skills is overwriting the list of items.


    Try adding a '+' before the '=' for the second one, or to put it another way,



    @data = $data_skills.select {|skill| usable?(skill) }


    @data += $data_skills.select {|skill| usable?(skill) }

    That will tell ruby to append the array rather then overwrite it.

  12. I remember someone asking me about this in a pm not to long ago... I don't know if they ever got their game working again. Anyway here is a slightly condensed/edited version of what I told them:


    ... How long was a while back? Have you done much with the computer since then? Sometimes checking the disk for errors will be able to fix some files for you. You can do this (in windows) by right clicking a hard drive in 'my computer', then choosing properties, then click on the tools tab thing and the first option should be error checking. Problem is sometimes data might be in places that are incorrectly marked as free, so the computer might overwrite them if you don't check right away. Not sure how common this is though. Be careful though, you might want to make a back up on another disk just in case it screws something up and makes it worse. It's also a good idea to take another backup after the error checking just in case.


    Okay now we come to the more tricky part:


    Now, go into your game's data directory, and have a look at all the file sizes. Using View -> Details is helpful here.


    Anyway, you are looking to see if any files are size zero. If so: Make a new project in RPG Maker and save it.


    For every file of size zero in your data directory:

    • If it is a map (Mapxxx.rvdata where xxx is the map number), replace it with a copy of the Map001.rvdata from the new project's data directory.
    • If it is not a map, replace it with a copy of the file with the same name from the new project's data directory.

    Then when you replaced all the size zero files, if any, try and load the project in the editor and/or test it.


    If it works, great that's this step done! Skip everything else bellow.


    If it doesn't, now we need to do some grunt work. Make another new project . Yes another one.


    Now follow these steps:

    1. Close the second new project if it's open in RPG Maker.
    2. Replace one of the non-map files that you haven't replaced yet in the data directory of the second new project with one from your project.
    3. Try opening the second new project in the editor/testing the game.
    4. If it gives an error (other then missing images or such) replace the same file with a copy from the first new project.
    5. Repeat above until all non-map files are replaced.
    6. Close your project if it's open in RPG Maker.
    7. Replace all non-map files in the data directory of your project with ones from the second new project.
    8. Try opening the your project in the editor/testing the game.


    If it gives an error, it's probobly something that only a professional data recovery expert can help you with, if anyone can at all.


    This won't always recover everything, but it's a start!


  13. I am curious too!


    Edit: Also sorry for confusing you... To be honest I find the whole way the battle system works in VX Ace a bit confusing myself. Mostly because everything is scattered about different places and it can be hard to find what you want.

  14. How large an army we talking here? Cause your example of 9 soliders seems like it would be better if each one was it's own actor. At hundreds and hundreds of solders though your not gonna want to micromanage everyone. Maybe each type of soldier was the same database actor that was just cloned in battle? Instead of each having their own equipment/levels/ect, they would just share a 'uniform' and the levels would be based on the player's over all skill with them maybe?

  15. Really 'confusion' status usually implies being confused about what is an ally and what isn't and/or scrambling the player's controls. What you are talking about I am pretty sure is usually called 'charm' I think. Actually in my game I have a charm status that petty much works exactly like you describe, but I am using my own battle system/enemy AI system and it doesn't work in the default battle system. Also it only effects enemies right now anyway since I have no AI code on the player's end.


    I will tell you one thing though: The basic idea about how my charm status worked is that it mostly just swaps the @friends_unit and @opponents_unit when creating a Game_Action object. With the default battle system the status might be able to work by doing that and setting a actor's 'auto battle' flag.

  16. Not sure what has you so confused really. My best guess is you don't know what scripts/plugins are? But you did use the phrase "coding mechanism" so maybe not? Well if so, generally when an engine says something like "no programming required" that's usually only technically true... Or it could even be a big fat lie since it's debatable if events count as 'programming' or not (not sure if Ren'Py has an event system or not, but RPG Make sure does).


    Regardless some kind of programing language is usually supported like Javascript for RPG Maker MV and Python for Ren'Py, and that's how systems like this are usually made. I pretty much only use RPG Maker VX Ace which uses Ruby, so I couldn't really go into much detail about MV or Ren'Py, but generally stuff like this are packaged into scripts/plugins/addons/mods/whatever (they can be called different things depending on the engine) so they can be shared and there are a lot of them floating around. But of course, though people make and share a lot of them, sometimes they aren't exactly what you want and/or there are bugs or other problems with them.


    Here's a bit of advice: You probobly shouldn't rely too much on things like this unless you know how to code things yourself or have someone working with you that does, because getting help for this stuff can be a shot in the dark sometimes.

  17. Yeah, looking at the code now that you found it, pretty sure that won't work right. Because 1. As I said, the movement code is totally rewritten, and 2. The problem wouldn't go away anyway, because Input.dir4 would still prioritize up over left and right, which is why the problem exists in the first place.