Colored Effects
Posted: Fri Jun 01, 2007 11:07 am
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.
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