Mateus Robeerto
Legendary OT User
Hi SpiderOT,I think it should work
but there is a way to get the current dialog pointer
DialogPtr is the pointer used in HasDialog()LUA:DialogPtr = 0x67B9F4, DialogLeft = 0x14, DialogTop = 0x18, DialogWidth = 0x1C, DialogHeight = 0x20, DialogCaption = 0x50, void Render(int nSurface){ int* DialogPointer = (int*)DialogPtr; if ((int)*DialogPointer != 0) { int dialog = *DialogPointer; char* DialogCaptionStr = (char*)(dialog + DialogCaption); int DialogLeftInt = *(int*)(dialog + DialogLeft); int DialogTopInt = *(int*)(dialog + DialogTop); int DialogWidthInt = *(int*)(dialog + DialogWidth); int DialogHeightInt = *(int*)(dialog + DialogHeight); if (DialogCaptionStr && std::string(DialogCaptionStr) == "Enter Game") { //add your stuff here, can add buttons or anything Painter::drawSkin(nSurface, DialogLeftInt + 20, DialogTopInt + DialogHeightInt - 20, DialogWidthInt - 20, 2, 142, 0, 3); g_dll.m_newButtons->setPosition(DialogLeftInt + 20, DialogTopInt + DialogHeightInt - 20); } } }
Thanks for the tips and information.
I studied what you explained and finally understood the logic: getting the original CipSoft colors, dialog pointer, and other client data.
After that, I managed to create my own DLL and implement these features:
- Mounts
- Frame groups
- Idle animations
- Mount window
For other features, using my own DLL seems to be the right path.
At first I thought it would be much harder and more complex, but after studying it, I understood the logic. The process was simpler than I expected.
Thanks again for the help.