| Yoko http://forum.yoko.com.ua/ |
|
| Типа опрос =) http://forum.yoko.com.ua/viewtopic.php?f=20&t=5516 |
Page 1 of 2 |
| Author: | ZondeR [ 2006-02-05 15:48:30 ] |
| Post subject: | Типа опрос =) |
Народ кто юзает скрипты ветра на ламбер и мининг, у вас я хотел бы спросить: возвращактся ли чар к последней выкопанной координате после того как отреколился домой для сброса руды? В описаниях этих скриптов пишется что должен возвращаться а у меня почемуто не работает((((( |
|
| Author: | GimFlex [ 2006-02-05 15:51:50 ] |
| Post subject: | |
поэтому надо писать скрипт под себя частями только использую скрипт ветра на ламбер =) а ваще единственно ценное в скрипте ветра это маркировка =) |
|
| Author: | ZondeR [ 2006-02-05 17:01:19 ] |
| Post subject: | |
Question wrote: поэтому надо писать скрипт под себя частями только использую скрипт ветра на ламбер =) а ваще единственно ценное в скрипте ветра это маркировка =)
На счет маркировки согласен. В принцыпе я его скрипт полностью переделал под себя а вот с возвращение к последней координате никак не разберусь. Даже найти тот модуль который отвечает за эту функцию найти не могу =(((( |
|
| Author: | ZondeR [ 2006-02-05 17:52:22 ] |
| Post subject: | |
Квест не мог бы мне показать где именно та часть скрипта которая отвечает за возвращение к последней точке))) Quote: #########################################################
### Mining Mountains / Копание скалл v5.1.7 Full ### ######################################################### ### Шард Dragon World / www.drw.ru ### ######################################################### ################## ### Переменные ### ################## ################################################################################ ################### var FileName=('C:\ore.dat') ## - Путь к файлу в котором будут хранится ### координаты где копать. ### var TryHiding=1 ## 1 - Перед тем как копать руду, будет пытаться уйти в хайд, ### 0 - не будет . ### var TryRecall=1 ## 1 - После того как соберет достаточный вес, будет пытаться ### реколиться домой, ### складывать руду в сундук и реколиться обратно , 0 - не будет.(DropOnVip ### должно быть 0) ### var GetFromFile=0 ## 1 - Координаты где копать будут считыватся из файла, 0 - ### собиратся из клиента ### (сначала соберите а потом считывайте из файла). ### var OreQty=500 ## - Максимальный вес, добыв который надо реколиться домой. ### (сейчас 600 стоунов) ### var ControlOfDanger=1 ## 1 - Включить рекол по руне(в паке) при атаке, 0 - ### отключить рекол. ### var ElementalKill=0 ## 1 - Вылючить килл элементала, 0 - отключить(рекол). ### var DangerousTime=60000 ## - Время в секундах которое чар будет ждать(после ### рекола) пока уйдет ПК или Элемент.(сейчас 50 секунд) ### var CycleScript=1 ## 1 - Скрипт не отключается после рекола от атакующего, 0 - ### отключаетсяи закрывает UO. ### var Reconnect=0 ## 1 - Включить реконнект на сервер если выкинет, 0 - отключить ### реконнект. ### var DisturbingSound=('C:\warning.wav') ## - Звук которы будет пригран при атаке. ### (замените на свой) ### var DropX=1669 ## - Координата перед сундуком по X. ### var DropY=566 ## - Координата перед сундуком по Y. ### var DropOnVip=0 ## - Если в ВИП пещере пожходить к сундука и сбрасывать руду. ### (TryRecall должно быть 0) ################################################################################ ################### ### ### После настройки: ### Идите в место где будем копать. ### Запустите cкрипт GoMining(), инжект попросит вас указать Кирку(появится ### прицел, прицелом на неё), ### Рунбук(появится прицел, прицелом на него) ,Руну(прицелом на нее) и Сундук ### для логов. ### После этого чар пойдет по координатам и будет копать руду. ########### ### Код ### ########### sub GoMining() uo.Print('Выбери Кирку: ') uo.Exec('addobject Pickaxe') while uo.Targeting() wait(100) wend uo.Print('Выбери Сундук: ') uo.Exec('addobject Chest') while uo.Targeting() wait(100) wend if ControlOfDanger==1 then uo.Exec('exec ControlOfDanger') end if if Reconnect==1 then uo.Exec('exec Reconnect') end if if DropOnVip==0 then RecallToOre() end if uo.Exec('exec Mining') end sub sub Mining() var i=0,j=0,k=0,r=0,q=0,ii,jj,f 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 OreTile[27]=0 uo.FilterSpeech('on') uo.FilterSpeech('add', 'Where do you want to use the pickaxe?') ##################################### ### Загружаем координаты из файла ### ##################################### if GetFromFile==1 then uo.Print('Загружаем координаты из файла...') f=file(FileName) 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.UseObject('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('Анализ закончен, координаты руды записаны в файл ' +FileName) 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() i=1 end if if DropOnVip==1 and TryRecall==0 and uo.Weight>OreQty then DropOnVip() i=1 end if j=i*2-1 if j>OreCount then j=2*(OreCount-i+1) end if uo.Print('Идём к координате руды номер '+str(j)+': x='+str(OreX[j])+' y='+str (OreY[j])) InfoOre() flag=GotoXY(OreX[j],OreY[j],2) if TryHiding==1 then ToHide() end if if flag==1 then GetOre(str(OreT[j]),str(OreX[j]),str(OreY[j]),str(uo.GetZ())) end if next end if wend end sub sub SaveToFile(OreCount,OreX,OreY,OreT) var s=0,i=0,f f=file(FileName) 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 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.UseObject('Pickaxe') wait(500) if WaitForChange()==1 then return 1 end if 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 Open(Container) uo.DeleteJournal() uo.UseObject(Container) repeat wait(500) until uo.InJournal('Contains') end sub sub GotoXY(x,y,r) var lastX=0,lastY=0,i=0 while Numb(y-uo.GetY())>r if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then return 1 end if if (y-uo.GetY())>r then LastX=uo.GetX() LastY=uo.GetY() for i=0 to 2 uo.Press(35) if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then return 1 end if next if LastY==uo.GetY() then for i=0 to 2 uo.Press(37) if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then return 1 end if next end if if LastY==uo.GetY() then for i=0 to 2 uo.Press(40) if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then return 1 end if next end if if LastX==uo.GetX() and LastY==uo.GetY() then for i=0 to 5 uo.Press(38) if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then return 1 end if next end if end if if (uo.GetY()-y)>r then LastY=uo.GetY() for i=0 to 2 uo.Press(33) if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then return 1 end if next if LastY==uo.GetY() then for i=0 to 2 uo.Press(39) if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then return 1 end if next end if if LastY==uo.GetY() then for i=0 to 2 uo.Press(38) if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then return 1 end if next end if if LastX==uo.GetX() and LastY==uo.GetY() then for i=0 to 5 uo.Press(40) if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then return 1 end if next end if end if wend while Numb(x-uo.GetX())>r if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then return 1 end if if (x-uo.GetX())>r then LastX=uo.GetX() LastY=uo.GetY() for i=0 to 2 uo.Press(34) if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then return 1 end if next if LastX==uo.GetX() then for i=0 to 2 uo.Press(40) if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then return 1 end if next end if if LastX==uo.GetX() then for i=0 to 2 uo.Press(39) if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then return 1 end if next end if if LastX==uo.GetX() and LastY==uo.GetY() then for i=0 to 5 uo.Press(37) if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then return 1 end if next end if end if if (uo.GetX()-x)>r then LastX=uo.GetX() for i=0 to 2 uo.Press(36) if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then return 1 end if next if LastX==uo.GetX() then for i=0 to 2 uo.Press(38) if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then return 1 end if next end if if LastX==uo.GetX() then for i=0 to 2 uo.Press(37) if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then return 1 end if next end if if LastX==uo.GetX() and LastY==uo.GetY() then for i=0 to 5 uo.Press(39) if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then return 1 end if next end if end if wend if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then return 1 else return 0 end if return 0 end sub sub Numb(num) if num>=0 then return num else return num*(-1) end if 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 ToHide() while not uo.Hidden() uo.Print('Пытаемся уйти в хайд...') uo.DeleteJournal() uo.UseSkill('Stealth') wait(6000) wend wait(100) end sub sub ToRecall() RecallToHome() DropOre() RecallToOre() end sub sub RecallToHome() uo.Print('Прыгаем домой.') mrecall(0x40014354) end sub sub RecallToOre() uo.Print('Прыгаем в Пещеру.') mrecall(0x40068DC9) end sub sub DropOre() var o,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 ToHide() if uo.Waiting() then uo.CancelTarget() end if uo.SetReceivingContainer('Chest') wait(500) for o=0 to 13 exit=0 repeat uo.FindType(Ore[o]) if uo.GetQuantity('finditem')>0 then uo.Grab('0','finditem') wait(1500) else exit=1 end if until exit==1 next uo.UnSetReceivingContainer('Chest') end sub sub DropOnVip() Walk(DropX,DropY,'') DropOre() 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==1 then uo.Exec('exec ElementalKill') end if 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') 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') Terminate() 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() uo.Exec('exec Mining') end if if CycleScript==0 then uo.Exec('exec ExitUO') end if 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 ElementalKill() var Count,LastTimer,Elemental var o,exit dim Ore[13] Ore[1]=0x19B9 Ore[2]=0x19B7 Ore[3]=0x19BA Ore[4]=0x19B8 Ore[5]=0x0F11 Ore[6]=0x0F16 Ore[7]=0x0F18 Ore[8]=0x0F15 Ore[9]=0x0F10 Ore[10]=0x0F0F Ore[11]=0x0F26 Ore[12]=0x1F4C Ore[13]=0x0EED Terminate() uo.UseType('0x0F0E','0x0631') ## - Инвизка(тип,цвет). while uo.STR<uo.Life+1 if uo.Mana>=50 then uo.WaitMenu('What','Daemon') uo.Cast('Polymorph') wait(8000) else uo.UseType('0x0F0E','0x09DF') ## - Тотал Мана(тип,цвет). wait(3000) end if wend LastTimer=uo.Timer() repeat uo.BandageSelf() wait(4000) until uo.Life==uo.STR or LastTimer+300<uo.Timer() uo.UseType('0x1B76') ## - Хеатер Щит(тип). uo.DeleteJournal() uo.Exec('warmode 1') uo.FindType('0x0010',-1,'ground') Elemental=uo.GetSerial('finditem') uo.Attack(Elemental) repeat wait(1000) if uo.Life<50 Then uo.UseType('0x0F0E','0x09BB') ## - Греатер Хеал(тип,цвет). end if if uo.GetDistance(Elemental)>1 then WalkN(0,0,Elemental) end if until uo.IsNPC(Elemental)==0 wait(3000) uo.Exec('warmode 0') wait(1000) LastTimer=uo.Timer() uo.DeleteJournal() for o=1 to 13 exit=0 repeat uo.FindType(Ore[o],-1,'ground') if uo.GetQuantity('finditem')>0 then uo.Grab('0','finditem') wait(1500) else exit=1 end if until exit==1 next ### uo.Exec('warmode 1') uo.Exec('warmode 0') uo.Exec('exec Mining') end sub sub WalkN(x,y,Target) var i,StepSucess var DX,DY,exit=0 while exit<>1 if Target<>"" then DX=uo.GetX(Target)-uo.GetX() DY=uo.GetY(Target)-uo.GetY() if uo.GetDistance(Target)<2 then exit=1 end if else DX=X-uo.GetX() DY=Y-uo.GetY() exit=1 end if end if if DX<>0 and DY<>0 then if DX>0 and DY>0 then StepSucess=Go(3,40,300) if StepSucess==-1 then StepSucess=Go(7,38,300) StepSucess=Go(1,39,300) if StepSucess==-1 then StepSucess=Go(5,37,300) end if end if end if if DX>0 and DY<0 then StepSucess=Go(1,39,300) if StepSucess==-1 then StepSucess=Go(5,37,300) StepSucess=Go(3,40,300) if StepSucess==-1 then StepSucess=Go(7,38,300) end if end if end if if DX<0 and DY>0 then StepSucess=Go(5,37,300) if StepSucess==-1 then StepSucess=Go(1,39,300) StepSucess=Go(7,38,300) if StepSucess==-1 then StepSucess=Go(3,40,300) end if end if end if if DX<0 and DY<0 then StepSucess=Go(7,38,300) if StepSucess==-1 then StepSucess=Go(3,40,300) StepSucess=Go(5,37,300) if StepSucess==-1 then StepSucess=Go(1,39,300) end if end if end if end if if DX<>0 and DY==0 then if DX>0 then StepSucess=Go(2,34,300) if StepSucess==-1 then StepSucess=Go(3,40,300) if StepSucess==-1 then StepSucess=Go(1,39,300) end if StepSucess=Go(2,34,300) end if end if if DX<0 then StepSucess=Go(6,36,300) if StepSucess==-1 then StepSucess=Go(7,38,300) if StepSucess==-1 then StepSucess=Go(5,37,300) end if StepSucess=Go(6,36,300) end if end if end if if DX==0 and DY<>0 then if DY>0 then StepSucess=Go(4,35,300) if StepSucess==-1 then StepSucess=Go(3,40,300) if StepSucess==-1 then StepSucess=Go(5,37,300) end if StepSucess=Go(4,35,300) end if end if if DY<0 then StepSucess=Go(0,33,300) if StepSucess==-1 then StepSucess=Go(1,39,300) if StepSucess==-1 then StepSucess=Go(7,38,300) endif StepSucess=Go(0,33,300) end if end if end if wend end sub sub Go(dir,key,walkwait) var X,Y,OldDir X=uo.GetX() Y=uo.GetY() OldDir=uo.GetDir() if uo.GetDir()<>dir then uo.Press(key) wait(walkwait) if uo.GetDir()<>dir then end if end if uo.Press(key) wait(walkwait) if X==uo.GetX() and Y==uo.GetY() then end if if X==uo.GetX() and Y==uo.GetY() and OldDir<>uo.GetDir() then uo.Press(key) wait(walkwait) end if if X==uo.GetX() and Y==uo.GetY() then end if if X==uo.GetX() and Y==uo.GetY() then return -1 else return 1 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(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 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 Mining') end sub sub TerminateAll() uo.Exec('terminate Mining') uo.Exec('terminate ControlOfDanger') uo.Exec('terminate Reconnect') uo.Exec('terminate RecallRune') uo.Exec('terminate DropOre') uo.Exec('terminate DangerWait') uo.Exec('terminate DangerWait') end sub sub CheckLag() if uo.Waiting()>0 then uo.Exec('canceltarget') end if uo.DeleteJournal() uo.Click('backpack') repeat wait(50) until uo.InJournal('backpack') end sub sub GoCorpse() var Elemental='0x4000466F' Walk(0,0,Elemental) end sub sub Walk(X,Y,Target) var Targeting='' var Result var DX,DY,GLX,GLY var DirW=0 var exit=0 while exit<>1 if Target<>'' then Targeting=Target DX=uo.GetX(Target)-uo.GetX() DY=uo.GetY(Target)-uo.GetY() if uo.GetDistance(Target)<2 then exit=1 end if else DX=X-uo.GetX() DY=Y-uo.GetY() GLX=DX GLY=DY if DX==0 and DY==0 then exit=1 end if end if if exit==0 then if DX>0 and DY>0 then DirW=9 end if if DX>0 and DY<0 then DirW=7 end if if DX<0 and DY>0 then DirW=3 end if if DX<0 and DY<0 then DirW=5 end if if DX<>0 and DY==0 then if DX>0 then DirW=8 else DirW=4 end if end if if DX==0 and DY<>0 then if DY>0 then DirW=2 else DirW=6 end if end if Result=Go(DirW) if Result==0 then Result=Go(DirW-2) if Result==0 then Result=Go(DirW+2) end if end if end if wend end sub sub Go(dir) var WalkWait=100 var Targeting='' var X,Y,GLX,GLY var check=1 var StartingDir=uo.GetDir() X=uo.GetX() Y=uo.GetY() dim MoveKey[12] MoveKey[0]=34 MoveKey[1]=40 MoveKey[2]=35 MoveKey[3]=37 MoveKey[4]=36 MoveKey[5]=38 MoveKey[6]=33 MoveKey[7]=39 MoveKey[8]=34 MoveKey[9]=40 MoveKey[10]=35 MoveKey[11]=37 dim StartDir[12] StartDir[0]=2 StartDir[1]=3 StartDir[2]=4 StartDir[3]=5 StartDir[4]=6 StartDir[5]=7 StartDir[6]=0 StartDir[7]=1 StartDir[8]=2 StartDir[9]=3 StartDir[10]=4 StartDir[11]=5 while uo.GetDir()<>StartDir[dir] uo.Press(MoveKey[dir]) wait(WalkWait) if uo.GetDir()==StartingDir then CheckLag() end if if (Targeting<>'' and uo.GetDistance(Targeting)<2) or (GLX==0 and GLY==0) then return 1 end if wend uo.Press(MoveKey[dir]) wait(WalkWait) if X==uo.GetX() and Y==uo.GetY() then CheckLag() uo.Press(MoveKey[dir]) wait(WalkWait) end if if X==uo.GetX() and Y==uo.GetY() then return 0 else return 1 end if end sub sub mrecall(rune) repeat CheckLag() UO.WaitTargetObject(rune) UO.UseType('0x1F4C') wait(5000) until NOT UO.InJournal("spell fizzles") markrune: If UO.InJournal("fades completely") then CheckLag() UO.WaitTargetObject(rune) UO.Cast('Mark') endif wait(5000) If UO.InJournal("spell fizzles") then goto markrune endif end sub |
|
| Author: | GimFlex [ 2006-02-05 17:56:54 ] |
| Post subject: | |
это на мининг скрипт а не на ламбер я чето не нашел |
|
| Author: | ZondeR [ 2006-02-05 18:03:23 ] |
| Post subject: | |
Question wrote: это на мининг скрипт а не на ламбер я чето не нашел
А как он примерно выглядит?? И как вообще это можно осуществить? В описании этого скрипта было сказано типа: "Дошел до 74 точки из 100 и набрал максвес, рекол домой потом обратно в шахту и идет к 75-й" Хотя бы примерно подскажи как это осуществить я сам попробую дописать... |
|
| Author: | GimFlex [ 2006-02-05 18:24:25 ] |
| Post subject: | |
Code: for i=1 to 100 |
|
| Author: | ZondeR [ 2006-02-05 18:39:57 ] |
| Post subject: | |
Спасибо щас затестю... |
|
| Author: | ZondeR [ 2006-02-05 20:33:37 ] |
| Post subject: | |
попробовал заменить ходилку на эту: Quote: sub WalkN(x,y,Target)
var i,StepSucess var DX,DY,exit=0 while exit<>1 if Target<>"" then DX=uo.GetX(Target)-uo.GetX() DY=uo.GetY(Target)-uo.GetY() if uo.GetDistance(Target)<2 then exit=1 end if else DX=X-uo.GetX() DY=Y-uo.GetY() exit=1 end if end if if DX<>0 and DY<>0 then if DX>0 and DY>0 then StepSucess=Go(3,40,300) if StepSucess==-1 then StepSucess=Go(7,38,300) StepSucess=Go(1,39,300) if StepSucess==-1 then StepSucess=Go(5,37,300) end if end if end if if DX>0 and DY<0 then StepSucess=Go(1,39,300) if StepSucess==-1 then StepSucess=Go(5,37,300) StepSucess=Go(3,40,300) if StepSucess==-1 then StepSucess=Go(7,38,300) end if end if end if if DX<0 and DY>0 then StepSucess=Go(5,37,300) if StepSucess==-1 then StepSucess=Go(1,39,300) StepSucess=Go(7,38,300) if StepSucess==-1 then StepSucess=Go(3,40,300) end if end if end if if DX<0 and DY<0 then StepSucess=Go(7,38,300) if StepSucess==-1 then StepSucess=Go(3,40,300) StepSucess=Go(5,37,300) if StepSucess==-1 then StepSucess=Go(1,39,300) end if end if end if end if if DX<>0 and DY==0 then if DX>0 then StepSucess=Go(2,34,300) if StepSucess==-1 then StepSucess=Go(3,40,300) if StepSucess==-1 then StepSucess=Go(1,39,300) end if StepSucess=Go(2,34,300) end if end if if DX<0 then StepSucess=Go(6,36,300) if StepSucess==-1 then StepSucess=Go(7,38,300) if StepSucess==-1 then StepSucess=Go(5,37,300) end if StepSucess=Go(6,36,300) end if end if end if if DX==0 and DY<>0 then if DY>0 then StepSucess=Go(4,35,300) if StepSucess==-1 then StepSucess=Go(3,40,300) if StepSucess==-1 then StepSucess=Go(5,37,300) end if StepSucess=Go(4,35,300) end if end if if DY<0 then StepSucess=Go(0,33,300) if StepSucess==-1 then StepSucess=Go(1,39,300) if StepSucess==-1 then StepSucess=Go(7,38,300) endif StepSucess=Go(0,33,300) end if end if end if wend end sub но выдавалась ошибка в выделенной строке... |
|
| Author: | ZondeR [ 2006-02-06 14:14:01 ] |
| Post subject: | |
А куда правильно впихнуть то что ты написал? |
|
| Author: | GimFlex [ 2006-02-06 14:19:27 ] |
| Post subject: | |
я написал примерную функцию ее надо под особенности скрипта переделывать |
|
| Author: | ZondeR [ 2006-02-06 14:28:01 ] |
| Post subject: | |
Ну смысл того что ты написал и саму идею я понял, но только вот в чем проблема: допустим мы набрали максимальный вес или среколились от ПК а потом идем к последней точке посредством команды Quote: goto(x,y,i) - где i точка на которой закончили
но вот когда он подойдет к этой точке то запускаестся sub mining() который начнет капать с первой точки. Я прикинул что можно добавить еще один саб mining2() допустим который будет отличаться от mining() только тем что будет идти к i после сброса или рекола. Но до конца не понимаю как это осуществить(( |
|
| Author: | ZondeR [ 2006-02-06 14:31:08 ] |
| Post subject: | |
Кстати для этого нужна ходилка соответствующая в которой Goto(x,y,i) значение i былобы точкой а не расстояние до точки. |
|
| Author: | GimFlex [ 2006-02-06 14:33:04 ] |
| Post subject: | |
блин выложи сюда скрипт которым ты капаешь щас |
|
| Author: | ZondeR [ 2006-02-06 14:38:31 ] |
| Post subject: | |
Quote: #########################################################
### Mining Mountains / Копание скалл v5.1.7 Full ### ######################################################### ### Шард Dragon World / www.drw.ru ### ######################################################### ################## ### Переменные ### ################## ################################################################################ ################### var FileName=('C:\ore.dat') ## - Путь к файлу в котором будут хранится ### координаты где копать. ### var TryHiding=1 ## 1 - Перед тем как копать руду, будет пытаться уйти в хайд, ### 0 - не будет . ### var TryRecall=1 ## 1 - После того как соберет достаточный вес, будет пытаться ### реколиться домой, ### складывать руду в сундук и реколиться обратно , 0 - не будет.(DropOnVip ### должно быть 0) ### var GetFromFile=1 ## 1 - Координаты где копать будут считыватся из файла, 0 - ### собиратся из клиента ### (сначала соберите а потом считывайте из файла). ### var OreQty=70 ## - Максимальный вес, добыв который надо реколиться домой. ### (сейчас 600 стоунов) ### var ControlOfDanger=1 ## 1 - Включить рекол по руне(в паке) при атаке, 0 - ### отключить рекол. ### var ElementalKill=0 ## 1 - Вылючить килл элементала, 0 - отключить(рекол). ### var DangerousTime=60000 ## - Время в секундах которое чар будет ждать(после ### рекола) пока уйдет ПК или Элемент.(сейчас 50 секунд) ### var CycleScript=1 ## 1 - Скрипт не отключается после рекола от атакующего, 0 - ### отключаетсяи закрывает UO. ### var Reconnect=1 ## 1 - Включить реконнект на сервер если выкинет, 0 - отключить ### реконнект. ### var DisturbingSound=('C:\warning.wav') ## - Звук которы будет пригран при атаке. ### (замените на свой) ### var DropX=1669 ## - Координата перед сундуком по X. ### var DropY=566 ## - Координата перед сундуком по Y. ### var DropOnVip=0 ## - Если в ВИП пещере пожходить к сундука и сбрасывать руду. ### (TryRecall должно быть 0) ### var Pickaxe='0x0E85' ################################################################################ ################### ### ### После настройки: ### Идите в место где будем копать. ### Запустите cкрипт GoMining(), инжект попросит вас указать Кирку(появится ### прицел, прицелом на неё), ### Рунбук(появится прицел, прицелом на него) ,Руну(прицелом на нее) и Сундук ### для логов. ### После этого чар пойдет по координатам и будет копать руду. ########### ### Код ### ########### sub GoMining() uo.Print('Выбери Сундук: ') uo.Exec('addobject Chest') while uo.Targeting() wait(100) wend if ControlOfDanger==1 then uo.Exec('exec ControlOfDanger') end if if Reconnect==1 then uo.Exec('exec Reconnect') end if if DropOnVip==0 then RecallToOre() end if uo.Exec('exec Mining') end sub sub Mining() var i=0,j=0,k=0,r=0,q=0,ii,jj,f 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 OreTile[27]=0 uo.FilterSpeech('on') uo.FilterSpeech('add', 'Where do you want to use ') ##################################### ### Загружаем координаты из файла ### ##################################### if GetFromFile==1 then uo.Print('Загружаем координаты из файла...') f=file(FileName) 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('Анализ закончен, координаты руды записаны в файл ' +FileName) 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() i=1 end if if DropOnVip==1 and TryRecall==0 and uo.Weight>OreQty then DropOnVip() i=1 end if j=i+1 if j>OreCount then j=2*(OreCount-i+1) end if uo.Print('Идём к координате руды номер '+str(j)+': x='+str(OreX[j])+' y='+str (OreY[j])) InfoOre() flag=GotoXY(OreX[j],OreY[j],j) if TryHiding==1 then ToHide() end if if flag==1 then GetOre(str(OreT[j]),str(OreX[j]),str(OreY[j]),str(uo.GetZ())) end if next end if wend end sub sub SaveToFile(OreCount,OreX,OreY,OreT) var s=0,i=0,f f=file(FileName) 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 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 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 Open(Container) uo.DeleteJournal() uo.UseObject(Container) repeat wait(500) until uo.InJournal('Contains') end sub sub GotoXY(x,y,r) var lastX=0,lastY=0,i=0 while Numb(y-uo.GetY())>r if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then return 1 end if if (y-uo.GetY())>r then LastX=uo.GetX() LastY=uo.GetY() for i=0 to 2 uo.Press(35) if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then return 1 end if next if LastY==uo.GetY() then for i=0 to 2 uo.Press(37) if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then return 1 end if next end if if LastY==uo.GetY() then for i=0 to 2 uo.Press(40) if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then return 1 end if next end if if LastX==uo.GetX() and LastY==uo.GetY() then for i=0 to 5 uo.Press(38) if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then return 1 end if next end if end if if (uo.GetY()-y)>r then LastY=uo.GetY() for i=0 to 2 uo.Press(33) if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then return 1 end if next if LastY==uo.GetY() then for i=0 to 2 uo.Press(39) if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then return 1 end if next end if if LastY==uo.GetY() then for i=0 to 2 uo.Press(38) if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then return 1 end if next end if if LastX==uo.GetX() and LastY==uo.GetY() then for i=0 to 5 uo.Press(40) if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then return 1 end if next end if end if wend while Numb(x-uo.GetX())>r if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then return 1 end if if (x-uo.GetX())>r then LastX=uo.GetX() LastY=uo.GetY() for i=0 to 2 uo.Press(34) if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then return 1 end if next if LastX==uo.GetX() then for i=0 to 2 uo.Press(40) if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then return 1 end if next end if if LastX==uo.GetX() then for i=0 to 2 uo.Press(39) if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then return 1 end if next end if if LastX==uo.GetX() and LastY==uo.GetY() then for i=0 to 5 uo.Press(37) if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then return 1 end if next end if end if if (uo.GetX()-x)>r then LastX=uo.GetX() for i=0 to 2 uo.Press(36) if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then return 1 end if next if LastX==uo.GetX() then for i=0 to 2 uo.Press(38) if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then return 1 end if next end if if LastX==uo.GetX() then for i=0 to 2 uo.Press(37) if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then return 1 end if next end if if LastX==uo.GetX() and LastY==uo.GetY() then for i=0 to 5 uo.Press(39) if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then return 1 end if next end if end if wend if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then return 1 else return 0 end if return 0 end sub sub Numb(num) if num>=0 then return num else return num*(-1) end if 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 ToHide() while not uo.Hidden() uo.Print('Пытаемся уйти в хайд...') uo.DeleteJournal() uo.UseSkill('Stealth') wait(6000) wend wait(100) end sub sub ToRecall() RecallToHome() DropOre() RecallToOre() end sub sub RecallToHome() uo.Print('Прыгаем домой.') mrecall(0x40014354) end sub sub RecallToOre() uo.Print('Прыгаем в Пещеру.') mrecall(0x40068DC9) end sub sub DropOre() var o,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 if uo.Waiting() then uo.CancelTarget() end if uo.SetReceivingContainer('Chest') wait(500) for o=0 to 13 exit=0 repeat uo.FindType(Ore[o]) if uo.GetQuantity('finditem')>0 then uo.Grab('0','finditem') wait(1500) else exit=1 end if until exit==1 next uo.UnSetReceivingContainer('Chest') end sub sub DropOnVip() Walk(DropX,DropY,'') DropOre() 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==1 then uo.Exec('exec ElementalKill') end if 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('MAKC') or uo.InJournal('ppN') or uo.InJournal('Man') or uo.InJournal('An Ex Por') or uo.InJournal('Adios') 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') Terminate() 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() uo.Exec('exec Mining') end if if CycleScript==0 then uo.Exec('exec ExitUO') end if 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 ElementalKill() var Count,LastTimer,Elemental var o,exit dim Ore[13] Ore[1]=0x19B9 Ore[2]=0x19B7 Ore[3]=0x19BA Ore[4]=0x19B8 Ore[5]=0x0F11 Ore[6]=0x0F16 Ore[7]=0x0F18 Ore[8]=0x0F15 Ore[9]=0x0F10 Ore[10]=0x0F0F Ore[11]=0x0F26 Ore[12]=0x1F4C Ore[13]=0x0EED Terminate() uo.UseType('0x0F0E','0x0631') ## - Инвизка(тип,цвет). while uo.STR<uo.Life+1 if uo.Mana>=50 then uo.WaitMenu('What','Daemon') uo.Cast('Polymorph') wait(8000) else uo.UseType('0x0F0E','0x09DF') ## - Тотал Мана(тип,цвет). wait(3000) end if wend LastTimer=uo.Timer() repeat uo.BandageSelf() wait(4000) until uo.Life==uo.STR or LastTimer+300<uo.Timer() uo.UseType('0x1B76') ## - Хеатер Щит(тип). uo.DeleteJournal() uo.Exec('warmode 1') uo.FindType('0x0010',-1,'ground') Elemental=uo.GetSerial('finditem') uo.Attack(Elemental) repeat wait(1000) if uo.Life<50 Then uo.UseType('0x0F0E','0x09BB') ## - Греатер Хеал(тип,цвет). end if if uo.GetDistance(Elemental)>1 then WalkN(0,0,Elemental) end if until uo.IsNPC(Elemental)==0 wait(3000) uo.Exec('warmode 0') wait(1000) LastTimer=uo.Timer() uo.DeleteJournal() for o=1 to 13 exit=0 repeat uo.FindType(Ore[o],-1,'ground') if uo.GetQuantity('finditem')>0 then uo.Grab('0','finditem') wait(1500) else exit=1 end if until exit==1 next ### uo.Exec('warmode 1') uo.Exec('warmode 0') uo.Exec('exec Mining') end sub sub WalkN(x,y,Target) var i,StepSucess var DX,DY,exit=0 while exit<>1 if Target<>"" then DX=uo.GetX(Target)-uo.GetX() DY=uo.GetY(Target)-uo.GetY() if uo.GetDistance(Target)<2 then exit=1 end if else DX=X-uo.GetX() DY=Y-uo.GetY() exit=1 end if end if if DX<>0 and DY<>0 then if DX>0 and DY>0 then StepSucess=Go(3,40,300) if StepSucess==-1 then StepSucess=Go(7,38,300) StepSucess=Go(1,39,300) if StepSucess==-1 then StepSucess=Go(5,37,300) end if end if end if if DX>0 and DY<0 then StepSucess=Go(1,39,300) if StepSucess==-1 then StepSucess=Go(5,37,300) StepSucess=Go(3,40,300) if StepSucess==-1 then StepSucess=Go(7,38,300) end if end if end if if DX<0 and DY>0 then StepSucess=Go(5,37,300) if StepSucess==-1 then StepSucess=Go(1,39,300) StepSucess=Go(7,38,300) if StepSucess==-1 then StepSucess=Go(3,40,300) end if end if end if if DX<0 and DY<0 then StepSucess=Go(7,38,300) if StepSucess==-1 then StepSucess=Go(3,40,300) StepSucess=Go(5,37,300) if StepSucess==-1 then StepSucess=Go(1,39,300) end if end if end if end if if DX<>0 and DY==0 then if DX>0 then StepSucess=Go(2,34,300) if StepSucess==-1 then StepSucess=Go(3,40,300) if StepSucess==-1 then StepSucess=Go(1,39,300) end if StepSucess=Go(2,34,300) end if end if if DX<0 then StepSucess=Go(6,36,300) if StepSucess==-1 then StepSucess=Go(7,38,300) if StepSucess==-1 then StepSucess=Go(5,37,300) end if StepSucess=Go(6,36,300) end if end if end if if DX==0 and DY<>0 then if DY>0 then StepSucess=Go(4,35,300) if StepSucess==-1 then StepSucess=Go(3,40,300) if StepSucess==-1 then StepSucess=Go(5,37,300) end if StepSucess=Go(4,35,300) end if end if if DY<0 then StepSucess=Go(0,33,300) if StepSucess==-1 then StepSucess=Go(1,39,300) if StepSucess==-1 then StepSucess=Go(7,38,300) endif StepSucess=Go(0,33,300) end if end if end if wend end sub sub Go(dir,key,walkwait) var X,Y,OldDir X=uo.GetX() Y=uo.GetY() OldDir=uo.GetDir() if uo.GetDir()<>dir then uo.Press(key) wait(walkwait) if uo.GetDir()<>dir then end if end if uo.Press(key) wait(walkwait) if X==uo.GetX() and Y==uo.GetY() then end if if X==uo.GetX() and Y==uo.GetY() and OldDir<>uo.GetDir() then uo.Press(key) wait(walkwait) end if if X==uo.GetX() and Y==uo.GetY() then end if if X==uo.GetX() and Y==uo.GetY() then return -1 else return 1 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(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 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 Mining') end sub sub TerminateAll() uo.Exec('terminate Mining') uo.Exec('terminate ControlOfDanger') uo.Exec('terminate Reconnect') uo.Exec('terminate RecallRune') uo.Exec('terminate DropOre') uo.Exec('terminate DangerWait') uo.Exec('terminate DangerWait') end sub sub CheckLag() if uo.Waiting()>0 then uo.Exec('canceltarget') end if uo.DeleteJournal() uo.Click('backpack') repeat wait(50) until uo.InJournal('backpack') end sub sub GoCorpse() var Elemental='0x4000466F' Walk(0,0,Elemental) end sub sub Walk(X,Y,Target) var Targeting='' var Result var DX,DY,GLX,GLY var DirW=0 var exit=0 while exit<>1 if Target<>'' then Targeting=Target DX=uo.GetX(Target)-uo.GetX() DY=uo.GetY(Target)-uo.GetY() if uo.GetDistance(Target)<2 then exit=1 end if else DX=X-uo.GetX() DY=Y-uo.GetY() GLX=DX GLY=DY if DX==0 and DY==0 then exit=1 end if end if if exit==0 then if DX>0 and DY>0 then DirW=9 end if if DX>0 and DY<0 then DirW=7 end if if DX<0 and DY>0 then DirW=3 end if if DX<0 and DY<0 then DirW=5 end if if DX<>0 and DY==0 then if DX>0 then DirW=8 else DirW=4 end if end if if DX==0 and DY<>0 then if DY>0 then DirW=2 else DirW=6 end if end if Result=Go(DirW) if Result==0 then Result=Go(DirW-2) if Result==0 then Result=Go(DirW+2) end if end if end if wend end sub sub Go(dir) var WalkWait=100 var Targeting='' var X,Y,GLX,GLY var check=1 var StartingDir=uo.GetDir() X=uo.GetX() Y=uo.GetY() dim MoveKey[12] MoveKey[0]=34 MoveKey[1]=40 MoveKey[2]=35 MoveKey[3]=37 MoveKey[4]=36 MoveKey[5]=38 MoveKey[6]=33 MoveKey[7]=39 MoveKey[8]=34 MoveKey[9]=40 MoveKey[10]=35 MoveKey[11]=37 dim StartDir[12] StartDir[0]=2 StartDir[1]=3 StartDir[2]=4 StartDir[3]=5 StartDir[4]=6 StartDir[5]=7 StartDir[6]=0 StartDir[7]=1 StartDir[8]=2 StartDir[9]=3 StartDir[10]=4 StartDir[11]=5 while uo.GetDir()<>StartDir[dir] uo.Press(MoveKey[dir]) wait(WalkWait) if uo.GetDir()==StartingDir then CheckLag() end if if (Targeting<>'' and uo.GetDistance(Targeting)<2) or (GLX==0 and GLY==0) then return 1 end if wend uo.Press(MoveKey[dir]) wait(WalkWait) if X==uo.GetX() and Y==uo.GetY() then CheckLag() uo.Press(MoveKey[dir]) wait(WalkWait) end if if X==uo.GetX() and Y==uo.GetY() then return 0 else return 1 end if end sub sub mrecall(rune) repeat CheckLag() UO.WaitTargetObject(rune) UO.UseType('0x1F4C') wait(5000) until NOT UO.InJournal("spell fizzles") markrune: If UO.InJournal("fades completely") then CheckLag() UO.WaitTargetObject(rune) UO.Cast('Mark') endif wait(5000) If UO.InJournal("spell fizzles") then goto markrune endif end sub Вот собсно и он...))) |
|
| Author: | GimFlex [ 2006-02-06 14:46:19 ] |
| Post subject: | |
lдавай начнем с того что тебе 3 ходилки не нада сделай 1 общую |
|
| Author: | ZondeR [ 2006-02-06 14:54:49 ] |
| Post subject: | |
Quote: #########################################################
### Mining Mountains / Копание скалл v5.1.7 Full ### ######################################################### ### Шард Dragon World / www.drw.ru ### ######################################################### ################## ### Переменные ### ################## ################################################################################ ################### var FileName=('C:\ore.dat') ## - Путь к файлу в котором будут хранится ### координаты где копать. ### var TryHiding=1 ## 1 - Перед тем как копать руду, будет пытаться уйти в хайд, ### 0 - не будет . ### var TryRecall=1 ## 1 - После того как соберет достаточный вес, будет пытаться ### реколиться домой, ### складывать руду в сундук и реколиться обратно , 0 - не будет.(DropOnVip ### должно быть 0) ### var GetFromFile=1 ## 1 - Координаты где копать будут считыватся из файла, 0 - ### собиратся из клиента ### (сначала соберите а потом считывайте из файла). ### var OreQty=70 ## - Максимальный вес, добыв который надо реколиться домой. ### (сейчас 600 стоунов) ### var ControlOfDanger=1 ## 1 - Включить рекол по руне(в паке) при атаке, 0 - ### отключить рекол. ### var ElementalKill=0 ## 1 - Вылючить килл элементала, 0 - отключить(рекол). ### var DangerousTime=60000 ## - Время в секундах которое чар будет ждать(после ### рекола) пока уйдет ПК или Элемент.(сейчас 50 секунд) ### var CycleScript=1 ## 1 - Скрипт не отключается после рекола от атакующего, 0 - ### отключаетсяи закрывает UO. ### var Reconnect=1 ## 1 - Включить реконнект на сервер если выкинет, 0 - отключить ### реконнект. ### var DisturbingSound=('C:\warning.wav') ## - Звук которы будет пригран при атаке. ### (замените на свой) ### var DropX=1669 ## - Координата перед сундуком по X. ### var DropY=566 ## - Координата перед сундуком по Y. ### var DropOnVip=0 ## - Если в ВИП пещере пожходить к сундука и сбрасывать руду. ### (TryRecall должно быть 0) ### var Pickaxe='0x0E85' ################################################################################ ################### ### ### После настройки: ### Идите в место где будем копать. ### Запустите cкрипт GoMining(), инжект попросит вас указать Кирку(появится ### прицел, прицелом на неё), ### Рунбук(появится прицел, прицелом на него) ,Руну(прицелом на нее) и Сундук ### для логов. ### После этого чар пойдет по координатам и будет копать руду. ########### ### Код ### ########### sub GoMining() uo.Print('Выбери Сундук: ') uo.Exec('addobject Chest') while uo.Targeting() wait(100) wend if ControlOfDanger==1 then uo.Exec('exec ControlOfDanger') end if if Reconnect==1 then uo.Exec('exec Reconnect') end if if DropOnVip==0 then RecallToOre() end if uo.Exec('exec Mining') end sub sub Mining() var i=0,j=0,k=0,r=0,q=0,ii,jj,f 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 OreTile[27]=0 uo.FilterSpeech('on') uo.FilterSpeech('add', 'Where do you want to use ') ##################################### ### Загружаем координаты из файла ### ##################################### if GetFromFile==1 then uo.Print('Загружаем координаты из файла...') f=file(FileName) 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('Анализ закончен, координаты руды записаны в файл ' +FileName) 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() i=1 end if if DropOnVip==1 and TryRecall==0 and uo.Weight>OreQty then DropOnVip() i=1 end if j=i+1 if j>OreCount then j=2*(OreCount-i+1) end if uo.Print('Идём к координате руды номер '+str(j)+': x='+str(OreX[j])+' y='+str (OreY[j])) InfoOre() flag=GotoXY(OreX[j],OreY[j],j) if TryHiding==1 then ToHide() end if if flag==1 then GetOre(str(OreT[j]),str(OreX[j]),str(OreY[j]),str(uo.GetZ())) end if next end if wend end sub sub SaveToFile(OreCount,OreX,OreY,OreT) var s=0,i=0,f f=file(FileName) 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 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 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 Open(Container) uo.DeleteJournal() uo.UseObject(Container) repeat wait(500) until uo.InJournal('Contains') end sub sub GotoXY(x,y,r) var lastX=0,lastY=0,i=0 while Numb(y-uo.GetY())>r if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then return 1 end if if (y-uo.GetY())>r then LastX=uo.GetX() LastY=uo.GetY() for i=0 to 2 uo.Press(35) if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then return 1 end if next if LastY==uo.GetY() then for i=0 to 2 uo.Press(37) if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then return 1 end if next end if if LastY==uo.GetY() then for i=0 to 2 uo.Press(40) if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then return 1 end if next end if if LastX==uo.GetX() and LastY==uo.GetY() then for i=0 to 5 uo.Press(3 if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then return 1 end if next end if end if if (uo.GetY()-y)>r then LastY=uo.GetY() for i=0 to 2 uo.Press(33) if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then return 1 end if next if LastY==uo.GetY() then for i=0 to 2 uo.Press(39) if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then return 1 end if next end if if LastY==uo.GetY() then for i=0 to 2 uo.Press(3 if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then return 1 end if next end if if LastX==uo.GetX() and LastY==uo.GetY() then for i=0 to 5 uo.Press(40) if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then return 1 end if next end if end if wend while Numb(x-uo.GetX())>r if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then return 1 end if if (x-uo.GetX())>r then LastX=uo.GetX() LastY=uo.GetY() for i=0 to 2 uo.Press(34) if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then return 1 end if next if LastX==uo.GetX() then for i=0 to 2 uo.Press(40) if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then return 1 end if next end if if LastX==uo.GetX() then for i=0 to 2 uo.Press(39) if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then return 1 end if next end if if LastX==uo.GetX() and LastY==uo.GetY() then for i=0 to 5 uo.Press(37) if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then return 1 end if next end if end if if (uo.GetX()-x)>r then LastX=uo.GetX() for i=0 to 2 uo.Press(36) if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then return 1 end if next if LastX==uo.GetX() then for i=0 to 2 uo.Press(3 if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then return 1 end if next end if if LastX==uo.GetX() then for i=0 to 2 uo.Press(37) if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then return 1 end if next end if if LastX==uo.GetX() and LastY==uo.GetY() then for i=0 to 5 uo.Press(39) if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then return 1 end if next end if end if wend if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then return 1 else return 0 end if return 0 end sub sub Numb(num) if num>=0 then return num else return num*(-1) end if 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 ToHide() while not uo.Hidden() uo.Print('Пытаемся уйти в хайд...') uo.DeleteJournal() uo.UseSkill('Stealth') wait(6000) wend wait(100) end sub sub ToRecall() RecallToHome() DropOre() RecallToOre() end sub sub RecallToHome() uo.Print('Прыгаем домой.') mrecall(0x40014354) end sub sub RecallToOre() uo.Print('Прыгаем в Пещеру.') mrecall(0x40068DC9) end sub sub DropOre() var o,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 if uo.Waiting() then uo.CancelTarget() end if uo.SetReceivingContainer('Chest') wait(500) for o=0 to 13 exit=0 repeat uo.FindType(Ore[o]) if uo.GetQuantity('finditem')>0 then uo.Grab('0','finditem') wait(1500) else exit=1 end if until exit==1 next uo.UnSetReceivingContainer('Chest') end sub sub DropOnVip() Walk(DropX,DropY,'') DropOre() 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==1 then uo.Exec('exec ElementalKill') end if 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('MAKC') or uo.InJournal('ppN') or uo.InJournal('Man') or uo.InJournal('An Ex Por') or uo.InJournal('Adios') 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') Terminate() 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() uo.Exec('exec Mining') end if if CycleScript==0 then uo.Exec('exec ExitUO') end if 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 ElementalKill() var Count,LastTimer,Elemental var o,exit dim Ore[13] Ore[1]=0x19B9 Ore[2]=0x19B7 Ore[3]=0x19BA Ore[4]=0x19B8 Ore[5]=0x0F11 Ore[6]=0x0F16 Ore[7]=0x0F18 Ore[8]=0x0F15 Ore[9]=0x0F10 Ore[10]=0x0F0F Ore[11]=0x0F26 Ore[12]=0x1F4C Ore[13]=0x0EED Terminate() uo.UseType('0x0F0E','0x0631') ## - Инвизка(тип,цвет). while uo.STR<uo.Life+1 if uo.Mana>=50 then uo.WaitMenu('What','Daemon') uo.Cast('Polymorph') wait(8000) else uo.UseType('0x0F0E','0x09DF') ## - Тотал Мана(тип,цвет). wait(3000) end if wend LastTimer=uo.Timer() repeat uo.BandageSelf() wait(4000) until uo.Life==uo.STR or LastTimer+300<uo.Timer() uo.UseType('0x1B76') ## - Хеатер Щит(тип). uo.DeleteJournal() uo.Exec('warmode 1') uo.FindType('0x0010',-1,'ground') Elemental=uo.GetSerial('finditem') uo.Attack(Elemental) repeat wait(1000) if uo.Life<50 Then uo.UseType('0x0F0E','0x09BB') ## - Греатер Хеал(тип,цвет). end if if uo.GetDistance(Elemental)>1 then WalkN(0,0,Elemental) end if until uo.IsNPC(Elemental)==0 wait(3000) uo.Exec('warmode 0') wait(1000) LastTimer=uo.Timer() uo.DeleteJournal() for o=1 to 13 exit=0 repeat uo.FindType(Ore[o],-1,'ground') if uo.GetQuantity('finditem')>0 then uo.Grab('0','finditem') wait(1500) else exit=1 end if until exit==1 next ### uo.Exec('warmode 1') uo.Exec('warmode 0') uo.Exec('exec Mining') 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(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 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 Mining') end sub sub TerminateAll() uo.Exec('terminate Mining') uo.Exec('terminate ControlOfDanger') uo.Exec('terminate Reconnect') uo.Exec('terminate RecallRune') uo.Exec('terminate DropOre') uo.Exec('terminate DangerWait') uo.Exec('terminate DangerWait') end sub sub CheckLag() if uo.Waiting()>0 then uo.Exec('canceltarget') end if uo.DeleteJournal() uo.Click('backpack') repeat wait(50) until uo.InJournal('backpack') end sub sub GoCorpse() var Elemental='0x4000466F' Walk(0,0,Elemental) end sub sub mrecall(rune) repeat CheckLag() UO.WaitTargetObject(rune) UO.UseType('0x1F4C') wait(5000) until NOT UO.InJournal("spell fizzles") markrune: If UO.InJournal("fades completely") then CheckLag() UO.WaitTargetObject(rune) UO.Cast('Mark') endif wait(5000) If UO.InJournal("spell fizzles") then goto markrune endif end sub Вот я убрал все ходилки кроме одной, но ведь удаленные ходилки используются в скрпте для кила элема и лута его же. |
|
| Author: | GimFlex [ 2006-02-06 14:57:31 ] |
| Post subject: | |
ну так подправить можно же скрипт |
|
| Author: | ZondeR [ 2006-02-06 14:59:50 ] |
| Post subject: | |
??? в смысле использовать везде одну и туже ходилку? |
|
| Author: | GimFlex [ 2006-02-06 15:00:27 ] |
| Post subject: | |
короч не загоняйся ты капаешь в пещере или вдоль скалы? |
|
| Page 1 of 2 | All times are UTC+02:00 |
| Powered by phpBB® Forum Software © phpBB Limited https://www.phpbb.com/ |
|