Плиз Помогите!

Ask for help

Moderators: Murderator+, Murderator

Juicy Fruit
Posts: 820
Joined: 2011-06-11 19:54:23

Re: Плиз Помогите!

Post by Juicy Fruit »

Code: Select all

uo.getstatus(obj)
Wait(100)
uo.gethp(id)
Last edited by Juicy Fruit on 2013-06-01 23:37:05, edited 1 time in total.
Incorrect User
Posts: 949
Joined: 2011-05-23 00:33:30

Re: Плиз Помогите!

Post by Incorrect User »

Спасибо, работает :o
Juicy Fruit
Posts: 820
Joined: 2011-06-11 19:54:23

Re: Плиз Помогите!

Post by Juicy Fruit »

С задержкой помудри, там от коннекта зависит. Если хороший - 100 должно хватить.
А по-хорошему - сделать динамическую задержку, пока не обновится статус, но не помню, инжа может видить сообщения инжекта в журнале или нет, если да - по журналу, там обычно пишется ник того, у кого запрашиваешь статус.
Incorrect User
Posts: 949
Joined: 2011-05-23 00:33:30

Re: Плиз Помогите!

Post by Incorrect User »

Непонятная проблема, скрипт находит существо, чар должен подойти к нему, но чар делает пару шагов и просто стает, кажется что он вообще в другую сторону шел, это не везде так, только в некоторых местах мира.
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: Плиз Помогите!

Post by Mirage »

Передавай прювет ходилке в инжекте. :mrgreen:
Как надоест - спаривай ходилку от изиуо и скрипт инжекта.
Incorrect User
Posts: 949
Joined: 2011-05-23 00:33:30

Re: Плиз Помогите!

Post by Incorrect User »

Стелс жду 5, если будет интересный даже начну учить скриптинг, я в нем не шарю вообще. А сейчас стелс это печаль, нельзя даже отдельно функцию вызвать, только запускай скрипт целиком, не говоря уже про запуск одновременно нескольких функций.
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: Плиз Помогите!

Post by Mirage »

приведи пример когда тебе необходимо запустить отдельную функцию без скрипта.
Incorrect User
Posts: 949
Joined: 2011-05-23 00:33:30

Re: Плиз Помогите!

Post by Incorrect User »

Я имел ввиду например у меня есть файл с кучей скриптов, как в инжекте, в инжекте я могу запустить любой скрипт из этого файла а в стелсе можно запустить только весь файл целиком.
Incorrect User
Posts: 949
Joined: 2011-05-23 00:33:30

Re: Плиз Помогите!

Post by Incorrect User »

Заморочился с координатами для ходилки по точкам шахты. Чтобы в одно значение сразу X и Y записывать и потом извлекать, получилось, работает, пример

Code: Select all

  var wordx, wordy, i
 dim Position[2]
  Position[1] = "1234 345"
  Position[2] = "5678 890"
   for i = 1 to 2
  wordx = val(GetWord(Position[i], 1))
  wordy = val(GetWord(Position[i], 2))
    Walker(wordx, wordy, 0)
 

Теперь думаю как сделать, будет несколько шахт и чтобы в каждой шахте он брал свои координаты, и чтобы покороче было как обычно :roll: Устал, плохо варит голова, представляю только что при реколе по определенной руне будет включаться номер глобальной переменной, к примеру uo.setglobal("Mine", "3") и это будет значить что мы в шахте номер 3, и нужно брать координаты из соответсвующего ей массива... :?
Incorrect User
Posts: 949
Joined: 2011-05-23 00:33:30

Re: Плиз Помогите!

Post by Incorrect User »

Есть идея координаты делать даже не массивом а в 1 строку, пример

Code: Select all

var i, MineOne, MineTwo, wordx, wordy, wordnumber, 
MineOne = "1234 567 2345 678 1234 567 2345 678 1234 567 2345 678"
MineTwo = "1234 567 2345 678 1234 567 2345 678 1234 567 2345 678"
for i = 1 to 6
  wordnumber = i + i - 1
  wordx = val(GetWord(MineOne, wordnumber))
  wordnumber = i + i
  wordy = val(GetWord(MineOne, wordnumber))
  Walker(wordx, wordy, 0)

