Помогите со скриптом на ламбер плз!

Ask for help

Moderators: Murderator+, Murderator

Post Reply
Патрон
Posts: 6
Joined: 2016-04-30 13:37:13

Помогите со скриптом на ламбер плз!

Post by Патрон »

Code: Select all

################################### 

###    Режимы работы скрипта    ###    

################################### 

###   Работает в 2х режимах:    ### 

###   1)Маркировка              ### 

###   2)Рубка                   ### 

################################### 

### Режим Первый - "Маркировка" ### 

################################### 

### Этот режим отвечает за Маркирование(записывание координат) деревьев. 

### Включается переменной var GetFromFile=0 ## 1 - координаты деревьев будут считыватся из файла, 0 - собиратся из клиента. 

### То есть если GetFromFile=0 координаты деревьев собиратся из клиента. 

### 

### Маркировка происходит так:

### Поставте переменную GetFromFile равную 0 (GetFromFile=0). 

### Положите к себе в сумку Топор,Руну(в безопасное место) и Кирку. 

### Идите в лес в котором вы хотите рубить. 

### Запустите Скрипт Lumberjacking(), инжект попросит вас указать Топор 

### (появится прицел,прицелом на топор который вы с собой взяли), 

### потом инжект попросит вас указать Руну в безопасное место(прицелом на нее). 

### Инжект сообщит вам что ('Собираем координаты деревьев в округе...'). 

### Инжект попросит вас указать Кирку(появится прицел,прицелом на неё). 

### Теперь вы должны в любом порядке сами прицелом указать координаты(достаточно просто нажать прицелом на дерево). 

### Если вы не промахнулись и "нажали" на дерево, то инжект сообщит вам об этом(Найдено дерево "координаты дерева"). 

### Причем что если даже вы нажмете два раза на одно дерево то он не "запомнит" его повторно. 

### Ходите по лесу и марчите деревья. 

### Для того чтобы остановить марк нажмите таргетом от кирки на себя. 

### Инжект напишет вам сообщение ('Анализ закончен, координаты деревьев записаны в файл' +FileName) и создаст файл на диске 

### С: куда запишет координаты деревьев. 

### После этого чар пойдет по координатам и будет вырубать деревья. 

### 

############################## 

### Режим Второй - "Рубка" ### 

############################## 

### Этот режим соответственно отвечает за рубку. 

### Включается переменной var GetFromFile=1 ## 1 - координаты деревьев будут считыватся из файла, 0 - собиратся из клиента 

### То есть если GetFromFile=1 координаты деревьев будут считыватся из файла. 

### И вам не надо будет сново марчить деревья. 

### 

### Рубка происходит так: 

### Поставте переменную GetFromFile равную 1 (GetFromFile=1). 

### Положите к себе в сумку Топор и Рунки (домой и в лес). 

### 

######################################### 

###  Дополнительные функции скрипта   ### 

######################################### 

###     В скрипте 3е доп. функции:    ### 

###     1)Употребление Пищи           ### 

###     2)Рекол при Атаке             ### 

###     3)Реконнект                   ### 

######################################### 

### Функция Первая - "Употребление Пищи" ### 

############################################ 

### Этот режим соответственно отвечает за Употребление Пищи. 

### Включается переменной var EatingFood=1 ## 1 - Будем есть, 0 - нет. 

### То есть если EatingFood=1 чар будет кушать. 

### 

### Употребление Пищи происходит так: 

### Поставте переменную EatingFood равную 1 (EatingFood=1). 

### Положите в сундук куда будут выгружаться логи и где лежат реколы - еду, 

### тип которой вы указали тут var TypeFood='0x097B' ## - Тип еды которую будем кушать.(сейчас фиштейки) 

### После того как чар выложит логи, будет кушать. 

### Он берет 20 единиц еды и кушает, что осталось выгружает обратно в сундук. 

### 

########################################## 

### Функция Вторая - "Рекол при Атаке" ### 

########################################## 

### Этот режим соответственно отвечает за Рекол при атаке ентов и не только(также стоит проверка на ПК и Криминалов). 

