PDA

Просмотр полной версии : [скрипт] Передача всех ресурсов через трэйд


sinles
21.01.2010, 14:08
Вот написал скрипт который может передавать все ваши ресурсы другому персонажу через трэйд.
Подходите к тому кому хотите передать ресурсы и нажимаете эмоцию Blow. Отправляется запрос на торговлю, когда обмен начнется ваш клиент будет по очереди выкладывать все ресурсы (с интервалом в 1сек что бы не палится).
В скрипте ничего менять не надо
Запустить можно прямо перед тем как начнете торговлю (обязательно только выбрать цель с которой торговать после запуска).

// for T1 pakets
// включаем скрипт, выбираем цель для торговли, нажимаем эмоцию Блоу.
// После открытия трэйда скрипт будет выкладывать вещи в трэйд, со скоростью один стак в секунду :)
var
active:boolean;
myOID,TargetOID,TTOID : integer;
Name: string;
itemOIDs, itemCount:array[1..200] of integer;
first, last : integer;
putT:TTimer;

procedure Init;
begin
active:=false;

putT:=TTimer.Create(nil);
putT.OnTimer:=@Put;
putT.enabled:=false;
putT.interval:=1000;
end;

procedure Free;
begin
end;

procedure Put;
begin
if last=first then
begin
putT.enabled:=false;
active:=false;
msg('Thet"s all');
exit;
end;
AddTradeItem(itemOIDs[first], itemCount[first]);
inc(first);
putT.enabled:=true;
end;

procedure TradeStart;
var
i, j, ListCount : integer;
TOID, ObjectID, ItemID, Count, :integer;
val: array[0..20] of integer;
begin
j:=2;
ReadMask('dh', j, val);
if (TTOID=val[0]) and active then begin
msg('TradeStart');
last:=1;
first:=1;
for i:=1 to val[1] do
begin
//val = 1 - ObjectID, 2 - ItemID, 3 - Count
ReadMask('hdddhhdhhhdddddddd', j, val);
case val[2] of
1864..1895, 4039..4048: begin //ресы
itemOIDs[last]:=val[1];
itemCount[last]:=val[3];
inc(last);
end;
end;
end;
msg(inttostr(last) + ' items to trade');
Put;
end;
end;

procedure TradeRequest(OID:integer);
begin
buf:=#$1A;
WriteD(OID);
SendToServerEx(Name);
end;

procedure AddTradeItem(OID, Count : integer);
begin
buf:=#$1B;
WriteD(1);
WriteD(OID);
WriteD(Count);
SendToServerEx(Name);
end;

procedure msg(msg:string); //отправка системных сообщений клиенту
begin
buf:=#$4A;
WriteD(0);
WriteD(10);
WriteS('');
WriteS(msg);
SendToClientEx(Name);
end;

begin
if FromServer then
case pck[1] of
#$B9: TargetOID:=ReadD(2); //MyTargetSelected
#$14: TradeStart;

end;

if FromClient then
case pck[1] of
#$34://socialactionreq
begin
case readd(2) of
$07: begin
active:=true;
TTOID:=TargetOID;
Name:=ConnectName;
msg('Ask for trade');
TradeRequest(TTOID);
pck:='';
end;
end;
end;
end;
end.

QaK
23.01.2010, 00:10
sinles, добавь в начало скрипта описание действий для инициализации скрипта и хроники.