Jump to content
Korean Random

Мод "Эмулятор сервера World of Tanks".


Recommended Posts

Вот например.

a00127

Это для дерева или типа того.

101000000000000100100111

Первый бит - упаковано.

01 - номер свойства.

Тут 2 байта должно быть, индекс дерева. Остаётся 5 бит.

Link to comment
Short link
Share on other sites

хм. для дебага попробуй такое (самое простое, сам пользую):

import traceback, sys

SHOW_DEBUG = True
def logHook(p__fn):
    def log(*args, **kwargs):
        try:
            return p__fn(*args, **kwargs)
        except Exception:
            if SHOW_DEBUG:
                msg = 'DEBUG[mods_gui]:\n%s.%s(' % (p__fn.__module__, p__fn.__name__)
                length = len(args)
                for text in args:
                    length -= 1
                    if hasattr(text, '__module__'):
                        text = '%s' % text.__module__
                    if length:
                        msg += '%s, ' % text
                    else:
                        msg += '%s' % text
                msg += ')\n[START:]----------------\n'
                msg += "".join(traceback.format_exception(*sys.exc_info()))
                msg += '[END:]------------------'
                print msg
            return None
    return log

@logHook
def error():
    print 1/0
    
error()    

Выведет что-то типа такого:

<<< DEBUG[mods_gui]:
<<< __main__.error()
<<< [START:]----------------
<<< Traceback (most recent call last):
<<<   File "<string>", line 7, in log
<<<   File "<string>", line 29, in error
<<< ZeroDivisionError: integer division or modulo by zero
<<< [END:]------------------

 

Link to comment
Short link
Share on other sites

1 minute ago, Dragon armor said:

А удалять сообщения нельзя?

On 8/11/2018 at 4:37 PM, SkepticalFox said:

@Dragon armor го нормальный чат создай, тут весьма неудобно

и исходники можешь выложить, хоть некоторые

довольно интересно глянуть

Link to comment
Short link
Share on other sites

1 час назад, SkepticalFox сказал:

@Dragon armor в visual studio плохо с питоном , посмотри pycharm

На самом деле, всё там хорошо. Аттачилку к питону как раз все из PTVS тащут к себе.

Edited by Mixaill
Link to comment
Short link
Share on other sites

4 минуты назад, Dragon armor сказал:

Вот например.

a00127

Это для дерева или типа того.

101000000000000100100111

Первый бит - упаковано.

01 - номер свойства.

Тут 2 байта должно быть, индекс дерева. Остаётся 5 бит.

World_of_Tanks\res\packages\scripts.pkg\scripts\common\DestructiblesCache.py

def encodeFallenTree(destrID, fallYaw, fallPitchConstr, fallSpeed):
    params = packAngleToUint(fallYaw, 6) << 2 | max(0, min(int(fallSpeed), 3))
    return encodeUint16(destrID) + encodeUint16(packAngleToUint(fallPitchConstr, 16)) + (params,)

 

и так далее

Link to comment
Short link
Share on other sites

@SkepticalFox Ясно. Позже, если что-то будет.

@spoter Ошибка та же самая невнятная, только обрамление добавилось в виде [START:]/[END:]

Бывают дни, когда всё не получается, как надо. Видимо, у меня сегодня такой день. Специально проверил, что путь не None, по-отдельности всё загружается, вместе тоже самое объединил, но нет, не загружу, чтобы просто поиздеваться над тобой, твой интерпретатор.

Link to comment
Short link
Share on other sites

4 minutes ago, Mixaill said:

На самом деле, всё там хорошо. Аттачилку к питону как раз все из PTVS тащут к себе.

Я на vs2015 страдал с PTVS(постоянные ошибки и вылеты из решения), перешел на VSCode

Edited by SkepticalFox
Link to comment
Short link
Share on other sites

14 минут назад, Dragon armor сказал:

Вот например.

a00127

Это для дерева или типа того.

101000000000000100100111

Первый бит - упаковано.

01 - номер свойства.

Тут 2 байта должно быть, индекс дерева. Остаётся 5 бит.

Так вот без контекста сложно сказать... причешу код для корабельных реплеев и опопробую то же самое на танковых, тогда смогу сказать точно.

 

К примеру, разбор одного из упакованных путей для изменения свойства entity.state['resources'][0]['amountByEntities'][2].

1010 1110 0111 1110‬ | AE 7E + PAYLOAD
len(entity) == 11 => 4 bytes for entityPropertyId
‭1 0101  => entityPropertyId = 5 => state

len(entity.state) == 16 keys in dict => 4 bytes
1 1001  => PropertyId       = 9 => resources   //resources - под индексом 9 в .def файле

len(entity.state['resources']) == 1 item in array => 0 bytes
1       => PropertyId       = 0 => resorces[0]

len(entity.state['resources'][0]) == 2 keys in dict => 1 bytes
1 1     => PropertyId       = 1 => resources[0]['amountByEntities']  //amountByEntities - под индексом 1 в .def файле

len(entity.state['resources'][0]['amountByEntities']) == 3 items in array => 2 bytes
1 10    => PropertyId       = 2 => resources[0]['amountByEntities'][2]

0       => exit while

Object by path: {'current': 0, 'max': 550, 'id': 550, 'min': 0}, len = 4 => 3 bytes
001     => 1 => current

 

Edited by Monstrofil
Link to comment
Short link
Share on other sites

2 minutes ago, Dragon armor said:

@spoter Туда уже готовое попадает. Это данные от сервера, ещё не распарсенные.

очевидно, что в 5 бит не запаковать столько вещественных чисел)

Edited by SkepticalFox
Link to comment
Short link
Share on other sites

@SkepticalFox Не могу другие IDE для сишки, кроме как VS. Привычка. Пробовал QtCreator, не то. По удобству с VS не сравнится. Можно, конечно, ещё что-то попробовать.

@Monstrofil Первые биты, наверное, количество свойств, а не номер. Дальше номер идёт. Это AreaDestructibles. Хотя, не помню, надо будет разобраться, когда дойду до этого.

Кстати, ты не знаешь, что за сообщение avatarUpdatePlayerDetailed? 6 float, очевидно, позиция и направление. Но меняются очень редко. После forcedPosition становятся равны ему.

Ещё мне нужно со временем разобраться. Почему то, когда раунд начинается, время не идёт.

Ошибка была из-за того, что в PyFloat_AsDouble попадал вектор, а не значение этого вектора, вызывалась функция PyErr_SetString(PyExc_TypeError, "a float is required"). А т.к. у меня нет проверок корректности преобразования pyObject к float, то первая же проверка PyErr_Occurred вызывала исключение, естественно, не в месте возникновения ошибки. Поэтому и указывало на странные выражения типа print.

Link to comment
Short link
Share on other sites

В 17.07.2018 в 18:49, Dragon armor сказал:

Меня очень заинтересовал этот мод. Нужен ли интернет для работы мода? Я вот мечтаю о ПВЕ режиме, чтобы он был в игре, но работал отдельно от ПВП. Чтобы именно в ПВЕ режиме я мог бы делать абсолютно всё: начислять себе ресурсы, создавать бои с ботами, играть 1 против ботов - остальное мелочи и запускать его без интернета.

А вы случаем не делаете этот мод как ПВЕ режим?

Link to comment
Short link
Share on other sites

@RUS_TAHK Сейчас рано что-либо писать о том, что будет. Нужно сделать минимально работающую систему, а потом уже думать, что делать дальше. Наобещать можно всего, в итоге ничего не сделать, поэтому с описанием будущих возможностей сервера повременю.

И такой вопрос - а логику для ботов кто будет создавать? У меня, например, нет опыта создания ботов.

Link to comment
Short link
Share on other sites

@Dragon armor Я когда-то делал ИИ для варкрафт 3. Тоже вначале ИИ болван получился, медленно развивался, но потом за 1 месяц я его таким написал, что он тупо не давал встроенным стандартным ИИ развиваться)) в релиз ии не выпустил. Так что вначале любой ИИ будет болваном с кучей ошибок либо с низким интеллектом. Там вроде от кода зависит поведение ботов, но я не знаю, как ии написаны в других играх

@StranikS_Scan Я говорю про ботов для ПВЕ режима, а не для ПВП-онлайн. Для ПВП бот должен стоить денег, чтобы программист мог хоть как-то заработать)

Link to comment
Short link
Share on other sites

6 minutes ago, RUS_TAHK said:

варкрафт 3

это 2д игра

танки же 3д, экспоненциально растет сложность

7 minutes ago, RUS_TAHK said:

Я говорю про ботов для ПВЕ режима

нафиг тратить время на это, это совершенно не интересно

Link to comment
Short link
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...