Jump to content

UncannyBoots

Member
  • Content Count

    59
  • Joined

  • Last visited

  • Days Won

    9

Everything posted by UncannyBoots

  1. While I love VX Ace, there are still many limitations to work around (most of which are also present in MV). Which leads me to dream about what would be included in my ideal RPG Maker. Not in any order, just off the top of my head: -Events that can span multiple tiles. You'd make an event, then there would be an "event size" option. This would open a window that is very similar to the "Transfer Player" window, when you select a tile on the grid for the player to transfer to. Then you can simply click and drag the square to resize it by tiles (so no pixel resizing -- unless pixel movement were to be the default...). You could also type in the dimensions if you wanted. And to make this extremely ideal, you could also set any tile to be above player, which would work great for collisions with large sprites. This event resizing would also be great for transfer player events. -XP layering, except you can add as many layers as you want (within reason). -An event command that allows you to anchor a picture to the map and set the z value (and if it spans multiple tiles, you can change the z value for each tile, and add tall sprite functionality so the head of a tall sprite doesn't go under the picture when walking in front of it, if that's what you want) -"Find and Replace" dialogue text throughout entire project -An option to toggle between normal eventing and a new "text editor" eventing which literally allows you to type events. So it'd be like coding except with the same ease as eventing. This would be amazing for added "find and replace" functionality, and tbh I find typing in long periods of time to be more comfortable than clicking all over the place. -Set the tile size for the entire project when creating a project (or better yet, whenever you want, but that'd be more tricky). Sizes would include 16x16, 32x32, 48x48, and maybe even ones unseen by RPG Maker such as 24x24 or 62x64 (or larger). -More window customization, like adding a menu (the grey bar at the top with "File" and "Options" and stuff), enable/disable resizing. Clickteam Fusion has so many options here and it'd be cool to have for RPG Maker -Screen filters (Pixel Game Maker MV has some filters I think) and upscaling options like Nearest Neighbor or Bicubic or whatever you want -Auto tile collisions, which would allow for walking behind the top part of an auto tile (like a building) -Editor customization in general would be sweet. If you ever tried the Godot Engine, you'll know that you can move any menu wherever you want to make it as comfortable for you as possible. -This applies to MV: a built-in script editor... and while we're at it, a window resizing for the script editor. I'll come back to edit if I think of any more. I've thought about this for a long time and I'm definitely forgetting some. I'd love to read your ideas for a dream RPG Maker
  2. Idk if I'm just an idiot or not but I cannot figure out how to 'anchor' a sprite onto my player character's sprite. I want to make a simple lighting system by using sprites and setting their blending to 'Add'. It works great for static lights. But I want my character to hold a torch. I could use a lighting script for this (which I do, currently), but I cannot find a lighting script that makes it so that the light shows underneath "Above Character" tiles or events.

    I've tried to change the z value of the lights in the lighting script I use (Zeus' Lighting script) but no luck there.

    I also know of Hime's Picture Anchors script, but the z value of pictures cannot be changed, and the blending mode of pictures do not affect events or the tilemap. If only I could anchor an event sprite to the player, like the Picture Anchor script can do for pictures, I'd finally have a solution to this long problem I've had of wanting lights to go underneath star tiles and 'Above Character' events. Anyone have any ideas?

    1. Kayzee

      Kayzee

      Pretty sure the thing you are missing is making sure the light sprite and player sprite are using the same viewport. Each viewport basically takes all the sprites that use it and draws them together as a group with it's own z value so a sprite or whatever can only be drawn between others if they are in the same viewport.

       

      That said: If you ask me having lights drawn under "Above Character" tiles or events actually look pretty terrible. Most light scripts I know draw a layer of darkness with 'holes' so drawing them bellow 'above character' stuff will make all the above character stuff be fully lit and the radius of lights will more then likely make the tops of trees stand out and get cut off.

    2. UncannyBoots

      UncannyBoots

      You make a good point about lights clipping through trees, I didn't think much about that but yeah I don't see any good workaround to that sadly.

      Still, is there a script out there that makes a character event sprite overlay on top of the character (similar to Hime's Picture Anchor script)? That would still be better for me so that I can ditch lighting scripts altogether and just use the Add blending mode for lights. Right now that's what I'm doing for static lights, but for my character I'm still using Zeus' Lighting Script, and when it turns on, CPU usage takes a noticeable spike upwards which I'd like to avoid.

    3. Kayzee

      Kayzee

      What do you mean by 'makes a character event sprite overlay on top of the character' exactly? You mean overlaying one character sprite on another? You know all you really need to do to 'anchor' a sprite to another is to copy it's x/y location right?

       

      Sidenote: Lighting scripts are always gonna be sorta slow like that because it has to do extra tricks with subtraction blending to get nice dark areas. You can't really get nice dark areas with additive blending and overly bright areas can look weird.

  3. When leveling up, I'd love it if the parameter doesn't just have a predefined increase, but instead can increase by a random number (say, 0-5) + the default increase. So let's say at level 2, the ATK stat on a certain class raises from 10 to 11 by default. In this script, it would increase from 10, to either 11 or 12 or 13, 14, 15, 16, randomly generated. If the random number is 0, it will increase only by the default curve value, so in this case, going from level 1 to 2, it would only increase by 1. But, if the random number is 5, it would increase by 6. So: default parameter increase + random number, if that makes sense. The only problem with this is that, then, the stat could be higher than what it is set to in the database. So how would that be fixed? Because, let's say that leveling up to level 3 gives you 12 ATK -- but with this script, the ATK was already raised to 13! I don't want the stats to ever downgrade when leveling up... So my solution would be that for each class or actor, you would set the parameter scale curve in the notebox. So for example: <param_curve> [100, 9999, slow] #MHP [85, 8500, fast] #MMP [20, 500, medium] #ATK ... </param_curve> The array for each stat would be like this: [level 1 value, level 99 value, increase speed] And this would essentially just ignore the param curves set in the database. This is a cool idea in theory but how difficult would this be to code? The custom parameter curve part seems especially hard to me, but would it be difficult to an experienced scripter? Is there a script like this that already exists? Thank you for any help EDIT: I forgot to add that depending on the speed of the parameter curve, the random number would be different. The faster the level up curve, the larger the maximum random number would be. Like this: Very fast: 0-20 Average: 0-10 Very slow: 0-1 That would make it a lot more dynamic depending on the parameter being increased
  4. UncannyBoots

    Slightly randomized parameter increase on level up

    Sorry, it is kind of hard to explain. Basically I don't want static parameter curves. I don't want the values to be the same every time you play. And so I would like the values to be slightly randomized. And for that you would need a different kind of curve I think, because if using the default curve, it would be possible for your stats to go down. Imagine your stat is 16 due to this script, and the next level has it at 14. 14 + a random number. Imagine that random number turns out to be 0 or 1. That would make your stat go down when leveling up. The only solution to this I can think of is to ignore the default parameter curve altogether because the numbers simply won't align. Essentially the curve would have to be generated by some sort of equation that updates the next value depending on what the random number is. But idk maybe I'm wrong lol, perhaps it's a lot more simple than I would think. I'll definitely check your script
  5. Man it's been a while haha. I'm just wondering, is it within our rights to take a MIDI from 2k3 (or XP or 2k or even 95) and put it into a DAW and remix it? I own 2k3 so I know I can use its music as it is, but I'm not sure about the legality of editing it, or even totally remaking it.

    I was going to ask this in the official RM forum but that site confuses me with its many, many subforums, I had no idea where to place this question. Plus I like this place better :P

    1. Kayzee

      Kayzee

      Pretty sure no one here is a lawyer, a real lawyer probably wouldn't give free legal advice to a stranger anyway, and  even if I did the answer would probably be a long winded version  of "it's complicated".

       

      Here is my likely ignorant rule of thumb though: It's always gonna be a gamble.

       

      How so? Well let's imagine a game. So you want to use this music... You got to make a bet! If you win you keep your money and get to use the music, if you lose you lose all the money. But there is a trick! Not only is it a bet, it's a blind bet. You have no idea how much you bet unless you lose.

       

      Okay let's look at your hand. Oh so you own 2k3, okay add some points. Oooh, but you aren't actually using the music in 2k3, that may cost you some points. Oh but you aren't actually using the music it's self, okay add some points... but it is a remix so take some away. Uh oh, you are using the original midi? My my that might cost you some points! And so on.

       

      Now to your opponent. They only get to play if they pay attention. If they don't notice you use the song at all you might win by default! But not so fast! They can play any time they want so it might be years before they make a move and you won't know!

       

      So you have your hand and your opponent has theirs. What kind of hand could they have? Now if they play they may or may not have a better hand then you, but that's not the end of the game! Oh no no no. If your opponent plays they can use money counter bet by hiring a good team of lawyers. Now you have an opportunity to counter counter bet, but I bet you have far less money then they do don't you?

       

      Now I donno about you, but that all kinda sounds sus to me. I think I rather not play that game and just use free stuff or make my own when I can. :3

    2. PhoenixSoul

      PhoenixSoul

      Hmmm...

      If you're thinking about it, just go for it. At this point, no one is really going to care.

  6. UncannyBoots

    Mirroring tiles via Tile Swap script

    I want to use as few tilesets as possible. So far I'm still at only 2 different tilesets for my entire game; one for indoors, and one for outdoors. I'm reaching the limit though, and I want to make some unique buildings, which are going to be pretty big. And here lies the problem: the buildings are symmetrical, so it uses double the tiles on my tileset, but it doesn't have to. If I could mirror the tiles that are symmetrical, which most retro games do, I could cut the tileset usage in half for these building tiles. Now, I found this script by Hime that allows for inserting tiles via script call. I know that it is possible to mirror bitmap images in RGSS3, because I have a script by Galv that has a mirror reflection in water that mirrors the character sprite on the y axis. So I think that, in theory, a modification could be made to Hime's script here that would insert tiles on the map, but mirrored on the x axis. I'm not a scripter though, so I came here to ask for your thoughts. Do you think this is feasible, and if it is, could you do it for me? It takes some humility to ask that lol, but I'm not just asking for "help" here because I don't know what to do at all when it comes to writing Ruby, so to be frank I am asking for someone to do it, if it's not too much of a hassle. It's a decently long script so I don't know how many variables would have to be edited. If it is too difficult, then I understand. Thank you EDIT: Looking into it, the way that Galv's Character Effects script mirrors the player sprite is by using "self.mirror". I wonder if that sort of code would work for tiles too. I kind of doubt it though Would something have to be added under Spriteset_Map?
  7. I want to be able to play more than one BGS track at once, while also having a BGM playing. Is there any possible way to do this in VX Ace?

    1. Show previous comments  6 more
    2. Kayzee

      Kayzee

      It's probably impossible to get a seamless loop due to frame rate fluctuations, though you could probably get closer if you edited the sound to be exactly the right length in frames. Either way, you might need to add a fade out/fade in and just let it overlap a bit. Or another option might be having shorter motor/revving sounds that are designed to play intermittently rather then loop.

    3. UncannyBoots

      UncannyBoots

      I know you don't like the FMOD script but I'm not wrong when I say it does indeed allow for multiple BGS (audio channels), right? If that's the case then I guess I'll look into getting it to work because that's the only good solution here, it seems.

      ...The only problem is, I literally can't find any clear cut documentation for how to play another audio channel. The documentation that comes with the script focuses only on getting DSP effects to work, which I have no interest in.

      This is the only thing that seems related to specifying a channel that I can find:

      pos = APU::CURRENT_CHANNEL_VARIABLE
      v = $game_variables[pos]

      And I have no clue on how to make use of that

    4. Kayzee

      Kayzee

      It's not so much that I dislike the script and more that I have run into problems trying to use it. I think it has trouble working on some computers for some reason. Anyway APU::CURRENT_CHANNEL_VARIABLE should be set to a number near the start of the script shouldn't it? I think you just need to set that variable before you play a sound and it will play on that channel... I think?

  8. UncannyBoots

    Mirroring tiles via Tile Swap script

    I hate doing parallax mapping and afaik there's no way to anchor an image onto the map so I just gave up on this dream. Instead, for big unique buildings that I only use on one map, I just put the building in a character sheet and piece it all together with events. Thanks for the response
  9. I know MZ is brand new but I'm still curious, are the plugins being made for MZ just ports of MV plugins or are there a lot of original plugins being made? I own MV but I haven't used it all that much so I'm not familiar with its plugin library so idk how many of the new MZ plugins are just ports or not

    1. PhoenixSoul

      PhoenixSoul

      I think it is a mixture of both.

      I believe that there are some plugin makers that are porting some of their RGSS scripts to MZ...

    2. UncannyBoots

      UncannyBoots

      That's really cool, are they scripts that didn't really have an MV port?

    3. PhoenixSoul

      PhoenixSoul

      @Tsukihime mentioned in one of her status posts that she'd be having to port her Tag Manager script to MV from VX Ace for a grid battle feature she's developing for MZ. I'm certain that there are other examples of MZ plugins that are being ported in from XP/VX/VX Ace...

  10. Huh, maybe it's just me where the script has problems then. This site leads me to believe that there was a different Ace version; there's also an XP version. I wonder what the differences were, if the VX one works for you in Ace with no issues.
  11. It allows for changing color, changing angle, mirroring, adding wave effects, etc to characters and events via simple script calls. Here's the VX script. I actually did get it to work in Ace by commenting out a few lines that gave errors but that isn't ideal. Also it conflicts with Galv's Character Effects but I doubt the Ace version is any different in that regard. Still I'm interested in acquiring it.
  12. UncannyBoots

    Mirroring tiles via Tile Swap script

    Yeah and it's easier to have only two tilesets so I don't get confused and change a passability in the wrong tileset, which I would do all the time when I had many tilesets that shared the same A or B-E tiles. But in general I do want my game to have as few files as possible too
  13. Does anybody have "New Character Properties with Calls" for VX Ace? The VX version is on the internet, but somehow the VX Ace one has totally vanished.
  14. UncannyBoots

    What features would be included in your dream RPG Maker?

    Lol what are the odds that I just added another one as soon as you posted Sadly, all of these wishes are nothing more than pipe dreams. I highly doubt Kadokawa cares to add truly game-changing functions like these to future RPG Makers.
  15. If they're all in txt files or something equivalent, then you could add them all to a rar/zip file and provide it for download via MEGA or mediafire or whatever
  16. UncannyBoots

    What features would be included in your dream RPG Maker?

    Got a few more I'd like to add. -Multiple BGS tracks at once. -Dynamic audio by distance. In other words, imagine a radio playing music. The more tiles away from the radio you are, the quieter it becomes. The more tiles closer to the radio you are, the louder it is. -Smaller tiles that you can piece together to make a whole tile. Like how the NES worked; the tiles were 8x8, but in general the way it was used was to combine four 8x8 tiles together into one larger 16x16 tile. This allowed for not only a smaller file size, but allowed for more mixing and matching of what tiles could look like. Also, there are times when a tile I make only takes up half of the tile (or even a quarter). So that's an entire half tile that is unused, which is a waste of tileset space. If the tiles were naturally a quarter size of what they are now, then it would allow for so much more possibilities in tile mapping and would allow for more tiles in general. Also, this would allow for quasi-pixel movement right out of the box. -To add to the previous one, the ability to mirror a 'quarter' tile would be fantastic. NES developers did this a lot as well (as did many other retro developers for any console, I'm sure). It again saves tile space and would allow for better mapping possibilities.
  17. Sorry if "programming" is the wrong subforum, I don't really know where else to put it and I think the solution is going to be by editing a script anyway. I have a day and night system in my game and when the time of day changes, a parallax background of the sky, of which is reflected in water, changes. The issue I have is that when loading the game, the parallax takes a split second to load after the game already loads, which looks terrible and ruins immersion. So my question is, is it possible to load a map parallax before the map is fully loaded? Perhaps it would be in Scene_Load, right before the map appears, under "if DataManager.load_game(@index)", it will check if switch "x" is on, and if it is then "parallax x" will be the parallax that is displayed as the map loads. In theory this should be possible since you can set a parallax in the editor itself that loads before the map is shown, right? Thanks for any help
  18. Just learned of MZ and I was excited until I actually watched the showcases of it.

    It's just MVAce. And I don't like MV much to begin with. The only thing that wowed me is that it has multiple mapping layers... but that's not much of an innovation, when XP did that in 2006. And they don't give you many layers. Which isn't a huge deal but, really, there's no reason to limit the number of layers much.

    I wish the creators of RPG Maker would make something truly innovative. It doesn't need to be revolutionary but couldn't they at least... try? For starters how about letting me choose my tile size? Other game engines do that easily -- even Pixel Game Maker does this iirc. I would love to be able to use 32x32 sized graphics again. I mean, there's a ton of things they could add, all of which would be doable. I listed my wishes in this thread about my dream RPG Maker and I don't think most of these would be hard to implement -- especially not for professional programmers who make these engines.

    1. Show previous comments  1 more
    2. PhoenixSoul

      PhoenixSoul

      Well, Wolf RPG allows tile size selection, among other things, but it's definitely different.

      XP, it's still amazing as far as mapping goes. Why else would I have it?

    3. UncannyBoots

      UncannyBoots

      Last time I checked Wolf RPG, it didn't have many english tutorials and community support. Has that gotten better?

    4. PhoenixSoul

      PhoenixSoul

      Not sure about better, but there is a game project that is entirely in english that acts as a tutorial.

  19. Dabbled in making 3D models after being addicted to Skyrim again, and I wanted to make some mods. So I learned Blender (somewhat) and then thought "man, my life dream has always been to make my own AAA quality 3D action adventure RPG game. I should totally learn Unreal Engine." I thought, hey, it has blueprints, so that's already sort of like RPG Maker, but for 3D, right?

    Well after two weeks of hell, with every solution I find for a problem coming up with 3 more issues, I have decided not to go down the 3D game development route.

    1. Rikifive

      Rikifive

      Yeah, 3D environment is way more difficult than 2D. Making decent looking 3D models is a challenge itself. Making great 3D games would be really nice indeed, but one does not simply make one. 😛

    2. PhoenixSoul

      PhoenixSoul

      The number of solo devs that have done fully 3D games is less than a hundred I think.

      Nadeo is one example, but only for the first Trackmania game. A lot went into that game, and it's definitely not bug-free or even the best polished, but it was done by one person, in less than a year I believe it was.

    3. Kayzee

      Kayzee

      Having every solution you find for a problem coming up with 3 more issues sounds like game development in general really. Even in RPG Maker that seems to be the case more often then not if you try doing anything beyond a bog standard RPG. It can be frustrating, but I think most of the time if you really look at what is going on you might realize something important:

       

      Though you will keep finding more and more issues, they aren't actually endless. Some new issues you will find are really the same as or closely related to issues you have seen before. Most of them follow a predictable pattern, and if you figure out that pattern eventually you will start solving issues before they even become issues. If you really examine the problems involved, you can become good at anything if you stick with it long enough.

       

      It's never that easy or simple, but I think the really tricky part is finding the determination to stick with it long enough to get better.

  20. Is there a sort of "weather" or animation system that would allow for a "disco" effect? Like with multicolor circles moving around the floor as an overlay

  21. There's a severe compatibility issue between victor's rotational moving script and the "set_char" animation script call in galv's move route script. I'm too defeated and tired to really go into detail but in a nutshell, galv's script relies on the default direction variable found in Game_CharacterBase, and victor's script completely changes how the direction variable works. This makes it so that when using "set_char" in a move route, it is impossible to select a different character direction. Victor's script splits the direction variable into three different variables, "current_direction", "final_direction" and "direction". It's very confusing to me. This is the area of galv's script that I believe needs fixing (and the "set_char" script call function is all I want from this script and is crucial): def set_char(name,index,pattern,direction) @gstop = true @direction = direction @pattern = pattern - 1 @character_name = name @character_index = index - 1 end I'll just link the entirety of Galv's script here. And here's the rotational moving script by Victor: #============================================================================== # ** Victor Engine - Rotational Turning #------------------------------------------------------------------------------ # Author : Victor Sant # # Version History: # v 1.00 - 2011.12.23 > First release # v 1.01 - 2011.12.30 > Fixed get on and off vehicle glitch # v 1.02 - 2012.01.01 > Fixed initial event direction and added new tags # v 1.03 - 2012.01.04 > Compatibility with Character Control # v 1.04 - 2012.05.30 > Compatibility with Pixel Movement # v 1.05 - 2012.07.24 > Compatibility with Moving Platforms # v 1.06 - 2012.11.03 > Fixed issue with direction ladders # > Fixed issue with direction after map transfer #------------------------------------------------------------------------------ # This scripts allows to set a different movement when the character changes # the direction he is facing, instead of facing directly the new direction # the character tunrs smoothly with a rotational movement. #------------------------------------------------------------------------------ # Compatibility # Requires the script 'Victor Engine - Basic Module' v 1.05 or higher # If used with 'Victor Engine - Multi Frames' place this bellow it. # # * Overwrite methods # class Game_CharacterBase # def set_direction(d) # # * Alias methods # class Game_CharacterBase # def init_private_members # def update # # class Game_Event < Game_Character # def clear_page_settings # def setup_page_settings # # class Game_Player < Game_Character # def initialize # # class Game_Interpreter # def comment_call # #------------------------------------------------------------------------------ # Instructions: # To instal the script, open you script editor and paste this script on # a new section bellow the Materials section. This script must also # be bellow the script 'Victor Engine - Basic' # #------------------------------------------------------------------------------ # Comment calls note tags: # Tags to be used in events comment box, works like a script call. # # <actor rotation on> # <actor rotation off> # These tags allows to turn the rotation move on or off for the player. # # <event i rotation on> # <event i rotation off> # These tags allows to turn the rotation move on or off for events. # i : event ID # #------------------------------------------------------------------------------ # Comment boxes note tags: # Tags to be used on events Comment boxes. They're different from the # comment call, they're called always the even refresh. # # <rotation move> # This tag allows the rotation move for events if VE_ROTATE_EVENTS = false # It enables the rotation move only for the page where the comment # is located # # <block rotation> # This tag disable the rotation move for events if VE_ROTATE_EVENTS = true # It disable the rotation move only for the page where the comment # is located # #============================================================================== #============================================================================== # ** Victor Engine #------------------------------------------------------------------------------ # Setting module for the Victor Engine #============================================================================== module Victor_Engine #-------------------------------------------------------------------------- # * Set rotational turning for events # If true, automatically all events will have rotational turning. # If false, you must add the rotational turning manually by adding the # comment tag for rotational turn on it. #-------------------------------------------------------------------------- VE_ROTATE_EVENTS = false #-------------------------------------------------------------------------- # * Set wait time between the frame change during rotation #-------------------------------------------------------------------------- VE_ROTATION_WAIT = 3 #-------------------------------------------------------------------------- # * required # This method checks for the existance of the basic module and other # VE scripts required for this script to work, don't edit this #-------------------------------------------------------------------------- def self.required(name, req, version, type = nil) if !$imported[:ve_basic_module] msg = "The script '%s' requires the script\n" msg += "'VE - Basic Module' v%s or higher above it to work properly\n" msg += "Go to http://victorenginescripts.wordpress.com/ to download this script." msgbox(sprintf(msg, self.script_name(name), version)) exit else self.required_script(name, req, version, type) end end #-------------------------------------------------------------------------- # * script_name # Get the script name base on the imported value, don't edit this #-------------------------------------------------------------------------- def self.script_name(name, ext = "VE") name = name.to_s.gsub("_", " ").upcase.split name.collect! {|char| char == ext ? "#{char} -" : char.capitalize } name.join(" ") end end $imported ||= {} $imported[:ve_roatation_turn] = 1.06 Victor_Engine.required(:ve_roatation_turn, :ve_basic_module, 1.05, :above) #============================================================================== # ** Game_CharacterBase #------------------------------------------------------------------------------ # This class deals with characters. Common to all characters, stores basic # data, such as coordinates and graphics. It's used as a superclass of the # Game_Character class. #============================================================================== class Game_CharacterBase #-------------------------------------------------------------------------- # * Overwrite method: set_direction #-------------------------------------------------------------------------- def set_direction(d) @stop_count = 0 return if @direction_fix || d == 0 || rotating? || (ladder_down? && d == 2) set_final_direction(d) @rotation_wait = VE_ROTATION_WAIT @clock_rotation = rotation_direction @current_direction = @final_direction if !rotation_enabled? || tranfering? update_direction if tranfering? end #-------------------------------------------------------------------------- # * Alias method: init_private_members #-------------------------------------------------------------------------- alias :init_private_members_ve_roatation_turn :init_private_members def init_private_members init_private_members_ve_roatation_turn @final_direction = 0 @current_direction = 0 @rotation_wait = 0 end #-------------------------------------------------------------------------- # * Alias method: update #-------------------------------------------------------------------------- alias :update_ve_roatation_turn :update def update update_rotation if rotating? update_ve_roatation_turn update_direction end #-------------------------------------------------------------------------- # * New method: set_final_direction #-------------------------------------------------------------------------- def set_final_direction(d) diag = $imported[:ve_diagonal_move] && diagonal_enabled? && diagonal? case d when 2 then @final_direction = diag ? 1 : 0 when 4 then @final_direction = diag ? 3 : 2 when 6 then @final_direction = diag ? 7 : 6 when 8 then @final_direction = diag ? 5 : 4 end end #-------------------------------------------------------------------------- # * New method: rotation_direction #-------------------------------------------------------------------------- def rotation_direction clock = 0 nclock = 8 clock += 1 while @final_direction != (@current_direction + clock) % 8 nclock -= 1 while @final_direction != (@current_direction + nclock) % 8 clock < (8 - nclock) end #-------------------------------------------------------------------------- # * New method: rotation_enabled? #-------------------------------------------------------------------------- def rotation_enabled? @rotation_enabled end #-------------------------------------------------------------------------- # * New method: rotating? #-------------------------------------------------------------------------- def rotating? @final_direction != @current_direction end #-------------------------------------------------------------------------- # * New method: update_rotation #-------------------------------------------------------------------------- def update_rotation @pattern = @original_pattern return @rotation_wait -= 1 if @rotation_wait > 0 @rotation_wait = VE_ROTATION_WAIT add = $imported[:ve_diagonal_move] ? 1 : 2 dir = @current_direction dir = (dir + add) % 8 if @clock_rotation dir = dir - add if !@clock_rotation dir = $imported[:ve_diagonal_move] ? 7 : 6 if dir < 0 @current_direction = dir end #-------------------------------------------------------------------------- # * New method: update_direction #-------------------------------------------------------------------------- def update_direction case @current_direction when 0 then @direction = 2; @diagonal = 0 when 1 then @direction = 2; @diagonal = 1 when 2 then @direction = 4; @diagonal = 0 when 3 then @direction = 4; @diagonal = 7 when 4 then @direction = 8; @diagonal = 0 when 5 then @direction = 8; @diagonal = 9 when 6 then @direction = 6; @diagonal = 0 when 7 then @direction = 4; @diagonal = 3 end end #-------------------------------------------------------------------------- # * New method: update_clear_direction #-------------------------------------------------------------------------- def update_clear_direction case @direction when 2 then @current_direction = @final_direction = 0 when 4 then @current_direction = @final_direction = 2 when 6 then @current_direction = @final_direction = 6 when 8 then @current_direction = @final_direction = 4 end end #-------------------------------------------------------------------------- # * New method: get_final_direction #-------------------------------------------------------------------------- def get_final_direction case @final_direction when 0 then [2, 0] when 1 then [2, 1] when 2 then [4, 0] when 3 then [4, 7] when 4 then [8, 0] when 5 then [8, 9] when 6 then [6, 0] when 7 then [4, 3] end end #-------------------------------------------------------------------------- # * New method: ladder_down? #-------------------------------------------------------------------------- def ladder_down? $game_map.ladder?(@x, @y + 1) end #-------------------------------------------------------------------------- # * New method: transfer? #-------------------------------------------------------------------------- def tranfering? $game_player.transfer? && (player? || follower?) end end #============================================================================== # ** Game_Event #------------------------------------------------------------------------------ # This class deals with events. It handles functions including event page # switching via condition determinants, and running parallel process events. # It's used within the Game_Map class. #============================================================================== class Game_Event < Game_Character #-------------------------------------------------------------------------- # * Alias method: clear_page_settings #-------------------------------------------------------------------------- alias :clear_page_settings_ve_roatation_turn :clear_page_settings def clear_page_settings clear_page_settings_ve_roatation_turn @rotation_enabled = false end #-------------------------------------------------------------------------- # * Alias method: setup_page_settings #-------------------------------------------------------------------------- alias :setup_page_settings_ve_roatation_turn :setup_page_settings def setup_page_settings setup_page_settings_ve_roatation_turn @rotation_enabled = VE_ROTATE_EVENTS || note =~ /<ROTATION MOVE>/i @rotation_enabled = false if note =~ /<BLOCK ROTATION>/i set_final_direction(@direction) @current_direction = @final_direction end #-------------------------------------------------------------------------- # * New method: rotation_on #-------------------------------------------------------------------------- def rotation_on @rotation_enabled = true end #-------------------------------------------------------------------------- # * New method: rotation_off #-------------------------------------------------------------------------- def rotation_off @rotation_enabled = false end end #============================================================================== # ** Game_Player #------------------------------------------------------------------------------ # This class handles maps. It includes event starting determinants and map # scrolling functions. The instance of this class is referenced by $game_map. #============================================================================== class Game_Player < Game_Character #-------------------------------------------------------------------------- # * Alias method: initialize #-------------------------------------------------------------------------- alias :initialize_ve_roatation_turn :initialize def initialize initialize_ve_roatation_turn rotation_on end #-------------------------------------------------------------------------- # * Alias method: get_on_off_vehicle #-------------------------------------------------------------------------- alias :get_on_off_vehicle_ve_roatation_turn :get_on_off_vehicle def get_on_off_vehicle return if rotating? get_on_off_vehicle_ve_roatation_turn end #-------------------------------------------------------------------------- # * Alias method: init_private_members #-------------------------------------------------------------------------- alias :clear_transfer_info_ve_roatation_turn :clear_transfer_info def clear_transfer_info clear_transfer_info_ve_roatation_turn update_clear_direction end #-------------------------------------------------------------------------- # * New method: rotation_on #-------------------------------------------------------------------------- def rotation_on @rotation_enabled = true @followers.rotation_on end #-------------------------------------------------------------------------- # * New method: rotation_off #-------------------------------------------------------------------------- def rotation_off @rotation_enabled = false @followers.rotation_off end end #============================================================================== # ** Game_Follower #------------------------------------------------------------------------------ # This class handles the followers. Followers are the actors of the party # that follows the leader in a line. It's used within the Game_Followers class. #============================================================================== class Game_Follower < Game_Character #-------------------------------------------------------------------------- # * New method: rotation_on #-------------------------------------------------------------------------- def rotation_on @rotation_enabled = true end #-------------------------------------------------------------------------- # * New method: rotation_off #-------------------------------------------------------------------------- def rotation_off @rotation_enabled = false end end #============================================================================== # ** Game_Followers #------------------------------------------------------------------------------ # This class handles the followers. It's a wrapper for the built-in class # "Array." It's used within the Game_Player class. #============================================================================== class Game_Followers #-------------------------------------------------------------------------- # * New method: rotation_on #-------------------------------------------------------------------------- def rotation_on each {|follower| follower.rotation_on } end #-------------------------------------------------------------------------- # * New method: rotation_off #-------------------------------------------------------------------------- def rotation_off each {|follower| follower.rotation_off } end end #============================================================================== # ** Game_Interpreter #------------------------------------------------------------------------------ # An interpreter for executing event commands. This class is used within the # Game_Map, Game_Troop, and Game_Event classes. #============================================================================== class Game_Interpreter #-------------------------------------------------------------------------- # * Alias method: comment_call #-------------------------------------------------------------------------- alias :comment_call_ve_roatation_turn :comment_call def comment_call call_change_actor_rotation call_change_event_rotation comment_call_ve_roatation_turn end #-------------------------------------------------------------------------- # * New method: call_change_actor_rotation #-------------------------------------------------------------------------- def call_change_actor_rotation if note =~ /<ACTOR ROTATION (ON|OFF)>/i $game_player.rotation_off if $1.upcase == "OFF" $game_player.rotation_on if $1.upcase == "ON" end end #-------------------------------------------------------------------------- # * New method: call_change_event_rotation #-------------------------------------------------------------------------- def call_change_event_rotation if note =~ /<EVENT (\d+) ROTATION (ON|OFF)>/i $game_map.events[$1.to_i].rotation_off if $2.upcase == "OFF" $game_map.events[$1.to_i].rotation_on if $2.upcase == "ON" end end end If I can't get this solved then I will disappointingly need to remove the rotational moving script, but I've grown very accustomed to it and would prefer not to. So if the direction variable in galv's script could be made to become compatible with victor's script, that'd be awesome... but in truth, I am completely stumped in how to do that. Thank you for any support, truly
  22. UncannyBoots

    Compatibility issue between movement scripts

    I don't know how I organized the scripts in that demo (I already deleted it from my pc) but I did it hastily. Did I put VE Engine above the bug fixes or something? (I just checked after redownloading the demo and yeah, that's what I did. It's not like that in my actual project tho) I put your fix into my project, and the same error continues to happen. I assume it fixed the error for you though? It might be my project so I'll redownload my demo and try it there. ...Yeah, it works in the sample project now (which is good!) but I must have yet another script in my project that is interfering with it. Sigh... I'll be looking for what it is. Thank you though! EDIT: I ended up deleting every script to see what it was that was conflicting with it, and it turns out... none of them. So it must be that I edited one of the default scripts and that is making it not work. I checkd Game_CharacterBase, Character, and Player, and none of them seem to have any changes to the direction variable. Do you have any idea what script it might be? No... it works. It was a very stupid error on my part. I fixed the typo a few posts back and I fixed it in the demo, but not in my game. Wow I'm dumb. Thank you very much for the fix, I'm so glad it works now
  23. UncannyBoots

    Compatibility issue between movement scripts

    When you input the first script call, the frame selected will be in the first character on the sprite sheet, the direction facing down. The second script call, when removing the rotational script, will then select a frame in the direction facing left (which, when using "Damage1" as an example, selects the blonde girl). When the rotation script is on, it doesn't select the left direction, it stays in the down direction. Updated the previous post, I made a typo that didn't demonstrate the script call properly. And here's a sample project showing the issue. Play once with Victor's rotational script, and play once without it. https://mega.nz/#!rEpiAALL!tv_uCDSxWBIBcwgAfF8drQk3RU1yHz-i_f5L2uCTjjU
  24. UncannyBoots

    Compatibility issue between movement scripts

    It's not an easy problem to explain but try using these script calls in a move route and see if the direction of the sprite changes. As far as I have tested, even in a new project (no other scripts) it doesn't change direction. "set_char("Damage1",1,2,2)" wait 60 frames "set_char("Damage1",1,1,4)" wait 60 frames
  25. How would I go about calling Common Event #8 during a map transfer? I already know where to place the code (it's in Game_Player), I just need to know what command I need to call. Thanks again 😭

    1. Show previous comments  4 more
    2. Kayzee

      Kayzee

      Yeah, that's pretty much exactly what I thought might happen. Though actually forgot that error was a thing and I kinda thought it would just bug out and not finish the common event right.

       

      And as for why eventing feels so much better than scripting? Well, first of all... can you really say that what you are doing is truly pure eventing if you are using a script call like "$game_player.transfer?" in a conditional branch? :P

       

      But more importantly, eventing is kinda like the dark side of the force. It flows easier for a lot of people and may help you get things done quicker, but eventually it takes it's toll. Of course we should all know by now that both the Jedi and the Sith were more then a little dumb. Just because a tool has problems doesn't mean you never use it, but it does mean that it isn't always the best tool for the job. :P

    3. UncannyBoots

      UncannyBoots

      " can you really say that what you are doing is truly pure eventing if you are using a script call like "$game_player.transfer?" in a conditional branch?"

      I get what you mean but I couldn't just put

      "if $game_player.transfer?

      <do this>

      end"

      in a script but I could easily do it in an event.

    4. Kayzee

      Kayzee

      I guess it's best to think of it like this: Events are handy for doing stuff yes. But scripting is more about making stuff. What I mean is, for events you are making a list of things you want to do when the event is run. Having lists of things you want to do is part of scripting too of course, but that's just part of what you are doing. A ton of scripting involves making different types of objects and telling the program what those objects are and how they work. In the context of an event a script call like "$game_player.transfer?" are like mysterious arcane words that invoke a higher power but lack any real meaning. In the context of scripting though we can understand and even change what those words actually mean.

       

      Once you get to an advanced enough level, I think scripting becomes so much more easy to deal with then events for a lot of things, just because without doing a lot of script calls you are pretty limited in how you can actually express your intentions. Would you rather make a complex card minigame thing as a large complicated event that uses a billion variables all over the place and probobly only half works, or would you rather be able to make it out of slightly more complex but still understandable parts? I mean using Arrays at the very least would be more helpful then a bunch of random variables. Arrays even already have a built-in way of shuffling them!

×
Top ArrowTop Arrow Highlighted