Graff46 625 Опубликовано 31 Января 2016 Какие есть методы копирования файлов в луа на стандартной библиотеке? Поделиться этим сообщением Ссылка на сообщение
Graff46 625 Опубликовано 1 Февраля 2016 os.execute Это не подходит (сворачивает игру). Надобность в копировании у меня все равно отпала. Скажу что на форуме lua.ru я нашёл разные примеры. Алгоритм заключался в том что файл открывался на чтение, считывался, потом "записывался" в другом месте. Поделиться этим сообщением Ссылка на сообщение
Graff46 625 Опубликовано 3 Февраля 2016 @TIGER_VLAD, Посмотрите из первоисточника. 1 Поделиться этим сообщением Ссылка на сообщение
Graff46 625 Опубликовано 3 Февраля 2016 Всем привет! Нужна помощь. Используя пространство oi. Создать алгоритм, который читает файл в текстовом режиме (если бы мы открыли файл блокнотом) и находит в файле некую строку, возвращает последующие 4 символа после заданной строки. Поделиться этим сообщением Ссылка на сообщение
Graff46 625 Опубликовано 3 Февраля 2016 В чём тебе нужна помощь?Листинг. Я не могу это написать, потому что ни когда не работал в луа со средствами ввода\вывода io. Поделиться этим сообщением Ссылка на сообщение
Graff46 625 Опубликовано 4 Февраля 2016 не совсем ясно - тебе нужно в неком файле может содержаться три варианта выражения (в любой строке и в любой части строки) это seoson_osen1 , seoson_osen2 , seoson_win1. Я хочу найти, в файле слово seoson_ и получить 5 (не 4, я ошибся) символа после т. е. либо osen1 либо osen2 или win1. Поделиться этим сообщением Ссылка на сообщение
Graff46 625 Опубликовано 4 Февраля 2016 match("seoson_(%a+%d)") Тут точно скобки нужны? Поделиться этим сообщением Ссылка на сообщение
Graff46 625 Опубликовано 4 Февраля 2016 (изменено) у меня код local file = io.open(getFS():update_path("$app_data_root$", "savedgames\\") .. fname .. ".sav") return file:read("*a"):match("osen") не возвращает строку osen (в файле она точно есть). Методом проб и ошибок я вычислил, что файл читается только до второй строки. Часть текстового кода файла который я мучаю ‘Э ’Э “Э ”Э •Э –Э —Э Э ™Э љЭ ›Э њЭ ќЭ ћЭ џЭ Э ЎЭ ўЭ ЈЭ ¤Э ҐЭ ¦Э §Э ЁЭ ©Э ЄЭ «Э ¬Э Э ®Э ЇЭ °Э ±Э ІЭ іЭ ґЭ µЭ ¶Э ·Э ёЭ №Э єЭ »Э јЭ ЅЭ ѕЭ їЭ АЭ БЭ ВЭ ГЭ ДЭ ЕЭ ЖЭ ЗЭ ИЭ ЙЭ КЭ ЛЭ МЭ НЭ ОЭ ПЭ РЭ СЭ ТЭ УЭ ФЭ ХЭ ЦЭ ЧЭ ШЭ ЩЭ ЪЭ ЫЭ ЬЭ ЭЭ ЮЭ ЯЭ аЭ бЭ вЭ гЭ дЭ еЭ жЭ зЭ иЭ йЭ кЭ лЭ мЭ нЭ оЭ пЭ рЭ сЭ тЭ уЭ фЭ хЭ цЭ чЭ шЭ щЭ ъЭ ыЭ ьЭ эЭ юЭ яЮ ЬяЭ Э Э Э Э Э Э Э Э Э Э Э Э Э Э Э Э Э Э Э Э Э Э Э Э Э Э Э Э Э Э Э !Э "Э #Э $Э %Э &Э 'Э (Э )Э *Э +Э ,Э -Э .Э /Э 0Э 1Э 2Э 3Э 4Э 5Э 6Э 7Э 8Э 9Э :Э ;Э <Э =Э >Э ?Э @Э AЭ BЭ CЭ DЭ EЭ FЭ GЭ HЭ IЭ JЭ KЭ LЭ MЭ NЭ OЭ PЭ QЭ RЭ SЭ TЭ UЭ VЭ WЭ XЭ YЭ ZЭ [Э \Э ]Э ^Э _Э `Э aЭ bЭ cЭ dЭ eЭ fЭ gЭ hЭ iЭ jЭ kЭ lЭ mЭ nЭ oЭ pЭ qЭ rЭ sЭ tЭ uЭ vЭ wЭ xЭ yЭ zЭ {Э |Э }Э ~Э Э ЂЭ ЃЭ ‚Э ѓЭ „Э …Э †Э ‡Э €Э ‰Э ЉЭ ‹Э ЊЭ ЌЭ ЋЭ ЏЭ ђЭ ‘Э ’Э “Э ”Э •Э –Э —Э Э ™Э љЭ ›Э њЭ ќЭ ћЭ џЭ Э ЎЭ ўЭ ЈЭ ¤Э ҐЭ ¦Э §Э ЁЭ ©Э ЄЭ «Э ¬Э Э ®Э ЇЭ °Э ±Э ІЭ іЭ ґЭ µЭ ¶Э ·Э ёЭ №Э єЭ »Э јЭ ЅЭ ѕЭ їЭ АЭ БЭ ВЭ ГЭ ДЭ ЕЭ ЖЭ ЗЭ ИЭ ЙЭ КЭ ЛЭ МЭ НЭ ОЭ ПЭ РЭ СЭ ТЭ УЭ ФЭ ХЭ ЦЭ ЧЭ ШЭ ЩЭ ЪЭ ЫЭ ЬЭ ЭЭ ЮЭ ЯЭ аЭ бЭ вЭ гЭ дЭ еЭ жЭ зЭ иЭ йЭ кЭ лЭ мЭ нЭ оЭ пЭ рЭ сЭ тЭ уЭ фЭ хЭ цЭ чЭ шЭ щЭ ъЭ ыЭ ьЭ эЭ юЭ яЮ ЬяЭ Э Э Э Э Э Э Э Э Э Э Э Э Э Э Э Э Э Э Э Э Э Э Э Э Э Э Э Э Э Э Э !Э "Э #Э $Э %Э &Э 'Э (Э )Э *Э +Э ,Э -Э .Э /Э 0Э 1Э 2Э 3Э 4Э 5Э 6Э 7Э 8Э 9Э :Э ;Э <Э =Э >Э ?Э @Э AЭ BЭ CЭ DЭ EЭ FЭ GЭ HЭ IЭ JЭ KЭ LЭ MЭ NЭ OЭ PЭ QЭ RЭ SЭ TЭ UЭ VЭ WЭ XЭ YЭ ZЭ [Э \Э ]Э ^Э _Э `Э aЭ bЭ cЭ dЭ eЭ fЭ gЭ hЭ iЭ jЭ kЭ lЭ mЭ nЭ oЭ pЭ qЭ rЭ sЭ tЭ uЭ vЭ wЭ xЭ yЭ zЭ {Э |Э }Э ~Э Э ЂЭ ЃЭ ‚Э ѓЭ „Э …Э †Э ‡Э €Э ‰Э ЉЭ ‹Э ЊЭ ЌЭ ЋЭ ЏЭ ђЭ ‘Э ’Э “Э ”Э •Э –Э —Э Э ™Э љЭ ›Э њЭ ќЭ ћЭ џЭ Э ЎЭ ўЭ ЈЭ ¤Э ҐЭ ¦Э §Э ЁЭ ©Э ЄЭ «Э ¬Э Э ®Э ЇЭ °Э ±Э ІЭ іЭ ґЭ µЭ ¶Э ·Э ёЭ №Э єЭ »Э јЭ ЅЭ ѕЭ їЭ АЭ БЭ ВЭ ГЭ ДЭ ЕЭ ЖЭ ЗЭ ИЭ ЙЭ КЭ ЛЭ МЭ НЭ ОЭ ПЭ РЭ СЭ ТЭ УЭ ФЭ ХЭ ЦЭ ЧЭ ШЭ ЩЭ ЪЭ ЫЭ ЬЭ ЭЭ ЮЭ ЯЭ аЭ бЭ вЭ гЭ дЭ еЭ жЭ зЭ иЭ йЭ кЭ лЭ мЭ нЭ оЭ пЭ рЭ сЭ тЭ уЭ фЭ хЭ цЭ чЭ шЭ щЭ ъЭ ыЭ ьЭ эЭ юЭ яЮ ЬяЭ Э Э Э Э Э Э Э Э Э Э Э Э Э Э Э Э Э Э Э Э Э Э Э Э Э Э Э Э Э Э Э !Э "Э #Э $Э %Э &Э 'Э (Э )Э *Э +Э ,Э -Э .Э /Э 0Э 1Э 2Э 3Э 4Э 5Э 6Э 7Э 8Э 9Э :Э ;Э <Э =Э >Э ?Э @Э AЭ BЭ CЭ DЭ EЭ FЭ GЭ HЭ IЭ JЭ KЭ LЭ MЭ NЭ OЭ PЭ QЭ RЭ SЭ TЭ UЭ VЭ WЭ XЭ YЭ ZЭ [Э \Э ]Э ^Э _Э `Э aЭ bЭ cЭ dЭ eЭ fЭ gЭ hЭ iЭ jЭ kЭ lЭ mЭ nЭ oЭ pЭ qЭ rЭ sЭ tЭ uЭ vЭ wЭ xЭ yЭ zЭ {Э |Э }Э ~Э Э ЂЭ ЃЭ ‚Э ѓЭ „Э …Э †Э ‡Э €Э ‰Э ЉЭ ‹Э ЊЭ ЌЭ ЋЭ ЏЭ ђЭ ‘Э ’Э “Э ”Э •Э –Э —Э Э ™Э љЭ ›Э њЭ ќЭ ћЭ џЭ Э ЎЭ ўЭ ЈЭ ¤Э ҐЭ ¦Э §Э ЁЭ ©Э ЄЭ «Э ¬Э Э ®Э ЇЭ °Э ±Э ІЭ іЭ ґЭ µЭ ¶Э ·Э ёЭ №Э єЭ »Э јЭ ЅЭ ѕЭ їЭ АЭ БЭ ВЭ ГЭ ДЭ ЕЭ ЖЭ ЗЭ ИЭ ЙЭ КЭ ЛЭ МЭ НЭ ОЭ ПЭ РЭ СЭ ТЭ УЭ ФЭ ХЭ ЦЭ ЧЭ ШЭ ЩЭ ЪЭ ЫЭ ЬЭ ЭЭ ЮЭ ЯЭ аЭ бЭ вЭ гЭ дЭ еЭ жЭ зЭ иЭ йЭ кЭ лЭ мЭ нЭ оЭ пЭ рЭ сЭ тЭ уЭ фЭ хЭ цЭ чЭ шЭ щЭ ъЭ ыЭ ьЭ эЭ юЭ яЮ !ЬяЭ Э Э Э Э Э Э Э Э Э Э Э Э Э Э Э Э Э Э Э Э Э Э Э Э Э Э Э Э Э Э Э !Э "Э #Э $Э %Э &Э 'Э (Э )Э *Э +Э ,Э -Э .Э /Э 0Э 1Э 2Э 3Э 4Э 5Э 6Э 7Э 8Э 9Э :Э ;Э <Э =Э >Э ?Э @Э AЭ BЭ CЭ DЭ EЭ FЭ GЭ HЭ IЭ JЭ KЭ LЭ MЭ NЭ OЭ PЭ QЭ RЭ SЭ TЭ UЭ VЭ WЭ XЭ YЭ ZЭ [Э \Э ]Э ^Э _Э `Э aЭ bЭ cЭ dЭ eЭ fЭ gЭ hЭ iЭ jЭ kЭ lЭ mЭ nЭ oЬ , DЕ7 nD g actor single_player юОЛЎВB)qА@цЅВјqЌ;wёІї]4єlwяяяя) v Ђ?tј М WH0? Вы <rЂ x 4xrs_armor_t qGseason osen2 l01_escape Ђ2 Ч ‰$ E ѕ 5 2L Z ђUL= l \ Ѓ /M.L f : A\ д Я Љ 9\”@ k\ PMЪ\} Х] m]BMЭMe\ в c]] )M^Md] ЋM ЄM YMрM%]T] ЫMl]ТLw cM,L®MSMі]zM`M ё]y\ x v]uM ]»M tM<MsMSMIMµMrMЌ]q\ • p] jM єL’o\Ѕ nM‚MаM·]8M©M…]7M6M¬]M] 4]Л]?M1],ЂM-M+] *MYM(M¶M'] &M‘M Ё]оMСM"]ЮLh _] ] |M §M]] ѓLљ м]]–ML] ¦] g]«] OMb]a]GL Џ^]<!M °]RM]MґM_]QM\MОMJM[M {MeMW]Ч]VMЊMXM›] PM 0MFM ~M$H] ЙM!]M-У]/3]„M]“]U]#MiM€]h]н] †]K|M5D] RM І]`]]"aM‡Md];Ц]РMW]ЬM;MЇ] [M—MШMпM НM"М]X]™MZ]ј]CMК] ‹] Q] V]бM>MФM±MNM g]№]Щ] ]г] ПMf\ ”ecolog_monster_part_2 normal Ђ freedom_kill_stalker_4-ђ dolg_defend_lager_1-„ sar_secret_lab-p val_prisonThelp- milјcontroller-„ Ђeliminateм.›tm_(Њ camp_5-ф- .Qt-<.| ш+С6-¬'Tsnip/Dи-$.Hagr_d&й3s1ђcourier_jo.а esc_blockpost_case_to_trad/<yan_find_scientist-¤21 3-Њ pprovodnik_task-Ђ XopromЁ gunslin|Icache-° Д(„'й *p†ght1Ф0_3 +0… 1-„ bar_resque_infoBhti`Ы30 (И3 barmen>¬ d x16_document.и5 .fgaЗHdym/АД+. М€,artefac0.Д.б tИ>' . 3…7-D3‘ 15А- ,.ШИP+.Њ |O'Р_return;м get_military7tt? community_que/Tp”7brai3ШЂ arklab:°`RДјЊV.Иxcrazy_veterans3<0 1 l -t5€фТ.$L +`.| аd+ђ 5 ,t.€Ђ1(Дјђ2рvasilyev2pВяrg62€ 2М .ґ3L5ђ *T.фx(ѓjob.А +5Њ (|ЂH.4ф- .Фx• car_graveyard6 +h.р М 6.Ь1м/x$Ь=РDQ-„ .цdo"6_mee._hun"p&(ь ђ-а"{%war0h%mercen`‰*<-ф drunk_ђXЂTitem-€ l!Њ(&se^tov- 3d.X € -E_.Њ dar_codedoor/Ь`SҐ#s2Њ3‚105¬Ђq_.ММmЂ'h.ђ zastava_d±ander)д2°3P.H.А.РАO<dwolf.0/h.garbageЊO&)-Ўa&—)kro.| 3Њ.( "‡/sos#Ё*-l. .`%Ф%.ґ2„captive2”xУ0x&/X 3Ь.Ёи\(HЂљ. !tutorial_wounded.рм+.‘ m,€6.4 5<1Д|b"њ/rule.Д(p$°j_rifl.ј-.¤./'. МV*$/631. gLѓboar.ДF€*”z.*Ђ 'T.ђ 0М.ЂШ+м.esc+ю поправлено Изменено 4 Февраля 2016 пользователем Graff46 Поделиться этим сообщением Ссылка на сообщение
Graff46 625 Опубликовано 4 Февраля 2016 @User_X.A.R26, function load_dialog:load_game_internal() local console = get_console() local list = self:GetListWnd("list_window") if list:GetSize()==0 then return end local index = list:GetSelectedItem() if index == -1 then return end local item = list:GetItem(index) local fname = item.fn:GetText() if (alife() == nil) then local file = io.open(getFS():update_path("$app_data_root$", "savedgames\\") .. fname .. ".sav") get_console():execute(file:read("*a"):match("osen")) --"seoson_%a+%d")) --file:close() console:execute ("disconnect") console:execute ("start server(" .. fname .. "/single/alife/load) client(localhost)") else console:execute ("load " .. fname) end end Поделиться этим сообщением Ссылка на сообщение
Graff46 625 Опубликовано 4 Февраля 2016 (изменено) @User_X.A.R26, каким шаблоном? Единственный поиск по шаблону - закоментирован Да и поиск работает, только не дальше первой строки в файле почему то Изменено 4 Февраля 2016 пользователем Graff46 Поделиться этим сообщением Ссылка на сообщение
Graff46 625 Опубликовано 4 Февраля 2016 (изменено) @User_X.A.R26, Я тут провел эксперимент. На одном из форумов я нашел код для копирования файлов основанный как раз то на чтении и копировании local source = io.open(source_path) local dest = io.output(dest_path) dest:write(source:read("*a")) source:close() dest:close() А вот мой код local source = io.open(getFS():update_path("$app_data_root$", "savedgames\\osen2.sav")) local dest = io.output(getFS():update_path("$app_data_root$", "seoson.ini")) dest:write(source:read("*a")) source:close() dest:close() Но когда я выполнил код то в копии (в файле seoson.ini) было лишь яяяя Ъ>9 L аОz»Ѕ9@ A A ¤t all љЂИ2‘sЏBі;5ђ<кХDuЂН L|} p Ьhl | l } p Э Э Э Э Э Э Э Э Ь |ip Э Ь |ip Э Э Э Э Хотя в исходном файле текста почти на мегабайт. Что то обрывает чтение в строках, может пробелы какие или пустоты...? Malandrinus да это я от безысходности, я делаю в неком файле может содержаться три варианта выражения (в любой строке и в любой части строки) это seoson_osen1 , seoson_osen2 , seoson_win1. Я хочу найти, в файле слово seoson_ и получить 5 (не 4, я ошибся) символа после т. е. либо osen1 либо osen2 или win1. когда работать не стало, я просто искал кусок строки. Да и смысл уже в том, что файл криво читается и тут дело не в строках получается... Изменено 4 Февраля 2016 пользователем Graff46 Поделиться этим сообщением Ссылка на сообщение
Graff46 625 Опубликовано 4 Февраля 2016 (изменено) @Malandrinus, Файл в котором я работаю это сейв ТЧ, Если его открыть текстовым процессором, то можно увидеть как некоторые ресурсы (части логики, инфопоршни, переменные из пстор и т.д.) хранятся "прямым текстом", вот я и решил, что читать файл как текстовой. Изменено 4 Февраля 2016 пользователем Graff46 Поделиться этим сообщением Ссылка на сообщение
Graff46 625 Опубликовано 4 Февраля 2016 класс reader тебе в помощь Им можно воспользоваться до загрузки игры? Пожалуй ты его успешно теми своими экспериментами навернул Нет, он загружается нормально, я же файл не изменял, только читал его.reader Это который при загрузке в биндере? Я им не смогу воспользоваться до загрузки игры из гл. меню... Поделиться этим сообщением Ссылка на сообщение
Graff46 625 Опубликовано 5 Февраля 2016 (изменено) @User_X.A.R26, @Malandrinus, Ура! получилось! Не понадобились бинарное же посимвольное чтение и собственная реализация функций поиска текста я то хотел уже из хекс редактора шаблоны текста брать, но даже открыв файл как бинарный он сохранил свою "текстовую" структуру. Вот мой код function load_dialog:load_game_internal() local console = get_console() local list = self:GetListWnd("list_window") if list:GetSize()==0 then return end local index = list:GetSelectedItem() if index == -1 then return end local item = list:GetItem(index) local fname = item.fn:GetText() if (alife() == nil) then local file = io.open(getFS():update_path("$app_data_root$", "savedgames\\") .. fname .. ".sav", "rb") get_console():execute(file:read("*a"):match("osen%d")) file:close() console:execute ("disconnect") console:execute ("start server(" .. fname .. "/single/alife/load) client(localhost)") else console:execute ("load " .. fname) end end Сохранение загрузилось, после выхода я вижу в логе ! Unknown command: osen2 Теперь можно делать самому враппер сейвов... local str = file:r_stringZ() Такое не сделать наверно без загрузки уровня? Изменено 5 Февраля 2016 пользователем Graff46 1 Поделиться этим сообщением Ссылка на сообщение
Graff46 625 Опубликовано 5 Февраля 2016 Пользоваться можно и до загрузки. я попробовал [error]Arguments : LUA error: ... of fukushima\gamedata\scripts\ui_load_dialog.script:275: attempt to call method 'r_stringZ' (a nil value) stack trace: Поделиться этим сообщением Ссылка на сообщение
Graff46 625 Опубликовано 5 Февраля 2016 (изменено) file:r_stringZ() Это методы reader'а? Я не могу найти описание этого класса на нашем форуме и на близлежащих, из луа _хелп ни чего не понял, там только перечислены методы. Если можно, тыкните носом на описание класса reader. Изменено 5 Февраля 2016 пользователем Graff46 Поделиться этим сообщением Ссылка на сообщение
Graff46 625 Опубликовано 12 Мая 2016 (изменено) Подскажите, кроме хилого os.execute("") , у Луа есть другие способы работать с шеллом оси и запускать внешние приложения с параметрами? Также буду признателен за уроки на русском по wxLua и IUP.. Изменено 12 Мая 2016 пользователем Graff46 Поделиться этим сообщением Ссылка на сообщение
Graff46 625 Опубликовано 3 Августа 2016 Я призадумался. Когда я начал изучать в ВУЗ'е вэб-программирование, то конечно же столкнулся с фреймворком "jQuery" в теории по этой библиотеке описывалось почему есть jQuery.js и jQuery_min.js. Дело все в представлении листинга "в одну строку" (Для Нотпад++ есть плагин JStool --> JS_min). Такое представление кода хоть и некрасива, но повышает скорость исполнения. Что если использовать эту ф-цию для критичных по времени участков кода в скриптах Сталкера? Поделиться этим сообщением Ссылка на сообщение
Graff46 625 Опубликовано 22 Марта 2017 Подскажите что это делает? prefetch("_G") Поделиться этим сообщением Ссылка на сообщение
Graff46 625 Опубликовано 21 Августа 2017 Вопрос по luabind: class (my_new_class) (parent_class) function my_new_class:_init () ... end Можно ли обращаясь к my_new_class получить его предка, т. е. parent_class ? Поделиться этим сообщением Ссылка на сообщение