EvilMax
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Цитата: Это уже интереснее, спасибо. А нет ли у кого оригинального скрипта для сравнения? Ссылка для ЧН, а его у меня нет. Просто копировать файл опасаюсь - версии-то движка разные. Добавлено: "Проблемный" участок из патча по ссылке Код: ------------------------- запись/загрузка CTime --------------------------- --local CTime_0 local CTime_0 = nil if not editor() then CTime_0 = game.CTime() end -- запись CTime в пакет. если t=nil, то запишет один нулевой байт function w_CTime( p, t ) --set_save_marker(p, "save", false, "CTIME") if t == nil then p:w_u8(-1) --set_save_marker(p, "save", true, "CTIME") return end if (CTime == nil) or (t ~= CTime_0) then local Y, M, D, h, m, s, ms = 0, 0, 0, 0, 0, 0, 0 Y, M, D, h, m, s, ms = t:get( Y, M, D, h, m, s, ms ) p:w_u8 ( Y - 2000 ) p:w_u8 ( M ) p:w_u8 ( D ) p:w_u8 ( h ) p:w_u8 ( m ) p:w_u8 ( s ) p:w_u16( ms ) else p:w_u8 ( 0 ) end --set_save_marker(p, "save", true, "CTIME") end -- чтение CTime из пакета function r_CTime( p ) --set_save_marker(p, "load", false, "CTIME") local Y = p:r_u8() if Y == 255 then --set_save_marker(p, "load", true, "CTIME") return nil end if Y ~= 0 then local t = game.CTime() local M, D, h, m, s, ms = p:r_u8(), p:r_u8(), p:r_u8(), p:r_u8(), p:r_u8(), p:r_u16() t:set( Y + 2000, M, D, h, m, s, ms) --set_save_marker(p, "load", true, "CTIME") return t else --set_save_marker(p, "load", true, "CTIME") return 0 end end | Аналогичный участок из текущего скрипта ЗП: Код: ------------------------- запись/загрузка CTime --------------------------- local CTime_0 if not editor() then CTime_0 = game.CTime() end -- запись CTime в пакет. если t=nil, то запишет один нулевой байт function w_CTime( p, t ) --set_save_marker(p, "save", false, "CTIME") if t == nil then p:w_u8(-1) --set_save_marker(p, "save", true, "CTIME") return end if (CTime == nil) or (t ~= CTime_0) then local Y, M, D, h, m, s, ms = 0, 0, 0, 0, 0, 0, 0 Y, M, D, h, m, s, ms = t:get( Y, M, D, h, m, s, ms ) p:w_u8 ( Y - 2000 ) p:w_u8 ( M ) p:w_u8 ( D ) p:w_u8 ( h ) p:w_u8 ( m ) p:w_u8 ( s ) p:w_u16( ms ) else p:w_u8 ( 0 ) end --set_save_marker(p, "save", true, "CTIME") end -- чтение CTime из пакета function r_CTime( p ) --set_save_marker(p, "load", false, "CTIME") local Y = p:r_u8() if Y == 255 then --set_save_marker(p, "load", true, "CTIME") return nil end if Y ~= 0 then local t = game.CTime() local M, D, h, m, s, ms = p:r_u8(), p:r_u8(), p:r_u8(), p:r_u8(), p:r_u8(), p:r_u16() t:set( Y + 2000, M, D, h, m, s, ms) --set_save_marker(p, "load", true, "CTIME") return t else --set_save_marker(p, "load", true, "CTIME") return 0 end end | Проблемная строка в обоих случаях - Y, M, D, h, m, s, ms = t:get( Y, M, D, h, m, s, ms ) Найденное отличие - инициализация CTime_0. Добавил в свой скрипт - не помогло. Сэёв грузится, а вот записаться уже не получается... |