SkepticalFox 1,445 #298790 Posted November 16, 2015 Я вообще для редактирования файлов использую старые добрые Notepad++Да я что-то задумался, и написал кучу кода в Орионе, а оно не засейвилось. Нахрена тогда вешать админский манифест?Чтобы было. Quote Share this post Link to post Short link Share on other sites
GPCracker 2,088 #298791 Posted November 16, 2015 Чтобы было.1. Это может создать проблемы людям, у кого нет доступа к админке на компе, хотя она фактически для работы приложения не нужна. 2. Просить права, которые тебе фактически не нужны, не есть хорошо с точки зрения безопасности. 3. Запустить от рута или создать соответствующий ярлык никто не мешает. Quote Share this post Link to post Short link Share on other sites
SkepticalFox 1,445 #298793 Posted November 16, 2015 (edited) Запустить от рута или создать соответствующий ярлык никто не мешает.Но ничего не мешает перезапуститься Ориону с нужными правами. Как я понимаю, ты его открываешь какой-то программой, модуль к которой ты написал?Blender Я хочу создать нормальный импорт в эту программу из ресурсов WoT. Потом можно задуматься и над экспортом... Edited November 16, 2015 by ShadowHunterRUS Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,210 #298800 Posted November 16, 2015 Но ничего не мешает перезапуститься Ориону с нужными правами. И не засейвить при этом того что ты написал в редакторе. Думаю проще отловить ошибку записи и предложить сохранить в другое место Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,210 #298921 Posted November 17, 2015 Залил архив со свежими исходниками 0.9.12 cборка 25. 7 Quote Share this post Link to post Short link Share on other sites
fecell 125 #299144 Posted November 18, 2015 'офтоп' вот блин засада.. и победить "малой кровью" как-то не получается :( src = ''' def testfunc(): return type(testfunc) ''' co = compile(src, '<testfunc>', 'exec') for code in co.co_consts: if (type(code) == type(co)) and (code.co_name == 'testfunc'): break print eval(code) имеем ошибку: Traceback (most recent call last): File "test.py", line 10, in <module> print eval(code) File "<testfunc>", line 3, in testfunc NameError: global name 'testfunc' is not defined т.е. функция которую вызываем не видит в контексте своей среды выполнения сама себя, выходит так.. но, млин, когда выводит ошибку, то точно указывает на неё - File "<testfunc>", line 3, in testfunc дилемма))) Quote Share this post Link to post Short link Share on other sites
GPCracker 2,088 #299157 Posted November 18, 2015 (edited) т.е. функция которую вызываем не видит в контексте своей среды выполнения сама себя, выходит так..Потому что не eval надо, а exec, НЯП. Ты же компилишь с 'exec'. eval - это вычисление выражения. Т.е. print eval('2 + 2'); exec 'a = 2 + 2'; print a; Edited November 18, 2015 by GPCracker Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,210 #299339 Posted November 18, 2015 (edited) @fecell, а теперь отвечают знатоки ))) Твой код правильно писать вот так: from new import function src = ''' def testfunc(): return type(testfunc) ''' co = compile(src, '<testfunc>', 'exec') for code in co.co_consts: if (type(code) == type(co)) and (code.co_name == 'testfunc'): break testfunc = function(code, globals()) print testfunc() Почему? Потому что ответ кроется в дизассме функции testfunc: <<< Object: function 'testfunc' <<< ------------------------------------------------------------------ <<< ******************** code beginning (level 0) ******************** <<< discode[hexcode]: <<< | 3 0 LOAD_GLOBAL [74 00 00] 0 (type) <<< | 3 LOAD_GLOBAL [74 01 00] 1 (testfunc) <<< | 6 CALL_FUNCTION [83 01 00] 1 <<< | 9 RETURN_VALUE [53 -- --] <<< consts: <<< (0) None <<< ********************** code ending (level 0) ********************* Легко увидеть что рекурсивный вызов testfunc возможен только если она есть в globals(). В случае же eval она туда ни как не попадает. ЗЫ: Колись чего такое пилишь? )))))) Edited November 18, 2015 by StranikS_Scan 1 Quote Share this post Link to post Short link Share on other sites
IzeBerg 128 #299341 Posted November 18, 2015 И не засейвить при этом того что ты написал в редакторе. Думаю проще отловить ошибку записи и предложить сохранить в другое место А бэкап-файл делать? Оно пригодится еще тогда, когда был краш ориона. Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,210 #299346 Posted November 18, 2015 (edited) А бэкап-файл делать? Оно пригодится еще тогда, когда был краш ориона. Смотря что за краш, если краш в редакторе, то он не даст обратится к данным в нем. Но в принципе идея нормальная - можно запилить глобальный перехват крашей с попыткой бэкапа. Edited November 18, 2015 by StranikS_Scan Quote Share this post Link to post Short link Share on other sites
fecell 125 #299383 Posted November 19, 2015 (edited) 'офтоп' from new import function но это на деле (из new.py) from types import FunctionType as functionа это в свою очередь (из types.py)def _f(): passFunctionType = type(_f)а этот код как раз и пытаюсь реализовать иначе, чтобы FunctionType стала функцией, а не переменной и возвращала просто свой же тип.Вообщем парадокс получается)) чтобы динамически создать функцию возвращающую тип FunctionType надо уже иметь функцию, а её то и нет изначально (при условии что импорты не используются, кроме sys.. но в sys всё builtin_function_or_method.. впрочем может получиться через такой тип создать, щас попробую).зы: с криптовалкой балуюсь, доделываю, переделываю.. а там все создается динамически из одного модуля и изначально функций просто нет)) ну да ладно, значит будет пустая функция в скомпилированном скрипте да и все дела. upd: "впрочем может получиться через такой тип создать" -> TypeError: cannot create 'builtin_function_or_method' instances Edited November 19, 2015 by fecell Quote Share this post Link to post Short link Share on other sites
akey 35 #299389 Posted November 19, 2015 Подскажите пожалуйста. Почему новая версия компилятора ломает кодировку. То есть кириллица выводится некорректно, зёбриками? С версией 1.3.0 такой беды не было. Спасибо. Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,210 #299395 Posted November 19, 2015 upd: "впрочем может получиться через такой тип создать" -> TypeError: cannot create 'builtin_function_or_method' instances Нэээ, иначе я бы не спал спокойно )))) Подскажите пожалуйста. Почему новая версия компилятора ломает кодировку. То есть кириллица выводится некорректно, зёбриками? С версией 1.3.0 такой беды не было. Спасибо. В UTF-8 потому что нужно сохранять, если у вас там кириллица есть. Версии вообще не причем. Quote Share this post Link to post Short link Share on other sites
akey 35 #299698 Posted November 20, 2015 В UTF-8 потому что нужно сохранять, если у вас там кириллица есть. Версии вообще не причем. Беру с нуля 1.3.0 компилирую, всё в норме. Беру тот же скрипт и с нуля 1.3.1 компилирую, отображение сломано. Я бы не писал если бы было так просто. Настройки ни какие не менял при этом. Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,210 #299738 Posted November 20, 2015 (edited) Беру с нуля 1.3.0 Не бери старый - он с ошибками. Что нужно делать я тебе написал уже - если есть кириллица в тексте, то скрипт нужно сохранить в формате UTF-8. Если он в ANSI то будут кракозяблики. Edited November 20, 2015 by StranikS_Scan Quote Share this post Link to post Short link Share on other sites
SkepticalFox 1,445 #299953 Posted November 20, 2015 кракозяблики.Это заразно... Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,210 #299954 Posted November 20, 2015 Это заразно... Смахивает на косяк с кириллицей в DOS-консоли, который решался в делфе так: function StrAnsiToOem(const S: AnsiString): AnsiString; begin SetLength(Result, Length(S)); AnsiToOemBuff(@S[1], @Result[1], Length(S)); end; Quote Share this post Link to post Short link Share on other sites
SkepticalFox 1,445 #299956 Posted November 20, 2015 Смахивает на косяк с кириллицей в DOS-консолиИ этот косяк на Windows 10 так и не пофиксили)) Quote Share this post Link to post Short link Share on other sites
fecell 125 #301370 Posted November 27, 2015 Странник введи в орион расспаковку защищённых скриптов игры из корабликов! а там так и не сняли защиту после релиза, что-ли? ходили слухи что релиз будет за этой фигни.. даже интересно стало посмотреть, много клиент весит? Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,210 #301380 Posted November 27, 2015 а там так и не сняли защиту после релиза, что-ли? ходили слухи что релиз будет за этой фигни.. даже интересно стало посмотреть, много клиент весит? Не только не снимут, но усилить должны были си-шную часть, чтоб и экзе патчить нельзя было и чтоб флэшки левые исключить из работы. Исходники в корабликах - бесполезны, так как на питоне там моды работать не будут. Обратно не зашифровать. У них поточное шифрование модулей сделано в порядке их самоимпорта, шифровщик си-шный, ключ морфируется после каждой итерации шифрования. Я покопался только в модулях, мне показалось что сделано всё именно так. Quote Share this post Link to post Short link Share on other sites