delphi Код:
var
Myx, MyY, Myz : integer;
maskval : array [0..100] of variant;
PickupOid:integer;
pickuptimer : ttimer;
procedure OnTimerHandler(sender:tobject);
begin
pickup(PickupOid);
end;
procedure Init; //will be called on script initialization
begin
Myx := 0;
Myy := 0;
Myz := 0;
pickuptimer := ttimer.create(nil);
pickuptimer.interval := 1000;
pickuptimer.enabled := false;
pickuptimer.ontimer := @OnTimerHandler;
end;
procedure Free; //This method calls when script don't need anymore
begin
pickuptimer.free;
end;
procedure Pickup(Oid:integer);
begin
if (myx = 0) and (myy = 0) and (myz = 0) then exit;
//1F=Action:d(ObjectID)d(OrigX)d(OrigY)d(OrigZ)c(ActionID)
WriteMask('cddddc',[$1F, oid, myx, myy, myz, 0]);
SendToServer;
end;
//Primary part of dcript
//calls alltime when l2ph got new packet
begin
if fromserver then
case pck[1] of
#$0C://DropItem:d(PlayerID)d(ObjectID)d(ItemID:Get.Func01)d(X)d(Y)d(Z)d(Stackable)d(Count)d(1)
begin
ReadMask('ddddddddd',2,maskval);
if maskval[2] = 6656 then
begin
pickupoid := maskval[1];
pickuptimer.enabled := true;
OnTimerHandler(nil);
end;
end;
#$12 : //(DeleteObject)
begin
if readd(2) = pickupoid then
begin
pickupoid := 0;
pickuptimer.enabled := false;
end;
end;
end;
if fromclient then
case pck[1] of
#$59:// 59=ValidatePosition:d(X)d(Y)d(Z)d(Heading)d(Data)
begin
ReadMask('ddddd',2,maskval);
myx := maskval[0];
myy := maskval[1];
myz := maskval[2];
end;
end;
end.