Jump to content
Korean Random

GPCracker

User
  • Posts

    2,827
  • Joined

  • Last visited

  • Days Won

    62

Everything posted by GPCracker

  1. Сегодня немного залез в моды только... Праздник, как-никак. Тут пока с изменениями картофана разберешься, полдня пройдет. Глянуть то может и не против, но сегодня уже не успею, а завтра уже по учебе опять засяду. Когда реально освобожусь пока не знаю.
  2. В общем, для любителей потестить очередная моя попытка поднять мод на тестовый клиент. MinimapGunMarkers.zip Сборка для 0.9.15 CT. Судя по отзывам, работает нормально.
  3. Кажется, я понял прикол... Матрица неполная наверное. Надо ручками... или опять бомбу закинуть вслепую. @OKA_RuLiT, спасибо. Значит я правильные файлы редактирую. Ну и намутили... Видимо, из-за звуков. Походу перепилили движок до кучи. Весело.
  4. combinedMP = self.getWGCombinedMP(vehicle.matrix, vehicle.appearance.modelsDesc['gun']['model'].matrix)Опять картоха перепилила классы. За***ли, чесслово. Upd. Новый класс вписали на супертесте 0.9.15, судя по коммитам в репо у XVM-щиков. З.Ы. Я его таки нашел... 600+ строк кода. Курю помаленьку. Upd 2. Вопрос такой... Когда я кидал последний фикс, кто-нибудь помнит? Upd 3. Короче, прикинул немного, может стартанет, я не тестил. MinimapGunMarkers.zip Тестовая версия, работает некорректно!
  5. Защита от спамеров :) Не знаю, несколько патчей назад, я уже не помню, что пилил, но циклом по миникарте проклик нормально шел :) Наверное просто ты не в том направлении копаешь... или картофан чего допилил.
  6. Всего-то скобки забыл... Бывает. xD
  7. INI это уже перебор, тогда уж стандартный XML от BW через ResMgr. А насчет перезаписи - можно просто писать динамические данные в отдельный конфиг, и перекрывать ими данные из пользовательского конфига. Если юзер захочет сохранить данные программной настройки в своем ручном конфиге - он просто аккуратно перенесет их вручную. Как говорится, и волки сыты (перемещение мышкой по экрану работает), и овцы целы (форматирование и комментарии не убиваются). Насчет комментариев в JSON, кстати, это можно реализовать, как комментарии в JS, но только путем очистки их в прочитанном буфере перед парсингом. Довольно сложные регулярные выражения для этого придется писать, чтобы учесть все тонкости... Хотя эту работу наверняка уже запилили. Гугл в помощь.
  8. Ну как сказать... Для кого-то этот код не такой уж и понятный.Подход сводится к тому, что в самом моде есть внутренний дефолтный конфиг, в котором определены данные и их тип, а чтение в большинстве случаев пишется в 1-2 строки кода, если конечно в конфиге нет кастомных типов данных, но такое там тоже предусмотрено - дописывается нужный класс данных и ридер для него. в питоне есть приличное количество всяких разный фишек и плюшек, типа однострочных выражений, типа inline-for, inline-if, есть встроенные функции типа filter, map и т.д., есть такое понятие как итератор и еще куча интересных вещей.Кстати, в Python 2.7, как я писал выше, для встроенных функций нет итераторов, поэтому их вложенностью злоупотреблять не стоит, тем более когда размеры списков, словарей и т.д., прогоняемых через конструкцию достаточно большие. В Python 3.x эту проблему решили, там на выходе итератор - "функция" (ну точнее специфичный объект, ибо ведет себя не совсем как функция, но в отличии от нее содержит yield, или реализован как специфичный класс), которая возвращает 1 результат по запросу, "ленивые вычисления" или что-то в этом духе. Загугли. В таком случае, ты разбираешь итератор когда тебе надо, и цикл выполняется однократно при этом разборе. Эээ... Python 2.7.10 (default, May 23 2015, 09:40:32) [MSC v.1500 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> 'abc'.split(';') ['abc'] >>>Что-то тут не так...
  9. Идеи для модов в большинстве случаев - вообще народная собственность - кто-то предложил, мододелы запилили. Техническое решение, которое воплощает идею в реальность, иными словами реализация - алгоритм и код - вот это уже совсем другое дело.
  10. Не надо так, когда можно так: sect['text'].asString --> sect['text'].asWideStringРаботает, само собой, если файл в UTF-8.Вся движуха с конфигом в моих модах описана тут, хотя сомневаюсь, что тебе удастся сходу понять, как оно работает. И вообще, это можно сделать как-то так... conf = ResMgr.openSection(conp.replace(vl.asString + '/', '')) if conf is not None: print 'Button Replacer: loading ' + os.path.basename(conp) for sect in conf.values(): if ';' in sect['text'].asWideString: sectDict[key].setdefault('textList', []).extend(filter(None, map(lambda textString: textString.strip(), sect['text'].asWideString.split(';'))))код само собой на деле не проверял, м.б. где и накосячил, но думаю общий смысл ты понял. Единственный момент, что в Python 2.7 функции map и filter возвращают результат сразу, а не итератор, как в Python 3.x, поэтому цикл здесь стартует два раза, но учитывая малое количество элементов, это в принципе не принципиально. Вообще весь прикол с WideString и UTF-8 в том, что в таком случае текст можно написать на любом языке, а не только на русском, в отличие от Windows-1251. Да и вообще, эта Windows-1251 и другие "локальные" кодировки лезут из костыльности винды. В линуксе все либо в ASCII (латиница only, считай, кодировка не важна, почти на всех (если не на всех) кодировках латиница кодируется одинаково), либо юникод. Ничего не надо перенастраивать под локаль, кроме переводов, и никому не обидно, что его язык неправильно отображается, если запускают пользователи с другой локалью.
  11. Игра считает, что xml в кодировке UTF-8 w/o BOM. ПО крайней мере, ResMgr. BOM - это байты в начале файла, показывают что-то типа порядка байтов, точно сказать не могу, загугли. Эта самая марка мешает конфигу читаться. Кстати, для тех кто не особо с инглишем дружит, w/o == without == без. Так что UTF-8 w/o BOM и UTF-8 BOM диаметрально противоположные вещи.
  12. Вот это правильное решение вопроса.
  13. "Закину это, пожалуй, под спойлер." Тут можно с разных точек на это смотреть. Чисто технически, да, таймер засвета должен учитывать задержку лампочки. Но пользователь узнает о засвете и начинает принимать меры по отсвету с момента появления лампочки. Поэтому в какой-то степени таймер отсвета имеет смысл считать именно от лампы. Вобщем, смысл в том, что считается - время с момента засвета или предположительный момент пропадания из него? "Тоже, пожалуй, под спойлер уберу."
  14. Само собой разумеется. Я не заморачивался с путями, а просто скинул файлы. Вообще это изначально делалось "for personal use", поэтому немного сыровато, но раз уж такое дело... Там немного бы переделать надо, и допилить кой-чего... Но в целом пока вроде работает.
  15. Кстати, недавний повтор старого прикола. Тема все еще работает. Однако, возможность практической реализации старой идеи под сомнением... Обратите внимание на моменты в видео, там это пусть и неакцентированно, но показано.
  16. Юзай VCS. Git, SVN... Реальная тема. Для параллельного выполнения задач самое то. Плюс это бекап 80 лвл. Можно откатиться на любую версию, смотреть разницу между версиями, ... Короче, весьма прикольная штука. Считай, если разберешься, как оно работает, и научишься с толком пользоваться - это нехилый левел-ап. Почти все (если даже не все) серьезные проекты без подобных вещей не подымаются.
  17. Не особо отличается от питона. Делать надо по сути то же самое, что и на питоне, только на немного другом языке программирования. По сути, если писать скрипт на AS, взаимодействие флеша с питоном сводится к отправке времени, оставшегося на таймере, процента остатка от суммарного и самого суммарного времени, точнее нужны только 2 параметра из трех. Дальше флешка все обсчитывает сама. Так можно делать таймеры плавнее, можно менять анимацию чисто патча флешку, без редактирования Python-скрипта и с меньшими затратами ресурсов. При грамотном подходе можно вообще закинуть все необходимые данные в флешку на старте (инициализации), или даже читать конфиг скриптом в самой флешке, и потом просто делать вызовы, а флешка сама будет выставлять нужные картинки. Опять же, при грамотном подходе можно организовать для толковых флешеров возможность замутить из всего этого весьма вкусную конфетку. Думаю, моя идея тебе понятна, дальше сам придумаешь :) Глянь в AAS. Примерно где-то тут. Там из либы подтягивается, если что. Думаю, сообразишь, что куда. А так есть еще пример мода с оповещением о засвете, тема @illabb13, ЕМНИП, поддерживает @MakcT40. Вообще прикольно бы его интегрировать с лампочкой грамотно...
  18. Вы бы хоть его упомянули, что-ли :)
  19. Глянул немного сам мод... Часть кода взяли у Гамбитера, часть еще откуда-то подтянули (узнаваемые моменты, где-то уже видел, но не могу сходу вспомнить где), DAAPI вперемешку с ExternalInterface... Но в целом, судя по скринам, получилось довольно неплохо. @VasyaPRO_2014, я так понимаю, ты недавно начал моды писать? В принципе для начала весьма неплохо. Из пожеланий - подтянуть игровой чат и логику оповещения союзников и совзводников впилить было бы неплохо. Таймер тоже перенести на AS, ибо его обсчет на AS будет всяко идти быстрее, чем на Python + DAAPI. Кстати, ЕМНИП, у картохи анимация перезарядки в прицеле тоже обсчитывается по тем же причинам на AS. Вообще конечно для новичков модостроения колобки вещь довольно привычная, но она очень плохая в плане производительности. Использовать такой подход целесообразно только при отсутствии других вариантов реализации. Ну и код немного в порядок привести тоже было бы неплохо. А так в принципе весьма годно. Тоже плюсану пожалуй. Да, кстати. Времени свободного у меня конечно немного, но поделиться информацией мне не влом :)
  20. Да, красиво нарисовано, тоже плюсану, пожалуй. Но русский язык все же стоит уважать и не делать грубых орфографических ошибок.
  21. Не совсем уверен насчет одного момента... Да. Вот. Для работы ignoreVehicles необходимо _config_['strategicAS']['aimCorrection']['relativeMode']['enabled']. Что в какой-то степени логично, ибо параметр находится внутри этого блока. Надо будет этот параметр немного перекинуть, на досуге прикину куда. Нужно выставлять enabled в True, activated - False.
  22. Если тебе нужно опустить точку прицеливания на землю - да, наличие или отсутствие захвата цели роли не играет, поскольку картохин алгоритм расчета заменяется на мой, и берется не средняя между статической и статико-динамической, а просто статическая ТП. Но если ты используешь relativeHeightLock - то он нужен для работы последнего.
  23. Убедительная просьба не разводить тут флуд и офтоп. Для обсуждения подобных вещей есть более подходящие места. В крайнем случае - используем спойлеры.
×
×
  • Create New...