Forum in READ ONLY mode! All questions and discussions on Discord official server, invite link: https://discord.gg/VxsGzJ7

Возврат заполненных бодов тейлора и приём новых RunUO

Only working scripts
Post Reply
Half-Life
Novice
Novice
Posts: 86
Joined: 30.10.2012 12:06
Location: Одесса
Contact:

Возврат заполненных бодов тейлора и приём новых RunUO

Post by Half-Life »

ChangeTailorBODs

Code: Select all

Program ChangeTailorBODs;
{
Autor: Half-Life;
Description: Скрипт для сдачи бодов тейлора в луне. Потому что в луне можно реварды сразу в банк скидывать. Запускаете скрипт, таргетом на вендора, потом таргетом на полную книгу и таргетом на пустую книгу. В конце работы скрипта ткань полученная за боды, обесцвечивается и скидывается в сумку для использования при заполнении новых бодов.
UOStealthClientVersion: 6.2.1;
Warning! Будьте бдительны! - Администрация многих игровых серверов враждебно относится к использованию стелс клиента на своих серверах. Заподозрив вас в использовании стелс клиента и других неправославных программ они начинают сатанеть и в порыве слепой ярости могут попасть по вам Банхаммером;
}
const
RestockBag=$40087344; // ID мешка куда сбрасывать обесцвеченную ткань.
DyeTub=$400E3A21; // ID краски.
BODType=$2258; // Тип бода.
ClothType=$1767; // Тип ткани.
GoldType=$0EED; // Золото
WaitTime=500;
WaitLag=10000;
WaitCycles=7;

var
BOD,Vendor,BulkSource,BulkDestination,BankBox:Cardinal;

Procedure TargetVendor;
var
VendorName:String;
Res:Boolean;
begin
  ClientPrint('Укажите вендора');
  While not Res and not dead do
  begin
    ClientRequestObjectTarget;
    WaitForClientTargetResponse(50000);
    if ClientTargetResponsePresent then
    Vendor:=ClientTargetResponse.ID;
    VendorName:=GetCliloc(Vendor);
    Wait(WaitTime);
    if VendorName <> '' then Res:=True;
  end;
  UoSay(VendorName);
  UoSay('bank');
end;

Procedure TargetBulkSource;
var
Res:Boolean;
begin
  ClientPrint('Укажите откуда брать боды');
  While not Res and not dead do
  begin
    ClientRequestObjectTarget;
    WaitForClientTargetResponse(50000);
    if ClientTargetResponsePresent then
    BulkSource:=ClientTargetResponse.ID;
    if BulkSource <> 0 then Res:=True;
  end;
  UseObject(BulkSource);
  Wait(WaitTime);
  CheckLag(WaitLag);
  If GetGumpID(GetGumpsCount-1)<>$54F555DF then TargetBulkSource;
  WaitGump('1');
  Wait(WaitTime);
  CheckLag(WaitLag);
  WaitGump('3');
  Wait(WaitTime);
  CheckLag(WaitLag);
  WaitGump('0');
  Wait(WaitTime);
  CheckLag(WaitLag);
  while IsGump do CloseSimpleGump(GetGumpsCount-1);
end;

Procedure TargetBulkDestination;
var
Res:Boolean;
begin
  ClientPrint('и куда ложить');
  While not Res and not dead do
  begin
    ClientRequestObjectTarget;
    WaitForClientTargetResponse(50000);
    if ClientTargetResponsePresent then
    BulkDestination:=ClientTargetResponse.ID;
    if BulkDestination <> 0 then Res:=True;
  end;
end;

procedure GetBOD;
var
StartTime:TDateTime;
begin
  ClearJournal;
  StartTime:=Now;
  CheckLag(WaitLag);
  SetContextMenuHook(Vendor, 1);
  RequestContextMenu(Vendor);
  Wait(250);
  if InJournalBetweenTimes('An offer', StartTime, Now) > 0 then Exit;
  If GetGumpID(GetGumpsCount-1)<>$9BADE6EA then GetBOD;
  WaitGump('1');
  Wait(250);
  CheckLag(WaitLag);
  FindType(BODType, backpack);
  while FindCount > 0 do begin
    MoveItem(finditem,1,BulkDestination,0,0,0);
    Wait(250);
    CheckLag(WaitLag);
    FindType(BODType, backpack);
  end;
  while IsGump do CloseSimpleGump(GetGumpsCount-1);
end;

