-
Content Count
199 -
Joined
-
Last visited
-
Days Won
3
Posts posted by IzeBerg
-
-
Я нуб. Дело решилось верчением одного поля.
-
-1000 - Windigo
-750 - Nightmare Moon
-500 - King Sombra
-100 - Lost Pony
-50 - Discord
0 - Earth pony
50 - Pegasus
100 - Unicorn
500 - Alicorn
750 - Friend of Equestria
1000 - Prince/Princess of Karma
- 1
-
Гайды о чем?
Например, мне вот не понятно стало как вызывать питоновские функции из формы с передачей параметров? И наоборот, как вызывать AS-функции из питона? И как в эти функции передавать параметры?
Как вызывать такие окошки в бою?
-
идея в том чтоб задать 2 точки: первую глубоко под землей, другую высоко над землей и вызвать данную функцию:
BigWorld.wg_collideSegment(BigWorld.player().spaceID, стартовая позиция, финальная позиция, 128)
она возвращает tuple: первый аргумент точка на земле, второй аргумент нормаль поверхности земли в точке.
Я это умею и использую. Но данным способом находится только высота земли в заданных координатах. Там наклон земли не передается, на сколько я понял.
Была мысль на соседних точках сделать такое и как-то провести два вектора, но как это сделать я пока не могу понять.
я понимаю что можно поставить и сквозь камни, но это ведь не желаемое поведение?Ну хоть какое-то. Если с этим разобраться, то можно уже и пробовать сталкивать с камешками и другими объектами.
-
вопрос не тривиальный.
например, мы смотрим угол наклона земли в центре танка. а что если рядом лежит какой то камень который должен изменить угол наклона танка?
...или получатся какие то столкновения с окружающими объектами?
может в движке уже есть что то готовое, но сам "на коленке" такое не напишешь
Паинт доставил, но сначала хотя-бы просто научится узнавать угол наклона земли в конкретной очке. А потом уже есть в клиенте куча способов "сталкивать" друг с другом Entity (а камень, как ни странно, еще какое Entity), думаю один из них подойдет.
P.s. Если как на картинке ставить - то он просто сквозь камни ляжет (если не учитывать камни и подобные объекты).
-
entity.model.motors[0].signal - это матрица которую можно редактировать. например, так:
from gui.ClientHangarSpace import _createMatrix
import math
entity.model.motors[0].signal = _createMatrix(1, (-math.pi/2, -math.pi/4, -math.pi/4), (50, 30 + index * 10, 50))
первый аргумент _createMatrix масштаб элемента, второй это tuple углов в радианах, третий tuple координат в пространстве.
забавные вещи получаются:
Двигается, спасибо. Нас сколько я понял - двигая signal двигается только моделька, т.е. поля у Entity position/yaw/pitch/roll не трогаются. Печаль.
Остался первый вопрос (как определить наклоны, что правильно относительно земли расположить?).
-
лично не пробовал задавать эти параметры, но в принципе это yaw, roll и pitch в свойствах класса танка.
Их задавать можно до создания, как оределять их (roll/pitch)? Они Read-Only, т.е. после создания уже не изменить.
-
Мне удалось (спустя немало костылей) сделать так, чтобы можно было создать Vehicle (наследник BigWorld.Entity, по-сути является объектом-танком) в указанной точке на карте.
Теперь возникли вопросы:
Как его корректно "устанавливать" на землю (настроить наклон вперед-назад/вправо-влево)? - Сейчас я могу ставить на землю/дома/другие объекты (x/y/z координаты), но нормально подстроить наклоны не могу.
Как ему корректно менять координаты (телепортировать/двигать)? - В методах я не нашел ничего, вызывать поля base/cell можно только для "подключенных" энтити (это мне сообщает BigWorld), т.е. тех, которые получены от сервера. Как вариант - пробовал пересоздать модель, но она пересоздается очень долго (грузят заново ресурсы и т.д.)
Если мне тут дадут ответ хотя-бы на первый вопрос - со вторым мне уже будет проще (на костылях смогу, может быть).
-
снимут шифрование с исходников + сами исходники в нормальный вид приведут
Снимут шифрование не полностью. Они будут делать API, мне тут отписал один разработчик:
По API - в первой итерации оно, наверное будет еще не тем, что в танках, но реально - мы будем стремиться к тому, чтобы оно стало песочницей с нужными мододелам возможностями, которую мы будем документировать, по мере сил, и не ломать, тоже по мере сил, а если ломаем, то предупреждать. Все вне этой песочницы будем как-то закрывать, и если что-то нужно, то пробрасывать в песочницу.
Условно, есть логика игры, которую разработчики считают "не должна изменяться", остальное - даем в виде API и стараемся поддерживать. То, что не должно изменяться - значит или дает возможности делать ботов или другие моды, которые противопоказаны игре.
-
Интереса ради решил попробовать вызывать/удалять разные интефейсы, но столкнулся с проблемой. Я вызываю интерфейс боя:
battleWindow = Flash('battle.swf') battleWindow.movie.backgroundAlpha = 0
Через существующий класс Battle не судьба, я в оффлайне (там надо много всяких переменных инициализировать, которые в оффлайне не нужны).
Далее гружу карту и все остальное, и все бы было хорошо, но:
В классе Battle (который по умолчанию грузит то-же самое) я нашел, вроде как должно подстраивать Falsh-элемент под новое разрешение экрана:
battleWindow.call('Stage.Update', list(GUI.screenResolution()))
GUI.screenResolution() - размер окна/экрана в нецелых пикселях, может выдать (1200.123, 600.123). Округлять/приводить к int пробовал.
На деле оно удаляет все, кроме пинга-фпс и кусочка ушей.
Пробовал еще так:
screen = GUI.screenResolution() battleWindow.component.size = g_battleWindow.flashSize = (screen[0], screen[1])
Как подстроить размер под разрешение экрана?
UPD. Я как всегда - сначала спрошу, потом сам же отвечаю :
from gui.shared.utils.graphics import getScaleByIndex from account_helpers.settings_core import settings_constants params = list(g_screen) index = g_settingsCore.getSetting(settings_constants.GRAPHICS.INTERFACE_SCALE) params.append(getScaleByIndex(index)) battleWindow.call('Stage.Update', params)
На ОТ 9.7 я забыл про новую настройку "разрешения интерфейса".
- 1
-
"Дело было вечером, делать было нечего."
Не было интернета, захотелось мне попробовать полетать, да посмотреть различные карты. Вспомнил что есть замечательный мод на оффлайн просмотр карт. Но я столкнулся с букетом ошибок. Начал исправлять (вроде даже исправил почти все), но в логах постоянно фигурирует это:
Traceback (most recent call last): File "scripts/client/game.py", line 606, in wg_onChunkLoad File "scripts/client/AreaDestructibles.py", line 174, in onChunkLoad File "scripts/client/AreaDestructibles.py", line 433, in __setDestructibleInitialState SystemError: error return without exception set
При этом карта отрисовывается, но камерой управлять нельзя.
С чем сия ошибка может быть связана, в какую сторону копать?
P.s. В прикреплении единственный скрипт из мода, который связывается с game (с AreaDestructibles ничего не связывается вообще). Единственное что я менял в этом скрипте - сменил объект-камеру на VideoCamera (встроенная в клиент, у мода был свой велосипед на основе этой камеры),и заменил ссылку на настройки (теперь мод работает только с этим модом, и соответственно управление то-же), почистил импорты (было много не нужных).
- 1
-
Берете Орион, запускаете клиенте игры через Главное меню - WOT-Transmission - Run - ...
После этого жмякаете в редакторе правой кнопкой мыши, вылезет меню. В меню находите пункт Select the attributes source и переключаете его с Orion на WOT.
Затем пишите в редакторе import BigWorld и выполняете код командой SHIFT+F5.
После этого набираете в редакторе BigWorld, затем ставите точку и перед вами появляется выпадающий список со всеми атрибутами этого базового класса.
Ну а дальше уже исследуете их методом тыка.
print BigWorld.xxxx
print BigWorld.xxxx()
....
Этим как раз-таки я и убил пару вечеров. Есть методы, которые имеют несколько аргументов, притом не известно каких.
-
-
Тем что использовать будешь.
Диалог начинает идти в неверное русло, давайте по существу. Пожалуйста.
-
То чем пользуешься при написании мода.
А чем пользоваться?
-
Декомпилировать и сравнивать исходники, вроде как.
А что именно декомпилировать?
-
С создания прошлого вопроса прошло больше года, не ожидал что мой вопрос превратиться в целую дискуссию)
Спасибо, в итоге помогли.
Но собственно только сейчас дошли руки пытаться что-то делать, во многом я сам разобрался, но не могу разобраться в одном вопросе:
Какие есть методы/поля у класса (или что это? я просто с Java прибежал) BigWorld? Что они делают и какие параметры в них передавать?
P.s. Если после патча в нем что-то меняется, как узнать что изменилось?
-
Куки почистите! Мне помогло.
-
А если я хочу отключить изменение сообщений после боя, что мне делать?
-
Неа не помогло. Нашел какие-то декомпиляторы, но никакой инструкции к ним нет, через коммандную строку рыл их ихние команды, ничего про декомпиляцию не сказано.
-
Гугл помог, первая и вторая ссылка у меня, например.
А ссылки эти можно? Просто я уже не первый день ищу.
depython.net не катит, там ограничение
-
Собственно вопрос припёк меня давно. Есть-ли какие-то утилиты/способы декомпилировать и компилировать *.pyc файлы?
P.s. Гугл не помог, кидал в какие-то онлайн-декомпиляторы, но там ограничение 10кб.
Как создать форму(Окно) в ангаре
in ActionScript & Python
Posted
Не расскажите подобрее?