Yoko

All sides of Injection
It is currently 2018-11-17 18:12:40

All times are UTC+02:00




Post new topic  Reply to topic  [ 77 posts ]  Go to page Previous 1 2 3 4 Next
Author Message
PostPosted: 2015-11-16 08:39:07 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
У тебя ошибка, удали end if тут
Code:
end if
            Hide()

1. Что значит "находили"? Появился человек, или монстр, или из хайда вышел или...?
2. Добавь в условия строку
Code:
var infinity = 1 ; 0/1 Проходить по рунам один круг / Бесконечно 

Добавь строку repeat перед строками
Code:
   for number = 0 to 2
      uo.ignorereset()

Добавь строку until infinity == 0 перед строками
Code:
uo.print("Chop's done!")
end sub

Лишние end if вставлять не обязательно :roll:

_________________
CodeSweeper


Top
   
PostPosted: 2015-11-16 12:08:52 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
Да, и когда будет перевес, нужно будет выйти из цикла. Для этого добавь в условия
Code:
var skip

Добавь строку skip = 0 перед строками
Code:
      repeat
         for i = 1 to treecount
            uo.pmove(TreeX[i], TreeY[i], distance)

И замени часть
Code:
         if uo.weight >= weight then
            RecallToHome()
         end if
      next
   until i == treecount or uo.dead()

На
Code:
               if uo.weight >= weight then
                  skip = 1
                  break
               end if
            next
         until i == treecount or skip == 1 or uo.dead()

_________________
CodeSweeper


Top
   
PostPosted: 2016-05-15 10:07:18 
Offline

Joined: 2009-03-16 11:51:21
Posts: 56
Подскажите на какой версии этот скрипт нормально работает?
У меня на последней, после маркировки деревьев бинтами, когда я последний бинт накладываю на себя вылетает ошибка "Unhandled exception in parser"


Top
   
PostPosted: 2016-05-15 12:14:07 
Offline

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

file("C:\Users\Edgard\Desktop\Injection_uo\trees.dat")
else
if number == 1 then
f = file("C:\Users\Edgard\Desktop\Injection_uo\trees1.dat")
else
f = file("C:\Users\Edgard\Desktop\Injection_uo\trees2.dat")

Их все и другие в скрипте, нужно заменить на свои.

_________________
CodeSweeper


Top
   
PostPosted: 2016-05-15 15:59:43 
Offline

Joined: 2009-03-16 11:51:21
Posts: 56
Incorrect User wrote:
На последней, у всех работает. Возможно у тебя не может создать текстовый файл, из за закрытого доступа или несуществующих директорий, вот и все. Проверяй адреса и файлы по ним

file("C:\Users\Edgard\Desktop\Injection_uo\trees.dat")
else
if number == 1 then
f = file("C:\Users\Edgard\Desktop\Injection_uo\trees1.dat")
else
f = file("C:\Users\Edgard\Desktop\Injection_uo\trees2.dat")

Их все и другие в скрипте, нужно заменить на свои.


Он у меня как то странно работает.
В сундуке инвизки руны и реги, он пытается добрать оттуда провизию, в итоге находит первую руну, реколится по ней на место и стоит ничего не делат.
Такое чувство, что ему не хватает каких то координат. Куда копать? Играю на оском фри.


Top
   
PostPosted: 2016-05-16 08:12:44 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
Я так понимаю что ошибка "Unhandled exception in parser" ушла. Новые темы штамповать не обязательно. Смотри чтобы в строке ввода текста в клиенте всегда было пусто, иначе он не может ходить. Для начала замени все сообщения из
Code:
var msg = "Подолбив дерево|“ут не осталось пригодной древесины|Ёто слишком далеко отсюда|You put the logs|You see|Your skill|You have|What do you want to use this on?"
   var endmsg = "Тут не осталось пригодной древесины|Ёто слишком далеко отсюда|You can't reach this"

на сообщения вашего сервера и пробуй, причём сообщения лучше копировать из журнала _showjournal 50 Инжект чувствителен к регистру, так что от руки лучше не писать, чтобы не наделать ошибок.

_________________
CodeSweeper


Top
   
PostPosted: 2016-05-16 08:47:57 
Offline

Joined: 2009-03-16 11:51:21
Posts: 56
Да, ошибку парсера победил, не хватало видимо галки в мэйн.
Месаджи с сервера все заменил копипастом из журнала, но результата это не дает.
Чар стоит у сундука, смотрит что там есть, добирает реги, находит руну, летит по ней в лес, подходит к дереву на дистанцию 2, но рубить не начинает, а слева бегут просто строки "What do you want to use this on?"


Top
   
PostPosted: 2016-05-16 09:20:03 
Offline

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

_________________
CodeSweeper


Top
   
PostPosted: 2016-05-16 10:01:14 
Offline

Joined: 2009-03-16 11:51:21
Posts: 56
Code:
var msg = "What do you want to use this on?|You put the logs in your pack.|You hack the tree for a while, but fail to produce any useable wood."
   var endmsg = "Тут не осталось пригодной древесины. Нечего рубить.|Вы вне прямого доступа к этому месту.", starttime, endtime, flag, number, treecount = 0, clicks, TopX = 324, TopY = 65, i = 0, j = 0, k = 0, r = 0, q = 0, ii, jj, f

Image
Image


Top
   
PostPosted: 2016-05-16 10:04:00 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
А, ну понятно. В msg должны быть вообще все сообщения после рубки. Парень которому делал намутил там что-то свое, я переделал нормально, сейчас дам целую версию. Пока на вкладке main сними все галки и проставишь обязательно: Undead, Light, Premit Vars Loopback, Clear memory, Autostart, Track World Items.

_________________
CodeSweeper


Top
   
PostPosted: 2016-05-16 10:09:48 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
А топор тыкал без остановки потому что ты сообщение о его использовании вписал, что совершенно ни к чему. Ставишь галки на вкладке Main как я сказал, копируешь заново весь скрипт что ниже, заполняешь в каждой функции свои данные, которые неверны или неуказаны(id сундуков, координаты рун, сообщения хайда и тд) и перезапускаешь клиент и вперед. Возможно потом появятся еще какие либо сообщения, нужно будет просто их добавить. Вот как должно было выглядеть все
Code:
sub Autostart()
   uo.setglobal("Recall", "Off")
end sub

