设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 4735|回复: 11
打印 上一主题 下一主题

[已经解决] 如何让鼠标点击事件直接打开

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1556
在线时间
626 小时
注册时间
2010-8-5
帖子
451
跳转到指定楼层
1
发表于 2014-9-6 13:30:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
在一定范围内,鼠标点击某个事件,或者说NPC。直接打开,而不是跑到事件周围再触发事件。 @芯☆淡茹水  

Lv1.梦旅人

阿飞

梦石
0
星屑
68
在线时间
232 小时
注册时间
2010-8-27
帖子
855
2
发表于 2014-9-6 13:37:35 | 只看该作者
用个鼠标脚本就好了   搜索鼠标脚本吧
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
33512
在线时间
5108 小时
注册时间
2012-11-19
帖子
4878

开拓者

3
发表于 2014-9-6 21:08:30 | 只看该作者
再远都行么?比如角色在左下角,NPC在右上角,都能点成功?
最好把你用的鼠标脚本给我。
xp vx va mv  va mz 各类型脚本/插件定制
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1556
在线时间
626 小时
注册时间
2010-8-5
帖子
451
4
 楼主| 发表于 2014-9-6 22:21:06 | 只看该作者
芯☆淡茹水 发表于 2014-9-6 21:08
再远都行么?比如角色在左下角,NPC在右上角,都能点成功?
最好把你用的鼠标脚本给我。 ...
  1. #==============================================================================
  2. # ■ Game_Player
  3. #------------------------------------------------------------------------------
  4. #  处理主角的类。事件启动的判定、以及地图的滚动等功能。
  5. # 本类的实例请参考 $game_player。
  6. #==============================================================================

  7. class Game_Player < Game_Character
  8.   if @self_alias == nil
  9.     alias self_update update
  10.     @self_alias = true
  11.   end
  12.   #--------------------------------------------------------------------------
  13.   # ● 完整鼠标系统
  14.   #--------------------------------------------------------------------------
  15.   def update
  16.     # 搜索路径
  17.     seek_path
  18.     # 当持续按下鼠标左键时
  19.     if Mouse.press?(0x01)
  20.       return if !System.whether_move
  21.       @count = 20 if @count.nil?
  22.       @count -= 1
  23.       if @count <= 0
  24.         @self_state = 2
  25.         @count = nil
  26.       end
  27.       follow(true) if @self_state != 2 and @count < 18
  28.     elsif Mouse.trigger?(0x02)
  29.       @self_state = 0
  30.       follow(false)
  31.     else
  32.       @count = 20
  33.     end
  34.     # 移动
  35.     if @self_state == 1
  36.       player_move
  37.     elsif @paths != nil and @self_state == 2
  38.       follow(true)
  39.     end
  40.     # 别名
  41.     self_update
  42.   end
  43.   #--------------------------------------------------------------------------
  44.   # ● 搜索路径
  45.   #--------------------------------------------------------------------------
  46.   def seek_path
  47.     # 获取鼠标在画面的坐标
  48.     x, y = Mouse.get_mouse_pos
  49.     # 当按下鼠标左键时
  50.     if Mouse.trigger?(0x01)
  51.       # 禁止移动的情况下返回
  52.       return if !System.whether_move
  53.       # 排除各种无效的情况
  54.       unless $game_system.map_interpreter.running? or
  55.         @move_route_forcing or $game_temp.message_window_showing
  56.         # 获取目标点
  57.         trg_x = (x + $game_map.display_x / 4) / 32
  58.         trg_y = (y + $game_map.display_y / 4) / 32
  59.         # 目标点不可以通行的情况下返回
  60.         return unless target_passable?(trg_x,trg_y)
  61.         # 初始化未开启事件
  62.         @event = nil
  63.         # 判断是否可以打开事件
  64.         event_start = check_event_custom_start(x, y)
  65.         # 若不能开启事件
  66.         if !event_start
  67.           # 初始化
  68.           @paths = []
  69.           @steps = 0
  70.           @self_state = 1
  71.           # 若存在未开启事件
  72.           if @event != nil
  73.             trg_x,trg_y = @event.x,@event.y
  74.           end
  75.           # 若目标不为自身则开始寻路
  76.           if trg_x != self.x or trg_y != self.y
  77.             # 添加点击动画
  78.             add_animation if @event.nil?
  79.             # 获得路径
  80.             @paths = Find_Path.new.find_player_short_path(trg_x, trg_y, x, y)
  81.           end
  82.         else
  83.           # 角色面向事件
  84.           self.turn_toward_player(@event) if [email protected]? and !self.moving?
  85.           @steps = @paths = nil
  86.         end
  87.       end
  88.     end
  89.   end
  90.   #--------------------------------------------------------------------------
  91.   # ● 可以通行判定
  92.   #     x : X 坐标
  93.   #     y : Y 坐标
  94.   #--------------------------------------------------------------------------
  95.   def target_passable?(x, y)
  96.     # 获取地图通行表
  97.     passages = $data_tilesets[$game_map.tileset_id].passages
  98.     # 从层按从上到下的顺序调查循环
  99.     for i in [2, 1, 0]
  100.       # 取得元件 ID
  101.       tile_id = $game_map.data[x, y, i]
  102.       # 取得元件 ID 失败
  103.       if tile_id == nil
  104.         # 不能通行
  105.         return false
  106.       # 如果全方向的障碍物的接触被设置的情况下
  107.       elsif passages[tile_id] & 0x0f == 0x0f
  108.         # 不能通行
  109.         return false
  110.       # 这以外的优先度为 0 的情况下
  111.       elsif $game_map.priorities[tile_id] == 0
  112.         # 可以通行
  113.         return true
  114.       end
  115.     end
  116.     # 可以通行
  117.     return true
  118.   end
  119.   #--------------------------------------------------------------------------
  120.   # ● 判断是否可以打开事件
  121.   #--------------------------------------------------------------------------
  122.   def check_event_custom_start(x, y)
  123.     # 循环检查所有事件
  124.     for event in $game_map.events.values
  125.       bitmap = RPG::Cache.character(event.character_name,event.character_hue)
  126.       cw = bitmap.width / 9#event.animation_frame
  127.       ch = bitmap.height / 8#event.direction_frame
  128.       _x = event.screen_x
  129.       _y = event.screen_y
  130.       d = event.direction
  131.       case event.direction_frame
  132.       when 4
  133.         sy = d > 8 ? 2 : d > 7 ? 3 : d > 6 ? 3 : d > 5 ? 2 : d > 3 ? 1 : d > 2 ? 0 : d > 1 ? 0 : d > 0 ? 1 : 5
  134.       when 8
  135.         sy = d > 8 ? 7 : d > 7 ? 3 : d > 6 ? 6 : d > 5 ? 2 : d > 3 ? 1 : d > 2 ? 5 : d > 1 ? 0 : d > 0 ? 4 : 5
  136.       end
  137.       if x >= _x - cw / 2 and x <= _x + cw / 2 and y >= _y - ch and y <= _y and
  138.         bitmap.get_pixel(x - _x + cw / 2 + event.pattern * cw, y - _y + ch + sy * ch).alpha > 0
  139.         for i in 0...event.list.size
  140.           if ["Item", "Npc"].include?(event.list[i].parameters[0])
  141.             way_x = self.x - event.x
  142.             way_y = self.y - event.y
  143.             if way_x.abs + way_y.abs <= 8 and !self.moving?
  144.               # 矫正主角姿势
  145.               self.straighten
  146.               # 角色面向事件

  147.               # 开启事件
  148.               event.start
  149.               return true
  150.               self.pattern
  151.             else
  152.               @event = event
  153.               return self.moving? ? true : false
  154.             end
  155.           end
  156.         end
  157.       end
  158.     end
  159.     return false
  160.   end
  161.   #--------------------------------------------------------------------------
  162.   # ● 添加鼠标点击动画
  163.   #--------------------------------------------------------------------------
  164.   def add_animation
  165.     x, y = Mouse.get_mouse_pos
  166.     animation = Sprite.new
  167.     animation.visible = false
  168.     animation.bitmap = Bitmap.new("UI/鼠标效果序列图")
  169.     map_x = x - 10 + $game_map.display_x / 4
  170.     map_y = y - 5 + $game_map.display_y / 4
  171.     animation.src_rect.set(0, 0, 24, 13)
  172.     $鼠标效果.push([animation,0,map_x,map_y])
  173.   end
  174.   #--------------------------------------------------------------------------
  175.   # ● 开始移动
  176.   #--------------------------------------------------------------------------
  177.   def player_move
  178.     # 排除无效情况
  179.     unless moving? or $game_system.map_interpreter.running? or
  180.       @move_route_forcing or $game_temp.message_window_showing
  181.       # 若没有完成路径
  182.       if @steps != nil and @paths != nil and @steps <= @paths.size
  183.         # 判断路径
  184.         case @paths[@steps]
  185.         when 6
  186.           move_right
  187.           @steps += 1
  188.         when 4
  189.           move_left
  190.           @steps += 1
  191.         when 2
  192.           move_down
  193.           @steps += 1
  194.         when 8
  195.           move_up
  196.           @steps += 1
  197.         when 1
  198.           move_lower_left
  199.           @steps += 1
  200.         when 3
  201.           move_lower_right
  202.           @steps += 1
  203.         when 7
  204.           move_upper_left
  205.           @steps += 1
  206.         when 9
  207.           move_upper_right
  208.           @steps += 1
  209.         end
  210.         # 若存在未开启事件
  211.         if @event != nil
  212.           way_x = self.x - @event.x
  213.           way_y = self.y - @event.y
  214.           if way_x.abs + way_y.abs <= 8
  215.             # 角色面向事件
  216.             self.turn_toward_player(@event)
  217.             # 矫正主角姿势
  218.             self.straighten
  219.             # 开启事件
  220.             @event.start
  221.             # 终止路径
  222.             @paths = nil
  223.             return
  224.           end
  225.         end
  226.       end
  227.     end
  228.   end
  229.   #--------------------------------------------------------------------------
  230.   # ● 跟随/转向
  231.   #--------------------------------------------------------------------------
  232.   def follow(move = true)
  233.     # 禁止移动的情况下返回
  234.     return if !System.whether_move
  235.     # 选择主角的情况下
  236.     if $select_player
  237.       for i in $鼠标效果
  238.         Picture.dispose(i[0])
  239.       end
  240.       return
  241.     end
  242.     # 鼠标在移动或者转向的情况下
  243.     x, y = Mouse.get_mouse_pos
  244.     # 鼠标在移动中的情况下
  245.     if @mouse_x != x or @mouse_y != y or @display_x != $game_map.display_x or @display_y != $game_map.display_y
  246.       # 添加点击动画
  247.       add_animation if move
  248.       # 获取角色位置
  249.       self_x = self.screen_x
  250.       self_y = self.screen_y
  251.       # 排除无效情况
  252.       unless moving? or $game_system.map_interpreter.running? or
  253.         @move_route_forcing or $game_temp.message_window_showing
  254.         if x > self_x
  255.           if y - self_y > - 0.4 * (x - self_x) and y - self_y < 0.4 * (x - self_x)
  256.             move_right if move
  257.             @direction = 6
  258.           end
  259.           if y - self_y > 0.4 * (x - self_x) and y - self_y < 2.4 * (x - self_x)
  260.             move_lower_right if move
  261.             @direction = 3
  262.           end
  263.           if y - self_y < - 0.4 * (x - self_x) and y - self_y > - 2.4 * (x - self_x)
  264.             move_upper_right if move
  265.             @direction = 9
  266.           end
  267.           if y - self_y > 2.4 * (x - self_x)
  268.             move_down if move
  269.             @direction = 2
  270.           end
  271.           if y - self_y < - 2.4 * (x - self_x)
  272.             move_up if move
  273.             @direction = 8
  274.           end
  275.         end
  276.         if x < self_x
  277.           if y - self_y > - 0.4 * (self_x - x) and y - self_y < 0.4 * (self_x - x)
  278.             move_left if move
  279.             @direction = 4
  280.           end
  281.           if y - self_y > 0.4 * (self_x - x) and y - self_y < 2.4 * (self_x - x)
  282.             move_lower_left if move
  283.             @direction = 1
  284.           end
  285.           if y - self_y < - 0.4 * (self_x - x) and y - self_y > - 2.4 * (self_x - x)
  286.             move_upper_left if move
  287.             @direction = 7
  288.           end
  289.           if y - self_y > 2.4 * (self_x - x)
  290.             move_down if move
  291.             @direction = 2
  292.           end
  293.           if y - self_y < - 2.4 * (self_x - x)
  294.             move_up if move
  295.             @direction = 8
  296.           end
  297.         end
  298.       end
  299.       # 记忆变量
  300.       @mouse_x,@mouse_y = Mouse.get_mouse_pos
  301.       @display_x = $game_map.display_x
  302.       @display_y = $game_map.display_y
  303.     end
  304.   end
  305. end
