ExistedGit / Dota2Cheat

A dota 2 cheat project aiming to provide an educational example to new developers
GNU General Public License v3.0
116 stars 43 forks source link

discussion #5

Open saeedkhatami opened 1 year ago

saeedkhatami commented 1 year ago

Hello I really appreciate what you did, all the functions are working properly. But the problem I have is related to the visibility section, the page it creates is completely black and does not show the background, which is Dota2. At first, I thought that it was related to VSync settings, which did not solve the problem by changing it.

Capture

Inside the source code is also an option GLFW_TRANSPARENT_FRAMEBUFFER was active. Is the problem related to the launch option of the game, which should be opened with OpenGL?

ExistedGit commented 1 year ago

I do not launch the game with any special parameters, as the overlay is a separate window and should not interfere. If GLFW_TRANSPARENT_FRAMEBUFFER is indeed set to true, then my only guess is that in your case OpenGL is not properly supported. I haven't encountered this error, it should only be black in Debug mode(and also not fullscreen) If it's because of OpenGL I might make a DirectX ImGui version to try and test it there(also from the information I gathered I'll need it anyway if I want to render icons from Panorama)

saeedkhatami commented 1 year ago

Hi is there a way to get the attack speed of hero value and address? I'm trying to add auto last hit and auto deny.

ExistedGit commented 1 year ago

Check out the Wiki page on Netvars, there is a link to a netvar dump, the class is C_DOTA_BaseNPC_Hero(they're in schema/classes/client.dll). Look for m_iBaseAttackSpeed and/or m_flBaseAttackTime(that "Base" can imply you/I'd need to reverse functions related to getting bonuses to it from items) I'm pondering autolasthit and autodeny too, though you would also need to track projectiles(for ranged heroes) and other entities' attacks on your target(since e. g. your own creeps may screw up the timing). The values for these are mentioned in a September version of the dump but I suppose they're not netvars

saeedkhatami commented 1 year ago

oh, I really appreciate the information you provided.

saeedkhatami commented 1 year ago

isvisible

I changed revenant_brooch_ring_glow to selected_ring.vpcf with radius of 75 and RED color.

I think this one is more effective.

ExistedGit commented 1 year ago

Whatever suits you. Maybe at some point when I'll be polishing existing features I could add variety(although it must be a fixed set of particles, end-users wouldn't want to find it themselves in Dota Workshop Tools). Customization is open-source's main feature, after all About auto-lasthit's ProjectileSpeed, I've got a lead from Liberalist, will investigate soon

On Thu, 2 Feb 2023, 20:58 Zero Ex, @.***> wrote:

[image: isvisible] https://user-images.githubusercontent.com/69420353/216435340-ed40c681-c443-45c3-8183-b9a3d55418bb.png

I changed revenant_brooch_ring_glow to selected_ring.vpcf with radius of 75 and RED color.

I think this one is more effective.

— Reply to this email directly, view it on GitHub https://github.com/ExistedGit/Dota2Cheat/issues/5#issuecomment-1414290207, or unsubscribe https://github.com/notifications/unsubscribe-auth/AP3EEWSTGM4G3HL2RRJTE2TWVQGVZANCNFSM6AAAAAAUMKC5Z4 . You are receiving this because you commented.Message ID: @.***>

saeedkhatami commented 1 year ago

oh nice, I think from C_DOTA_BaseNPC_Creep_Lane it should get the creep lane health.

ExistedGit commented 1 year ago

Of course, health is the least of our concerns, it's already in my BaseEntity wrapper. At least towers have m_hTowerAttackTarget, though projectile speed is still necessary in their case

On Thu, 2 Feb 2023, 22:21 Zero Ex, @.***> wrote:

oh nice, I think from C_DOTA_BaseNPC_Creep_Lane it should get the creep lane health.

— Reply to this email directly, view it on GitHub https://github.com/ExistedGit/Dota2Cheat/issues/5#issuecomment-1414389381, or unsubscribe https://github.com/notifications/unsubscribe-auth/AP3EEWQPAY4XLFCZSHWCLJLWVQQO7ANCNFSM6AAAAAAUMKC5Z4 . You are receiving this because you commented.Message ID: @.***>

ExistedGit commented 1 year ago

About ProjectileSpeed: you might've already noticed I hooked the file system(but have not yet added code for parsing, I already have it on my Test project) The entity that a unit is attacking is impossible to obtain directly(as it's server-side). The only solution left is to "ray-trace" to the entity in front of the unit + check if the unit is in the attack anim AND also is not turning(angle speed = 0)

