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).