Page 1 of 2

Скрипт на паузу

Posted: 2011-06-01 14:02:17
by son
Здравствуйте,народ помогите со скриптиком.В общем ситуация такая ,мне нужен маленький скрипт-пауза если можно так назвать чтобы я его смог включать отдельно и принудительно.
Суть в том что когда я Копаю или рублю и появляются Элемы скрипт продолжает работать и бегать,соответственно пока я скрипт не выключу,вальнуть элема я не могу.
Мне нужен скриптик который я могу принудительно запустить и он поставит основной скрипт на паузу а после того как я убью элема продолжит копать с последней точки.Есть ли что то подобное??Элемы очень сильные на автомате их не завалить,валить только ручками.

Re: Скрипт на паузу

Posted: 2011-06-01 14:07:48
by Incorrect User
Элемы очень сильные на автомате их не завалить
Покупай или крафти скролы некромансии Ignition. Диспелят гвардов моментально. И в скрипт добавить легко.

Re: Скрипт на паузу

Posted: 2011-06-01 14:10:47
by ZeroDX
Паузу нужно врезать в скрипт. Выкладывай скрипт.

Re: Скрипт на паузу

Posted: 2011-06-01 18:12:32
by Exist
son wrote:Здравствуйте,народ помогите со скриптиком.В общем ситуация такая ,мне нужен маленький скрипт-пауза если можно так назвать чтобы я его смог включать отдельно и принудительно.
Суть в том что когда я Копаю или рублю и появляются Элемы скрипт продолжает работать и бегать,соответственно пока я скрипт не выключу,вальнуть элема я не могу.
Мне нужен скриптик который я могу принудительно запустить и он поставит основной скрипт на паузу а после того как я убью элема продолжит копать с последней точки.Есть ли что то подобное??Элемы очень сильные на автомате их не завалить,валить только ручками.
А почему бы не сделать проверку на элема после копки? Ну например

Code: Select all

sub OreElementalCheck()
wait(3000)
UO.Set('finddistance','6') ; задаем дистанцию поиска в тайлах
UO.FindType('0x002F',-1,'ground') ; тут укажи тип элема (вместо 0х002F)
if UO.FindCount()==1 then ; если нашли элема
repeat ; то репидим
wait(5000) ; поатор в 5 сек
until UO.IsNPC('finditem')<1 ; пока элем не уйдет
end if 
return 1
end sub
Что-то типо того

Re: Скрипт на паузу

Posted: 2011-06-02 09:57:53
by son
ZeroDX wrote:Паузу нужно врезать в скрипт. Выкладывай скрипт.
Нужно в два скрипта,вот на мининг:

Code: Select all

######################################################### 
###    Mining Mountains / Копание скалл v5.1.7 Full   ### 
######################################################### 
###         Шард Dragon World / www.drw.ru            ### 
######################################################### 
################## 
### Переменные ### 
################## 
################################################################################ 
################### 
var f=file('D:\ore.dat') ## - Путь к файлу в котором будут хранится 
### координаты где копать. 
### 
var TryHiding=0 ## 1 - Перед тем как копать руду, будет пытаться уйти в хайд, 
### 0 - не будет . 
### 
var TryRecall=1 ## 1 - После того как соберет достаточный вес, будет пытаться 
### реколиться домой, 
### складывать руду в сундук и реколиться обратно , 0 - не будет.(DropOnVip 
### должно быть 0) 
###  
var GetFromFile=1 ## 1 - Координаты где копать будут считыватся из файла, 0 - 
### собиратся из клиента 
### (сначала соберите а потом считывайте из файла). 
### 
var OreQty=550 ## - Максимальный вес, добыв который надо реколиться домой. 
### (сейчас 600 стоунов) 
### 
var ControlOfDanger=1 ## 1 - Включить рекол по руне(в паке) при атаке, 0 - 
### отключить рекол. 
### 
var ElementalKill=0 ## 1 - Вылючить килл элементала, 0 - отключить(рекол). 
### 
var DangerousTime=70000 ## - Время в секундах которое чар будет ждать(после 
### рекола) пока уйдет ПК или Элемент.(сейчас 50 секунд) 
### 
var CycleScript=1 ## 1 - Скрипт не отключается после рекола от атакующего, 0 - 
### отключаетсяи закрывает UO. 
### 
var Reconnect=1 ## 1 - Включить реконнект на сервер если выкинет, 0 - отключить 
### реконнект. 
### 
var DisturbingSound=('C:\ding.wav') ## - Звук которы будет пригран при атаке. 
### (замените на свой) 
### 
var RecallDrop=1 ## 1 - Включить рекол после побега от ента домой и выложить логи, 0 -выключить. 
### 
var DropY=566 ## - Координата перед сундуком по Y. 
### 
var oldX,oldY,time ## - Для рекола.  
### 
var Pickaxe='0x0E85' 
################################################################################ 
###################  
### 
### После настройки: 
### Идите в место где будем копать. 
### Запустите cкрипт GoMining(), инжект попросит вас указать Кирку(появится 
### прицел, прицелом на неё), 
### Рунбук(появится прицел, прицелом на него) ,Руну(прицелом на нее) и Сундук 
### для логов. 
### После этого чар пойдет по координатам и будет копать руду. 
########### 
### Код ### 
########### 
sub GoMining()  

if Reconnect==1 then 
uo.Exec('exec Reconnect') 
end if 

if ControlOfDanger==1 then 
uo.Exec('exec ControlOfDanger') 
end if  

uo.Exec('exec Mining') 
end sub 

sub Mining() 
var i=0,j=0,k=0,r=0,q=0,ii,jj 
var TopX=324,TopY=65 
dim OreX[5000],OreY[5000],OreT[5000] 
dim OreTile[27] 
var flag=0,OreCount=0,clicks=0,flag2=0 
#################### 
### Графика руды ### 
#################### 
OreTile[0]=1339 
OreTile[1]=1355 
OreTile[2]=1354 
OreTile[3]=1359 
OreTile[4]=1358 
OreTile[5]=1357 
OreTile[6]=1352 
OreTile[7]=1341 
OreTile[8]=1363 
OreTile[9]=1359 
OreTile[10]=1339 
OreTile[11]=1354 
OreTile[12]=1386 
OreTile[13]=1353 
OreTile[14]=2278 
OreTile[15]=2282 
OreTile[16]=2281 
OreTile[17]=2277 
OreTile[18]=2278 
OreTile[19]=2275 
OreTile[20]=1351 
OreTile[21]=6007 
OreTile[22]=6012 
OreTile[23]=6004 
OreTile[24]=6011 
OreTile[25]=6008 
OreTile[26]=6003 

uo.FilterSpeech('on') 
uo.FilterSpeech('add', 'Where do you want to use ') 

