Суббота, 23 Ноября 2024, 23:16

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
ошибка с сейвами... опять - corona SDK (решено)
CoreДата: Суббота, 16 Ноября 2019, 14:38 | Сообщение # 1
заслуженный участник
Сейчас нет на сайте
Как это исправить? Прошу разъяснять подробнее, тк я очень тупой.




Сообщение отредактировал Core - Суббота, 16 Ноября 2019, 19:37
GentДата: Суббота, 16 Ноября 2019, 14:41 | Сообщение # 2
частый гость
Сейчас нет на сайте
На строке 73 функция open получает в качестве аргумента nil, а должна быть строка.

Код
local pathForFile = system.pathForFile("test.test", system.DocumentsDirectory)
local file = io.open(pathForFile, "r")


pathForFile должен быть типа string, а не nil


Сообщение отредактировал Gent - Суббота, 16 Ноября 2019, 14:45
CoreДата: Суббота, 16 Ноября 2019, 16:23 | Сообщение # 3
заслуженный участник
Сейчас нет на сайте
Gent, Как это реализовать?

GentДата: Суббота, 16 Ноября 2019, 16:46 | Сообщение # 4
частый гость
Сейчас нет на сайте
У короны очень хорошая документация.

https://docs.coronalabs.com/api/library/io/index.html
https://docs.coronalabs.com/api/library/io/open.html
https://docs.coronalabs.com/api/library/system/pathForFile.html

Код
local path = system.pathForFile( "data.txt", system.DocumentsDirectory )
local fhd = io.open( path )
  
-- Determine if file exists
if fhd then
   print( "File exists" )
   fhd:close()
else
    print( "File does not exist!" )
end


В папке с короной можно найти примеры: FileDemo, SaveTable
Они должны помочь.

UPD
Лучше убрать Runtime:addEventListener("enterFrame", loadSettings)
При такой реализация загрузка настроек будет выполняться каждый кадр, не понимаю зачем.
Если нужно вернуть предыдущее состояние при запуске игры, то достаточно 1 раз выполнить loadSettings()


Сообщение отредактировал Gent - Суббота, 16 Ноября 2019, 17:05
CoreДата: Суббота, 16 Ноября 2019, 17:37 | Сообщение # 5
заслуженный участник
Сейчас нет на сайте
ничего не выходит. документацию читал.
Код
-----------------------------------------------------------
--
-- main.lua -- Clicer
--
-----------------------------------------------------------

-- Мой говно-код сдесь

local money = 0

local auto_money = 0
local auto_money_buy = 110
local auto_money_lvl = 0

local bonus_money_lvl = 0
local bonus_money_buy = 45

    local json = require("json")

local function loadSettings(fileName)

-- Path for the file to read
local path_money_c = system.pathForFile( "money_c.txt", system.ResourceDirectory )

-- Open the file handle
local file, errorString = io.open( path_money_c, "r" )

if not file then
    -- Error occurred; output the cause
    print( "File error: " .. errorString )
else
    -- Read data from file
    money = file:read( "*n" )
    io.close( file )
end

file = nil

    return nil
end
loadSettings();

function saveSetting(fileName)
local saveData = money
    local path_money_c = system.pathForFile( "money_c.txt", system.ResourceDirectory )
local file, errorString = io.open( path_money_c, "w" )
if not file then
    print( "File error: " .. errorString )
else
    file:write( saveData )
    io.close( file )
end

file = nil
    --local path_auto_maney_buy_c = system.pathForFile( "auto_money_buy_c.txt", system.ResourceDirectory )

    --local path_auto_maney_lvl_c = system.pathForFile( "auto_money_lvl_c.txt", system.ResourceDirectory )

    --local path_bonus_maney_lvl_c = system.pathForFile( "bonus_money_lvl_c.txt", system.ResourceDirectory )

    --local path_bonus_maney_buy_c = system.pathForFile( "bonus_money_buy_c.txt", system.ResourceDirectory )

    return nil
end
function saveSetting_auto_money(fileName)

  --local path_auto_maney_c = system.pathForFile( "auto_money_c.txt", system.ResourceDirectory )
    local saveData0 = auto_money
  local path_auto_maney_c = system.pathForFile( "auto_money_c.txt", system.ResourceDirectory )
    local file0, errorString = io.open( path_auto_money_c, "w" )
    if not file0 then
     print( "File error: " .. errorString )
    else
     file0:write( saveData0 )
     io.close( file0 )
    end
  
    file0 = nil

    return nil
end

local bacg = display.newRect(0,0,1080,1920)
bacg:setFillColor(0.799,0.799,0.799)

