Colored Effects

Post your Custom Scripts or Packages.

Moderator: POL Developer

Post Reply
User avatar
MontuZ
Forum Regular
Posts: 338
Joined: Fri Feb 10, 2006 8:08 am

Colored Effects

Post by MontuZ »

You'll have to add in your own checks to see if all the params are correct before sending the packet. This is just the basics to get you started.

They've been all tested on POL097-2007-04-15 RC3 Coregina + Client 5.0.7.1 and working properly.

Code: Select all

const PACKET_ID := 0xC0;
const PACKET_SIZE := 36;

const OFFSET_CMD := 0;
const OFFSET_TYPE := 1;
const OFFSET_SOURCE := 2;
const OFFSET_TARGET := 6;
const OFFSET_GRAPHIC := 10;
const OFFSET_SOURCE_X := 12;
const OFFSET_SOURCE_Y := 14;
const OFFSET_SOURCE_Z := 16;
const OFFSET_TARGET_X := 17;
const OFFSET_TARGET_Y := 19;
const OFFSET_TARGET_Z := 21;
const OFFSET_SPEED := 22;
const OFFSET_DURATION := 23;
const OFFSET_UNKNOWN := 24;
const OFFSET_DIRECTION := 26;
const OFFSET_EXPLODES := 27;
const OFFSET_HUE := 28;
const OFFSET_RENDER := 32;

function PlayColoredMovingEffect( source, targ, graphic, speed, loop, explode := 0, hue := 0, transparency := 0 )

	var packet := CreatePacket(PACKET_ID, PACKET_SIZE);

	packet.SetInt8(OFFSET_TYPE, 0);
	packet.SetInt32(OFFSET_SOURCE, source.serial);
	packet.SetInt32(OFFSET_TARGET, targ.serial);
	packet.SetInt16(OFFSET_GRAPHIC, graphic);
	packet.SetInt8(OFFSET_SPEED, speed);
	packet.SetInt8(OFFSET_DURATION, loop);
	packet.SetInt8(OFFSET_EXPLODES, explode);
	packet.SetInt32(OFFSET_HUE, hue);
	packet.SetInt32(OFFSET_RENDER, transparency);

	foreach mobile in (ListMobilesNearLocation(source.x, source.y, source.z, 30, source.realm))
		if ( mobile.connected )
			packet.SendPacket(mobile);
		endif
	endforeach

	return 1;

endfunction

function PlayColoredMovingEffectXYZ( srcx, srcy, srcz, dstx, dsty, dstz, graphic, speed, loop, explode := 0, hue := 0, transparency := 0, realm := _DEFAULT_REALM )

	var packet := CreatePacket(PACKET_ID, PACKET_SIZE);

	packet.SetInt8(OFFSET_TYPE, 0);
	packet.SetInt16(OFFSET_GRAPHIC, graphic);
	packet.SetInt16(OFFSET_SOURCE_X, srcx);
	packet.SetInt16(OFFSET_SOURCE_Y, srcy);
	packet.SetInt8(OFFSET_SOURCE_Z, srcz);
	packet.SetInt16(OFFSET_TARGET_X, dstx);
	packet.SetInt16(OFFSET_TARGET_Y, dsty);
	packet.SetInt8(OFFSET_TARGET_Z, dstz);
	packet.SetInt8(OFFSET_SPEED, speed);
	packet.SetInt8(OFFSET_DURATION, loop);
	packet.SetInt8(OFFSET_EXPLODES, explode);
	packet.SetInt32(OFFSET_HUE, hue);
	packet.SetInt32(OFFSET_RENDER, transparency);

	foreach mobile in (ListMobilesNearLocation(srcx, srcy, srcz, 30, realm))
		if ( mobile.connected )
			packet.SendPacket(mobile);
		endif
	endforeach

	return 1;

endfunction

function PlayColoredObjectCenteredEffect( source, graphic, speed, loop, hue := 0, transparency := 0 )

	var packet := CreatePacket(PACKET_ID, PACKET_SIZE);

	packet.SetInt8(OFFSET_TYPE, 3);
	packet.SetInt32(OFFSET_SOURCE, source.serial);
	packet.SetInt16(OFFSET_GRAPHIC, graphic);
	packet.SetInt8(OFFSET_SPEED, speed);
	packet.SetInt8(OFFSET_DURATION, loop);
	packet.SetInt32(OFFSET_HUE, hue);
	packet.SetInt32(OFFSET_RENDER, transparency);

	packet.SendPacket(source);

	foreach mobile in (ListMobilesNearLocation(source.x, source.y, source.z, 30, source.realm))
		if ( mobile.connected )
			packet.SendPacket(mobile);
		endif
	endforeach

	return 1;

endfunction

function PlayColoredStationaryEffect( srcx, srcy, srcz, graphic, speed, loop, hue := 0, transparency := 0, realm := _DEFAULT_REALM )

	var packet := CreatePacket(PACKET_ID, PACKET_SIZE);

	packet.SetInt8(OFFSET_TYPE, 2);
	packet.SetInt16(OFFSET_GRAPHIC, graphic);
	packet.SetInt16(OFFSET_SOURCE_X, srcx);
	packet.SetInt16(OFFSET_SOURCE_Y, srcy);
	packet.SetInt8(OFFSET_SOURCE_Z, srcz);
	packet.SetInt8(OFFSET_SPEED, speed);
	packet.SetInt8(OFFSET_DURATION, loop);
	packet.SetInt32(OFFSET_HUE, hue);
	packet.SetInt32(OFFSET_RENDER, transparency);

	foreach mobile in (ListMobilesNearLocation(srcx, srcy, srcz, 30, realm))
		if ( mobile.connected )
			packet.SendPacket(mobile);
		endif
	endforeach

	return 1;

endfunction
Post Reply