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

Help

тут можно задать вопрос по скриптингу
Irohay
Neophyte
Neophyte
Posts: 42
Joined: 20.03.2011 16:51

Help

Post by Irohay »

почему этот скрипт всё на пол выкидывает а не то что там прописано?

procedure DropAll;
var
i, BID, GID, BCount, GCount, MCount, BColor : integer;
Color : array [0..9] of cardinal;
begin
if not Connected then exit;
if dead then exit;
//OpenBackpack;
FindTypeEx($19B9, $FFFF, Backpack, false);
if FindCount > 0 then
begin

Color[0] := $0602; // нижка
Color[1] := $0000; //
Color[2] := $0386; //
Color[3] := $01BF; //
Color[4] := $03E9; //
Color[5] := $0590; //
Color[6] := $0162; //
Color[7] := $0160; //
Color[8] := $0455; //
Color[9] := $0161; //manazit
for i := 0 to 9 do
begin
if not Connected then exit;
FindTypeEx($19B9, Color, Backpack, false);
if FindCount > 0 then
begin
BCount := FindQuantity;
BID := finditem;
repeat
if not Connected then exit;
FindTypeEx($19B9, Color, Ground, false);
if FindQuantity >= 60000 then Ignore(finditem);
until FindQuantity < 60000;
if FindQuantity = 0 then
begin
MoveItem(BID, 0, Ground, GetX(self),GetY(self),GetZ(self));
end;
if FindQuantity < 60000 then
begin
GCount := FindQuantity;
GID := finditem;
end;
if GCount > 0 then
begin
MCount := 60000 - GCount;
if MCount >= BCount then MCount := 0;
MoveItem(BID, MCount, GID, 0,0,0);
end;
end;
end;
repeat
if not Connected then exit;
FindTypeEx($19B9, $FFFF, Backpack, false);
if FindCount > 0 then
begin
BCount := FindQuantity;
BID := finditem;
BColor := GetColor(finditem);
end;
repeat
if not Connected then exit;
FindTypeEx($19B9, BColor, Ground, false);
if FindQuantity >= 60000 then Ignore(finditem);
until FindQuantity < 60000;
if FindQuantity = 0 then
begin
MoveItem(BID, 0, Ground, GetX(self),GetY(self),GetZ(self));
GCount := 0;
end;
if (FindQuantity < 60000) and (FindQuantity > 0) then
begin
GCount := FindQuantity;
GID := finditem;
end;
if GCount > 0 then
begin
MCount := 60000 - GCount;
if MCount >= BCount then MCount := 0;
MoveItem(BID, MCount, GID, 0,0,0);
end;
FindTypeEx($19B9, $FFFF, Backpack, false);
until FindCount <= 0;
end;
end;
Irohay
Neophyte
Neophyte
Posts: 42
Joined: 20.03.2011 16:51

Re: Help

Post by Irohay »

что не кто не поможет?
drabadan
Expert
Expert
Posts: 730
Joined: 13.12.2012 17:35
Contact:

Re: Help

Post by drabadan »

ты уперся в сброс руды на пол, а почему? В сундук же проще, да и выглядит аккуратнее...
Gauhar
Novice
Novice
Posts: 87
Joined: 08.07.2008 17:40

Re: Help

Post by Gauhar »

Code: Select all

procedure DropAll;
var
   i, BID, GID, BCount, GCount, MCount, BColor : integer;
   Color : array [0..9] of cardinal;
begin
   if not Connected then exit;
   if dead then exit;
   //OpenBackpack;
   FindTypeEx($19B9, $FFFF, Backpack, false);
   if FindCount > 0 then
   begin 
      Color[0] := $0602; // нижка
      Color[1] := $0000; //
      Color[2] := $0386; //
      Color[3] := $01BF; //
      Color[4] := $03E9; //
      Color[5] := $0590; //
      Color[6] := $0162; //
      Color[7] := $0160; //
      Color[8] := $0455; //
      Color[9] := $0161; //manazit
      for i := 0 to 9 do
      begin
         if not Connected then exit;
         FindTypeEx($19B9, Color[i], Backpack, false);
