Project1

标题: 如何返回上一层 [打印本页]

作者: 小和尚    时间: 2013-3-17 07:58
标题: 如何返回上一层
本帖最后由 小和尚 于 2013-4-5 06:25 编辑

这个鼠标脚本在战斗或者商店界面时右键不能执行返回功能(PS:在默认的工程里 菜单中右键是不能返回的 但在我的菜单中却可以= =所以菜单就不用改了)  请问怎么改 谢谢各位~~
而且还想问一下 怎么才能禁用鼠标右键 因为做剧情的时候一点右键就...= = SO 是否能通过开关来控制右键的使用可行性 再次谢谢各位

Project1.rar

470.97 KB, 下载次数: 16


作者: 小和尚    时间: 2013-4-5 06:22
@芯☆淡茹水 = = 稍微有点冒犯.. 但还请帮助一下
作者: 芯☆淡茹水    时间: 2013-4-5 20:00
   已经改好了,加了个 开关控制鼠标右键功能,。

用下面的脚本替换原来相对应的脚本。
  1. #==============================================================================
  2. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  3. #==============================================================================

  4. #=================以下两个用来调整战斗时的手感问题,可以自己试试。
  5. $敌人选框扩大 = 20
  6. $角色选框扩大 = 30
  7. # 控制鼠标右键是否有效的开关 ID
  8. SWITCHE_ID = 10

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

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

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


  507. class Game_Player
  508.   if @self_alias == nil
  509.     alias self_update update
  510.     @self_alias = true
  511.   end
  512.   def update
  513.     mouse_x, mouse_y = Mouse.get_mouse_pos

  514.     if @last_move_x == nil
  515.       @last_move_x = false
  516.     end
  517.     if Mouse.trigger?(Mouse::RIGHT)
  518.       Mouse.right_menu(mouse_x, mouse_y)
  519.       Graphics.update
  520.    
  521.     elsif Mouse.press?(Mouse::LEFT)
  522.       if Mouse.mouse_touch == true
  523.         Mouse.mouse_touch = false
  524.         return
  525.       end
  526.       Mouse.plight
  527.       Mouse.wait
  528.       last_moving = moving?
  529.       last_direction = @direction
  530.       unless moving? or $game_system.map_interpreter.running? or
  531.              @move_route_forcing or $game_temp.message_window_showing
  532.         last_x = @x
  533.         if @last_move_x
  534.           @last_move_x = false
  535.         elsif mouse_x > screen_x + 16
  536.           move_right
  537.         elsif mouse_x < screen_x - 16
  538.           move_left
  539.         end
  540.         last_y = @y
  541.         if last_x != @x
  542.           @last_move_x = true
  543.         elsif mouse_y > screen_y
  544.           move_down
  545.         elsif mouse_y < screen_y - 32
  546.           move_up
  547.         end
  548.         if last_y != @y
  549.           @last_move_x = false
  550.         end
  551.       end
  552.     end
  553.     self_update
  554.   end
  555. end
  556. Mouse.init
  557. END { Mouse.exit }




  558. #==============================================================================
  559. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  560. #==============================================================================
复制代码

作者: 小和尚    时间: 2013-4-6 08:34
芯☆淡茹水 发表于 2013-4-5 20:00
已经改好了,加了个 开关控制鼠标右键功能,。

用下面的脚本替换原来相对应的脚本。  ...

SORRY= =右键仍还是不能返回..
作者: 小和尚    时间: 2013-4-6 11:54
本帖最后由 小和尚 于 2013-4-6 15:11 编辑
芯☆淡茹水 发表于 2013-4-5 20:00
已经改好了,加了个 开关控制鼠标右键功能,。

用下面的脚本替换原来相对应的脚本。  ...


无以为报= = 实在是感谢 等我能评分的...再谢..   @芯☆淡茹水 认可答案 = = 能不能扣些我1000经验给他加上..
  还有一点点小问题 就是右键后会直接进入菜单了= = 跳过原本的选项(就是下图的小方块)@芯☆淡茹水

1.JPG (9.65 KB, 下载次数: 9)

1.JPG

作者: 芯☆淡茹水    时间: 2013-4-6 20:09
   很简单啊,要只显示图片的话,把 Scene_Map 里的 $scene = Scene_Menu.new 注释掉。

工程: Project1.rar (490.57 KB, 下载次数: 15)


  话说可以扣经念加给别人!
其实本人对经念阿什么的都是浮云(VIP除外,,, )。

不过还是要谢谢小和尚同学,如果可以的话把QQ留言给我,大家可以聊点脚本阿什么的
作者: 小和尚    时间: 2013-4-6 20:28
芯☆淡茹水 发表于 2013-4-6 20:09
很简单啊,要只显示图片的话,把 Scene_Map 里的 $scene = Scene_Menu.new 注释掉。

工程:

QQ = =那种东西百十年没用过了..  在论坛里加个好友吧 以后联系哦




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