##################################### 
### Загружаем координаты из файла ### 
##################################### 
if GetFromFile==1 then 
uo.Print('Загружаем координаты из файла...') 
f.Open() 
OreCount=safe call f.ReadNumber() 
for i=1 to OreCount 
OreT[i]=safe call f.ReadNumber() 
OreX[i]=safe call f.ReadNumber() 
OreY[i]=safe call f.ReadNumber() 
next 
f.Close() 
else 
###################################### 
### Собираем координаты из клиента ### 
###################################### 
uo.Print('Собираем координаты руды в округе...') 
repeat 
clicks=0 
flag=0 
uo.DeleteJournal() 
####################### 
### Кликаем на тайл ### 
####################### 
uo.UseType( Pickaxe ) 
wait(500) 
uo.DeleteJournal() 
while uo.Targeting() 
wait(100) 
wend 
########################### 
### Проверяем то ли это ### 
########################### 
flag=0 
for k=0 to 27 
if uo.LastTile(0)==OreTile[k]+1 then 
flag=2 
end if 
next 
if flag==0 then 
for k=0 to 27 
if uo.LastTile(0)==OreTile[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 OreCount>0 then 
for ii=1 to OreCount 
if OreX[ii]==uo.LastTile(1) and OreY[ii]==uo.LastTile(2) then 
flag2=1 
end if 
next 
end if 
if flag2==0 then 
OreCount=OreCount+1 
OreX[OreCount]=uo.LastTile(1) 
OreY[OreCount]=uo.LastTile(2) 
OreT[OreCount]=uo.LastTile(0) 
uo.Print('Найдена руда номер '+str(OreCount)+' : x='+str(uo.Lasttile(1))+' 
y='+str(uo.LastTile(2))) 
end if 
end if 
##################### 
### Кликнули выше ### 
##################### 
if flag==2 then 
flag2=0 
if OreCount>0 then 
for ii=1 to OreCount 
if OreX[ii]==uo.LastTile(1) and OreY[ii]==uo.LastTile(2) then 
flag2=1 
end if 
next 
end if 
if flag2==0 then 
OreCount=OreCount+1 
OreX[OreCount]=uo.LastTile(1) 
OreY[OreCount]=uo.LastTile(2) 
OreT[OreCount]=uo.LastTile(0)-1 
uo.print('Найдена руда номер '+str(OreCount)+' : x='+str(uo.Lasttile(1))+' 
y='+str(uo.LastTile(2))) 
end if 
end if 
until (Flag==3) or (OreCount==5000) 
uo.FilterSpeech('off') 
uo.Print('Анализ закончен, координаты руды записаны в файл  C:\ore.dat') 
SaveToFile(OreCount,OreX,OreY,OreT) 
end if 
uo.Print('Координат найдено: '+str(OreCount)) 
wait(2000) 
###################################### 
### Ходим по собранным координатам ### 
###################################### 
while 1==1 
if OreCount>0 then 
for i=1 to OreCount 
if TryRecall==1 and uo.Weight>OreQty then 
ToRecall() 
end if 
uo.Print('Идём к координате руды номер '+str(i)+': x='+str(OreX[i])+' y='+str (OreY[i])) 
InfoOre() 
flag=GotoXY(OreX[i],OreY[i]) 
if flag==1 then 
if TryHiding==1 then 
ToHide() 
end if  
GetOre(str(OreT[i]),str(OreX[i]),str(OreY[i]),str(uo.GetZ())) 
end if 
next 
end if 
wend 
end sub 

sub GetOre(Type,X,Y,Z) 
var i 
uo.Print('Начинаем копать...') 
for i=1 to 20 
if uo.Warmode()==1 then 
return 0 
end if 
wait(200) 
uo.DeleteJournal() 
CheckLag() 
wait(100) 
uo.WaitTargetTile(Type,X,Y,Z) 
uo.UseType(Pickaxe) 
wait(500)  
if WaitForChange()==1 then 
return 1 
end if 
next 
return 0 
end sub 

sub ToRecall() 
RecallToHome() 
DropOre() 
InfoOre() 
RecallToOre() 
end sub 

sub RecallToHome() 
var i 
uo.print('Реколимся домой...') 
for i=1 to 10 
uo.deletejournal() 
uo.waittargetobject(0x400B1682) 
uo.cast('Recall') 
if WaitForRecall()==1 then 
return 1 
end if 
next 
return 0 
end sub  

sub RecallToOre() 
var i 
uo.print('Реколимся обратно...') 
for i=1 to 10 
uo.deletejournal() 
uo.waittargetobject(0x40395726) 
uo.cast('Recall') 
if waitForRecall()==1 then 
return 1 
end if 
next 
return 0 
end sub 

sub ToHide() 
while not uo.Hidden() 
uo.Print('Пытаемся уйти в хайд...') 
uo.DeleteJournal() 
uo.UseSkill('Stealth') 
wait(6000) 
wend 
wait(100) 
end sub 

sub WaitForRecall() 
var Text1=uo.GetName()+": The spell fizzles." 
var mess='',lastX=uo.getX(),lastY=uo.getY() 
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 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 loosen some rocks but fail to find any useable ore.' 
var Text2='There is no ore here to mine.' 
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="You have no line of sight to that location" 
var Text7="You can't see the target"  
var Text8="Try mining in rock." 
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 or uo.Journal(0)==Text7 or uo.Journal(0)==Text8 then 
return 1 
end if 
if uo.Journal(0)==Text1 then 
wait(500) 
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 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(OreCount,OreX,OreY,OreT)  
var s=0,i=0 
var f=file("C:\ore.dat") 
f.Open() 
f.Create() 
s=safe call f.Writeln(OreCount) 
for i=1 to OreCount 
s=safe call f.Writeln(str(OreT[i])+' '+str(OreX[i])+' '+str(OreY[i])) 
next 
f.Close() 
end sub 

sub DropOre() 
ToHide() 
if uo.Waiting() then 
uo.CancelTarget() 
end if 
var a,Exit 
dim Ore[14] 
Ore[0]=0x19B9 
Ore[1]=0x19B7 
Ore[2]=0x19BA 
Ore[3]=0x19B8  
Ore[4]=0x0F11 
Ore[5]=0x0F16  
Ore[6]=0x0F18  
Ore[7]=0x0F15 
Ore[8]=0x0F10 
Ore[9]=0x0F0F 
Ore[10]=0x0F26 
Ore[11]=0x0F4C  
Ore[12]=0x0EED 
Ore[13]=0x0F20 
uo.Print('Выкладываем руду.') 
uo.SetReceivingContainer(0x400C5D57) 
wait(500) 
for a=0 to 13 
Exit=0 
repeat 
uo.FindType(Ore[a]) 
if uo.GetQuantity('finditem')>0 then 
uo.Grab('0','finditem') 
wait(1500) 
else 
Exit=1 
end if 
until Exit==1 
next 
uo.UnSetReceivingContainer(0x400C5D57) 
uo.Print('Руда выложена.') 
end sub 

sub InfoOre() 
uo.Print('У вас всего '+str(uo.Count('0x19B7')+uo.Count('0x19B8')+uo.Count('0x19B9')+uo.Count('0x19BA'))+' руды в сумке') 
uo.Print('Из нее '+str(uo.Count('0x19B7','0x0000')+uo.Count('0x19B8','0x0000') +uo.Count('0x19B9','0x0000')+uo.Count('0x19BA','0x0000'))+' железо и ' +str (uo.Count('0x19B7')+uo.Count('0x19B8')+uo.Count('0x19B9')+uo.Count('0x19BA')- (uo.Count('0x19B7','0x0000')+uo.Count('0x19B8','0x0000')+uo.Count ('0x19B9','0x0000')+uo.Count('0x19BA','0x0000')))+' цветмет') 
end sub 

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

sub ControlOfDanger() 
var danger 
var RecallPhysicalDanger=1 
var RecallSeenDanger=0 
var RecallBluePlayer=0 
while 1 
uo.DeleteJournal() 
while not uo.InJournal(':') 
wait(100) 
wend 
danger=uo.GetNotoriety(uo.JournalSerial(0)) 
if uo.InJournal('Guardian') then 
if ElementalKill==0 then 
uo.Exec('exec RecallRune') 
end if 
end if 
if RecallPhysicalDanger==1 then 
if uo.InJournal('attacking you') or uo.InJournal('An Mani') or uo.InJournal('Por Ort Grav') or uo.InJournal('In Por ') or uo.InJournal('An Ex Por') or uo.InJournal('ppN') or uo.InJournal('Adios') or uo.InJournal('MAKC') or uo.InJournal('Man') then 
uo.Exec('exec RecallRune') 
end if 
end if 
if RecallSeenDanger==1 then 
if danger==6 and uo.JournalSerial(0)<>uo.GetSerial() then 
uo.Exec('exec RecallRune') 
end if 
if danger==4 and uo.JournalSerial(0)<>uo.GetSerial() then 
uo.Exec('exec RecallRune') 
end if 
end if 
if RecallBluePlayer==1 then 
if danger==1 and uo.JournalSerial(0)<>uo.GetSerial() then 
uo.Exec('exec RecallRune') 
end if 
end if 
wend 
end sub 

sub RecallRune() 
var MX=uo.GetX('self') 
var MY=uo.GetY('self')    
uo.UseType('0x0F08') 
wait(100) 
Recall: 
uo.DeleteJournal() 
if uo.Waiting() then 
uo.CancelTarget() 
end if 
uo.WaittargetObject('0x40014354') 
wait(100) 
uo.UseType('0x1F4C') 
wait(3000) 
if not uo.GetX('self')<>MX and not uo.GetY('self')<>MY then 
goto Recall 
end if 
if uo.Life<uo.STR then 
LifeUp('Bottle') 
wait(100) 
end if 
if CycleScript==1 then 
wait(DangerousTime) 
DropOre() 
RecallToOre() 
end if 
if CycleScript==0 then 
uo.Exec('exec ExitUO') 
end if 
end sub 

sub Reconnect() 
var ReconnectTime,rFlag 
ReconnectTime='0' 
rFlag=1 
repeat 
while (uo.ObjAtLayer('Bpack')=='') 
if rFlag then 
ReconnectTime=MakeTime() 
rFlag=0 
end if 
wait(20000) 
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 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 
end if 
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 
end if 
next 
ret=t+" @ "+d 
return ret 
end sub 

sub Terminate() 
uo.Print('Все функции скрипта отключены!') 
uo.DeleteJournal() 
uo.Exec('terminate all') 
wait(100) 
uo.Exec('terminate all') 
wait(100) 
uo.Exec('terminate all') 
wait(100) 
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') 
#BETEP™# 
end sub

sub aams() 
var gumpid=0 
var buttonid=0 
var buttontext 
var i=18,j,rand 

dim reindex[8] 
reindex[0]=11 
reindex[1]=12 
reindex[2]=13 
reindex[3]=10 
reindex[4]=16 
reindex[5]=14 
reindex[6]=17 
reindex[7]=15 

for j=1 to 2 
rand=uo.random(10)*100 
wait(100) 
wait(500+rand) 
if uo.LastGump('text',4)<>"0" then 
i=19 
endif 
GumpID =val(Mid(uo.LastGump('command',i),16,4)) 
ButtonID=reindex[GumpID-2225] 
ButtonText=uo.LastGump('command', ButtonID) 
uo.LClick(Val(Mid(ButtonText,7,3)),Val(Mid(ButtonText,11,3))) 
next 
wait(500) 
endsub 

sub AntiMacro() 
while not uo.Dead() 
if not uo.LastGump('replyed') then 
if uo.LastGump('text', 0) == 'Antimacros System' then 
aams() 
end if 
endif 
wait(500) 
wend 

end sub 

sub OneClick() 

dim reindex[8] 
reindex[0] = 11 
reindex[1] = 12 
reindex[2] = 13 
reindex[3] = 10 
reindex[4] = 16 
reindex[5] = 14 
reindex[6] = 17 
reindex[7] = 15 
var GumpID = 0 
var ButtonID = 0 
var ButtonText 
var i = 18 

if uo.LastGump('text', 4) <> "0" then 
i = 19 
end if 
GumpID = val(Mid(uo.LastGump('command', i), 16, 4)) 
ButtonID = reindex[GumpID-2225] 
ButtonText = uo.LastGump('command', ButtonID) 
uo.LClick(Val(Mid(ButtonText, 7, 3)), Val(Mid(ButtonText, 11, 3))) 
wait(300) 

end sub 

sub AntiMacro() 

while not uo.Dead() 
if not uo.LastGump('replyed') then 
if uo.LastGump('text', 0) == 'Antimacros System' then 
OneClick() 
end if 
endif 
wait(500) 
wend 

end sub 

sub ExtrimalRecall()
var rune='0x400BCA62'
  uo.Usetype('0x07F2','0x0F08') ; Invisibility
  wait(100)
  uo.waittargetobject(Rune)
  uo.Cast('Recall')
end sub

sub recall() 
var recx = '1423', recy = '5422', used#x, y - ?????????? ???? ??????????.
UO.Cast('Recall','0x400BCA62') 
used = 0 
repeat 
if uo.getx('self')==recx && uo.gety('self')==recy then 
UO.UseType('0x0F08') #???? ???????, ????, ??????? ?????, ?????? ????? 
used=1 
endif 
wait(300) 
until used==1
end sub


sub Gong(times) ; play wav-file
   VAR i
   for i=1 to times
      UO.Exec("playwav d:\Alert")
      wait(1200) ; time to play sample at once
   next
end sub


sub Alarm()
   VAR CharHP=150
   while 1==1
      wait(1000)
      if UO.Life<136 then
         gong(1)
      endif      
   wend
end sub

Вот на ламбер:

Code: Select all

############################################
###    Lumberjacking / Рубка деревьев  v3.7  ###
############################################
###   Шард Dragon World / www.drw.ru  
############################################
###  Реавтор этого скрипта: BETEP [WOD]  or BETEPAH ###
############################################
############################################
### Оформление дополнений cOoler [Sw!Ne$]### 
############################################
###
#############################
###  Описание и настройка ###
############################# 
###
### Чар бегает от дерева к дереву(координаты деревьев берет из файла).
### Вырубит, бежит к следующему,при логах 700 штук в паке порталится домой скидывает логи в сундук,
### после реколится обратно бежит к последнему дереву и продолжает рубить.
### Пример: В файле 100 деревьев, вы вырубив 74 дошли до придела в 700 логов сработала система рекола
### и вы "порталитесь" домой и складываете логи в сундук,после вы реколитесь обратно в лес и бежите к 75 дереву.
### Дойдя до 100 дерева (тоесть последнего в списке) чар перейдет к 1ому дереву.(Цикличность) 
###
### Для тех то кто им пользуется сообщаю, переделал, доработал, отредактировал.! 
###
### Нововведения: 
### 1 )Логи складываются не на пол а в сундук. (BETEPAH) 
### 2 )Рекол в лес и домой по РУНБУКЕ (а не по рункам). (BETEPAH) 
### ВНИМАНИЕ!!! В СКРИПТЕ РУНБУКИ НАСТРОЕНЫ ПОД DRW (шард) 
### 3 )Система Автомарка Убрана ,и переделана в сомостоятельное маркирование деревьев 
### (раньше чар сам бегал по лесу и очень долго марчил деревья)теперь бегаем сами и просто прицелом по деревам
### (марчим также,как и раньше в руках кирка). (BETEPAH) 
### 4 )Увеличен придел замаркированых деревьев да 500 шт. (BЕТЕРАН) 
### 5 )Улучшна система Хайда (ходим, не бегаем). (BЕТЕРАН) 
### 6 )Добавлена система InfoLogs. (Mguai, доработана BETEPAH)
### 7 )Добавлен выбор кирки.(cOoler,доработана BETEPAH)
### 8 )Система реконекта (выложаная сверху),хорошо сочетается с скриптом лумбер. (Fox M)
###
### !!! Чтобы скрипт заработал ВНИМАТЕЛЬНО прочтите настройки.!!!! 
###
### Работает в 2ух режимах: 
### 1)Маркировка 
### 2)Рубка 
###
###################################
###    Режимы работы скрипта     ###   
###################################
### Режим первый - "Маркировка".### 
###################################
###
### Этот режим отвечает за Маркирование(записывание координат) деревьев. 
### Включается переменной var GetFromFile=0 ## 1 - координаты деревьев будут считыватся из файла, 0 - собиратся из клиента. 
### То есть если GetFromFile=0 координаты деревьев собиратся из клиента. 
###
### Маркировка происходит так. 
### Поставте переменную GetFromFile равную 0 (GetFromFile=0 ). Положите в суммку к себе Топор,Рунбук(с Рунами домой и в лес) и !!Кирку!!. 
### Идите в лес в котором вы хотите рубить.Запустите Скрипт main(),Инжект попросит вас указать Топор
### (появится прицел,прицелом на топор который вы с собой взяли),потом инжект попросит вас указать Рунбук(появится прицел,прицелом на него). 
### Инжект сообщит вам что ('Собираем координаты деревьев в округе...'). Чар автоматом возмет в руки кирку и появится прицел. 
### Теперь вы должны в любом порядке САМИ прицелом указать координаты (достаточно просто нажать прицелом на дерево).
### Если вы не промахнулись и "нажали" на дерево то инжект сообщит вам об этом (Найдено дерево "координаты дерева").
### Причем что если даже вы нажмете два раза на одно дерево то он не "запомнит" его повторно. 
### Ходите по лесу и марчите деревья,после того как вы "наберете" достаточное количество деревьев.
### Инжект напишет вам сообщение ('Анализ закончен, координаты деревьев записаны в файл C:\trees3.dat') и создаст файл на диске С:\ куда запишет 
### координаты деревьев.Система марка зависит от Времени и переменной Area.При Area = 1,
###марк продлится примерно 20-25 мин.Остоновить марк нельзя, можно только дождатся его конца.
###500 .Это ПРИДЕЛ (можно хоть 10,хоть 499),но если вы замарчите 501 дерево то скрипт повиснет.
### После этого чар пойдет по координатам и будет вырубать деревья. 
###
############################## 
### Режим Второй - "Рубка".###
##############################
###
### Этот режим соответственоо отвечает за рубку. 
### Включается переменной var GetFromFile=1 ## 1 - координаты деревьев будут считыватся из файла, 0 - собиратся из клиента 
### То есть если GetFromFile=1 координаты деревьев будут считыватся из файла. И вам не надо будет сново марчить деревья. 
###
### Рубка происходит так,Поставте переменную GetFromFile равную 1 ( GetFromFile=1 ).
### Положите в суммку к себе Топор и Рунбук(с Рунами домой и в лес). 
### Внимание!!! В РУНБУКЕ РУНА В 1ом слоте ДОМОЙ,в 9ом В лес.После установок рун в РУНБУК.
### ВНИМАНИЕ!!! В СКРИПТЕ НОМЕРА РУН В РУНБУКЕ НАСТРОЕНЫ ПОД DRW (шард). 
###
### Настройте скрипт под себя при помощи переменных. 
###################
### Переменные: ###
###################
### 1)var TryHiding=1 ## 1 - перед тем как рубить дерево, будет пытаться уйти в хайд, 0 - не будет 
### 2)var LogsQty=700 ## Количество логов, добыв которое надо реколиться домой. 
### 3)var TryRecall=1 ## 1 - после того как соберет LogsQty логов, будет пытаться реколиться домой,складывать логи в сундук и реколиться обратно
### (нужно указать Рунбук в которой,1 ая руна домой, а 9 ая в лес), 0 - не будет реколится домой и выключит скрипт. 
### 4)VAR Meshok='0x401C1142'## - Айди сундука в который должен складывать Логи.(айди сундука можно узнать написав ,info и прицелом на сундук
### (в данном случие этот Айди 0x401C1142).Переменная находится ниже в скрипте (примерно в районе 327 строки). 
###
### После настройки: 
###
### Идите в лес в котором вы хотите рубить.Запустите Скрипт Lumberjacking(),Инжект попросит вас указать Топор
### (появится прицел,прицелом на топор который вы с собой взяли),потом инжект попросит вас указать Рунбук(появится прицел,прицелом на него). 
### После этого чар пойдет по координатам и будет вырубать деревья. 
###########
### Код ###
########### 
sub Lumberjacking() 
var i=0,j=0,k=0,r=0,q=0,ii,jj 
var TopX=324,TopY=65 
dim TreeX[500], TreeY[500],TreeT[500] 
dim TreeTile[10] 
var flag=0,treeCount=0,clicks=0,flag2=0 
###################### 
### Меню / Options ###
######################
############################################################################################ 
var f=file("D:\trees.dat") ## - Путь к файлу в котором будут хранится координаты Деревьев. 
###
var Area=1 ## Размер обрабатываемой территории, можно менять от 1 до 4. 
###
var TryHiding=0 ## 1 - Перед тем как рубить дерево, будет пытаться уйти в хайд, 0 - не будет .
###
var TryRecall=0 ## 1 - После того как соберет LogsQty логов, будет пытаться реколиться домой, 
# складывать логи в сундук и реколиться обратно (нужно указать Рунбук в которой,1 ая руна домой, а 9 ая в лес), 0 - не будет. 
###
var LogsQty=2000 ## Количество логов, добыв которое надо реколиться домой. 
###
var GetFromFile=1 ## 1 - Координаты деревьев будут считыватся из файла, 0 - собиратся из клиента 
#(сначала соберите а потом считывайте из файла).
###
uo.exec("set norbcheck 1")# Для рекола.
### 
uo.exec("set norbcalc 1") # Для рекола .
###
############################################################################################  
########################
### Графика деревьев ###
######################## 
TreeTile[0]=3283 
TreeTile[1]=3277 
TreeTile[2]=3293 
TreeTile[3]=3296 
TreeTile[4]=3302 
TreeTile[5]=3299 
TreeTile[6]=3290 
TreeTile[7]=3288 
TreeTile[8]=3286 
TreeTile[9]=3280 

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 TryRecall==1 then
uo.print('Выбери PунБук: ') 
uo.exec('addobject Runebook') 
while uo.targeting() 
wait(100) 
wend 
end if 
#####################################
### Загружаем координаты из файла ###
##################################### 
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('Собираем координаты деревьев в округе...') 
for q=1 to Area 
if q==2 then 
gotoxy(uo.getx()+20,uo.gety()-10) 
end if 
if q==3 then 
gotoxy(uo.getx(),uo.gety()+20) 
end if 
if q==4 then 
gotoxy(uo.getx()-20,uo.gety()) 
end if 
for r=0 to 3 
if r==1 then 
gotoxy(uo.getx()+10,uo.gety()) 
end if 
if r==2 then 
gotoxy(uo.getx(),uo.gety()+10) 
end if 
if r==3 then 
gotoxy(uo.getx()-10,uo.gety()) 
end if 
for j=0 to 8 
for i=0 to 8 
clicks=0 
flag=0 
uo.DeleteJournal()
####################### 
### Кликаем на тайл ###
#######################
uo.useobject('Pickaxe')
waitForTarget() 
uo.DeleteJournal() 

WaitForTryRock()

############################### 
### Проверяем дерево ли это ###
###############################
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 9 
if uo.LastTile(0)==TreeTile[k] then 
flag=1 
end if 
next 
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('Найдено дерево: 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) 
treeY[treeCount]=uo.LastTile(2) 
TreeT[treeCount]=uo.LastTile(0)-1 
uo.print('Найдено дерево: x='+str(uo.lasttile(1))+' y='+str(uo.lastTile(2))) 
end if 
end if 
next 
next 
next 
next 
uo.exec("filterspeech off") 
uo.print('Анализ закончен, координаты деревьев записаны в файл C:\trees3.dat') 
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 then 
ToRecall() 
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 3 
if uo.warmode()==1 then 
return 0 
end if 
wait(200) 
uo.deletejournal() 
uo.WaitTargetTile(Type,X,Y,Z) 
uo.UseType(0x0F43) 
if WaitForChange()==1 then 
return 1 
end if 
next 
return 0 

end sub 

sub ToRecall() 
VAR Meshok='0x401C1142' ## - ID сундука в который чар должен складывать логи 
RecallToHome() 
wait(500) 
uo.press(36) 
wait(500) 
uo.press(36) 
wait(500) 
repeat 
wait(500) 
repeat 
wait(500) 
repeat 
wait(500) 
repeat 
wait(600) 
UO.SetReceivingContainer(Meshok) 
uo.findtype('ZLK') 
wait(500) 
UO.Grab('all','finditem') 
infologs() 
wait(500) 
until uo.GetQuantity('finditem')==0 
UO.UnSetReceivingContainer() 
UO.SetReceivingContainer(Meshok) 
uo.findtype('ZLK') 
wait(500) 
UO.Grab('all','finditem') 
infologs() 
wait(500) 
until uo.GetQuantity('finditem')==0 
UO.UnSetReceivingContainer() 
UO.SetReceivingContainer(Meshok) 
uo.findtype('ZLK') 
wait(500) 
UO.Grab('all','finditem') 
infologs() 
wait(500) 
until uo.GetQuantity('finditem')==0 
UO.UnSetReceivingContainer() 
RecallToLumber() 
end sub 

sub RecallToHome() 
UO.Print("!!Прыгаем ДоМОЙ!!") 
uo.exec("recall Runebook 21") 
wait(10000) 
end sub 

sub RecallToLumber() 
UO.Print("!!Прыгаем в ЛЕС!!") 
uo.exec("recall Runebook 1025") 
wait(10000) 
end sub 

sub ToHide() 
while not UO.Hidden() 
uo.print('Пытаемся уйти в хайд...') 
uo.deletejournal() 
UO.UseSkill("Stealth") 
wait(4100) 
wend 
wait(100) 
end sub 


sub WaitForRecall() 
var Text1=uo.getname()+": The spell fizzles." 
var mess='',lastX=uo.getX(),lastY=uo.getY() 
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 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 left here to chop.' 
var Text3="You can't reach this." 
var mess 
for var i=0 to 200 
mess=uo.journal(0) 
if uo.Journal(0)==Text2 OR uo.Journal(0)==Text3 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 abs(x-myX)<=1 AND abs(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 abs(num) 
if num>=0 then 
return num 
else 
return num*(-1) 
end if 
end sub 

sub SaveToFile(TreeCount,TreeX,TreeY,TreeT) 
var f=file("D:\trees2.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 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 OneClick() 

dim reindex[8] 
reindex[0] = 11 
reindex[1] = 12 
reindex[2] = 13 
reindex[3] = 10 
reindex[4] = 16 
reindex[5] = 14 
reindex[6] = 17 
reindex[7] = 15 
var GumpID = 0 
var ButtonID = 0 
var ButtonText 
var i = 18 

if uo.LastGump('text', 4) <> "0" then 
i = 19 
end if 
GumpID = val(Mid(uo.LastGump('command', i), 16, 4)) 
ButtonID = reindex[GumpID-2225] 
ButtonText = uo.LastGump('command', ButtonID) 
uo.LClick(Val(Mid(ButtonText, 7, 3)), Val(Mid(ButtonText, 11, 3))) 
wait(300) 

end sub 

sub AntiMacro() 

while not uo.Dead() 
if not uo.LastGump('replyed') then 
if uo.LastGump('text', 0) == 'Antimacros System' then 
OneClick() 
end if 
endif 
wait(500) 
wend 

end sub 

sub ExtrimalRecall()
var rune='0x400C5998'
  uo.Usetype('0x0F08','0x07F2') ; Invisibility
  wait(100)
  uo.waittargetobject(Rune)
  uo.Usetype('0x1F4C','0x0000') ;Recall
end sub

sub Gong(times) ; play wav-file
   VAR i
   for i=1 to times
      UO.Exec("playwav d:\Alert")
      wait(1200) ; time to play sample at once
   next
end sub


sub Alarm()
   VAR CharHP=150
   while 1==1
      wait(1000)
      if UO.Life<136 then
         gong(1)
      endif      
   wend
end sub


Re: Скрипт на паузу

Posted: 2011-06-02 10:37:56
by Incorrect User
Не хочет гвардов диспелить, джина хочет наверное и инги, ну ладно. Имхо самое простое в проверку на гвардов, после того как он их нашол втавить

Code: Select all

   repeat
   wait(1000)
   until uo.injournal('Поехали') #Любое удобное слово написать в УО
   uo.DeleteJournal()
И все когда убил гварда, написал в игре Поехали, и скрипт работает дальше.

Re: Скрипт на паузу

Posted: 2011-06-02 10:44:00
by Mirage
во втором скрипте сразу ошибка в функции sub ToRecall()
Incorrect User wrote:Не хочет гвардов диспелить, джина хочет наверное и инги, ну ладно. Имхо самое простое в проверку на гвардов, после того как он их нашол втавить
И все когда убил гварда, написал в игре Поехали, и скрипт работает дальше.
А? :shock:
:lol:

Re: Скрипт на паузу

Posted: 2011-06-02 10:53:47
by Incorrect User
Шо опять?

Re: Скрипт на паузу

Posted: 2011-06-02 11:21:12
by Incorrect User
Берем добавляем

Code: Select all

var pause=0
В трек гвадов добавляем если нашол его то изменить значение pause на 1
скрипт на паузу что я дал вставляем в сам мининг только немоного подругому

Code: Select all

 while pause=1  
   repeat
   wait(1000)
   until uo.injournal('Поехали') #Любое удобное слово написать в УО
   uo.DeleteJournal()
wend
А и изменяем значение пауза 1 на 0.

Re: Скрипт на паузу

Posted: 2011-06-02 11:26:05
by son
Incorrect User wrote:Берем добавляем

Code: Select all

var pause=0
В трек гвадов добавляем если нашол его то изменить значение pause на 1
скрипт на паузу что я дал вставляем в сам мининг только немоного подругому

Code: Select all

 while pause=1  
   repeat
   wait(1000)
   until uo.injournal('Поехали') #Любое удобное слово написать в УО
   uo.DeleteJournal()
wend
А и изменяем значение пауза 1 на 0.
Товарищи скрптеры я конечно понимаю что вы большие профессионалы в инжекте,но мне вот эти куски скриптов которые нужно куда то вставить ни о чем не говорят:).Будте любезны вставьте сами ПОЖАЛУЙСТА в скрипты на Мининг и Ламбер эти куски,чтобы был полноценный и рабочий скрипт.

Re: Скрипт на паузу

Posted: 2011-06-02 11:31:36
by ZeroDX
А если партизаны прознают слово-пароль? :lol:

Code: Select all

Repeat
  Wait(100)
Until UO.JournalSerial(UO.InJournal('Поехали') - 1) == UO.GetSerial('self')

Re: Скрипт на паузу

Posted: 2011-06-02 11:33:49
by Incorrect User
Ну чтобы проверял кто сказал, то есть имя свое.

Re: Скрипт на паузу

Posted: 2011-06-02 11:34:59
by ZeroDX
А если партизаны, прознавшие слово-пароль, создадут левочара с таким-же ником? :P

Re: Скрипт на паузу

Posted: 2011-06-02 11:38:51
by Incorrect User
На ФВ нельзя 2 одинаковых создавать.

Re: Скрипт на паузу

Posted: 2011-06-02 13:41:35
by Mirage
Incorrect User wrote:Шо опять?
я просто с утра не понял что ты напечатал :P

Проверка себя по имени или не проверка вовсе это не наш метод. Лучше 1 раз нормальную проверку организовать чтобы потом не было мучительно больно от безвременно погибшего бота. Проверка по ID чара уникальна так как ID сохраняется даже после смерти чара - оно присваивается на все время существования чара.

Code: Select all

while pause=1 
...
wend
Прямо почти то что я ему советовал ;) Норма.
Только я while на if менял так как там нет нужны в цикле внутри цикла. репеат не отпустит пока "Поехали" не скажешь.

Можно еще кстати 1 вариант сделать чтобы без флуда работать - ввести процедуру переключения переменной.
Типо

Code: Select all

sub pusk()
if pusk<>1 then
pusk = 1
endif
endsub
И тогда не надо будет ПРОИЗНОСИТЬ ключевое слово. Нужно будет 1 раз запустить процедуру.Такой метод спасет от левых флудеров но пасует в том случае если бота надо запустить своим вторым чаром.

Re: Скрипт на паузу

Posted: 2011-06-03 13:22:21
by son
Е мае ну если это так сложно может быть можно сделать так чтобы скрипт по команде stop останавливался а по команде GO начинал копать с последней точки????????????? :cry:

Re: Скрипт на паузу

Posted: 2011-06-03 13:34:52
by Incorrect User
Так всё ж уже написали как сделать.

Re: Скрипт на паузу

Posted: 2011-06-03 13:37:54
by Incorrect User
Тебе не только паузу нужно вставить но и саму функцию определения игроков и элементов переделать. У тебя сейчас мининг реколится от всех будь то элемент или плеер.

Re: Скрипт на паузу

Posted: 2011-06-03 14:29:43
by son
Ребятыыы плииз вставте это куда надо в ламбер и Мининг,ну тупой я в этом инжекте не смогу я сам разобраться,выручите нуба,эти два скрипта если будут работать как я хотел с вашей помощью самые главные для меня т.к. перс будет рубить и копать в лесу где нет пк плюс хайд.На FW не реально копать в шахтах такого количества ПК я нигде не видел ну м.б только на ДРВ.Очень нужны эти скрипты,там по другому крафту просто не выжить,а админам
глубоко пох...

Re: Скрипт на паузу

Posted: 2011-06-03 17:16:20
by Incorrect User
Ну вот мининг проверь как работает, при появлении элемента должен ставать на паузу, чтобы снять скрипт с паузы сделай хоткейс exec PauseOff и на диск С кинь файл с названием Alert.wav, это для сигнала когда вылезет элемент.

Code: Select all

######################################################### 
###    Mining Mountains / ??????? ????? v5.1.7 Full   ### 
######################################################### 
###         ???? Dragon World / www.drw.ru            ### 
######################################################### 
################## 
### ?????????? ### 
################## 
################################################################################ 
################### 
var f=file('C:\ore.dat') ## - ???? ? ????? ? ??????? ????? ???????? 
### ?????????? ??? ??????. 
### 
var TryHiding=0 ## 1 - ????? ??? ??? ?????? ????, ????? ???????? ???? ? ????, 
### 0 - ?? ????? . 
### 
var TryRecall=1 ## 1 - ????? ???? ??? ??????? ??????????? ???, ????? ???????? 
### ?????????? ?????, 
### ?????????? ???? ? ?????? ? ?????????? ??????? , 0 - ?? ?????.(DropOnVip 
### ?????? ???? 0) 
###  
var GetFromFile=1 ## 1 - ?????????? ??? ?????? ????? ?????????? ?? ?????, 0 - 
### ????????? ?? ??????? 
### (??????? ???????? ? ????? ?????????? ?? ?????). 
### 
var OreQty=550 ## - ???????????? ???, ????? ??????? ???? ?????????? ?????. 
### (?????? 600 ???????) 
### 
var ControlOfDanger=1 ## 1 - ???????? ????? ?? ????(? ????) ??? ?????, 0 - 
### ????????? ?????. 
### 
var DangerousTime=70000 ## - ????? ? ???????? ??????? ??? ????? ?????(????? 
### ??????) ???? ????? ?? ??? ???????.(?????? 50 ??????) 
### 
var CycleScript=1 ## 1 - ?????? ?? ??????????? ????? ?????? ?? ??????????, 0 - 
### ???????????? ????????? UO. 
### 
var Reconnect=1 ## 1 - ???????? ????????? ?? ?????? ???? ???????, 0 - ????????? 
### ?????????. 
### 
var DisturbingSound=('C:\ding.wav') ## - ???? ?????? ????? ??????? ??? ?????. 
### (???????? ?? ????) 
### 
var RecallDrop=1 ## 1 - ???????? ????? ????? ?????? ?? ???? ????? ? ???????? ????, 0 -?????????. 
### 
var DropY=566 ## - ?????????? ????? ???????? ?? Y. 
### 
var oldX,oldY,time ## - ??? ??????.  
### 
var Pickaxe='0x0E85'
###
uo.setglobal('Pause','Off')
###
###
################################################################################ 
###################  
### 
### ????? ?????????: 
### ????? ? ????? ??? ????? ??????. 
### ????????? c????? GoMining(), ?????? ???????? ??? ??????? ?????(???????? 
### ??????, ???????? ?? ???), 
### ??????(???????? ??????, ???????? ?? ????) ,????(???????? ?? ???) ? ?????? 
### ??? ?????. 
### ????? ????? ??? ?????? ?? ??????????? ? ????? ?????? ????. 
########### 
### ??? ### 
########### 
sub GoMining() 

if Reconnect==1 then 
uo.Exec('exec Reconnect') 
end if 

if ControlOfDanger==1 then 
uo.Exec('exec ControlOfDanger') 
end if  

uo.Exec('exec Mining') 
end sub 

sub Mining() 
var i=0,j=0,k=0,r=0,q=0,ii,jj 
var TopX=324,TopY=65 
dim OreX[5000],OreY[5000],OreT[5000] 
dim OreTile[27] 
var flag=0,OreCount=0,clicks=0,flag2=0 
#################### 
### ??????? ???? ### 
#################### 
OreTile[0]=1339 
OreTile[1]=1355 
OreTile[2]=1354 
OreTile[3]=1359 
OreTile[4]=1358 
OreTile[5]=1357 
OreTile[6]=1352 
OreTile[7]=1341 
OreTile[8]=1363 
OreTile[9]=1359 
OreTile[10]=1339 
OreTile[11]=1354 
OreTile[12]=1386 
OreTile[13]=1353 
OreTile[14]=2278 
OreTile[15]=2282 
OreTile[16]=2281 
OreTile[17]=2277 
OreTile[18]=2278 
OreTile[19]=2275 
OreTile[20]=1351 
OreTile[21]=6007 
OreTile[22]=6012 
OreTile[23]=6004 
OreTile[24]=6011 
OreTile[25]=6008 
OreTile[26]=6003 

uo.FilterSpeech('on') 
uo.FilterSpeech('add', 'Where do you want to use ') 

##################################### 
### ????????? ?????????? ?? ????? ### 
##################################### 
if GetFromFile==1 then 
uo.Print('????????? ?????????? ?? ?????...') 
f.Open() 
OreCount=safe call f.ReadNumber() 
for i=1 to OreCount 
OreT[i]=safe call f.ReadNumber() 
OreX[i]=safe call f.ReadNumber() 
OreY[i]=safe call f.ReadNumber() 
next 
f.Close() 
else 
###################################### 
### ???????? ?????????? ?? ??????? ### 
###################################### 
uo.Print('???????? ?????????? ???? ? ??????...') 
repeat 
clicks=0 
flag=0 
uo.DeleteJournal() 
####################### 
### ??????? ?? ???? ### 
####################### 
uo.UseType( Pickaxe ) 
wait(500) 
uo.DeleteJournal() 
while uo.Targeting() 
wait(100) 
wend 
########################### 
### ????????? ?? ?? ??? ### 
########################### 
flag=0 
for k=0 to 27 
if uo.LastTile(0)==OreTile[k]+1 then 
flag=2 
end if 
next 
if flag==0 then 
for k=0 to 27 
if uo.LastTile(0)==OreTile[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 OreCount>0 then 
for ii=1 to OreCount 
if OreX[ii]==uo.LastTile(1) and OreY[ii]==uo.LastTile(2) then 
flag2=1 
end if 
next 
end if 
if flag2==0 then 
OreCount=OreCount+1 
OreX[OreCount]=uo.LastTile(1) 
OreY[OreCount]=uo.LastTile(2) 
OreT[OreCount]=uo.LastTile(0) 
uo.Print('??????? ???? ????? '+str(OreCount)+' : x='+str(uo.Lasttile(1))+' 
y='+str(uo.LastTile(2))) 
end if 
end if 
##################### 
### ???????? ???? ### 
##################### 
if flag==2 then 
flag2=0 
if OreCount>0 then 
for ii=1 to OreCount 
if OreX[ii]==uo.LastTile(1) and OreY[ii]==uo.LastTile(2) then 
flag2=1 
end if 
next 
end if 
if flag2==0 then 
OreCount=OreCount+1 
OreX[OreCount]=uo.LastTile(1) 
OreY[OreCount]=uo.LastTile(2) 
OreT[OreCount]=uo.LastTile(0)-1 
uo.print('??????? ???? ????? '+str(OreCount)+' : x='+str(uo.Lasttile(1))+' 
y='+str(uo.LastTile(2))) 
end if 
end if 
until (Flag==3) or (OreCount==5000) 
uo.FilterSpeech('off') 
uo.Print('?????? ????????, ?????????? ???? ???????? ? ????  C:\ore.dat') 
SaveToFile(OreCount,OreX,OreY,OreT) 
end if 
uo.Print('????????? ???????: '+str(OreCount)) 
wait(2000) 
###################################### 
### ????? ?? ????????? ??????????? ### 
###################################### 
while 1==1 
if OreCount>0 then 
for i=1 to OreCount 
if TryRecall==1 and uo.Weight>OreQty then 
ToRecall() 
end if 
uo.Print('???? ? ?????????? ???? ????? '+str(i)+': x='+str(OreX[i])+' y='+str (OreY[i])) 
InfoOre() 
flag=GotoXY(OreX[i],OreY[i]) 
if flag==1 then 
if TryHiding==1 then 
ToHide() 
end if  
GetOre(str(OreT[i]),str(OreX[i]),str(OreY[i]),str(uo.GetZ())) 
end if 
next 
end if 
wend 
end sub 

sub GetOre(Type,X,Y,Z)
if uo.getglobal('Pause')=='On' then
repeat
wait (500)
until uo.getglobal('Pause')=='Off'
endif
var i 
uo.Print('???????? ??????...') 
for i=1 to 20 
if uo.Warmode()==1 then 
return 0 
end if 
wait(200) 
uo.DeleteJournal() 
CheckLag() 
wait(100) 
uo.WaitTargetTile(Type,X,Y,Z) 
uo.UseType(Pickaxe) 
wait(500)  
if WaitForChange()==1 then 
return 1 
end if 
next 
return 0 
end sub 

sub ToRecall() 
RecallToHome() 
DropOre() 
InfoOre() 
RecallToOre() 
end sub 

sub RecallToHome() 
var i 
uo.print('????????? ?????...') 
for i=1 to 10 
uo.deletejournal() 
uo.waittargetobject(0x400B1682) 
uo.cast('Recall') 
if WaitForRecall()==1 then 
return 1 
end if 
next 
return 0 
end sub  

sub RecallToOre() 
var i 
uo.print('????????? ???????...') 
for i=1 to 10 
uo.deletejournal() 
uo.waittargetobject(0x40395726) 
uo.cast('Recall') 
if waitForRecall()==1 then 
return 1 
end if 
next 
return 0 
end sub 

sub ToHide() 
while not uo.Hidden() 
uo.Print('???????? ???? ? ????...') 
uo.DeleteJournal() 
uo.UseSkill('Stealth') 
wait(6000) 
wend 
wait(100) 
end sub 

sub WaitForRecall() 
var Text1=uo.GetName()+": The spell fizzles." 
var mess='',lastX=uo.getX(),lastY=uo.getY() 
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 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 loosen some rocks but fail to find any useable ore.' 
var Text2='There is no ore here to mine.' 
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="You have no line of sight to that location" 
var Text7="You can't see the target"  
var Text8="Try mining in rock." 
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 or uo.Journal(0)==Text7 or uo.Journal(0)==Text8 then 
return 1 
end if 
if uo.Journal(0)==Text1 then 
wait(500) 
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 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(OreCount,OreX,OreY,OreT)  
var s=0,i=0 
var f=file("C:\ore.dat") 
f.Open() 
f.Create() 
s=safe call f.Writeln(OreCount) 
for i=1 to OreCount 
s=safe call f.Writeln(str(OreT[i])+' '+str(OreX[i])+' '+str(OreY[i])) 
next 
f.Close() 
end sub 

sub DropOre() 
ToHide() 
if uo.Waiting() then 
uo.CancelTarget() 
end if 
var a,Exit 
dim Ore[14] 
Ore[0]=0x19B9 
Ore[1]=0x19B7 
Ore[2]=0x19BA 
Ore[3]=0x19B8  
Ore[4]=0x0F11 
Ore[5]=0x0F16  
Ore[6]=0x0F18  
Ore[7]=0x0F15 
Ore[8]=0x0F10 
Ore[9]=0x0F0F 
Ore[10]=0x0F26 
Ore[11]=0x0F4C  
Ore[12]=0x0EED 
Ore[13]=0x0F20 
uo.Print('??????????? ????.') 
uo.SetReceivingContainer(0x400C5D57) 
wait(500) 
for a=0 to 13 
Exit=0 
repeat 
uo.FindType(Ore[a]) 
if uo.GetQuantity('finditem')>0 then 
uo.Grab('0','finditem') 
wait(1500) 
else 
Exit=1 
end if 
until Exit==1 
next 
uo.UnSetReceivingContainer(0x400C5D57) 
uo.Print('???? ????????.') 
end sub 

sub InfoOre() 
uo.Print('? ??? ????? '+str(uo.Count('0x19B7')+uo.Count('0x19B8')+uo.Count('0x19B9')+uo.Count('0x19BA'))+' ???? ? ?????') 
uo.Print('?? ??? '+str(uo.Count('0x19B7','0x0000')+uo.Count('0x19B8','0x0000')+uo.Count('0x19B9','0x0000')+uo.Count('0x19BA','0x0000'))+' ?????? ? ' +str (uo.Count('0x19B7')+uo.Count('0x19B8')+uo.Count('0x19B9')+uo.Count('0x19BA')- (uo.Count('0x19B7','0x0000')+uo.Count('0x19B8','0x0000')+uo.Count ('0x19B9','0x0000')+uo.Count('0x19BA','0x0000')))+' ???????') 
end sub 

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

sub ControlOfDanger() 
var danger 
var RecallPhysicalDanger=1 
var RecallSeenDanger=0 
var RecallBluePlayer=0 
while 1 
uo.DeleteJournal() 
while not uo.InJournal(':') 
wait(100) 
wend 
danger=uo.GetNotoriety(uo.JournalSerial(0)) 
if uo.InJournal('Guardian') then 
uo.print('Элемент Пауза включена!')
UO.Exec("playwav С:\Alert.wav")
uo.Exec('exec PauseOn')
uo.deletejournal()
end if 
if RecallPhysicalDanger==1 then 
if uo.InJournal('attacking you') or uo.InJournal('An Mani') or uo.InJournal('Por Ort Grav') or uo.InJournal('In Por ') or uo.InJournal('An Ex Por') or uo.InJournal('ppN') or uo.InJournal('Adios') or uo.InJournal('MAKC') or uo.InJournal('Man') then 
uo.Exec('exec RecallRune') 
end if 
end if 
if RecallSeenDanger==1 then 
if danger==6 and uo.JournalSerial(0)<>uo.GetSerial() then 
uo.Exec('exec RecallRune') 
end if 
if danger==4 and uo.JournalSerial(0)<>uo.GetSerial() then 
uo.Exec('exec RecallRune') 
end if 
end if 
if RecallBluePlayer==1 then 
if danger==1 and uo.JournalSerial(0)<>uo.GetSerial() then 
uo.Exec('exec RecallRune') 
end if 
end if 
wend 
end sub 

sub PauseOn()
uo.setglobal('Pause','On')
endsub

sub PauseOff()
uo.setglobal('Pause','Off')
uo.print('Пауза выключена!')
endsub

sub RecallRune() 
var MX=uo.GetX('self') 
var MY=uo.GetY('self')    
uo.UseType('0x0F08') 
wait(100) 
Recall: 
uo.DeleteJournal() 
if uo.Waiting() then 
uo.CancelTarget() 
end if 
uo.WaittargetObject('0x40014354') 
wait(100) 
uo.UseType('0x1F4C') 
wait(3000) 
if not uo.GetX('self')<>MX and not uo.GetY('self')<>MY then 
goto Recall 
end if 
if uo.Life<uo.STR then 
LifeUp('Bottle') 
wait(100) 
end if 
if CycleScript==1 then 
wait(DangerousTime) 
DropOre() 
RecallToOre() 
end if 
if CycleScript==0 then 
uo.Exec('exec ExitUO') 
end if 
end sub 

sub Reconnect() 
var ReconnectTime,rFlag 
ReconnectTime='0' 
rFlag=1 
repeat 
while (uo.ObjAtLayer('Bpack')=='') 
if rFlag then 
ReconnectTime=MakeTime() 
rFlag=0 
end if 
wait(20000) 
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 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 
end if 
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 
end if 
next 
ret=t+" @ "+d 
return ret 
end sub 

sub Terminate() 
uo.Print('??? ??????? ??????? ?????????!') 
uo.DeleteJournal() 
uo.Exec('terminate all') 
wait(100) 
uo.Exec('terminate all') 
wait(100) 
uo.Exec('terminate all') 
wait(100) 
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') 
#BETEP™# 
end sub

sub aams() 
var gumpid=0 
var buttonid=0 
var buttontext 
var i=18,j,rand 

dim reindex[8] 
reindex[0]=11 
reindex[1]=12 
reindex[2]=13 
reindex[3]=10 
reindex[4]=16 
reindex[5]=14 
reindex[6]=17 
reindex[7]=15 

for j=1 to 2 
rand=uo.random(10)*100 
wait(100) 
wait(500+rand) 
if uo.LastGump('text',4)<>"0" then 
i=19 
endif 
GumpID =val(Mid(uo.LastGump('command',i),16,4)) 
ButtonID=reindex[GumpID-2225] 
ButtonText=uo.LastGump('command', ButtonID) 
uo.LClick(Val(Mid(ButtonText,7,3)),Val(Mid(ButtonText,11,3))) 
next 
wait(500) 
endsub 

sub AntiMacro() 
while not uo.Dead() 
if not uo.LastGump('replyed') then 
if uo.LastGump('text', 0) == 'Antimacros System' then 
aams() 
end if 
endif 
wait(500) 
wend 

end sub 

sub OneClick() 

dim reindex[8] 
reindex[0] = 11 
reindex[1] = 12 
reindex[2] = 13 
reindex[3] = 10 
reindex[4] = 16 
reindex[5] = 14 
reindex[6] = 17 
reindex[7] = 15 
var GumpID = 0 
var ButtonID = 0 
var ButtonText 
var i = 18 

if uo.LastGump('text', 4) <> "0" then 
i = 19 
end if 
GumpID = val(Mid(uo.LastGump('command', i), 16, 4)) 
ButtonID = reindex[GumpID-2225] 
ButtonText = uo.LastGump('command', ButtonID) 
uo.LClick(Val(Mid(ButtonText, 7, 3)), Val(Mid(ButtonText, 11, 3))) 
wait(300) 

end sub 

sub AntiMacro() 

while not uo.Dead() 
if not uo.LastGump('replyed') then 
if uo.LastGump('text', 0) == 'Antimacros System' then 
OneClick() 
end if 
endif 
wait(500) 
wend 

end sub 

sub ExtrimalRecall()
var rune='0x400BCA62'
  uo.Usetype('0x07F2','0x0F08') ; Invisibility
  wait(100)
  uo.waittargetobject(Rune)
  uo.Cast('Recall')
end sub

sub recall() 
var recx = '1423', recy = '5422', used#x, y - ?????????? ???? ??????????.
UO.Cast('Recall','0x400BCA62') 
used = 0 
repeat 
if uo.getx('self')==recx && uo.gety('self')==recy then 
UO.UseType('0x0F08') #???? ???????, ????, ??????? ?????, ?????? ????? 
used=1 
endif 
wait(300) 
until used==1
end sub


sub Gong(times) ; play wav-file
   VAR i
   for i=1 to times
      UO.Exec("playwav d:\Alert")
      wait(1200) ; time to play sample at once
   next
end sub


sub Alarm()
   VAR CharHP=150
   while 1==1
      wait(1000)
      if UO.Life<136 then
         gong(1)
      endif      
   wend
end sub