Для РУОФФ попробуйте правленный скрипт из первого сообщения
delphi Код:
const
Name='lLelee'; // свой ник
MaxEnchLvl=5;
var
Inventory: array[0..79,0..9] of integer;
timer1: TTimer;
count:integer; //- счетчик
procedure Init; //вызывается при включении скрипта
var
i :integer;
begin
count:=1;
timer1:=TTimer.Create(nil);
timer1.OnTimer:=@OnTimer1;
timer1.enabled:=false;
timer1.interval:=1000;
end;
procedure InventoryCreate;
var
i,k: integer;
begin
for i:=0 to 79 do
if (i<ReadH(4)) then begin
Inventory[i,1]:=ReadD(i*76+8); // ObjectId
Inventory[i,2]:=ReadD(i*76+12); // ItemID
Inventory[i,3]:=ReadD(i*76+20); // count
Inventory[i,4]:=ReadH(i*76+24); // itemType2
Inventory[i,5]:=ReadH(i*76+26); // CustType1
Inventory[i,6]:=ReadH(i*76+28); // isEquipped
Inventory[i,7]:=ReadD(i*76+30); // BodyPart
Inventory[i,8]:=ReadH(i*76+34); // EnchantLevel
Inventory[i,9]:=ReadH(i*76+36); // CustType2
end else
for k:=0 to 9 do Inventory[i,k]:=0; // забиваем нулями
end;
procedure InventoryUpdate;
var
i,j,k: integer;
begin
for j:=0 to (ReadH(2)-1) do begin
case pck[j*78+4] of //1add2mod3remove
#$01: k:=0; // add item, запишет на пустую ячейку
#$02: k:=ReadD(j*78+8); // mod item
#$03: begin // remove item, обнулит ячейки удаленного предмета
k:=ReadD(j*78+8);
for i:=0 to 79 do
if (Inventory[i,0]=k) then begin
for k:=0 to 9 do Inventory[i,k]:=0;
exit;
end;
end;
end;
for i:=0 to 79 do
if (Inventory[i,1]=k) then begin
Inventory[i,0]:=ReadH(j*78+6); // itemType1
Inventory[i,1]:=ReadD(j*78+8); // ObjectId
Inventory[i,2]:=ReadD(j*78+12); // ItemID
Inventory[i,3]:=ReadD(j*78+20); // count
Inventory[i,4]:=ReadH(j*78+24); // itemType2
Inventory[i,5]:=ReadH(j*78+26); // CustType1
Inventory[i,6]:=ReadH(j*78+28); // isEquipped
Inventory[i,7]:=ReadD(j*78+30); // BodyPart
Inventory[i,8]:=ReadH(j*78+34); // EnchantLevel
Inventory[i,9]:=ReadH(j*78+36); // CustType2
break;
end;
end;
end;
function GetInv(obj,up,down:integer): integer; // up и down не проверяются
var // 0-itemType1, 1-ObjectId, 2-ItemID, 3-count, 4-itemType2, 5-CustType1, 6-isEquipped, 7-BodyPart, 8-EnchantLevel, 9-CustType2
i: integer;
begin
for i:=0 to 79 do
if (Inventory[i,up]=obj) then begin
Result:=Inventory[i,down];
end;
Result:=-1;
end;
procedure Free; //вызывается при выключении скрипта
begin
timer1.Free;
end;
procedure Say(msg:string);
begin
buf:=hstr('4A 00 00 00 00');
WriteD(2);
WriteS(Name);
WriteS(msg);
SendToClientEx(Name);
end;
procedure OnTimer1(Sender: TObject);
begin
if count=1 then
begin
buf:=hstr('19 2A 42 30 10 00 00 00 00');
count:=2;
end else begin
buf:=hstr('D0 4F 00 AC F4 30 10');
count:=1;
end;
SendToServerEx(Name);
end;
begin
//****************************************************************************
//не обрабатываем пустые пакеты
if pck='' then exit;
//****************************************************************************
if FromServer then case pck[1] of
#$11: InventoryCreate;
#$21: InventoryUpdate;
end;
// 0-itemType1, 1-ObjectId, 2-ItemID, 3-count, 4-itemType2, 5-CustType1, 6-isEquipped, 7-BodyPart, 8-EnchantLevel, 9-CustType2
if GetInv(271643820,1,8)=MaxEnchLvl then // использовала object id
begin
Say('Заточилось!!!');
timer1.enabled:=false;
end;
//****************************************************************************
//чоц дейтсвие "да" для начало спама пакетов
if FromClient and (ConnectName=Name) and (pck=HStr('34 06 00 00 00')) then begin
Say('Старт!!!');
timer1.enabled:=true;
end;
// соц действие "нет" для отключения спама
if FromClient and (ConnectName=Name) and (pck=HStr('34 05 00 00 00')) then begin
Say('Стоп!!!');
timer1.enabled:=false;
end;
end.
В packetst1.ini замените 11 и 21 пакет от сервера на вот эти:
Код:
11=ItemList:h(ShowWindow)h(ListSize:Loop.01.0022)h(ItemType1)d(ObjectID)d(ItemID:Get.Func01)d(LocationSlot)d(Count)h(ItemType2)h(CustomType1)h(isEquipped)d(BodyPart)h(EnchantLevel)h(CustType2)d(AugmentationID)d(Mana)d(AttackAttrElement)d(AttackAttrElementVal)d(DefAttrFire)d(DefAttrWater)d(DefAttrWind)d(DefAttrEarth)d(DefAttrHoly)d(DefAttrUnholy)d(?)
Код:
21=InventoryUpdate:h(Count:Loop.1.0023)h(1add2mod3remove)h(ItemType1)d(ObjectID)d(ItemID:Get.Func01)d(Location)d(Count)h(ItemType2)h(CustomType1)h(isEquipped)d(BodyPart)h(EnchantLevel)h(CustType2)d(AugmentationBonus)d(Mana)d(AttackAttrElement)d(AttackAttrElementVal)d(DefAttrFire)d(DefAttrWater)d(DefAttrWind)d(DefAttrEarth)d(DefAttrHoly)d(DefAttrUnholy)d(?)