Кемпинг помогите пожалуйста

Anything and all.

Moderators: Murderator+, Murderator

Post Reply
dubas2
Posts: 13
Joined: 2008-12-05 14:36:07

Кемпинг помогите пожалуйста

Post by dubas2 »

привет.вот скрипт на рубку хвороста.Проблема в том,что когда я начинаю помечать деревья после первого помеченного дерева выдаёт ошибку - Uncepl parser error.линию ошибки не указывает.Помогите пожалуйста,в чом может быть проблема?

Code: Select all

var fName= "C:\uo\inject\trees3.dat" ## - Путь к файлу в котором будут хранится координаты деревьев. 
var TypeFood='0x097B' ## - Тип еды которую будем кушать.(сейчас фиштейки 
var tKnife = '0x0F52' ; тип ножа, если он в руках - не придётся тыкать на него прицелом. 

sub kindling() 
var i, f 
dim TreeX[500],TreeY[500],TreeT[500] 
var flag,treeCount=0 
   UO.Exec('terminate Reconnector') 
   UO.Exec('exec Reconnector') 
   if UO.GetGraphic(UO.ObjAtLayer('Rhand')) == '0x0F51' then 
      uo.waittargetobject(UO.ObjAtLayer('Rhand')) 
      uo.AddObject('knife') 
   else 
      UO.Print('Мтякс... покажЪ нож...') 
      uo.AddObject('knife') 
      while uo.Targeting() 
         wait(100) 
      wend 
   end if 
   ToHide() 
   uo.Print('Посмотримс, что там у нас в файлике завалялось...') 
   f = file(fName) 
   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() 
   Orfo(str(treeCount),'Значится пошукал я и нашел '+str(treeCount)+' дерев','',0) 
   wait(2000) 
   ToHide() 
   if treeCount<1 then 
      return 
   end if 
   uo.set('finddistance','3') 
   uo.FilterSpeech('on') 
   uo.FilterSpeech('add', 'What do you want to use this on?') 
   while not UO.Dead() 
      for i=1 to treeCount 
         if uo.skillval('Camping',1)==1000 then 
            uo.set('finddistance','14') 
            uo.FilterSpeech('off') 
            UO.CloseUO() 
         end if 
         uo.Print('Потопал к дереву №'+str(i)+': x='+str(TreeX[i])+' y='+str(TreeY[i])) 
         if GotoXY(TreeX[i],TreeY[i]) == 1 then 
            GetTree(str(TreeT[i]),str(TreeX[i]),str(TreeY[i]),str(uo.GetZ())) 
            Camping() 
         end if 
      next 
      ToEat() 
   wend 
   uo.set('finddistance','14') 
   uo.FilterSpeech('off') 
   UO.CloseUO() 
end Sub 

Sub GetTree(Type,X,Y,Z) 
var lt 
var Text2='There is no wood left to harvest' 
var Text3="You can't" 
var Text4='That is too far away.' 
var Text5='Chopping the tree ' 
var Text6='You put' 
   UO.DeleteJournal() 
   while not UO.InJournal(Text2) and not UO.InJournal(Text3) and not UO.InJournal(Text4) and not UO.InJournal(Text5) and not UO.Dead() 
      ToHide() 
      CheckLag() 
      uo.WaitTargetTile(Type,X,Y,Z) 
      uo.UseObject('knife') 
      lt = UO.Timer() 
      while not UO.InJournal(Text2) and not UO.InJournal(Text3) and not UO.InJournal(Text4) and not UO.InJournal(Text5) and not UO.InJournal(Text6) and not UO.Dead() and lt+100 > UO.Timer() 
         wait(100) 
      wend 
      if lt+100 < UO.Timer() then 
         if uo.targeting() then 
            uo.canceltarget() 
         end if 
         UO.Print('Больное какое то дерево') 
         return 
      end if 
   wend 
end Sub 