sub Lumberjacking()
   var read = 0 ; 0/1 - Выкл/Вкл сбор координат
   var infinity = 1 ; 0/1 Проходить по рунам Один круг / Бесконечно
   var distance = 3 ; Расстояние в тайлах, на которое нужно подойти к дереву
   var weight = 650 ; максимальный вес, при достижении которого реколимся домой
   var hatchet = "0x0F47" ; тип топора
   var msg = "log in your pack|logs in your pack|You hack the tree|Тут не осталось пригодной древесины|Вы вне прямого доступа к этому месту" ; все возможные сообщения после попытки рубки дерева
   var endmsg = "Тут не осталось пригодной древесины|Вы вне прямого доступа к этому месту" ; сообщения после рубки, при появлении которых переходим к другому дереву
   var skip, starttime, endtime, flag, number, treecount = 0, clicks, i, k, f
   dim TreeX[5000], TreeY[5000], TreeT[5000]
   dim TreeTile[29]
   TreeTile[0]=3277
   TreeTile[1]=3280
   TreeTile[2]=3283
   TreeTile[3]=3286
   TreeTile[4]=3289
   TreeTile[5]=3291
   TreeTile[6]=3294
   TreeTile[7]=3296
   TreeTile[8]=3299
   TreeTile[9]=3302
   TreeTile[10]=3393
   TreeTile[11]=3394
   TreeTile[12]=3395
   TreeTile[13]=3396
   TreeTile[14]=3415
   TreeTile[15]=3416
   TreeTile[16]=3417
   TreeTile[17]=3418
   TreeTile[18]=3419
   TreeTile[19]=3438
   TreeTile[20]=3439
   TreeTile[21]=3440
   TreeTile[22]=3441
   TreeTile[23]=3442
   TreeTile[24]=3460
   TreeTile[25]=3461
   TreeTile[26]=3462
   TreeTile[27]=3290
   TreeTile[28]=3288
   dim RuneID[3]
   RuneID[0] = "0x41D24385"   ; руна в лес1
   RuneID[1] = "0x41D24387"   ; руна в лес2
   RuneID[2] = "0x41D24389"   ; руна в лес3
   if read == 1 then
      uo.print("Collecting coordinates...")
      repeat
         clicks = 0
         flag = 0
         uo.usetype("0x0E21")
         wait(500)
         while uo.targeting()
            wait(100)
         wend
         flag = 0
         for k = 0 to 28
            if uo.lasttile(0) == TreeTile[k] then
               flag = 1
            end if
         next
         if uo.lasttile(1) == uo.getx() and uo.lasttile(2) == uo.gety() then
            flag = 2
         end if
         if flag == 1 then
            treecount = treecount + 1
            TreeX[treecount] = uo.lasttile(1)
            TreeY[treecount] = uo.lasttile(2)
            TreeT[treecount] = uo.lasttile(0)
            uo.print("tree found"+str(treecount)+" : X = "+str(uo.Lasttile(1))+" Y = "+str(uo.LastTile(2))+" "+str(treecount))
         end if
      until (flag == 2) or (treecount == 5000)
      SaveToFile(treecount, TreeX, TreeY, TreeT)
      uo.print("Coordinates collected!")
      uo.print("Trees found: " + str(treecount))
      return
   end if
   repeat
      for number = 0 to 2
         uo.ignorereset()
         if number == 0 then
            f = file("C:\Users\Desktop\Injection_uo\trees.dat")
         else
            if number == 1 then
               f = file("C:\Users\Desktop\Injection_uo\trees1.dat")
            else
               f = file("C:\Users\Desktop\Injection_uo\trees2.dat")
            end if
         end if
         uo.print("Loading from file...")
         f.open()
         treecount = safe call f.ReadNumber()
         for i = 1 to treecount
            TreeT[i] = safe call f.ReadNumber()
            TreeX[i] = safe call f.ReadNumber()
            TreeY[i] = safe call f.ReadNumber()
         next
         f.close()
         TakePut()
         RecallToWood(RuneID[number])
         skip = 0
         repeat
            for i = 1 to treecount
               uo.pmove(TreeX[i], TreeY[i], distance)
               repeat
                  uo.deletejournal(msg)
                  Hide()
                  uo.waittargettile(TreeT[i], TreeX[i], TreeY[i], uo.GetZ())
                  uo.usetype(hatchet)
                  starttime = now()
                  endtime = uo.timer() + 60
                  repeat
                     Save()
                     wait(100)
                  until uo.injournalbetweentimes(msg, starttime, -1) or uo.timer() > endtime or uo.dead()
               until uo.injournal(endmsg) or uo.weight >= weight or uo.dead()
               if uo.weight >= weight then
                  skip = 1
                  break
               end if
            next
         until i == treecount or skip == 1 or uo.dead()
         if not uo.dead() then
            RecallToHome()
         else
            uo.print("You Dead!")
            uo.exec("Terminate all")
         end if
      next
   until infinity == 0
end sub
sub SaveToFile(treecount, TreeX, TreeY, TreeT)
   var f=file("C:\Users\Desktop\Injection_uo\trees.dat")
   var s = 0, i = 0
   f.open()
   f.create()
   s=safe call f.writeln(treecount)
   for i = 1 to treecount
      s=safe call f.writeln(str(TreeT[i])+" "+str(TreeX[i])+" "+str(TreeY[i]))
   next
   f.close()
end sub

