Code: Select all
Program Order;
//Made by Shinma
//Положите в сумку книгу для заказов.
//Вбейте ID NPC у которого брать заказы в переменную vendor_ID.
//запустите скрипт.
//между получением булок бот уходит в офлайн. Это не баг так задумано.
//тестировал на RunUO
//запускайте хоть 40 ботов. так же этот скрипт удобно прикрутить к глобальному скрипту.
const
//////////////////////////////
/////////////////////////////
vendor_ID=$000203C1 ; // <<<<<<<<<< СЮДА вбить ID НПС у которого брать булки.
///////////////////////////////////////// ПОЛУЧИТЬ его можно командой ,info в игре.
/////////////////////////////
////////////////////////////
BulkOrderDeed=$2258 ;
BulkOrderBook=$2259 ;
getwordinc_IgnoreQuotes = false;
var
Time,jtime: TDateTime;
m,v,vv,i,j,TimeDisc:integer;
s,ss:string;
procedure init;
begin
FindVertical := 5;
SetPauseScriptOnDisconnectStatus(false);
SetARStatus(false);
m:=0;
WaitGump('1');
TimeDisc:=0;
end;
procedure givemeorder;
var
a:integer;
begin
wait(2000);
checklag(60000);
//AddToSystemJournal('3');
while GetDistance(vendor_ID)>1 do
begin
//AddToSystemJournal('4');
NewMoveXY(GetX(vendor_ID),GetY(vendor_ID),true,1,true);
wait(2000);
end;
checklag(60000);
a := GetGumpsCount;
wait(2000);
//AddToSystemJournal('5');
RequestContextMenu(vendor_ID);
wait(2000);
checklag(60000);
//AddToSystemJournal('6');
SetContextMenuHook(vendor_ID,3);
wait(2000);
if a < GetGumpsCount then
begin
checklag(60000);
WaitGump('1');
wait(10000);
v:=Count(BulkOrderDeed);
end;
//if a = GetGumpsCount then
while InJournalBetweenTimes('available in about',jtime,now)<0 do
begin
checklag(60000);
AddToSystemJournal('Опять чтото работает через жопу, но мы нашли болт.');
wait(2000);
RequestContextMenu(vendor_ID);
wait(2000);
checklag(60000);
//AddToSystemJournal('6');
SetContextMenuHook(vendor_ID,3);
wait(2000);
end;
end;
procedure mainchar;
begin
//SetGlobal('stealth',' startchar', '0');
end;
//За эту функцию спасибо NoSilence
function GetWord(const Text: string; BreakSymbol: char; Index: integer):string;
var
i: integer;
quote, lastbreak: boolean;
begin
lastbreak:= true;
quote:= false;
result:= '';
if Index > 0 then
for i:= 1 to Length(Text) do
if (Text[i] = #27) and (not getwordinc_IgnoreQuotes) then
quote:= not quote
else if (Text[i] = BreakSymbol) and (not quote) then begin
if not lastbreak then begin
Index:= Index - 1;
lastbreak:= true;
end;
if Index < 1 then break;
end else begin
lastbreak:= false;
if Index = 1 then
result:= result + Text[i];
end
else
for i:= Length(Text) downto 1 do
if (Text[i] = #27) and (not getwordinc_IgnoreQuotes) then
quote:= not quote
else if (Text[i] = BreakSymbol) and (not quote) then begin
if not lastbreak then begin
Index:= Index + 1;
lastbreak:= true;
end;
if Index > -1 then break;
end else begin
lastbreak:= false;
if Index = -1 then
result:= Text[i] + result;
end
end;
procedure checkbolck;
begin
while count(BulkOrderDeed)>0 do
begin
MoveItem(FindType(BulkOrderDeed,backpack),1,FindType(BulkOrderBook,backpack), 0,0,0);
wait(500);
end;
end;
begin
init;
while not dead do
begin
while not Connected do
begin
Connect;
wait(10000);
end;
wait(2000);
checkbolck;
for i:=0 to GetGumpsCount do
begin
wait(500);
CloseSimpleGump(i);
end;
AddToSystemJournal('Булок = '+inttostr(Count(BulkOrderDeed)));
v:=Count(BulkOrderDeed);
vv:=Count(BulkOrderDeed);
jtime:=now;
repeat
givemeorder;
AddToSystemJournal('Жду булку');
if InJournalBetweenTimes('available in about',jtime,now)>=0 then
begin
s:=Journal(InJournalBetweenTimes('available in about',jtime,now));
ss:=GetWord(s, ' ', 10);
TimeDisc:=strtoint(ss);
AddToSystemJournal('Ptint Number ss ='+ss);
v:=Count(BulkOrderDeed);
end
else
AddToSystemJournal('Хер тебе а не булка, чтото не сработало.');
until dead or (TimeDisc>2);
AddToSystemJournal('2');
wait(2000);
AddToSystemJournal('Булок = '+inttostr(Count(BulkOrderDeed)));
Disconnect;
//SetGlobal( 'stealth','TestVar2', (TimeToStr(now+EncodeTime(0,TimeDisc,0,0))));
AddToSystemJournal('Начало = '+TimeToStr(now));
if TimeDisc > 59 then
begin
wait((TimeDisc-59)*60*1000);
AddToSystemJournal('Превышение лимита времени ='+ inttostr(TimeDisc));
TimeDisc:=59;
end;
AddToSystemJournal('Конец = '+TimeToStr(now+EncodeTime(0,TimeDisc,0,0)));
while m < (TimeDisc*60) do
begin
Time:=now;
wait(1000);
//SetGlobal( 'stealth','TestVar1', (TimeToStr(now)));
m:=m+1;
end;
TimeDisc:=0;
m:=0;
end;
end.