- 注册时间
- 2007-10-4
- 最后登录
- 2019-5-19
③业余
脚本万年废柴
- 积分
- 258
|
腿神大还在么……柳啊发了一贴无回应
无耻的加入了高亮词……
脚本比较白……最好能举一个相关例子
一、怎样将图片的层级调整到角色层之下、地图层之上
又需要将3张图显示在所有东西的最上面,请问应该修改哪些位置?
二、需要的三张特殊图有两张用到了鼠标响应图片,应该还可以继续调用公共事件吧?
两张图片的显示需要一个开关控制……
第三张是一个通过连续播放图片来形成动画效果的,需要显示在最上层【比前两张图还要高的层级】
三、使用了鼠标系统,怎样禁止鼠标的自动寻路?全部改成由上面的两张图片控制
或者能否推荐一个完全能兼容鼠标响应图片的鼠标脚本【不含有寻路的,只用鼠标】?使用DLL没有关系……
使用的鼠标系统如下:
从AVG系统里面提取的- #==============================================================================
- # 本脚本来自[url]www.66RPG.com[/url],使用和转载请保留此信息
- #==============================================================================
- #=================以下两个用来调整战斗时的手感问题,可以自己试试。
- $敌人选框扩大 = 20
- $角色选框扩大 = 30
- #==============================================================================
- # API调用
- #==============================================================================
- $ShowCursor = Win32API.new("user32", "ShowCursor", 'i', 'l')
- $GetCursorPos = Win32API.new("user32", "GetCursorPos", 'p', 'i')
- $ScreenToClient = Win32API.new("user32", "ScreenToClient", 'ip', 'i')
- $GetActiveWindow = Win32API.new("user32", "GetActiveWindow", nil, 'l')
- $Window_HWND = $GetActiveWindow.call
- $GetKeyState = Win32API.new("user32", "GetKeyState", 'i', 'i')
- #$FindWindow = Win32API.new("user32", "FindWindow", 'pp', 'i')
- #$HookStart  = Win32API.new("mouse_hook.dll", "HookStart", 'i', nil)
- #$HookEnd  = Win32API.new("mouse_hook.dll", "HookEnd", nil, nil)
- #$GetMouseStatus  = Win32API.new("mouse_hook.dll", "GetMouseStatus", 'i', 'i')
- #$Window_HWND = $FindWindow.call(nil, 'mousetry')
- module Mouse  
-   LEFT = 0x01
-   RIGHT = 0x02
-   def self.init(sprite = nil)
- #   $HookStart.call($Window_HWND)
-     $ShowCursor.call(0)
-     
-     @show_cursor = false
-     
-     @mouse_sprite = Sprite.new
-     @mouse_sprite.z = 99999
-     @mouse_sprite.bitmap = Bitmap.new('Graphics/Icons/cursor.png')
-     #@mouse_sprite.bitmap.fill_rect(Rect.new(0, 0, 32, 32), Color.new(0, 0, 0))
-     #AVG
-     @mouse_sprite.visible = true
-     
-     @left_press = false
-     @right_press = false
-     @left_trigger = false
-     @right_trigger = false
-     @left_repeat = false
-     @right_repeat = false
-     @click_lock = false
-     
-     update
-   end
-   def self.exit
-     @mouse_sprite.bitmap.dispose
-     @mouse_sprite.dispose
-     @show_cursor = true
- #    $HookEnd.call
-     $ShowCursor.call(1)
-   end
-   def self.mouse_debug
-     return @mouse_debug.bitmap
-   end
-   def self.update
-     
-     left_down = $GetKeyState.call(0x01)
-     right_down = $GetKeyState.call(0x02)
-     
-     @click_lock = false
-     mouse_x, mouse_y = self.get_mouse_pos
-     if @mouse_sprite != nil
-       @mouse_sprite.x = mouse_x
-       @mouse_sprite.y = mouse_y
-     end
-     if left_down[7] == 1
-       @left_repeat = (not @left_repeat)
-       @left_trigger = (not @left_press)
-       @left_press = true
-     else
-       @left_press = false
-       @left_trigger = false
-       @left_repeat = false
-     end
-     if right_down[7] == 1
-       @right_repeat = (not @right_repeat)
-       @right_trigger = (not @right_press)
-       @right_press = true
-     else
-       @right_press = false
-       @right_trigger = false
-       @right_repeat = false
-     end
-     #AVG結局鼠標暫時不見
-     begin
-     if $game_switches[10] == true
-       @mouse_sprite.visible = false
-     else
-       @mouse_sprite.visible = true
-     end
-   rescue
-     @mouse_sprite.visible = true
-     end
-   end
-   def self.get_mouse_pos
-     point_var = [0, 0].pack('ll')
-     if $GetCursorPos.call(point_var) != 0
-       if $ScreenToClient.call($Window_HWND, point_var) != 0
-         x, y = point_var.unpack('ll')
-         if (x < 0) or (x > 10000) then x = 0 end
-         if (y < 0) or (y > 10000) then y = 0 end
-         if x > 640 then x = 640 end
-         if y > 480 then y = 480 end
-         return x, y
-       else
-         return 0, 0
-       end
-     else
-       return 0, 0
-     end
-   end
-   def self.press?(mouse_code)
-     if mouse_code == LEFT
-       if @click_lock
-         return false
-       else
-         return @left_press
-       end
-     elsif mouse_code == RIGHT
-       return @right_press
-     else
-       return false
-     end
-   end
-   def self.trigger?(mouse_code)
-     if mouse_code == LEFT
-       if @click_lock
-         return false
-       else
-         return @left_trigger
-       end
-     elsif mouse_code == RIGHT
-       return @right_trigger
-     else
-       return false
-     end
-   end
-   def self.repeat?(mouse_code)
-     if mouse_code == LEFT
-       if @click_lock
-         return false
-       else
-         return @left_repeat
-       end
-     elsif mouse_code == RIGHT
-       return @right_repeat
-     else
-       return false
-     end
-   end
-   def self.click_lock?
-     return @click_lock
-   end
-   def self.click_lock
-     @click_lock = true
-   end
-   def self.click_unlock
-     @click_lock = false
-   end
- end
- module Input
-   if @self_update == nil
-     @self_update = method('update')
-     @self_press = method('press?')
-     @self_trigger = method('trigger?')
-     @self_repeat = method('repeat?')
-   end
-   def self.update
-     @self_update.call
-     Mouse.update
-   end
-   def self.press?(key_code)
-     if @self_press.call(key_code)
-       return true
-     end
-     if key_code == C
-       return Mouse.press?(Mouse::LEFT)
-     elsif key_code == B
-       return Mouse.press?(Mouse::RIGHT)
-     else
-       return @self_press.call(key_code)
-     end
-   end
-   def self.trigger?(key_code)
-     if @self_trigger.call(key_code)
-       return true
-     end
-     if key_code == C
-       return Mouse.trigger?(Mouse::LEFT)
-     elsif key_code == B
-       return Mouse.trigger?(Mouse::RIGHT)
-     else
-       return @self_trigger.call(key_code)
-     end
-   end
-   def self.repeat?(key_code)
-     if @self_repeat.call(key_code)
-       return true
-     end
-     if key_code == C
-       return Mouse.repeat?(Mouse::LEFT)
-     elsif key_code == B
-       return Mouse.repeat?(Mouse::RIGHT)
-     else
-       return @self_repeat.call(key_code)
-     end
-   end
- end
- class Window_Selectable
-   if @self_alias == nil
-     alias self_update update
-     @self_alias = true
-   end
-   def update
-     #self.cursor_rect.empty
-     self_update
-     if self.active and @item_max > 0
-       index_var = @index
-       tp_index = @index
-       mouse_x, mouse_y = Mouse.get_mouse_pos
-       mouse_not_in_rect = true
-       for i in 0...@item_max
-         @index = i
-         update_cursor_rect
-         top_x = self.cursor_rect.x + self.x + 16
-         top_y = self.cursor_rect.y + self.y + 16
-         bottom_x = top_x + self.cursor_rect.width
-         bottom_y = top_y + self.cursor_rect.height
-         if (mouse_x > top_x) and (mouse_y > top_y) and
-            (mouse_x < bottom_x) and (mouse_y < bottom_y)
-           mouse_not_in_rect = false
-           if tp_index != @index
-             tp_index = @index
-             $game_system.se_play($data_system.cursor_se)
-           end
-           break
-         end
-       end
-       if mouse_not_in_rect
-         @index = index_var
-         update_cursor_rect
-         Mouse.click_lock
-       else
-         Mouse.click_unlock                
-       end
-     end
-   end
- end
- class Window_NameInput
-   if @self_alias == nil
-     alias self_update update
-     @self_alias = true
-   end
-   def update
-     #self.cursor_rect.empty
-     self_update
-     if self.active
-       index_var = @index
-       mouse_x, mouse_y = Mouse.get_mouse_pos
-       mouse_not_in_rect = true
-       for i in (0...CHARACTER_TABLE.size).to_a.push(180)
-         @index = i
-         update_cursor_rect
-         top_x = self.cursor_rect.x + self.x + 16
-         top_y = self.cursor_rect.y + self.y + 16
-         bottom_x = top_x + self.cursor_rect.width
-         bottom_y = top_y + self.cursor_rect.height
-         #
-         if (mouse_x > top_x) and (mouse_y > top_y) and
-            (mouse_x < bottom_x) and (mouse_y < bottom_y)
-           mouse_not_in_rect = false
-           break
-         end
-       end
-       if mouse_not_in_rect
-         @index = index_var
-         update_cursor_rect
-         Mouse.click_lock
-       else
-         Mouse.click_unlock
-       end
-     end
-   end
- end
- class Window_InputNumber
-   if @self_alias == nil
-     alias self_update update
-     @self_alias = true
-   end
-   def update
-     #self.cursor_rect.empty
-     self_update
-     mouse_x, mouse_y = Mouse.get_mouse_pos
-     if self.active and @digits_max > 0
-       index_var = @index
-       mouse_not_in_rect = true
-       for i in 0...@digits_max
-         @index = i
-         update_cursor_rect
-         top_x = self.cursor_rect.x + self.x + 16
-         bottom_x = top_x + self.cursor_rect.width
-         #
-         if (mouse_x > top_x) and (mouse_x < bottom_x)
-           mouse_not_in_rect = false
-           break
-         end
-       end
-       if mouse_not_in_rect
-         @index = index_var
-         update_cursor_rect
-         Mouse.click_lock
-       else
-         Mouse.click_unlock
-       end
-     end
-     if @last_mouse_y == nil
-       @last_mouse_y = mouse_y
-     end
-     check_pos = (@last_mouse_y - mouse_y).abs
-     if check_pos > 10
-       $game_system.se_play($data_system.cursor_se)
-       place = 10 ** (@digits_max - 1 - @index)
-       n = @number / place % 10
-       @number -= n * place
-       n = (n + 1) % 10 if mouse_y < @last_mouse_y
-       n = (n + 9) % 10 if mouse_y > @last_mouse_y
-       @number += n * place
-       refresh
-       @last_mouse_y = mouse_y
-     end
-   end
- end
- class Scene_File
-   if @self_alias == nil
-     alias self_update update
-     @self_alias = true
-   end
-   def update
-     mouse_x, mouse_y = Mouse.get_mouse_pos
-     Mouse.click_lock
-     idx = 0
-     for i in @savefile_windows
-       top_x = i.x + 16
-       top_y = i.y + 16
-       bottom_x = top_x + i.width
-       bottom_y = top_y + i.height
-       if (mouse_x > top_x) and (mouse_y > top_y) and
-          (mouse_x < bottom_x) and (mouse_y < bottom_y)
-         i.selected = true
-         if @file_index != idx
-           @file_index = idx
-           $game_system.se_play($data_system.cursor_se)
-         end            
-         Mouse.click_unlock
-       else
-         i.selected = false
-       end
-       idx += 1
-     end
-     self_update
-   end
- end
- class Arrow_Enemy
-   if @self_alias == nil
-     alias self_update update
-     @self_alias = true
-   end
-   def update
-     mouse_x, mouse_y = Mouse.get_mouse_pos
-     idx = 0
-     for i in $game_troop.enemies do
-       if i.exist?
-         top_x = i.screen_x - self.ox
-         top_y = i.screen_y - self.oy
-         bottom_x = top_x + self.src_rect.width
-         bottom_y = top_y + self.src_rect.height
-         if (mouse_x > top_x - $敌人选框扩大) and (mouse_y > top_y - $敌人选框扩大) and
-            (mouse_x < bottom_x + $敌人选框扩大) and (mouse_y < bottom_y + $敌人选框扩大)
-           if @index != idx
-             $game_system.se_play($data_system.cursor_se)
-             @index = idx
-           end
-         end
-       end
-       idx += 1
-     end
-     self_update
-   end
- end
- class Arrow_Actor
-   if @self_alias == nil
-     alias self_update update
-     @self_alias = true
-   end
-   def update
-     mouse_x, mouse_y = Mouse.get_mouse_pos
-     idx = 0
-     for i in $game_party.actors do
-       if i.exist?
-         top_x = i.screen_x - self.ox
-         top_y = i.screen_y - self.oy
-         bottom_x = top_x + self.src_rect.width
-         bottom_y = top_y + self.src_rect.height
-         if (mouse_x > top_x - $角色选框扩大) and (mouse_y > top_y - $角色选框扩大) and
-            (mouse_x < bottom_x + $角色选框扩大) and (mouse_y < bottom_y + $角色选框扩大)
-           if @index != idx
-             $game_system.se_play($data_system.cursor_se)
-             @index = idx
-           end
-         end
-       end
-       idx += 1
-     end
-     self_update
-   end
- end
- class Game_Player
-   if @self_alias == nil
-     alias self_update update
-     @self_alias = true
-   end
-   def update
-     mouse_x, mouse_y = Mouse.get_mouse_pos
-     if @last_move_x == nil
-       @last_move_x = false
-     end
-     if Mouse.press?(Mouse::LEFT)
-       last_moving = moving?
-       last_direction = @direction
-       unless moving? or $game_system.map_interpreter.running? or
-              @move_route_forcing or $game_temp.message_window_showing
-         last_x = @x
-         if @last_move_x
-           @last_move_x = false
-         elsif mouse_x > screen_x + 16
-           move_right
-         elsif mouse_x < screen_x - 16
-           move_left
-         end
-         last_y = @y
-         if last_x != @x
-           @last_move_x = true
-         elsif mouse_y > screen_y
-           move_down
-         elsif mouse_y < screen_y - 32
-           move_up
-         end
-         if last_y != @y
-           @last_move_x = false
-         elsif not @last_move_x
-           case last_direction
-           when 2
-             turn_down
-           when 4
-             turn_left
-           when 6
-             turn_right
-           when 8
-             turn_up
-           end
-         end
-       end
-     end
-     self_update
-   end
- end
- Mouse.init
- END { Mouse.exit }
-
- #==============================================================================
- # 本脚本来自[url]www.66RPG.com[/url],使用和转载请保留此信息
- #==============================================================================
复制代码 |
|