sub RecallToHome()
   var runeid = "id руны в дом", starttime, endtime, msg = "spell fizzles|anti-magic field disturbs|lack reagents", endmsg = "anti-magic field disturbs|lack reagents"
   var  x = 000, y = 000 ; Координаты X и Y тайла куда прилетаешь по руне
   uo.deletejournal(msg)
   if uo.getglobal("Recall") == "Off" then
      uo.setglobal("Recall", "On")
      repeat
         uo.deletejournal(msg)
         uo.waittargetobject(runeid)
         uo.cast("Recall")
         starttime = now()
         endtime = uo.timer() + 40
         repeat
            Save()
            wait(100)
         until (uo.getx() == x and uo.gety() == y) or uo.injournalbetweentimes(msg, starttime, -1) or uo.timer() > endtime or uo.dead()
      until (uo.getx() == x and uo.gety() == y) or uo.injournal(endmsg) or uo.dead()
      uo.setglobal("Recall", "Off")
   end if
end sub

sub RecallToWood(runeid)
   var starttime, endtime, msg = "spell fizzles|anti-magic field disturbs|lack reagents", endmsg = "anti-magic field disturbs|lack reagents"
   var  x = 000, y = 000 ; Координаты X и Y тайла куда прилетаешь по первой руне
   var  x2 = 000, y2 = 000 ; Координаты X и Y тайла куда прилетаешь по второй руне
   var  x3 = 000, y3 = 000 ; Координаты X и Y тайла куда прилетаешь по третьей руне
   uo.deletejournal(msg)
   if uo.getglobal("Recall") == "Off" then
      uo.setglobal("Recall", "On")
      repeat
         uo.deletejournal(msg)
         uo.waittargetobject(runeid)
         uo.cast("Recall")
         starttime = now()
         endtime = uo.timer() + 40
         repeat
            Save()
            wait(100)
         until (uo.getx() == x and uo.gety() == y) or (uo.getx() == x2 and uo.gety() == y2) or (uo.getx() == x3 and uo.gety() == y3) or uo.injournalbetweentimes(msg, starttime, -1) or uo.timer() > endtime or uo.dead()
      until (uo.getx() == x and uo.gety() == y) or (uo.getx() == x2 and uo.gety() == y2) or (uo.getx() == x3 and uo.gety() == y3) or uo.injournal(endmsg) or uo.dead()
      uo.setglobal("Recall", "Off")
   end if
end sub

sub TakePut()
   var box = "ID сундука с ресурсами", logs = "0x1BDD", i, r, s, info, food, quantity
   dim Reg[4]
   Reg[0] = "0x0F7A 10 Black Pearl"
   Reg[1] = "0x0F7B 10 Blood Moss"
   Reg[2] = "0x0F86 10 Mandrake Roots" 
   Reg[3] = "0x09D0 5 Food"
   uo.opencontainer(box, 500)
   while uo.findtype(logs, -1, "my")
      uo.moveitem("finditem", 0, box)
      wait(2000)
   wend
   for i = 0 to 3
      r = getword(Reg[i], 1)
      s = val(getword(Reg[i], 2))
      if not uo.findtype(r, -1, "my") then
         if not uo.findtype(r, -1, box) then
            info = getword(Reg[i], 3)
            uo.print("not enough" + info)
         else
            Save()
            uo.moveitem("finditem", s, "backpack")
            wait(2000)
         end if
      else
         if uo.getquantity("finditem") < s then
            quantity = s - uo.getquantity("finditem")
            if not uo.findtype(r, -1, box) then
               info = getword(Reg[i], 3)
               uo.print("not enough" + info)
            else
               Save()
               uo.moveitem("finditem", quantity, "backpack")
               wait(2000)
            end if
         end if
      end if
   next
   for food = 1 to 5
      uo.usetype("0x09D0")
      wait(500)
   next
end sub

sub Save()
   var msg = "backpack|World save has been initiated"
   if uo.injournal("World save has been initiated") then
      uo.deletejournal(msg)
      uo.click("backpack")
      repeat
         wait(100)
      until uo.injournal("backpack")
   end if