Только дополнительно прийдется для каждой шахты указывать последнюю цифру для for i = 1 to 6, так как размер шахт разный и точек обкопа тоже по разному. Это значение будет так же указываться приреколе в зависимости от ID руны. Продолжаем...
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: Плиз Помогите!

Post by Mirage »

Code: Select all

var XYMineOne = "1234 567 2345 678 1234 567 2345 678 1234 567 2345 678"

for i = 1 to 3
  wordnumber = i + i - 1
  wordx = val(GetWord(MineOne, wordnumber))
  wordnumber = i + i
  wordy = val(GetWord(MineOne, wordnumber))
  Walker(wordx, wordy, 0)

for i = 3 to 6
  wordnumber = i + i - 1
  wordx = val(GetWord(MineOne, wordnumber))
  wordnumber = i + i
  wordy = val(GetWord(MineOne, wordnumber))
  Walker(wordx, wordy, 0)


ни? :)

PS так скоро дойдешь до использования внешних файлов. В TXT хранить данные дюже удобно.
Incorrect User
Posts: 949
Joined: 2011-05-23 00:33:30

Re: Плиз Помогите!

Post by Incorrect User »

Да, так будет хорошо, все координаты в одну строку, осталось только определиться как сделать чтобы было типа

Code: Select all

var XYMineOne = "1234 567 2345 678 1234 567 2345 678 1234 567 2345 678"

if minenumber == "1" then
for i = 1 to 3
  wordnumber = i + i - 1
  wordx = val(GetWord(MineOne, wordnumber))
  wordnumber = i + i
  wordy = val(GetWord(MineOne, wordnumber))
  Walker(wordx, wordy, 0)
end if

if minenumber == "2" then
for i = 3 to 6
  wordnumber = i + i - 1
  wordx = val(GetWord(MineOne, wordnumber))
  wordnumber = i + i
  wordy = val(GetWord(MineOne, wordnumber))
  Walker(wordx, wordy, 0)
end if

так как мне нужно чтобы можно было лететь в любую шахту без определенной очереди, так же после обкопки чар не летит в следующую а просто реколится домой и стоит.
Incorrect User
Posts: 949
Joined: 2011-05-23 00:33:30

Re: Плиз Помогите!

Post by Incorrect User »

Наверное сделаю так как было в старом скрипте, соберу точки на которых должен стоять но буду использовать их не как определение куда идти, а как определение в какую сторону идти если находишся в данной точке, а именно(например нам нужно пройти на 5 тайлов по направлению N)

Code: Select all

if (uo.getx() == 1234 and uo.gety() == 345) or (uo.getx() == 2345 and uo.gety() == 567) then
  wherex = uo.getx()
  wherey = uo.gety() + 5
   Walker(wherex, wherey, 0)

и так 4 строки координат для 4 направлений(N,E,S,W). Только у меня было вместо (uo.getx() == 1234 and uo.gety() == 345) or (uo.getx() == 2345 and uo.gety() == 567) просто список номеров координат через запятую, не я делал, нужно искать старую ходилку, я не знаю как сделать.
Incorrect User
Posts: 949
Joined: 2011-05-23 00:33:30

Re: Плиз Помогите!

Post by Incorrect User »

Пока идея такая

Code: Select all

var wordnumber, mypos 
    mypos = (str(uo.getx()) + " " + str(uo.gety()))
if wordnumber содержит в себе mypos then
   wordnumber = "1234 789|1234 789|1234 789|1234 789|1234 789|1234 789|1234 789|1234 789|1234 789|1234 789"
end if

Пока застрял на месте if wordnumber содержит в себе mypos then не знаю как это проверять.
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: Плиз Помогите!

Post by Mirage »

Слишком глобально :)
Ты же прилетаешь в одну и туже точку в каждой пещере.
Пещера 1 - X,Y=123,123
Пещера 2 - X,Y=321,231
Пещера 3 - X,Y=593,1003
После реколла если координаты чара = пещеры 1 тогда
for i 1 to 5
в противном случае
если координаты чара = пещеры 2 тогда
for i 5 to 10
////

