Jump to content


  • Content Count

  • Joined

  • Last visited

  • Days Won


UncannyBoots last won the day on June 23

UncannyBoots had the most liked content!

About UncannyBoots

  • Rank
    Advanced Member

Profile Information

  • Gender

RPG Maker Information

  • RM Skill -
    Game Developer

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. 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


      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


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

    4. PhoenixSoul


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

  2. 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


      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


      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


      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.

  3. 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

  4. 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
  5. 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
  6. 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
  7. 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
  8. 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
  9. 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


      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


      " 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>


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

    4. 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!

  10. UncannyBoots

    Game breaking common event problem

    I don't really know in which place to put this topic. It involves eventing which is kind of programming so I put it in this subforum. I'm having many many issues getting a motorcycle element in my game to work properly, but this is by far the biggest. I'll do a quick rundown of how the mechanic works, and what the issue is: In a parallel process common event, conditional branch checks if button is pressed. If it is, it will call another common event that changes player sprite, speed, and many other things and voila, he's riding a motorbike. It's like the Key Item button from Pokemon that allows the player to ride the bike with a press of a button. Press the button again and the opposite happens; the sprite turns back to the default player sprite, speed goes back to normal, etc. Now here's where the game breaking issue comes in. When walking onto a transfer event, right as the player moves onto that event, if you press the bike button immediately, the game transfers to the next screen and the common event is cut short. This is not a hard glitch to pull off, either. The switch that says the bike is on/off changes, but the graphic doesn't, the speed doesn't, and the other things don't change (for example, passability. You can pass over certain tiles on the bike that you cannot when walking. Player can't dash off of the bike is another thing). So the player will still be on the bike, will have a fast speed, but then cannot dash as if he is off of the bike, and can go over tiles that the bike isn't supposed to be able to ride over, because the bike switch is off, so the game thinks he's not on the bike. What truly baffles me, is that I have it so the switch turns on/off at the end of the conditional branch, while I have the dashing on/off near the middle of the command list, and everything else is either before the dash on/off or before the switch on/off. So evidently, common events don't even go through the command list in order? I haven't a single clue. Long story short, because this is complicated but this gets to the heart of the problem: How would I make it so that when pressing a button and walking onto a transfer event at the same time, the common event that gets called with that button press won't get stopped halfway through its processing?
  11. How do you check which direction the player is facing in RGSS?

    1. Show previous comments  6 more
    2. PhoenixSoul


      $game_player.direction == 8

    3. UncannyBoots


      Yep, that works! Thank you!

    4. PhoenixSoul
  12. UncannyBoots

    Galv Camera Slide issue

    I'll give it a try, I'll report back here when I finish Edit: It didn't work :/ This is the code I currently have, starting with the line with "cw=" in the script cw = (Graphics.width / 2) if !$game_switches[169] ch = (Graphics.height / 2) else if Input.press?(:A) && Input.press?(:UP) && $game_player.moving? && !Input.press?(:RIGHT) && !Input.press?(:LEFT) ch = (Graphics.height / 2 + 120) elsif Input.press?(:A) && Input.press?(:DOWN) && $game_player.moving? && !Input.press?(:RIGHT) && !Input.press?(:LEFT) ch = (Graphics.height / 2 - 100) else ch = (Graphics.height / 2) end end If you want to test it out, make a common event with a cond branch where if switch 169 is on, character speed is 5. That will match the effect I have when player is on the bike and when you press shift, the player will speed up to 6. The resolution of my game is also weird, it's 512x288, a 16:9 aspect ratio, so that's why when moving up or down at a speed of 6, the player goes off of the screen. I have customized all of my menus to fit this resolution and I like how it makes my game have a more pixel art look so I don't want to change the resolution as a solution to this problem Another edit: I just noticed that when going left then turning up and keeping your finger on the left key (or right), the camera change doesn't activate. I put !input.press(left)/(right) there in order to prevent the opposite from happening -- from keeping the up key active while moving left/right. So there's just all sorts of things going wrong here. Is there perhaps a command like $game_player.moving? that checks if the player is moving up? That would omit the directional key checks entirely while maintaining the same effect. (Fun fact: that's actually what I originally asked in this topic before editing the original post because I thought it'd be more convenient to just use a key check. I'm stupid like that) Perhaps $game_player.moving? && [check if player facing up]? ^Crossed out the above because I think it'll be an easy issue to fix. I want to focus more on the screen stuttering/lag issue in this thread. Tbh "lag" isn't the right word. It is more like screen stuttering. When you remove 'game_player.moving?" the effect is very smooth. Add that line in and it isn't smooth. I don't know why that is and it's jarring because the camera will be smooth when going left/right but not up/down.
  13. UncannyBoots

    Galv Camera Slide issue

    I'm actually having another issue. I wrote "if Input.press?(:A) && Input.press?(:UP) && $game_player.moving?" and the screen stutters and lags a bunch. Removing game_player.moving will remove the lag, but the moving check is critical because if the player isn't moving, then the camera should not move when an input is pressed. How would I make it so that the script doesn't constantly refresh and check if the player is moving every frame? I think that's what the problem is
  14. UncannyBoots

    Galv Camera Slide issue

    Thank you! I knew about those commands in the back of my mind but for some reason I couldn't remember them until reading your post. I've got bad memory I guess
  15. UncannyBoots

    Galv Camera Slide issue

    I'm back again lol. As usual I already have a gist of what needs to be done but I don't know how to actually write code in RGSS3. Unlike my last problem though I do believe this one will be a lot easier. So I'm using Galv's Cam Slide script. When riding a motorcycle in my game, you have the option to speed up. It goes very fast and when going up or down, the player outruns the screen cam slide, going off screen. The solution I'm thinking of is to change "ch = (Graphics.height / 2)" to be something like "ch = (Graphics.height / 2 + 100)" when the player is holding the up key and the shift key, and "ch = (Graphics.height / 2 - 100)" when the player is holding the down key and the shift key. How would you write that? Example: if [up key is pressed] && [shift key is pressed] ch = (Graphics.height / 2 + 100) elsif [down key is pressed] && [shift key is pressed] ch = (Graphics.height / 2 - 100) else ch = (Graphics.height / 2) end Replace the stuff inside "[ ]" with the actual script code. I don't know if you have to define button directions or not though Here's the script: #------------------------------------------------------------------------------# # Galv's Cam Slide Control #------------------------------------------------------------------------------# # For: RPGMAKER VX ACE # Version 1.0 #------------------------------------------------------------------------------# # 2015-10-09 - Version 1.0 - release #------------------------------------------------------------------------------# # This script gives the camera a slide effect and also more control of where # the camera is focused. You can set it to follow an event or scroll to an x,y # position on the map. #------------------------------------------------------------------------------- # SCRIPT CALL #------------------------------------------------------------------------------- # $game_map.camslide(status) # status can be true or false (default true) # # # when false - cam reverts to default, # # does not slide and 'scroll map' event works # # # when true - slide effect and targeting # # works but 'scroll map' does not. # # $game_map.camtarget(x,s) # x is event ID # # s is speed of camera scroll (800 default) # # the greater the speed the slower the scroll # # sets camslide to true automatically. # # $game_map.camtarget_xy(x,y,s) # x,y are the x,y co-ordinates on the map. # # s is speed (same as above) # # sets camslide to true automatically. # # $game_map.cam_default # sets camtarget back to player # # sets camslide to true automatically. #------------------------------------------------------------------------------- class Game_Player < Game_Character alias galv_scroll_gp_gc_update_scroll update_scroll def update_scroll(last_real_x, last_real_y) return if !$game_map.free_cam galv_scroll_gp_gc_update_scroll(last_real_x, last_real_y) end end class Game_Map attr_accessor :free_cam attr_accessor :camtarget alias galv_scroll_gm_initialize initialize def initialize galv_scroll_gm_initialize cam_default end def camslide(status) @free_cam = !status end alias galv_scroll_gm_setup setup def setup(map_id) cam_default galv_scroll_gm_setup(map_id) end def camtarget(x, spd = 800) @camtarget = @events[x] @free_cam = false @camspeed = spd end def camtarget_xy(x,y,spd = 800) @camtarget = Camxytarget.new @camtarget.camxy(x,y) @free_cam = false @camspeed = spd end def cam_default(speed = 800) @camtarget = $game_player @free_cam = false @camspeed = speed end alias galv_scroll_gm_update_scroll update_scroll def update_scroll return galv_scroll_gm_update_scroll if @free_cam @scroll_rest = 0 cw = (Graphics.width / 2) ch = (Graphics.height / 2) sx = 0.016 + (@camtarget.screen_x - cw).abs / @camspeed sy = 0.016 + (@camtarget.screen_y - ch).abs / @camspeed y_pos = @camtarget.screen_y.to_i x_pos = @camtarget.screen_x.to_i if y_pos < ch $game_map.scroll_up(sy) elsif y_pos > ch $game_map.scroll_down(sy) end if x_pos < cw $game_map.scroll_left(sx) elsif x_pos > cw $game_map.scroll_right(sx) end end end class Camxytarget < Game_CharacterBase def camxy(x,y) @x = x @y = y @real_x = @x @real_y = @y end end