end sub

sub Hide()
   var msg = "неудалось|is attacking you", waittime
   if not uo.hidden() then
      repeat
         uo.warmode(0)
         uo.deletejournal(msg)
         uo.useskill("Hiding")
         waittime = uo.timer() + 50
         repeat
            wait(100)
         until uo.hidden() or uo.injournal(msg) or uo.timer() > waittime or uo.dead()
      until uo.hidden() or uo.dead()
   end if
end sub

_________________
CodeSweeper


Last edited by Incorrect User on 2016-05-18 11:46:53, edited 5 times in total.

Top
   
PostPosted: 2016-05-16 10:14:03 
Offline

Joined: 2009-03-16 11:51:21
Posts: 56
Низкий Вам поклон! Сейчас буду тестить, по результату отпишусь.


Top
   
PostPosted: 2016-05-16 10:31:59 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
Code:
 var guardian = "0x0190"

Можно убрать, ошметки от других неизвестных частей.

_________________
CodeSweeper


Top
   
PostPosted: 2016-05-16 12:17:52 
Offline

Joined: 2009-03-16 11:51:21
Posts: 56
Incorrect User wrote:
Code:
 var guardian = "0x0190"

Можно убрать, ошметки от других неизвестных частей.

Странно, но он теперь стоит перед сундуком и в цикле пытается среколиться по руне в лес, но при этом сам себя физлит.


Top
   
PostPosted: 2016-05-16 13:18:30 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
В старой версии был таймер не рабочий, тут поправил, на рекол давалось 2.7 сек, увеличил до 4.
Замени в реколах домой и в лес строки
Code:
         starttime = now() + 500
         endtime = now() + 27

на
Code:
         starttime = now()
         endtime = uo.timer() + 40

_________________
CodeSweeper


Top
   
PostPosted: 2016-05-16 13:30:45 
Offline

Joined: 2009-03-16 11:51:21
Posts: 56
Заменил, теперь улетает в лес, после чего стоит ничего не делает и надписи "Select rune to recall from" "You can`t see the target". После чего я попробовал перезапустить скрипт прямо в лесу на том тайле куда прилетаю, он подходит к дереву встает в хайд и ничего не рубит.


Last edited by Hydromarine on 2016-05-16 13:32:43, edited 1 time in total.

Top
   
PostPosted: 2016-05-16 13:32:41 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
Он пытается реколится. Ты координаты руны правильно задал? Когда прилетаешь по руне в лес, пишешь .where и координаты которые увидишь вписываешь вместо 000 сюда
Code:
   var  x = 000, y = 000 ; Координаты X и Y тайла куда прилетаешь по первой руне
   var  x2 = 000, y2 = 000 ; Координаты X и Y тайла куда прилетаешь по второй руне
   var  x3 = 000, y3 = 000 ; Координаты X и Y тайла куда прилетаешь по третьей руне

_________________
CodeSweeper


Top
   
PostPosted: 2016-05-16 13:38:13 
Offline

Joined: 2009-03-16 11:51:21
Posts: 56
Да вписал точно правильно, команда у меня эта where не работает, но инжект сверху на рамке пишет текущие координаты. Их и вбил.
Все среколился куда надо, подошел к дереву, встал в хайд и больше ничего не делает.


Top
   
PostPosted: 2016-05-16 13:42:16 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
Даже топор не юзает?

_________________
CodeSweeper


Top
   
PostPosted: 2016-05-16 14:03:59 
Offline

Joined: 2009-03-16 11:51:21
Posts: 56
Incorrect User wrote:
Даже топор не юзает?

Только что проверил положив топор в пак. Прилетает в лес, берет из пака топор в руки и на этом все! При этом ни ошибок, и скрипт запущен остается.


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 77 posts ]  Go to page Previous 1 2 3 4 Next

All times are UTC+02:00


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited