Исходник Dota 2 External Python

Начинающий
Статус
Оффлайн
Регистрация
18 Ноя 2018
Сообщения
21
Реакции[?]
8
Поинты[?]
0
Всем привет! Решил я немного поэкспериментировать с дотой, и захотел поделится этим чудом с такими-же неучами как и я.
Уверен что можно было сделать намного проще но думаю что для кого-то это будет полезным т.к. инфы и исходников почти 0.

Есть готовое смещение на хп объекта, остальное легко найти по адресу объекта.

Для работы используйте режим в окне 1600x900.


1662586224698.png

Пожалуйста, зарегистрируйтесь или авторизуйтесь, чтобы увидеть содержимое.

 
Начинающий
Статус
Оффлайн
Регистрация
22 Янв 2019
Сообщения
8
Реакции[?]
2
Поинты[?]
0
Запоздал я конечно немного с реакцией на тред, но тем не менее, так держать, отличный сурс!
Однако до алгебры и геометрии тут очевидно далековато, впрочем и без матриц всё почти работает правильно, так что чего жаловаться

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

Стоит понимать, что в Доте при виде сверху, камера - это трапеция, т.е нормальное положение будет только у тех объектов, которые оказались по середине экрана на средней линии, остальные же получат сумасшедшие искажения по всем осям. Это заметно даже на скриншоте по тому, что только герои на средней линии имеют координаты в ногах, у других же, они сдвинуты

Максимальный FOV в доте - 1.(7), мин - 1.1, вообще максимальный FOV по Y - 2.2, но тогда придется перестраивать вычисления и вообще это всё очень долго, так что сочтём за погрешность

Вот код коррекции X и Y координаты, конечно же есть ещё, что можно улучишть
Python:
#Генерация графика перехода
u = []
x = 1.0
for i in range(0,1080):
    u.append(x)
    x+= 0.78/1080

# e - entity, c - camera
x = (e_x-c_x)/1.78 + 1920/2
y = (c_y+560-e_y)/1.78  + 1080/2

#Преобразование Y координаты
if y >= (c_y + 560 - e_y) + 1080 / 2:
    y = (c_y + 560 - e_y) / 1.78 + 1080 / 2 #Для координат до средней линеей
else:
    y = (c_y + 560 - e_y) / 1.2 + 1080 / 2 #Для координат после средней линеей

#Преобразование X координаты с помощью Y
x = (e_x - c_x) / u[-int(y)] + 1920 / 2

Вот собственно говоря результат, как я уже говорил - не идеально, но с этим уже можно работать и даже попробовать написать какой - нибудь автокаст:
Снимок.PNG
 
Новичок
Статус
Оффлайн
Регистрация
5 Мар 2021
Сообщения
1
Реакции[?]
0
Поинты[?]
0
Запоздал я конечно немного с реакцией на тред, но тем не менее, так держать, отличный сурс!
Однако до алгебры и геометрии тут очевидно далековато, впрочем и без матриц всё почти работает правильно, так что чего жаловаться

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

Стоит понимать, что в Доте при виде сверху, камера - это трапеция, т.е нормальное положение будет только у тех объектов, которые оказались по середине экрана на средней линии, остальные же получат сумасшедшие искажения по всем осям. Это заметно даже на скриншоте по тому, что только герои на средней линии имеют координаты в ногах, у других же, они сдвинуты

Максимальный FOV в доте - 1.(7), мин - 1.1, вообще максимальный FOV по Y - 2.2, но тогда придется перестраивать вычисления и вообще это всё очень долго, так что сочтём за погрешность

Вот код коррекции X и Y координаты, конечно же есть ещё, что можно улучишть
Python:
#Генерация графика перехода
u = []
x = 1.0
for i in range(0,1080):
    u.append(x)
    x+= 0.78/1080

# e - entity, c - camera
x = (e_x-c_x)/1.78 + 1920/2
y = (c_y+560-e_y)/1.78  + 1080/2

#Преобразование Y координаты
if y >= (c_y + 560 - e_y) + 1080 / 2:
    y = (c_y + 560 - e_y) / 1.78 + 1080 / 2 #Для координат до средней линеей
else:
    y = (c_y + 560 - e_y) / 1.2 + 1080 / 2 #Для координат после средней линеей

#Преобразование X координаты с помощью Y
x = (e_x - c_x) / u[-int(y)] + 1920 / 2

Вот собственно говоря результат, как я уже говорил - не идеально, но с этим уже можно работать и даже попробовать написать какой - нибудь автокаст:
Посмотреть вложение 223055
а как это запустить?)
 
Сверху Снизу