질문과 답변

Extra Form

셀프변수스크립트를넣고 세이브하려니까  충돌뜨네요 고칠수있는방법좀요..


#=============================================================================
# ** SG Self Variables B
#=============================================================================
# sandgolem
# Version 1
# 19.04.06
#=============================================================================
#
# To use this script, use variables #1 - 3 in any events.
# It'll be whatever that event's self variable for it is.
# This also works for event page conditions
# In battle, these are temporary variables that is reset with each.
#
#=============================================================================
#
# To check for updates or find more scripts, visit:
#      http://www.gamebaker.com/rmxp/scripts/
#
# To use this script, copy it and insert it in a new section above "Main",
# but under the default scripts. Needs to be under SG Script Control, but
# above any that alias Game_Event's refresh.
#
# Have problems? You can leave me a message at:
# http://www.gamebaker.com/users/sandgolem
#
#=============================================================================

class Scene_Title
  alias sandgolem_selfvarb_title_main main
  def main
    $sg_self_variables = {}
    sandgolem_selfvarb_title_main
  end
end   

class Scene_Save < Scene_File   
  alias sandgolem_selfvarb_save_write write_save_data
  def write_save_data(file)
    $game_sg['selfvars'] = $sg_self_variables
    sandgolem_selfvarb_save_write(file) 
    $game_sg['selfvars'] = nil
  end
end

class Scene_Load < Scene_File     
  alias sandgolem_selfvarb_load_read read_save_data
  def read_save_data(file) 
    sandgolem_selfvarb_load_read(file)
    if $game_sg['selfvars'] != nil
      $sg_self_variables = $game_sg['selfvars']
      $game_sg['selfvars'] = nil
    end   
  end
end

class Scene_Battle
  alias sandgolem_selfvarb_battle_main main
  def main
    for i in 1 .. 3
      $game_variables[i] = 0
    end
    sandgolem_selfvarb_battle_main
  end
end

class Interpreter
  alias sandgolem_selfvarb_interp_execcommand execute_command
  def execute_command
    if $scene.is_a?(Scene_Map)
      for i in 1 .. 3
        key = [@map_id, @event_id, i]
        if $sg_self_variables[key] != nil
          $game_variables[i] = $sg_self_variables[key]
        else
          $game_variables[i] = 0
        end
      end
    end
    sandgolem_selfvarb_interp_execcommand
  end
 
  alias sandgolem_selfvarb_interp_command122 command_122
  def command_122
    sandgolem_selfvarb_interp_command122
    if @parameters[0] <= 3 && $scene.is_a?(Scene_Map)
      for i in @parameters[0] .. @parameters[1]
        if i <= 3
          key = [@map_id, @event_id, i]
          $sg_self_variables[key] = $game_variables[i]
        end
      end
      $game_map.need_refresh = true
    end
  end
end

class Game_Event < Game_Character
 
  def refresh
    new_page = nil
    unless @erased
      for page in @event.pages.reverse
        c = page.condition
        if c.switch1_valid
          if $game_switches[c.switch1_id] == false
            next
          end
        end
        if c.switch2_valid
          if $game_switches[c.switch2_id] == false
            next
          end
        end
#------------------------------------------------------------------------------
# Begin SG Self Variables edit
#------------------------------------------------------------------------------
        if c.variable_valid
          if c.variable_id <= 3
            key = [$game_map.map_id, @event.id, c.variable_id]
            if $sg_self_variables[key] != nil
              if $sg_self_variables[key] < c.variable_value
                next
              end
            else
              next
            end
          elsif $game_variables[c.variable_id] < c.variable_value
            next
          end
        end
#------------------------------------------------------------------------------
# End SG Self Variables edit
#------------------------------------------------------------------------------
        if c.self_switch_valid
          key = [@map_id, @event.id, c.self_switch_ch]
          if $game_self_switches[key] != true
            next
          end
        end
        new_page = page
        break
      end
    end
    if new_page == @page
      return
    end
    @page = new_page
    clear_starting
    if @page == nil
      @tile_id = 0
      @character_name = ""
      @character_hue = 0
      @move_type = 0
      @through = true
      @trigger = nil
      @list = nil
      @interpreter = nil
      return
    end
    @tile_id = @page.graphic.tile_id
    @character_name = @page.graphic.character_name
    @character_hue = @page.graphic.character_hue
    if @original_direction != @page.graphic.direction
      @direction = @page.graphic.direction
      @original_direction = @direction
      @prelock_direction = 0
    end
    if @original_pattern != @page.graphic.pattern
      @pattern = @page.graphic.pattern
      @original_pattern = @pattern
    end
    @opacity = @page.graphic.opacity
    @blend_type = @page.graphic.blend_type
    @move_type = @page.move_type
    @move_speed = @page.move_speed
    @move_frequency = @page.move_frequency
    @move_route = @page.move_route
    @move_route_index = 0
    @move_route_forcing = false
    @walk_anime = @page.walk_anime
    @step_anime = @page.step_anime
    @direction_fix = @page.direction_fix
    @through = @page.through
    @always_on_top = @page.always_on_top
    @trigger = @page.trigger
    @list = @page.list
    @interpreter = nil
    if @trigger == 4
      @interpreter = Interpreter.new
    end
    check_event_trigger_auto
  end
end


