irpg Community

Full Version: เขียนcode แต่ตอนsave มันไม่saveด้วย ทำไงดี??
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
คือผมเขียน Code ขึ้นมาเอง (สร้างClass ใหม่) ซึ่งทำงานเกี่ยวกับ วันเวลา อะไรพวกนี้ แต่ทีนี้ตอน save เกมเหมือนมันจะไม่ได้เซฟในส่วนนี้ไปด้วย พอปิดเกมแล้วโหลดsave ขึ้นมา มันก็ฟ้อง error พอไปดูมันก็ฟ้องว่า error ที่ Class ของผมที่สร้างขึ้นมา เหมือนมันหาไม่เจอ

อยากถามว่าจะทำยังไงให้เวลาเซฟเกมมันเซฟ ในส่วนที่ผมเขียน Code เพิ่มเข้าไปด้วย T[]T

ป.ล. ภาพที่แนบมาคือมัน error หลังจากกดโหลดเซฟเกมครับ

ผมใช้ RPG Maker XP ครับ
สร้างหรือแก้ไขให้เป็น Global Variable ครับ ใส่ไว้ในส่วน $game_player เวลาเซฟ มันจะติดไปด้วยครับ
ที่เห็นขึ้น error แบบนั้น ผมชัวร์ว่าไม่ได้ประกาศตัวแปร Global Variable แน่นอน
ผมก็สร้างเป็น Global นะครับ แต่ไม่ค่อยเข้าใจที่บอกว่าให้วางไว้ใน $game_player คือตรงไหนอ่ะครับ
ถ้าผมเข้าใจไม่ผิดคือในClass Game_Player รึเปล่า? ถ้าใช่มันต้องวางตรง def ไหนอ่า

คือผมเรียก class ของผมด้วย event โดยใช้คำสั่ง $statusBar = Window_Date.new

อ่อลืมบอกผมใช้ RMXP ครับ
เพราะตอนเซฟ โปรแกรมไม่ได้เซฟครับ ลองเปิดสคริปต์หน้า Scene_Save ดูครับ
# 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)

นี่เป็นรายชื่อ Global variable ที่เกมจะเซฟให้ ถ้าจะให้เกมเซฟตัวแปรเพิ่ม ก็แค่พิมเพิ่มเข้าไปครับ แค่นั้นเอง
แล้วอย่าลืม!! ตอน load เกมด้วย Scene_load เพิ่มต่อส่วนนี้ด้วย
# Read each type of game object
$game_system = Marshal.load(file)
$game_switches = Marshal.load(file)
$game_variables = Marshal.load(file)
$game_self_switches = Marshal.load(file)
$game_screen = Marshal.load(file)
$game_actors = Marshal.load(file)
$game_party = Marshal.load(file)
$game_troop = Marshal.load(file)
$game_map = Marshal.load(file)
$game_player = Marshal.load(file)

ประมาณนี้ครับ.... แต่ระวังนิดนึงว่า Global Var ที่จะเซฟต้องถูกสร้างขึ้นมาก่อนนะครับ (คิดว่าช่วงต้นๆเกมหล่ะ ไม่ก็ต้นเริ่มเกมสั่งให้มันสร้างตัวแปรเปล่าๆไว้ก่อนก็ได้)
คราวนี้ พอกด save แล้วมัน error แบบนี้ครับ

ใน Scene_Save ผมเพิ่ม Marshal.dump($statusBar, file)
ส่วนใน Scene_Load ผมเพิ่ม $statusBar = Marshal.load(file)

ก่อนจะเซฟเกมมันเข้าเกมได้ปกติแล้วก็ใช้ event สร้างเหตุการณ์เรียกใช้สคริป $statusBar=Window_Date.new

ครับผม
ประกาศตัวแปรยังครับ? อีกอย่างเขียน code เซฟแบบนั้นมันไม่น่าจะเข้าไปในไฟล์นะ = =
ประกาศเป็น global แล้วครับ เศร้าใจ ทำไมกันหนอ ลองมันหมดทุกทางแล้ว ถ้าใครจะกรุณาเขียนโค๊ดยกตัวอย่างให้ดูเลย มันน่าจะเข้าใจกว่าอ่ะครับ

#ซุยดุ่ยแล้วTT^TT
สามารถแปะดาวโหลด code มาได้มั้ยครับ? เดี๋ยวให้ผู้เชี่ยวชาญดูให้