Project1

标题: 咳咳,我来发个:超级鼠标系统(Super Mouse Sytem ?) [打印本页]

作者: END66RPG    时间: 2011-9-12 17:51
标题: 咳咳,我来发个:超级鼠标系统(Super Mouse Sytem ?)
本帖最后由 END66RPG 于 2011-9-12 18:20 编辑

本鼠标拥有大概N个新功能:
1.方向系统,鼠标按反正切函数,自旋转(理论360方向)。
2.发光的尾巴——哈雷彗星
3.N种鼠标动画形态
4.响应事件 。。。。。等{:2_32:}
………………………………
这是张小png和大gif请等待加载= =:
[attach]78927[/attach]
注意看鼠标的旋转;
[attach]78928[/attach]
附件:

Super Mouse Sysem v1.zip (527.27 KB, 下载次数: 335, 售价: 1 星屑)

砰砰砰:

详情见脚本:
3个:
  1. #==============================================================================
  2. #新鼠标系统 by END66RPG 2011.9
  3. #----------------------------使用必看------------------------------------------
  4. #脚本修改较多,要换素材最好不要改脚本,直接看素材Graphics/Mouse/...文件夹。
  5. #鼠标形状状态的说明:
  6. #1.行走时会变成 wait.png
  7. #2.指向事件会变成 npc.png
  8. #3.指向非事件的character会变成 红色光标
  9. #4.指向名字含有item字样的事件会变成 coach.png
  10. #除上所述,鼠标变成 紫色光标
  11. #下面可修改([]中为通常的样子):
  12. 合成方式 = 1  
  13. #@blend_tepe【1  】:0~2
  14. 透明速度 = 10
  15. #@opacity   【10 】:0~255
  16. 下降速度 = 1  
  17. #@jy        【1  】:0~50
  18. X放大率  = 0.1
  19. #@zoom_x    【0.1 or -0.03】:-1~1
  20. Y放大率  = 0.1
  21. #@zoom_y    【0.1 or -0.03】:-1~1
  22. #由于残光会建立94个图像,内存低就把show_light 给return掉吧~~
  23. #加入鼠标转向专利一个~~我是仿windows显示时间屏保的鼠标制作的~~
  24. #是关于Math的算法,不是只有8方向,而是360个= =!!~
  25. #把52行去掉“#”就会掉many FPS 不过很华丽~~
  26. #==============================================================================
  27. module Mouse  
  28.   def self.init2
  29.     #Directions
  30.     @dir = 0
  31.     @old_x, @old_y = 0, 0
  32.     #Animations
  33.     @light_id = 1
  34.     @mouse_sprite1 = Sprite.new;
  35.     @mouse_sprite1.z = 9999;
  36.     @mouse_sprite1.bitmap = Bitmap.new("Graphics/Icons/#{@light_id}");
  37.     @light_id = 1
  38.   end
  39.   def self.setbb(a,b,c,d,e)
  40.     @blend_tepe = a
  41.     @opacity = b
  42.     @jy = c
  43.     @zoom_x = d
  44.     @zoom_y = e
  45.   end
  46.   def self.show_light(mx, my)
  47.     #return
  48.     @light_id < 94 ? @light_id += 1 : @light_id = 1
  49.     i = @light_id
  50.     eval("@mouse_sprite#{i} = Sprite.new")
  51.     eval("@mouse_sprite#{i}.x = #{mx}")
  52.     eval("@mouse_sprite#{i}").y = my
  53.     eval("@mouse_sprite#{i}").blend_type = @blend_tepe
  54.     eval("@mouse_sprite#{i}").z = 9999;
  55.     #eval("@mouse_sprite#{i}").angle = @mouse_sprite.angle
  56.     eval("@mouse_sprite#{i}").bitmap = Bitmap.new("Graphics/Icons/#{@light_id}")
  57.     for i in 1..94
  58.       begin
  59.       eval("@mouse_sprite#{i}").opacity -= @opacity #10
  60.       eval("@mouse_sprite#{i}").y += @jy#1
  61.       eval("@mouse_sprite#{i}").zoom_x += @zoom_x#0.105
  62.       eval("@mouse_sprite#{i}").zoom_y += @zoom_y#0.105
  63.       eval("@mouse_sprite#{i}").dispose if eval("@mouse_sprite#{i}").opacity <= 0
  64.       rescue
  65.       end
  66.     end
  67.     if @plight == true
  68.       self.update_light
  69.     end
  70.     a = 0
  71.     #被废掉的朝向
  72.     hu = [(@old_x - mx), (@old_y - my)]
  73.    
  74.     return if hu[0] == 0 or hu[1] == 0
  75.     math = 135 - self.atoa(Math.atan(hu[1]/hu[0]))
  76.     if hu[0] > 0
  77.       @mouse_sprite.angle = math - 90
  78.     else
  79.       @mouse_sprite.angle = math + 90
  80.     end
  81.     #p math
  82.     @old_x, @old_y = mx, my
  83.    
  84.    
  85.   end
  86.   def self.plight
  87.     @l = Sprite.new
  88.     @l.z = 999999
  89.     @pcount = 30
  90.     @l.blend_type = 1
  91.     @l.bitmap = Bitmap.new("Graphics/Icons/#{@pcount}");
  92.     @l.ox = @l.bitmap.width / 2
  93.     @l.oy = @l.bitmap.height / 2
  94.     @l.x, @l.y = @mouse_sprite.x, @mouse_sprite.y
  95.     @plight = true
  96.    
  97.   end
  98.   def self.update_light
  99.     @pcount += 1
  100.     @l.bitmap = Bitmap.new("Graphics/Icons/#{@pcount}")
  101.     @l.zoom_x += 0.1
  102.     @l.zoom_y += 0.1
  103.     @l.opacity -= 10
  104.     if @pcount >= 70
  105.       @l.dispose
  106.       @pcount = 0
  107.       @plight = false
  108.     end
  109.   end
  110.   def self.atoa(hu)#弧度转角度
  111.     return (hu * 180) / Math::PI
  112.     #
  113.   end
  114. end
  115. Mouse.init2
  116. Mouse.setbb(合成方式,
  117. 透明速度,
  118. 下降速度,
  119. X放大率,
  120. Y放大率)