复制代码
按照图块来说的话,7X7大小的范围吧,

点评

唔~,等我把我的那个工程鼠标改好后,再改你的吧。同样的功能。  发表于 2014-9-7 17:23
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1556
在线时间
626 小时
注册时间
2010-8-5
帖子
451
5
 楼主| 发表于 2014-9-9 22:30:28 | 只看该作者
@芯☆淡茹水 你的那个工程鼠标改好了木
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1556
在线时间
626 小时
注册时间
2010-8-5
帖子
451
6
 楼主| 发表于 2014-9-11 12:05:28 | 只看该作者
本帖最后由 jiahui5592986 于 2014-9-17 21:27 编辑

@芯☆淡茹水
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1556
在线时间
626 小时
注册时间
2010-8-5
帖子
451
7
 楼主| 发表于 2014-9-17 21:25:07 | 只看该作者
@芯☆淡茹水
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
33512
在线时间
5108 小时
注册时间
2012-11-19
帖子
4878

开拓者

8
发表于 2014-9-18 16:23:23 | 只看该作者
—-—!  给出的非鼠标脚本,但是好歹也能弄。
不知道你的工程读取事件行走图的路径,不能用像素判断,只能勉强用矩形。
还有,无法测试,只能估摸着来。
改了 2 个地方,搜索 X☆R
  1. #==============================================================================
  2. # ■ Game_Player
  3. #------------------------------------------------------------------------------
  4. #  处理主角的类。事件启动的判定、以及地图的滚动等功能。
  5. # 本类的实例请参考 $game_player。
  6. #==============================================================================

  7. class Game_Player < Game_Character
  8.   if @self_alias == nil
  9.     alias self_update update
  10.     @self_alias = true
  11.   end
  12.   #--------------------------------------------------------------------------
  13.   # X☆R 添加:鼠标指向位置是否是NPC
  14.   #--------------------------------------------------------------------------
  15.   def get_npc
  16.     x, y = Mouse.get_mouse_pos
  17.     for event in $game_map.events.values
  18.       next if event.character_name == ""
  19.       if x > event.screen_x - 16 and x < event.screen_x + 16 and
  20.        y > event.screen_y - 64 and y < event.screen_y
  21.         return event
  22.       end
  23.     end
  24.     return nil
  25.   end
  26.   #--------------------------------------------------------------------------
  27.   # ● 完整鼠标系统
  28.   #--------------------------------------------------------------------------
  29.   def update
  30.     # 搜索路径
  31.     seek_path
  32.    
  33.     # X☆R 添加:点击鼠标左键,并且距离小于 7 ,启动事件。
  34.     if Mouse.trigger?(0x01)
  35.       if get_npc != nil and (self.x-get_npc.x).abs + (self.y-get_npc.y).abs < 7
  36.         get_npc.start
  37.         return
  38.       end
  39.     end
  40.    
  41.     # 当持续按下鼠标左键时
  42.     if Mouse.press?(0x01)
  43.       return if !System.whether_move
  44.       @count = 20 if @count.nil?
  45.       @count -= 1
  46.       if @count <= 0
  47.         @self_state = 2
  48.         @count = nil
  49.       end
  50.       follow(true) if @self_state != 2 and @count < 18
  51.     elsif Mouse.trigger?(0x02)
  52.       @self_state = 0
  53.       follow(false)
  54.     else
  55.       @count = 20
  56.     end
  57.     # 移动
  58.     if @self_state == 1
  59.       player_move
  60.     elsif @paths != nil and @self_state == 2
  61.       follow(true)
  62.     end
  63.     # 别名
  64.     self_update
  65.   end
  66.   #--------------------------------------------------------------------------
  67.   # ● 搜索路径
  68.   #--------------------------------------------------------------------------
  69.   def seek_path
  70.     # 获取鼠标在画面的坐标
  71.     x, y = Mouse.get_mouse_pos
  72.     # 当按下鼠标左键时
  73.     if Mouse.trigger?(0x01)
  74.       # 禁止移动的情况下返回
  75.       return if !System.whether_move
  76.       # 排除各种无效的情况
  77.       unless $game_system.map_interpreter.running? or
  78.         @move_route_forcing or $game_temp.message_window_showing
  79.         # 获取目标点
  80.         trg_x = (x + $game_map.display_x / 4) / 32
  81.         trg_y = (y + $game_map.display_y / 4) / 32
  82.         # 目标点不可以通行的情况下返回
  83.         return unless target_passable?(trg_x,trg_y)
  84.         # 初始化未开启事件
  85.         @event = nil
  86.         # 判断是否可以打开事件
  87.         event_start = check_event_custom_start(x, y)
  88.         # 若不能开启事件
  89.         if !event_start
  90.           # 初始化
  91.           @paths = []
  92.           @steps = 0
  93.           @self_state = 1
  94.           # 若存在未开启事件
  95.           if @event != nil
  96.             trg_x,trg_y = @event.x,@event.y
  97.           end
  98.           # 若目标不为自身则开始寻路
  99.           if trg_x != self.x or trg_y != self.y
  100.             # 添加点击动画
  101.             add_animation if @event.nil?
  102.             # 获得路径
  103.             @paths = Find_Path.new.find_player_short_path(trg_x, trg_y, x, y)
  104.           end
  105.         else
  106.           # 角色面向事件
  107.           self.turn_toward_player(@event) if [email protected]? and !self.moving?
  108.           @steps = @paths = nil
  109.         end
  110.       end
  111.     end
  112.   end
  113.   #--------------------------------------------------------------------------
  114.   # ● 可以通行判定
  115.   #     x : X 坐标
  116.   #     y : Y 坐标
  117.   #--------------------------------------------------------------------------
  118.   def target_passable?(x, y)
  119.     # 获取地图通行表
  120.     passages = $data_tilesets[$game_map.tileset_id].passages
  121.     # 从层按从上到下的顺序调查循环
  122.     for i in [2, 1, 0]
  123.       # 取得元件 ID
  124.       tile_id = $game_map.data[x, y, i]
  125.       # 取得元件 ID 失败
  126.       if tile_id == nil
  127.         # 不能通行
  128.         return false
  129.       # 如果全方向的障碍物的接触被设置的情况下
  130.       elsif passages[tile_id] & 0x0f == 0x0f
  131.         # 不能通行
  132.         return false
  133.       # 这以外的优先度为 0 的情况下
  134.       elsif $game_map.priorities[tile_id] == 0
  135.         # 可以通行
  136.         return true
  137.       end
  138.     end
  139.     # 可以通行
  140.     return true
  141.   end
  142.   #--------------------------------------------------------------------------
  143.   # ● 判断是否可以打开事件
  144.   #--------------------------------------------------------------------------
  145.   def check_event_custom_start(x, y)
  146.     # 循环检查所有事件
  147.     for event in $game_map.events.values
  148.       bitmap = RPG::Cache.character(event.character_name,event.character_hue)
  149.       cw = bitmap.width / 9#event.animation_frame
  150.       ch = bitmap.height / 8#event.direction_frame
  151.       _x = event.screen_x
  152.       _y = event.screen_y
  153.       d = event.direction
  154.       case event.direction_frame
  155.       when 4
  156.         sy = d > 8 ? 2 : d > 7 ? 3 : d > 6 ? 3 : d > 5 ? 2 : d > 3 ? 1 : d > 2 ? 0 : d > 1 ? 0 : d > 0 ? 1 : 5
  157.       when 8
  158.         sy = d > 8 ? 7 : d > 7 ? 3 : d > 6 ? 6 : d > 5 ? 2 : d > 3 ? 1 : d > 2 ? 5 : d > 1 ? 0 : d > 0 ? 4 : 5
  159.       end
  160.       if x >= _x - cw / 2 and x <= _x + cw / 2 and y >= _y - ch and y <= _y and
  161.         bitmap.get_pixel(x - _x + cw / 2 + event.pattern * cw, y - _y + ch + sy * ch).alpha > 0
  162.         for i in 0...event.list.size
  163.           if ["Item", "Npc"].include?(event.list[i].parameters[0])
  164.             way_x = self.x - event.x
  165.             way_y = self.y - event.y
  166.             if way_x.abs + way_y.abs <= 8 and !self.moving?
  167.               # 矫正主角姿势
  168.               self.straighten
  169.               # 角色面向事件

  170.               # 开启事件
  171.               event.start
  172.               return true
  173.               self.pattern
  174.             else
  175.               @event = event
  176.               return self.moving? ? true : false
  177.             end
  178.           end
  179.         end
  180.       end
  181.     end
  182.     return false
  183.   end
  184.   #--------------------------------------------------------------------------
  185.   # ● 添加鼠标点击动画
  186.   #--------------------------------------------------------------------------
  187.   def add_animation
  188.     x, y = Mouse.get_mouse_pos
  189.     animation = Sprite.new
  190.     animation.visible = false
  191.     animation.bitmap = Bitmap.new("UI/鼠标效果序列图")
  192.     map_x = x - 10 + $game_map.display_x / 4
  193.     map_y = y - 5 + $game_map.display_y / 4
  194.     animation.src_rect.set(0, 0, 24, 13)
  195.     $鼠标效果.push([animation,0,map_x,map_y])
  196.   end
  197.   #--------------------------------------------------------------------------
  198.   # ● 开始移动
  199.   #--------------------------------------------------------------------------
  200.   def player_move
  201.     # 排除无效情况
  202.     unless moving? or $game_system.map_interpreter.running? or
  203.       @move_route_forcing or $game_temp.message_window_showing
  204.       # 若没有完成路径
  205.       if @steps != nil and @paths != nil and @steps <= @paths.size
  206.         # 判断路径
  207.         case @paths[@steps]
  208.         when 6
  209.           move_right
  210.           @steps += 1
  211.         when 4
  212.           move_left
  213.           @steps += 1
  214.         when 2
  215.           move_down
  216.           @steps += 1
  217.         when 8
  218.           move_up
  219.           @steps += 1
  220.         when 1
  221.           move_lower_left
  222.           @steps += 1
  223.         when 3
  224.           move_lower_right
  225.           @steps += 1
  226.         when 7
  227.           move_upper_left
  228.           @steps += 1
  229.         when 9
  230.           move_upper_right
  231.           @steps += 1
  232.         end
  233.         # 若存在未开启事件
  234.         if @event != nil
  235.           way_x = self.x - @event.x
  236.           way_y = self.y - @event.y
  237.           if way_x.abs + way_y.abs <= 8
  238.             # 角色面向事件
  239.             self.turn_toward_player(@event)
  240.             # 矫正主角姿势
  241.             self.straighten
  242.             # 开启事件
  243.             @event.start
  244.             # 终止路径
  245.             @paths = nil
  246.             return
  247.           end
  248.         end
  249.       end
  250.     end
  251.   end
  252.   #--------------------------------------------------------------------------
  253.   # ● 跟随/转向
  254.   #--------------------------------------------------------------------------
  255.   def follow(move = true)
  256.     # 禁止移动的情况下返回
  257.     return if !System.whether_move
  258.     # 选择主角的情况下
  259.     if $select_player
  260.       for i in $鼠标效果
  261.         Picture.dispose(i[0])
  262.       end
  263.       return
  264.     end
  265.     # 鼠标在移动或者转向的情况下
  266.     x, y = Mouse.get_mouse_pos
  267.     # 鼠标在移动中的情况下
  268.     if @mouse_x != x or @mouse_y != y or @display_x != $game_map.display_x or @display_y != $game_map.display_y
  269.       # 添加点击动画
  270.       add_animation if move
  271.       # 获取角色位置
  272.       self_x = self.screen_x
  273.       self_y = self.screen_y
  274.       # 排除无效情况
  275.       unless moving? or $game_system.map_interpreter.running? or
  276.         @move_route_forcing or $game_temp.message_window_showing
  277.         if x > self_x
  278.           if y - self_y > - 0.4 * (x - self_x) and y - self_y < 0.4 * (x - self_x)
  279.             move_right if move
  280.             @direction = 6
  281.           end
  282.           if y - self_y > 0.4 * (x - self_x) and y - self_y < 2.4 * (x - self_x)
  283.             move_lower_right if move
  284.             @direction = 3
  285.           end
  286.           if y - self_y < - 0.4 * (x - self_x) and y - self_y > - 2.4 * (x - self_x)
  287.             move_upper_right if move
  288.             @direction = 9
  289.           end
  290.           if y - self_y > 2.4 * (x - self_x)
  291.             move_down if move
  292.             @direction = 2
  293.           end
  294.           if y - self_y < - 2.4 * (x - self_x)
  295.             move_up if move
  296.             @direction = 8
  297.           end
  298.         end
  299.         if x < self_x
  300.           if y - self_y > - 0.4 * (self_x - x) and y - self_y < 0.4 * (self_x - x)
  301.             move_left if move
  302.             @direction = 4
  303.           end
  304.           if y - self_y > 0.4 * (self_x - x) and y - self_y < 2.4 * (self_x - x)
  305.             move_lower_left if move
  306.             @direction = 1
  307.           end
  308.           if y - self_y < - 0.4 * (self_x - x) and y - self_y > - 2.4 * (self_x - x)
  309.             move_upper_left if move
  310.             @direction = 7
  311.           end
  312.           if y - self_y > 2.4 * (self_x - x)
  313.             move_down if move
  314.             @direction = 2
  315.           end
  316.           if y - self_y < - 2.4 * (self_x - x)
  317.             move_up if move
  318.             @direction = 8
  319.           end
  320.         end
  321.       end
  322.       # 记忆变量
  323.       @mouse_x,@mouse_y = Mouse.get_mouse_pos
  324.       @display_x = $game_map.display_x
  325.       @display_y = $game_map.display_y
  326.     end
  327.   end
  328. end