sub MarckingLumbers() 
var k, i 
dim TreeX[500], TreeY[500],TreeT[500] 
dim TreeTile[29] 
var flag=0, treeCount=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.FilterSpeech('on') 
   uo.FilterSpeech('add', 'Where do you want to use the') 
   uo.Print('Ты будешь смеятся, но мне нужна либо кирка, либо лопата...') 
   uo.AddObject('Pickaxe') 
   While uo.Targeting() 
      Wait (100) 
   Wend 
   uo.Print('Iwi derevja,tikaj na nih a ja budu proverjatj...') 
   UO.DeleteJournal() 
   while uo.Lasttile(1)<>uo.getX() and uo.Lasttile(2)<>uo.gety() 
      CheckLag() 
      uo.UseObject('Pickaxe') 
      if WaitForTryRock()==0 then 
         flag = 0 
         for k = 0 To 9 
            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 flag > 0 then 
            flag2 = 0 
            if treeCount > 0 Then 
               for i = 1 To treeCount 
                  if TreeX[i]==uo.LastTile(1) and TreeY[i]==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) 
               if flag == 1 then 
                  TreeT [treeCount] = uo.LastTile(0) 
               else 
                  TreeT [treeCount] = uo.LastTile(0) - 1 
               end if 
               uo.print('Надо же! В дерево попал!!! В это: x='+str(uo.Lasttile(1))+' y='+str(uo.LastTile(2))) 
               Orfo(str(treeCount),'Всего '+str(treeCount)+' дерев',' наковырял',0) 
            else 
               uo.Print('Вот чукча!!! Ты мне енто дерево уже показывал!!!, давай что нибудь новенькое покажи...') 
            end if 
         else 
            UO.Print('похоже... но не дерево...') 
         end if 
      end if 
   wend 
   uo.Filterspeech('off') 
   if treeCount < 1 then 
      UO.Print('И чо ты мне мозги тут пудрил? Ни одного дерева же не нашёл!') 
      UO.Print('Ну ни чо в другой раз тебе больше повезёт :)') 
      return 
   end if 
   if treeCount < 100 then 
      uo.Print('И чо ты думаешь этого тебе хватит?!?!?') 
   else 
      uo.Print('Ну ты и хапуга... и глянь терпения то хватило...') 
   end if 
   wait(200) 
   uo.Print('Да не расстраивайся ты... я так шутю :)') 
   wait(200) 
   uo.Print('посмотрел я тут на досуге, что ты навыбирал...') 
   uo.Print('буду попробывать скинуть в файл...') 
   SaveToFile(treeCount,TreeX,TreeY,TreeT) 
   wait(500) 
   uo.Print('Всё! Типа скинул в файл: ' + fName) 
   wait(200) 
   uo.Print('Эё!!! Ты куда собрался? погодь я тебя ещё не отпустил, ща рубать пойдём...') 
   wait(700) 
   kindling() 
end Sub 

Sub WaitForTryRock() 
var Text1="Try mining in rock." 
var Text2="That is too far away." 
var Text3="You can't see the target" 
var Text4="You have no line of sight to that location" 
var Text5="There is no ore here to mine." 
var Text6='You loosen' 
var Text7='You put' 
var Text8='OOPS!!!' 
var Text9='STOPPP' 
   while not UO.InJournal(Text1) and not UO.InJournal(Text2) and not UO.InJournal(Text3) and not UO.InJournal(Text4) and not UO.InJournal(Text5) and not UO.InJournal(Text6) and not UO.InJournal(Text7) and not UO.InJournal(Text8) and not UO.InJournal(Text9) 
      wait(50) 
   wend 
   if UO.InJournal(Text1) then 
      UO.Print('ща посмотрю куда ты там тыкнул...') 
      return 0 
   end if 
   if UO.InJournal(Text2) or UO.InJournal(Text3) or UO.InJournal(Text4) then 
      UO.Print('а чо поближе дерева не водятся?') 
   end if 
   if UO.InJournal(Text5) or UO.InJournal(Text6) or UO.InJournal(Text7) or UO.InJournal(Text8) then 
      UO.Print('Ты вроде подрова собирался??? Ну так и иди... лесом иди...') 
   end if 
   return 1 
end Sub 

Sub SaveToFile(treeCount,TreeX,TreeY,TreeT) 
var s=0,i=0, f 
   f = file(fName) 
   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 Orfo(sNum, fStr, lStr, Rod) ## Rod - 0/1; 0 - дерево, 1 - лог 
var n=VAL(Right(sNum,1)) 
   if n==0 then 
      if Rod == 0 then 
         UO.Print(fStr+'а'+lStr) 
      else 
         UO.Print(fStr+lStr) 
      end if 
      return 
   end if 
   if n<5 then 
      UO.Print(fStr+'а'+lStr) 
      return 
   end if 
   if Rod == 0 then 
      UO.Print(fStr+'ев'+lStr) 
   else 
      UO.Print(fStr+'ов'+lStr) 
   end if 
end Sub 

Sub Camping() 
var mx=uo.getx(),my=uo.gety(),x,y 
   uo.DeleteJournal() 
   while uo.count('0x0DE1','0x0000') > 0 
      for x=mx-2 to mx+2 
         for y=my-2 to my+2 
            CheckLag() 
            if uo.count('0x0DE1','0x0000')==0 or uo.Dead() then 
               return 
            end if 
            uo.findtype('0x0DE1','0x0000','ground') 
            if UO.FindCount() == 0 then 
               uo.findtype('0x0DE1','0x0000','backpack') 
               uo.drop('1',str(x),str(y),str(uo.getz()),'finditem') 
               CheckLag() 
            end if 
            uo.findtype('0x0DE1','0x0000','ground') 
            if UO.FindCount() > 0 then 
               uo.deletejournal() 
               uo.useobject('finditem') 
               wait(1500) 
               if uo.injournal("You can't") then 
                  uo.ignore('finditem') 
               end if 
            end if 
         next 
      next 
   wend 
end Sub 

Sub ToHide() 
   while not UO.Hidden() 
      CheckLag() 
      UO.WarMode(0) 
      UO.UseSkill('Hiding') 
      repeat 
         wait(200) 
      until UO.InJournal('You have hidden') OR UO.InJournal('seem to hide') OR UO.InJournal('preocopured') or UO.Dead() 
   wend 
end Sub 

Sub ToEat() 
   UO.DeleteJournal() 
   UO.FindType(TypeFood,'0x0000','backpack') 
   while UO.FindCount() > 0 and not uo.InJournal('too full') and not UO.Dead() 
      CheckLag() 
      uo.UseType(TypeFood,'0x0000') 
      while not uo.InJournal('full') and not uo.InJournal('stuffed') and not uo.InJournal('hungry') and not uo.InJournal('satiated') and not UO.Dead() 
         wait(100) 
      wend 
      UO.FindType(TypeFood,'0x0000','backpack') 
   wend 
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') or UO.Dead() 
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(20000) # WorldSave Protection 
UO.Say('') 
Wait(3000) 
UO.Say('') 
Wait(3000) 
UO.Say('') 
Wait(3000) 
UO.LDblClick(357,164) 
UO.LClick(616,459) 
Wait(3000) 
WEnd 
Wait(3000) 
if (RFlag == 0) and (ReconnectTime <> '0') Then 
UO.Exec('terminate kindling') 
wait(1000) 
UO.Exec('exec kindling') 
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 

################################################################################################### 
################################# тут ходилка ##################################################### 
################################################################################################### 

Sub GotoXY(x,y) 
   VAR i 
   VAR dir,ldir,rdir,key,olddir 
   VAR dx,dy,Exit=0 
   VAR CacheLimit=9,CacheIndex="Text" 
   DIM CacheX[10], CacheY[10] 
    
   CacheX[0]="Test" 
   While Exit<>1       
      dx=x-UO.GetX() 
      dy=y-UO.GetY() 
      If dx<=2 AND dy<=2 Then 
         Exit=1 
      Endif 
      If dx<>0 AND dy<>0 Then 
         If dx>0 AND dy>0 Then ; GoSE 
            dir=3 
            ldir=2 
            rdir=4 
            key=40 ; DownArrow 
            olddir=UO.GetDir() 
            If StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Then 
               If olddir==2 Then ; GoNE 
                  dir=1 
                  ldir=0 
                  rdir=1 
                  key=39 ; RightArrow 
                  While UO.GetDir()<>1 
                     StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) 
                  Wend 
               Else ; GoSW 
                  dir=5 
                  ldir=5 
                  rdir=6 
                  key=37 ; LeftArrow 
                  While UO.GetDir()<>5 
                     StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) 
                  Wend 
               Endif 
            Endif 
         Endif 

         If dx>0 AND dy<0 Then ; GoNE 
            dir=1 
            ldir=0 
            rdir=2 
            key=39 ; RightArrow 
            olddir=UO.GetDir() 
            If StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Then 
               If olddir==0 Then ; GoWN 
                  dir=7 
                  ldir=6 
                  rdir=7 
                  key=38 ; UpArrow 
                  While UO.GetDir()<>7 
                     StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) 
                  Wend 
               Else ; GoSE 
                  dir=3 
                  ldir=3 
                  rdir=4 
                  key=40 ; DownArrow 
                  While UO.GetDir()<>3 
                     StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) 
                  Wend 
               Endif 
            Endif 
         Endif 

         If dx<0 AND dy>0 Then ; GoSW 
            dir=5 
            ldir=4 
            rdir=6 
            key=37 ; LeftArrow 
            olddir=UO.GetDir() 
            If StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Then 
               If olddir==6 Then ; GoWN 
                  dir=7 
                  ldir=7 
                  rdir=0 
                  key=38 ; UpArrow 
                  While UO.GetDir()<>7 
                     StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) 
                  Wend 
               Else ; GoSE 
                  dir=3 
                  ldir=2 
                  rdir=3 
                  key=40 ; DownArrow 
                  While UO.GetDir()<>3 
                     StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) 
                  Wend 
               Endif 
            Endif 
         Endif 

         If dx<0 AND dy<0 Then ; GoWN 
            dir=7 
            ldir=6 
            rdir=0 
            key=38 ; UpArrow 
            olddir=UO.GetDir() 
            If StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Then 
               If olddir==0 Then ; GoNE 
                  dir=1 
                  ldir=1 
                  rdir=2 
                  key=39 ; RightArrow 
                  While UO.GetDir()<>1 
                     StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) 
                  Wend 
               Else ; GoSW 
                  dir=5 
                  ldir=4 
                  rdir=5 
                  key=37 ; LeftArrow 
                  While UO.GetDir()<>5 
                     StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) 
                  Wend 
               Endif 
            Endif 
         Endif 
      Endif 
    
      If dx<>0 AND dy==0 Then 
         If dx>0 Then ; GoE 
            dir=2 
            key=34 ; PgDown 
            olddir=UO.GetDir() 
            If StepEdit(UO.GetX(),UO.GetY(),dir,key) Then 
               If olddir==2 Then ; GoSE 
                  dir=3 
                  ldir=3 
                  rdir=4 
                  key=40 ; DownArrow 
                  While UO.GetDir()<>3 
                     StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) 
                  Wend 
               Else ; GoNE 
                  dir=1 
                  ldir=1 
                  rdir=0 
                  key=39 ; RightArrow 
                  While UO.GetDir()<>1 
                     StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) 
                  Wend 
               Endif 
            Endif 
         Endif 
          
         If dx<0 Then ; GoW 
            dir=6 
            key=36 ; Home key 
            olddir=UO.GetDir() 
            If StepEdit(UO.GetX(),UO.GetY(),dir,key) Then 
               If olddir==0 Then ; GoWN 
                  dir=7 
                  ldir=7 
                  rdir=0 
                  key=38 ; UpArrow 
                  While UO.GetDir()<>7 
                     StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) 
                  Wend 
               Else ; GoSW 
                  dir=5 
                  ldir=4 
                  rdir=5 
                  key=37 ; LeftArrow 
                  While UO.GetDir()<>5 
                     StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) 
                  Wend 
               Endif 
            Endif 
         Endif 
      Endif 

      If dx==0 AND dy<>0 Then 
         If dy>0 Then ; GoS 
            dir=4 
            key=35 ; End 
            If StepEdit(UO.GetX(),UO.GetY(),dir,key) Then 
               If olddir==2 Then ; GoSE 
                  dir=3 
                  ldir=2 
                  rdir=3 
                  key=40 ; DownArrow 
                  While UO.GetDir()<>3 
                     StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) 
                  Wend 
               Else ; GoSW 
                  dir=5 
                  ldir=6 
                  rdir=5 
                  key=37 ; LeftArrow 
                  While UO.GetDir()<>5 
                     StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) 
                  Wend 
               Endif 
            Endif 
         Endif 
          
         If dy<0 Then ;GoN 
            dir=0 
            key=33 ; PgUp 
            olddir=UO.GetDir() 
            If StepEdit(UO.GetX(),UO.GetY(),dir,key) Then 
               If olddir==2 Then ; GoNE 
                  dir=1 
                  ldir=1 
                  rdir=2 
                  key=39 ; RightArrow 
                  While UO.GetDir()<>1 
                     StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) 
                  Wend 
               Else ; GoWN 
                  dir=7 
                  ldir=7 
                  rdir=6 
                  key=38 ; UpArrow 
                  While UO.GetDir()<>7 
                     StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) 
                  Wend 
               Endif 
            Endif 
         Endif 
      Endif 
   Wend 
   return 1 
end sub 


Sub StepEdit(x,y,dir,key) 
   VAR walkwait=300 
   VAR ErrLevel=0 
   If UO.GetDir()<>dir Then 
      UO.Press(key) 
      wait(walkwait) 
      If UO.GetDir()<>dir Then 
         CheckLag() 
      Endif 
   Endif 
   UO.Press(key) 
   wait(walkwait) 
   If x==UO.GetX() AND y==UO.GetY() Then 
      CheckLag() 
      If x==UO.GetX() AND y==UO.GetY() Then 
;zatik 
         ErrLevel=1 
      Endif 
   Endif 
   Return ErrLevel 
end sub 


Sub StepArrow(x,y,dir,ldir,rdir,key) 
   VAR walkwait=300 
   VAR ErrLevel=0 
   If UO.GetDir()<>dir Then 
      UO.Press(key) 
      wait(walkwait) 
      If UO.GetDir()<>dir AND UO.GetDir()<>ldir AND UO.GetDir()<>rdir Then 
         CheckLag() 
      Endif 
   Endif 

   If UO.GetX()==x AND UO.GetY()==y Then 
      UO.Press(key) 
      wait(walkwait) 
      If UO.GetDir()==dir AND UO.GetX()==x AND UO.GetY()==y Then 
         CheckLag() 
         If UO.GetDir()==dir AND UO.GetX()==x AND UO.GetY()==y Then 
; zatik          
            ErrLevel=1 
         Endif 
      Endif 
   Endif 
   Return ErrLevel 
end sub
Post Reply