saeedkhatami commented 1 year ago

oh, I didn't know that it's server-side, now it has been more complicated! Thank you for the information you give. I'm working on DirectX ImGui version menu.

ExistedGit commented 1 year ago

I'm working on DirectX ImGui version menu.

Would be nice to add that to the project. Diversifying solutions can ensure we always have the fitting tools Instead of autolasthitting I'll now look towards a Lua/JS API like the universe's best cheat ever. Wouldn't want to repeat the mistake of putting lambdas everywhere like I did with my SFML project 2 years ago

saeedkhatami commented 1 year ago

I found out this fork of Shadow-Dance-Menu called Shadow-Dance-Panda that is updated and DirectX version. but it's not like yours, it just have :

ExistedGit commented 1 year ago

As you've seen I already implemented the weather change thing from their repo(which I've found on UC) and credited them The fork was made by the same Indonesian guy who forked&renamed this repo in its early stage. There's nothing more in his commits than number tweaks or commenting out parts of the original code The naming tho... Screenshot_400

saeedkhatami commented 1 year ago

I'm working on DirectX ImGui version menu.

Would be nice to add that to the project. Diversifying solutions can ensure we always have the fitting tools Instead of autolasthitting I'll now look towards a Lua/JS API like the universe's best cheat ever. Wouldn't want to repeat the mistake of putting lambdas everywhere like I did with my SFML project 2 years ago

And you know there are many LUA source codes like

saeedkhatami commented 1 year ago

As you've seen I already implemented the weather change thing from their repo(which I've found on UC) and credited them The fork was made by the same Indonesian guy who forked&renamed this repo in its early stage. There's nothing more in his commits than number tweaks or commenting out parts of the original code The naming tho... Screenshot_400

wow LMAO, I didn't see the commits.

ExistedGit commented 1 year ago

I'm working on DirectX ImGui version menu.

Would be nice to add that to the project. Diversifying solutions can ensure we always have the fitting tools Instead of autolasthitting I'll now look towards a Lua/JS API like the universe's best cheat ever. Wouldn't want to repeat the mistake of putting lambdas everywhere like I did with my SFML project 2 years ago

And you know there are many LUA source codes like

  • Autolast hit
  • auto ult axe
  • tinker auto script and many many stuffs

