TechMecca
WRobot user-
Posts
103 -
Joined
-
Last visited
Recent Profile Visitors
1549 profile views
TechMecca's Achievements
-
Managing rotation behavior from the game client
TechMecca replied to rmich's topic in Fight Classes assistance
Hi, you could always use a TCP server to handle communications . -
They do not leave files on your pc.
-
Hi, Did you change your IP address using a VPN or proxy? Also, did you use a relogger? Some servers might use a LUA function called 'Reportbug,' which can send back details about your computer, potentially flagging any new accounts created and connected by the same hardware. The reason I ask about the relogger is that @Droidz said mentioned here that reloggers ensure WoW doesn’t send back your PC name. ReportBug Pseudocode char __cdecl SendBugOpcode(int type, char *description) { int v2; // eax unsigned int v3; // eax unsigned __int64 v4; // rax unsigned __int64 v5; // rax double v6; // st7 double v7; // st6 char v8; // al unsigned __int64 v9; // rax unsigned __int64 v10; // rax const char *v11; // esi const char *v12; // eax _DWORD *v13; // eax _DWORD *v14; // esi int v15; // edi int v16; // ebx int v17; // eax const char *v18; // edi __int64 v19; // rax char *v20; // ecx char *v21; // eax int v22; // edi int v23; // eax void *v24; // eax char *v25; // eax unsigned int i; // ebx int v27; // edi _BOOL1 v28; // zf char *v29; // eax int v30; // esi int v31; // edi __int64 v33; // [esp+10h] [ebp-14F0h] unsigned __int64 v34; // [esp+18h] [ebp-14E8h] double v35; // [esp+18h] [ebp-14E8h] SpellRec v36; // [esp+2Ch] [ebp-14D4h] BYREF char v37; // [esp+2D4h] [ebp-122Ch] BYREF char Dst[4095]; // [esp+2D5h] [ebp-122Bh] BYREF char Buffer[256]; // [esp+12D4h] [ebp-22Ch] BYREF int a1[64]; // [esp+13D4h] [ebp-12Ch] BYREF unsigned int v41; // [esp+14D4h] [ebp-2Ch] BYREF CDataStore v42; // [esp+14D8h] [ebp-28h] BYREF DWORD nSize; // [esp+14F0h] [ebp-10h] BYREF float v44; // [esp+14F4h] [ebp-Ch] BYREF unsigned __int64 v45; // [esp+14F8h] [ebp-8h] if ( !description || !*description ) return 0; if ( !s_clientServices ) goto LABEL_46; v37 = 0; memset(Dst, 0, sizeof(Dst)); nSize = 256; if ( sub_86B4A0(Buffer, &nSize) ) { SStrPrintf((char *)a1, 256, "Username:\t%s\n", Buffer); SStrCopy_0(&v37, a1, 4096); } nSize = 256; if ( sub_86B480(Buffer, &nSize) ) { SStrPrintf((char *)a1, 256, "Computer:\t%s\n", Buffer); SStrCopy_0(&v37, a1, 4096); } v2 = OsGetNumberOfProcessors(); SStrPrintf((char *)a1, 256, "Processors:\t%u\n", v2); SStrCopy_0(&v37, a1, 4096); sub_86B9A0(&v41); v3 = v41; if ( v41 > 4 ) { v3 = 0; v41 = 0; } SStrPrintf((char *)a1, 256, "Processor vendor:\t%s\n", off_AD93C0[v3]); SStrCopy_0(&v37, a1, 4096); v4 = sub_86AE70(); if ( v4 >= qword_AD93B8 ) { v9 = v4 / 0xF4240; v6 = (double)(v9 & 0x7FFFFFFFFFFFFFFFi64); v45 = __PAIR64__(HIDWORD(v9) & 0x80000000, 0); v7 = (double)__SPAIR64__(HIDWORD(v9) & 0x80000000, 0); v8 = 71; } else { v5 = v4 / 0x3E8; v6 = (double)(v5 & 0x7FFFFFFFFFFFFFFFi64); v45 = __PAIR64__(HIDWORD(v5) & 0x80000000, 0); v7 = (double)__SPAIR64__(HIDWORD(v5) & 0x80000000, 0); v8 = 77; } SStrPrintf((char *)a1, 256, "Processor speed:\t%6.2f%cHz\n", (v6 - v7) * 0.001, v8); SStrCopy_0(&v37, a1, 4096); v10 = sub_86B4C0(); SStrPrintf((char *)a1, 256, "Memory:\t%uMB\n", (unsigned int)(v10 >> 20)); SStrCopy_0(&v37, a1, 4096); SStrCopy_0(&v37, "OS:\t\t", 4096); sub_86B430((char *)a1, 256); SStrCopy_0(&v37, a1, 4096); SStrCopy_0(&v37, L"\n", 4096); SStrPrintf((char *)a1, 256, "Version:\t%s\n", "WoW [Release] Build 12340 (Jun 24 2010 23:54:57)"); SStrCopy_0(&v37, a1, 4096); v11 = byte_C79620 != 0 ? &byte_C79620 : 0; if ( v11 ) { v12 = (const char *)GetRealmName(); SStrPrintf((char *)a1, 256, "Realm:\t%s\n", v12); SStrCopy_0(&v37, a1, 4096); SStrPrintf((char *)a1, 256, "Account:\t%s\n", v11); SStrCopy_0(&v37, a1, 4096); if ( ClientServices::GetCurrent() ) { if ( *((_DWORD *)ClientServices::GetCurrent() + 3029) ) { v13 = ClntObjMgrGetActivePlayerObj(); v14 = v13; if ( v13 ) { v15 = v13[52]; v16 = ClientDB::GetRow((int)&g_ChrRacesDB.funcTable2, *(unsigned __int8 *)(v15 + 68)); v17 = ClientDB::GetRow((int)&g_ChrClassesDB.funcTable2, *(unsigned __int8 *)(v15 + 69)); if ( v17 ) v18 = *(const char **)(v17 + 16); else v18 = "Unknown"; if ( v16 ) HIDWORD(v19) = *(_DWORD *)(v16 + 56); else HIDWORD(v19) = "Unknown"; LODWORD(v19) = v14[52]; v20 = off_AD6628[*(unsigned __int8 *)(v19 + 70)]; LODWORD(v19) = *(_DWORD *)(v19 + 192); v34 = __PAIR64__((unsigned int)v18, (unsigned int)v20); v33 = v19; v21 = CGUnit_C::GetObjectName_0((int)v14, 0, 1); SStrPrintf( (char *)a1, 256, "Character:\t%s (level %i %s %s %s)\n", v21, (_DWORD)v33, (const char *)HIDWORD(v33), (const char *)v34, (const char *)HIDWORD(v34)); SStrCopy_0(&v37, a1, 4096); v22 = CGPlayer_C::GetNewContinentID(); v23 = ClientDB::GetRow((int)&g_MapDB.funcTable2, v22); if ( v23 ) SStrPrintf((char *)a1, 256, "Map:\t\t%u (%s)\n", v22, *(const char **)(v23 + 4)); else SStrPrintf((char *)a1, 256, "Map:\t\t%u\n", v22); SStrCopy_0(&v37, a1, 4096); if ( dword_BD0788 && *(_BYTE *)dword_BD0788 ) { SStrPrintf((char *)a1, 256, "Zone:\t\t%s", (const char *)dword_BD0788); SStrCopy_0(&v37, a1, 4096); if ( dword_BD0784 && *(_BYTE *)dword_BD0784 ) { SStrPrintf((char *)a1, 256, " - %s", (const char *)dword_BD0784); SStrCopy_0(&v37, a1, 4096); } SStrCopy_0(&v37, L"\n", 4096); } (*(void (__thiscall **)(_DWORD *, float *))(*v14 + 44))(v14, &v44); v35 = ((double (__thiscall *)(_DWORD *))*(_DWORD *)(*v14 + 52))(v14); SStrPrintf((char *)a1, 256, "Position:\t%f %f %f, %f\n", v44, *(float *)&v45, *((float *)&v45 + 1), v35); SStrCopy_0(&v37, a1, 4096); if ( CGGameUI::m_lockedTarget ) { v24 = ClntObjMgrObjectPtr(CGGameUI::m_lockedTarget, TYPEMASK_UNIT); if ( v24 ) { v25 = CGUnit_C::GetObjectName_0((int)v24, 0, 1); SStrPrintf((char *)a1, 256, "Target:\t%s\n", v25); SStrCopy_0(&v37, a1, 4096); } } SStrPrintf((char *)a1, 256, "Auras:\n"); SStrCopy_0(&v37, a1, 4096); WowClientDB::GetRow(&v36); for ( i = 0; i < CGUnit_C::GetAuraCount(v14); ++i ) { v27 = CGUnit_C::GetAuraSpellId(i); if ( v27 ) { v28 = ClientDb::GetLocalizedRow(&g_SpellDB, v27, &v36) == 0; v29 = v36.m_name_lang; if ( v28 ) v29 = "UNKNOWN"; SStrPrintf((char *)a1, 256, "\t%s(%d)\n", v29, v27); SStrCopy_0(&v37, a1, 4096); } } nullsub_3(); } } } } v30 = SStrLen(&v37) + 1; v31 = SStrLen(description) + 1; v42.vTable = (CDataStore_vTable *)off_9E0E24; v42.m_buffer = 0; v42.m_base = 0; v42.m_alloc = 0; v42.m_size = 0; v42.m_read = -1; CDataStore::PutInt32(&v42, CMSG_BUG); CDataStore::PutInt32(&v42, type); CDataStore::PutInt32(&v42, v30); CDataStore::PutBytes2(&v42, (int)&v37, v30); CDataStore::PutInt32(&v42, v31); CDataStore::PutBytes2(&v42, (int)description, v31); v42.m_read = 0; if ( !s_clientServices ) LABEL_46: sub_8889B0((int)&byte_9E14FF, (int)&byte_9E14FF, 0); SendPacket((int)s_clientServices, &v42); v42.vTable = (CDataStore_vTable *)off_9E0E24; if ( v42.m_alloc != -1 ) CDataStore::InternalDestroy(&v42.m_buffer, &v42.m_base, &v42.m_alloc); return 1; }
-
TechMecca reacted to a post in a topic: Beginner in Lua (first script)
-
Hello, You can set a variable and modify it based on specific conditions as shown below: bool results = false; EventsLuaWithArgs.OnEventsLuaWithArgs += (name, args) => { if (name == "PLAYER_DEAD") results = true; }; OnEventsLuaWithArgs` is an event listener that triggers the specified action when the event occurs.
-
Does WRobot Archeology work in Cataclysm classic?
TechMecca replied to Saulul's topic in General discussion
No -
With the build button of ctrl + B download Visualstudio 2022 community
-
TechMecca reacted to a file: [Free] Wholesome Dungeon Crawler
-
@DroidzYou are correct, sorry i should of thought of this before i replied. So to make a plugin more secure, you would have to hook and spoof Memcheck and PageScan to make sure when they do check if something is detoured. that we send back the right data they seek.
-
So with wrobot plug-in, you’d have to use a detourhook using ASM, wow uses two different send data to server function. One is for public static and other is loaded when warden is loaded. I know that from wotlk below the server don’t get the pc username. For Cata and above I have no clue.
-
Pudge reacted to a post in a topic: How to read packets?
-
not gonna lie, would be awesome if @DroidzAdd a Asm DetourHook class to wrobot so we can hook functions and have more control over wow. but i know he is using Break points and i dont know if having asm hook will mess with break points. @Pudgei wrote my own packet sniffer for wow in c++ (its not public) if you want to message me, i can let you use a copy of it.
-
Anything is possible, wrobot just uses C#, besides a massive API, Wrobot can run all .net code . Just takes time and understanding how to build it. With wrobot plug-in you can build your own internet browser if you really wanted. why do you wanna see out going packets? Besides warden , I can surely tell you that there’s nothing interesting .
-
local tooltip local function CreateToolTipFrame() tooltip = CreateFrame("GameTooltip", "MyTempTooltip", UIParent, "GameTooltipTemplate") tooltip:SetOwner(UIParent, "ANCHOR_NONE") end local function OnTooltipSetItemFromLink(itemLink) if itemLink then CreateToolTipFrame() -- Ensure tooltip is created tooltip:SetHyperlink(itemLink) local numLines = tooltip:NumLines() if numLines > 0 then for i = 1, numLines do local line = getglobal(tooltip:GetName() .. "TextLeft" .. i) if line then DEFAULT_CHAT_FRAME:AddMessage(line:GetText()) end end end tooltip:Hide() end end
-
Hello, i Believe you have to use tooltip reading ,