复制代码
  1. #==============================================================================
  2. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  3. #==============================================================================

  4. #=================以下两个用来调整战斗时的手感问题,可以自己试试。
  5. $敌人选框扩大 = 20
  6. $角色选框扩大 = 30


  7. #==============================================================================
  8. # API调用
  9. #==============================================================================
  10. $ShowCursor = Win32API.new("user32", "ShowCursor", 'i', 'l')
  11. $GetCursorPos = Win32API.new("user32", "GetCursorPos", 'p', 'i')
  12. $ScreenToClient = Win32API.new("user32", "ScreenToClient", 'ip', 'i')
  13. $GetActiveWindow = Win32API.new("user32", "GetActiveWindow", nil, 'l')
  14. $Window_HWND = $GetActiveWindow.call
  15. $GetKeyState = Win32API.new("user32", "GetKeyState", 'i', 'i')
  16. #$FindWindow = Win32API.new("user32", "FindWindow", 'pp', 'i')
  17. #$HookStart  = Win32API.new("mouse_hook.dll", "HookStart", 'i', nil)
  18. #$HookEnd  = Win32API.new("mouse_hook.dll", "HookEnd", nil, nil)
  19. #$GetMouseStatus  = Win32API.new("mouse_hook.dll", "GetMouseStatus", 'i', 'i')
  20. #$Window_HWND = $FindWindow.call(nil, 'mousetry')

  21. module Mouse  
  22.   LEFT = 0x01
  23.   RIGHT = 0x02
  24. attr_accessor :count                     #变换动画计数
  25. attr_accessor :npc                       #指向NPC
  26. attr_accessor :wait                      #指针变成角色正在移动
  27. attr_accessor :enemy                     #指针指向敌人
  28. attr_accessor :coach                     #coach icons switch
  29.   def self.init(sprite = nil)
  30. #   $HookStart.call($Window_HWND)
  31.     $ShowCursor.call(0)
  32.    
  33.     @show_cursor = false
  34.    
  35.     @mouse_sprite = Sprite.new
  36.     @mouse_sprite.z = 99999
  37.     @mouse_sprite.bitmap = Bitmap.new('Graphics/Mouse/1.png')
  38.     #@mouse_sprite.ox = @mouse_sprite.bitmap.width
  39.     #@mouse_sprite.oy = @mouse_sprite.bitmap.height
  40.     @count = 0
  41.     @npc,@wait,@coach = false
  42.     #@mouse_sprite.bitmap.fill_rect(Rect.new(0, 0, 32, 32), Color.new(0, 0, 0))

  43.     @left_press = false
  44.     @right_press = false
  45.     @left_trigger = false
  46.     @right_trigger = false
  47.     @left_repeat = false
  48.     @right_repeat = false
  49.     @click_lock = false
  50.    
  51.     update
  52.   end
  53.   def self.exit
  54.     @mouse_sprite.bitmap.dispose
  55.     @mouse_sprite.dispose
  56.     @show_cursor = true
  57. #    $HookEnd.call
  58.     $ShowCursor.call(1)
  59.   end
  60.   def self.mouse_debug
  61.     return @mouse_debug.bitmap
  62.   end
  63. #======================================================
  64. #change icon!
  65. #======================================================
  66.   def self.npc
  67.     if @npc != true
  68.     @count = 10
  69.     @npc = true
  70.     end
  71.   end
  72.   def self.wait
  73.     if @wait != true
  74.     @count = 10
  75.     @wait = true
  76.     end
  77.   end
  78.   def self.enemy
  79.     if @enemy != true
  80.     @count = 10
  81.     @enemy = true
  82.     end
  83.   end
  84.   def self.coach
  85.     if @coach != true
  86.       @count = 10
  87.       @coach = true
  88.     end
  89.   end
  90. #======================================================
  91. #end
  92. #======================================================
  93.   def self.update
  94.     if @npc == true
  95.       if @count == 80
  96.         @count = 0
  97.         @npc = false
  98.       else
  99.         @count += 2
  100.         end
  101.       if FileTest.exist?("Graphics/Mouse/npc_#{@count/10}.png")
  102.         @mouse_sprite.bitmap = Bitmap.new("Graphics/Mouse/npc_#{@count/10}.png")
  103.       end
  104.     elsif @coach == true
  105.       if @count == 60
  106.         @count = 0
  107.         @coach = false
  108.       else
  109.         @count += 2
  110.         end
  111.       if FileTest.exist?("Graphics/Mouse/coach_#{@count/10}.png")
  112.         @mouse_sprite.bitmap = Bitmap.new("Graphics/Mouse/coach_#{@count/10}.png")
  113.       end
  114.     elsif @enemy == true
  115.       if @count == 60
  116.         @count = 0
  117.         @enemy= false
  118.       else
  119.         @count += 2
  120.         end
  121.         if FileTest.exist?("Graphics/Mouse/#{@count/10 + 4}.png")
  122.         @mouse_sprite.bitmap = Bitmap.new("Graphics/Mouse/#{@count/10 + 4}.png")
  123.       end
  124.       elsif @wait == true
  125.       if @count == 60
  126.         @count = 0
  127.         @wait = false
  128.       else
  129.         @count += 2
  130.         end
  131.         if FileTest.exist?("Graphics/Mouse/wait_#{@count/10}.png")
  132.         @mouse_sprite.bitmap = Bitmap.new("Graphics/Mouse/wait_#{@count/10}.png")
  133.       end
  134.   
  135.       else
  136.       @count == 40 ? @count = 0 : @count += 2
  137.     if FileTest.exist?("Graphics/Mouse/#{@count/10}.png")
  138.        @mouse_sprite.bitmap = Bitmap.new("Graphics/Mouse/#{@count/10}.png")
  139.     end
  140.   end
  141.     left_down = $GetKeyState.call(0x01)
  142.     right_down = $GetKeyState.call(0x02)
  143.    
  144.     @click_lock = false
  145.     mouse_x, mouse_y = self.get_mouse_pos
  146.     self.show_light(@mouse_sprite.x, mouse_y)
  147.     if @mouse_sprite != nil
  148.       @mouse_sprite.x = mouse_x
  149.       @mouse_sprite.y = mouse_y
  150.     end
  151.     if left_down[7] == 1
  152.       @left_repeat = (not @left_repeat)
  153.       @left_trigger = (not @left_press)
  154.       @left_press = true
  155.     else
  156.       @left_press = false
  157.       @left_trigger = false
  158.       @left_repeat = false
  159.     end
  160.     if right_down[7] == 1
  161.       @right_repeat = (not @right_repeat)
  162.       @right_trigger = (not @right_press)
  163.       @right_press = true
  164.     else
  165.       @right_press = false
  166.       @right_trigger = false
  167.       @right_repeat = false
  168.     end
  169.   end
  170.   def self.get_mouse_pos
  171.     point_var = [0, 0].pack('ll')
  172.     if $GetCursorPos.call(point_var) != 0
  173.       if $ScreenToClient.call($Window_HWND, point_var) != 0
  174.         x, y = point_var.unpack('ll')
  175.         if (x < 0) or (x > 10000) then x = 0 end
  176.         if (y < 0) or (y > 10000) then y = 0 end
  177.         if x > 800 then x = 600 end
  178.         if y > 800 then y = 600 end
  179.         return x, y
  180.       else
  181.         return 0, 0
  182.       end
  183.     else
  184.       return 0, 0
  185.     end
  186.   end
  187.   def self.press?(mouse_code)
  188.     if mouse_code == LEFT
  189.       if @click_lock
  190.         return false
  191.       else
  192.         return @left_press
  193.       end
  194.     elsif mouse_code == RIGHT
  195.       return @right_press
  196.     else
  197.       return false
  198.     end
  199.   end
  200.   def self.trigger?(mouse_code)
  201.     if mouse_code == LEFT
  202.       if @click_lock
  203.         return false
  204.       else
  205.         return @left_trigger
  206.       end
  207.     elsif mouse_code == RIGHT
  208.       return @right_trigger
  209.     else
  210.       return false
  211.     end
  212.   end
  213.   def self.repeat?(mouse_code)
  214.     if mouse_code == LEFT
  215.       if @click_lock
  216.         return false
  217.       else
  218.         return @left_repeat
  219.       end
  220.     elsif mouse_code == RIGHT
  221.       return @right_repeat
  222.     else
  223.       return false
  224.     end
  225.   end
  226.   def self.click_lock?
  227.     return @click_lock
  228.   end
  229.   def self.click_lock
  230.     @click_lock = true
  231.   end
  232.   def self.click_unlock
  233.     @click_lock = false
  234.   end
  235. end
  236. module Input
  237.   if @self_update == nil
  238.     @self_update = method('update')
  239.     @self_press = method('press?')
  240.     @self_trigger = method('trigger?')
  241.     @self_repeat = method('repeat?')
  242.   end
  243.   def self.update
  244.     @self_update.call
  245.     Mouse.update
  246.   end
  247.   def self.press?(key_code)
  248.     if @self_press.call(key_code)
  249.       return true
  250.     end
  251.     if key_code == C
  252.       return Mouse.press?(Mouse::LEFT)
  253.     elsif key_code == B
  254.       #return Mouse.press?(Mouse::RIGHT)
  255.     else
  256.       return @self_press.call(key_code)
  257.     end
  258.   end
  259.   def self.trigger?(key_code)
  260.     if @self_trigger.call(key_code)
  261.       return true
  262.     end
  263.     if key_code == C
  264.       return Mouse.trigger?(Mouse::LEFT)
  265.     elsif key_code == B
  266.       #return Mouse.trigger?(Mouse::RIGHT)
  267.     else
  268.       return @self_trigger.call(key_code)
  269.     end
  270.   end
  271.   def self.repeat?(key_code)
  272.     if @self_repeat.call(key_code)
  273.       return true
  274.     end
  275.     if key_code == C
  276.       return Mouse.repeat?(Mouse::LEFT)
  277.     elsif key_code == B
  278.       #return Mouse.repeat?(Mouse::RIGHT)#菜单
  279.     else
  280.       return @self_repeat.call(key_code)
  281.     end
  282.   end
  283. end
  284. class Window_Selectable
  285.   if @self_alias == nil
  286.     alias self_update update
  287.     @self_alias = true
  288.   end
  289.   def update
  290.     #self.cursor_rect.empty
  291.     self_update
  292.     if self.active and @item_max > 0
  293.       index_var = @index
  294.       tp_index = @index
  295.       mouse_x, mouse_y = Mouse.get_mouse_pos
  296.       mouse_not_in_rect = true
  297.       for i in 0...@item_max
  298.         @index = i
  299.         update_cursor_rect
  300.         top_x = self.cursor_rect.x + self.x + 16
  301.         top_y = self.cursor_rect.y + self.y + 16
  302.         bottom_x = top_x + self.cursor_rect.width
  303.         bottom_y = top_y + self.cursor_rect.height
  304.         if (mouse_x > top_x) and (mouse_y > top_y) and
  305.            (mouse_x < bottom_x) and (mouse_y < bottom_y)
  306.           mouse_not_in_rect = false
  307.           if tp_index != @index
  308.             tp_index = @index
  309.             $game_system.se_play($data_system.cursor_se)
  310.           end
  311.           break
  312.         end
  313.       end
  314.       if mouse_not_in_rect
  315.         @index = index_var
  316.         update_cursor_rect
  317.         Mouse.click_lock
  318.       else
  319.         Mouse.click_unlock               
  320.       end
  321.     end
  322.   end
  323. end
  324. class Window_NameInput
  325.   if @self_alias == nil
  326.     alias self_update update
  327.     @self_alias = true
  328.   end
  329.   def update
  330.     #self.cursor_rect.empty
  331.     self_update
  332.     if self.active
  333.       index_var = @index
  334.       mouse_x, mouse_y = Mouse.get_mouse_pos
  335.       mouse_not_in_rect = true
  336.       for i in (0...CHARACTER_TABLE.size).to_a.push(180)
  337.         @index = i
  338.         update_cursor_rect
  339.         top_x = self.cursor_rect.x + self.x + 16
  340.         top_y = self.cursor_rect.y + self.y + 16
  341.         bottom_x = top_x + self.cursor_rect.width
  342.         bottom_y = top_y + self.cursor_rect.height
  343.         #
  344.         if (mouse_x > top_x) and (mouse_y > top_y) and
  345.            (mouse_x < bottom_x) and (mouse_y < bottom_y)
  346.           mouse_not_in_rect = false
  347.           break
  348.         end
  349.       end
  350.       if mouse_not_in_rect
  351.         @index = index_var
  352.         update_cursor_rect
  353.         Mouse.click_lock
  354.       else
  355.         Mouse.click_unlock
  356.       end
  357.     end
  358.   end
  359. end
  360. class Window_InputNumber
  361.   if @self_alias == nil
  362.     alias self_update update
  363.     @self_alias = true
  364.   end
  365.   def update
  366.     #self.cursor_rect.empty
  367.     self_update
  368.     mouse_x, mouse_y = Mouse.get_mouse_pos
  369.     if self.active and @digits_max > 0
  370.       index_var = @index
  371.       mouse_not_in_rect = true
  372.       for i in 0...@digits_max
  373.         @index = i
  374.         update_cursor_rect
  375.         top_x = self.cursor_rect.x + self.x + 16
  376.         bottom_x = top_x + self.cursor_rect.width
  377.         #
  378.         if (mouse_x > top_x) and (mouse_x < bottom_x)
  379.           mouse_not_in_rect = false
  380.           break
  381.         end
  382.       end
  383.       if mouse_not_in_rect
  384.         @index = index_var
  385.         update_cursor_rect
  386.         Mouse.click_lock
  387.       else
  388.         Mouse.click_unlock
  389.       end
  390.     end
  391.     if @last_mouse_y == nil
  392.       @last_mouse_y = mouse_y
  393.     end
  394.     check_pos = (@last_mouse_y - mouse_y).abs
  395.     if check_pos > 10
  396.       $game_system.se_play($data_system.cursor_se)
  397.       place = 10 ** (@digits_max - 1 - @index)
  398.       n = @number / place % 10
  399.       @number -= n * place
  400.       n = (n + 1) % 10 if mouse_y < @last_mouse_y
  401.       n = (n + 9) % 10 if mouse_y > @last_mouse_y
  402.       @number += n * place
  403.       refresh
  404.       @last_mouse_y = mouse_y
  405.     end
  406.   end
  407. end
  408. class Scene_File
  409.   if @self_alias == nil
  410.     alias self_update update
  411.     @self_alias = true
  412.   end
  413.   def update
  414.     mouse_x, mouse_y = Mouse.get_mouse_pos
  415.     Mouse.click_lock
  416.     idx = 0
  417.     for i in @savefile_windows
  418.       top_x = i.x + 16
  419.       top_y = i.y + 16
  420.       bottom_x = top_x + i.width
  421.       bottom_y = top_y + i.height
  422.       if (mouse_x > top_x) and (mouse_y > top_y) and
  423.          (mouse_x < bottom_x) and (mouse_y < bottom_y)
  424.         i.selected = true
  425.         if @file_index != idx
  426.           @file_index = idx
  427.           $game_system.se_play($data_system.cursor_se)
  428.         end            
  429.         Mouse.click_unlock
  430.       else
  431.         i.selected = false
  432.       end
  433.       idx += 1
  434.     end
  435.     self_update
  436.   end
  437. end
  438. class Arrow_Enemy
  439.   if @self_alias == nil
  440.     alias self_update update
  441.     @self_alias = true
  442.   end
  443.   def update
  444.     mouse_x, mouse_y = Mouse.get_mouse_pos
  445.     idx = 0
  446.     for i in $game_troop.enemies do
  447.       if i.exist?
  448.         top_x = i.screen_x - self.ox
  449.         top_y = i.screen_y - self.oy
  450.         bottom_x = top_x + self.src_rect.width
  451.         bottom_y = top_y + self.src_rect.height
  452.         if (mouse_x > top_x - $敌人选框扩大) and (mouse_y > top_y - $敌人选框扩大) and
  453.            (mouse_x < bottom_x + $敌人选框扩大) and (mouse_y < bottom_y + $敌人选框扩大)
  454.           if @index != idx
  455.             $game_system.se_play($data_system.cursor_se)
  456.             @index = idx
  457.           end
  458.         end
  459.       end
  460.       idx += 1
  461.     end
  462.     self_update
  463.   end
  464. end
  465. class Arrow_Actor
  466.   if @self_alias == nil
  467.     alias self_update update
  468.     @self_alias = true
  469.   end
  470.   def update
  471.     mouse_x, mouse_y = Mouse.get_mouse_pos
  472.     idx = 0
  473.     for i in $game_party.actors do
  474.       if i.exist?
  475.         top_x = i.screen_x - self.ox
  476.         top_y = i.screen_y - self.oy
  477.         bottom_x = top_x + self.src_rect.width
  478.         bottom_y = top_y + self.src_rect.height
  479.         if (mouse_x > top_x - $角色选框扩大) and (mouse_y > top_y - $角色选框扩大) and
  480.            (mouse_x < bottom_x + $角色选框扩大) and (mouse_y < bottom_y + $角色选框扩大)
  481.           if @index != idx
  482.             $game_system.se_play($data_system.cursor_se)
  483.             @index = idx
  484.           end
  485.         end
  486.       end
  487.       idx += 1
  488.     end
  489.     self_update
  490.   end
  491. end


  492. class Game_Player
  493.   if @self_alias == nil
  494.     alias self_update update
  495.     @self_alias = true
  496.   end
  497.   def update
  498.     mouse_x, mouse_y = Mouse.get_mouse_pos

  499.     if @last_move_x == nil
  500.       @last_move_x = false
  501.     end
  502.     if Mouse.trigger?(Mouse::LEFT)
  503.      Mouse.plight
  504.      end
  505.      if Mouse.press?(Mouse::LEFT)
  506.        Mouse.wait
  507.       last_moving = moving?
  508.       last_direction = @direction
  509.       unless moving? or $game_system.map_interpreter.running? or
  510.              @move_route_forcing or $game_temp.message_window_showing
  511.         last_x = @x
  512.         if @last_move_x
  513.           @last_move_x = false
  514.         elsif mouse_x > screen_x + 16
  515.           move_right
  516.         elsif mouse_x < screen_x - 16
  517.           move_left
  518.         end
  519.         last_y = @y
  520.         if last_x != @x
  521.           @last_move_x = true
  522.         elsif mouse_y > screen_y
  523.           move_down
  524.         elsif mouse_y < screen_y - 32
  525.           move_up
  526.         end
  527.         if last_y != @y
  528.           @last_move_x = false
  529.         elsif not @last_move_x
  530.           case last_direction
  531.           when 2
  532.             
  533.           when 4
  534.             
  535.           when 6
  536.             
  537.           when 8
  538.             
  539.           end
  540.         end
  541.       end
  542.     end
  543.     self_update
  544.   end
  545. end
  546. Mouse.init
  547. END { Mouse.exit }




  548. #==============================================================================
  549. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  550. #==============================================================================
