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

Project1

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

[已经解决] 脚本简单问题

 关闭 [复制链接]

Lv3.寻梦者

梦石
0
星屑
1433
在线时间
1705 小时
注册时间
2011-8-17
帖子
818
跳转到指定楼层
1
发表于 2011-10-3 21:51:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 黑舞嗜 于 2011-10-3 21:53 编辑

我有个脚本貌似有点冲突,然后我把Game_Event的41与43行(默认的脚本)删掉以后就不会冲突了
请问删掉这两段有什么影响么?

(下面是默认的脚本)
  1. #==============================================================================
  2. # ■ Game_Event
  3. #------------------------------------------------------------------------------
  4. #  处理事件的类。条件判断、事件页的切换、并行处理、执行事件功能
  5. # 在 Game_Map 类的内部使用。
  6. #==============================================================================

  7. class Game_Event < Game_Character
  8.   #--------------------------------------------------------------------------
  9.   # ● 定义实例变量
  10.   #--------------------------------------------------------------------------
  11.   attr_reader   :trigger                  # 触发条件
  12.   attr_reader   :list                     # 执行内容
  13.   attr_reader   :starting                 # 启动中标志
  14.   #--------------------------------------------------------------------------
  15.   # ● 初始化对像
  16.   #     map_id : 地图 ID
  17.   #     event  : 事件 (RPG::Event)
  18.   #--------------------------------------------------------------------------
  19.   def initialize(map_id, event)
  20.     super()
  21.     @map_id = map_id
  22.     @event = event
  23.     @id = @event.id
  24.     @erased = false
  25.     @starting = false
  26.     @through = true
  27.     moveto(@event.x, @event.y)            # 初期位置的移动
  28.     refresh
  29.   end
  30.   #--------------------------------------------------------------------------
  31.   # ● 清除启动中标志
  32.   #--------------------------------------------------------------------------
  33.   def clear_starting
  34.     @starting = false
  35.   end
  36.   #--------------------------------------------------------------------------
  37.   # ● 启动事件
  38.   #--------------------------------------------------------------------------
  39.   def start
  40.     return if @list.size <= 1                   # 执行内容不为空的情况下
  41.     @starting = true
  42.     lock if @trigger < 3
  43.     unless $game_map.interpreter.running?
  44.       $game_map.interpreter.setup_starting_event
  45.     end
  46.   end
  47.   #--------------------------------------------------------------------------
  48.   # ● 暂时消失
  49.   #--------------------------------------------------------------------------
  50.   def erase
  51.     @erased = true
  52.     refresh
  53.   end
  54.   #--------------------------------------------------------------------------
  55.   # ● 判断事件页出现条件
  56.   #--------------------------------------------------------------------------
  57.   def conditions_met?(page)
  58.     c = page.condition
  59.     if c.switch1_valid      # 开关1
  60.       return false if $game_switches[c.switch1_id] == false
  61.     end
  62.     if c.switch2_valid      # 开关2
  63.       return false if $game_switches[c.switch2_id] == false
  64.     end
  65.     if c.variable_valid     # 变量
  66.       return false if $game_variables[c.variable_id] < c.variable_value
  67.     end
  68.     if c.self_switch_valid  # 独立开关
  69.       key = [@map_id, @event.id, c.self_switch_ch]
  70.       return false if $game_self_switches[key] != true
  71.     end
  72.     if c.item_valid         # 物品
  73.       item = $data_items[c.item_id]
  74.       return false if $game_party.item_number(item) == 0
  75.     end
  76.     if c.actor_valid        # 角色
  77.       actor = $game_actors[c.actor_id]
  78.       return false unless $game_party.members.include?(actor)
  79.     end
  80.     return true   # 条件符合
  81.   end
  82.   #--------------------------------------------------------------------------
  83.   # ● 设置事件页
  84.   #--------------------------------------------------------------------------
  85.   def setup(new_page)
  86.     @page = new_page
  87.     if @page == nil
  88.       @tile_id = 0
  89.       @character_name = ""
  90.       @character_index = 0
  91.       @move_type = 0
  92.       @through = true
  93.       @trigger = nil
  94.       @list = nil
  95.       @interpreter = nil
  96.     else
  97.       @tile_id = @page.graphic.tile_id
  98.       @character_name = @page.graphic.character_name
  99.       @character_index = @page.graphic.character_index
  100.       if @original_direction != @page.graphic.direction
  101.         @direction = @page.graphic.direction
  102.         @original_direction = @direction
  103.         @prelock_direction = 0
  104.       end
  105.       if @original_pattern != @page.graphic.pattern
  106.         @pattern = @page.graphic.pattern
  107.         @original_pattern = @pattern
  108.       end
  109.       @move_type = @page.move_type
  110.       @move_speed = @page.move_speed
  111.       @move_frequency = @page.move_frequency
  112.       @move_route = @page.move_route
  113.       @move_route_index = 0
  114.       @move_route_forcing = false
  115.       @walk_anime = @page.walk_anime
  116.       @step_anime = @page.step_anime
  117.       @direction_fix = @page.direction_fix
  118.       @through = @page.through
  119.       @priority_type = @page.priority_type
  120.       @trigger = @page.trigger
  121.       @list = @page.list
  122.       @interpreter = nil
  123.       if @trigger == 4                       # 触发条件为「并行处理」
  124.         @interpreter = Game_Interpreter.new  # 生成并行处理用解释器
  125.       end
  126.     end
  127.     update_bush_depth
  128.   end
  129.   #--------------------------------------------------------------------------
  130.   # ● 刷新
  131.   #--------------------------------------------------------------------------
  132.   def refresh
  133.     new_page = nil
  134.     unless @erased                          # 非暂时消除的情况下
  135.       for page in @event.pages.reverse      # 从编号大的事件页按顺序调查
  136.         next unless conditions_met?(page)   #  判断开始条件只否符合
  137.         new_page = page
  138.         break
  139.       end
  140.     end
  141.     if new_page != @page            # 与上次不同一事件页的情况下
  142.       clear_starting                # 清除启动中标志
  143.       setup(new_page)               # 设置新事件页
  144.       check_event_trigger_auto      # 自动事件启动判定
  145.     end
  146.   end
  147.   #--------------------------------------------------------------------------
  148.   # ● 接触事件启动判定
  149.   #--------------------------------------------------------------------------
  150.   def check_event_trigger_touch(x, y)
  151.     return if $game_map.interpreter.running?
  152.     x +=  $game_map.width if $game_map.loop_horizontal? and x < 0
  153.     y +=  $game_map.height if $game_map.loop_vertical? and y < 0   
  154.     if @trigger == 2 and $game_player.pos?(x, y)
  155.       start if not jumping? and @priority_type == 1
  156.     end
  157.   end
  158.   
  159.   #--------------------------------------------------------------------------
  160.   # ● 自动事件启动判定
  161.   #--------------------------------------------------------------------------
  162.   def check_event_trigger_auto
  163.     start if @trigger == 3
  164.   end
  165.   #--------------------------------------------------------------------------
  166.   # ● 更新画面
  167.   #--------------------------------------------------------------------------
  168.   def update
  169.     super
  170.     check_event_trigger_auto                    # 自动事件启动判定
  171.     if @interpreter != nil                      # 并行处理的情况下
  172.       unless @interpreter.running?              # 不在执行中的场合的情况下
  173.         @interpreter.setup(@list, @event.id)    # 设置事件
  174.       end
  175.       @interpreter.update                       # 更新解释器
  176.     end
  177.   end
  178. end
复制代码
roguelike求生RPG研发中....

Lv1.梦旅人

Mr.Gandum

梦石
0
星屑
226
在线时间
2070 小时
注册时间
2007-1-31
帖子
3039

贵宾

2
发表于 2011-10-3 21:58:08 | 只看该作者
当执行内容为空的时候也会执行。
可能会出现错误。

点评

额....怎样会错误,能说明白点么...(暂时没发现有什么错误)  发表于 2011-10-3 22:00
回复

使用道具 举报

Lv5.捕梦者 (管理员)

老黄鸡

梦石
0
星屑
42864
在线时间
7624 小时
注册时间
2009-7-6
帖子
13506

开拓者贵宾

3
发表于 2011-10-3 22:57:02 | 只看该作者
楼上乱讲,这会导致多个事件同时运行产生各种bug

点评

汗~这么悲剧~郁闷了  发表于 2011-10-3 23:04
RGDirect - DirectX驱动的RGSS,点我了解.
RM全系列成套系统定制请联系QQ1213237796
不接受对其他插件维护的委托
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-9 02:13

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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