Idk about Lua scripts in dota(since it's more of a CS:GO thing) but there is a D2JS repo around with scripts like Rubick's auto-steal. For me sol3 looks easier to implement than V8, but we'll see

saeedkhatami commented 1 year ago

V8 is much more complicated, I just saw the Hello World example. Did you see the dota2-lua-engine? this repo is old but I think this one is much helpful.

ExistedGit commented 1 year ago

10 year old repo

That LuaJIT bit is on point though, they say it's faster than normal Lua I'm now having the default problem of nothing working with embedding Lua into sol3 into a project, but I'll get through it

Aligg20 commented 1 year ago

I've always looked for a skin changer like Overwolf and FEMIDA, but no one has progressed along the way, can you do something about it?

ExistedGit commented 1 year ago

image

For your information, I too have always looked for a skinchanger. It's the primary underlying purpose of all these developments. Not that I don't make advances into that direction, but it's going to take a lof of time. I'm not a team of experienced hackers making a private cheat, after all

KennyGump commented 1 year ago

Hi there, after I injected your build, it seems to crash when my hero started to spawn in fountain. I had to run my client and inject again, and reconnect to game, and it works fine after that. Any special instructions to prevent crashing every first time I load the game?

ExistedGit commented 1 year ago

The only thing I noticed is that it sometimes crashes right in the menu without visible reason(somewhen after initializing interfaces). I will try to reproduce the crash. Did you load into a filled lobby(with bots/someone else)? I remember there were some problems with that Maybe you can attach Visual Studio via Ctrl + Alt + P to see where the exception comes up and/or debug step-by-step to understand what step causes it EDIT: I just noticed it sometimes crashes when entering the game because of vtable hooking. Strange.

Aligg20 commented 1 year ago

Is it possible to add automatic armlet mode for Huskar like magic wand?

saeedkhatami commented 1 year ago

Hi there, after I injected your build, it seems to crash when my hero started to spawn in fountain. I had to run my client and inject again, and reconnect to game, and it works fine after that. Any special instructions to prevent crashing every first time I load the game?

in Extreme injector I use Thread Hijacking method, and I didn't get any crashes in game.

KennyGump commented 1 year ago

Hi there, after I injected your build, it seems to crash when my hero started to spawn in fountain. I had to run my client and inject again, and reconnect to game, and it works fine after that. Any special instructions to prevent crashing every first time I load the game?

in Extreme injector I use Thread Hijacking method, and I didn't get any crashes in game.

Same here, except that I additionally used "Start in Secure Mode".

The only thing I noticed is that it sometimes crashes right in the menu without visible reason(somewhen after initializing interfaces). I will try to reproduce the crash. Did you load into a filled lobby(with bots/someone else)? I remember there were some problems with that Maybe you can attach Visual Studio via Ctrl + Alt + P to see where the exception comes up and/or debug step-by-step to understand what step causes it EDIT: I just noticed it sometimes crashes when entering the game because of vtable hooking. Strange.

After injection, I start finding game, accept, loads in hero selection, loads loading screen, then crashes while I see a glimpse of fountain. Yes, its filled with 9 other players. I will try and debug and see.

Wolf49406 commented 1 year ago

Видел тебя на югейме. Как насчет коллаба? Уже перегораю 2+ года в соло реверсить. image image image image

ExistedGit commented 1 year ago

Видел тебя на югейме. Как насчет коллаба? Уже перегораю 2+ года в соло реверсить. image image image image

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

2+ года

Так у вас же группа какая-то была, в хуманайзер-треде видел

Экстрим инжектор просто умер + что-то перепидорасило мою DLLку, да так, что LoadLibrary не работал. Откат сделан, буду смотреть что там такое EDIT: It was LWSS's Protobuf.h file, apparently

ExistedGit commented 1 year ago

So I'm currently suffering with linking the protobufs in such a way that they will actually WORK It's painful

Wolf49406 commented 1 year ago

Так и не понял, что у тебя за проблемы с протобафами. Пробовал просто через vcpkg установить? Я у себя так и сделал. Да, там дллки создаются, но их можно просто лоудером при запуске копировать из папки чита в \dota 2 beta\game\bin\win64\. И никаких проблем вообще не испытывать. Только не забудь debug-версию либы у себя туда же кинуть. Я вообще не уверен, что получится через .lib это организовать. Я лично так и не осилил, постоянно инжектор (и мой мануалмапный, и Extreme) ошибками сыпал. vcpkg-версия тебе и либы, и дллки, и компилятор protoc.exe даст. Потом простым батником (ps1 тащемта) можно обновлять\компилить протобафы с гитхаба. Типа такого. Можно и получше сделать, но мне лень :^)

$BaseURL = "https://raw.githubusercontent.com/SteamDatabase/GameTracking-Dota2/master/Protobufs/" $SRCPath = "C:/CPP/vcpkg/installed/x64-windows/tools/protobuf/src/" $BuildPath = "C:\CPP\vcpkg\installed\x64-windows\tools\protobuf\build" $LibraryPath = "C:\CPP\Repos\CrimsonDota\Source\Library\proto"

Invoke-WebRequest -URI $BaseURL"network_connection.proto" -OutFile $SRCPath"network_connection.proto" Invoke-WebRequest -URI $BaseURL"networkbasetypes.proto" -OutFile $SRCPath"networkbasetypes.proto" Invoke-WebRequest -URI $BaseURL"netmessages.proto" -OutFile $SRCPath"netmessages.proto" Invoke-WebRequest -URI $BaseURL"usermessages.proto" -OutFile $SRCPath"usermessages.proto" Invoke-WebRequest -URI $BaseURL"dota_shared_enums.proto" -OutFile $SRCPath"dota_shared_enums.proto" Invoke-WebRequest -URI $BaseURL"dota_commonmessages.proto" -OutFile $SRCPath"dota_commonmessages.proto" Invoke-WebRequest -URI $BaseURL"dota_clientmessages.proto" -OutFile $SRCPath"dota_clientmessages.proto" Invoke-WebRequest -URI $BaseURL"dota_usermessages.proto" -OutFile $SRCPath"dota_usermessages.proto" Invoke-WebRequest -URI $BaseURL"steammessages.proto" -OutFile $SRCPath"steammessages.proto" Invoke-WebRequest -URI $BaseURL"steammessages_unified_base.steamworkssdk.proto" -OutFile $SRCPath"steammessages_unified_base.steamworkssdk.proto" Invoke-WebRequest -URI $BaseURL"steammessages_steamlearn.steamworkssdk.proto" -OutFile $SRCPath"steammessages_steamlearn.steamworkssdk.proto" Invoke-WebRequest -URI $BaseURL"gcsdk_gcmessages.proto" -OutFile $SRCPath"gcsdk_gcmessages.proto" Invoke-WebRequest -URI $BaseURL"econ_shared_enums.proto" -OutFile $SRCPath"econ_shared_enums.proto" Invoke-WebRequest -URI $BaseURL"econ_gcmessages.proto" -OutFile $SRCPath"econ_gcmessages.proto" Invoke-WebRequest -URI $BaseURL"dota_gcmessages_msgid.proto" -OutFile $SRCPath"dota_gcmessages_msgid.proto"

