Code: Select all
Program New;
{$Include 'all.inc'}
const
kolvo = 60;
s_reag = $63B851AF ;
rmax = 3;
RB = $59E0BAF7 ;
RBreag = $5DF46819 ;
typemen=$0190;// тип мущины.
typevymen=$0191;// тип женщины.
RunaHome = 1051;
Xhome = 589;
GP = 20000;
NS = $0F88 ;
MR = $0F86 ;
GA = $0F84 ;
GI = $0F85 ;
BP = $0F7A ;
BM = $0F7B ;
SS = $0F8D ;
SA = $0F8C ;
type
regs_rail = array[1..3] of Integer;
DropReag = array[1..9] of Integer;
var
runa : array [1..32] of integer;
r,z:integer;
procedure skidivaem_v_sunduk;
var Regs : DropReag;
b : Integer;
begin
Regs[1]:=$0F88;
Regs[2]:=$0F86;
Regs[3]:=$0F84;
Regs[4]:=$0F85;
Regs[5]:=$0F7A;
Regs[6]:=$0F7B;
Regs[7]:=$0F8D;
Regs[8]:=$0F8C;
Regs[9]:=$0EED;
Useobject(s_reag);
wait(1000);
for b:=1 to 9 do
begin
repeat
findtype(Regs[b],backpack)
if findcount > 0 then
begin
checksave;
MoveItem(FindItem,FindQuantity,s_reag,0,0,0);
wait(800);
end;
until FindType(Regs[b],backpack)=0
end;
AddToSystemJournal('Скинул Реги.');
end;
procedure Reags;
var Reg : regs_rail;
i : Integer;
begin
Reg[1]:=$0F7B;
Reg[2]:=$0F7A;
Reg[3]:=$0F86;
AddToSystemJournal('Берем реги');
Useobject(s_reag);
wait(500);
for i:=1 to 3 do
begin
findtype(Reg[i],backpack)
if (FindCount = 0) or (Count(Reg[i]) < 20) then
begin
findtype(Reg[i],s_reag);
if findcount > 0 then
begin
checksave;
MoveItem(FindItem,50,Backpack,0,0,0);
wait(100);
end;
end;
findtype($0EED,Backpack);
if FindQuantity < 5000 then
begin
findtype($0EED,s_reag);
wait(100);
MoveItem(FindItem,30000,Backpack,0,0,0);
end;
end;
end;
procedure check_mana;
begin
AddToSystemJournal('Проверка маны');
if Mana < 30 then
begin
repeat
useskill('Meditation');
checksave;
wait(10000);
until Mana = Int;
end;
end;
procedure alhmik; // поиск алхимика
var
vendorx,vendory: integer;
x: integer;
FindList: TStringList;
ItemID: Cardinal;
begin
FindDistance:=10;
FindType(typemen,Ground);
FindList := TStringList.Create();
GetFindedList(FindList);
FindType(typevymen,Ground);
GetFindedList(FindList);
for x := 0 to FindList.Count - 1 do
begin
ItemID := StrToint('$' + FindList.Strings[x]);
CheckLag(30000);
Useobject(ItemID);
CheckLag(30000);
if Pos('the Scribe', GetTitle(ItemID)) <> 0 or Pos('the Mage', GetTitle(ItemID)) or Pos('the Alchemist', GetTitle(ItemID)) then
begin
vendorx:=GetX(ItemID);
vendory:=GetY(ItemID);
wait(500);
CheckLag(30000);
wait(500);
CheckLag(30000);
newMoveXY(vendorx,vendory,true,1,true)
CheckLag(30000);
SetAutoBuyDelay(1);
Autobuy(NS,$0000,60);
//Autobuy(BM,$0000,60);
Autobuy(MR,$0000,60);
Autobuy(GA,$0000,60);
//Autobuy(reags,$0000,60);
//Autobuy(reags,$0000,60);
//Autobuy(reags,$0000,60);
//Autobuy(reags,$0000,60);
CheckLag(30000);
UOSay(GetName(ItemID)+' buy');
wait(800);
CheckLag(30000);
end;
end;
FindList.Free();
end;
procedure Recall;
begin
Runa[1] := 1;
Runa[2] := 1; // Nomera run v RB po shahtam [1-16] <Need Setup>
Runa[3] := 5;
Runa[4] := 5; //esli netu stolko run prosto povtorit' neskolko odinakovih
Runa[5] := 9;
Runa[6] := 9;
Runa[7] := 13;
Runa[8] := 13;
Runa[9] := 17;
Runa[10] := 17;
Runa[11] := 21;
Runa[12] := 21;
Runa[13] := 25;
Runa[14] := 25;
Runa[15] := 29;
Runa[16] := 29;
Runa[17] := 33;
Runa[18] := 33;
Runa[19] := 37;
Runa[20] := 37;
Runa[21] := 41;
Runa[22] := 41;
Runa[23] := 45;
Runa[24] := 45;
Runa[25] := 49;
Runa[26] := 49;
Runa[27] := 54;
Runa[28] := 54;
Runa[29] := 59;
Runa[30] := 59;
Runa[31] := 63;
Runa[32] := 63;
for r:=1 to 32 do
begin
CheckLag(10000);
UseObject(RBreag);
wait (1000);
CheckLag(10000);
WaitGump(IntToStr(1042 + Runa[r]));
wait(4000);
check_mana;
alhmik;
r:=r+1;
if (r > 32) then r:=1;
end;
end;
procedure Home;
begin
repeat
checksave;
disarm;
CheckLag(10000);
UseObject(RB);
CheckLag(10000);
wait (1000);
WaitGump(IntToStr(RunaHome));
wait(4000);
if (GetX(self) <> Xhome) then
begin
Raw_move(Random(7), true);
wait(250);
Raw_move(GetDirection(self), true);
wait(500);
end;
until (GetX(self) = Xhome) or dead
skidivaem_v_sunduk;
Reags;
end;
procedure res;
begin
if dead then
begin
CheckLag(10000);
uosay('.rescue');
wait(3000);
Addtosystemjournal('y6uJIu!!!');
end;
end;
begin
repeat
res;
Home;
Recall;
until false
end.
1. На ЗХР вендора неуязвимые и когда они появляются в области видимости, то в журнале мы видим вот такую надпись:
[14:27:37:363] You see: Stephanie the Tailor
[14:27:37:364] You see: [invulnerable]
[14:27:37:523] You see: Stephanie the Tailor
[14:27:37:537] You see: [invulnerable]
В скрипте, когда я получаю имя вендора, при покупке он пишет не "Имя вендора" buy, а [invulberable] buy... Никак не могу решить эту проблему
2. Проблема с реколом по регам. У нас на шарде рунбуки. 2 способа рекола, по зарядам и по регам. По регам быстрее и удобнее, но не удобно вычислять гампы реколов. Гампы реколов по зарядам идут по порядку с 1 по 16 (1025,1026,1027 итд). проковырявшись добрые полчаса, я наконец понял что рекол по регам начинается с 1043 гампа и каждая следующая руна (перелистываются страницы в рунбуке) идет с периодичностью в 4 руны (1043, 1047, 1051 итд) но у меня реколился через одну руну (1, 3, 5 итд.)
В общем, я сначала написал нормально кусок кода с рунами. То есть у меня реколился по номерам гампов. Потом я решил общую цифру (1042) вынести сюда WaitGump(IntToStr(1042 + Runa[r])); . Просто я не знал в чем проблема.
Я решил продублировать, чтобы четные руны повторяли нечетные. Скрипт заработал... но это такое, извините за выражение, у***ще, что аж самому стыдно, а в чем дело не могу понять. Может кто поможет решить проблему?