查看: 1959|回复: 4

[已经过期] 小地图 生成事件消失

[复制链接]
梦石
0
星屑
50
在线时间
70 小时
注册时间
2014-10-11
回帖
38
发表于 2015-2-26 00:53:32 | 显示全部楼层 |阅读模式

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

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

×
我用了一个小地图脚本 可是当我用多事件脚本生成一个新的事件时 小地图会自动关闭 当切换到主菜单再切换回来时 小地图又重新出现 请问该如何解决

小地图脚本:

[pre lang="ruby"]#==============================================================================
class Midmap
#==============================================================================
  
  #显示坐标
  MX = 10     #显示在地图X坐标
  MY = 10     #显示在地图Y坐标
  
  #显示窗口的大小
  GX = 32     #窗口中最多显示GX格
  GY = 24     #窗口中最多显示GY格
  
  #缩略点的大小
  DX = 5      #每格大小
  
  #原点
  OO = 0      #0左上(小地图对齐在视区的左上) 1右上
  
  #缩略图的颜色(分别是<红,黄,蓝,透明度>),不需要某种把透明度调0即可
  COLOR_A = Color.new(0,222,222,192)        #底色
  COLOR_B = Color.new(128,128,128,192)    #可通行色
  COLOR_C = Color.new(255,255,255,192)  #描边色
  
  #事件点的颜色,更多请在95行照着插入
  #默认隐藏事件:1.含有"EV"的事件名和没有行走图 2.含有"EV"的事件名和没有执行内容
  EVENT_P = Color.new(255,128,128)                #主角颜色
  EVENT_Z = Color.new(255,255,0)                  #不含"EV"的其他颜色
  EVENT_A = ["DIREN",Color.new(255,0,0)]          #事件名"Enemy", 颜色
  EVENT_B = ["partner",Color.new(0,255,0)]  #事件名"Trans", 颜色
  EVENT_C = ["CsNotShadow",Color.new(255,255,255)]            #自定义事件名 , 颜色
  
