赞 | 2 |
VIP | 0 |
好人卡 | 20 |
积分 | 5 |
经验 | 26304 |
最后登录 | 2024-2-11 |
在线时间 | 487 小时 |
Lv2.观梦者
- 梦石
- 0
- 星屑
- 473
- 在线时间
- 487 小时
- 注册时间
- 2011-10-12
- 帖子
- 407
|
这个脚本是在菜单上显示一个小鼠标(每个菜单、每个物品都会显示)
如图所示:
有了脚本,你还需要一张图片素材(文件名“Menu_Cursor”;目录\Graphics\System)
注意:该脚本用在“截图存档”的界面时,会出现位置显示不正确的问题。
要去掉光标,可以把窗口素材的光标区域抹除就可以了。- #==============================================================================
- # +++ MOG - Animated Cursor (V1.2) +++
- #==============================================================================
- # By Moghunter
- # http://www.atelier-rgss.com/
- #==============================================================================
- # Adiciona um cursor animado nos menus de comandos.
- #==============================================================================
- # Será necessário ter a imagem
- #
- # Menu_Cursor.png
- #
- # gravado na pasta GRAPHICS/SYSTEM/
- #==============================================================================
- # Ativando a animação do cursor
- #
- # Basta criar uma imagem que tenha a largura com no minimo o dobro de altura da
- # imagem do cursor.
- #
- # EX
- # largura 32 pixel (width) altura 32 pixel = 1 frames de animação.(Sem animação)
- # largura 64 pixel (width) altura 32 pixel = 2 frames de animação.
- # largura 128 pixel (width) altura 32 pixel = 4 frames de animação.
- # largura 256 pixel (width) altura 32 pixel = 8 frames de animação
- # Etc...
- #
- # NOTA
- # Não há limite para quantidade de frames de animação, se não quiser a animação
- # basta criar uma imagem com a altura proporcional a largura da imagem.
- #
- #==============================================================================
- # ● Histórico (Version History)
- #==============================================================================
- # v 1.1 - Correção da posição do cursor na cena de batalha.
- #==============================================================================
- module MOG_MENU_CURSOR
- #Ativar animação do cursor se movimentando para os lados.
- SIDE_ANIMATION = true
- #Definição da posição do cursor. (Ajustes na posição)
- CURSOR_POSITION = [0,0]
- #Definição da velocidade da animação de frames.
- CURSOR_ANIMATION_SPEED = 6
- end
- #==============================================================================
- # ■ Game_System
- #==============================================================================
- class Game_System
-
- attr_accessor :menu_cursor_name
-
- #--------------------------------------------------------------------------
- # ● Initialize
- #--------------------------------------------------------------------------
- alias mog_menu_cursor_initialize initialize
- def initialize
- mog_menu_cursor_initialize
- @menu_cursor_name = "Menu_Cursor"
- end
-
- end
- #==============================================================================
- # ■ Game_Temp
- #==============================================================================
- class Game_Temp
-
- attr_accessor :menu_cursor
-
- #--------------------------------------------------------------------------
- # ● Initialize
- #--------------------------------------------------------------------------
- alias mog_cursor_sprite_initialize initialize
- def initialize
- mog_cursor_sprite_initialize
- @menu_cursor = [false,0,0,0]
- end
-
- end
- #==============================================================================
- # ■ Sprite Cursor
- #==============================================================================
- class Sprite_Cursor < Sprite
-
- include MOG_MENU_CURSOR
-
- #--------------------------------------------------------------------------
- # ● Initialize
- #--------------------------------------------------------------------------
- def initialize(viewport = nil , x , y)
- super(viewport)
- @cursor_image = Cache.system($game_system.menu_cursor_name.to_s)
- @frame_max = (@cursor_image.width / @cursor_image.height) rescue 1
- @frame_range = @frame_max > 0 ? (@cursor_image.width / @frame_max) : 1
- @frame = 0
- @ca_speed = CURSOR_ANIMATION_SPEED
- self.bitmap = Bitmap.new(@frame_range,@frame_range)
- self.z = 10000
- self.opacity = 0
- @cw = self.bitmap.width / 2
- @c_p = [-@cw + CURSOR_POSITION[0],CURSOR_POSITION[1]]
- [url=home.php?mod=space&uid=287812]@mx[/url] = [0,0,0]
- refresh_animation(true)
- update_move
- end
-
- #--------------------------------------------------------------------------
- # ● Dispose
- #--------------------------------------------------------------------------
- def dispose
- self.bitmap.dispose
- self.bitmap = nil
- @cursor_image.dispose
- super
- end
-
- #--------------------------------------------------------------------------
- # ● Update
- #--------------------------------------------------------------------------
- def update
- if cursor_visible?
- self.visible = true
- update_move
- refresh_animation(false)
- else
- self.visible = false
- end
- end
- #--------------------------------------------------------------------------
- # ● Initialize
- #--------------------------------------------------------------------------
- def refresh_animation(start = false)
- @ca_speed += 1
- return if @frame_max == 1 and !start
- return if @ca_speed < CURSOR_ANIMATION_SPEED
- @ca_speed = 0
- self.bitmap.clear
- scr_rect = Rect.new(@frame_range * @frame,0,@frame_range,@frame_range)
- self.bitmap.blt(0,0,@cursor_image, scr_rect)
- @frame += 1
- @frame = 0 if @frame >= @frame_max
- end
-
- #--------------------------------------------------------------------------
- # ● Cursor Visible?
- #--------------------------------------------------------------------------
- def cursor_visible?
- px = $game_temp.menu_cursor[2]
- py = $game_temp.menu_cursor[3]
- return false if $game_temp.menu_cursor[1] == 0
- return false if px < 0 or py < 0 or (px == 0 and py == 0)
- return true
- end
-
- #--------------------------------------------------------------------------
- # ● Update Move
- #--------------------------------------------------------------------------
- def update_move
- self.opacity += 25
- @new_pos = [$game_temp.menu_cursor[2],$game_temp.menu_cursor[3]]
- execute_animation_s
- execute_move(0,self.x, @new_pos[0] + @mx[1] + @c_p[0])
- execute_move(1,self.y, @new_pos[1] + @c_p[1])
- end
-
- #--------------------------------------------------------------------------
- # ● Execute Animation S
- #--------------------------------------------------------------------------
- def execute_animation_s
- return if !SIDE_ANIMATION
- @mx[2] += 1
- return if @mx[2] < 4
- @mx[2] = 0
- @mx[0] += 1
- case @mx[0]
- when 1..7; @mx[1] += 1
- when 8..14; @mx[1] -= 1
- else
- @mx[0] = 0
- @mx[1] = 0
- end
- end
-
- #--------------------------------------------------------------------------
- # ● Execute Move
- #--------------------------------------------------------------------------
- def execute_move(type,cp,np)
- sp = 5 + ((cp - np).abs / 5)
- if cp > np
- cp -= sp
- cp = np if cp < np
- elsif cp < np
- cp += sp
- cp = np if cp > np
- end
- self.x = cp if type == 0
- self.y = cp if type == 1
- end
-
- end
- #==============================================================================
- # ■ CURSOR_MENU SPRITE
- #==============================================================================
- module CURSOR_MENU_SPRITE
-
- #--------------------------------------------------------------------------
- # ● Cursor Sprite Enable
- #--------------------------------------------------------------------------
- def cursor_sprite_enable
- return if self.index == nil rescue return
- create_cursor_sprite
- update_cursor_sprite
- update_cusor_position
- if !self.active
- $game_temp.menu_cursor[1] -= 1 if $game_temp.menu_cursor[1] > 0
- end
- end
-
- #--------------------------------------------------------------------------
- # ● Create Cursor Sprite
- #--------------------------------------------------------------------------
- def create_cursor_sprite
- return if @cursor != nil
- return if $game_temp.menu_cursor[0]
- $game_temp.menu_cursor[0] = true
- reset_cursor_position
- @cursor = Sprite_Cursor.new(nil,x,y)
- @cursor_name = $game_system.menu_cursor_name
- end
-
- #--------------------------------------------------------------------------
- # ● Dispose Cursor Sprite
- #--------------------------------------------------------------------------
- def dispose_cursor_sprite
- return if @cursor == nil
- $game_temp.menu_cursor[0] = false
- reset_cursor_position
- @cursor.dispose
- @cursor = nil
- end
- #--------------------------------------------------------------------------
- # ● Reset Cursor Position
- #--------------------------------------------------------------------------
- def reset_cursor_position
- $game_temp.menu_cursor[1] = 0
- $game_temp.menu_cursor[2] = -32
- $game_temp.menu_cursor[3] = -32
- end
-
- #--------------------------------------------------------------------------
- # ● Update Cursor
- #--------------------------------------------------------------------------
- def update_cursor_sprite
- return if @cursor == nil
- @cursor.update
- refresh_cursor_sprite if @cursor_name != $game_system.menu_cursor_name
- end
-
- #--------------------------------------------------------------------------
- # ● Refresh Cursor Sprite
- #--------------------------------------------------------------------------
- def refresh_cursor_sprite
- @cursor_name = $game_system.menu_cursor_name
- dispose_cursor_sprite
- create_cursor_sprite
- end
-
- #--------------------------------------------------------------------------
- # ● Update Cursor Position
- #--------------------------------------------------------------------------
- def update_cusor_position
- return if !can_update_cursor_position?
- x_v = [0,0]
- if SceneManager.scene_is?(Scene_Battle)
- if self.viewport != nil
- x_v = [-self.viewport.ox, self.viewport.rect.y]
- end
- end
- x_e = (self.cursor_rect.x + self.x) - self.ox
- $game_temp.menu_cursor[2] = x_e + x_v[0]
- y_e = (self.cursor_rect.y + self.y + self.cursor_rect.height / 2) - self.oy
- $game_temp.menu_cursor[3] = y_e + x_v[1]
- $game_temp.menu_cursor[1] = 13
- end
-
- #--------------------------------------------------------------------------
- # ● Can Update Cursor
- #--------------------------------------------------------------------------
- def can_update_cursor_position?
- return false if !self.active
- return false if self.index < 0
- return false if !self.visible
- return true
- end
- end
- #==============================================================================
- # ■ Window Base
- #==============================================================================
- class Window_Base < Window
- include CURSOR_MENU_SPRITE
-
- #--------------------------------------------------------------------------
- # ● Dispose
- #--------------------------------------------------------------------------
- alias mog_menu_cursor_base_dispose dispose
- def dispose
- mog_menu_cursor_base_dispose
- dispose_cursor_sprite
- end
- #--------------------------------------------------------------------------
- # ● Update
- #--------------------------------------------------------------------------
- alias mog_cursor_update update
- def update
- mog_cursor_update
- cursor_sprite_enable
- end
-
- end
- $mog_rgss3_animated_cursor = true
复制代码 |
评分
-
查看全部评分
|