### Включается переменной var ControlOfDanger=1 ## 1 - Включить рекол по руне(в паке) при атаке, 0 - отключить рекол. 

### То есть если ControlOfDanger=1 чар будет реколиться при атаке. 

### 

### Побег происходит так: 

### Поставте переменную ControlOfDanger равную 1 (ControlOfDanger=1). 

### Замарчите Руну в безопасном месте. 

### Положите к себе в сумку 

### Руну(которую замарчили в безопасном месте), Реагенты(Black Pearls,Blood Moss,Mandrake Root.) 

### и Бутылки расчитывая на то сколько вы хотите рубить.(Invizible Potion,Mana Potion,Heal Potion). 

### При атаке, появлении ПК или криминала вы выпиваете Invizible Potion, автоматически телепортитесь на то место, 

### где замаркана руна(в бакпаке). 

### В это время записывается имя того кто вас атачил. 

### После рекола руна маркается и проверяется ваша мана и здоровье, если чегото меньше, 

### чар выпивает Mana Potion или Heal Potion в зависимости от надобности. 

### 

###################################### 

### Вариант Первый - "Цыкличность" ### 

######################################

### Есди вы хотите чтобы скрипт не прекращал свою работу, то поставьте переменную CycleScript раную 1 (CycleScript=1), 

### затем после указания предметов таргетом задите в "Edit current script"(в окно редактирования скрипта) и 

### поставьте переменную AddObject равную 0 (AddObject=0). 

### Теперь после рекола скрипт не будет выключаться, а будет ждать указанное время(DangerousTime) и затем 

### реколиться домой, выкладывать логи, есть и опять реколиться на место рубки и рубить. 

### 

##################################### 

### Вариант Второй - "Выключение" ### 

##################################### 

### Есди вы хотите чтобы скрипт не прекращал свою работу, то поставьте переменную CycleScript раную 0 (CycleScript=0), 

### Теперь после рекола скрипт выключится и закроет окно UO. 

### 

####################################### 

### Функция Третья - "Реконнект" ### 

#######################################

### Этот режим соответственно отвечает за Реконнект при выкидывании с сервера. 

### Включается переменной var Reconnect=0 ## 1 - Включить реконнект на сервер если выкинет, 0 - отключить реконнект. 

### То есть если Reconnect=1 чар будет реколиться при атаке. 

### 

### Реконнект происходит так: 

### Поставте переменную Reconnect равную 1 (Reconnect=1). 

### Если вдруг повиснет игровая сфера или вас выкинет по любой другой причине 

### реконнектор законнектит вас на сервер автоматически. 

### Пишется время дисконнекта и коннекта на сервер. 

### 

### ]![ Настройте скрипт под себя при помощи переменных. ]![ 

###

##################

### Переменные ###

##################

################################################################################


################################## 

### 

var FileName=('C:treesm.dat') ## - Путь к файлу в котором будут хранится координаты деревьев.

### 


var TryRecall=1 ## 1 - После того как соберет LogsQty логов, будет пытаться реколиться домой, 

### складывать логи в сундук и реколиться обратно , 0 - не будет. 

### 

var LogsQty=2000 ## - Количество логов, добыв которое надо реколиться домой. 

### 

var QuantityImpact=15 ## - Сколько раз чар будет ударять по дереву, прежде чем перейдет к другому.(стандарт - 15) 

### 

var ControlOfDanger=1 ## 1 - Включить рекол по руне(в паке) при атаке, 0 - отключить рекол. 

### 

var PhysicalDanger=0 ## 1 - влючить рекол при физической атаке, 0 - отключить рекол. 

### 

var SeenDanger=0 ## 1 - влючить рекол при появлении рядом ПК ил криминала, 0 - отключить рекол. 

### 

var RecallFromAll=0 ## 1 - включить рекол при появлении рядом любово чара, 0 - отключить рекол. 

### 

var DisturbingSound=('C:WINDOWSMEDIATada.wav') ## - Звук которы будет пригран при атаке.(замените на свой) 

### 

var DangerousTime=220000 ## - Время которое чар будет ждать(после рекола) пока уйдет ПК или Ент.(сейчас 50 секунд) 

### 

var CycleScript=0 ## 1 - Скрипт не отключается после рекола от атакующего, 0 - отключаетсяи закрывает UO. 

### 

var EatingFood=1 ## 1 - Будем есть, 0 - нет.  

### 

var TypeFood='0x097B' ## - Тип еды которую будем кушать.(сейчас фиштейки) 

### 

var Reconnect=0 ## 1 - Включить реконнект на сервер если выкинет, 0 - отключить реконнект. 

### 

var Chest='0x40243648' ## - ID сундука куда будут выгружаться логи, где должны лежать реколы и еда. 

### 

var AddObject=1 ## 1 - Если надо добавить обьекты, 0 - не надо. 

### 

################################################################################


################################## 

### 

### После настройки: 

### Идите в лес в котором вы хотите рубить. 

### Запустите cкрипт Lumberjacking(), Инжект попросит вас указать Топор 

### (появится прицел, прицелом на топор который вы с собой взяли), 

### затем инжект попросит вас указать Рунки (появится прицел, прицелом на них)

### После этого чар пойдет по координатам и будет вырубать деревья. 

########### 

### Код ### 

########### 

sub Lumberjacking() 
   
   var i=0,j=0,k=0,r=0,q=0,ii,jj,f 
   
   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[24]=3460 
   
   TreeTile[25]=3461 
   
   TreeTile[26]=3462 
   
   TreeTile[27]=3290 
   
   TreeTile[28]=3288 
   
   
   
   if AddObject==1 then 
      
      uo.FilterSpeech('on') 
      
      uo.FilterSpeech('add', 'Where do you want to use the pickaxe?') 
      
      
      
      uo.Print('Выбери Топор: ') 
      
      uo.Exec('addobject Axe') 
      
      while uo.Targeting() 
         
         wait(100) 
         
      wend 
      
      
      
      if TryRecall==1 then 
         
         uo.Print('Rune to Home')
         
         uo.Exec('addobject Home')
         
         while uo.Targeting()
            
            wait(100) 
            
         wend 
         
         
         
         uo.Print('Rune to Les')
         
         uo.Exec('addobject Les')
         
         while uo.Targeting()
            
            wait(100)
            
         wend 
         
      end if
      
      
      
      if ControlOfDanger==1 then 
         
         uo.Print('Выбери Руну: ') 
         
         uo.Exec('addobject Rune') 
         
         while uo.Targeting() 
            
            wait(100) 
            
         wend 
         
      end if 
      
   end if 
   
   
   
   if ControlOfDanger==1 then 
      
      uo.Exec('exec ControlOfDanger') 
      
   end if 

      
      f=file(FileName) 
      
      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 
      
      ###################################### 
      
      ### Собираем координаты из клиента ### 
      
      ###################################### 
округе...') 
      
      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 
2) 
               
               TreeT[TreeCount]=uo.LastTile(0) 
               
               uo.Print('Найдено дерево номер '+str(TreeCount)+' : x='+str(uo.Lasttile(1))+' y='+str(uo.LastTile(2))) 
               
            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) 
               
               Tr
         end if 
         
      until (flag==3) or (TreeCount==5000) 
      
      uo.FilterSpeech('off') 
      
      uo.Print('Анализ закончен, координаты деревьев записаны в файл ' + FileName) 
      
      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 TryRecall==1 and uo.Count('ZLK')>=LogsQty or uo.Weight>=uo.STR*4+20 then 
               
               ToRecall() 
               
            end if 
            
            uo.Print('Идем к дереву номер '+str(i)+': x='+str(TreeX[i])+' y='+str(TreeY[i])) 
            
            InfoLogs() 
            

      

   f=file(FileName) 
   
   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 GetTree(Type,X,Y,Z) 
   
   var i 
   
   uo.Print('Начинаем рубку дерева...') 
   
   for i=0 to QuantityImpact 
      
      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 WaitForRecall() 
   
   var Text1=uo.GetName()+': The spell fizzles.' 
   
   var LastX=uo.GetX() 
   
   var LastY=uo.GetY() 
   
   var mess='' 
   
   for var i=0 to 200 
      
      mess=uo.Journal(0) 
      
      if uo.Journal(0)==Text1 then 
         
         return 0 
         
      end if 
      
      if uo.GetX()<>LastX or uo.GetY()<>LastY then 
         
         return 1 
         
      end if 
      
      wait(50) 
      
   next 
   
   return 0 
   