// Вместо:
         if FindCount > 0 then
// будет лучше: while FindCount > 0 do 
         begin
            BCount := FindQuantity;
            BID := finditem;
            repeat
               if not Connected then exit;
               FindTypeEx($19B9, Color[i], Ground, false);
               if FindQuantity >= 60000 then Ignore(finditem);
            until FindQuantity < 60000;
            if FindQuantity = 0 then
            begin
// Не знаю где как, но не везде разрешено бросать на землю себе под ноги.
               MoveItem(BID, 0, Ground, GetX(self),GetY(self),GetZ(self)); 
            end; 
            if FindQuantity < 60000 then
            begin
               GCount := FindQuantity;
               GID := finditem;
            end;
            if GCount > 0 then
            begin
               MCount := 60000 - GCount;
               if MCount >= BCount then MCount := 0;
               MoveItem(BID, MCount, GID, 0,0,0);
// После выгрузки в паке еще может остаться руда того же цвета.
            end;
// Если вместо if использовать while, то нужно добавить:
// FindTypeEx($19B9, Color[i], Backpack, false);
         end;
      end;
// Непонятна для чего нужен нижеследующий код, если, по идее, выгрузка уже сделана.
// Но, да ладно, хозяину видней. Продолжим.  
      repeat
         if not Connected then exit;
         FindTypeEx($19B9, $FFFF, Backpack, false);
         if FindCount > 0 then
         begin
            BCount := FindQuantity;
            BID := finditem;
            BColor := GetColor(finditem);
         end;
// Если нет руды, то стоит ли искать кучу в которую бросать то не знаю что?
         repeat 
            if not Connected then exit;
            FindTypeEx($19B9, BColor, Ground, false);
            if FindQuantity >= 60000 then Ignore(finditem);
         until FindQuantity < 60000;
// Руды в паке нет, кучу не нашли. Что получится далее? 
         if FindQuantity = 0 then
         begin
// Что-то выросим под ноги.
            MoveItem(BID, 0, Ground, GetX(self),GetY(self),GetZ(self));
            GCount := 0;
         end; 
// Руды нет, но зато есть куча. И что?
         if (FindQuantity < 60000) and (FindQuantity > 0) then
         begin
            GCount := FindQuantity;
            GID := finditem;
         end;
         if GCount > 0 then
         begin
            MCount := 60000 - GCount;
            if MCount >= BCount then MCount := 0;
// Бросаем в кучу то не знаем что.
            MoveItem(BID, MCount, GID, 0,0,0);
         end;
         FindTypeEx($19B9, $FFFF, Backpack, false);
// Пока в паке персонажа или на полу есть руда, все из пака бросаем на пол.
      until FindCount <= 0;
   end;
end;
Irohay
Neophyte
Neophyte
Posts: 42
Joined: 20.03.2011 16:51

Re: Help

Post by Irohay »

