виноделие, сортировка виноделия
Маршал (59723793)11 летИнквизитор
Inquisitor
Сообщений: 1462
Рег. 16.08.2013
19 марта 2016 13:52
Сообщение #1
может есть у кого скрипт на изготовление вина ? или скрипт на сортировку вина по названию скила?
Зомби в основном надежда на тебя=)
Маршал (73319389)14 летИнквизитор
Inquisitor
Сообщений: 1693
Рег. 19.06.2010
19 марта 2016 14:02
Сообщение #2
;----------------------------------------------------------------------------
; by VeL                                                            The Best
;----------------------------------------------------------------------------
; Загрузка бутылок с элем в пак персонажа.
;
;   Для работы скрипта необходимо открыть контейнер в котором должны находиться
; мешки с элем, запустить макрос LoadAle, скрипт будет по очереди открывать все
; мешки и проверять эль по названиям из NameAle, в случае совпадения переместит
; в пак персонажа.
;
; ВНИМАНИЕ! Скрипт не отслеживает кол-во предметов в паке персонажа!
;----------------------------------------------------------------------------

var NameAle     = 'Inscription|Archery'

sub LoadAle()

var Container   = UO.GetSerial('lastcontainer')

  UO.IgnoreReset()
  while UO.FindType(0x0E76, -1, Container) <> ''
    UO.Ignore('finditem')
    LoadAle('finditem', NameAle)
  wend
  UO.IgnoreReset()
  
  UO.ColorPrint(0x042B, 'Работа скрипта завершена!')
  
end sub

Sub LoadAle(Container, NameAle)

var Index  
  
  OpenBox(Container)
  if UO.FindType(0x099F, 0x0000, Container) <> '' then
    for Index = 0 to UO.FindCount() - 1
      UO.ReceiveObjectName(UO.FindItem(Index), 20000)
      if Compare(NameAle, UO.GetName(UO.FindItem(Index))) then
        MoveItem(UO.FindItem(Index), 1, 'backpack')
      end if
    next
  end if
  
end sub

Sub Compare(NameAle, Name)

var Index

  for Index = 1 to GetWordCount(NameAle, '|')
    if GetWord(NameAle, Index, '|') == Left(Name, Len(GetWord(NameAle, Index, '|'))) then
      return True
    end if
  next
  return False

end sub

Sub OpenBox(Container)

  UO.UseObject(Container)
  if UO.WaitingForJournalText(Now(), 550, "You can't") then
    return False
  end if
  return UO.ReceiveObjectName(Container, 20000)

end sub

Sub MoveItem(Item, Count, Container)

  UO.MoveItem(Item, Count, Container)
  while UO.ContainerOf(Item) <> UO.GetSerial(Container)
    Wait(100)
  wend
  Wait(550)

end sub
Маршал (73319389)14 летИнквизитор
Inquisitor
Сообщений: 1693
Рег. 19.06.2010
19 марта 2016 14:04
Сообщение #3
//----------------------------------------------------------------------------
// by VeL                                                            The Best
//----------------------------------------------------------------------------
// Изготовление "Oak Ale"
//
//   Для работы скрипта необходимо, открыть основной контейнер с пустыми
// мешками и ресурсами, запустить скрипт. Скрипт будет брать ресурсы, кравтить
// эль и складывать его в мешки.
//----------------------------------------------------------------------------

const
  CountItems    = 50;
  
  Ale           = $099F;
  Bag           = $0E76;
  
  MoveDelay     = 550;
  SaveDelay     = 20000;

type
  tItems        = record
    Types       : array of Word;
    Names       : array of string;
    Counts      : array of Word;
  end;

var
  Items         : tItems;
  Container,
  Dest          : Cardinal;
  
procedure InitScript;
begin
  Container := LastContainer;
  Items.Types := [$0F88, $09D1, $0C66, $09D0, $0C7F, $09EC, $0F0E];
  Items.Names := ['Nightshade', 'Grape Bunch', 'Hops Cones', 'Apple', 'Ear Of Corn', 'Jar Of Honey', 'Empty Bottle'];
  Items.Counts := [5, 1, 1, 1, 1, 1, 1];
end;

function OpenContainer(const Container: Cardinal): Boolean;
begin
  Result := Container <> $00000000;
  if Result then
    begin
      UseObject(Container);
      ClickOnObject(Container);
      WaitJournalLine(Now, 'You can''t| items', SaveDelay);
      Result := FoundedParamID = 1;
    end;  
end;

procedure MoveItemDelay(const ObjID: Cardinal; const CountItems: Word; const Dest: Cardinal);
begin
  MoveItem(ObjID, CountItems, Dest, 0, 0, 0);
  while GetParent(ObjID) <> Dest do Wait(100);
  Wait(MoveDelay)
end;

function MoveItemsEx(const ItemType, ItemColor: Word; ItemCount: Word; const Source, Dest: Cardinal): Boolean;
begin
  Result := True;
  while FindTypeEx(ItemType, ItemColor, Source, False) <> $00000000 do
    begin
      MoveItemDelay(FindItem, ItemCount, Dest);
      if ItemCount > FindQuantity then
        ItemCount := ItemCount - FindQuantity
      else
        Exit
    end;
  Result := False
end; { MoveItemsEx }

function AddItems(const ItemType, ItemColor: Word; ItemCount: Word; const Source, Dest: Cardinal): Boolean;
begin
  Result := True;
  if CountEx(ItemType, ItemColor, Dest) < ItemCount then
    if not MoveItemsEx(ItemType, ItemColor, ItemCount - CountEx(ItemType, ItemColor, Dest), Source, Dest) then
      Result := False
end; { AddItems }

procedure UnloadItems(const ObjType, ObjColor: Word; const Source, Dest: Cardinal);
begin
  while FindTypeEx(ObjType, ObjColor, Source, False) <> $00000000 do
    MoveItemDelay(FindItem, 255, Dest);
end;

procedure CraftAle;
var
  Index         : Integer;
begin
  repeat
    for Index := 0 to High(Items.Types) do
      if CountEx(Items.Types[Index], $0000, Backpack) < Items.Counts[Index] then Exit;
    WaitMenu('What sort of potion', 'Oak Ale');
    UseType(Items.Types[0], $0000);
    WaitJournalLineSystem(Now, 'You put|You fail', SaveDelay);
  until Dead;
end;

var  
  Index         : Integer;
  
begin
  InitScript;
  IgnoreReset;
  
  repeat
    
    repeat
      Dest := FindType(Bag, Container);
      if not OpenContainer(Dest) then
        begin
          AddToSystemJournal('Пустые контейнеры закончились!');
          Exit
        end;
      FindType($FFFF, Dest);
      if FindCount + 50 <= 255 then Break
        else Ignore(Dest);
    until Dead;

    CraftAle;    
    UnloadItems(Ale, $0000, Backpack, Dest);
    
    for Index := 0 to High(Items.Types) do
      begin
        if CountEx(Items.Types[Index], $0000, Container) > 0 then
          AddItems(Items.Types[Index], $0000, Items.Counts[Index] * CountItems, Container, Backpack)
        else
          begin
            AddToSystemJournal('Недостаточно "' + Items.Names[Index] + '".');
            Exit
          end;
      end;
  
  until Dead;

end.
Маршал (59723793)11 летИнквизитор
Inquisitor
Сообщений: 1462
Рег. 16.08.2013
19 марта 2016 16:22
Сообщение #4
спасибо огромное!!
Последние посетители (0):

 
Сейчас: 24 ноября 2024 04:38