local bacg_m = display.newRect(0,0,1080,100)
bacg_m:setFillColor(0.599,0.599,0.599)

local button = display.newRect(160,190,175,175)
button:setFillColor(0,0.4,0.3)

local button_auto = display.newRect(70,400,111,111)
button_auto:setFillColor(0,0.4,0.3)

local button_bonus = display.newRect(250,400,111,111)
button_bonus:setFillColor(0,0.4,0.3)

--audio
   
local lvl_up_audio = audio.loadSound("audio/lvl_up.mp3")

--audio end

------------------------txt
local text = display.newText("Click", 161, 190, "consolas", 30)
text:setFillColor(1,1,1)

local text1 = display.newText("Money:", 64, -19, "consolas", 30)
text1:setFillColor(0,0.1,0.8)

local text2 = display.newText(money, 200, -16, "consolas", 30)
text2:setFillColor(0,0.1,0.8)

local text3 = display.newText("Auto", 70, 370, "consolas", 30)
text3:setFillColor(1,1,1)

local text4 = display.newText("click", 70, 400, "consolas", 30)
text4:setFillColor(1,1,1)

local text5 = display.newText(auto_money_buy, 70, 437, "consolas", 30)
text5:setFillColor(1,1,1)

local text6 = display.newText("Bonus", 250, 370, "consolas", 30)
text6:setFillColor(1,1,1)

local text7 = display.newText("click", 250, 400, "consolas", 30)
text7:setFillColor(1,1,1)

local text8 = display.newText(bonus_money_buy, 250, 437, "consolas", 30)
text8:setFillColor(1,1,1)
------------------------txt end

local button_shadow = display.newRect(160,280,175,10)
button_shadow:setFillColor(0,0.3,0.4)
local button_shadow_auto = display.newRect(70,460,111,10)
button_shadow_auto:setFillColor(0,0.3,0.4)
local button_shadow_bonus = display.newRect(250,460,111,10)
button_shadow_bonus:setFillColor(0,0.3,0.4)

local copyright = display.newText("KernelCoreSW 2018-2019", 163, 490, "consolas", 23)
copyright:setFillColor(0.599,0.599,0.599)

local function flapBird (event)
  if(event.phase == "began") then
   ---lvl
   if(bonus_money_lvl == 0) then
     money = money + 1
    end
    if(bonus_money_lvl == 1) then
     money = money + 2
    end
    if(bonus_money_lvl == 2) then
     money = money + 3
    end
    if(bonus_money_lvl == 3) then
     money = money + 4
    end
    if(bonus_money_lvl == 4) then
     money = money + 5
    end
    if(bonus_money_lvl == 5) then
     money = money + 6
    end

    if(bonus_money_lvl == 6) then
     money = money + 7
    end
    if(bonus_money_lvl == 7) then
     money = money + 8
    end
    if(bonus_money_lvl == 8) then
     money = money + 9
    end
    if(bonus_money_lvl == 9) then
     money = money + 10
    end
    if(bonus_money_lvl == 10) then
     money = money + 11
    end
    text2.text = money
    saveSetting(money_c)
  end
end
local function flapBird_auto (event)
  if(event.phase == "began") then
    if(money >= auto_money_buy) then
     audio.play(lvl_up_audio)
     
     money = money - auto_money_buy
     auto_money_buy = auto_money_buy * 3
     auto_money_lvl = auto_money_lvl + 1
    end
    text2.text = money
    text5.text = auto_money_buy
    saveSetting(money_c)
    saveSetting_auto_money(auto_money_c)
    --saveSetting(auto_money_buy_c)
  end
end
local function flapBird_bonus (event)
  if(event.phase == "began") then
    if(money >= bonus_money_buy) then
     audio.play(lvl_up_audio)
     
     money = money - bonus_money_buy
     bonus_money_buy = bonus_money_buy * 3
     bonus_money_lvl = bonus_money_lvl + 1
    end
    text2.text = money
    text8.text = bonus_money_buy
    saveSetting(money_c)
    --saveSetting(bonus_money_lvl_c)
    --saveSetting(bonus_money_buy_c)
  end
end
local function onUpdate (args)

    if(auto_money > 40) then
  auto_money = 0
    end    
    ---------levels
    if(auto_money_lvl == 1) then
  if(auto_money == 40) then
   money = money + 1
   text2.text = money
  end
    end
    if(auto_money_lvl == 2) then
  if(auto_money == 40) then
   money = money + 5
   text2.text = money
  end
    end
    if(auto_money_lvl == 3) then
  if(auto_money == 40) then
   money = money + 10
   text2.text = money
  end
    end
    if(auto_money_lvl == 4) then
  if(auto_money == 40) then
   money = money + 16
   text2.text = money
  end
    end
    if(auto_money_lvl == 5) then
  if(auto_money == 40) then
   money = money + 21
   text2.text = money
  end
    end
    if(auto_money_lvl == 6) then
  if(auto_money == 40) then
   money = money + 29
   text2.text = money
  end
    end
    if(auto_money_lvl == 7) then
  if(auto_money == 40) then
   money = money + 36
   text2.text = money
  end
    end
    if(auto_money_lvl == 8) then
  if(auto_money == 40) then
   money = money + 41
   text2.text = money
  end
    end
    if(auto_money_lvl == 9) then
  if(auto_money == 40) then
   money = money + 56
   text2.text = money
  end
    end
    if(auto_money_lvl == 10) then
  if(auto_money == 40) then
   money = money + 61
   text2.text = money
  end
    end
    if(auto_money_lvl == 11) then
  if(auto_money == 40) then
   money = money + 76
   text2.text = money
  end
    end

    ---------levels end
    auto_money = auto_money + 1

end

button:addEventListener("touch", flapBird)
button_auto:addEventListener("touch", flapBird_auto)
button_bonus:addEventListener("touch", flapBird_bonus)
Runtime:addEventListener("enterFrame", onUpdate)


drcrackДата: Суббота, 16 Ноября 2019, 17:48 | Сообщение # 6
старожил
Сейчас нет на сайте
Цитата
документацию читал.

точно?

If the base directory is system.ResourceDirectory and the generated path points to a non-existent file, nil is returned and a warning message is displayed in the Corona Simulator Console.


Сообщение отредактировал drcrack - Суббота, 16 Ноября 2019, 17:49
GentДата: Суббота, 16 Ноября 2019, 17:56 | Сообщение # 7
частый гость
Сейчас нет на сайте
Core, опечатка

local path_auto_maney_c = system.pathForFile( "auto_money_c.txt", system.ResourceDirectory )
local file0, errorString = io.open( path_auto_money_c, "w" )
CoreДата: Суббота, 16 Ноября 2019, 19:36 | Сообщение # 8
заслуженный участник
Сейчас нет на сайте
Цитата drcrack ()
точно?

да

Цитата drcrack ()
Если базовым каталогом является system.ResourceDirectory и сгенерированный путь указывает на несуществующий файл, возвращается nil, и в консоли Corona Simulator отображается предупреждающее сообщение.

файл на месте

Цитата Gent ()
Core , опечатка

local path_auto_maney_c = system.pathForFile ("auto_money_c.txt", system.ResourceDirectory)
local file0, errorString = io.open ( path_auto_money_c , "w")

респектую)


drcrackДата: Суббота, 16 Ноября 2019, 20:29 | Сообщение # 9
старожил
Сейчас нет на сайте
вот почему писать код надо в IDE а не в блокноте
CoreДата: Воскресенье, 17 Ноября 2019, 12:31 | Сообщение # 10
заслуженный участник
Сейчас нет на сайте
drcrack,




Сообщение отредактировал Core - Воскресенье, 17 Ноября 2019, 12:33
drcrackДата: Воскресенье, 17 Ноября 2019, 20:51 | Сообщение # 11
старожил
Сейчас нет на сайте
Так я знаю в чем ты пишешь, у тебя скриншот в первом посте
Работал бы в полноценной IDE — увидел бы ошибку сразу как ее сделал и этой темы бы не было
CoreДата: Воскресенье, 17 Ноября 2019, 23:46 | Сообщение # 12
заслуженный участник
Сейчас нет на сайте
Цитата drcrack ()
увидел бы ошибку сразу как ее сделал и этой темы бы не было

Так не интересно.


drcrackДата: Понедельник, 18 Ноября 2019, 09:13 | Сообщение # 13
старожил
Сейчас нет на сайте
а пол дня искать опечатку — это видимо интересно
CoreДата: Понедельник, 18 Ноября 2019, 15:17 | Сообщение # 14
заслуженный участник
Сейчас нет на сайте
Цитата drcrack ()
а пол дня искать опечатку — это видимо интересно

Интересно


drcrackДата: Понедельник, 18 Ноября 2019, 15:58 | Сообщение # 15
старожил
Сейчас нет на сайте
не ври, было бы интересно — искал бы сам, а не напрягал людей :D
CoreДата: Понедельник, 18 Ноября 2019, 17:35 | Сообщение # 16
заслуженный участник
Сейчас нет на сайте
Цитата drcrack ()
было бы интересно — искал бы сам, а не напрягал людей

Напрягать людей - это моя любимая часть :)


  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг