Yoko

All sides of Injection
It is currently 2025-12-10 20:08:34

All times are UTC+02:00




Post new topic  Reply to topic  [ 7 posts ] 
Author Message
PostPosted: 2008-09-23 08:16:10 
Offline

Joined: 2008-04-15 17:40:51
Posts: 12
Собственно запускаю срипт ветерана на лумбер и через некоторое время вы дает ошибку unhandled exception in parser. Что делать?


Top
   
PostPosted: 2008-09-23 11:28:05 
Offline
Expert!
User avatar

Joined: 2006-02-07 08:51:40
Posts: 1348
Location: г. Старый Оскол
markyc wrote:
Собственно запускаю срипт ветерана на лумбер и через некоторое время вы дает ошибку unhandled exception in parser. Что делать?

Потому что кривоват скрит, нужно поправить. Держи, поправил:
Code:
############################################
### Lumberjacking / Рубка деревьев       ###
############################################
### Шард Dragon World / www.drw.ru       ###
############################################
### Реавтор этого скрипта: BETEPAH       ###
############################################
##################
### Переменные ###
##################
###################################################################################################
var f=file("E:\Games\UO\trees3.dat") ## - Путь к файлу в котором будут хранится координаты деревьев.
###
var TryHiding=1 ## 1 - Перед тем как рубить дерево, будет пытаться уйти в хайд, 0 - не будет .
###
var LogsQty=300 ## - Количество логов, добыв которое надо реколиться домой.
###
var GetFromFile=1 ## 1 - Координаты деревьев будут считыватся из файла, 0 - собиратся из клиента
### (сначала соберите а потом считывайте из файла).
###
var EatingFood=1 ## 1 - Будем есть, 0 - нет.
###
var SSpeak=0 ## 1 - Будем качать и спирит спик, 0 - не будем.
###
var TypeFood='0x097B' ## - Тип еды которую будем кушать.(сейчас фиштейки)
###
var Chest='0x402E612F' ## - ID сундука куда будут выгружаться логи.
###
var Trytodrop=1 ## Будем пытатся подходить к сундуку или нет.
###
var ContX=2856 ##Координаты X у сундука
###
var ContY=333 ##Координаты Y у сундука
###
var oldX,oldY,time ## - Для рекола.

var Axe = '0x402FBAB3'
var Pickaxe = '0x402f63f6'

###
###########
### Код ###
###########
sub Lumberjacking()
   var i=0,j=0,k=0,r=0,q=0,ii,jj
   var TopX=324,TopY=65
   dim TreeX[5000], TreeY[5000],TreeT[5000]
   dim TreeTile[29]
   var flag=0,treeCount=0,clicks=0,flag2=0
   ########################
   ### Графика деревьев ###
   ########################
   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
   
   UO.Exec('terminate Reconnector')
   wait(1000)
   UO.Exec('exec Reconnector')
   wait(1000)
   
   #uo.Exec("filterspeech on")
   #uo.Exec("filterspeech add 'Where do you want to use the pickaxe?'")
   
   #uo.Print('Выбери Топор: ')
   #uo.Exec('addobject Axe')
   #while uo.Targeting()
   #wait(100)
   #wend
   
   #####################################
   ### Загружаем координаты из файла ###
   #####################################
   if GetFromFile==1 then
      uo.Print('Загружаем координаты из файла...')
      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()
   else
      ######################################
      ### Собираем координаты из клиента ###
      ######################################
      #uo.Print('Выбери Кирку: ')
      #uo.Exec('addobject Pickaxe')
      #while uo.Targeting()
      #wait(100)
      #wend
      uo.Print('Собираем координаты деревьев в округе...')
      repeat
         clicks=0
         flag=0
         uo.DeleteJournal()
         #######################
         ### Кликаем на тайл ###
         #######################
         uo.UseObject(Pickaxe)
         waitForTarget()
         uo.DeleteJournal()
         WaitForTryRock()
         ###############################
         ### Проверяем дерево ли это ###
         ###############################
         flag=0
         for k=0 to 28
            if uo.LastTile(0)==TreeTile[k]+1 then
               flag=2
            end if
         next
         if flag==0 then
            for k=0 to 28
               if uo.LastTile(0)==TreeTile[k] then
                  flag=1
               end if
            next
         end if
         if uo.Lasttile(1)==uo.getX() and uo.Lasttile(2)==uo.gety() then
            flag=3
         end if
         #########################
         ### Кликнули на ствол ###
         #########################
         if flag==1 then
            flag2=0
            if treeCount>0 then
               for ii=1 to treeCount
                  if TreeX[ii]==uo.LastTile(1) and TreeY[ii]==uo.LastTile(2) then
                     flag2=1
                  end if
               next
            end if
            if flag2==0 then
               treeCount=treeCount+1
               TreeX[treeCount]=uo.LastTile(1)
               TreeY[treeCount]=uo.LastTile(2)
               TreeT[treeCount]=uo.LastTile(0)
               uo.Print('Найдено дерево '+str(treeCount)+' : x='+str(uo.Lasttile(1))+' y='+str(uo.LastTile(2))+' '+str(treeCount))
            end if
         end if
         ##########################
         ### Кликнули по листве ###
         ##########################
         if flag==2 then
            flag2=0
            if treeCount>0 then
               for ii=1 to treeCount
                  if TreeX[ii]==uo.LastTile(1) and TreeY[ii]==uo.LastTile(2) then
                     flag2=1
                  end if
               next
            end if
            if flag2==0 then
               treeCount=treeCount+1
               TreeX[treeCount]=uo.LastTile(1)
               TreeY[treeCount]=uo.LastTile(2)
               TreeT[treeCount]=uo.LastTile(0)-1
               uo.print('Найдено дерево '+str(treeCount)+' : x='+str(uo.Lasttile(1))+' y='+str(uo.LastTile(2)))
            end if
         end if
      until (Flag==3) or (treeCount==500)
      uo.Exec("filterspeech off")
      uo.Print('Анализ закончен, координаты деревьев записаны в файл')
      SaveToFile(treeCount,TreeX,TreeY,TreeT)
   end if
   uo.Print('Деревьев найдено: '+str(treeCount))
   wait(2000)
   ######################################
   ### Ходим по собранным координатам ###
   ######################################
   while 1==1
      if treeCount>0 then
         for i=1 to treeCount
            if Trytodrop==1 and uo.Count('ZLK')>=LogsQty then
               GotoXY(uo.getx(Chest),uo.gety(Chest))
               DropLogs()
            end if
            uo.Print('Идем к дереву '+str(i)+': x='+str(TreeX[i])+' y='+str(TreeY[i]))
            InfoLogs()
            flag=GotoXY(TreeX[i],TreeY[i])
            if flag==1 then
               if TryHiding==1 then
                  ToHide()
               end if
               GetTree(str(TreeT[i]),str(TreeX[i]),str(TreeY[i]),str(uo.GetZ()))
            end if
         next
      end if
   wend
