Skinning with Interact GameObject menu

User Tag List

Results 1 to 8 of 8
  1. #1
    CrimeTime's Avatar Active Member
    Reputation
    20
    Join Date
    Dec 2007
    Posts
    83
    Thanks G/R
    16/4
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Skinning with Interact GameObject

    Hello,

    I read the units for skinnable creatures to skinning them and if a skinable creature is in range I try to skinning it with Interact GameObject but nothing happens.

    Someone an idea how to solve this?

    I did considered to do it with /TargetLastTarget and then /cast Skinning but that isn't the best way to do it because thats won't skinning creatures which wasn't in target before.

    I'm grateful for any advice!

    Skinning with Interact GameObject
  2. #2
    l0l1dk's Avatar Elite User

    Reputation
    499
    Join Date
    Sep 2010
    Posts
    342
    Thanks G/R
    1/6
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Skinnable units aren't GameObjects, so the GameObject interaction function won't work with them. They're units, so try using CGUnit_C::OnRightClick instead.

  3. #3
    CrimeTime's Avatar Active Member
    Reputation
    20
    Join Date
    Dec 2007
    Posts
    83
    Thanks G/R
    16/4
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Mhh okay but that confusing me, becaus I can loot units with it but can't skinning them with it?

    Can you tell me how to use the "CGUnit_C::OnRightClick"? never worked with it.
    Last edited by CrimeTime; 04-12-2012 at 08:42 AM.

  4. #4
    _Mike's Avatar Contributor
    Reputation
    310
    Join Date
    Apr 2008
    Posts
    531
    Thanks G/R
    0/2
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by CrimeTime View Post
    Mhh okay but that confusing me, becaus I can loot units with it but can't skinning them with it?

    Can you tell me how to use the "CGUnit_C::OnRightClick"? never worked with it.
    It's a function. The kind you use by calling it.
    The name of it gives a fairly obvious hint that it's a class method, and looking at it with a disassembler should tell you if it takes any arguments and what they are.

  5. #5
    lunitune's Avatar Member
    Reputation
    3
    Join Date
    Apr 2008
    Posts
    17
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    You can write the target's GUID to the last target spot in memory and then target last target then interact. This is how I do it from a non injection perspective.

  6. #6
    sefi89's Avatar Corporal
    Reputation
    9
    Join Date
    Apr 2012
    Posts
    16
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by _Mike View Post
    It's a function. The kind you use by calling it.
    The name of it gives a fairly obvious hint that it's a class method, and looking at it with a disassembler should tell you if it takes any arguments and what they are.
    This don't answer how to use =P

    i'm interesed too how to use

  7. #7
    Bananenbrot's Avatar Contributor
    Reputation
    153
    Join Date
    Nov 2009
    Posts
    384
    Thanks G/R
    1/3
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Well, in programming languages there is often a seperation between executable code and data. The latter is what you operate on (an input string of the user, a constant like pi or more complex stuff like structs which are composites of those POCOs) and the former is the skeleton of your application, functions calling functions, etc. You can optionally specify input data for your function to execute upon, the parameters, and you often get ouput data by calling it. Thus, when someone says 'call "CGUnit_C::OnRightClick" ', you also need to know which parameter data you need to specify. For that, "looking at it with a disassembler should tell you if it takes any arguments and what they are" is a totally sufficient answer. If you can't connect the dots from there, then you probably need to learn reverse engineering instead of expecting to be spoon fed. You should not be writing a more than trivial bot without at least having the motivation to learn reverse engineering.
    You should question yourself when you see that nobody has asked what you are asking for. It's more likely that you didn't see the answer that was clear to anybody else (so it seems like it was for the op) or that you should invest more time into learning disassembly and reverse engineering or other related stuff to get the gist behind what is in this thread.

    Because I don't want to be a destructive *******, here's what your function is about. First, see your function in IDA (open TOM_RUS database, he did all the work for you) and search for sth like "rightclick" in the names window (Alt+T). you'll find the disassembly listing of the function. Because I want to prove a point here, I will not use Hex-Rays' decompiler to do the work for me.

    Code:
    .text:005A1560 CGGameObject_C__OnRightClick proc near  ; CODE XREF: j_CGGameObject_C__OnRightClickj
    .text:005A1560 
    .text:005A1560                 push    edi
    .text:005A1561                 mov     edi, ecx
    .text:005A1563                 mov     ecx, [edi+1C8h]
    .text:005A1569                 mov     eax, [ecx]
    .text:005A156B                 mov     edx, [eax+18h]
    .text:005A156E                 call    edx
    .text:005A1570                 test    al, al
    .text:005A1572                 jz      short loc_5A15B7
    .text:005A1574                 push    esi
    .text:005A1575                 push    0
    .text:005A1577                 push    0
    .text:005A1579                 push    1
    .text:005A157B                 call    CGGameUI__CloseLoot
    .text:005A1580                 call    ClntObjMgrGetActivePlayer
    .text:005A1585                 push    0B2h            ; line
    .text:005A158A                 push    offset aDBuildserve_26 ; "d:\\buildserver\\wow\\4\\work\\wow-code\\bran"...
    .text:005A158F                 push    10h             ; mask
    .text:005A1591                 push    edx
    .text:005A1592                 push    eax             ; guid
    .text:005A1593                 call    ClntObjMgrObjectPtr
    .text:005A1598                 mov     esi, eax
    .text:005A159A                 add     esp, 20h
    .text:005A159D                 test    esi, esi
    .text:005A159F                 jz      short loc_5A15AE
    .text:005A15A1                 call    CGGameUI__IsAutoLooting
    .text:005A15A6                 push    eax
    .text:005A15A7                 mov     ecx, esi
    .text:005A15A9                 call    CGPlayer_C__SetAutoLoot
    .text:005A15AE
    .text:005A15AE loc_5A15AE:                             ; CODE XREF: CGGameObject_C__OnRightClick+3Fj
    .text:005A15AE                 pop     esi
    .text:005A15AF                 mov     ecx, edi
    .text:005A15B1                 pop     edi
    .text:005A15B2                 jmp     CGGameObject_C__Use
    .text:005A15B7 ; ---------------------------------------------------------------------------
    .text:005A15B7
    .text:005A15B7 loc_5A15B7:                             ; CODE XREF: CGGameObject_C__OnRightClick+12j
    .text:005A15B7                 pop     edi
    .text:005A15B8                 retn
    .text:005A15B8 CGGameObject_C__OnRightClick endp
    I highly recommend to follow this in IDA because of highlightning etc.
    Firstly, no usual Function prologue - Wikipedia, the free encyclopedia happens. esp is only accessed one time to grow the stack for a subfunction call, so no arguments are used. This means, the function takes no parameters!
    But that's not all to it. As _Mike already pointed out, OnRightClick is a "class method" to which the c++ calling convention __thiscall is applied. For MSVC this means that the actual this pointer of the class (the magical hidden parameter which enables object oriented paradigms) is passed in ecx to the function, which is why it is valid to dereference it in the 4th instruction without having set a value in it before. So, the appropriate C# delegate would be
    Code:
    [UnmangedFunctionPointer(CallingConvention.ThisCall)]
    public delegate void GameObjectRightClickDelegate(IntPtr this);
    because you obviously need to give it the gameobject instance as a parameter. The return type seems to be void, because it is not used anywhere I looked through (but might actually be an int, you cannot be really sure until you trace down each single call).
    Last edited by Bananenbrot; 04-30-2012 at 02:08 AM.

  8. #8
    sefi89's Avatar Corporal
    Reputation
    9
    Join Date
    Apr 2012
    Posts
    16
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Ty! for info! i will learn more

