XP 스크립트

#==============================================================================
# ** Scene_Map
#------------------------------------------------------------------------------
#  This class performs map screen processing.
#==============================================================================

class Scene_Map
#--------------------------------------------------------------------------
# * Main Processing
#--------------------------------------------------------------------------
def main
  # Make sprite set
  @spriteset = Spriteset_Map.new
  # Make message window
  @message_window = Window_Message.new
  # Transition run
  Graphics.transition
  # Main loop
  loop do
    # Update game screen
    Graphics.update
    # Update input information
    Input.update
    # Frame update
    update
    # Abort loop if screen is changed
    if $scene != self
      break
    end
  end
  # Prepare for transition
  Graphics.freeze
  # Dispose of sprite set
  @spriteset.dispose
  # Dispose of message window
  @message_window.dispose
  # If switching to title screen
  if $scene.is_a?(Scene_Title)
    # Fade out screen
    Graphics.transition
    Graphics.freeze
  end
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
  # Loop
  loop do
    # Update map, interpreter, and player order
    # (this update order is important for when conditions are fulfilled
    # to run any event, and the player isn't provided the opportunity to
    # move in an instant)
    $game_map.update
    $game_system.map_interpreter.update
    $game_player.update
    # Update system (timer), screen
    $game_system.update
    $game_screen.update
    # Abort loop if player isn't place moving
    unless $game_temp.player_transferring
      break
    end
    # Run place move
    transfer_player
    # Abort loop if transition processing
    if $game_temp.transition_processing
      break
    end
  end
  # Update sprite set
  @spriteset.update
  # Update message window
  @message_window.update
  # If game over
  if $game_temp.gameover
    # Switch to game over screen
    $scene = Scene_Gameover.new
    return
  end
  # If returning to title screen
  if $game_temp.to_title
    # Change to title screen
    $scene = Scene_Title.new
    return
  end
  # If transition processing
  if $game_temp.transition_processing
    # Clear transition processing flag
    $game_temp.transition_processing = false
    # Execute transition
    if $game_temp.transition_name == ""
      Graphics.transition(20)
    else
      Graphics.transition(40, "Graphics/Transitions/" +
        $game_temp.transition_name)
    end
  end
  # If showing message window
  if $game_temp.message_window_showing
    return
  end
  # If encounter list isn't empty, and encounter count is 0
  if $game_player.encounter_count == 0 and $game_map.encounter_list != []
    # If event is running or encounter is not forbidden
    unless $game_system.map_interpreter.running? or
            $game_system.encounter_disabled
      # Confirm troop
      n = rand($game_map.encounter_list.size)
      troop_id = $game_map.encounter_list[n]
      # If troop is valid
      if $data_troops[troop_id] != nil
        # Set battle calling flag
        $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 the interpreter is not running
  if not $game_system.map_interpreter.running?
  # Save the file
    file = File.open("Save1.rxdata", "wb")
    write_save_data(file)
    file.close
  end
  # If B button was pressed
  if Input.trigger?(Input::B)
    # If event is running, or menu is not forbidden
    unless $game_system.map_interpreter.running? or
            $game_system.menu_disabled
      # Set menu calling flag or beep flag
      $game_temp.menu_calling = true
      $game_temp.menu_beep = true
    end
  end
  # If debug mode is ON and F9 key was pressed
  if $DEBUG and Input.press?(Input::F9)
    # Set debug calling flag
    $game_temp.debug_calling = true
  end
  # If player is not moving
  unless $game_player.moving?
    # Run calling of each screen
    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