end sub

Sub GetTree(Type,X,Y,Z)
   var i
   uo.Print('Начинаем рубку дерева...')
   for i=0 to 30
      if uo.Warmode()==1 then
         return 0
      end if
      wait(200)
      uo.DeleteJournal()
      uo.WaitTargetTile(Type,X,Y,Z)
      uo.UseObject(Axe)
      if WaitForChange()==1 then
         return 1
      end if
   next
   return 0
end sub

Sub ToHide()
   if SSpeak==1 then
      UO.Useskill('Spirit Speak')
      wait(3000)
   endif
   while not uo.Hidden()
      uo.Print('Пытаемся уйти в хайд...')
      uo.DeleteJournal()
      uo.UseSkill('Stealth')
      wait(3000)
   wend
   wait(100)
end sub


Sub WaitForHide()
   var Text1=uo.GetName()+": You have hidden yourself well"
   var Text2=uo.GetName()+": You can't seem to hide here."
   var mess
   for var i=0 to 200
      mess=uo.Journal(0)
      if uo.Journal(0)==Text1 then
         return 1
      end if
      if uo.Journal(0)==Text2 then
         return 0
      end if
      wait(50)
   next
   return 0
end sub

Sub WaitForChange()
   var Text1=uo.GetName()+': You hack at the tree for a while, but fail to produce any useable wood.'
   var Text2='There are no logs here to chop.'
   var Text3="You can't reach this."
   var Text4="That is too far away."
   var Text5="You can't do much in your current state."
   var Text6='There is no wood left to harvest.'
   var mess
   for var i=0 to 200
      mess=uo.Journal(0)
      if uo.Journal(0)==Text2 or uo.Journal(0)==Text3 or uo.Journal(0)==Text4 OR uo.Journal(0)==Text6 then
         return 1
      end if
      if uo.Journal(0)==Text1 then
         return 0
      end if
      if mess[0]=='Y' and mess[1]=='o' and mess[2]=='u' and mess[4]=='p' and mess[5]=='u' and mess[6]=='t' then
         return 0
      end if
      wait(50)
   next
   return 0
end sub

Sub WaitForTryRock()
   var Text1="That is too far away."
   var Text2="Try mining in rock."
   var Text3="There is no ore here to mine."
   var Text4="You have no line of sight to that location"
   var Text5="You can't see the target"
   for var i=0 to 50
      if uo.Journal(0)==Text1 or uo.Journal(0)==Text2 or uo.Journal(0)==Text3 or uo.Journal(0)==Text4 or uo.Journal(0)==Text5 then
         return 1
      end if
      wait(200)
   next
   return 0