C:\CPP\vcpkg\installed\x64-windows\tools\protobuf\protoc.exe --proto_path=$SRCPath --cpp_out=$BuildPath $SRCPath\network_connection.proto C:\CPP\vcpkg\installed\x64-windows\tools\protobuf\protoc.exe --proto_path=$SRCPath --cpp_out=$BuildPath $SRCPath\networkbasetypes.proto C:\CPP\vcpkg\installed\x64-windows\tools\protobuf\protoc.exe --proto_path=$SRCPath --cpp_out=$BuildPath $SRCPath\netmessages.proto C:\CPP\vcpkg\installed\x64-windows\tools\protobuf\protoc.exe --proto_path=$SRCPath --cpp_out=$BuildPath $SRCPath\usermessages.proto C:\CPP\vcpkg\installed\x64-windows\tools\protobuf\protoc.exe --proto_path=$SRCPath --cpp_out=$BuildPath $SRCPath\dota_shared_enums.proto C:\CPP\vcpkg\installed\x64-windows\tools\protobuf\protoc.exe --proto_path=$SRCPath --cpp_out=$BuildPath $SRCPath\dota_commonmessages.proto C:\CPP\vcpkg\installed\x64-windows\tools\protobuf\protoc.exe --proto_path=$SRCPath --cpp_out=$BuildPath $SRCPath\dota_clientmessages.proto C:\CPP\vcpkg\installed\x64-windows\tools\protobuf\protoc.exe --proto_path=$SRCPath --cpp_out=$BuildPath $SRCPath\dota_usermessages.proto C:\CPP\vcpkg\installed\x64-windows\tools\protobuf\protoc.exe --proto_path=$SRCPath --cpp_out=$BuildPath $SRCPath\steammessages.proto C:\CPP\vcpkg\installed\x64-windows\tools\protobuf\protoc.exe --proto_path=$SRCPath --cpp_out=$BuildPath $SRCPath\steammessages_unified_base.steamworkssdk.proto C:\CPP\vcpkg\installed\x64-windows\tools\protobuf\protoc.exe --proto_path=$SRCPath --cpp_out=$BuildPath $SRCPath\steammessages_steamlearn.steamworkssdk.proto C:\CPP\vcpkg\installed\x64-windows\tools\protobuf\protoc.exe --proto_path=$SRCPath --cpp_out=$BuildPath $SRCPath\gcsdk_gcmessages.proto C:\CPP\vcpkg\installed\x64-windows\tools\protobuf\protoc.exe --proto_path=$SRCPath --cpp_out=$BuildPath $SRCPath\econ_shared_enums.proto C:\CPP\vcpkg\installed\x64-windows\tools\protobuf\protoc.exe --proto_path=$SRCPath --cpp_out=$BuildPath $SRCPath\econ_gcmessages.proto C:\CPP\vcpkg\installed\x64-windows\tools\protobuf\protoc.exe --proto_path=$SRCPath --cpp_out=$BuildPath $SRCPath\dota_gcmessages_msgid.proto

Get-ChildItem -Path "$BuildPath*.*" -Recurse | Move-Item -Destination $LibraryPath -Force

ExistedGit commented 1 year ago

Кстати вспкг изначально и ставил, но что-то там не получилось и мне перехотелось Протобафы вполне себе собираются в статик-версию без лишней DLLки(но там CRT включается тогда и размер больше), мне лишь бы версию рабочую За скрипт пасиба, идея с закидыванием DLL в папку весьма интересная

Wolf49406 commented 1 year ago

