RMRK is retiring.
Registration is disabled. The site will remain online, but eventually become a read-only archive. More information.

RMRK.net has nothing to do with Blockchains, Cryptocurrency or NFTs. We have been around since the early 2000s, but there is a new group using the RMRK name that deals with those things. We have nothing to do with them.
NFTs are a scam, and if somebody is trying to persuade you to buy or invest in crypto/blockchain/NFT content, please turn them down and save your money. See this video for more information.
[VXA][REQUEST] Spin Command

0 Members and 1 Guest are viewing this topic.

**
Rep: +0/-0Level 82
Name: ziifee's Spin Command
Description: Within battles, changes the usual Attack/Skill/Guard/Item vertical menu into a spinning menu. This could either be a conversion of ziifee's VX script or a complete remake that simply reproduces the appearance of the menu turned into a spinning ring.

Original VX script:

Spoiler for:
# * ziifee's Spin Command (http://neomemo.web.fc2.com/) # Changes the Party and Actor Command Windows in battle. # ? Spin40.png is required in Graphics/System #============================================================================== # ? Ziifee #============================================================================== module Zii # ? Spin Command/Icon Index Number FIGHT = 132 # Fight ESCAPE = 143 # Escape ATTACK = 1 # Attack (Default) GUARD = 52 # Guard SKILL = 128 # Skill ITEM = 144 # Item # ? Spin Command/Direction of Rotation ( "normal" or "reverse" ) # Determines how Spin Command rotates according to left/right key press. TURN = "normal" # ? Face Graphics (true: Use battle face graphic / false: don't use faces) STATUS_FACE = true # ? Actor Names (true: Show actor names / false: Don't show ) STATUS_LINE = true # ? Actor Name Text Size ( VX default size: 20 ) LINE_SIZE = 14 #-------------------------------------------------------------------------- # ? ???? ??? #-------------------------------------------------------------------------- def self.turn_normal? return false if TURN == "reverse" return true if TURN == "normal" return true end #-------------------------------------------------------------------------- # ? ???????? [???????] ??? #-------------------------------------------------------------------------- def self.battle_face? return true if STATUS_FACE return false end #-------------------------------------------------------------------------- # ? ???????????? [??] ??? #-------------------------------------------------------------------------- def self.line_name? return true if STATUS_LINE return false end end #============================================================================== # ? Window_Base #============================================================================== class Window_Base #-------------------------------------------------------------------------- # ? ?????????? ? # opacity : ???? #-------------------------------------------------------------------------- def draw_face(face_name, face_index, x, y, size = 96, opacity = 255) bitmap = Cache.face(face_name) rect = Rect.new(0, 0, 0, 0) rect.x = face_index % 4 * 96 + (96 - size) / 2 rect.y = face_index / 4 * 96 + (96 - size) / 2 rect.width = size rect.height = size self.contents.blt(x, y, bitmap, rect, opacity) bitmap.dispose end #-------------------------------------------------------------------------- # ? ?????????????? ? # opacity : ???? #-------------------------------------------------------------------------- def draw_actor_face(actor, x, y, size = 96, opacity = 255) draw_face(actor.face_name, actor.face_index, x, y, size, opacity) end end #============================================================================== # ? Window_SpinCommand #------------------------------------------------------------------------------ # ????????????????????? #============================================================================== class Window_SpinCommand < Window_Base #-------------------------------------------------------------------------- # ? ?????????? #-------------------------------------------------------------------------- attr_reader :index # ?????? attr_reader :help_window # ???????? #-------------------------------------------------------------------------- # ? ????????? # cx / cy : ??? X?? / Y?? # commands : ?????? (?? ? [name, kind, pull, enabled?]) # setting : ?????? ("R"=>?? "S"=>?? "G"=>?? "L"=>??) #-------------------------------------------------------------------------- def initialize(cx, cy, commands, setting = {}) @radius = setting.has_key?("R") ? setting["R"] : 40 # ???? @speed = setting.has_key?("S") ? setting["S"] : 36 # ???? @spin_back = setting.has_key?("G") ? setting["G"] : "" # ???? @spin_line = setting.has_key?("L") ? setting["L"] : nil # ???? x, y = cx - @radius - 28, cy - @radius - 28 width = height = @radius * 2 + 56 super(x, y, width, height) self.opacity = 0 @index = 0 @commands = commands # ???? @spin_right = true @spin_count = 0 update_cursor end #-------------------------------------------------------------------------- # ? ?????????? (???? ???) # i : ?????? # cx : ?? ???? X?? # cy : ?? ???? Y?? #-------------------------------------------------------------------------- def draw_spin_graphic(i, cx, cy) case command_kind(i) when "icon" draw_icon(command_pull(i), cx - 12, cy - 12, command_enabled?(i)) end end #-------------------------------------------------------------------------- # ? ?????? ????? #-------------------------------------------------------------------------- def refresh set_spin end #-------------------------------------------------------------------------- # ? ????? ????? #-------------------------------------------------------------------------- def draw_item(index, enabled = true) @commands[index][3] = enabled set_spin end #-------------------------------------------------------------------------- # ? ????????????? #-------------------------------------------------------------------------- def command_name(index = @index) return "" if index < 0 name = @commands[index][0] return name != nil ? name : "" end #-------------------------------------------------------------------------- # ? ?????????? #-------------------------------------------------------------------------- def command_kind(index) result = @commands[index][1] return result != nil ? result : "" end #-------------------------------------------------------------------------- # ? ??????? ??? #-------------------------------------------------------------------------- def command_pull(index) result = @commands[index][2] return result != nil ? result : "" end #-------------------------------------------------------------------------- # ? ????????????? #-------------------------------------------------------------------------- def command_enabled?(index) result = @commands[index][3] return result != nil ? result : true end #-------------------------------------------------------------------------- # ? ?????? index ????? #-------------------------------------------------------------------------- def set_index(name) n = -1 for i in 0...@commands.size n = i if @commands[0] == name end @index = n if n >= 0 update_cursor call_update_help set_spin end #-------------------------------------------------------------------------- # ? ????????? # index : ????????? #-------------------------------------------------------------------------- def index=(index) @index = index update_cursor call_update_help set_spin end #-------------------------------------------------------------------------- # ? ???X????? #-------------------------------------------------------------------------- def center_x return contents.width / 2 end #-------------------------------------------------------------------------- # ? ???Y????? #-------------------------------------------------------------------------- def center_y return contents.height / 2 end #-------------------------------------------------------------------------- # ? ?????? #-------------------------------------------------------------------------- def item_max return @commands.size end #-------------------------------------------------------------------------- # ? ????? (??? ??) #-------------------------------------------------------------------------- def set_background return if @spin_back == "" bitmap = Cache.system(@spin_back) rect = Rect.new(0, 0, bitmap.width, bitmap.height) self.contents.blt(12, 12, bitmap, rect) end #-------------------------------------------------------------------------- # ? ????? (??? ??) #-------------------------------------------------------------------------- def set_text return if @spin_line == nil y = center_y - WLH / 2 + @spin_line self.contents.draw_text(center_x - 48, y, 96, WLH, command_name, 1) end #-------------------------------------------------------------------------- # ? ????????????????? #-------------------------------------------------------------------------- def angle_size return (Math::PI * 2 / item_max) end #-------------------------------------------------------------------------- # ? ??????????????? ????? #-------------------------------------------------------------------------- def set_spin_count @spin_count = angle_size * 360 / @speed set_spin(true) end #-------------------------------------------------------------------------- # ? ????? ??? # spin : ????? (true ?????) #-------------------------------------------------------------------------- def set_spin(spin = false) self.contents.clear set_background angle = spin ? @speed * @spin_count / 360 : 0 angle = @spin_right ? angle : -angle for i in 0...item_max n = (i - @index) * angle_size + angle cx = @radius * Math.sin(n) + center_x cy = - @radius * Math.cos(n) + center_y draw_spin_graphic(i, cx, cy) end set_text end #-------------------------------------------------------------------------- # ? ?????? #-------------------------------------------------------------------------- def update super update_cursor if @spin_count > 0 @spin_count -= 1 set_spin(@spin_count >= 1) return end update_command end #-------------------------------------------------------------------------- # ? ??????????? #-------------------------------------------------------------------------- def command_movable? return false if @spin_count > 0 return false if (not visible or not active) return false if (index < 0 or index > item_max or item_max == 0) return false if (@opening or @closing) return true end #-------------------------------------------------------------------------- # ? ????????? #-------------------------------------------------------------------------- def command_right @index = (@index + 1) % item_max @spin_right = true set_spin_count end #-------------------------------------------------------------------------- # ? ????????? #-------------------------------------------------------------------------- def command_left @index = (@index - 1 + item_max) % item_max @spin_right = false set_spin_count end #-------------------------------------------------------------------------- # ? ????????? #-------------------------------------------------------------------------- def update_command if command_movable? if Input.press?(Input::RIGHT) Sound.play_cursor Zii.turn_normal? ? command_right : command_left end if Input.press?(Input::LEFT) Sound.play_cursor Zii.turn_normal? ? command_left : command_right end end call_update_help end #-------------------------------------------------------------------------- # ? ??????? #-------------------------------------------------------------------------- def update_cursor if @index < 0 self.cursor_rect.empty else rect = Rect.new(0, 0, 24, 24) rect.x = center_x - rect.width / 2 rect.y = center_y - rect.height / 2 - @radius self.cursor_rect = rect end end #-------------------------------------------------------------------------- # ? ??????????? # help_window : ??????????? #-------------------------------------------------------------------------- def help_window=(help_window) @help_window = help_window call_update_help end #-------------------------------------------------------------------------- # ? ??????????????????? #-------------------------------------------------------------------------- def call_update_help if self.active and @help_window != nil update_help end end #-------------------------------------------------------------------------- # ? ??????????? (???????????) #-------------------------------------------------------------------------- def update_help end end #============================================================================== # ? Window_LineHelp #------------------------------------------------------------------------------ # ?????????????????????????????????????? #============================================================================== class Window_LineHelp < Window_Base #-------------------------------------------------------------------------- # ? ????????? #-------------------------------------------------------------------------- def initialize super(-16, 0, 576, WLH + 32) self.opacity = 0 end #-------------------------------------------------------------------------- # ? ?????? # text : ????????????? # align : ??????? (0..????1..?????2..???) #-------------------------------------------------------------------------- def set_text(text, align = 0) if text != @text or align != @align self.contents.clear back_color = Color.new(0, 0, 0, 80) self.contents.fill_rect(0, y = 12, contents.width, WLH - y, back_color) self.contents.font.color = normal_color self.contents.draw_text(20, 0, self.width - 72, WLH, text, align) @text = text @align = align end end end #============================================================================== # ? Window_PartyCommand #============================================================================== class Window_PartyCommand < Window_SpinCommand #-------------------------------------------------------------------------- # ? ????????? #-------------------------------------------------------------------------- def initialize s1 = [Vocab::fight, "icon", Zii::FIGHT, true] s2 = [Vocab::escape, "icon", Zii::ESCAPE, $game_troop.can_escape] setting = {"R"=>40, "S"=>52, "G"=>"Spin40", "L"=>-12} super(72, 356, [s1, s2], setting) self.active = false set_spin end end #============================================================================== # ? Window_ActorCommand #============================================================================== class Window_ActorCommand < Window_SpinCommand #-------------------------------------------------------------------------- # ? ????????? #-------------------------------------------------------------------------- def initialize s1 = [Vocab::attack, "icon", Zii::ATTACK, true] s2 = [Vocab::skill, "icon", Zii::SKILL, true] s3 = [Vocab::guard, "icon", Zii::GUARD, true] s4 = [Vocab::item, "icon", Zii::ITEM, true] setting = {"R"=>40, "S"=>52, "G"=>"Spin40", "L"=>-12} super(72, 356, [s1, s2, s3, s4], setting) self.active = false set_spin end #-------------------------------------------------------------------------- # ? ?????? # actor : ???? #-------------------------------------------------------------------------- def setup(actor) @commands[0][2] = Zii::ATTACK @commands[1][0] = Vocab::skill if actor.weapons[0] != nil n = actor.weapons[0].icon_index @commands[0][2] = n if n > 0 end @commands[1][0] = actor.class.skill_name if actor.class.skill_name_valid self.index = 0 set_spin end end #============================================================================== # ? Window_BattleStatus #============================================================================== class Window_BattleStatus < Window_Selectable #-------------------------------------------------------------------------- # ? ????????? ? #-------------------------------------------------------------------------- def initialize super(128, 288, 416, 128) @column_max = 4 refresh self.active = false self.opacity = 0 end #-------------------------------------------------------------------------- # ? ??????? ????? #-------------------------------------------------------------------------- def draw_neomemo7_back @neomemo7_clear = false for index in 0...@item_max x = index * 96 self.contents.clear_rect(x + 72, WLH * 3, 24, 24) next unless Zii.battle_face? actor = $game_party.members[index] next if actor.hp <= 0 bitmap = Cache.face(actor.face_name) rect = Rect.new(0, 0, 22, 22) rect.x = actor.face_index % 4 * 96 + 72 rect.y = actor.face_index / 4 * 96 + 72 self.contents.blt(x + 72, WLH * 3, bitmap, rect, 192) end end #-------------------------------------------------------------------------- # ? ????? ? #-------------------------------------------------------------------------- def draw_item(index) x = index * 96 rect = Rect.new(x, 0, 96, 96) self.contents.clear_rect(rect) self.contents.font.color = normal_color actor = $game_party.members[index] draw_actor_face(actor, x + 2, 2, 92, 192) if actor.hp > 0 and Zii.battle_face? draw_actor_state(actor, x + 72, WLH * 3) if Zii.line_name? self.contents.font.color = hp_color(actor) size = Zii::LINE_SIZE self.contents.font.size = size self.contents.draw_text(x, WLH * 1 + 20 - size, 80, WLH, actor.name) self.contents.font.size = 20 end draw_actor_hp(actor, x, WLH * 2, 80) draw_actor_mp(actor, x, WLH * 3, 70) end #-------------------------------------------------------------------------- # ? ??????? #-------------------------------------------------------------------------- def update_cursor if @index < 0 # ??????? 0 ????? self.cursor_rect.empty # ?????????? else # ??????? 0 ????? rect = Rect.new(index * 96, 0, 96, 96) self.cursor_rect = rect # ?????????? end end end #============================================================================== # ? Scene_Battle #------------------------------------------------------------------------------ # ?????????????????? #============================================================================== class Scene_Battle < Scene_Base #-------------------------------------------------------------------------- # ? ????????????? #-------------------------------------------------------------------------- alias :neomemo13_create_info_viewport :create_info_viewport def create_info_viewport neomemo13_create_info_viewport @info_viewport.rect.set(0, 0, 544, 416) @status_window.x = 128 @actor_command_window.x = 4 end #-------------------------------------------------------------------------- # ? ????????????? #-------------------------------------------------------------------------- alias :neomemo13_update_info_viewport :update_info_viewport def update_info_viewport ox = @info_viewport.ox neomemo13_update_info_viewport @info_viewport.ox = ox end #-------------------------------------------------------------------------- # ? ????????????? #-------------------------------------------------------------------------- alias :neomemo13_start_party_command_selection :start_party_command_selection def start_party_command_selection if $game_temp.in_battle @party_command_window.visible = true @actor_command_window.visible = false end neomemo13_start_party_command_selection end #-------------------------------------------------------------------------- # ? ????????????? #-------------------------------------------------------------------------- alias :neomemo13_update_party_command_selection :update_party_command_selection def update_party_command_selection return unless @party_command_window.command_movable? neomemo13_update_party_command_selection end #-------------------------------------------------------------------------- # ? ????????????? #-------------------------------------------------------------------------- alias :neomemo13_start_actor_command_selection :start_actor_command_selection def start_actor_command_selection neomemo13_start_actor_command_selection @party_command_window.visible = false @actor_command_window.visible = true end #-------------------------------------------------------------------------- # ? ????????????? #-------------------------------------------------------------------------- alias :neomemo13_update_actor_command_selection :update_actor_command_selection def update_actor_command_selection return unless @actor_command_window.command_movable? neomemo13_update_actor_command_selection end #-------------------------------------------------------------------------- # ? ??????????? #-------------------------------------------------------------------------- alias :neomemo13_start_target_enemy_selection :start_target_enemy_selection def start_target_enemy_selection x = @info_viewport.rect.x ox = @info_viewport.ox neomemo13_start_target_enemy_selection @info_viewport.rect.x = x @info_viewport.ox = ox @target_enemy_window.x = 544 - @target_enemy_window.width @target_enemy_window.y = 288 @info_viewport.rect.width -= @target_enemy_window.width end #-------------------------------------------------------------------------- # ? ??????????? #-------------------------------------------------------------------------- alias :neomemo13_end_target_enemy_selection :end_target_enemy_selection def end_target_enemy_selection x = @info_viewport.rect.x ox = @info_viewport.ox @info_viewport.rect.width += @target_enemy_window.width neomemo13_end_target_enemy_selection @info_viewport.rect.x = x @info_viewport.ox = ox end #-------------------------------------------------------------------------- # ? ????????????? #-------------------------------------------------------------------------- alias :neomemo13_start_target_actor_selection :start_target_actor_selection def start_target_actor_selection x = @info_viewport.rect.x ox = @info_viewport.ox neomemo13_start_target_actor_selection @target_actor_window.y = 288 @info_viewport.rect.x = x @info_viewport.ox = ox @info_viewport.rect.width -= @target_actor_window.width end #-------------------------------------------------------------------------- # ? ??????????? #-------------------------------------------------------------------------- alias :neomemo13_end_target_actor_selection :end_target_actor_selection def end_target_actor_selection x = @info_viewport.rect.x ox = @info_viewport.ox @info_viewport.rect.width += @target_actor_window.width neomemo13_end_target_actor_selection @info_viewport.r
ect.x = x @info_viewport.ox = ox end end

It requires this image to work:



This is what it looks like in action:


I'd really, really appreciate this conversion! Thanks for reading! :D

**
Rep:
Level 71
Super Maker
Just to let you know this has been done now.
The Maker of Battle Dungeons!!


Spoiler for Big ass signature, bro:
AbsoluteIce I finally say your Sig.

Get by 20 attack Dogs...seriously. I got 20 attack Dogs.

*Your signature was raped changed for taking up too much room.
~Sincerely, a staff member. That is all you need to know. That, and I am no one to be trifled with.

**
Rep: +0/-0Level 82
Just to let you know this has been done now.

Oh?! I didn't see it in the Script Index. However, I found a broken version in Japanese that a friend of mine fixed for me, but I would like to take a look at this other version as well for the heck of it, where is it? :D