procedure SearchBOD;
var
StartTime:TDateTime;
begin
  StartTime:=Now;
  FindType(BODType, backpack);
  if (finditem<>0) then
  begin
    BOD:=finditem;
  end
  else begin
    UseObject(BulkSource);
    Wait(250);
    CheckLag(10000);
    if InJournalBetweenTimes('The book is empty.', StartTime, Now) > 0 then begin
      AddToSystemJournal('Закончились Боды');
      Terminated:=False;
      Exit;
    end;
    If GetGumpID(GetGumpsCount-1)<>$54F555DF then SearchBOD;
    Waitgump('5');
    Wait(500);
    while IsGump do CloseSimpleGump(GetGumpsCount-1);
    FindType(BODType, backpack);
    BOD:=FindItem;
  end;
  while FindCount > 0 do begin
    MoveItem(FindItem,1,Vendor,0,0,0);
    Wait(WaitTime*2);
    FindType(BODType, backpack);
  end;
end;

procedure DropResourse;
begin
  FindType(ClothType, backpack);
  While (FindQuantity > 1) do begin
    MoveItem(FindItem,FindFullQuantity,BankBox,0,0,0);
    Wait(WaitTime);
    FindType(ClothType, backpack);
  end;
  FindType(GoldType, backpack);
  While (FindQuantity > 1) do begin
    MoveItem(FindItem,FindFullQuantity,BankBox,0,0,0);
    Wait(WaitTime);
    FindType(GoldType, backpack);
  end;
end;

procedure UncolorRewards;
begin
  FindType(ClothType, BankBox);
  While (FindQuantity > 1) do begin
    UseObject(DyeTub);
    Wait(250);
    TargetToObject(FindItem);
    MoveItem(FindItem,FindFullQuantity,RestockBag,0,0,0);
    Wait(WaitTime);
    FindType(ClothType, BankBox);
  end;
end;

begin
  AddGumpIgnoreByID(4063159494);
  BankBox:=ObjAtLayer(BankLayer);
  if not Connected then begin
    Connect;
    Wait(10000);
  end;
  While IsGump do CloseSimpleGump(GetGumpsCount-1);
  CheckLag(WaitLag);
  Terminated:=True;
  TargetVendor;
  TargetBulkSource;
  TargetBulkDestination;
  while Terminated do begin
    if Dead then Halt;
    if not Connected() then begin
      Connect();
      Wait(10000);
      Continue;
    end;
    GetBOD;
    DropResourse;
    SearchBOD;
    if not Terminated then Continue;
  end;
  UncolorRewards;
end.
drabadan
Expert
Expert
Posts: 730
Joined: 13.12.2012 17:35
Contact:

Re: Возврат заполненных бодов тейлора и приём новых RunUO

Post by drabadan »

отличный скрипт!
yan.karelia
Posts: 1
Joined: 01.03.2015 16:37

Re: Возврат заполненных бодов тейлора и приём новых RunUO

Post by yan.karelia »

Half-Life wrote:
ChangeTailorBODs

Code: Select all

Program ChangeTailorBODs;
{
Autor: Half-Life;
Description: Скрипт для сдачи бодов тейлора в луне. Потому что в луне можно реварды сразу в банк скидывать. Запускаете скрипт, таргетом на вендора, потом таргетом на полную книгу и таргетом на пустую книгу. В конце работы скрипта ткань полученная за боды, обесцвечивается и скидывается в сумку для использования при заполнении новых бодов.
UOStealthClientVersion: 6.2.1;
Warning! Будьте бдительны! - Администрация многих игровых серверов враждебно относится к использованию стелс клиента на своих серверах. Заподозрив вас в использовании стелс клиента и других неправославных программ они начинают сатанеть и в порыве слепой ярости могут попасть по вам Банхаммером;
}
const
RestockBag=$40087344; // ID мешка куда сбрасывать обесцвеченную ткань.
DyeTub=$400E3A21; // ID краски.
BODType=$2258; // Тип бода.
ClothType=$1767; // Тип ткани.
GoldType=$0EED; // Золото
WaitTime=500;
WaitLag=10000;
WaitCycles=7;

var
BOD,Vendor,BulkSource,BulkDestination,BankBox:Cardinal;

Procedure TargetVendor;
var
VendorName:String;
Res:Boolean;
begin
  ClientPrint('Укажите вендора');
  While not Res and not dead do
  begin
    ClientRequestObjectTarget;
    WaitForClientTargetResponse(50000);
    if ClientTargetResponsePresent then
    Vendor:=ClientTargetResponse.ID;
    VendorName:=GetCliloc(Vendor);
    Wait(WaitTime);
    if VendorName <> '' then Res:=True;
  end;
  UoSay(VendorName);
  UoSay('bank');
end;

Procedure TargetBulkSource;
var
Res:Boolean;
begin
  ClientPrint('Укажите откуда брать боды');
  While not Res and not dead do
  begin
    ClientRequestObjectTarget;
    WaitForClientTargetResponse(50000);
    if ClientTargetResponsePresent then
    BulkSource:=ClientTargetResponse.ID;
    if BulkSource <> 0 then Res:=True;
  end;
  UseObject(BulkSource);
  Wait(WaitTime);
  CheckLag(WaitLag);
  If GetGumpID(GetGumpsCount-1)<>$54F555DF then TargetBulkSource;
  WaitGump('1');
  Wait(WaitTime);
  CheckLag(WaitLag);
  WaitGump('3');
  Wait(WaitTime);
  CheckLag(WaitLag);
  WaitGump('0');
  Wait(WaitTime);
  CheckLag(WaitLag);
  while IsGump do CloseSimpleGump(GetGumpsCount-1);
end;

Procedure TargetBulkDestination;
var
Res:Boolean;
begin
  ClientPrint('и куда ложить');
  While not Res and not dead do
  begin
    ClientRequestObjectTarget;
    WaitForClientTargetResponse(50000);
    if ClientTargetResponsePresent then
    BulkDestination:=ClientTargetResponse.ID;
    if BulkDestination <> 0 then Res:=True;
  end;
end;

procedure GetBOD;
var
StartTime:TDateTime;
begin
  ClearJournal;
  StartTime:=Now;
  CheckLag(WaitLag);
  SetContextMenuHook(Vendor, 1);
  RequestContextMenu(Vendor);
  Wait(250);
  if InJournalBetweenTimes('An offer', StartTime, Now) > 0 then Exit;
  If GetGumpID(GetGumpsCount-1)<>$9BADE6EA then GetBOD;
  WaitGump('1');
  Wait(250);
  CheckLag(WaitLag);
  FindType(BODType, backpack);
  while FindCount > 0 do begin
    MoveItem(finditem,1,BulkDestination,0,0,0);
    Wait(250);
    CheckLag(WaitLag);
    FindType(BODType, backpack);
  end;
  while IsGump do CloseSimpleGump(GetGumpsCount-1);
end;

procedure SearchBOD;
var
StartTime:TDateTime;
begin
  StartTime:=Now;
  FindType(BODType, backpack);
  if (finditem<>0) then
  begin
    BOD:=finditem;
  end
  else begin
    UseObject(BulkSource);
    Wait(250);
    CheckLag(10000);
    if InJournalBetweenTimes('The book is empty.', StartTime, Now) > 0 then begin
      AddToSystemJournal('Закончились Боды');
      Terminated:=False;
      Exit;
    end;
    If GetGumpID(GetGumpsCount-1)<>$54F555DF then SearchBOD;
    Waitgump('5');
    Wait(500);
    while IsGump do CloseSimpleGump(GetGumpsCount-1);
    FindType(BODType, backpack);
    BOD:=FindItem;
  end;
  while FindCount > 0 do begin
    MoveItem(FindItem,1,Vendor,0,0,0);
    Wait(WaitTime*2);
    FindType(BODType, backpack);
  end;
end;

procedure DropResourse;
begin
  FindType(ClothType, backpack);
  While (FindQuantity > 1) do begin
    MoveItem(FindItem,FindFullQuantity,BankBox,0,0,0);
    Wait(WaitTime);
    FindType(ClothType, backpack);
  end;
  FindType(GoldType, backpack);
  While (FindQuantity > 1) do begin
    MoveItem(FindItem,FindFullQuantity,BankBox,0,0,0);
    Wait(WaitTime);
    FindType(GoldType, backpack);
  end;
end;

procedure UncolorRewards;
begin
  FindType(ClothType, BankBox);
  While (FindQuantity > 1) do begin
    UseObject(DyeTub);
    Wait(250);
    TargetToObject(FindItem);
    MoveItem(FindItem,FindFullQuantity,RestockBag,0,0,0);
    Wait(WaitTime);
    FindType(ClothType, BankBox);
  end;
end;

begin
  AddGumpIgnoreByID(4063159494);
  BankBox:=ObjAtLayer(BankLayer);
  if not Connected then begin
    Connect;
    Wait(10000);
  end;
  While IsGump do CloseSimpleGump(GetGumpsCount-1);
  CheckLag(WaitLag);
  Terminated:=True;
  TargetVendor;
  TargetBulkSource;
  TargetBulkDestination;
  while Terminated do begin
    if Dead then Halt;
    if not Connected() then begin
      Connect();
      Wait(10000);
      Continue;
    end;
    GetBOD;
    DropResourse;
    SearchBOD;
    if not Terminated then Continue;
  end;
  UncolorRewards;
end.

выдаёт ошибку
21:56:08:981 [tlr]: Compiling
21:56:08:994 [tlr]: Compiler: [Error] (F:\Ultima Online (The World)\euox215\1111.sc at 126:7): Unknown identifier 'Terminated'
21:56:08:996 [tlr]: Compiling failed
21:56:08:998 [tlr]: Script 1111.sc stopped successfuly
StraG
Posts: 6
Joined: 14.07.2016 23:31

Re: Возврат заполненных бодов тейлора и приём новых RunUO

Post by StraG »

yan.karelia wrote:
Half-Life wrote:
ChangeTailorBODs

Code: Select all

Program ChangeTailorBODs;
{
Autor: Half-Life;
Description: Скрипт для сдачи бодов тейлора в луне. Потому что в луне можно реварды сразу в банк скидывать. Запускаете скрипт, таргетом на вендора, потом таргетом на полную книгу и таргетом на пустую книгу. В конце работы скрипта ткань полученная за боды, обесцвечивается и скидывается в сумку для использования при заполнении новых бодов.
UOStealthClientVersion: 6.2.1;
Warning! Будьте бдительны! - Администрация многих игровых серверов враждебно относится к использованию стелс клиента на своих серверах. Заподозрив вас в использовании стелс клиента и других неправославных программ они начинают сатанеть и в порыве слепой ярости могут попасть по вам Банхаммером;
}
const
RestockBag=$40087344; // ID мешка куда сбрасывать обесцвеченную ткань.
DyeTub=$400E3A21; // ID краски.
BODType=$2258; // Тип бода.
ClothType=$1767; // Тип ткани.
GoldType=$0EED; // Золото
WaitTime=500;
WaitLag=10000;
WaitCycles=7;

var
BOD,Vendor,BulkSource,BulkDestination,BankBox:Cardinal;

Procedure TargetVendor;
var
VendorName:String;
Res:Boolean;
begin
  ClientPrint('Укажите вендора');
  While not Res and not dead do
  begin
    ClientRequestObjectTarget;
    WaitForClientTargetResponse(50000);
    if ClientTargetResponsePresent then
    Vendor:=ClientTargetResponse.ID;
    VendorName:=GetCliloc(Vendor);
    Wait(WaitTime);
    if VendorName <> '' then Res:=True;
  end;
  UoSay(VendorName);
  UoSay('bank');
end;

Procedure TargetBulkSource;
var
Res:Boolean;
begin
  ClientPrint('Укажите откуда брать боды');
  While not Res and not dead do
  begin
    ClientRequestObjectTarget;
    WaitForClientTargetResponse(50000);
    if ClientTargetResponsePresent then
    BulkSource:=ClientTargetResponse.ID;
    if BulkSource <> 0 then Res:=True;
  end;
  UseObject(BulkSource);
  Wait(WaitTime);
  CheckLag(WaitLag);
  If GetGumpID(GetGumpsCount-1)<>$54F555DF then TargetBulkSource;
  WaitGump('1');
  Wait(WaitTime);
  CheckLag(WaitLag);
  WaitGump('3');
  Wait(WaitTime);
  CheckLag(WaitLag);
  WaitGump('0');
  Wait(WaitTime);
  CheckLag(WaitLag);
  while IsGump do CloseSimpleGump(GetGumpsCount-1);
end;

Procedure TargetBulkDestination;
var
Res:Boolean;
begin
  ClientPrint('и куда ложить');
  While not Res and not dead do
  begin
    ClientRequestObjectTarget;
    WaitForClientTargetResponse(50000);
    if ClientTargetResponsePresent then
    BulkDestination:=ClientTargetResponse.ID;
    if BulkDestination <> 0 then Res:=True;
  end;
end;

procedure GetBOD;
var
StartTime:TDateTime;
begin
  ClearJournal;
  StartTime:=Now;
  CheckLag(WaitLag);
  SetContextMenuHook(Vendor, 1);
  RequestContextMenu(Vendor);
  Wait(250);
  if InJournalBetweenTimes('An offer', StartTime, Now) > 0 then Exit;
  If GetGumpID(GetGumpsCount-1)<>$9BADE6EA then GetBOD;
  WaitGump('1');
  Wait(250);
  CheckLag(WaitLag);
  FindType(BODType, backpack);
  while FindCount > 0 do begin
    MoveItem(finditem,1,BulkDestination,0,0,0);
    Wait(250);
    CheckLag(WaitLag);
    FindType(BODType, backpack);
  end;
  while IsGump do CloseSimpleGump(GetGumpsCount-1);