Попробуй таки еще раз с vcpkg, это оптимальный вариант -- и делается, и обновляется просто. В проекте указывай инклюды: \vcpkg\installed\x64-windows\include. И либы: \vcpkg\installed\x64-windows\lib. Нужны только libprotobuf.lib и libprotobuf-lite.lib, если что. dll, которые нужно рядом с dota2.exe класть, лежат в \vcpkg\installed\x64-windows\bin. Debug-версии .lib и .dll лежат в \vcpkg\installed\x64-windows\debug. А в \vcpkg\installed\x64-windows\tools\protobuf будет и protoc.exe для компиляции.

Помню, тоже в своё время несколько ночей на протобафы убил -- пытался компилить из сырцов. Еще и LWSS писал, что нужна определенная его версия, но это херня полная :/ По итогу тупо через vcpkg сделал и всё без проблем заработало. А копирование либы в папку доты -- не большая цена.

ЗЫ: Кстати, насчет коллаба. У меня пека сдохла внезапно. А ноут не может в доту, лол, получаю ошибку, связанную видимо с директыксом -- forceloadshader() что-то там.

ExistedGit commented 1 year ago

ЗЫ: Кстати, насчет коллаба. У меня пека сдохла внезапно. А ноут не может в доту, лол, получаю ошибку, связанную видимо с директыксом -- forceloadshader() что-то там.

Вселенная, видимо, ещё не готова к такому коллабу Но а вообще после контакта с протобафами у меня на два дня поллица опухло, тоже не было суждено нормально работать

Wolf49406 commented 1 year ago

Ну я думаю просто через Parsec (типа удаленное управление ПК) заюзаю пеку моего саппорта, пока он на работе, только он чет не онлайн уже долго :/ Но в целом всё реализуемо. А насчет прото -- я хз, там же вообще всё оч просто, не? Могу тебе архивом скинуть .lib и .dll, ну и компилер -- просто в проект себе их заинклюдь, ну и сделай оберт_очку для копирования .dll в папку доты. И, да, каждый раз лучше при запуске лоудера копировать дллки. Мало ли, ты проток решишь обновить.

Еще нужно бы написать нормальный экзешник вместо этого всратого ps1-скрипта, шоб удобно было. И, наверное, скрипт для Tampermonkey\браузера, чтобы он чекал обновление .proto в репозитории, ну и присылал уведомление, мол, "твои .proto обновились, иди запускай скрипт, уёба".

ЗЫ: Опять таки, насчет коллаба. Мб лучше куда-нибудь Вк или Телегу напишешь?

Aligg20 commented 1 year ago

I can't figure out how to inject the new update, can you explain me?

ExistedGit commented 1 year ago

I mean, you're supposed to build Dota2Cheat and Dota2Loader in Release x64 and launch the .exe in Build/Release/ folder

Aligg20 commented 1 year ago

Why does it crash on official servers, is there a way to fix it? And thank you for your hard work.

ExistedGit commented 1 year ago

It's a bit unstable, but I'm testing it on a bot-filled lobby too, it's not supposed to crash during the game(apart from some one-time nullptr issues because of some crazy synchronization). Also you really shouldn't play with that on official servers

ExistedGit commented 1 year ago

Actually, you know what? I'm retarded It didn't work properly on non-local servers due to some Dota mechanisms For whatever reason it adds 11 CDOTAPlayerControllers out of 10. I found a way around it, expect a commit

waccii commented 1 year ago

The cheat works "occasionally." (sometimes there are 5mins delay before it works)

I'm using the released build

Issue:

  1. crashed at some point
  2. In-game, ES and Magnus ulti does not work(even with enemy heroes). It also does not work in demo(test dummy), but it does function in demo(enemy) Untitled

PS: I'm using the crimsons cheat, but sadly yesterday it stopped working after the recent patch. So I tried this and surprisingly it worked.

someuser32 commented 1 year ago

Hello I really appreciate what you did, all the functions are working properly. But the problem I have is related to the visibility section, the page it creates is completely black and does not show the background, which is Dota2. At first, I thought that it was related to VSync settings, which did not solve the problem by changing it.

Capture

Inside the source code is also an option GLFW_TRANSPARENT_FRAMEBUFFER was active. Is the problem related to the launch option of the game, which should be opened with OpenGL?

For everyone who has the same issue. In NVIDIA Control Panel, OpenGL GDI Compatibility must be set to "Prefer Compatibility". image

AlexanderLevashov commented 1 year ago

Hi! Has anyone had any problems with the fact that the cheat works displayed on top of other applications? You use alt + tab and nothing, it goes to dota, and the application is not active...

riyushiki commented 1 year ago

Wassup, guys! How to use lua scripts in this cheat?