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