复制代码
  1. #==============================================================================
  2. # ■ Sprite_Character
  3. #------------------------------------------------------------------------------
  4. #check the mouse 's event and start.                       by End66rpg
  5. #==============================================================================
  6. class Sprite_Character < RPG::Sprite
  7.   alias update_old update
  8.   def update
  9.    update_old
  10.    self.tone = Tone.new(0,0,0)
  11.    mx,my = Mouse.get_mouse_pos
  12.    lx = self.x - self.ox
  13.    rx = lx + self.bitmap.width / 4
  14.    ty = self.y - self.oy
  15.    by = ty + self.bitmap.height / 4
  16.    if mx < lx or mx > rx or my < ty or my > by or
  17.      self.bitmap.get_pixel(mx-lx,my-ty).alpha == 0
  18.      return
  19.    end
  20.    if Mouse.trigger?(Mouse::LEFT)
  21.      Mouse.plight
  22.      return if $game_system.map_interpreter.running?
  23.      if @character == $game_player or @character.trigger == 4
  24.        return
  25.      end
  26.      @character.start
  27.    end
  28.    if @character != $game_player
  29.      if @character.is_a?(Game_Event) and @character.name.index('item')
  30.        Mouse.coach
  31.        return
  32.      end
  33.     Mouse.npc
  34.   end
  35.    Mouse.enemy if @character != $game_map.events
  36.    self.tone = Tone.new(122,122,122)
  37.    
  38.   end
  39. end
  40. class Game_Event < Game_Character
  41. #——————————————————————————————————————
  42. # 用来返回名称
  43. #——————————————————————————————————————
  44. def name
  45.    return @event.name
  46. end  
  47. def name=(newname)
  48.    @event.name = newname
  49. end
  50. end