end;

procedure SearchBOD;
var
StartTime:TDateTime;
begin
  StartTime:=Now;
  FindType(BODType, backpack);
  if (finditem<>0) then
  begin
    BOD:=finditem;
  end
  else begin
    UseObject(BulkSource);
    Wait(250);
    CheckLag(10000);
    if InJournalBetweenTimes('The book is empty.', StartTime, Now) > 0 then begin
      AddToSystemJournal('Закончились Боды');
      Terminated:=False;
      Exit;
    end;
    If GetGumpID(GetGumpsCount-1)<>$54F555DF then SearchBOD;
    Waitgump('5');
    Wait(500);
    while IsGump do CloseSimpleGump(GetGumpsCount-1);
    FindType(BODType, backpack);
    BOD:=FindItem;
  end;
  while FindCount > 0 do begin
    MoveItem(FindItem,1,Vendor,0,0,0);
    Wait(WaitTime*2);
    FindType(BODType, backpack);
  end;
end;

procedure DropResourse;
begin
  FindType(ClothType, backpack);
  While (FindQuantity > 1) do begin
    MoveItem(FindItem,FindFullQuantity,BankBox,0,0,0);
    Wait(WaitTime);
    FindType(ClothType, backpack);
  end;
  FindType(GoldType, backpack);
  While (FindQuantity > 1) do begin
    MoveItem(FindItem,FindFullQuantity,BankBox,0,0,0);
    Wait(WaitTime);
    FindType(GoldType, backpack);
  end;
end;

procedure UncolorRewards;
begin
  FindType(ClothType, BankBox);
  While (FindQuantity > 1) do begin
    UseObject(DyeTub);
    Wait(250);
    TargetToObject(FindItem);
    MoveItem(FindItem,FindFullQuantity,RestockBag,0,0,0);
    Wait(WaitTime);
    FindType(ClothType, BankBox);
  end;
end;

begin
  AddGumpIgnoreByID(4063159494);
  BankBox:=ObjAtLayer(BankLayer);
  if not Connected then begin
    Connect;
    Wait(10000);
  end;
  While IsGump do CloseSimpleGump(GetGumpsCount-1);
  CheckLag(WaitLag);
  Terminated:=True;
  TargetVendor;
  TargetBulkSource;
  TargetBulkDestination;
  while Terminated do begin
    if Dead then Halt;
    if not Connected() then begin
      Connect();
      Wait(10000);
      Continue;
    end;
    GetBOD;
    DropResourse;
    SearchBOD;
    if not Terminated then Continue;
  end;
  UncolorRewards;
end.

выдаёт ошибку
21:56:08:981 [tlr]: Compiling
21:56:08:994 [tlr]: Compiler: [Error] (F:\Ultima Online (The World)\euox215\1111.sc at 126:7): Unknown identifier 'Terminated'
21:56:08:996 [tlr]: Compiling failed
21:56:08:998 [tlr]: Script 1111.sc stopped successfuly

