Jump to content
Korean Random

GPCracker

User
  • Posts

    2,827
  • Joined

  • Last visited

  • Days Won

    62

Everything posted by GPCracker

  1. Весьма годный вариант на тесте. Однако есть некоторые пожелания: 1. Upvote/Downvote у поста с прыгающей анимацией как-то мне не зашел. ИМХО статичный будет лучше. Вообще чем меньше прыгающей анимации в контенте, тем меньше отвлекаешься от чтения форума. Хотя возможность изменить оценку порадовала. 2. Возможность посторного использования аттачей однозначно порадовала. 3. Анимированные SVG работают четко. 4. Обратная совместимость с некоторыми BB-кодами вроде тоже норм. Все не проверял, однако. 5. Время поста специально было убрано? 6. Вернуть в подсказку по выделению (quote this) функцию "обратиться по нику". Или добавить рядом с quote под постом. 7. За "длинную" историю постов и тем пользователя респект. 8. Тема с упрощением входа в персональный раздел все еще актуальна. 9. В улучшенном поиске по прежнему не хватает функции поиска по постам определенного пользователя в конкретной теме. 10. Что случилось с подписями? Целенаправленно уничтожили? 11. Звания (класс) пользователя на форуме нужно как-то локализовать что-ли. А то половина на великом и могучем, половина на английском.
  2. Нет. Читай документацию к BigWorld, если тебе это интересно. Почитай также про RPC в инете, base и cell модули в BigWorld. Но не думаю, что для твоих задач это реально нужно.
  3. Хорошо что хоть за неделю справились с такой сложной задачей :)
  4. Труп походу уже потихоньку разлагаться начал... Или его в очередной раз реанимировать пытаются. Но что-то мне подсказывает, что пока будут заниматься таким шлаком как проверка каждой версии, он таки будет скорее мертв, чем жив. Ибо пока они там отмодерируют, народ уже уйдет качать в официальную тему автора. А сайт используется как каталог. Кстати, а почему бы WG реально не поменять концепцию, и вместо сайта для публикации модов сделать удобный каталог для поиска интересных модов со ссылками на официальные темы авторов, с заметками о результатах QA тестов для некоторых версий популярных модов? Как по мне, от такого решения хотя бы будет реальная видимая польза, и по всякой модерации работы меньше, ибо проверять по сути нужно только то, что хостится на сторонних ресурсах, содержимое официального форума и так модерируют уже давно, отчасти сами пользователи.
  5. Способ выполнения кода совместно с оригинальной функцией, причем либо до нее, либо после (но никак не посередине), есть возможность вызывать оригинал условно/не выполнять вообще (этого не стоит делать, если нет четкого представления, как функция может использоваться другими мододелами, и что пропуск вызова оригинала повлечет за собой), а также возможность менять значение возврата. Нельзя при помощи хука внедрить код в середину кода оригинальной функции (только добавить свой код в начало или в конец), нельзя выкинуть/добавить строки в оригинальной функции. Это можно сделать только оверрайдом - полным переписыванием функции. Опять же, крайне не советую этого делать, стоит искать более аккуратные варианты, ибо оверрайд часто тянет за собой конфликты с другими модами, и сильно временами нерфит стабильность мода в плане устойчивости к обновлениям картошки. А если очень хорошо подумать? (Подсказка - никакой).
  6. Любая переменная есть ссылка. hookedOnGeometryMapped = game.onGeometryMappedЭто сохранение в локальную переменную ссылки на оригинальную функцию. game.onGeometryMapped = hookOnGeometryMappedЭто сохранение в оригинальное место ссылки на твою функцию, хук.Внутри хука ты вызываешь сохраненный оригинал. Схема без хука - вызывающий код получает ссылку на функцию-оригинал из game.onGeometryMapped и вызывает ее. Схема с хуком - вызывающий код получает ссылку на функцию-хук из game.onGeometryMapped и вызывает ее. Внутри функции-хука выполняется оригинал и еще немного кода. Важно!!! Не забываем, что функция часто возвращает какое-то значение. Поэтому нужно его получить (сохранить) при вызове оригинала и вернуть из хука!!! Иначе оригинальный код будет работать некорректно. Т.е. def hookOnGeometryMapped(spaceID, path): result = hookedOnGeometryMapped(spaceID, path) print 'mapName: %s, mapPath: %s' % (path.split('/')[-1], path) return resultВ случае, если функция ничего не возвращает, считается, что она возвращает None. Если ты выполнишь "проброс возврата" для такой функции - ничего плохого не случится. А вот если забудешь, там где он необходим (где функция возвращает не None), получишь некоторое количество лишних проблем. Поэтому рекомендую всегда пробрасывать возврат вне зависимости от того, что возвращает функция.
  7. В данном случае разница не особенно существенна - ибо оба этих типа пользователей генерят не нужный почти никому кроме них самих контент. И многие из них этого либо не понимают, либо не уважают других пользователей. Ну для чего же еще с интервалом спамить в общий чат? Нормальные кланы рекрутинг производят персональной отправкой приглашений людям, не имеющим клана и имеющим статистику соразмерную со средней статистикой клана (в противном случае это будет либо не нужный вашему клану рак, либо человек скорее всего просто не пойдет в клан к ракам, по его мнению). Плюс публикацией информации в клановом разделе. А не спамом куда только можно. Вообще, это уже называется "коммерческий продукт", и с таким лучше сразу писать в раздел оплачиваемых заказов. Нахаляву этим никто заниматься не будет, а готовые решения уже наверняка существуют, правда я сильно сомневаюсь, что с тобой будут бесплатно делиться такими вещами.
  8. Честно говоря, никаких модификаций в сам питон, которые ощутимы для среднестатистического мододела, картоха не вносила, по крайней мере, я такого не заметил. Так что все доки по питону в принципе актуальны.
  9. Еще один флудер...
  10. DesiredShotPoint - это для системы прицеливания, куда пушка наводится. ShotPoint - это передается на сервер для отрисовки камеры наблюдателя. Карта может иметь любую расстановку баз. К координатной системе они точно не привязаны. Если они тебе сильно нужны, их координаты можно получить из данных арены. Матрица танка есть матрица преобразования из локальной координатной системы танка в глобальную спейса (карты). Читай документацию к BigWorld. Уже неоднократно постил, поищи на форуме по аттачам.
  11. Ось Z основная, по модели танка всегда вперед направлена. Y - вертикально вверх, X - ЕМНИП, вправо. Функция расчета точки прицеливания возвращает точку. Просто ты забыл, что точка не есть дистанция. Дистанция - это длина вектора из точки A в точку B. Почитай литературу по аналитической геометрии.
  12. @Mr 13, возможно добавить возможность перехода в персональный раздел через меню пользователя, справа вверху которое, разворачивается при клике по своему нику? А то там как раз одно место свободное :) Ну или чтобы оно всегда светилось в красной полосе под логотипом, рядом со словом "Форумы". А то как-то ну совсем не очевидно, как туда попасть. Upd. А еще возможность предпросмотра при редактировании подписи пользователя была бы тоже не лишней.
  13. Истина в официальной документации обычно. Не так наглядно, но зато четко и лаконично. Лично я вообще по питону пользуюсь только официальными доками.Какие-то сложные вопросы ищу поиском на английском (сам запрос на английском), он у меня в гугле как один из основных языков забит. Форматирование в твоем случае красиво делается как-то так import Math position = Math.Vector3(1.588996, 2.789596, 3.888484884) print 'X: {0.x: 08.2f}, Y: {0.y: 08.2f}, Z: {0.z: 08.2f}'.format(position) print 'X: {: 08.2f}, Y: {: 08.2f}, Z: {: 08.2f}'.format(*position.tuple()) #X: 0001.59, Y: 0002.79, Z: -0003.89Расшифровка первого формата: в качестве аргумента под индексом 0 приходит объект Math.Vector3 (аналогичный vehicle.position) первая формат-запись берет значение атрибута x нулевого аргумента, подставляет минус или пробел, заполняет слева нулями недостающие знаки в целой части так, чтобы в общей сложности было 8 символов, из них два после запятой, тип данных float. Во втором случае то же самое, только объект координат преобразуется в кортеж и отправляется "со звездочкой".
  14. Имелось в виду print '{:.2f}'.format(3.1415)... уже написали об этом. Те, кому вдруг понадобится, могут зайти сюда (или сюда) и почитать официальные доки :)
  15. return vehicle.position.distTo(BigWorld.player().getOwnVehiclePosition())И не надо конвертить в инты, если тебе не нужен конкретно int-instance. Используй string.format на нужном месте, где преобразовываешь целое в строку. Все вычисляется. Просто походу ты что-то не так делаешь. playerVehicle = BigWorld.entity(BigWorld.player().playerVehicleID) return playerVehicle.positionЭто я по памяти написал, мог где-то допустить мелкую ошибку. Но в принципе так делать сейчас уже резона нет, ибо есть враппер у player на получение инстанса танка игрока.
  16. В общем-то как и ожидалось. Ошибка на загрузке интерфейса, и краш на инициализации техники.
  17. Смотреть надо. Говорят там что-то сильно изменили. Upd. @SergFR, python.log можешь прикрепить? Upd 2. Мне тут попались под руку данные с тестового клиента... картофан там не просто пропатчил, а не****во так перевернул пару ключевых вещей. Там много что из модов упало в принципе.
  18. Изначально от этой идеи перешел к варианту с атласом. То, что прописывается в source - это ссылка. Сколько раз ты используешь одну и ту же ссылку - значения не имеет. Смысл этого заключается в том, что сама по себе картинка (весь атлас целиком) грузится однократно, висит в памяти, а потом просто берется нужный ее фрагмент. Это ускоряет загрузку маркеров при спавне техники, особенно если речь идет о противниках, уменьшает тем самым фризы при засвете. Ссылка также позволяет использовать картинку WG без ее извлечения из оригинального атласа на общих основаниях (без лишних костылей). Что тебе и подсказали, точнее я просто уже это постил, используй поиск по теме, хотя бы иногда :) Создать атлас из одной картинки не проблема. Есть CCAtlas, есть консольный WoTAtlasConverter, которым собирается атлас в моем проекте. М.б. когда-нибудь сделаю GUI для него на pyQT. Свои картинки по дефолту сделаны умышленно. Для демонстрации возможностей. Плюс, возможно, кто-то предложит что-то более красивое и наглядное :) Ограничений на размер картинки нет. Только нужно правильно задать оффсеты и скейлы в конфиге, чтобы рисовалось правильно. Но большие использовать не советую - будет лишний раз садить фпс, хотя работать должно по идее.
  19. Но только в разделе вопросов. В разделе публикаций оно как собаке пятая лапа.
  20. Классификация: бот одушевленный.
  21. Поломки - в рандоме только в конце боя, когда раз на раз остался... и то если противник идиот и ломает все подряд. Нормальный пацан про эту тему знает и ездит аккуратно. И этот мод начинает работать против своего пользователя - тот ожидает сигнал от мода, а 3,14 приходит незаметно...В начале - разве что разъезд, понять куда все поехали... но тут тоже может попасться хитрый перец, увидев статиста в команде противника умышленно поехать все круша на один фланг, а потом развернуться и на другой. Или попросить поехавших туда все покрушить по дороге. Так в кланбатлах часто делают - один-два быстрых СТ едут на один фланг и все крушат, а потом возвращаются, или просто стоят на стреме, все остальные на другой фланг, но уже аккуратно и без палева. Если есть мозги - против этих модов можно применять скилл и слать конкретную дезу, причем так, что у противников будет неслабо подгорать. А вот играть, когда против/за тебя играют люди, у которых есть бот, или вообще боты, а не игроки, а ты тут стараешься, фармишь, как-то не особо интересно, если так происходит постоянно и регулярно. Проще тогда уж в офлайновку поиграть - удовольствия будет больше, ибо ботов там настроить под себя хотя бы можно, и фармить не нужно. Тут еще сказывается F2P система, которая в плане игрового и экономического баланса для игроков полное г**но, ибо зачастую работает по принципу pay to win, пусть и ограниченному. Все кто не хотят платить вынуждены больше тратить времени, и именно это является причиной появления всеми ненавидимых ботов - люди хотят получать удовольствие, а не фармить часами. Многие скажут, как же, голду же можно купить за серебро, и расходники голдовые тоже... только вот использовать донатер их может чаще, а простой игрок реже, а значит у него их считай в части боев нет, и это оказывает влияние на результат боя напрямую - экономический pay to win. Если купить можно только скины, наклейки и т.д. которые ни на что не влияют в бою, только лишь понты - то да, это уже нормальный play to win.
  22. Не, парни, картошка конечно пыталась, но на этот сайт с такими темпами модерации впору только лоадеры заливать (скрипт, который найдет в репозитории и скачает актуальную версию мода из нужной ветки, возможно даже автоматически адаптирует конфиги).Давно уже думаю, а может и правду так дистрибьюцию в принципе запилить... только вот необходимость писать кучу кода как-то не особо прикалывает.
  23. 1. Забыл мааааленькую буквочку `u` перед определением строки. Эта буквочка как раз таки принципиальна здесь. Почитай про типы строк в питоне.2. В начале файла (если ты компилишь и кидаешь в клиент) нужно написать # -*- coding: utf-8 -*-и одну строку после этого оставить пустойподробности прописаны тут. Либо брать отладчик, который понимает unicode. 3. Сначала попробуй писать в командный чат, потом просто заменишь контроллер на общий вместо командного. 4. Как вариант второго варианта можно попробовать сначала закодировать строку в бинарную, а потом уже отправлять через отладчик, но уже тогда без кодирования при отправке. Кстати, что используешь для тестов? Компилишь файл и в клиент кидаешь? Или отладчиком пользуешься?
  24. Не совсем понял смысл данного высказывания. SVG вроде как чисто сами по себе нормальными браузерами нормально воспроизводятся. Или проблема в преобразовании attachment внутри поста в картинку у пользователя?
×
×
  • Create New...