Yessir.
You are right, I explained poorly.
We are using method where we first hook the singleclick and collect some data from object the player clicked. After that we send player a PrintTextAbovePrivate() with modified content. More optimal way would be creating and sending text packet instead of making core do it, but that's not part of this tuto.
Example of uopacket.cfg and singleclick.src below.
:singleclick:uopacket (.cfg)
Code:
Packet 0x09
{
Length 5
ReceiveFunction singleclick:singleclickhook
}
:singleclick:singleclick (.src)
Code:
use uo;
program singleclick ( )
print("Hooking singleclickpacket");
return 1;
endprogram
exported function singleclickhook( who, byref packet )
// Packet contains only the serial
var object := SystemFindObjectBySerial(packet.GetInt32(1));
if (object.isa(POLCLASS_ITEM))
// So player clicked an item. Change text color to item's color.
// Of course color can be anything, this is just an example.
var color := object.color;
PrintTextAbovePrivate(object, object.desc, who, _DEFAULT_TEXT_FONT, color);
// --> player clicks green axe, he/she will get 'an axe' with green color.
// Return 1 so core won't react.
return 1;
endif
// If it was not an item, core will do.
return 0;
endfunction
Code is mostly pseudo, but should give you the idea.