вообщем, вот что у меня получилось, возможно коряво конечно, т.к. далеко не программист я, но работает чётко:
uses Classes, SysUtils;
var EquippedBool_0_39, EquippedBool_40_51: boolean;
Equipped_0_39,Equipped_40_51: array [0..20] of Cardinal;
procedure ChangeEquipped_0_39;
var i,j:integer;
begin
Engine.FaceControl(0,false);
for j:=0 to 20 do
if (Equipped_0_39[j]>0) or (Equipped_40_51[j]>0) then
for i:=0 to Inventory.User.Count-1 do
if ((Inventory.User.Items(i).ID=Equipped_0_39[j]) or (Inventory.User.Items(i).ID=Equipped_40_51[j])) and (ItemList.Items(i).Equipped) then
begin
Engine.UseItem(Inventory.User.Items(i).ID);
delay(200);
print('Снимаем вещь с ID='+IntToStr(Inventory.User.Items(i).ID));
end;
for j:=0 to 20 do
if Equipped_0_39[j]>0 then
for i:=0 to Inventory.User.Count-1 do
if ((Inventory.User.Items(i).ID=Equipped_0_39[j]) and (not ItemList.Items(i).Equipped)) then
begin
Engine.UseItem(Inventory.User.Items(i).ID);
delay(200);
print('Одеваем вещь с ID='+IntToStr(Inventory.User.Items(i).ID));
end;
Engine.FaceControl(0,true);
end;
procedure ChangeEquipped_40_51;
var i,j:integer;
begin
Engine.FaceControl(0,false);
for j:=0 to 20 do
if (Equipped_0_39[j]>0) or (Equipped_40_51[j]>0) then
for i:=0 to Inventory.User.Count-1 do
if ((Inventory.User.Items(i).ID=Equipped_0_39[j]) or (Inventory.User.Items(i).ID=Equipped_40_51[j])) and (ItemList.Items(i).Equipped) then
begin
Engine.UseItem(Inventory.User.Items(i).ID);
delay(200);
print('Снимаем вещь с ID='+IntToStr(Inventory.User.Items(i).ID));
end;
for j:=0 to 20 do
if Equipped_40_51[j]>0 then
for i:=0 to Inventory.User.Count-1 do
if (Inventory.User.Items(i).ID=Equipped_40_51[j]) and (not ItemList.Items(i).Equipped) then
begin
Engine.UseItem(Inventory.User.Items(i).ID);
delay(200);
print('Одеваем вещь с ID='+IntToStr(Inventory.User.Items(i).ID));
end;
Engine.FaceControl(0,true);
end;
begin
//Перечисляем вещи по уровням, что будем снимать/одевать
Equipped_0_39[0]:=xxxx1; //ID шмотки
Equipped_0_39[1]:=xxxx2; //ID шмотки
Equipped_0_39[2]:=xxxx3; //ID шмотки
Equipped_0_39[3]:=xxxx4; //ID шмотки
Equipped_0_39[4]:=xxxx5; //ID шмотки
Equipped_0_39[5]:=xxxx6; //ID шмотки
Equipped_40_51[0]:=xxxx1; //ID шмотки
Equipped_40_51[1]:=xxxx2; //ID шмотки
Equipped_40_51[2]:=xxxx3; //ID шмотки
Equipped_40_51[3]:=xxxx7; //ID шмотки
Equipped_40_51[4]:=xxxx8; //ID шмотки
Equipped_40_51[5]:=xxxx9; //ID шмотки
EquippedBool_0_39:=false;
EquippedBool_40_51:=false;
while 1=1 do
begin
if (user.level>0) and (user.level<40) and (EquippedBool_0_39=false) then
begin
ChangeEquipped_0_39;
EquippedBool_0_39:=true;
end;
if (user.level>39) and (user.level<52) and (EquippedBool_40_51=false) then
begin
ChangeEquipped_40_51;
EquippedBool_40_51:=true;
end;
end;
end.
Скрипт сначала снимает тот шмот, ID которого задали в начале (пробегает по всем массивам), затем одевает в соответствии с заданными ID. Процедурки на следующие грейды по аналогии