Тоже самое.Скрипт начинается и тут же выключается не доходя до выбора вендора.(
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: Возврат заполненных бодов тейлора и приём новых RunUO

Post by Vizit0r »

var
BOD,Vendor,BulkSource,BulkDestination,BankBox:Cardinal;

добавить
Terminated : Boolean;
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
StraG
Posts: 6
Joined: 14.07.2016 23:31

Re: Возврат заполненных бодов тейлора и приём новых RunUO

Post by StraG »

Vizit0r wrote:var
BOD,Vendor,BulkSource,BulkDestination,BankBox:Cardinal;

добавить
Terminated : Boolean;
Добавил.Скрипт не крашит ,но при этом никаких действий не происходит. Может кто поможет?(((
MuDaCk
Apprentice
Apprentice
Posts: 393
Joined: 10.10.2006 0:03
Contact:

Re: Возврат заполненных бодов тейлора и приём новых RunUO

Post by MuDaCk »

ChangeTailorBODs

Code: Select all

 Program ChangeTailorBODs;
{
Autor: Half-Life;
Description: Скрипт для сдачи бодов тейлора в луне. Потому что в луне можно реварды сразу в банк скидывать. Запускаете скрипт, таргетом на вендора, потом таргетом на полную книгу и таргетом на пустую книгу. В конце работы скрипта ткань полученная за боды, обесцвечивается и скидывается в сумку для использования при заполнении новых бодов.
UOStealthClientVersion: 6.2.1;
Warning! Будьте бдительны! - Администрация многих игровых серверов враждебно относится к использованию стелс клиента на своих серверах. Заподозрив вас в использовании стелс клиента и других неправославных программ они начинают сатанеть и в порыве слепой ярости могут попасть по вам Банхаммером;
}
const
RestockBag=$40087344; // ID мешка куда сбрасывать обесцвеченную ткань.
DyeTub=$400E3A21; // ID краски.
BODType=$2258; // Тип бода.
ClothType=$1767; // Тип ткани.
GoldType=$0EED; // Золото
WaitTime=500;
WaitLag=10000;
WaitCycles=7;

var
BOD,Vendor,BulkSource,BulkDestination,BankBox:Cardinal;
Terminated : boolean;

Procedure TargetVendor;
var
VendorName:String;
Res:Boolean;
begin
  ClientPrint('Укажите вендора');
  While not Res and not dead do
  begin
    ClientRequestObjectTarget;
    WaitForClientTargetResponse(50000);
    if ClientTargetResponsePresent then
    Vendor:=ClientTargetResponse.ID;
    VendorName:=GetCliloc(Vendor);
    Wait(WaitTime);
    if VendorName <> '' then Res:=True;
  end;
  UoSay(VendorName);
  UoSay('bank');
end;

Procedure TargetBulkSource;
var
Res:Boolean;
begin
  ClientPrint('Укажите откуда брать боды');
  While not Res and not dead do
  begin
    ClientRequestObjectTarget;
    WaitForClientTargetResponse(50000);
    if ClientTargetResponsePresent then
    BulkSource:=ClientTargetResponse.ID;
    if BulkSource <> 0 then Res:=True;
  end;
  UseObject(BulkSource);
  Wait(WaitTime);
  CheckLag(WaitLag);
  If GetGumpID(GetGumpsCount-1)<>$54F555DF then TargetBulkSource;
  WaitGump('1');
  Wait(WaitTime);
  CheckLag(WaitLag);
  WaitGump('3');
  Wait(WaitTime);
  CheckLag(WaitLag);
  WaitGump('0');
  Wait(WaitTime);
  CheckLag(WaitLag);
    While (IsGump and IsGumpCanBeClosed(GetGumpsCount-1))  do CloseSimpleGump(GetGumpsCount-1);
end;

Procedure TargetBulkDestination;
var
Res:Boolean;
begin
  ClientPrint('и куда ложить');
  While not Res and not dead do
  begin
    ClientRequestObjectTarget;
    WaitForClientTargetResponse(50000);
    if ClientTargetResponsePresent then
    BulkDestination:=ClientTargetResponse.ID;
    if BulkDestination <> 0 then Res:=True;
  end;
end;

procedure GetBOD;
var
StartTime:TDateTime;
begin
  ClearJournal;
  StartTime:=Now;
  CheckLag(WaitLag);
  SetContextMenuHook(Vendor, 1);
  RequestContextMenu(Vendor);
  Wait(250);
  if InJournalBetweenTimes('An offer', StartTime, Now) > 0 then Exit;
  If GetGumpID(GetGumpsCount-1)<>$9BADE6EA then GetBOD;
  WaitGump('1');
  Wait(250);
  CheckLag(WaitLag);
  FindType(BODType, backpack);
  while FindCount > 0 do begin
    MoveItem(finditem,1,BulkDestination,0,0,0);
    Wait(250);
    CheckLag(WaitLag);
    FindType(BODType, backpack);
  end;
    While (IsGump and IsGumpCanBeClosed(GetGumpsCount-1))  do CloseSimpleGump(GetGumpsCount-1);
end;

procedure SearchBOD;
var
StartTime:TDateTime;
begin
  StartTime:=Now;
  FindType(BODType, backpack);
  if (finditem<>0) then
  begin
    BOD:=finditem;
  end
  else begin
    UseObject(BulkSource);
    Wait(250);
    CheckLag(10000);
    if InJournalBetweenTimes('The book is empty.', StartTime, Now) > 0 then begin
      AddToSystemJournal('Закончились Боды');
      Terminated:=False;
      Exit;
    end;
    If GetGumpID(GetGumpsCount-1)<>$54F555DF then SearchBOD;
    Waitgump('5');
    Wait(500);
      While (IsGump and IsGumpCanBeClosed(GetGumpsCount-1))  do CloseSimpleGump(GetGumpsCount-1);
    FindType(BODType, backpack);
    BOD:=FindItem;
  end;
  while FindCount > 0 do begin
    MoveItem(FindItem,1,Vendor,0,0,0);
    Wait(WaitTime*2);
    FindType(BODType, backpack);
  end;
end;

procedure DropResourse;
begin
  FindType(ClothType, backpack);
  While (FindQuantity > 1) do begin
    MoveItem(FindItem,FindFullQuantity,BankBox,0,0,0);
    Wait(WaitTime);
    FindType(ClothType, backpack);
  end;
  FindType(GoldType, backpack);
  While (FindQuantity > 1) do begin
    MoveItem(FindItem,FindFullQuantity,BankBox,0,0,0);
    Wait(WaitTime);
    FindType(GoldType, backpack);
  end;
end;

procedure UncolorRewards;
begin
  FindType(ClothType, BankBox);
  While (FindQuantity > 1) do begin
    UseObject(DyeTub);
    Wait(250);
    TargetToObject(FindItem);
    MoveItem(FindItem,FindFullQuantity,RestockBag,0,0,0);
    Wait(WaitTime);
    FindType(ClothType, BankBox);
  end;
end;

begin
  AddGumpIgnoreByID(4063159494);
  BankBox:=ObjAtLayer(BankLayer);
  if not Connected then begin
    Connect;
    Wait(10000);
  end;
  While (IsGump and IsGumpCanBeClosed(GetGumpsCount-1))  do CloseSimpleGump(GetGumpsCount-1);
  CheckLag(WaitLag);
  Terminated:=True;
  TargetVendor;
  TargetBulkSource;
  TargetBulkDestination;
  while Terminated do begin
    if Dead then Halt;
    if not Connected() then begin
      Connect();
      Wait(10000);
      Continue;
    end;
    GetBOD;
    DropResourse;
    SearchBOD;
    if not Terminated then Continue;
  end;
  UncolorRewards;
end.
теперь будет работать.
вот что сделал

Code: Select all

While (IsGump and IsGumpCanBeClosed(GetGumpsCount-1)) do CloseSimpleGump(GetGumpsCount-1);
My name is Игорёшка Image
Пишу скрипты за едуImage
StraG
Posts: 6
Joined: 14.07.2016 23:31

Re: Возврат заполненных бодов тейлора и приём новых RunUO

Post by StraG »

MuDaCk wrote:
ChangeTailorBODs

Code: Select all

 Program ChangeTailorBODs;
{
Autor: Half-Life;
Description: Скрипт для сдачи бодов тейлора в луне. Потому что в луне можно реварды сразу в банк скидывать. Запускаете скрипт, таргетом на вендора, потом таргетом на полную книгу и таргетом на пустую книгу. В конце работы скрипта ткань полученная за боды, обесцвечивается и скидывается в сумку для использования при заполнении новых бодов.
UOStealthClientVersion: 6.2.1;
Warning! Будьте бдительны! - Администрация многих игровых серверов враждебно относится к использованию стелс клиента на своих серверах. Заподозрив вас в использовании стелс клиента и других неправославных программ они начинают сатанеть и в порыве слепой ярости могут попасть по вам Банхаммером;
}
const
RestockBag=$40087344; // ID мешка куда сбрасывать обесцвеченную ткань.
DyeTub=$400E3A21; // ID краски.
BODType=$2258; // Тип бода.
ClothType=$1767; // Тип ткани.
GoldType=$0EED; // Золото
WaitTime=500;
WaitLag=10000;
WaitCycles=7;

var
BOD,Vendor,BulkSource,BulkDestination,BankBox:Cardinal;
Terminated : boolean;

Procedure TargetVendor;
var
VendorName:String;
Res:Boolean;
begin
  ClientPrint('Укажите вендора');
  While not Res and not dead do
  begin
    ClientRequestObjectTarget;
    WaitForClientTargetResponse(50000);
    if ClientTargetResponsePresent then
    Vendor:=ClientTargetResponse.ID;
    VendorName:=GetCliloc(Vendor);
    Wait(WaitTime);
    if VendorName <> '' then Res:=True;
  end;
  UoSay(VendorName);
  UoSay('bank');
end;

Procedure TargetBulkSource;
var
Res:Boolean;
begin
  ClientPrint('Укажите откуда брать боды');
  While not Res and not dead do
  begin
    ClientRequestObjectTarget;
    WaitForClientTargetResponse(50000);
    if ClientTargetResponsePresent then
    BulkSource:=ClientTargetResponse.ID;
    if BulkSource <> 0 then Res:=True;
  end;
  UseObject(BulkSource);
  Wait(WaitTime);
  CheckLag(WaitLag);
  If GetGumpID(GetGumpsCount-1)<>$54F555DF then TargetBulkSource;
  WaitGump('1');
  Wait(WaitTime);
  CheckLag(WaitLag);
  WaitGump('3');
  Wait(WaitTime);
  CheckLag(WaitLag);
  WaitGump('0');
  Wait(WaitTime);
  CheckLag(WaitLag);
    While (IsGump and IsGumpCanBeClosed(GetGumpsCount-1))  do CloseSimpleGump(GetGumpsCount-1);
end;

Procedure TargetBulkDestination;
var
Res:Boolean;
begin
  ClientPrint('и куда ложить');
  While not Res and not dead do
  begin
    ClientRequestObjectTarget;
    WaitForClientTargetResponse(50000);
    if ClientTargetResponsePresent then
    BulkDestination:=ClientTargetResponse.ID;
    if BulkDestination <> 0 then Res:=True;
  end;
end;

procedure GetBOD;
var
StartTime:TDateTime;
begin
  ClearJournal;
  StartTime:=Now;
  CheckLag(WaitLag);
  SetContextMenuHook(Vendor, 1);
  RequestContextMenu(Vendor);
  Wait(250);
  if InJournalBetweenTimes('An offer', StartTime, Now) > 0 then Exit;
  If GetGumpID(GetGumpsCount-1)<>$9BADE6EA then GetBOD;
  WaitGump('1');
  Wait(250);
  CheckLag(WaitLag);
  FindType(BODType, backpack);
  while FindCount > 0 do begin
    MoveItem(finditem,1,BulkDestination,0,0,0);
    Wait(250);
    CheckLag(WaitLag);
    FindType(BODType, backpack);
  end;
    While (IsGump and IsGumpCanBeClosed(GetGumpsCount-1))  do CloseSimpleGump(GetGumpsCount-1);
end;

procedure SearchBOD;
var
StartTime:TDateTime;
begin
  StartTime:=Now;
  FindType(BODType, backpack);
  if (finditem<>0) then
  begin
    BOD:=finditem;
  end
  else begin
    UseObject(BulkSource);
    Wait(250);
    CheckLag(10000);
    if InJournalBetweenTimes('The book is empty.', StartTime, Now) > 0 then begin
      AddToSystemJournal('Закончились Боды');
      Terminated:=False;
      Exit;
    end;
    If GetGumpID(GetGumpsCount-1)<>$54F555DF then SearchBOD;
    Waitgump('5');
    Wait(500);
      While (IsGump and IsGumpCanBeClosed(GetGumpsCount-1))  do CloseSimpleGump(GetGumpsCount-1);
    FindType(BODType, backpack);
    BOD:=FindItem;
  end;
  while FindCount > 0 do begin
    MoveItem(FindItem,1,Vendor,0,0,0);
    Wait(WaitTime*2);
    FindType(BODType, backpack);
  end;
end;

procedure DropResourse;
begin
  FindType(ClothType, backpack);
  While (FindQuantity > 1) do begin
    MoveItem(FindItem,FindFullQuantity,BankBox,0,0,0);
    Wait(WaitTime);
    FindType(ClothType, backpack);
  end;
  FindType(GoldType, backpack);
  While (FindQuantity > 1) do begin
    MoveItem(FindItem,FindFullQuantity,BankBox,0,0,0);
    Wait(WaitTime);
    FindType(GoldType, backpack);
  end;
end;

procedure UncolorRewards;
begin
  FindType(ClothType, BankBox);
  While (FindQuantity > 1) do begin
    UseObject(DyeTub);
    Wait(250);
    TargetToObject(FindItem);
    MoveItem(FindItem,FindFullQuantity,RestockBag,0,0,0);
    Wait(WaitTime);
    FindType(ClothType, BankBox);
  end;
end;

begin
  AddGumpIgnoreByID(4063159494);
  BankBox:=ObjAtLayer(BankLayer);
  if not Connected then begin
    Connect;
    Wait(10000);
  end;
  While (IsGump and IsGumpCanBeClosed(GetGumpsCount-1))  do CloseSimpleGump(GetGumpsCount-1);
  CheckLag(WaitLag);
  Terminated:=True;
  TargetVendor;
  TargetBulkSource;
  TargetBulkDestination;
  while Terminated do begin
    if Dead then Halt;
    if not Connected() then begin
      Connect();
      Wait(10000);
      Continue;
    end;
    GetBOD;
    DropResourse;
    SearchBOD;
    if not Terminated then Continue;
  end;
  UncolorRewards;
end.
теперь будет работать.
вот что сделал

Code: Select all

While (IsGump and IsGumpCanBeClosed(GetGumpsCount-1)) do CloseSimpleGump(GetGumpsCount-1);

Работает на ура!Спасибо вам,добрые люди:)))
Post Reply