jeroohn 285 #113897 Posted October 15, 2013 (edited) Неверно. Питон - интерпретируемый язык, поэтому если даже дальше в коде есть ошибки, все равно это не отобразится. а вы сами то пробывали? =) Подскажите, не пойму как установить pycdc? Устанавливаете Visual Studio 2008 открываете в ней проект и выполняете его построение Edited October 15, 2013 by jeroohn 1 Quote Share this post Link to post Short link Share on other sites
Axon555 3 #113925 Posted October 15, 2013 (edited) Пробовал, простейшие синтаксические да, а где проблема с классом или функцией или что-то не объявлено, то фиг. Я не к тому чтоб придраться, наоборот большое спасибо, быстро разобрался как работать с питоном в клиенте, а чтоб люди не сильно полагались на сообщения питона, а сами проверяли свой код :) Edited October 15, 2013 by Axon555 1 Quote Share this post Link to post Short link Share on other sites
jeroohn 285 #113926 Posted October 15, 2013 Пробовал, простейшие синтаксические да, а где проблема с классом или функцией или что-то не объявлено, то фиг. да я собственно и имел в виду синтаксические... остальные да не ловит ибо не положено ему этого делать =). а чтоб люди не сильно полагались на сообщения питона, а сами проверяли свой код :) золотые слова. 1 Quote Share this post Link to post Short link Share on other sites
Yusha 8 #114812 Posted October 18, 2013 Ребят, все (известные мне прицелы) которые используют MS.pyc в тесте 0.8.9 не работают... кто знает, что в них нужно подправить, чтобы зависания не происходили при загрузке боя? Я понимаю, что содержимое у них может быть разное, но все же... симптомы одинаковые... вот 2 декомпилированных кода... гуру, взгляните: 'Код 1' '\n(c) Dellux 2013\n' import BigWorld import GUI import BattleReplay from AvatarInputHandler.aims import Aim from gui.IngameSoundNotifications import ComplexSoundNotifications import gui.Scaleform.Flash import thread saved_setTarget = Aim.setTarget saved_setAimingEnded = ComplexSoundNotifications.setAimingEnded def heightSight(): class MultiController(): __module__ = __name__ def control(self): import time import AvatarInputHandler.control_modes time.sleep(10.0) while True: try: gui.Scaleform.Flash.GUI.roots()[1].movie.invoke(('call', ['Aim.heightSight', int(round((BigWorld.camera().position.y - AvatarInputHandler.control_modes.getFocalPoint()[1])))])) except: pass time.sleep(0.050000000000000003) mca1 = MultiController() mca1.control() thread.start_new_thread(heightSight, ()) def new_setTarget(self, target): typeDescr = target.typeDescriptor speed = [typeDescr.physics['speedLimits'][0], typeDescr.physics['speedLimits'][1]] hullArmor = [typeDescr.hull['primaryArmor'][0], typeDescr.hull['primaryArmor'][1], typeDescr.hull['primaryArmor'][2]] turretArmor = [typeDescr.turret['primaryArmor'][0], typeDescr.turret['primaryArmor'][1], typeDescr.turret['primaryArmor'][2]] gunName = typeDescr.gun['shortUserString'] gunReload = typeDescr.gun['reloadTime'] visionRadius = typeDescr.turret['circularVisionRadius'] iconName = typeDescr.name.replace(':', '-') shellDamage = [0, 0, 0] i = 0 for element in target.typeDescriptor.gun['shots']: shellDamage[i] = element['shell']['damage'][0] i = (i + 1) shellPower = [0, 0, 0] j = 0 for element in target.typeDescriptor.gun['shots']: shellPower[j] = element['piercingPower'][0] j = (j + 1) shellType = ['', '', ''] k = 0 for element in target.typeDescriptor.gun['shots']: if (element['shell']['kind'] == 'ARMOR_PIERCING'): shellType[k] = element['shell']['kind'].replace('ARMOR_PIERCING', 'AP') elif (element['shell']['kind'] == 'HIGH_EXPLOSIVE'): shellType[k] = element['shell']['kind'].replace('HIGH_EXPLOSIVE', 'HE') elif (element['shell']['kind'] == 'ARMOR_PIERCING_CR'): shellType[k] = element['shell']['kind'].replace('ARMOR_PIERCING_CR', 'CR') else: shellType[k] = element['shell']['kind'].replace('HOLLOW_CHARGE', 'HC') k = (k + 1) saved_setTarget(self, target) self._flashCall('infoPanel', [speed[0], speed[1], gunName, gunReload, visionRadius, iconName, hullArmor[0], hullArmor[1], hullArmor[2], turretArmor[0], turretArmor[1], turretArmor[2], shellDamage[0], shellDamage[1], shellDamage[2], shellPower[0], shellPower[1], shellPower[2], shellType[0], shellType[1], shellType[2]]) def new_setReloading(self, duration, startTime = None, isReloading = True, correction = None): replayCtrl = BattleReplay.g_replayCtrl if (replayCtrl.isPlaying and replayCtrl.replayContainsGunReloads): replayCtrl.setGunReloadTime(startTime, duration) if (replayCtrl.isRecording and replayCtrl.setGunReloadTime(startTime, duration)): pass if (correction is not ): params = self._getCorrectionReloadingParams(correction) if ((params is not ) and self._flashCall('setReloading', params)): pass else: self._flashCall('setReloading', [duration, startTime, isReloading, ]) shotDescr = BigWorld.player().vehicleTypeDescriptor.shot gunDescr = BigWorld.player().vehicleTypeDescriptor.gun vehicleName = BigWorld.player().vehicleTypeDescriptor.type.userString try: shellSplash = shotDescr['shell']['explosionRadius'] except: shellSplash = 0 if (shotDescr['shell']['kind'] == 'ARMOR_PIERCING'): shellType = shotDescr['shell']['kind'].replace('ARMOR_PIERCING', 'AP') elif (shotDescr['shell']['kind'] == 'HIGH_EXPLOSIVE'): shellType = shotDescr['shell']['kind'].replace('HIGH_EXPLOSIVE', 'HE') elif (shotDescr['shell']['kind'] == 'ARMOR_PIERCING_CR'): shellType = shotDescr['shell']['kind'].replace('ARMOR_PIERCING_CR', 'CR') else: shellType = shotDescr['shell']['kind'].replace('HOLLOW_CHARGE', 'HC') self._flashCall('vehicleParams', [gunDescr['shortUserString'], shotDescr['speed'], shotDescr['gravity'], shotDescr['shell']['userString'], shellSplash, vehicleName, shellType]) def new_setHealth(self, cur, max): self._flashCall('setHealth', [(cur / max), cur, max]) def new_setAimingEnded(self, isEnded, isReloading): saved_setAimingEnded(self, isEnded, isReloading) gui.Scaleform.Flash.GUI.roots()[1].movie.invoke(('call', ['Aim.aimingEnded', isEnded])) Aim.setTarget = new_setTarget Aim._setReloading = new_setReloading Aim._setHealth = new_setHealth ComplexSoundNotifications.setAimingEnded = new_setAimingEnded #+++ okay decompyling # decompiled 1 files: 1 okay, 0 failed, 0 verify failed 'Код 2' --- This code section failed: --- 0 LOAD_CONST '\n(c) Dellux 2013\n' 3 STORE_NAME '__doc__' 6 LOAD_CONST -1 9 LOAD_CONST '' 12 IMPORT_NAME 'BigWorld' 15 STORE_NAME 'BigWorld' 18 LOAD_CONST -1 21 LOAD_CONST '' 24 IMPORT_NAME 'GUI' 27 STORE_NAME 'GUI' 30 LOAD_CONST -1 33 LOAD_CONST '' 36 IMPORT_NAME 'Math' 39 STORE_NAME 'Math' 42 LOAD_CONST -1 45 LOAD_CONST '' 48 IMPORT_NAME 'math' 51 STORE_NAME 'math' 54 LOAD_CONST -1 57 LOAD_CONST '' 60 IMPORT_NAME 'BattleReplay' 63 STORE_NAME 'BattleReplay' 66 LOAD_CONST -1 69 LOAD_CONST '' 72 IMPORT_NAME 'AvatarInputHandler.control_modes' 75 STORE_NAME 'AvatarInputHandler' 78 LOAD_CONST -1 81 LOAD_CONST ('degrees',) 84 IMPORT_NAME 'math' 87 IMPORT_FROM 'degrees' 90 STORE_NAME 'degrees' 93 POP_TOP '' 94 LOAD_CONST -1 97 LOAD_CONST ('Aim',) 100 IMPORT_NAME 'AvatarInputHandler.aims' 103 IMPORT_FROM 'Aim' 106 STORE_NAME 'Aim' 109 POP_TOP '' 110 LOAD_CONST -1 113 LOAD_CONST ('StrategicAim',) 116 IMPORT_NAME 'AvatarInputHandler.aims' 119 IMPORT_FROM 'StrategicAim' 122 STORE_NAME 'StrategicAim' 125 POP_TOP '' 126 LOAD_CONST -1 129 LOAD_CONST ('ArcadeAim',) 132 IMPORT_NAME 'AvatarInputHandler.aims' 135 IMPORT_FROM 'ArcadeAim' 138 STORE_NAME 'ArcadeAim' 141 POP_TOP '' 142 LOAD_CONST -1 145 LOAD_CONST ('clearState',) 148 IMPORT_NAME 'AvatarInputHandler.aims' 151 IMPORT_FROM 'clearState' 154 STORE_NAME 'clearState' 157 POP_TOP '' 158 LOAD_CONST -1 161 LOAD_CONST ('_FlashGunMarker',) 164 IMPORT_NAME 'AvatarInputHandler.control_modes' 167 IMPORT_FROM '_FlashGunMarker' 170 STORE_NAME '_FlashGunMarker' 173 POP_TOP '' 174 LOAD_CONST -1 177 LOAD_CONST ('ComplexSoundNotifications',) 180 IMPORT_NAME 'gui.IngameSoundNotifications' 183 IMPORT_FROM 'ComplexSoundNotifications' 186 STORE_NAME 'ComplexSoundNotifications' 189 POP_TOP '' 190 LOAD_NAME 'False' 193 STORE_GLOBAL 'isAimingEnded' 196 LOAD_CONST '' 199 MAKE_FUNCTION_0 '' 202 STORE_NAME 'new_update' 205 LOAD_NAME 'new_update' 208 LOAD_NAME 'Aim' 211 STORE_ATTR '_update' 214 LOAD_NAME 'Aim' 217 LOAD_ATTR '_setReloading' 220 STORE_NAME 'saved_setReloading' 223 LOAD_CONST '' 226 LOAD_NAME 'True' 229 LOAD_CONST '' 232 LOAD_CONST '' 235 MAKE_FUNCTION_3 '' 238 STORE_NAME 'new_setReloading' 241 LOAD_NAME 'new_setReloading' 244 LOAD_NAME 'Aim' 247 STORE_ATTR '_setReloading' 250 LOAD_CONST '' 253 MAKE_FUNCTION_0 '' 256 STORE_NAME 'new_setHealth' 259 LOAD_NAME 'new_setHealth' 262 LOAD_NAME 'Aim' 265 STORE_ATTR '_setHealth' 268 LOAD_CONST '' 271 MAKE_FUNCTION_0 '' 274 STORE_NAME 'new_setTarget' 277 LOAD_NAME 'new_setTarget' 280 LOAD_NAME 'Aim' 283 STORE_ATTR '_setTarget' 286 LOAD_NAME 'StrategicAim' 289 LOAD_ATTR '_enable' 292 STORE_NAME 'saved_strategic_enable' 295 LOAD_CONST '' 298 MAKE_FUNCTION_0 '' 301 STORE_NAME 'new_strategic_enable' 304 LOAD_NAME 'new_strategic_enable' 307 LOAD_NAME 'StrategicAim' 310 STORE_ATTR '_enable' 313 LOAD_NAME 'StrategicAim' 316 LOAD_ATTR '_update' 319 STORE_NAME 'saved_strategic_update' 322 LOAD_CONST '' 325 MAKE_FUNCTION_0 '' 328 STORE_NAME 'new_strategic_update' 331 LOAD_NAME 'new_strategic_update' 334 LOAD_NAME 'StrategicAim' 337 STORE_ATTR '_update' 340 LOAD_CONST '' 343 MAKE_FUNCTION_0 '' 346 STORE_NAME '_getAimDistanceMS' 349 LOAD_NAME '_getAimDistanceMS' 352 LOAD_NAME 'StrategicAim' 355 STORE_ATTR '_getAimDistanceMS' 358 LOAD_NAME 'ArcadeAim' 361 LOAD_ATTR '_enable' 364 STORE_NAME 'saved_arcade_enable' 367 LOAD_CONST '' 370 MAKE_FUNCTION_0 '' 373 STORE_NAME 'new_arcade_enable' 376 LOAD_NAME 'new_arcade_enable' 379 LOAD_NAME 'ArcadeAim' 382 STORE_ATTR '_enable' 385 LOAD_CONST '' 388 MAKE_FUNCTION_0 '' 391 STORE_NAME 'new_arcade_update' 394 LOAD_NAME 'new_arcade_update' 397 LOAD_NAME 'ArcadeAim' 400 STORE_ATTR '_update' 403 LOAD_NAME 'ComplexSoundNotifications' 406 LOAD_ATTR 'setAimingEnded' 409 STORE_NAME 'saved_setAimingEnded' 412 LOAD_CONST '' 415 MAKE_FUNCTION_0 '' 418 STORE_NAME 'new_setAimingEnded' 421 LOAD_NAME 'new_setAimingEnded' 424 LOAD_NAME 'ComplexSoundNotifications' 427 STORE_ATTR 'setAimingEnded' 430 LOAD_NAME '_FlashGunMarker' 433 LOAD_ATTR '_changeColor' 436 STORE_NAME 'saved_changeColor' 439 LOAD_CONST '' 442 MAKE_FUNCTION_0 '' 445 STORE_NAME 'new_changeColor' 448 LOAD_NAME 'new_changeColor' 451 LOAD_NAME '_FlashGunMarker' 454 STORE_ATTR '_changeColor' 457 LOAD_NAME '_FlashGunMarker' 460 LOAD_ATTR 'update' 463 STORE_NAME 'saved_gm_update' 466 LOAD_CONST '' 469 MAKE_FUNCTION_0 '' 472 STORE_NAME 'new_gm_update' 475 LOAD_NAME 'new_gm_update' 478 LOAD_NAME '_FlashGunMarker' 481 STORE_ATTR 'update' 484 LOAD_NAME 'BigWorld' 487 LOAD_NAME 'BigWorld' 490 POP_TOP '' 491 LOAD_CONST '' 494 RETURN_VALUE '' Syntax error at or near `POP_TOP' token at offset 490 Quote Share this post Link to post Short link Share on other sites
MakcT40 331 #114832 Posted October 18, 2013 Ребят, все (известные мне прицелы) которые используют MS.pyc в тесте 0.8.9 не работают...Автор скрипта выложит обновление после релиза 0.8.9. Quote Share this post Link to post Short link Share on other sites
Dmitry81 3 #115348 Posted October 20, 2013 (edited) а вы сами то пробывали? =) Устанавливаете Visual Studio 2008 открываете в ней проект и выполняете его построение при компиляции вываливается с ошибкой fatal error C1083: Cannot open source file: '.\bytes\python_33.cpp': No such file or directory начиная с _10 файла. Не понятно, зачем такие сложности и почему нельзя было выложить готовый екзешник. Edited October 20, 2013 by Dmitry81 Quote Share this post Link to post Short link Share on other sites
jeroohn 285 #115375 Posted October 20, 2013 fatal error C1083: Cannot open source file: '.\bytes\python_33.cpp': No such file or directory начиная с _10 файла. в папке bytes выполни python comp_map.py Quote Share this post Link to post Short link Share on other sites
BuSH 174 #116100 Posted October 23, 2013 Собственно вопрос припёк меня давно. Есть-ли какие-то утилиты/способы декомпилировать и компилировать *.pyc файлы? P.s. Гугл не помог, кидал в какие-то онлайн-декомпиляторы, но там ограничение 10кб. пару месяцев назад стал вопрос, спросил у гугла, скачал с гит после пары ошибок с указанной причиной, нужные русы, были задекомпилены на всё ушло не больше часа 3 Quote Share this post Link to post Short link Share on other sites
Yusha 8 #120757 Posted November 1, 2013 7. В папке с исходным скриптом который мы редактировали должен появится компилированный скрипт с расширением pyc его можно закидывать в клиент Все так и делаю... даже питон 2.6.4 поставил (как на скрине)... лишних ошибок нет (пробовал даже не трогать исходный файл = не править)... все как на скринах выводит, но скомпилированный файл не появляется? Может это быть из-за Win 7 x64? Quote Share this post Link to post Short link Share on other sites
Slava7572 1,685 #121499 Posted November 2, 2013 1. Скачиваешь питон 2.7.http://www.python.org/ftp/python/2.7.5/python-2.7.5.msi 2. Устанавливаешь питон в папку скажем C:\Python27 3. Добавляешь папку с питоном в переменную среды Path 1116.png 1117.png 4. Скачиваешь uncompyle2 https://github.com/Mysterie/uncompyle2/archive/master.zip 5. Распаковываешь ее в скажем c:\uncompyle2 6. Открываешь командную строку и переходишь в папку с uncompyle2 cd c:\uncompyle2 7. устанавливаем утилиту выполнив в командной строке python setup.py install 8. если все ок у нас должны появится папки build и в ней папка scripts-2.7 в которой лежит собственно сама утилита файл uncompyle2 9. берем интересующий нас скрипт например cameranode.pyc и кладем его в папку c:\uncompyle2\build\scripts-2.7\ 10. открываем командную строку и переходим в ней в папку со скриптом cd c:\uncompyle2\build\scripts-2.7\ 11. переводим скрипт из бинарика в исходный вид: python uncompyle2 -o cameranode.py cameranode.pyc Вот собственно и вся декомпиляция слог у меня чугунный но вроде достаточно понятно изложил.... Теперь немного по поводу компиляции скриптов. В клиенте использована более ранняя версия 2.6 поэтому компилировать будем в нем, ранее установленная версия для этого не подойдет. 1. Скачиваем Python 2.6 http://www.python.org/download/releases/2.6/ 2. Устанавливаем его в папку C:\Python26\ 3.Выбираем скрипт который мы будем редактировать 1112.png 4. Убеждаемся что скрипт открылся именно в версии 2.6 1113.png 5. Вносим необходимые изменения в скрипт и пытаемся выполнить 1114.png 6. Попадаем в окно интерпретатора, который должен жаловатся на отсутсвие модуля BigWorld других ошибок быть НЕ ДОЛЖНО иначе правим свой скрипт 1115.png 7. В папке с исходным скриптом который мы редактировали должен появится компилированный скрипт с расширением pyc его можно закидывать в клиент Скажите пожалуйста,пробовал компилировать как в инструкции,установил 2.6,после пункта №3 выскакивает это (скрин№1),в журнале событий вот это (скрин №2).В чем может быть проблема?Вин7х64Макс Quote Share this post Link to post Short link Share on other sites
Yusha 8 #121559 Posted November 2, 2013 Кто может готовый *.py собрать? Quote Share this post Link to post Short link Share on other sites
MakcT40 331 #121658 Posted November 2, 2013 Кто может готовый *.py собрать?Могу попробовать. Quote Share this post Link to post Short link Share on other sites
Yusha 8 #121780 Posted November 3, 2013 Я уже поставил виртуальную машину.... там собрал. Quote Share this post Link to post Short link Share on other sites
NikolayHAOS 274 #121987 Posted November 3, 2013 (edited) Я уже поставил виртуальную машину.... там собрал. Проблема решена на виртуальной машине. Все получилось. Блин такой же косяк, не появляется файл. А на виртуалку ты какую ОС закатал, а то у меня на втором компе x86, но тоже файлик не появился. Пишет вот такую ошибку. Traceback (most recent call last): File "C:\1\111\currentvehicle.py", line 2, in <module> import BigWorld ImportError: No module named BigWorld Файл не создаётся. Edited November 3, 2013 by NikolayHAOS Quote Share this post Link to post Short link Share on other sites
Yusha 8 #122125 Posted November 3, 2013 Я закатал Хрюшу на 32х...полет нормальный. Даже ничего не закрываю... просто гибернирую виртуалку... а потом раз... и даже редактор уже открыт. Quote Share this post Link to post Short link Share on other sites
jeroohn 285 #122481 Posted November 4, 2013 Скажите пожалуйста,пробовал компилировать как в инструкции,установил 2.6,после пункта №3 выскакивает это (скрин№1),в журнале событий вот это (скрин №2).В чем может быть проблема?Вин7х64Макс side by Side ошибка самая неприятная из всех что мне встречалась раньше, конкретного решения не подскажу лишь скажу что мне помогло установка подходящего под операционку vcredist.exe и обновление NETFramework Traceback (most recent call last): File "C:\1\111\currentvehicle.py", line 2, in import BigWorld ImportError: No module named BigWorld Файл не создаётся. Это не ошибка, точнее не совсем ошибка, так и должно быть. файл при этом должен создаваться. Quote Share this post Link to post Short link Share on other sites
evil_rrock 227 #122688 Posted November 4, 2013 (edited) 7. В папке с исходным скриптом который мы редактировали должен появится компилированный скрипт с расширением pyc его можно закидывать в клиент не получается собрать обратно в pyc всё вроде-бы правильно делал. ошибок не выскакивало, просто не собирается и всё Вот до чего я докопался. создал скрипт compile.py и закинул в директорию C:\Python26в ту-же директорию закинул и нужный файл currentvehicle.pyв консоли открыл директорию питона командой <cd c:\Python26>командой <python.exe compile.py -c currentvehicle.py> выполнил скрипти вуаля, скомпилировался файл currentvehicle.pyc вот сам скрипт компилятора # compile.py import sys import getopt from compiler import compileFile, visitor import profile def main(): VERBOSE = 0 DISPLAY = 0 PROFILE = 0 CONTINUE = 0 opts, args = getopt.getopt(sys.argv[1:], 'vqdcp') for k, v in opts: if k == '-v': VERBOSE = 1 visitor.ASTVisitor.VERBOSE = visitor.ASTVisitor.VERBOSE + 1 if k == '-q': if sys.platform[:3]=="win": f = open('nul', 'wb') # /dev/null fails on Windows... else: f = open('/dev/null', 'wb') sys.stdout = f if k == '-d': DISPLAY = 1 if k == '-c': CONTINUE = 1 if k == '-p': PROFILE = 1 if not args: print "no files to compile" else: for filename in args: if VERBOSE: print filename try: if PROFILE: profile.run('compileFile(%r, %r)' % (filename, DISPLAY), filename + ".prof") else: compileFile(filename, DISPLAY) except SyntaxError, err: print err if err.lineno is not None: print err.lineno if not CONTINUE: sys.exit(-1) if __name__ == "__main__": main() кто подскажет, всё-ли верно. а так вроде всё работает вот файл получившийся на выходе https://www.dropbox.com/s/1eq1nqpy9ik9nvo/currentvehicle.pyc так как в пайтоне не рублю, поэтому и интересуюсь мнением тех, кто понимает Edited November 5, 2013 by evil_rrock 1 Quote Share this post Link to post Short link Share on other sites
Yusha 8 #123235 Posted November 5, 2013 (edited) командой <python.exe compile.py -c currentvehicle.py> выполнил скрипт Раз до CMD дошли, тогда можно сразу пачку скриптов даже делать... кидаем все в 1 папку.... например C:/1 Пишем: python - m compileall c:/1/ Если лень работать с ком. строкой... то создаете фаил: compile.py В него пишете: import py_compile py_compile.compile("currentvehicle.py") и запускаете этот фаил через F5 (Run Module). Если currentvehicle.py лежит в папке Papka, то пишете import py_compile py_compile.compile("papka/currentvehicle.py") Ох... чую сейчас повалит куча "модификаций" всех скриптов :) Edited November 5, 2013 by Yusha 3 1 Quote Share this post Link to post Short link Share on other sites
_VOVAN 0 #125705 Posted November 11, 2013 ещё одно описание декомпиляции http://www.cyberforum.ru/python/thread943218.html Quote Share this post Link to post Short link Share on other sites
Abracadabra 0 #133350 Posted December 9, 2013 Кто мне скажет, по какому принципу кастомные .pyc скрипты включаются в клиент? Как их подключить вообще? Речь здесь не идёт о подмене существующих файлов, а о том как включить новый скрипт и заставить его работать? Quote Share this post Link to post Short link Share on other sites