только смысл всех этих плясок с бубном?
Тексту скрипта откровенно плевать какой длинны в каких местах ему быть.
Можно сделать таким макаром:

у чара 5 рун
начинаем от сундука дома.
Обязательно выкладываем сырье (руду, логи, рыбу), затариваемся инструментом, регами, жрем и лечимся если требуется.
for i = 0 to 4 ; руны
летим в первую координату
запускаем mine[i]() ; возможно такая конструкция сработает, если нет то без for летим и запускаем mine1(), mine2(),...,mine5()
летим домой

mine1(), mine2(),...,mine5() - это либо функция вида

Code: Select all

walker(1887, 271, 0)
walker(1897, 271, 0)
walker(1904, 271, 0)
Mine()
walker(1912, 273, 0)
Mine()
walker(1916, 281, 0)
Mine()
walker(1921, 276, 0)
Mine()
walker(1921, 269, 0)
Mine()
walker(1924, 264, 0)
Mine()


либо как у тебя.
Mine - обычный обкоп вокруг себя по тайлам пола.

Так, ИМХО, будет оптимальнее, редактируемей при необходимосте, и понятнее в случае забывания чтоже ты хотел там наворотить и почему оно работает :)
Incorrect User
Posts: 949
Joined: 2011-05-23 00:33:30

Re: Плиз Помогите!

Post by Incorrect User »

Подумаю. Просто не люблю большие тексты и запутанные тексты, всегда стараюсь сделать компактнее и практичнее. Кстати с ходилкой разобрался, там были замороченые таймеры, и похоже на постоянной основе отключена проверка тайлов. Сделал таймеры по своему, теперь, при правильно установленном значении, чар ходит быстро и не нарезает круги(которые он делает если таймер на шаг слишком маленький), в общем работает шикарно.
Incorrect User
Posts: 949
Joined: 2011-05-23 00:33:30

Re: Плиз Помогите!

Post by Incorrect User »

Обманул, замена таймеров помогла только для того чтобы не тупил долго, но нарезание кругов осталось, хотя немного меньше. Вот не пойму, с чем это может быть связано? В любом случае недоработка скрипта. Никто не хоче подумать? :roll: Еще вопрос не по теме, кто шарит в стелсе, и покладистый человек, можете мне скрипт портировать на стелс, хочу попробовать как оно будет. Скрипт

Code: Select all