end sub

Sub WaitForTarget()
   for var i=0 to 50
      if uo.Targeting()==1 then
         return 1
      end if
      wait(200)
   next
   return 0
end sub

Sub WaitForChangeXY(myX,myY,lastX,lastY)
   for var i=1 to 50
      if lastX<>myX or lastY<>myY then
         return 1
      end if
      wait(200)
   next
   return 0
end sub

sub GotoXY(x,y)
   var myX,myY,lastX=0,lastY=0,i,halt=0,z,r=0
   for i=1 to 60
      myX=uo.getX();
      myY=uo.getY();
      if LastX==myX and LastY==myY then
         halt=halt+1
      else
         halt=0
      end if
      if halt>=10 then
         if uo.GetDir()==1 then
            for z=0 to 8
               uo.Press(40)
            next
         end if
         if uo.GetDir()==3 then
            for z=0 to 8
               uo.Press(37)
            next
         end if
         if uo.GetDir()==5 then
            for z=0 to 8
               uo.Press(38)
            next
         end if
         if uo.GetDir()==7 then
            for z=0 to 8
               uo.Press(39)
            next
         end if
         halt=15
      end if
      if Numb(x-myX)<=1 and Numb(y-myY)<=2 then
         return 1
      end if
      if x<=myX then
         if y<=myY then
            for z=0 to 3
               uo.Press(38)
            next
         else
            for z=0 to 3
               uo.Press(37)
            next
         end if
      else
         if y<=myY then
            for z=0 to 3
               uo.Press(39)
            next
         else
            for z=0 to 3
               uo.Press(40)
            next
         end if
      end if
      lastX=myX
      lastY=myY
      wait(200)
   next
   return 0
end sub

sub Numb(num)
   if num>=0 then
      return num
   else
      return num*(-1)
   end if
end sub

Sub SaveToFile(treeCount,TreeX,TreeY,TreeT)
   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 DropLogs()
   uo.say("Выкладываю логи !!! Не беспокоить !!!")
   if uo.Waiting() then
      uo.CancelTarget()
   end if
   var a,Exit
   dim Logs[1]
   Logs[0]=0x1BDD
   uo.Print('Выкладываем Логи.')
   uo.SetReceivingContainer(Chest)
   wait(500)
   for a=0 to 0
      Exit=0
      repeat
         uo.FindType(Logs[a])
         if uo.GetQuantity('finditem')>0 then
            uo.Grab('0','finditem')
            wait(1500)
            GotoXY(ContX,ContY)
         else
            Exit=1
         end if
      until Exit==1
   next
   if EatingFood==1 then
      EatingFood()
   end if
   uo.UnSetReceivingContainer(Chest)
   uo.Print('Логи Выложены.')
end sub


Sub InfoLogs()
   uo.Print('У вас всего '+str(uo.Count('0x1BDD'))+' логов в сумке')
   uo.Print('Из них '+str(uo.Count('0x1BDD','0x0000'))+' простых и ' +str(uo.Count('0x1BDD')-uo.Count('0x1BDD','0x0000'))+' цветных')
end sub

Sub Open(Container)
   uo.DeleteJournal()
   uo.UseObject(Container)
   repeat
      wait(500)
   until uo.InJournal('Contains')
end sub


Sub EatingFood()
   ToEat()
   DropFood()
end sub

Sub ToEat()
   uo.SetReceivingContainer('backpack')
   Open(Chest)
   uo.FindType(TypeFood,'-1',Chest)
   uo.Grab('50','finditem')
   wait(500)
   repeat
      Checklag()
      uo.UseType(TypeFood)
      wait(1000)
   until uo.InJournal('You are simply too full to eat any more!')
   uo.UnsetReceivingContainer()
end sub

Sub DropFood()
   if uo.Waiting() then
      uo.CancelTarget()
   end if
   var f,Exit
   dim Food[1]
   Food[0]=TypeFood
   uo.SetReceivingContainer(Chest)
   wait(500)
   for f=0 to 0
      Exit=0
      repeat
         uo.FindType(Food[f])
         if uo.GetQuantity('finditem')>0 then
            uo.Grab('0','finditem')
            wait(1500)
         else
            Exit=1
         end if
      until Exit==1
   next
   uo.UnSetReceivingContainer(Chest)
end sub

Sub CheckLag()
   if uo.Waiting()>0 then
      uo.Exec('canceltarget')
   end if
   uo.DeleteJournal()
   uo.Click('backpack')
   repeat
      wait(50)
   until uo.InJournal('backpack')
end sub

sub Reconnector()
   var ReconnectTime, RFlag
   ReconnectTime = '0'
   RFlag = 1
   Repeat
      While (UO.ObjAtLayer('Bpack') == '')
         if RFlag Then
            ReconnectTime = MakeTime()
            RFlag = 0
         endif
         Wait(150000) # WorldSave Protection
         UO.Say('')
         Wait(12000)
         UO.Say('')
         Wait(12000)
         UO.Say('')
         Wait(12000)
         UO.LDblClick(357,164)
         UO.LClick(616,459)
         Wait(12000)
      WEnd
      Wait(3000)
      if (RFlag == 0) and (ReconnectTime <> '0') Then
         UO.Exec('terminate Lumberjacking')
         wait(1000)
         UO.Exec('exec Lumberjacking')
         wait(1000)
         UO.TextOpen()
         UO.TextPrint('Disconnected & Reconnected @ '+ReconnectTime)
         RFlag = 1
         ReconnectTime = '0'
      endif
   Until false
end sub

sub MakeTime()
   VAR D, T, Ret, i
   Ret = STR(UO.Time())
   T = ""
   For i = 0 To Len(Ret)
      T = Ret[Len(Ret)-i] + T
      If (I == 2) OR (I == 4) Then
         T = ":" + T
      EndIf
   Next
   Ret = STR(UO.Date())
   D = ""
   For i = 0 To Len(Ret)
      D = Ret[Len(Ret)-i] + D
      If (I == 2) OR (I == 4) Then
         D = "." + D
      EndIf
   Next
   Ret = T + " @ " + D
   RETURN Ret
end sub


Top
   
 Post subject:
PostPosted: 2008-09-23 12:31:54 
Offline
Junior Expert
User avatar

Joined: 2004-06-24 22:08:56
Posts: 3220
Одного топика мало?

viewtopic.php?t=12990&start=0

_________________
YokoInjection CodeSweeper
Function not found?
Possession of mathematics at the level of art - a gift that is only available for election.
Sorry for my clumsy English.
Skype: d119060


Top
   
 Post subject:
PostPosted: 2008-09-23 12:54:53 
Offline
Expert!
User avatar

Joined: 2006-02-07 08:51:40
Posts: 1348
Location: г. Старый Оскол
Destruction wrote:
Одного топика мало?
viewtopic.php?t=12990&start=0

Дест, ты не так понял ;) Все нормально, там в скрипте лишний endif есть, вот он и парсит.


Top
   
 Post subject:
PostPosted: 2008-09-23 13:01:30 
Offline
Junior Expert
User avatar

Joined: 2004-06-24 22:08:56
Posts: 3220
В том топике, что я дал ссылку - нет информации о том, что лишний endif - плохо ?

Если нет - то нужно добавить, топик прилепленный, страниц много - там должна быть вся необходимая информация по этой проблеме.

PS: Я всё прекрасно понял - просто зачем покупать по одному кирпичу, если задача построить дом? - Купите оптом - дешевле будет !

_________________
YokoInjection CodeSweeper
Function not found?
Possession of mathematics at the level of art - a gift that is only available for election.
Sorry for my clumsy English.
Skype: d119060


Top
   
 Post subject:
PostPosted: 2008-09-23 13:17:56 
Offline
Expert!
User avatar

Joined: 2006-02-07 08:51:40
Posts: 1348
Location: г. Старый Оскол
Destruction wrote:
В том топике, что я дал ссылку - нет информации о том, что лишний endif - плохо ?
Если нет - то нужно добавить, топик прилепленный, страниц много - там должна быть вся необходимая информация по этой проблеме.
PS: Я всё прекрасно понял - просто зачем покупать по одному кирпичу, если задача построить дом? - Купите оптом - дешевле будет !

Перенеси :) ты же наделен такими правами ;)


Top
   
 Post subject:
PostPosted: 2008-09-23 14:15:07 
Offline
Junior Expert
User avatar

Joined: 2004-06-24 22:08:56
Posts: 3220
Один sql-запрос и я админ, только мне это не нужно -) Это, что касается прав, которыми я наделён.

Проблема в том, что модераторский интерфейс phpBB 2 не предусматривает возможности склеивания топиков.

Править базу наживую я не буду, делать мне больше нечего, апгрейдить пхпББ пока тоже не буду.

_________________
YokoInjection CodeSweeper
Function not found?
Possession of mathematics at the level of art - a gift that is only available for election.
Sorry for my clumsy English.
Skype: d119060


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 7 posts ] 

All times are UTC+02:00


Who is online

Users browsing this forum: No registered users and 7 guests


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:  
cron
Powered by phpBB® Forum Software © phpBB Limited