复制代码

点评

推荐代码使用[pre lang="Ruby"][/pre],比原来的[code]能好点,这样可以缩短帖子的长度。  发表于 2014-9-18 21:42

评分

参与人数 1星屑 +100 梦石 +1 收起 理由
RyanBern + 100 + 1 认可答案

查看全部评分

xp vx va mv  va mz 各类型脚本/插件定制
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1556
在线时间
626 小时
注册时间
2010-8-5
帖子
451
9
 楼主| 发表于 2014-9-18 21:38:48 | 只看该作者
芯☆淡茹水 发表于 2014-9-18 16:23
—-—!  给出的非鼠标脚本,但是好歹也能弄。
不知道你的工程读取事件行走图的路径,不能用像素判断,只能 ...

大哥还是屌。。。
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1556
在线时间
626 小时
注册时间
2010-8-5
帖子
451
10
 楼主| 发表于 2014-9-21 11:09:40 | 只看该作者
芯☆淡茹水 发表于 2014-9-18 16:23
—-—!  给出的非鼠标脚本,但是好歹也能弄。
不知道你的工程读取事件行走图的路径,不能用像素判断,只能 ...

有个BUG。如果设置一个NPC。内容是显示文章。

现在,在一定范围内点击是触发了。
BUT。。显示的文章点击后[也就是文章显示完毕]
主角就自动跑NPC跟前去了。

意思就是,点击事件后。触发了事件内容。但是事件内容结束后。角色又跑到了事件旁边。

能否让事件内容结束后,角色还是原来的位置【点击NPC时候的位置,也就是不移动】
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-12-3 04:42

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表