复制代码


作者: 灵魂の补给    时间: 2011-9-12 18:30
本帖最后由 灵魂の补给 于 2011-9-12 18:33 编辑

why buy but not talk?{:2_33:}:'(
我重出江湖咯

免费开源朝向小脚本1个:
  1. def self.atoa(hu)#弧度转角度
  2.     return (hu * 180) / Math::PI
  3.   end
复制代码
  1. hu = [(@old_x - mx), (@old_y - my)]
  2.     return if hu[0] == 0 or hu[1] == 0
  3.     math = 135 - self.atoa(Math.atan(hu[1]/hu[0]))
  4.     if hu[0] > 0
  5.       @mouse_sprite.angle = math - 90
  6.     else
  7.       @mouse_sprite.angle = math + 90
  8.     end
  9.     #p math
  10.     @old_x, @old_y = mx, my
复制代码

作者: 火星·奈    时间: 2011-9-12 18:48
板凳,我来试试这个。
作者: BS包仔    时间: 2011-9-12 20:17
两个鼠标总觉得很碍眼,不能把原来的河蟹掉吗??
作者: muramasa    时间: 2011-9-12 22:12
好COOL!!!!:loveliness:


muramasa于2011-9-13 01:48补充以下内容:
為啥米你可以上傳附件我卻一直報失敗:L....難道是因為等級高的關係嗎?
作者: 天使喝可乐    时间: 2011-9-14 08:19
LZ的gif用什么转的……
作者: END66RPG    时间: 2011-9-22 20:47
BS包仔 发表于 2011-9-12 20:17
两个鼠标总觉得很碍眼,不能把原来的河蟹掉吗??

GIF截取器没有鼠标去掉而已


END66RPG于2011-9-22 20:48补充以下内容:
矢量图GIF哦




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1