2017-06-20 121 views
0

我編寫編輯器和遊戲,它需要一個保存遊戲選項。 我只想在遊戲文件夾中使用保存文件夾。不在inside.love如何在.love保存文件之外加載? (love2d + LUA)

如何得到一個錯誤。

  1. 開始遊戲
  2. 通過ESC鍵
  3. 進入菜單按保存遊戲 - 這創造祕技
  4. 按裝載遊戲 - 你得到一個錯誤「文件不存在」,但你秒前寫這個文件。

我成功的將遊戲保存到savedm2k文件夾中,但它夾在.love文件外,我不知道如何正確加載保存遊戲。

發動機:Love2d 0.10.2 操作系統:Linux Mint的18.1 x64bit

我看了很多手冊和我被困。

對於加載保存遊戲我用這個命令

lsg=love.filesystem.getSaveDirectory().."/M2k-Saves/m2ksave" 
lsg=love.filesystem.getSourceBaseDirectory().."/M2k-Saves/m2ksave"; 
data, size = love.filesystem.read (lsg); 
leveldatacopy=freadbin (data); 

程序爲何不嘗試讀取現有的文件嗎?並且報告不存在?我嘗試使用另一個命令,但使用GetSaveDirectory破壞函數WriteMAP(需要二進制映射和數據寫入)等,但它寫入文件,無法加載在加載部分。

也許我應該使用LUA直接從文件夾讀取文件,但我不知道如何糾正它。

有錯誤的例子。 https://github.com/dj--alex/m2ktest 文件m2ktest-load-savegame-test.love

此時每節約我手動替換愛情存檔內保存的遊戲(!)。這是不正常的。

任何人都可以告訴我我如何得到和正確打開保存的文件?不是從.love文件裏面。當然,從外面。如果級別和配置可以從愛情檔案裏面保存,那麼保存文件必須在外面。我只能創建愛檔案以外的檔案。我知道愛情檔案是一個zip檔案。

如果需要,我可以發佈.love文件,但遊戲完全完成,並有150kb的乾淨的代碼。

回答

0

您不應在love.filesystem.getSaveDirectory()love.filesystem.getSourceBaseDirectory()前加上路徑。這是自動完成的,內部爲love.filesystem函數。說

lsg = "/M2k-Saves/m2ksave" 
data, size = love.filesystem.read (lsg) 
leveldatacopy = freadbin (data) 

應該工作,並將文件放置在保存目錄/以外的.love文件或遊戲目錄。 (愛者禁用任何地方寫,除了在保存目錄。)


愛情的文件系統模型就像一個文件系統的「堆棧」。對於文件讀取,它首先在love.filesystem.getSaveDirectory()中查找你傳入的任何路徑。如果它找到一個文件,它使用它;否則它會在love.filesystem.getSourceBaseDirectory()(或 - 如果打包 - 在.zip/.love文件中)內部查找。寫文件總是去love.filesystem.getSaveDirectory(),你不能寫love.filesystem.getSourceBaseDirectory()(因爲它可能不是一個實際的目錄,而是一個zip文件)。

+0

不幸的是沒有工作。問題依然存在。我已經試過::: lsg =「/ M2k-Saves/m2ksave」 data,size = love.filesystem.read(lsg); 錯誤(「data:」.. data); - 總是添加校驗線 - data = nil(!)。 leveldatacopy = freadbin(data); - 錯誤的參數#1 gfind預期的字符串,得到零。 –

+0

@АлексейФуфаев你創建了父目錄,比如'love.filesystem.createDirectory(「M2k-Saves」)'?如果你不這樣做,那可能是原因。 – nobody

+0

當然,它是在一個月前創建的。 http://s46.radikal.ru/i111/1706/be/413f6fe8ee82t.jpg –