irpg Community
+[RGSS23] ตัวแปรและสวิตช์ คงอยู่ตลอดไป - Printable Version

+- irpg Community (https://irpg.in.th)
+-- Forum: irpg Fabella RPG Maker Academia (https://irpg.in.th/forum-4.html)
+--- Forum: RGSS and JS Showcase (https://irpg.in.th/forum-26.html)
+--- Thread: +[RGSS23] ตัวแปรและสวิตช์ คงอยู่ตลอดไป (/thread-1567.html)



+[RGSS23] ตัวแปรและสวิตช์ คงอยู่ตลอดไป - hengmana - 12-23-2013

ตัวแปรและสวิตช์ คงอยู่ตลอดไป

สคริปต์เขียนโดย : br_lemes
ลิงค์ต้นฉบับ : [XP][VX] http://www.mundorpgmaker.com.br/forum/index.php?topic=117955.0

ข้อตกลงการนำไปใช้งาน :
ไม่ทราบแน่ชัด แต่ลงเครดิตผู้เขียนสคริปต์ไว้หน่อยก็ดี

สกรีนช๊อต :
ไม่มี
รายละเอียด :
สคริปต์นี้จะช่วยทำให้ค่าของ ตัวแปรหรือสวิตช์ ที่ถูกกำหนดไว้ไม่เปลี่ยนแปลงไป
เมื่อปิดเกมเริ่มเล่นเกมใหม่ ก็ยังคงอยู่อย่างนั้น เหมาะสำหรับการสร้างระบบคะแนนสูงสุด
หรือจบเกมครั้งแรกแล้วอาจปลดล็อคเนื้อหาบางอย่าง+โบนัสเพิ่มขึ้นมาเมื่อเริ่มเล่นเกมใหม่อีกครั้ง

โค๊ดสคริปต์ [XP][VX]
Code:
# Persistência de variáveis e switches
# por br_lemes

# Este script permite definir variáveis e switches que vão
# manter o seu valor mesmo quando reiniciar o jogo (game over),
# escolher um novo jogo, ou continuar um jogo diferente.
# Os valores serão salvos (se tornarão persistentes)
# automaticamente ao salvar o jogo, ao dar game over ou manualmente ao
# chamar o método "persist_save".

# O objetivo é permitir implementar um HighScore ou outras coisas
# que sua imaginação permitir.

$RMVX = $TEST != nil

# Coloque a lista de ID das variáveis e switches aqui
$PERSIST_VARIABLES = [21, 22, 23]
$PERSIST_SWITCHES  = []

$PERSIST_NAME = $RMVX ? "persist.rvdata" : "persist.rxdata"

def persist_save
  persist_data = [{},{}]
  for i in 0..$PERSIST_VARIABLES.size - 1
    persist_data[0][i] = $game_variables[$PERSIST_VARIABLES[i]]
  end
  for i in 0..$PERSIST_SWITCHES.size - 1
    persist_data[1][i] = $game_switches[$PERSIST_SWITCHES[i]]
  end
  save_data(persist_data, $PERSIST_NAME)
end

def persist_load
  return if !FileTest.exist?($PERSIST_NAME)
  persist_data = load_data($PERSIST_NAME)
  for i in 0..$PERSIST_VARIABLES.size - 1
    $game_variables[$PERSIST_VARIABLES[i]] = persist_data[0][i]
  end
  for i in 0..$PERSIST_SWITCHES.size - 1
    $game_switches[$PERSIST_SWITCHES[i]] = persist_data[1][i]
  end
  $game_map.refresh
end

class Scene_Title
  alias persist_command_new_game command_new_game
  def command_new_game
    persist_command_new_game
    persist_load
  end
end

if $RMVX
  class Scene_File
    alias persist_do_save do_save
    def do_save
      persist_do_save
      persist_save
    end
    alias persist_do_load do_load
    def do_load
      persist_do_load
      persist_load
    end
  end
else
  class Scene_Load
    alias persist_on_decision on_decision
    def on_decision(filename)
      persist_on_decision(filename)
      persist_load
    end
  end

  class Scene_Save
    alias persist_on_decision on_decision
    def on_decision(filename)
      persist_on_decision(filename)
      persist_save
    end
  end
end

class Scene_Gameover
  alias persist_main main
  def main
    persist_save
    persist_main
  end
end

วิธีการใช้งาน :
ให้ใส่โค๊ด ไว้ในช่องสคริปต์(F11)ระหว่าง Scene_Debug กับ Main

โค๊ดบรรทัดที่ 17,18 ไว้ใส่กำหนด ID ของตัวแปรและสวิตช์ ที่คงอยู่ไว้ใน[] เช่น
$ PERSIST_VARIABLES = [ 21 , 22 , 23 ]
$ PERSIST_SWITCHES = [ ]

+++++++++++++++++++++++++++++++++++++++++++

+เพิ่ม ถ้าของ RMVX Ace ก็อันนี้ วิธีใช้เหมื่อนกัน
http://www.rpgmakervxace.net/topic/6462-global-save-file-by-skul/
.


RE: ตัวแปรและสวิตช์ คงอยู่ตลอดไป - pomza2000 - 12-24-2013

โฮก แจ่มมากเลยฮะพี่เห็ด เอาไปทำHigh Scoreสบายเลย แพนด้าจ๊าก


RE: ตัวแปรและสวิตช์ คงอยู่ตลอดไป - Mysticphoenix - 12-24-2013

โอ้ว เมพขิงๆๆ

ต่อไปนี้ก็ทำโหมดหลังเล่นจบ, บลาๆ สบายแล้ว


RE: ตัวแปรและสวิตช์ คงอยู่ตลอดไป - hackerdew - 12-24-2013

มันเหมือนกับเอาตัวแปร เก็บเป็นไฟล์ๆ หนึ่งเลยแหะ
และเวลาเริ่มเกมส์ใหม่ทุกครั้ง เกมจะมาดึงไฟล์ตัวนี้ แล้วใส่เป็นตัวแปร