#--------------------------------------------------------------------------
# * Battle Call
#--------------------------------------------------------------------------
def call_battle
  # Clear battle calling flag
  $game_temp.battle_calling = false
  # Clear menu calling flag
  $game_temp.menu_calling = false
  $game_temp.menu_beep = false
  # Make encounter count
  $game_player.make_encounter_count
  # Memorize map BGM and stop BGM
  $game_temp.map_bgm = $game_system.playing_bgm
  $game_system.bgm_stop
  # Play battle start SE
  $game_system.se_play($data_system.battle_start_se)
  # Play battle BGM
  $game_system.bgm_play($game_system.battle_bgm)
  # Straighten player position
  $game_player.straighten
  # Switch to battle screen
  $scene = Scene_Battle.new
end
#--------------------------------------------------------------------------
# * Shop Call
#--------------------------------------------------------------------------
def call_shop
  # Clear shop call flag
  $game_temp.shop_calling = false
  # Straighten player position
  $game_player.straighten
  # Switch to shop screen
  $scene = Scene_Shop.new
end
#--------------------------------------------------------------------------
# * Name Input Call
#--------------------------------------------------------------------------
def call_name
  # Clear name input call flag
  $game_temp.name_calling = false
  # Straighten player position
  $game_player.straighten
  # Switch to name input screen
  $scene = Scene_Name.new
end
#--------------------------------------------------------------------------
# * Menu Call
#--------------------------------------------------------------------------
def call_menu
  # Clear menu call flag
  $game_temp.menu_calling = false
  # If menu beep flag is set
  if $game_temp.menu_beep
    # Play decision SE
    $game_system.se_play($data_system.decision_se)
    # Clear menu beep flag
    $game_temp.menu_beep = false
  end
  # Straighten player position
  $game_player.straighten
  # Switch to menu screen
  $scene = Scene_Menu.new
end
#--------------------------------------------------------------------------
# * Save Call
#--------------------------------------------------------------------------
def call_save
  # Straighten player position
  $game_player.straighten
  # Switch to save screen
  $scene = Scene_Save.new
end
#--------------------------------------------------------------------------
# * Debug Call
#--------------------------------------------------------------------------
def call_debug
  # Clear debug call flag
  $game_temp.debug_calling = false
  # Play decision SE
  $game_system.se_play($data_system.decision_se)
  # Straighten player position
  $game_player.straighten
  # Switch to debug screen
  $scene = Scene_Debug.new
end
#--------------------------------------------------------------------------
# * Player Place Move
#--------------------------------------------------------------------------
def transfer_player
  # Clear player place move call flag
  $game_temp.player_transferring = false
  # If move destination is different than current map
  if $game_map.map_id != $game_temp.player_new_map_id
    # Set up a new map
    $game_map.setup($game_temp.player_new_map_id)
  end
  # Set up player position
  $game_player.moveto($game_temp.player_new_x, $game_temp.player_new_y)
  # Set player direction
  case $game_temp.player_new_direction
  when 2  # down
    $game_player.turn_down
  when 4  # left
    $game_player.turn_left
  when 6  # right
    $game_player.turn_right
  when 8  # up
    $game_player.turn_up
  end
  # Straighten player position
  $game_player.straighten
  # Update map (run parallel process event)
  $game_map.update
  # Remake sprite set
  @spriteset.dispose
  @spriteset = Spriteset_Map.new
  # If processing transition
  if $game_temp.transition_processing
    # Clear transition processing flag
    $game_temp.transition_processing = false
    # Execute transition
    Graphics.transition(20)
  end
  # Run automatic change for BGM and BGS set on the map
  $game_map.autoplay
  # Frame reset
  Graphics.frame_reset
  # Update input information
  Input.update