drabadan wrote:ты уперся в сброс руды на пол, а почему? В сундук же проще, да и выглядит аккуратнее...
да проста, у нас на серваке тока 50к веса мона в сундук положить :(
Irohay
Neophyte
Neophyte
Posts: 42
Joined: 20.03.2011 16:51

Re: Help

Post by Irohay »

может есть у кого тока что бы он в сундук скидавал и на стелс и что бы можно было в скрипт добавить?

sub pereklad2()
var i,j
Dim OreType[4]
OreType[01]='0x19B7' ## 1 ore
OreType[02]='0x19BA' ## 2 ore
OreType[03]='0x19B8' ## 3 ore
OreType[04]='0x19B9' ## 4 and more ore

Dim OreColor[11] ## iannea oaaoia o?aoaaie ?oau
OreColor[1] = '0x0162' ### Gold
OreColor[2] = '0x0000' ### iron
OreColor[3] = '0x0455' ### Obsid
OreColor[4] = '0x01BF' ### Bronze
OreColor[5] = '0x0386' ### Cool
OreColor[6] = '0x0590' ### vaugzit
OreColor[7] = '0x0161' ### manazit
OreColor[8] = '0x03E9' ### silvait
OreColor[9] = '0x0602' ### Coper
OreColor[10] = '0x04A4' ### Eerite
OreColor[11] = '0x049C' ### Melian

for j=1 to 4
for i=1 to 11
uo.findtype(OreType[j],OreColor,'backpack')
while uo.findcount()>0
uo.moveitem('finditem','-1','ground')
wait(200)
uo.findtype(OreType[j],OreColor,'backpack')
wend
next
next
end sub
nah nah
Developer
Developer
Posts: 414
Joined: 13.07.2011 11:23
Contact:

Re: Help

Post by nah nah »

Code: Select all

from time import sleep


ore_types = (0x19b7, 0x19ba, 0x19b8, 0x19b9)
ore_colors = (0x0000, 0x0162, 0x0455, 0x01bf, 0x0386,
              0x0590, 0x0161, 0x03e9, 0x0602, 0x04a4, 0x049c)

def перекладка_руды():
    for _type in ore_types:
        for _color in ore_colors:
            item = FindTypeEx(_type, _color, Backpack(), True):
            if item:    
                container = FindTypeEx(_type, _color, Ground(), False):
                if container:
                    newMoveXY(GetX(container), GetY(container), False, 1, True)
                    MoveItem(item, -1, container, 0, 0, 0)
                else
                    DropHere(item)
                sleep(1.000)
Irohay
Neophyte
Neophyte
Posts: 42
Joined: 20.03.2011 16:51

Re: Help

Post by Irohay »

nah nah wrote:

Code: Select all

from time import sleep


ore_types = (0x19b7, 0x19ba, 0x19b8, 0x19b9)
ore_colors = (0x0000, 0x0162, 0x0455, 0x01bf, 0x0386,
              0x0590, 0x0161, 0x03e9, 0x0602, 0x04a4, 0x049c)

def перекладка_руды():
    for _type in ore_types:
        for _color in ore_colors:
            item = FindTypeEx(_type, _color, Backpack(), True):
            if item:    
                container = FindTypeEx(_type, _color, Ground(), False):
                if container:
                    newMoveXY(GetX(container), GetY(container), False, 1, True)
                    MoveItem(item, -1, container, 0, 0, 0)
                else
                    DropHere(item)
                sleep(1.000)
спасибо вот тока не понел куда иго сунуть? :(
nah nah
Developer
Developer
Posts: 414
Joined: 13.07.2011 11:23
Contact:

Re: Help

Post by nah nah »

Это то, что нужно, но это написано на питоне. к сожалению я не очень знаток по паскалю.
Irohay
Neophyte
Neophyte
Posts: 42
Joined: 20.03.2011 16:51

Re: Help

Post by Irohay »

nah nah wrote:Это то, что нужно, но это написано на питоне. к сожалению я не очень знаток по паскалю.
если бы я понил как и куда сунуть иго было бы супер
drabadan
Expert
Expert
Posts: 730
Joined: 13.12.2012 17:35
Contact:

Re: Help

Post by drabadan »

Irohay wrote:
nah nah wrote:Это то, что нужно, но это написано на питоне. к сожалению я не очень знаток по паскалю.
если бы я понил как и куда сунуть иго было бы супер
это фрагмент внешнего скрипта, его не надо никуда пихать, перепиши под паскаль и все будет в ажуре.
Irohay
Neophyte
Neophyte
Posts: 42
Joined: 20.03.2011 16:51

Re: Help

Post by Irohay »

drabadan wrote:
Irohay wrote:
nah nah wrote:Это то, что нужно, но это написано на питоне. к сожалению я не очень знаток по паскалю.
если бы я понил как и куда сунуть иго было бы супер
это фрагмент внешнего скрипта, его не надо никуда пихать, перепиши под паскаль и все будет в ажуре.
блин если бы я знал бы паскаль я бы тут тупые вопросы не задавал и людям голову не парил и так уже скрипт на 1000 сторк навтыкал осталось малое с рудой разабратся и что бы элемов убивал
drabadan
Expert
Expert
Posts: 730
Joined: 13.12.2012 17:35
Contact:

Re: Help

Post by drabadan »

Irohay wrote:
если бы я понил как и куда сунуть иго было бы супер

это фрагмент внешнего скрипта, его не надо никуда пихать, перепиши под паскаль и все будет в ажуре.

блин если бы я знал бы паскаль я бы тут тупые вопросы не задавал и людям голову не парил и так уже скрипт на 1000 сторк навтыкал осталось малое с рудой разабратся и что бы элемов убивал
1000 строк... едрить колотить там фарм машина...
тупые вопросы тупыми вопросами, тебе примеров тьму написали. Мысли шире - начни с малого, тебе же надо научиться перекидывать руду из контейнера в контейнер, для етого есть МовеИтем(); попробуй посмотреть процедуры разгрузок разных скриптов, тут их тьма. Хер к носу можно прикинуть и набросать ;)
drabadan
Expert
Expert
Posts: 730
Joined: 13.12.2012 17:35
Contact:

Re: Help

Post by drabadan »

Code: Select all

Program New;

const
 HOME_CHEST = $000001;

var
 OreType : Array[0..3] of Word;

procedure MoveArray(Container : Cardinal; Items : Array of Word);
var
 i : Integer;
begin
 for i := 0 to Length(Items)-1 do
  while FindType(Items[i], Backpack) > 0 do
   begin
    MoveItem(FindItem, 0, Container, 0,0,0);
    Wait(1000);
    CheckLag(60000);
   end;
end;

//так использовать у себя в скрипте
begin
//инициализируем массив типов для поиска в бекпаке
 OreType[0] := $19B7;
 OreType[1] := $19BA;
 OreType[2] := $19B8;
 OreType[3] := $19B9;
//перекладываем процедуркой, первый параметр - куда, второй - массив типов. 
 MoveArray(HOME_CHEST, OreType);
end.
За какой хрен бы там нужны были бы еще цвета я не знаю. У себя не тестировал попробуй прийти с паком руды к сундуку и запустить, предварительно добавив айдишку своего сундука в константу.
Irohay
Neophyte
Neophyte
Posts: 42
Joined: 20.03.2011 16:51

Re: Help

Post by Irohay »

drabadan wrote:

Code: Select all

Program New;

const
 HOME_CHEST = $000001;

var
 OreType : Array[0..3] of Word;

procedure MoveArray(Container : Cardinal; Items : Array of Word);
var
 i : Integer;
begin
 for i := 0 to Length(Items)-1 do
  while FindType(Items[i], Backpack) > 0 do
   begin
    MoveItem(FindItem, 0, Container, 0,0,0);
    Wait(1000);
    CheckLag(60000);
   end;
end;

//так использовать у себя в скрипте
begin
//инициализируем массив типов для поиска в бекпаке
 OreType[0] := $19B7;
 OreType[1] := $19BA;
 OreType[2] := $19B8;
 OreType[3] := $19B9;
//перекладываем процедуркой, первый параметр - куда, второй - массив типов. 
 MoveArray(HOME_CHEST, OreType);
end.
За какой хрен бы там нужны были бы еще цвета я не знаю. У себя не тестировал попробуй прийти с паком руды к сундуку и запустить, предварительно добавив айдишку своего сундука в константу.
это как я понел он всю руду будет скидавать в сундук, а мне надо что бы тока вышку в сундук скидавал у нас 17 видов руды и 50к веса мона в сундук скидавать так что надо что бы он в сундук тока выху скинул а нишку он будет окло дома скидавать и стакавать на стак уже есть скрипт
Post Reply