Прошу помочь в несложной доработки

Anything and all.

Moderators: Murderator+, Murderator

Post Reply
sn
Posts: 11
Joined: 2005-02-28 11:51:53

Прошу помочь в несложной доработки

Post by sn »

sub vetki()
var x
UO.Set('lasttarget','laststatus')
x=uo.getserial('lasttarget')
uo.findtype("0x0A92")
if uo.findcount() then
uo.drop("1",str(uo.getx(x)-1),str(uo.gety(x)),0,"finditem")
end if
wait(1000)
uo.findtype("0x0A92")
if uo.findcount() then
uo.drop("1",str(uo.getx(x)),str(uo.gety(x)-1),0,"finditem")
end if
wait(1000)
uo.findtype("0x0A92")
if uo.findcount() then
uo.drop("1",str(uo.getx(x)+1),str(uo.gety(x)),0,"finditem")
end if
wait(1000)
uo.findtype("0x0A92")
if uo.findcount() then
uo.drop("1",str(uo.getx(x)),str(uo.gety(x)+1),0,"finditem")
end if
uo.print('DROPPED')
end sub




Есть значится следующий скрипт. Работает нормально, но хотелось бы чтоб он кидал не только определенный тип, а скажем 2-3, тоесть я так понимаю нужно всавить dim[], но я толком не сильно в инжекте разбираюсь.
Выручите пожалуйсто, сделайте как прошу, думаю не слжно.

Заранее блогадарен!
Beyonder
Expert!
Posts: 388
Joined: 2005-04-23 10:19:43
Contact:

Post by Beyonder »

Советую не просто юзать, а сначала понять как он работает чтобы потом было легче самому.

Code: Select all

sub vetki()
  dim DropItems[5] # Массив вещей. Число указывать на 1 больше чем последний индекс
  var DropItemsCnt=5 # Здесь количество элементов массива (не номер последнего а количество)
  DropItems[0]='0x0000' # Вещь 1
  DropItems[1]='0x0000' # Вещь 2
  DropItems[2]='0x0000' # Вещь 3
  DropItems[3]='0x0000' # Вещь 4
  DropItems[4]='0x0000' # Вещь 5
  var x
  var DropCnt=5
  var iDropItem
  x=uo.getserial('laststatus')

  for var iDrop=0 to DropCnt  ## Цикл бросков
    uo.findtype(DropItems[0])  ## Ищем первый обьект
    iDropItem=1 ## Дальше будем искать начиная с второго. (Индекс первого = 0)
    while not UO.FindCount() and iDropItem<DropItemCnt ## Пока ничего не нашли или не перебрали все типы
      uo.findtype(DropItems[iDropItem]) ## Ищем тип вещи с следующим номером
      iDropItem=iDropItem+1 # Номер следующей вещи увеличиваем на 1 чтобы не искать ту-же вещь снова
    wend
   
    if uo.findcount() then
      uo.drop("1",str(uo.getx(x)-1),str(uo.gety(x)),0,"finditem")
    end if
    wait(1000)

    uo.print('DROPPED')
  next
end sub
sn
Posts: 11
Joined: 2005-02-28 11:51:53

Post by sn »

Спасибо, как тут не понять, каждая строка расписана.

Я думаю до y и z я уж как-нить сам :)

Еще раз спасибо!
sn
Posts: 11
Joined: 2005-02-28 11:51:53

Post by sn »

Дас, что-то в этом скрипте все равно не работает, одну ошибку нашел, а вот дальше труднее, ты там не дописал букву одну, но скрипт все равно работает как-то странно он кидает пеки, потом с зебли берет опять кидает и как-то хоотично все это долго перекидывает :)
Beyonder
Expert!
Posts: 388
Joined: 2005-04-23 10:19:43
Contact:

Post by Beyonder »

Хмм...
Может ты не прописал типы вещей?
Ну а вот немного переделанный вариант:

Code: Select all

sub vetki() 
  dim DropItems[5] # Массив вещей. Число указывать на 1 больше чем последний индекс
  var DropItemsCnt=5 # Здесь количество элементов массива (не номер последнего а количество)
  DropItems[0]='0x0000' # Вещь 1
  DropItems[1]='0x0000' # Вещь 2
  DropItems[2]='0x0000' # Вещь 3
  DropItems[3]='0x0000' # Вещь 4
  DropItems[4]='0x0000' # Вещь 5
  var x
  var DropCnt=5
  var iDropItem
  x=uo.getserial('laststatus')

  for var iDrop=0 to DropCnt  ## Цикл бросков
    uo.findtype(DropItems[0],-1,'my')  ## Ищем первый обьект
    iDropItem=1 ## Дальше будем искать начиная с второго. (Индекс первого = 0)
    while not UO.FindCount() and iDropItem<DropItemCnt ## Пока ничего не нашли или не перебрали все типы
      uo.findtype(DropItems[iDropItem],-1,'my') ## Ищем тип вещи с следующим номером
      iDropItem=iDropItem+1 # Номер следующей вещи увеличиваем на 1 чтобы не искать ту-же вещь снова
    wend
   
    if uo.findcount() then
      uo.drop("1",str(uo.getx(x)-1),str(uo.gety(x)),0,"finditem")
    end if
    wait(1000)

    uo.print('DROPPED')
  next
end sub
sn
Posts: 11
Joined: 2005-02-28 11:51:53

Post by sn »

Такс...
while not UO.FindCount() and iDropItem<DropItemCnt ## Пока ничего не нашли или не перебрали все типы

Тут кажись надо исправить DropItemCnt на DropItemsCnt

ЩА посмотрю канает ли этот
Beyonder
Expert!
Posts: 388
Joined: 2005-04-23 10:19:43
Contact:

Post by Beyonder »

Проблемы были потому, что я не понял впринципе что скрипт должен делать :). Я думал что он должен кидать взрывчатку, а оказываеться закидывать сундуками.
Вот нормальный вариант:

Code: Select all

sub vetki() 
  dim DropItems[5] # Массив вещей. Число указывать на 1 больше чем последний индекс
  var DropItemsCnt=5 # Здесь количество элементов массива (не номер последнего а количество)
  DropItems[0]='0x0000' # Вещь 1
  DropItems[1]='0x0000' # Вещь 2
  DropItems[2]='0x0000' # Вещь 3
  DropItems[3]='0x0000' # Вещь 4
  DropItems[4]='0x0000' # Вещь 5
  var x
  var DropCnt=3
  var iDropItem
  x=uo.getserial('laststatus')

  for var iDrop=0 to DropCnt  ## Цикл бросков
    uo.findtype(DropItems[0],-1,'my')  ## Ищем первый обьект
    iDropItem=1 ## Дальше будем искать начиная с второго. (Индекс первого = 0)
    while not UO.FindCount() and iDropItem<DropItemsCnt ## Пока ничего не нашли или не перебрали все типы
      uo.findtype(DropItems[iDropItem],-1,'my') ## Ищем тип вещи с следующим номером
      iDropItem=iDropItem+1 # Номер следующей вещи увеличиваем на 1 чтобы не искать ту-же вещь снова
    wend
   
    if uo.findcount() then
      uo.drop("1",GetFromNum(iDrop,uo.getx(x),1,2),GetFromNum(iDrop,uo.gety(x),0,3),0,"finditem")
    end if
    wait(1000)

    uo.print('DROPPED')
  next
end sub

sub GetFromNum(Num,Val,PlusVal,MinVal)
if Num==PlusVal then
return Val+1
end if
if Num==MinVal then
return Val-1
end if
return Val
end sub
Post Reply