end
#--------------------------------------------------------------------------
# * Write Save Data
#--------------------------------------------------------------------------
  def write_save_data(file)
  # Make character data for drawing save file
  characters = []
  for i in 0...$game_party.actors.size
    actor = $game_party.actors[i]
    characters.push([actor.character_name, actor.character_hue])
  end
  # Write character data for drawing save file
  Marshal.dump(characters, file)
  # Wrire frame count for measuring play time
  Marshal.dump(Graphics.frame_count, file)
  # Increase save count by 1
  $game_system.save_count += 20
  # Save magic number
  # (A random value will be written each time saving with editor)
  $game_system.magic_number = $data_system.magic_number
  # Write each type of game object
  Marshal.dump($game_system, file)
  Marshal.dump($game_switches, file)
  Marshal.dump($game_variables, file)
  Marshal.dump($game_self_switches, file)
  Marshal.dump($game_screen, file)
  Marshal.dump($game_actors, file)
  Marshal.dump($game_party, file)
  Marshal.dump($game_troop, file)
  Marshal.dump($game_map, file)
  Marshal.dump($game_player, file)
end
end
--------------------------------------------------------------------------

별다른 세이브를 안눌러도 자동으로 세이브해주는 시스템입니다.

main 위에 찌르시면 돼겟습니다^^

프레임이 1 당 저장을해서 렉이 난거갓습니다.

제가 프레임을 20으로 변경해놧구요^^ 렉은없을껄로보입니다.

그리고 만약 프레임카운터를 줄이시거나 늘이시려면

  Marshal.dump(Graphics.frame_count, file)
  # Increase save count by 1
  $game_system.save_count += 50
  # Save magic number

여기서    $game_system.save_count += 50<----이숫자를 변경해주시면됍니다^^

즐거운하루 보내세요^^

아참 그리고

카운터 100이 5초
카운터 50가 2.5초
카운터 20이 1초 입니다.

Who's 백호

?

이상혁입니다.

http://elab.kr

Comment '2'

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 스크립트 자료 게시물 작성시 주의사항 습작 2012.12.24 6153
34 저장 [ AutoSave ]오토세이브, 뜻 그대로 자동저장스크립트 17 file 제로스S2 2009.08.06 3694
33 저장 세이브파일 망가뜨리기 by RPG Advocate 3 백호 2009.02.22 2657
32 저장 렉없은 자동 세이브 15 알피지GM 2010.03.07 2326
31 저장 심플 세이브&로드 개조(필요할 때 원하는 슬롯에 자동저장) 5 나렌시아 2011.02.24 2291
30 저장 멀티넷스크립트 -> 아이피 세이브,로드 스크립트 9 file 백호 2009.02.22 2204
29 저장 링메뉴에 빠져 봅시다 - 링메뉴의 세이브시 팅김이 사라지는 방법 !! 3 file 백호 2009.02.21 1998
28 저장 렉없는 자동세이브(중복임??) 4 캉쿤 2011.09.12 1986
27 저장 Improved Save by gerrtunk 2 file Alkaid 2010.10.13 1983
26 저장 심플 세이브 로드(1개의 세이브 사용하기) 3 백호 2009.02.22 1971
25 저장 세이브 & 로드 화면 개조 스크립트 file 백호 2009.02.21 1961
24 저장 KGC_2PaneSave 15 file 키라링 2009.01.23 1868
23 저장 [KGC]_2PaneSave 스크립트 1 file 백호 2009.02.22 1655
22 저장 ASM - Advanced Save Menu 3 file 백호 2009.02.21 1639
» 저장 렉없는 자동세이브 스크립트 2 백호 2009.02.22 1590
20 저장 Chaos Project Save Layout 1.4 by Fantasist, Blizzard file Alkaid 2010.10.08 1558
19 저장 Advanced Save System Edit (현재 맵을 보여주지 않음) file 백호 2009.02.22 1557
18 저장 세이브 슬롯 갯수 증가와 세이브 덮어씌울 때 확인 by RPG Advocate 5 백호 2009.02.22 1505
17 저장 키라링님이 올리신 [KGC_2PaneSave] 번역 1 무뇌인 2010.08.18 1471
16 저장 자동 세이브 스크립트 4 WMN 2008.03.17 1470
15 저장 [신기술 체험] 데이터 저장 6 file 백호 2009.02.22 1420
Board Pagination Prev 1 2 Next
/ 2