#==============================================================================

  def initialize
    @pic = []
    star
  end
  def star
    width = $game_map.width
    height = $game_map.height
    @viewport = Viewport.new(MX,MY,GX*DX+1,GY*DX+1)
    for i in 0..2
      @pic = Sprite.new(@viewport)
      @pic.bitmap = Bitmap.new(width*DX+1,height*DX+1)
      @pic.x = (GX - width)*DX if OO == 1
      @pic.z = 50#0000
    end
    @pic[0].bitmap.fill_rect(0,0,width*DX+1,height*DX+1, COLOR_A)
    @pic[0].z -= 1
    @pic[2].z += 1
    @map = $game_map
    for x in 0...width
      for y in 0...height
        next unless @map.pass?(x,y,0)
        @pic[1].bitmap.fill_rect(x*DX+1,y*DX+1,DX-1,DX-1, COLOR_B)
        if @map.pass?(x,y,2) and @map.pass?(x,y+1,8)
          @pic[1].bitmap.fill_rect(x*DX+1,y*DX+DX,DX-1,1, COLOR_B)
        else
          @pic[1].bitmap.fill_rect(x*DX,y*DX+DX,DX+1,1, COLOR_C)
        end
        if @map.pass?(x,y,6) and @map.pass?(x+1,y,4)
          @pic[1].bitmap.fill_rect(x*DX+DX,y*DX+1,1,DX-1, COLOR_B)
        else
          @pic[1].bitmap.fill_rect(x*DX+DX,y*DX,1,DX+1, COLOR_C)
        end
        unless @map.pass?(x,y-1,0)
          @pic[1].bitmap.fill_rect(x*DX,y*DX,DX+1,1, COLOR_C)
        end
        unless @map.pass?(x-1,y,0)
          @pic[1].bitmap.fill_rect(x*DX,y*DX,1,DX+1, COLOR_C)
        end
        next unless @map.pass?(x,y,6)
        next unless @map.pass?(x,y,2)
        next unless @map.pass?(x+1,y,4)
        next unless @map.pass?(x+1,y,2)
        next unless @map.pass?(x,y+1,8)
        next unless @map.pass?(x,y+1,6)
        next unless @map.pass?(x+1,y+1,8)
        next unless @map.pass?(x+1,y+1,4)
        @pic[1].bitmap.fill_rect(x*DX+DX,y*DX+DX,1,1, COLOR_B)
      end
    end
    update
  end
  def update
   
    @pic[2].bitmap.clear
    for i in @map.events.keys
   #  if i >=200
     #    if  @map.events.jiazai == 0
      #   $game_variables[80] += 1
      #   end
    #   end
  #     $game_variables[81] = @map.events.keys

           
      next if/\E\V/ === @map.events.event.name #@map.events.list.size <= 1 and
              #/\E\V/ === @map.events.event.name
      next if @map.events.character_name == "" and
              /\E\V/ === @map.events.event.name
      color = EVENT_Z
      color = EVENT_A[1] if @map.events.event.name.include?(EVENT_A[0])
      color = EVENT_B[1] if @map.events.event.name == EVENT_B[0]
      color = EVENT_C[1] if @map.events.event.name == EVENT_C[0]
      x = @map.events.x
      y = @map.events.y
      @pic[2].bitmap.fill_rect(x*DX+1,y*DX+1,DX-1,DX-1, color)
    end
    x = $game_player.x
    y = $game_player.y
    @pic[2].bitmap.fill_rect(x*DX+1,y*DX+1,DX-1,DX-1, EVENT_P)
    if @map.width > GX
      x = GX/2 if x < GX/2
      x = @map.width - GX/2 if @map.width - x < GX/2
      @pic[1].x = (GX/2 - x)*DX
      @pic[2].x = (GX/2 - x)*DX
    end
    if @map.height > GY
      y = GY/2 if y < GY/2
      y = @map.height - GY/2 if @map.height - y < GY/2
      @pic[1].y = (GY/2 - y)*DX
      @pic[2].y = (GY/2 - y)*DX
    end
  end
end

#==============================================================================
# ● 默认脚本的更改
#==============================================================================
class Game_Map
  def pass?(x, y, d)
    for i in [2, 1, 0]
      tile_id = data[x, y, i]
      return false if tile_id == nil
      return false if @passages[tile_id] & ((1 << (d / 2 - 1)) & 0x0f) != 0
      return false if @passages[tile_id] & 0x0f == 0x0f
      return true  if @priorities[tile_id] == 0
    end
  end
end

class Game_Event < Game_Character
  attr_reader   :event
end

#添加显示与刷新
class Scene_Map
  def main
   # $game_screen.weather(rand(9), 5, 0)
    @spriteset = Spriteset_Map.new
    @message_window = Window_Message.new
    @midmap = Midmap.new           #★★★
    Graphics.transition
  #  @message_window.z = 555
  $get_all_task
    loop do
      Graphics.update
      Input.update
      update
      if $scene != self
        break
      end
    end
    Graphics.freeze
    @spriteset.dispose
    @message_window.dispose
    if $scene.is_a?(Scene_Title)
      Graphics.transition
      Graphics.freeze
    end
  end
  #--------------------------------------------------------------------------
  # ● 刷新画面
  #--------------------------------------------------------------------------
  def update
    loop do
      $game_map.update
      $game_system.map_interpreter.update
      $game_player.update
      $game_system.update
      $game_screen.update
      unless $game_temp.player_transferring
        break
      end
      transfer_player
      if $game_temp.transition_processing
        break
      end
    end
    @spriteset.update
    @message_window.update
    @midmap.update                                                      #★★★
    if $game_temp.gameover
      $scene = Scene_Gameover.new
      return
    end
    if $game_temp.to_title
      $scene = Scene_Title.new
      return
    end
    if $game_temp.transition_processing
      $game_temp.transition_processing = false
      if $game_temp.transition_name == ""
