Jump to content
Korean Random

DrWebber

User
  • Content Count

    82
  • Joined

Everything posted by DrWebber

  1. Сейчас попробовал выполнить print help(BigWorld), все на месте, никаких модов не стоит. INFO: wgAddEdgeDetectEntity(...) INFO: INFO: wgDelEdgeDetectEntity(...) INFO: INFO: wgSetEdgeDetectColors(...)
  2. Ну так посмотри) res_bw\scripts\common\lib\pydoc.pyc Только я не думаю, что он чем-то отличается.
  3. Ну если они есть в dir(BigWorld), значит все в порядке. А функция help(она же класс _Helper), на самом деле не __builtin__ - она добавлена туда "искусственно". И как она работает можно посмотреть в модуле pydoc. class _Helper(object): """Define the builtin 'help'. This is a wrapper around pydoc.help (with a twist). """ def __repr__(self): return "Type help() for interactive help, " \ "or help(object) for help about object." def __call__(self, *args, **kwds): import pydoc return pydoc.help(*args, **kwds) def sethelper(): __builtin__.help = _Helper()
  4. Да, но вот такой код вполне приемлем: class aaa(): def __bbb(self): print 123 def xxx(self): self.__bbb() class aaa(): def __bbb(self): print 123 def xxx(self): getattr(self, '__bbb')() <-- ОШИБКА Я тебе кстати давно об этом писал.
  5. Пойдет. Тест PS Не используй в качестве префикса двойное нижнее подчеркивание - это приводит к проблемам внутри классов. PPS Вот такая штука приводит к неправильной работе обфускатора: def trace(exc=None): print "/------------------------ Traceback --------------------------------\\" if exc is not None: log("[ERROR] " + str(exc)) traceback.print_exc() else: traceback.print_stack() print "\\------------------------------------------------------------------/"
  6. Ахаха, дай угадаю, этот мод случайно не убирает простреливаемые объекты с карты?
  7. Я про Фому, ты про Ерему. Какой смысл вообще вести разговор о циклах и учитывать только одну итерацию? Это конечно все очень сильно меняло бы, если это было бы так. Давай решим простую задачку для 5ого класса. Вася пробежал 100 метровку за 10с, а Маша за 30с. Во сколько раз медленнее Васи бегает 100м Маша? Собственно я об этом и говорил: "Обфусцированный код выполняется в 75! раз медленнее обычного(15/0.2)" (с) Ты серьезно вообще сейчас? 1) У меня до твоей обфускации не было ни одной строки в том цикле. Про что я тебе и пытаюсь сказать. o.attribute => getattr(o, 'attribute') <- вот появилась строка getattr(o, ''.join(map(chr,((181^212),(160^212),(160^212),(166^212),(189^212),(182^212),(161^212),(160^212),(177^212))))) <- а вот она уже жрет процессорное время 2) Ты действительно считаешь, что простой перебор 2600 строк это долго? Строки, с точки зрения питона, ничем не отличаются от других объктов. Это самый обыкновенный char* + PyObject_HEAD. PyObject_HEAD - стандартный заголовок, в котором содержится счетчик ссылок и информация о типе. Блин, вот не поленился и специально провел замеры. Взял один и тот же реплей и сделал 3 испытания: 1) Запустил вообще без модов. 2) Запустил с модом без обфускации, в котором каждые 200мс вызывается тот самый перебор 2600 элементов. 3) Запустил обфусцированный мод из пункта 2. Вот результаты: Думаю дальше о чем-то спорить нет смысла. UPD: А вот это уже норм должно быть.
  8. Согласен. Без понятия, смотря сколько итераций в цикле. Она составит 100мс + (14.8/10^6)*N, где N - количество итераций в цикле 100мс + (14.8/10^6)*N*1000 Ничего подобного, процедура aaa вызывается в обоих случаях и время затраченное на это учитывается тоже в обоих случаях. Да что там говорить, взял сейчас свой мод, обфусцировал. Там в цикле перебирается list из 2600 элементов. Ну и естественно ожидаемые фризы, когда до него доходит дело. Короче, все очевидно же, чем больше конструкций вида x.y при совместной обфускации(structure, затем strings), тем сильнее будут фризы.
  9. У тебя какая-то странная математика. Обфусцированный код выполняется в 75! раз медленнее обычного(15/0.2), следовательно, если один цикл будет занимать 100мс, то тот же самый цикл с обфускацией будет длиться 100мс*75=7,5c.
  10. Ладно не буду спорить, но мне кажется все не так радужно - вместо одного вызова PyObject_GetAttr, появляется куча разной лабуды с перевыделением памяти. Надо будет потом затестить. Почему?)
  11. А если кто-то сделает вот так "Script - Obfuscate - Structure" + "Script - Obfuscate - Strings" просадок фпс в каком-нибудь цикле не будет? "Script - Obfuscate - Strings"- багованная штука, то половина скрипта пропадет, то закоментируется. upd: а не, это был не комментарий - просто лишняя ковычка
  12. Это с какой солью? Натриевой или поваренной? Короче развод для л*хов. ПоЦАны нИкачаЙТе он ваШи ПАроле ТЫриТ!!!!! Мда, а алгоритм настолько серьезен, что его нельзя даже называть. Правильно, str.lower()/upper() для лохов.
  13. Ну тогда вот так. def _isValidMOD(scriptName): return False if '__init__' in scriptName or not scriptName.endswith(_MOD_NAME_POSTFIX) else True
  14. А так? def _isValidMOD(scriptName): return False if '__init__' in scriptName else True
  15. [мат]*Я!!! СРОЧНО ЗВОНИТЕ В УПРАВЛЕНИЕ "К", ТУТ 2 БУКВЫ В INI-ФАЙЛЕ МЕНЯЮТ!!!! СТРАНИК, [мат], НЕ ОЖИДАЛ ОТ ТЕБЯ ТАКОГО.
  16. У меня не получилось запустить скрипт с новым протектором, возникает исключение такое как снизу. Причем не важно откуда запускать, из игры, из консоли или из PjOrion'a - не работает нигде. Пробовал с различными опциями протектора.
  17. Так будет правильнее: import BigWorld from PlayerEvents import g_playerEvents def TeamBasePointsUpdate(team, baseID, points, capturingStopped): print 'TeamBasePointsUpdate' def TeamBaseCaptured(team, baseID): print 'TeamBaseCaptured' def PeriodChange(period, *args): print 'PeriodChange' def avatarReady(): arena = BigWorld.player().arena if arena is not None: arena.onTeamBasePointsUpdate += TeamBasePointsUpdate arena.onTeamBaseCaptured += TeamBaseCaptured arena.onPeriodChange += PeriodChange g_playerEvents.onAvatarReady += avatarReady
  18. _TeamBasesPanel__onTeamBaseCaptured(self, team, baseID)
  19. Попробуй так: import gui.shared.utils.graphics as graphics graphics.MIN_SCREEN_WIDTH = 123 graphics.MIN_SCREEN_HEIGHT = 321
  20. Данный модуль использует библиотеку ctypes, а ее стандартными способами подключить не получится.
×
×
  • Create New...