- 20.06.2022
- 23 849
- 218
- 36
- Награды
- 10
- Пол
- Муж.
Репутация:
- Автор темы
- Администратор
- Модератор
- Команда форума
- #1
Есть готовое смещение на хп объекта, остальное легко найти по адресу объекта.
Для работы используйте режим в окне 1600x900.
Стоит понимать, что в Доте при виде сверху, камера - это трапеция, т.е нормальное положение будет только у тех объектов, которые оказались по середине экрана на средней линии, остальные же получат сумасшедшие искажения по всем осям. Это заметно даже на скриншоте по тому, что только герои на средней линии имеют координаты в ногах, у других же, они сдвинуты
Максимальный FOV в доте - 1.(7), мин - 1.1, вообще максимальный FOV по Y - 2.2, но тогда придется перестраивать вычисления и вообще это всё очень долго, так что сочтём за погрешность
Вот код коррекции X и Y координаты, конечно же есть ещё, что можно улучшить
Вот собственно говоря результат, как я уже говорил - не идеально, но с этим уже можно работать и даже попробовать написать какой - нибудь автокаст:
Для работы используйте режим в окне 1600x900.
Python:
import pymem
import pymem.process
from externaloverlayrep import Overlay
entilist = []
overlay = Overlay('Dota 2', 0.0001)
dota = pymem.Pymem("dota2.exe")
client = pymem.process.module_from_name(dota.process_handle, "client.dll")
client = client.lpBaseOfDll
offset_entity = 0x3B944B0
offset_hp = 0x324
offset_entity_x = 0x13F8
offset_entity_y = 0x13FC
offset_entity_z = 0x1400
offset_cam_x = 0x39D0750
offset_cam_y = 0x39D0754
def entity_finder():
elist = dota.read_longlong(client + offset_entity)
for i in range(1, 5000):
try:
entity = dota.read_longlong(elist + i * 0x04)
if len(str(entity)) > 8 and len(str(entity)) <= 13:
entilist.append(entity)
except Exception as error:
# print(error)
pass
print(entilist)
main()
def main():
while True:
camera_x = dota.read_float(client + offset_cam_x)
camera_y = dota.read_float(client + offset_cam_y)
# print(hex(client + offset_cam_y))
for entity in entilist:
try:
hp = dota.read_int(entity + offset_hp)
# print(hp)
entity_x = dota.read_float(entity + offset_entity_x)
entity_y = dota.read_float(entity + offset_entity_y)
entity_z = dota.read_float(entity + offset_entity_z)
o_entity_x = (entity_x - camera_x) / 1.7 + 750
o_entity_y = (camera_y + 600 - entity_y) / 2 + 450
if o_entity_x < 1920 and o_entity_y < 1080:
overlay.draw_text(f'[{hex(entity)}]', ('Arial', 16), o_entity_x, o_entity_y, (0, 255, 0), False)
# overlay.draw_text(f'x [{entity_x}] y [{entity_y}]', ('Ebrima', 14), o_entity_x, o_entity_y + 20, (0, 255, 0), False)
overlay.draw_text(f'cam_x: {int(camera_x)} | cam_y: {int(camera_y)}', ('Ebrima', 20), 15, 50, (255, 255, 255), False)
except Exception:
# print(hex(entity))
pass
overlay.update_overlay()
if __name__ == "__main__":
entity_finder()
Стоит понимать, что в Доте при виде сверху, камера - это трапеция, т.е нормальное положение будет только у тех объектов, которые оказались по середине экрана на средней линии, остальные же получат сумасшедшие искажения по всем осям. Это заметно даже на скриншоте по тому, что только герои на средней линии имеют координаты в ногах, у других же, они сдвинуты
Максимальный 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
Вот собственно говоря результат, как я уже говорил - не идеально, но с этим уже можно работать и даже попробовать написать какой - нибудь автокаст:
Последние темы в этом разделе:
- Cкрипт dota 2, который принимает игру и автоматически выбирает героя
- Скрипт Dota2 Dumper - Выводит сетевые переменные, интерфейсы, игровые системы и классы Dota 2
- Скрипт Dota Plus для патча 7.37d в Dota 2
- Скрипт на отдаление камеры в патче 7.37d для Dota 2
- Dota2 Autoaccepter - авто принятие матчей Dota 2
- Чит Dota 2 для патча 7.37d
- Скрипт автоматического использования и позиционирования Juggernaut Healing Ward для hake.me
- Скрипт комбо Alchemist для hake.me
- Взлом мини игр crownfall в Dota 2 для hake.me
- [Crack] Чит En1gma для CS2 - [2024]