#        Graphics.transition(20)
      else
        Graphics.transition(40, "Graphics/Transitions/" +
          $game_temp.transition_name)
      end
    end
    if $game_temp.message_window_showing
      return
    end
    if $game_player.encounter_count == 0 and $game_map.encounter_list != []
      unless $game_system.map_interpreter.running? or
             $game_system.encounter_disabled
        n = rand($game_map.encounter_list.size)
        troop_id = $game_map.encounter_list[n]
        if $data_troops[troop_id] != nil
          $game_temp.battle_calling = true
          $game_temp.battle_troop_id = troop_id
          $game_temp.battle_can_escape = true
          $game_temp.battle_can_lose = false
          $game_temp.battle_proc = nil
        end
      end
    end
       if Input.trigger?(Input::B)
     # unless $game_system.map_interpreter.running? or
    #         $game_system.menu_disabled
    unless  $game_system.map_interpreter.running? or
           @move_route_forcing or $game_temp.message_window_showing
        $game_temp.menu_calling = true
        $game_temp.menu_beep = true
      end
    end
    if $DEBUG and Input.press?(Input::F9)
      $game_temp.debug_calling = true
    end
    unless $game_player.moving?
      if $game_temp.battle_calling
        call_battle
      elsif $game_temp.shop_calling
        call_shop
      elsif $game_temp.name_calling
        call_name
      elsif $game_temp.menu_calling
        call_menu
      elsif $game_temp.save_calling
        call_save
      elsif $game_temp.debug_calling
        call_debug
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● 主角的场所移动
  #--------------------------------------------------------------------------
  def transfer_player
    $game_temp.player_transferring = false
    if $game_map.map_id != $game_temp.player_new_map_id
      $game_map.setup($game_temp.player_new_map_id)
    end
    $game_player.moveto($game_temp.player_new_x, $game_temp.player_new_y)
    case $game_temp.player_new_direction
    when 2
      $game_player.turn_down
    when 4
      $game_player.turn_left
    when 6
      $game_player.turn_right
    when 8
      $game_player.turn_up
    end
    $game_player.straighten
    $game_map.update
    @spriteset.dispose
    @spriteset = Spriteset_Map.new
        $game_variables[50] = 0
        $game_variables[43] = 0
     #   $game_screen.start_tone_change(Tone.new(-50,-50,0,255),20)
    @midmap.star                                                        #★★★
    if $game_temp.transition_processing
      $game_temp.transition_processing = false
  #    Graphics.transition(20)
        Graphics.transition#(20, "Graphics/Transitions/" +"010-Random02.png")
    end
    $game_map.autoplay
    Graphics.frame_reset
    Input.update
  end
end
[/pre]
梦石
0
星屑
50
在线时间
186 小时
注册时间
2014-6-14
回帖
184
发表于 2015-2-26 09:48:18 | 显示全部楼层
你还是别用这两个脚本整合吧
这两个脚本水火不相容呀!
回复

使用道具 举报

梦石
0
星屑
50
在线时间
70 小时
注册时间
2014-10-11
回帖
38
 楼主| 发表于 2015-2-26 20:01:16 来自手机 | 显示全部楼层
qq19750508 发表于 2015-2-26 09:48
你还是别用这两个脚本整合吧
这两个脚本水火不相容呀!

应该不会 因为切换到菜单再切换到地图 小地图又有用了    我想加个刷新小地图就能解决了 不知道怎么刷新
回复

使用道具 举报

故九江太守

梦石
0
星屑
314
在线时间
2158 小时
注册时间
2012-12-5
回帖
4323
发表于 2015-2-27 23:03:48 | 显示全部楼层
还是发工程吧
回复

使用道具 举报

梦石
0
星屑
50
在线时间
70 小时
注册时间
2014-10-11
回帖
38
 楼主| 发表于 2015-2-27 23:24:57 | 显示全部楼层
你最珍贵 发表于 2015-2-27 23:03
还是发工程吧

你QQ 多少 我把工程发给你 6R论坛文件在哪上传?
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部