end sub 



sub WaitForHide() 
   
   var Text1=uo.GetName()+': You have hidden yourself well' 
   
   var Text2=uo.GetName()+": You can't seem to stealth 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='Вы ударили по дереву, однако безрезультатно'  # 'You hack at the tree for a while, but fail to produce any useable wood'
   var Text2='There is nothing 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='Это кажется свободным для вашего удара.'  # 'It appears immune to your blow'
   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]=='В' and mess[1]=='ы' and mess[3]=='п' and mess[4]=='о' and mess[5]=='л' and mess[6]=='о' then
         return 0
      end if
      wait(50)
   next
   return 0
end sub 



sub WaitForTryRock() 
   
   var Text1='That is too far away.' #Вы не можете до этого достать.
   
   var Text2='Попробуйте копать в другом месте.' 
   
   var Text3='Тут ничего нету.' 
   
   var Text4='У вас нет обзора к этому местоположению.' 
   
   var Text5="You can't use the %s where it is." 
   
   var Text6='It appears immune to your blow.' 
   
   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 or uo.Journal(0)==Text6 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 MovingItems(tItem,cItem,qItem,FromBackPack) 
   
   var idResivCont,idSendCont 
   
   Open(Chest) 
   
   uo.UseObject('backpack') 
   
   if FromBackPack==1 then 
      
      idResivCont=uo.GetSerial('backpack') 
      
      idSendCont=Chest 
      
   else 
      
      idSendCont=uo.GetSerial('backpack') 
      
      idResivCont=Chest 
      
   end if        
   
   CheckLag()    
   
   uo.Findtype(tItem,cItem,idSendCont) 
   
   while uo.GetQuantity('finditem')>0 
      
      uo.MoveItem('finditem',str(qItem),idResivCont) 
      
      wait(1000) 
      
      CheckLag() 
      
      if qItem>0 then 
         
         return 
         
      end if 
      
      uo.FindType(tItem,cItem,idSendCont) 
      
   wend 
   
end sub 



sub InfoTrees(sNum,fStr,lStr,Sort) 
   
   var n=VAL(Right(sNum,1)) 
   
   if n==0 then 
      
      if Sort==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 Sort==0 then 
      
      uo.Print(fStr+'ев'+lStr) 
      
   else 
      
      uo.Print(fStr+'ов'+lStr) 
      
   end if 
   
end sub 



sub Open(Container) 
   
   uo.DeleteJournal() 
   
   uo.UseObject(Container) 
   
   repeat 
      
      wait(500) 
      
   until uo.InJournal('Contains') 
   
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 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 ToHide()
   VAR LastTimer, n=0, HidFlag=1
   
   if UO.Hidden() then
      HidFlag=0
   else
      UO.Print('Щас как спрячусь!..')
   end if
   
   while HidFlag
      deljournal("can't seem to hide|to perform|stop trying|прекратили|не удалось|удачно")
      LastTimer=UO.Timer()
      UO.exec('warmode 0')
      UO.useskill('Hiding')
      repeat
         wait(300)
      until UO.InJournal("can't seem to hide|to perform|stop trying|прекратили|не удалось|удачно") || LastTimer+100<UO.Timer()
      if UO.InJournal("удачно") then
         HidFlag=0
      else
         n=n+1
         if n>3 then
            UO.Print('Спрятаться не получается, происходит что-то тревожное и непонятное, готовься к смерти, неудачнег!')
            return
         end if
      end if
   wend
   
end sub 



sub ToRecall()
   
   uo.Exec('terminate ControlOfDanger') 
   
   RecallToHome() 
   
   DropLogs() 
   
   InfoLogs() 
   
   if EatingFood==1 then 
      
      EatingFood() 
      
   end if 
   
   wait(3000) 
   
   RecallToLumber() 
   
   if ControlOfDanger==1 then 
      
      uo.Exec('exec ControlOfDanger') 
      
   end if
   
end sub 



sub RecallToHome() 
   
   uo.Print('Прыгаем Домой.') 
   
   UO.WaitTargetObject('Home')
   
   uo.cast('Recall')
   
   WaitForRecall()
   
end sub 



sub RecallToLumber() 
   
   uo.Print('Прыгаем в Лес.') 
   
   UO.WaitTargetObject('Les')
   
   uo.cast('Recall')
   
   WaitForRecall() 
   
end sub 



sub DropLogs() 
   
   var Time,Space 
   
   Time=Time() 
   
   Space=' ' 
   
   uo.TextOpen() 
   
   uo.TextPrint("Выкладываем логи - " +Space +Time) 
   
   ToHide() 
   
   VAR a 
   
   VAR LastTimer 
   
   DIM Log[1] 
   
   Log[1]=0x1BDD
   
   
   
   uo.say("Bank") 
   
   wait(1000)
   
   CheckLag()
   
   For a=1 to 1 
      
      While UO.Count(Log[a])>0 
         
         UO.FindType(Log[a],-1,-1) 
         
         UO.MoveItem('finditem',0,Chest) 
         
         wait(1000) 
         
      Wend 
      
   next  
   
   if UO.Mana < 30 then 
      
      while UO.Mana<UO.Int 
         
         LastTimer=UO.Timer() 
         
         UO.UseSkill('Meditation') 
         
         repeat 
            
            wait(100) 
            
         until UO.InJournal("You are") OR UO.InJournal("You lose") OR UO.Timer()>LastTimer+200 
         
         UO.DeleteJournal() 
         
         wait(200) 
         
      wend 
      
   endif    
   
end sub



sub EatingFood() 
   
   var Time,Space 
   
   Time=Time() 
   
   Space=' ' 
   
   uo.TextOpen() 
   
   uo.TextPrint('Кушаем - ' +Space +Time) 
   
   MovingItems(TypeFood,'-1',20,1) 
   
   repeat     
      
      CheckLag() 
      
      if uo.Count(TypeFood)<=0 then 
         
         uo.Exec('terminate EatingFood') 
         
      end if 
      
      uo.UseType(TypeFood) 
      
      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 
      
   until uo.InJournal('too full') or uo.Dead() 
   
   while uo.Count(TypeFood)>0 
      
      MovingItems(TypeFood,'-1',-1,0) 
      
   wend 
   
end sub 



sub ControlOfDanger() 
   
   var Time,danger,Space 
   
   Time=Time() 
   
   Space=' ' 
   
   while 1 
      
      uo.DeleteJournal() 
      
      while not uo.InJournal(':') 
         
         wait(100) 
         
      wend 
      
      danger=uo.GetNotoriety(uo.JournalSerial(0)) 
      
      
      
      if uo.InJournal('attacking you') then 
         
         uo.GetStatus('uo.JournalSerial(0)') 
         
         uo.SetGlobal('name',uo.GetName(uo.JournalSerial(0))) 
         
         uo.TextOpen() 
         
         uo.TextPrint('Вы были атакованы - '+uo.GetName(uo.JournalSerial(0)) +Space +Time) 
         
         uo.Exec('exec RecallRune') 
         
      end if 
      
   end if 
   
   
   
   if SeenDanger==1 then 
      
      if Danger==6 and UO.JournalSerial(0) <> UO.GetSerial() then 
         
         uo.GetStatus('uo.JournalSerial(0)') 
         
         uo.SetGlobal('name',uo.GetName(uo.JournalSerial(0))) 
         
         uo.TextOpen() 
         
         uo.TextPrint('Рядом оказался ПК - '+uo.GetName(uo.JournalSerial(0)) +Space +Time) 
         
         uo.Exec('exec RecallRune') 
         
      end if 
      
      
      
      if Danger==4 and UO.JournalSerial(0) <> UO.GetSerial() then 
         
         uo.GetStatus('uo.JournalSerial(0)') 
         
         uo.SetGlobal('name',uo.GetName(uo.JournalSerial(0))) 
         
         uo.TextOpen() 
         
         uo.TextPrint('Рядом оказался криминал - '+uo.GetName(uo.JournalSerial(0)) +Space +Time) 
         
         uo.Exec('exec RecallRune') 
         
      end if 
      
      
      
      if RecallFromAll==1 then 
         
         if Danger==1 and UO.JournalSerial(0) <> UO.GetSerial() then 
            
            uo.GetStatus('uo.JournalSerial(0)') 
            
            uo.SetGlobal('name',uo.GetName(uo.JournalSerial(0))) 
            
            uo.TextOpen() 
            
            uo.TextPrint('Рядом оказался чар - '+uo.GetName(uo.JournalSerial(0)) +Space +Time) 
            
            uo.Exec('exec RecallRune') 
            
         end if 
         
      end if 
      
   end if 
   