---------------------------------여기까지 셀프변수 스크립트


  #--------------------------------------------------------------------------
  # ● 공개 인스턴스 변수
  #--------------------------------------------------------------------------
  attr_reader   :filename                 # 파일명
  attr_reader   :selected                 # 선택 상태
  #--------------------------------------------------------------------------
  # ● 오브젝트 초기화
  #     file_index : 세이브 파일의 인덱스 (0~3)
  #     filename   : 파일명
  #--------------------------------------------------------------------------
  def initialize(file_index, filename)
    super(0, 64 + file_index % 4 * 104, 640, 104)
    self.contents = Bitmap.new(width - 32, height - 32)
    @file_index = file_index
    @filename = "Save#{@file_index + 1}.rxdata"
    @time_stamp = Time.at(0)
    @file_exist = FileTest.exist?(@filename)
    if @file_exist
      file = File.open(@filename, "r")
      @time_stamp = file.mtime
      @characters = Marshal.load(file)
      @frame_count = Marshal.load(file)
      @game_system = Marshal.load(file)
      @game_switches = Marshal.load(file)
      @game_variables = Marshal.load(file)
      @total_sec = @frame_count / Graphics.frame_rate
      file.close
    end
    refresh
    @selected = false
  end
  #--------------------------------------------------------------------------
  # ● 리프레쉬
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    # 파일 번호를 묘화
    self.contents.font.color = normal_color
    name = "파일 #{@file_index + 1}"
    self.contents.draw_text(4, 0, 600, 32, name)
    @name_width = contents.text_size(name).width
    # 세이브 파일이 존재하는 경우
    if @file_exist
      # 캐릭터를 묘화
      for i in 0...@characters.size
        bitmap = RPG::Cache.character(@characters[i][0], @characters[i][1])
        cw = bitmap.rect.width / 4
        ch = bitmap.rect.height / 4
        src_rect = Rect.new(0, 0, cw, ch)
        x = 300 - @characters.size * 32 + i * 64 - cw / 2
        self.contents.blt(x, 68 - ch, bitmap, src_rect)
      end
      # 플레이 시간을 묘화
      hour = @total_sec / 60 / 60
      min = @total_sec / 60 % 60
      sec = @total_sec % 60
      time_string = sprintf("%02d:%02d:%02d", hour, min, sec)
      self.contents.font.color = normal_color
      self.contents.draw_text(4, 8, 600, 32, time_string, 2)
      # 타임 스탬프를 묘화
      self.contents.font.color = normal_color
      time_string = @time_stamp.strftime("%Y/%m/%d %H:%M")
      self.contents.draw_text(4, 40, 600, 32, time_string, 2)
    end
  end
  #--------------------------------------------------------------------------
  # ● 선택 상태의 설정
  #     selected : 새로운 선택 상태 (true=선택 false=비선택)
  #--------------------------------------------------------------------------
  def selected=(selected)
    @selected = selected
    update_cursor_rect
  end
  #--------------------------------------------------------------------------
  # ● 커서의 구형 갱신
  #--------------------------------------------------------------------------
  def update_cursor_rect
    if @selected
      self.cursor_rect.set(0, 0, @name_width + 8, 32)
    else
      self.cursor_rect.empty
    end
  end
end


----------------------------------여기까지 세이브스크립트


도와주세요...


List of Articles
종류 분류 제목 글쓴이 날짜 조회 수
공지 묻고 답하기 가이드 습작 2014.06.14 13175
RMVXA 사이드뷰 데미지 얄리얄리얄라셩 2014.04.23 524
RMVX 전투 중 액터 순서 식별하는 법이 궁금합니다. MMM 2014.04.22 579
GM 게임메이커 이동시 발 그래픽 변경 2 알피지공부하러 2014.04.22 1039
RMVX 아이템 3 file 꾸르 2014.04.21 612
RMVXA Ace 게임데이터로 압축시 맵칩미포함 방법 11 하나비애 2014.04.21 492
RMVXA 변수 이벤트에서 오류가 발생하고 있습니다. 2 file 리쥬비네이터 2014.04.20 698
RMVXA 기본스크립트상태이며 모든게임의 글자가 ㅁㅁㅁ으로보여요 2 file 레드륨 2014.04.20 911
RMVXA 상태이상을 거는것에 관한 질문입니다. 4 second 2014.04.20 592
RMVXA 메뉴창을 직접 디자인하기 7 흰강아지 2014.04.20 1002
RMVXA 이벤트 두개를 이용해 책상위 아이템을 집는법... 3 file 김으휴 2014.04.20 751
RMVXA 자동전투를 실시하면 전투화면없이 바로 결과가 나오는 방법없나요 간파더 2014.04.20 567
RMVXA [rpg vx ace] midi 문제!! 아무리 찾아도 답이 없어요!!!ㅜㅜ 2 조각조각 2014.04.20 1108
RMVXA 스킬을 하나 사용하면 정해논 스킬을 추가로 사용하는 방법 6 second 2014.04.20 527
사이트 이용 아방스게임을... 4 메르스 2014.04.20 724
RMXP 대화창에서 글자가 한글자씩 나오게하는법 3 네모툰 2014.04.20 985
RMVX rpg vx 타이머 5 나댐이와친구들 2014.04.19 902
RMVXA 뭐라해야되지..벽 테두리 ? 칩셋을 못찾겠습니다. 3 file 작은펭귄 2014.04.19 700
기타 게임을 전체화면 실행시, 화면 무한 깜빡임 문제가 발생합니다.. 해결방법있을까요 ㅠㅠ 1 걸음마 2014.04.19 2444
RMXP 두스크립트가 충돌뜨는데 무마할수있는방법없나요 Haze~ 2014.04.19 416
RMXP 문여닫는방법 3 file 안녕포럽아 2014.04.18 661
Board Pagination Prev 1 ... 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 ... 517 Next
/ 517