sub Skin()
  uo.set("finddistance", "16")
  var i, r, myposx, myposy, corpseid, weapon, animalfind, corpsefind, timer, msg = "fizzles"
  dim Animal[9]
  Animal[1] = "0x00E8" ; Brown Bull
  Animal[2] = "0x00E9" ; Bull
  Animal[3] = "0x00E7" ; Brown Cow
  Animal[4] = "0x00D8" ; Cow
  Animal[5] = "0x00CB" ; Pig
  Animal[6] = "0x0122" ; Boar
  Animal[7] = "0x0005" ; Eagle
  Animal[8] = "0x0006" ; Small Birds
  Animal[9] = "0x00D0" ; Chicken
  dim Rune[14]
  Rune[1] = "0x00000000"
  Rune[2] = "0x00000000"
  Rune[3] = "0x00000000"
  Rune[4] = "0x00000000"
  Rune[5] = "0x00000000"
  Rune[6] = "0x00000000"
  Rune[7] = "0x00000000"
  Rune[8] = "0x00000000"
  Rune[9] = "0x00000000"
  Rune[10] = "0x00000000"
  Rune[11] = "0x00000000"
  Rune[12] = "0x00000000"
  Rune[13] = "0x00000000"
  Rune[14] = "0x00000000"
  repeat
    for r = 1 to 14
      repeat
        Deljournal(msg)
        uo.cast("Recall", Rune[r])
        timer = uo.timer() + 25
        repeat
          wait(120)
        until uo.injournal(msg) or (not uo.injournal(msg) and timer <= uo.timer())
      until not uo.injournal(msg)
      wait(500)
      repeat
        uo.findtype("0x2006", "-1", "ground")
        if uo.findcount() then
          uo.ignore("finditem")
          wait(150)
        end if
      until not uo.findcount()
      for i = 1 to 9
        repeat
          while uo.getglobal("Pause") == "1"
            wait(120)
          wend
          uo.findtype(Animal[i], "-1", "ground")
          if uo.findcount() then
            if uo.getname("finditem") <> "" then
              animalfind = 1
              corpsefind = 0
              if uo.getdistance("finditem") > 1 then
                myposx = uo.getx("finditem")
                myposy = uo.gety("finditem")
                Walker(myposx, myposy, 1)
              end if
              uo.usetype("weapon") ;0x13FE
              wait(500)
              uo.attack("finditem")
              repeat
                uo.getstatus("finditem")
                wait(150)
                if uo.getdistance("finditem") > 1 then
                  myposx = uo.getx("finditem")
                  myposy = uo.gety("finditem")
                  Walker(myposx, myposy, 1)
                end if
              until uo.dead() or uo.gethp("finditem") == 0
              repeat
                uo.findtype("0x2006", "-1", "ground")
                if uo.findcount() then
                  corpsefind = 1
                  corpseid = uo.getserial("finditem")
                  wait(2000)
                  uo.waittargetobject(corpseid)
                  uo.usetype("0x0EC3") ; Cleaver
                  wait(500)
                  uo.findtype("0x1078", "-1", corpseid)
                  if uo.findcount() then
                    uo.moveitem("finditem", "0", "backpack")
                    wait(1000)
                    uo.waittargettype("0x1078")
                    uo.usetype("0x0F9E") ; Sissors
                    wait(500)
                  end if
                  uo.findtype("0x1BD1", "-1", corpseid)
                  if uo.findcount() then
                    uo.moveitem("finditem", "0", "backpack")
                    wait(1000)
                  end if
                  uo.ignore(corpseid)
                else
                  wait(150)
                end if
              until corpsefind == 1
            else
              animalfind = 1
              uo.ignore("finditem")
            end if
          else
            animalfind = 0
            wait(150)
          end if
        until animalfind == 0 or uo.dead()
      next
      wait(500)
    next
    Home()
    Alarm()
    return
  until uo.dead()
end sub

Скрипт немного заморочен, у нас на шарде в инжекте не работает ласткорпс, на счет стелса не скажу, не знаю как это происходит, поэтмоу сделал поиск трупов отдельно. Скрипт ищет по очереди все один вид животного пока все одинаковые не закончатся, потом ищет следующий вид. И по поводу ходилки подумайте на досуге товарищи.
Incorrect User
Posts: 949
Joined: 2011-05-23 00:33:30

Re: Плиз Помогите!

Post by Incorrect User »

Все вопросы сняты - разобрался с ходилкой. Били ошибки с таймерами, неправильно определялось расстояние до обьекта, автор зачем-то сделал изменение значений направления чара инжекта (0-7), под свои (1-8), это не переделывал но пришлось придумывать как реагировать на поворот вместо того чтобы просто сравнить. Поюзал нормально, пока ни одной петли не нарезал, подходит довольно точно к объекту без множества лишних шагов, так же нормально работает количество шагов которое вы хотите делать за раз и таймер на шаг срабатывает хорошо. Выложу в соответсвующей теме. Надеюсь больше косяков не обнаружится :evil:
Incorrect User
Posts: 949
Joined: 2011-05-23 00:33:30

Re: Плиз Помогите!

Post by Incorrect User »

Обьясните как сделать скрипт на скупку товара, точнее как именно работать с меню списка товаров, это не гамп, я так понимаю это контейнер и нужный товар в нем нужно искать по типу? И как происходит выбор товара и его преобретение в меню.
Incorrect User
Posts: 949
Joined: 2011-05-23 00:33:30

Re: Плиз Помогите!

Post by Incorrect User »

И можно ли определять цену товара?
Post Reply