wend 

end sub  



sub RecallRune() 
   
   Terminate() 
   
   uo.PlayWav(DisturbingSound) 
   
   uo.UseType('0x0F0E','0x0631') 
   
   wait(100) 
   
   uo.WaitTargetObject('Rune')
   
   uo.Exec('warmode 0')
   
   uo.Cast('Recall')
   
   WaitForRecall()
   
   repeat
      
      uo.DeleteJournal()
      
      uo.WaitTargetObject('Rune')
      
      wait(100)
      
      uo.Cast('Mark')
      
      if uo.InJournal('mana for this spell') then
         
         ManaUp('Bottle')
         
         wait(100)
         
      end if
      
      wait(13000)
      
   until not uo.InJournal('spell fizzles')
   
   if uo.Life<uo.STR then 
      
      LifeUp('Bottle')
      
      wait(100) 
      
   end if 
   
   if CycleScript==1 then 
      
      uo.Exec('exec DangerWait') 
      
   end if 
   
   if CycleScript==0 then 
      
      uo.Exec('exec ExitUO') 
      
   end if 
   
end sub 



sub DisturbingSound(amount) 
   
   var i 
   
   for i=1 to amount 
      
      uo.PlayWav(DisturbingSound)
      
      wait(1500)
      
   next
   
end sub



sub DangerWait() 
   
   wait(DangerousTime) 
   
   ToRecall() 
   
   uo.Exec('exec Lumberjacking')
   
end sub 



sub ExitUO() 
   
   wait(3000) 
   
   uo.CloseUO() 
   
end sub



sub LifeUp(Mode)
   
   if Mode=='Healing' then
      
      while uo.Life<uo.STR
         
         uo.Exec('bandageself')
         
         wait(4000)
         
      wend
      
   end if
   
   if Mode=='Bottle' then
      
      if uo.Life<uo.STR then
         
         uo.UseType('0x0F0E','0x09BB')
         
         wait(100)
         
      end if
      
   end if
   
end sub



sub ManaUp(Mode)
   
   if Mode=='Meditation' then
      
      while uo.Mana<uo.INT
         
         uo.Exec('useskill Meditation')
         
         wait(4000)
         
      wend
      
   end if
   
   if Mode=='Bottle' then
      
      if uo.Mana<uo.INT then
         
         uo.UseType('0x0F0E','0x09DF')
         
         wait(100)
         
      end if
      
   end if
   
end sub



sub Reconnect()
   
   var ReconnectTime,rflag
   
   ReconnectTime='0'
   
   rflag=1
   
   repeat
      
      while (uo.ObjAtLayer('Bpack')=='')
         
         if rflag then
            
            ReconnectTime=Time()
            
            rflag=0 
            
         end if 
         
         wait(30000) 
         
         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.TextOpen() 
         
         uo.TextPrint('Disconnected & Reconnected @ '+ReconnectTime) 
         
         rflag=1 
         
         ReconnectTime='0' 
         
      end if 
      
   until false 
   
end sub 



