Ogłoszenie 

Uwaga! To forum jest w trybie offline.
Wszelką pomoc uzyskasz pod adresem
forum.ultimateam.pl


Administracja Forum


Poprzedni temat «» Następny temat
Automatyczne zapisywanie
Autor Wiadomość
barmen 




Preferowany:
RPG Maker XP

Pomógł: 7 razy
Dołączył: 16 Gru 2010
Posty: 52
Skąd: Wawa
Wysłany: Pią 17 Gru, 2010 11:08
Automatyczne zapisywanie
Informacje

Skrypt przedstawia sposób na automatyczne zapisywanie stanu gry. Jest to wersja 0.2 więc
będę planował jeszcze bardzie to zmodyfikować.

W wersji 0.1 przedstawiłem:
-automatyczne zapisywanie

W wersji 0.2 zmieniłem:
-"mrugnięcie" podczas zapisu
-podzielne obrazki na wczytywanie i zapisywanie

W wersji 0.3 planuje:
-ustawienie slotu do automatycznego zapisu
-oddzielna nazwa dla slotu automatycznego zapisu

Enjoy Barmen

Skrypt

Spoiler:

Kod:

class Szybki_zapis_plik
 
  def initialize
  end

  def main
    @savefile_windows = []
    for i in 0..3
      @savefile_windows.push(Okno_szybki_zapis .new(i, make_filename(i)))
    end
    @file_index = $game_temp.last_file_index
    @savefile_windows[@file_index].selected = true
    loop do
      Graphics.update
      Input.update
      update
      if $scene != self
        break
      end
    end
    Graphics.freeze
    for i in @savefile_windows
      i.dispose
    end
  end

  def update
    for i in @savefile_windows
      i.update
    end
      on_decision(make_filename(@file_index))
      $game_temp.last_file_index = @file_index
      return
    end

  def make_filename(file_index)
    return "Save#{file_index + 1}.sav"
  end
end

class Szybki_zapis < Szybki_zapis_plik
  def initialize
  end
 
  def on_decision(filename)
    file = File.open(filename, "wb")
    write_save_data(file)
    file.close
    if $game_temp.save_calling
      $game_temp.save_calling = false
      $scene = Scene_Map.new
      return
    end
    $scene = Scene_Map.new
  end

  def write_save_data(file)
    characters = []
    for i in 0...$game_party.actors.size
      actor = $game_party.actors[i]
      characters.push([actor.character_name, actor.character_hue])
    end
    Marshal.dump(characters, file)
    Marshal.dump(Graphics.frame_count, file)
    $game_system.save_count += 1
    $game_system.magic_number = $data_system.magic_number
    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

class Okno_szybki_zapis < Window_Base

  attr_reader   :filename                 
  attr_reader   :selected               
 
  def initialize(file_index, filename)
    super(0, 0 + file_index % 4 * 40, 40, 0)
    self.contents = Bitmap.new(width - 32, height - 32)
    @file_index = file_index
    @filename = "Save#{@file_index + 1}.sav"
    @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 = "Plik #{@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

  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


Pobierz

http://www.megaupload.com/?d=DL4B8WWH

Zrzuty ekranu



Ode mnie

Skrypt jest na razie w fazie "doskonalenia". Jeśli mielibyście jakieś pomysły jak go jeszcze bardziej udoskonalić prosiłbym o napisanie.
 
 
 
FilipsO 




Preferowany:
RPG Maker VX

Ranga RM:
1 gra

Pomógł: 1 raz
Dołączył: 21 Maj 2010
Posty: 236
Skąd: z nikąd
Wysłany: Pią 31 Gru, 2010 10:57
Coś chyba nie działa, nie chce się pobrać.
________________________
89% graczy uważa, że najważniejsza jest grafika.
Jeśli należysz do pozostałych 11% wklej to do swojego podpisu.

Moja Gra MMORPG Erathia:
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group | Template Klam by Ayene