Similar Threads

  1. [Selling] WTS/WTT League of Legends ( NA ) 50+ Skins with legendary skins
    By pssh in forum General Trading Buy Sell Trade
    Replies: 0
    Last Post: 07-11-2012, 10:03 PM
  2. Problem with Custom Gameobjects
    By Metrickz65 in forum WoW EMU Questions & Requests
    Replies: 5
    Last Post: 03-30-2012, 12:59 AM
  3. Edit skins with gimp/paint/photoshop
    By Gabbabobgabgab in forum WoW ME Questions and Requests
    Replies: 2
    Last Post: 06-19-2010, 08:36 AM
  4. [Autoit][3.1.3] Problem with interact with npcs
    By grigitokarz in forum WoW Memory Editing
    Replies: 1
    Last Post: 08-19-2009, 03:40 PM
  5. [Bot] Skinning With OpenBot FIX
    By Badlah in forum World of Warcraft Bots and Programs
    Replies: 2
    Last Post: 06-07-2008, 07:48 AM
All times are GMT -5. The time now is 10:39 PM. Powered by vBulletin® Version 4.2.3
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. User Alert System provided by Advanced User Tagging (Pro) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.
Google Authenticator verification provided by Two-Factor Authentication (Free) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.
Digital Point modules: Sphinx-based search