sub Time() 
   
   var Date,nTime,uTime,i 
   
   uTime=str(uo.Time()) 
   
   nTime='' 
   
   for i=0 to Len(uTime) 
      
      nTime=uTime[Len(uTime)-i]+nTime 
      
      if (i==2) or (i==4) then 
         
         nTime=':'+nTime 
         
      end if 
      
   next 
   
   uTime=str(uo.Date()) 
   
   Date='' 
   
   for i=0 to Len(uTime) 
      
      Date=uTime[Len(uTime)-i]+Date 
      
      if (i==2) or (i==4) then 
         
         Date='.'+Date 
         
      end if 
      
   next 
   
   uTime=nTime+' @ '+Date 
   
   return uTime 
   
end sub 



sub Terminate() 
   
   uo.Exec('terminate Lumberjacking') 
   
   uo.Exec('terminate ControlOfDanger')
   
   uo.Exec('terminate Reconnect') 
   
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('a Backpack') 
   
end sub

Sub deljournal(msg)
   
   while UO.InJournal(msg)
      UO.SetJournalLine(UO.InJournal(msg)-1,"")
   wend
   
end sub



Last edited by Патрон on 2016-05-06 23:17:22, edited 1 time in total.
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: Помогите со скриптом на ламбер плз!

Post by Mirage »

как минимум в sub ControlOfDanger() ошибка в цикле. Если отступы расставлять через программу то это сразу становится видно.

PS зачем столько красных строк и лишних энтеров? О_о
Патрон
Posts: 6
Joined: 2016-04-30 13:37:13

Re: Помогите со скриптом на ламбер плз!

Post by Патрон »

Mirage wrote:как минимум в sub ControlOfDanger() ошибка в цикле. Если отступы расставлять через программу то это сразу становится видно.

PS зачем столько красных строк и лишних энтеров? О_о

без понятия зачем столько энтеров) знакомый дал скрипт.
Патрон
Posts: 6
Joined: 2016-04-30 13:37:13

Re: Помогите со скриптом на ламбер плз!

Post by Патрон »

Incorrect User wrote:Тут возьми и допили https://yoko.uokit.com/viewtopic.php?f=17&t=17663
Пробовал изменить ни чего не получилось. каждый раз какие-то ошибки. я в коде не силён.
Попробовал твой скрипт запустить всё по инструкции делал на маркировке всегда выбивает. инжект последней версии
Last edited by Патрон on 2016-05-05 14:39:32, edited 1 time in total.
Incorrect User
Posts: 949
Joined: 2011-05-23 00:33:30

Re: Помогите со скриптом на ламбер плз!

Post by Incorrect User »

А текстовый файл создает с координатами, внутри есть они?
Патрон
Posts: 6
Joined: 2016-04-30 13:37:13

Re: Помогите со скриптом на ламбер плз!

Post by Патрон »

Incorrect User wrote:А текстовый файл создает с координатами, внутри есть они?
неа.
Incorrect User
Posts: 949
Joined: 2011-05-23 00:33:30

Re: Помогите со скриптом на ламбер плз!

Post by Incorrect User »

Он должен быть по адресу C:\Users\Edgard\Desktop\Injection_uo\trees1.dat или C:\Users\Desktop\Injection_uo\trees.dat, не знаю какой вариант ты копировал. Если такого не найдешь, замени в скрипте все такие адреса (их 4) на свои.
Патрон
Posts: 6
Joined: 2016-04-30 13:37:13

Re: Помогите со скриптом на ламбер плз!

Post by Патрон »

Менял пути файлов но не помогло,после заканчивания маркировки выбивает ошибку и не записывает файлы.((

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

Re: Помогите со скриптом на ламбер плз!

Post by Mirage »

в процедуре sub GetTree(Type,X,Y,Z) поменять uo.UseObject('Axe') на
uo.usetype( uo.GetGraphic('Axe') )
Если в паке будет несколько топоров то будут браться по типу все пока есть топоры в паке, а не по уникальному ID. Главное что бы лежали все по одинаковому.
Патрон
Posts: 6
Joined: 2016-04-30 13:37:13

Re: Помогите со скриптом на ламбер плз!

Post by Патрон »

Благодарю Мираж.
Post Reply