DoubleClickHook --> OpenPaperdollHook

Get Help on scripting in POL with configurations, config setups, script trouble shooting, etc.
Post Reply
Wraith
New User
Posts: 1
Joined: Sun May 28, 2006 3:56 pm

DoubleClickHook --> OpenPaperdollHook

Post by Wraith »

Greetings...

I've got problem with paperdoll and double click hook.

uopacket.cfg:

Code: Select all

Packet 0x06
{
  Length 5
  ReceiveFunction DoubleClickHook:Paperdoll
}
and doubleclickhook.src:

Code: Select all

use uo;
use os;
use cfgfile;
use polsys;

const OFFSET_CHARID := 1;
const OFFSET_NAME := 5;
const OFFSET_FLAG := 65;


program DoubleClickHook()
	Print("Hooking Double Click Packet 0x06");
	return 1;
endprogram

exported function Paperdoll(character, byref packet )

    var serial := packet.GetInt32(1);
    var objserial;
    var objname;
    var flag;
    
    if (serial == character.serial)
        objname := character.name;
        flag := 0x00; // normal | it's a good flag for character paperdoll? / don't work 
    elseif (serial)
        objserial := SystemFindObjectBySerial(serial);
    endif
    
    if (objserial.IsA(POLCLASS_NPC))
        objname := objserial.name;
        flag := 0x00; // works 
    elseif (objserial.Isa(POLCLASS_MOBILE))
        objname := "[" + objserial.title_race + "]";
        flag := 0x00; // works
    endif
    
    var outpkt := CreatePacket (0x88, 66);
    outpkt.SetInt32(OFFSET_CHARID, serial);
    outpkt.SetString(OFFSET_NAME, objname ,1);
    outpkt.SetInt16(OFFSET_FLAG, flag);

    outpkt.SendPacket(character);
    return 1;
    
endfunction
Opening other characters paperdoll works good. But i can't open myself paperdoll. I don't know what is wrong. Somebody can help?

PS: Sorry for my english :/
User avatar
tekproxy
Forum Regular
Posts: 352
Joined: Thu Apr 06, 2006 5:11 pm

Post by tekproxy »

I have not tested this, but you should get the idea:

Code: Select all

exported function Paperdoll(character, byref packet ) 

	var serial := packet.GetInt32(1); 
	var mobile := SystemFindObjectBySerial(serial);
	var packet := CreatePacket(0x88, 66); // Open Paperdoll
		
	packet.SetInt32(OFFSET_CHARID, serial); // Set serial
		
	// If character has clotheany privelage
	if (mobile.enabled(clotheany) || character.serial == serial)
		// this flag allows character to modify clothing on paperdoll
		// you might also want to put this flag on if they can normally
		// alter other people's clothing
		packet.SetInt16(OFFSET_FLAG, 0x2);
	else
		packet.SetInt16(OFFSET_FLAG, 0);
	endif
		
	if (mobile.IsA(POLCLASS_MOBILE)
		if (mobile.IsA(POLCLASS_NPC)
			packet.SetString(OFFSET_NAME, mobile.name); // No need to null terminate
		else
			packet.SetString(OFFSET_NAME, "[" + mobile.title_race + "]");
		endif
	endif
		
	print("Sending open paperdoll packet: "+packet);
	packet.SendPacket(character); 
	return 1; 
    
endfunction
Post Reply