| Yoko http://forum.yoko.com.ua/ |
|
| мининг скалы + вортекс http://forum.yoko.com.ua/viewtopic.php?f=20&t=16166 |
Page 1 of 1 |
| Author: | devileeeee [ 2011-01-30 15:09:43 ] |
| Post subject: | мининг скалы + вортекс |
ребят ... читая многие темы по этой теме которую выложил... извиняюсь за банальность темы, но осмелюсь попросить кого нибудь объединить 2 скрипта, один на мой взгляд просто идеален ,но не подходит мне, так как нету вип шахты,а второй имеет большое количество ошибок т.к. мне его многие пытались сделать ,но он всё таки далёк от идеала,но выполняет нужную мне функцию. Могу на дрв подбросить ГП. за проделанный труд. Ближе к делу) Мне нужно чтобы сие добро, маркало точки как в скрипте 2(глючный) и обкапывало их, при наборе определённого количества Оре, рекол к сундуку и обратно копать(цикличность)+реконект который помнит, а не просто реконектит,ну и главную особенность 1ого скрипта ,это убивание элема под действием инвизки методом каста вортекса и продолжать копать(можно ещё рекол сразу после убийства элема выхи и скинуть всё оре и опять трудится). Ниже оба скрипта которые нужно объединить, заранее прошу прощение за качество скриптов, мне они достались изначально в таком виде. сам не шарю. |
|
| Author: | devileeeee [ 2011-01-30 15:10:52 ] |
| Post subject: | Re: мининг скалы + вортекс |
это с скрипт 1 с вортексом ############################################################### #===---====----===---===---= Mining =---=-=-=-=-=--=-=-=-=-=-=# # Single char mining for VIP Mine. DRW Shard http://www.drw.ru # # Scripted by Savage (c) 2005-2010 ICQ:33336141 # #"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""# #"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""# # To start script use ",exec mine" command from client window # ############################################################### ;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ;==================== Main mining script ====================== ;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" sub mine() UO.Exec('terminate Reconnector') wait(1000) uo.exec('exec Reconnector') VAR DigDistance, TileNum, KillElemental VAR ElemSignal, LastTimer DIM BaseX[2], BaseY[2] VAR BaseZ, WayPoint, WayPoints VAR MaxWeight VAR i,j,TileY,TileX,DirX,DirY VAR Delta,BeginX,EndX,BeginY,EndY ;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ; TileNum='Num' - Use ",infotile" command on the floor ; Номер тайла в котором можно копать ,потыкайте командой ; ",infotile" по разнвм тайлам и посмотрите не отличаются ли их ; номера. ;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" TileNum='1339' ;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ; Максимальный вес, который может поднять чар. Ставьте его ; немного меньше реального. То есть если чар поднимает 760, то ; ставим 730. ;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" MaxWeight=600 ;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ; DigDistance=4 - Distance from tile where pickaxe targeting ; Радиус круга по которому будет копать чар, то есть расстояние ; до клетки куда можно дотянуться киркой. ;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" DigDistance=3 ;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ; KillElemental='Yes'/'No' - Use 'Yes' if char skilled to morph ; in daemon and wrestling > 50 ; Если чар достаточно прокачен чтоб бить элемов, ставьте 'Yes' ;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" KillElemental='No' ;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ; ElemSignal='Off'/'On' - Play sound when elemental is digged ; Оповешать при появлении элема ;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ElemSignal='Off' ;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ; Здесь указываем координаты точек копания. Нужно встать на ; позицию и посмотреть координаты в инжекте. Их и нужно ; подставить вместо моих. Чара ставьте на 4 клетки от стен. ;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" BaseX[0]=5914 BaseY[0]=1084 BaseZ=0 BaseX[1]=5906 BaseY[1]=1084 ;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ; Указываем количество точек копания ;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" WayPoints=2 CheckLag() UO.UseObject('Sunduk') LastTimer=UO.Timer() Repeat wait(500) Until UO.InJournal('You can') OR UO.InJournal('What is the') OR UO.Timer()>LastTimer+100 If UO.InJournal('see the') Then UO.Say("Podoydi k sunduku i tkni v nego pricelom!") UO.AddObject('Sunduk') While UO.Targeting()==2 wait(500) Wend UO.SaveConfig() UO.UseObject('Sunduk') Else ; UO.Say("Ok! Viju sunduk.") Endif CheckLag() UO.UseObject('MyBox') LastTimer=UO.Timer() Repeat wait(500) Until UO.InJournal('You can') OR UO.InJournal('What is the') OR UO.Timer()>LastTimer+100 If UO.InJournal('see the') Then UO.Say("Pokaji yashik!") UO.AddObject('MyBox') While UO.Targeting()==2 wait(500) Wend UO.SaveConfig() UO.UseObject('MyBox') Else ; UO.Say("Ok! Viju sunduk.") Endif CheckLag() UO.UseObject('IronBag') LastTimer=UO.Timer() Repeat wait(500) Until UO.InJournal('You can') OR UO.InJournal('What is the')OR UO.Timer()>LastTimer+100 If UO.InJournal('see the') Then UO.Say("V kakoy meshok kidat' Iron Ore") UO.AddObject('IronBag') While UO.Targeting()==2 wait(500) Wend UO.SaveConfig() Else ; UO.Say("Meshok dlya Iron Ore viju") Endif CheckLag() UO.UseObject('OtherBag') LastTimer=UO.Timer() Repeat wait(500) Until UO.InJournal('You can') OR UO.InJournal('What is the')OR UO.Timer()>LastTimer+100 If UO.InJournal('see the') Then UO.Say("V kakoy meshok kidat' rudu?") UO.AddObject('OtherBag') While UO.Targeting()==2 wait(500) Wend UO.SaveConfig() Else ; UO.Say("Meshok dlya rudy viju.") Endif CheckLag() UO.UseObject('BestBag') LastTimer=UO.Timer() Repeat wait(500) Until UO.InJournal('You can') OR UO.InJournal('What is the')OR UO.Timer()>LastTimer+100 If UO.InJournal('see the') Then UO.Say("V kakoy meshok kidat' vihu?") UO.AddObject('BestBag') While UO.Targeting()==2 wait(500) Wend UO.SaveConfig() Else ; UO.Say("Meshok dlya vihi viju.") Endif While NOT UO.Dead() For WayPoint=0 to WayPoints-1 walkn(BaseX[WayPoint],BaseY[WayPoint],"") digitstay(MaxWeight,DigDistance,KillElemental,ElemSignal,BaseX[WayPoint],BaseY[WayPoint]) Next wend If UO.InJournal('Elemental') then UO.TextPrint('Elemental founded '+MakeTime()) end sub ; Проверка нужности руды. Закоментировать то что нужно копать. sub CheckOre() VAR Cont=1, i=0, Exit=0 VAR Count=0 ; Сколько элементов в массиве. DIM Ores[15] ; Ores[0]="Rusty" ; Ores[1]="Old Copper" ; Ores[2]="Dull Copper" ; Ores[3]="Copper" ; Ores[4]="Bronze" ; Ores[5]="Silver" ; Ores[6]="Iron" ; Ores[7]="Shadow" ; Ores[8]="Rose" ; Ores[9]="Gold" ; Ores[10]="Agapite" ; Ores[11]="Blood Rock" ; Ores[12]="Verite" ; Ores[13]="Valorite" ; Ores[14]="Mytheril" While i<Count AND Exit==0 If UO.InJournal(Ores[i]) Then Cont=0 Exit=1 Endif ; UO.Print(STR(i)) ; UO.Print(Ores[i]) i=i+1 Wend return Cont end sub ;-------------------- Try to mine under self ------------------ sub digitstay(MaxWeight,MaxDistance,KillElemental,ElemSignal,BaseX,BaseY) VAR x,y,z='0',TileNum='1339' VAR Last=0,LastTimer, ContFlag=1 VAR MaxTimer=110 For x=-MaxDistance to MaxDistance For y=-MaxDistance to MaxDistance Repeat CheckLag() ; deleting journal ToHide() UO.WaitTargetTile(TileNum,STR(UO.GetX()+x),STR(UO.GetY()+Y),z) UO.UseType('0x0E85') LastTimer=UO.Timer() Repeat wait(500) until UO.InJournal("Try mining") OR UO.InJournal("You put") OR UO.InJournal("You loosen") OR UO.InJournal("There is no") OR UO.InJournal("That is too") OR UO.InJournal("OOPS") OR UO.InJournal("attacking you") OR LastTimer+200<UO.Timer() If NOT UO.InJournal('There is no') then ContFlag=CheckOre() Endif If UO.InJournal('You loosen') then repeat wait(300) until UO.InJournal("You put") OR LastTimer+MaxTimer<UO.Timer() Endif If UO.InJournal('something with ore') OR UO.InJournal("Elemental") then If ElemSignal=='On' Then Gong(2) Endif If KillElemental=='Yes' Then KillElem() walkn(BaseX,BaseY,"") Else ; any user defined command when char digget elemental Endif Endif If UO.InJournal("attacking you") then gong(3) Endif If UO.Weight>=MaxWeight then unloadore() Endif Until UO.InJournal("There is no") OR UO.InJournal("That is too") OR UO.InJournal("Try mining") OR ContFlag==0 Next Next end sub ;------------------------- Unload ore ------------------------- sub unloadore() VAR TempX,TempY,i,Exit, Exit1, ConTainer, j VAR SundukX=5902 VAR SundukY=1088 VAR Index=14 ; количество элементов массива DIM Ore[5], Colors[20] Colors[0]="0x09F0" ; Gorgan Colors[1]="0x09D3" ; Steel Colors[3]="0x0BA7" ; Eldar Colors[4]="0x08AF" ; Plut Colors[5]="0x0085" ; Dragon Colors[6]="0x0060" ; Aqua Colors[7]="0x09E6" ; Elvin Colors[8]="0x010F" ; Krinit Colors[9]="0x09DA" ; Vulkan Colors[10]="0x09EC" ; Blood Crest Colors[11]="0x008F" ; Sand Rock Colors[12]="0x09B9" ; Acid Colors[13]="0x09A4" ; Crystaline TempX=UO.GetX() TempY=UO.GetY() walkn(SundukX,SundukY,"") ToHide() UO.UseObject("Sunduk") UO.UseObject("MyBox") Ore[0]=0x19B9 ; 4 and more ore Ore[1]=0x19B7 ; 1 ore Ore[2]=0x19BA ; 2 ore Ore[3]=0x19B8 ; 3 ore For i=0 to 3 Exit=0 repeat UO.FindType(Ore[i]) if UO.GetQuantity('finditem')>0 then If UO.GetColor('finditem')=='0x0000' Then Container=UO.GetSerial('IronBag') Else Container=UO.GetSerial('OtherBag') Exit1=0 j=0 While j<Index AND Exit1<>1 If UO.GetColor('finditem')==Colors[j] Then Container=UO.GetSerial('BestBag') Exit1=1 Endif j=j+1 Wend Endif UO.MoveItem('finditem',0,Container) CheckLag() wait(1000) Else Exit=1 endif until Exit==1 Next UO.FindType('0x0EED',-1,'backpack') wait(500) If UO.FindCount() Then UO.MoveItem('finditem','all','MyBox') wait(500) CheckLag() Endif UO.FindType('0x0F0E','0x0000','backpack') wait(500) If UO.FindCount() Then UO.MoveItem('finditem','all','MyBox') wait(500) CheckLag() Endif LoadRes() walkn(TempX,TempY,"") ToHide() end sub sub LoadRes() VAR EdaType='0x097B' VAR WaitTime=300, InPack VAR Scrolls=10 VAR Potions=10 VAR VortInPack=0, MassInPack=0 ; Eda UO.FindType(EdaType,-1,'MyBox') wait(WaitTime) If UO.FindCount() Then UO.MoveItem('finditem',100,'backpack') wait(WaitTime) CheckLag() Endif CheckLag() Repeat UO.UseType(EdaType) wait(1000) Until UO.InJournal('You can') UO.FindType(EdaType,-1,'backpack') wait(WaitTime) If UO.FindCount() Then UO.MoveItem('finditem','all','MyBox') wait(WaitTime) CheckLag() Endif ; Inviz UO.FindType('0x0F0E','0x0631','backpack') wait(WaitTime) InPack=UO.GetQuantity('finditem') IF InPack<Potions Then UO.FindType('0x0F0E','0x0631','MyBox') wait(WaitTime) If UO.FindCount() Then UO.MoveItem('finditem',Potions-InPack,'backpack') wait(WaitTime) Endif Endif ; Vortex Vort: UO.IgnoreReset() UO.FindType('0x1F66',-1,'backpack') While UO.FindCount() VortInPack=VortInPack+UO.GetQuantity('finditem') wait(WaitTime) UO.Ignore('finditem') UO.FindType('0x1F66',-1,'backpack') Wend IF VortInPack<Scrolls Then UO.FindType('0x1F66',-1,'MyBox') wait(WaitTime) If UO.FindCount() Then UO.MoveItem('finditem',Scrolls-VortInPack,'backpack') wait(WaitTime) Goto Vort Endif Endif ; Dispell Dispell: UO.IgnoreReset() UO.FindType('0x1F62',-1,'backpack') While UO.FindCount() MassInPack=MassInPack+UO.GetQuantity('finditem') wait(WaitTime) UO.Ignore('finditem') UO.FindType('0x1F62',-1,'backpack') Wend IF MassInPack<Scrolls Then UO.FindType('0x1F62',-1,'MyBox') wait(WaitTime) If UO.FindCount() Then UO.MoveItem('finditem',Scrolls-MassInPack,'backpack') wait(WaitTime) Goto Dispell Endif Endif UO.IgnoreReset() end sub ;----------- Summon Energy Vortex, kill elem and loot him ----------- sub killelem() var xx,yy,m DIM Ore[4] Ore[0]='0x19B7' ; 1 ore Ore[1]='0x19BA' ; 2 ore Ore[2]='0x19B8' ; 3 ore Ore[3]='0x19B9' ; 4 and more ore var i, Exit,l UO.Set('finddistance',10) uo.usetype('0x0f0e','0x0631') ;inviz wait(3000) ;0x000D vortex povtor: UO.DeleteJournal() m=UO.Mana ; uo.cast('Energy Vortex','self') UO.WaitTargetSelf() uo.usetype('0x1f66') While UO.Mana>=m wait(300) Wend if uo.injournal('spell fizzles') then goto povtor endif wait(1000) jdat: UO.FindType('0x0010',-1,'ground') wait(300) If UO.FindCount() Then UO.FindType('0x000D',-1,'ground') wait(300) If UO.FindCount() Then wait(1000) goto jdat Else goto povtor End if End if dispel: m=UO.Mana UO.DeleteJournal() ; uo.cast('Mass Dispel','self') UO.WaitTargetSelf() UO.UseType('0x1F62') While UO.Mana>=m wait(300) Wend if uo.injournal('fizzles') then goto dispel end if xx=UO.GetX() yy=UO.Gety() For i=0 to 3 UO.FindType(Ore[i],-1,'ground') If UO.GetQuantity('finditem')>0 then Walkn(0,0,'finditem') UO.Grab('all','finditem') CheckLag() UO.FindType('0x0EED',-1,'ground') If UO.FindCount() Then UO.Grab('all','finditem') End if Endif Next Walkn(xx,yy,'') end sub ############################################################### ############################################################### ; ; Shared Subs ; ############################################################### ############################################################### #============================================================== # tohide() - try hidding char. When char lose HP, drink inviz # potion if it found in backpack # # Journal has been deleted!!! #-------------------------------------------------------------- sub tohide() while NOT UO.Hidden() UO.DeleteJournal() UO.FindType('0x0F0E','0x0631','my') if UO.Life<UO.STR/2 AND UO.GetQuantity('finditem')>0 then UO.UseType('0x0F0E','0x0631') ; inviz potion UO.Exec('warmode 0') wait(2000) else UO.Exec('warmode 0') UO.UseSkill('Stealth') repeat wait(100) until UO.InJournal('You have hidden') OR UO.InJournal('seem to hide') OR UO.InJournal('preoccupied') endif wend end sub #============================================================== # CheckLag() - click on backpack and awaiting "backpack" # message in journal. # # Journal has been deleted!!! #-------------------------------------------------------------- sub CheckLag() UO.DeleteJournal() UO.Click('backpack') repeat wait(500) until UO.InJournal('backpack') end sub #============================================================== # Gong(counter) - playing wav-file 'counter'-times # http://www.jetta.ru/cow.wav #-------------------------------------------------------------- sub Gong(times) ; play wav-file VAR i for i=1 to times UO.Exec("playwav C:\InformedFile.wav") wait(1200) ; time to play sample at once next end sub #============================================================== # Alarm() - when char lose some HP, U are informed #-------------------------------------------------------------- sub Alarm() VAR CharHP=190 while 1==1 wait(1000) if UO.Life<CharHP then gong(1) endif wend end sub ;---------------- Ходилка ----------------------- sub GoW() VAR walkwait=300 VAR x,y,dir=6 VAR key=36 ; Home key x=UO.GetX() y=UO.GetY() while UO.GetDir()<>dir UO.Press(key) wait(walkwait) If UO.GetDir()<>dir Then CheckLag() Endif wend UO.Press(key) wait(walkwait) If x==UO.GetX() AND y==UO.GetY() Then CheckLag() Endif If UO.GetX()+1==x Then return -1 Else return 1 Endif end sub sub GoN() VAR walkwait=300 VAR x,y,dir=0 VAR key=33 ; PgUp x=UO.GetX() y=UO.GetY() while UO.GetDir()<>dir UO.Press(key) wait(walkwait) If UO.GetDir()<>dir Then CheckLag() Endif wend UO.Press(key) wait(walkwait) If x==UO.GetX() AND y==UO.GetY() Then CheckLag() Endif If UO.GetY()+1==y Then return -1 Else return 1 Endif end sub sub GoE() VAR walkwait=300 VAR x,y,dir=2 VAR key=34 ; PgDown x=UO.GetX() y=UO.GetY() while UO.GetDir()<>dir UO.Press(key) wait(walkwait) If UO.GetDir()<>dir Then CheckLag() Endif wend UO.Press(key) wait(walkwait) If x==UO.GetX() AND y==UO.GetY() Then CheckLag() Endif If UO.GetX()-1==x Then return -1 Else return 1 Endif end sub sub GoS() VAR walkwait=300 VAR x,y,dir=4 VAR key=35 ; End x=UO.GetX() y=UO.GetY() while UO.GetDir()<>dir UO.Press(key) wait(walkwait) If UO.GetDir()<>dir Then CheckLag() Endif wend UO.Press(key) wait(walkwait) If x==UO.GetX() AND y==UO.GetY() Then CheckLag() Endif If UO.GetY()-1==y Then return -1 Else return 1 Endif end sub sub GoWN() VAR walkwait=300 VAR x,y,dir=7 VAR key=38 ; UpArrow x=UO.GetX() y=UO.GetY() If UO.GetDir()<>dir Then UO.Press(key) wait(walkwait) If UO.GetDir()<>dir Then CheckLag() Endif Endif If UO.GetDir()==dir Then UO.Press(key) wait(walkwait) If x==UO.GetX() AND y==UO.GetY() Then CheckLag() Endif If UO.GetDir()==dir Then return -1 Else return UO.GetDir() Endif Else return UO.GetDir() Endif end sub sub GoNE() VAR walkwait=300 VAR x,y,dir=1 VAR key=39 ; RightArrow x=UO.GetX() y=UO.GetY() If UO.GetDir()<>dir Then UO.Press(key) wait(walkwait) If UO.GetDir()<>dir Then CheckLag() Endif Endif If UO.GetDir()==dir Then UO.Press(key) wait(walkwait) If x==UO.GetX() AND y==UO.GetY() Then CheckLag() Endif If UO.GetDir()==dir Then return -1 Else return UO.GetDir() Endif Else return UO.GetDir() Endif end sub sub GoSE() VAR walkwait=300 VAR x,y,dir=3 VAR key=40 ; DownArrow x=UO.GetX() y=UO.GetY() If UO.GetDir()<>dir Then UO.Press(key) wait(walkwait) If UO.GetDir()<>dir Then CheckLag() Endif Endif If UO.GetDir()==dir Then UO.Press(key) wait(walkwait) If x==UO.GetX() AND y==UO.GetY() Then CheckLag() Endif If UO.GetDir()==dir Then return -1 Else return UO.GetDir() Endif Else return UO.GetDir() Endif end sub sub GoSW() VAR walkwait=300 VAR x,y,dir=5 VAR key=37 ; LeftArrow x=UO.GetX() y=UO.GetY() If UO.GetDir()<>dir Then UO.Press(key) wait(walkwait) If UO.GetDir()<>dir Then CheckLag() Endif Endif If UO.GetDir()==dir Then UO.Press(key) wait(walkwait) If x==UO.GetX() AND y==UO.GetY() Then CheckLag() Endif If UO.GetDir()==dir Then return -1 Else return UO.GetDir() Endif Else return UO.GetDir() Endif end sub #============================================================== # WalkN(X,Y,Serial) - char is walking by dX and dY step # sub using Home, End, PgUp, PgDown keys # d'not rebind this key from default action! # walkwait - delay after keypress #-------------------------------------------------------------- sub WalkN(x,y,Target) VAR i VAR dx,dy,Exit=0 While Exit<>1 If Target<>"" Then dx=UO.GetX(Target)-UO.GetX() dy=UO.GetY(Target)-UO.GetY() ; UO.Print("Target locked!") If UO.GetDistance(Target)<2 Then Exit=1 Endif Else dx=x-UO.GetX() dy=y-UO.GetY() If dx==0 AND dy==0 Then Exit=1 Endif Endif If dx<>0 AND dy<>0 Then If dx>0 AND dy>0 Then GoSE() Endif If dx>0 AND dy<0 Then GoNE() Endif If dx<0 AND dy>0 Then GoSW() Endif If dx<0 AND dy<0 Then GoWN() Endif Endif If dx<>0 AND dy==0 Then If dx>0 Then GoE() Endif If dx<0 Then GoW() Endif Endif If dx==0 AND dy<>0 Then If dy>0 Then GoS() Endif If dy<0 Then GoN() Endif Endif Wend end sub sub Reconnector() var ReconnectTime, RFlag ReconnectTime = '0' RFlag = 1 Repeat While (UO.ObjAtLayer('Bpack') == '') if RFlag Then ReconnectTime = MakeTime() RFlag = 0 endif Wait(20000) # WorldSave Protection UO.Say('') Wait(3000) UO.Say('') Wait(3000) UO.Say('') Wait(3000) UO.LDblClick(357,164) UO.LClick(616,459) Wait(3000) WEnd Wait(3000) if (RFlag == 0) and (ReconnectTime <> '0') Then UO.Exec('terminate mine') #сюда похоже нужно писать название другого скрипта, который нужно перезапустить после реконекта (для прокачки) wait(1000) UO.Exec('exec mine') UO.TextOpen() UO.TextPrint('Disconnected & Reconnected @ '+ReconnectTime) RFlag = 1 ReconnectTime = '0' endif Until false end sub sub MakeTime() VAR D, T, Ret, i Ret = STR(UO.Time()) T = "" For i = 0 To Len(Ret) T = Ret[Len(Ret)-i] + T If (I == 2) OR (I == 4) Then T = ":" + T EndIf Next Ret = STR(UO.Date()) D = "" For i = 0 To Len(Ret) D = Ret[Len(Ret)-i] + D If (I == 2) OR (I == 4) Then D = "." + D EndIf Next Ret = T + " @ " + D RETURN Ret end sub |
|
| Author: | devileeeee [ 2011-01-30 15:12:39 ] |
| Post subject: | Re: мининг скалы + вортекс |
это глючный скрипт номер 2 с ходилкой и обкопом ######################################################### ### Mining Mountains / Копание скалл v5.1.7 Full ### ######################################################### ### Шард Dragon World ### ######################################################### ### Внимание: ### Для работы скрипта нужна версия YokoInjection 4ZD. ### Скачать dll этой версии можно ### от сюда: http://www.swines.nm.ru/injection.zip ######################################################### ### Авторы: ### -Автор скрипта:"Аskaneli". ### -Редактировал и дополнял:"BETEPAH". ### -Идеи и редкатирование скрипта:"cOoler". ### -За помощь в доработке скрипта спасибо:"Legio". ### Спасибо всем кто каким либо образом помогал в ### разработке этого скрипта. ######################################################### ############################ ### Описание и настройка ### ############################ ### Обратите внимание на значки "]![" ими выделенны важные сообщения. ### ### Чар бегает от точки к точке (координаты точек берет из файла). ### Выкопает, бежит к следующей, при весе 600 стоунов в паке порталится домой ### скидывает руду в сундук, ### после реколится обратно бежит к последней точке копания и продолжает копать. ### Пример: В файле 100 точек копания, вы выкопав 74 дошли до придела в весе в ### 550 стоунов сработала система рекола ### и вы "порталитесь" домой и складываете руду в сундук, после вы реколитесь ### обратно к месту копаня и бежите к 75 точке. ### Дойдя до 100 точки (тоесть последней в списке) чар перейдет к 1ой точке. ### (Цикличность) ### ]![ Для корректной работы скрипта нужно замарчить не менее 80 точек. ]![ ### #################### ### Нововведения ### #################### ### 1)Полностью изменены системы сброса руды и рекола по руне от пк(теперь ### физлить невозможно). [cOoler] ### 2)Временно удалены функции - речарж рунбуки и хаванья, в следующих версиях ### опять появяться!. [cOoler] ### 3)Доработана ходилка, теперь проверяет растояние от точки до чара при ### каждом шаге. [cOoler] ### 4)Теперь сундук для логов задается таргетом вместе с рунбукой и руной ... ### рекол на место копания происходит автоматом. [cOoler] ### ]![ ПРИ возникновении глюков .. ошибок и другой лабуды пишите в ICQ! ]![ ### ################################### ### Режимы работы скрипта ### ################################### ### Работает в 2х режимах: ### ### 1)Маркировка ### ### 2)Копание ### ################################### ### Режим Первый - "Маркировка" ### ################################### ### Этот режим отвечает за Маркирование(записывание координат) точек копания. ### Включается переменной var GetFromFile=0 ## 1 - координаты деревьев будут ### считыватся из файла, 0 - собиратся из клиента. ### То есть если GetFromFile=1 координаты деревьев собиратся из клиента. ### ### Маркировка происходит так: ### Поставте переменную GetFromFile равную 0 (GetFromFile=1). ### Положите к себе в сумку Рунбук(с рунами домой и в лес), Руну(в безопастное ### место) и Кирку. ### Идите на место где вы хотите копать. ### Запустите Скрипт GoMining(), инжект попросит вас указать Рунбук ### (появится прицел,прицелом на него). ### Инжект сообщит вам что ('Собираем координаты руды в округе...'). ### Инжект возьмет в руки Кирку. ### Теперь вы должны в любом порядке сами прицелом указать координаты ### (достаточно просто нажать прицелом на скалу или пол в шахте). ### ]![ Для марка точек капания требуется соблюдать расстояние больше чем 4 ### тайла, т.е. чтобы чар не копал. ]![ ### Если вы не промахнулись и "нажали" на подходящее для копания место, то ### инжект сообщит вам об этом(Найдена руда "координаты руды"). ### Причем что если даже вы нажмете два раза на одно и тоже место то он ### не "запомнит" его повторно. ### Ходите и марчите точки копания. ### Для того чтобы остановить марк нажмите таргетом на себя. ### Инжект напишет вам сообщение ('Анализ закончен, координаты руды записаны в ### файл C:\Ore.dat') и создаст файл на диске ### С:\ куда запишет координаты точек копания. ### После этого чар пойдет по координатам и будет копать. ### ################################ ### Режим Второй - "Копание" ### ################################ ### Этот режим соответственно отвечает за Копание. ### Включается переменной var GetFromFile=0 ## 1 - координаты деревьев будут ### считыватся из файла, 0 - собиратся из клиента ### То есть если GetFromFile=1 координаты деревьев будут считыватся из файла. ### И вам не надо будет сново марчить точки копания. ### ### Копание происходит так: ### Поставте переменную GetFromFile равную 1 (GetFromFile=1). ### Положите к себе в сумку Кирку, Руну(в безопастное место) и Рунбук(с рунами ### домой и в лес). ### ]![ Внимание в скрипте номера рун в рунбуке настроены под ДРВ шард. ]![ ### ######################################### ### Дополнительные функции скрипта ### ######################################### ### В скрипте 3 доп. функций: ### ### 1)Рекол при Атаке ### ### 2)Килл Элементала ### ### 3)Реконнект ### ########################################## ### Функция Первая - "Рекол при Атаке" ### ########################################## ### Этот режим соответственно отвечает за Рекол при атаке ентов и не только. ### Включается переменной var ControlOfDanger=0 ## 1 - Включить рекол по руне(в ### паке) при атаке, 0 - отключить рекол. ### То есть если ControlOfDanger=1 чар будет реколиться при атаке. ### ### Побег происходит так: ### Поставте переменную ControlOfDanger равную 1 (ControlOfDanger=1). ### Замарчите Руну в безопастном месте. ### Положите к себе в сумку ### Руну(которую замарчили в безопастном месте), Реагенты(Black Pearls,Blood ### Moss,Mandrake Root.) ### и Бутылки расчитывая на то сколько вы хотите рубить.(Invizible Potion,Mana ### Potion,Heal Potion). ### При атаке вы выпиваете Invizible Potion, автоматически телепортитесь на то ### место, ### где замаркана руна(в бакпаке). ### В это время записывается имя того кто вас атачил. ### После рекола руна маркается и проверяется ваша мана и здоровье, если чегото ### меньше, ### чар выпивает Mana Potion или Heal Potion в зависимости от надобности. ### ###################################### ### Вариант Первый - "Цыкличность" ### ###################################### ### Есди вы хотите чтобы скрипт не прекращал свою работу, то поставьте ### переменную CycleScript раную 1 (CycleScript=1). ### Теперь после рекола скрипт не будет выключаться, а будет ждать указанное ### время(DangerTime) и затем ### реколиться домой, речаржить рунбуку, есть и опять реколиться на место ### копания и копать. ### ##################################### ### Вариант Второй - "Выключение" ### ##################################### ### Есди вы хотите чтобы скрипт не прекращал свою работу, то поставьте ### переменную CycleScript раную 0 (CycleScript=0), ### Теперь после рекола скрипт выключится и закроет окно UO. ### ########################################## ### Функция Вторая - "Килл Элементала" ### ########################################## ### Этот режим соответственно отвечает за Килл Элементала при выкидывании с ### сервера. ### var ElementalKill=0 ## 1 - Вылючить килл элементала, 0 - отключить. ### То есть если ElementalKill=1 чар будет килять элема. ### Если вы поставите переменную ElementalKill равную 1 (ElementalKill=1), то ### чар будет килять элементала. ### Если вы поставите переменную ElementalKill равную 0 (ElementalKill=0), то ### чар будет реколиться от элементала. ### ### Реконнект происходит так: ### Поставте переменную ElementalKill равную 1 (ElementalKill=1). ### Положите к себе в сумку ### Реагенты и Бутылки расчитывая на то сколько вы хотите рубить.(Invizible ### Potion,Mana Potion,Heal Potion). ### После того как будет выкопан элементал, чар выпьет инвизку, морфнется в ### демона, возьмет в руки щит и будет пытаться ### кильнуть элеменала. ### После того как он кильнет элементала, будет произведен лут, после чего чар ### продолжит копать. ### #################################### ### Функция Третья - "Реконнект" ### #################################### ### Этот режим соответственно отвечает за Реконнект при выкидывании с сервера. ### Включается переменной var Reconnect=1 ## 1 - Включить реконнект на сервер ### если выкинет, 0 - отключить реконнект. ### То есть если Reconnect=1 чар будет реколиться при атаке. ### ### Реконнект происходит так: ### Поставте переменную Reconnect равную 1 (Reconnect=1). ### Если вдруг повиснет игровая сфера или вас выкинет по любой другой причине ### реконнектор законнектит ваc на сервер автоматически. ### Пишется время дисконнекта и коннекта на сервер. ### ### ]![ Настройте скрипт под себя при помощи переменных. ]![ ### ################## ### Переменные ### ################## ################################################################################ ################### var FileName=('C:\ore.dat') ## - Путь к файлу в котором будут хранится ### координаты где копать. ### var TryHiding=1 ## 1 - Перед тем как копать руду, будет пытаться уйти в хайд, ### 0 - не будет . ### var TryRecall=1 ## 1 - После того как соберет достаточный вес, будет пытаться ### реколиться домой, ### складывать руду в сундук и реколиться обратно , 0 - не будет.(DropOnVip ### должно быть 0) ### var RuneToHome=6 ## - Номер руны Домой,по счёту в рунбуке.(сейчас в 4ом ### слоте,можнnfv? ult rehcjh cnjbn b Дшту о менять от 1-9) ### var RuneToMining=5 ## - Номер руны в место где копаем,по счёту в рунбуке. ### (сейчас в 5ом слоте,можно менять от 1-9) ### var GetFromFile=1 ## 1 - Координаты где копать будут считыватся из файла, 0 - ### собиратся из клиента ### (сначала соберите а потом считывайте из файла). ### var OreQty=600 ## - Максимальный вес, добыв который надо реколиться домой. ### (сейчас 600 стоунов) ### var ControlOfDanger=0 ## 1 - Включить рекол по руне(в паке) при атаке, 0 - ### отключить рекол. ### var ElementalKill=0 ## 1 - Вылючить килл элементала, 0 - отключить(рекол). ### var DangerousTime=50000 ## - Время в секундах которое чар будет ждать(после ### рекола) пока уйдет ПК или Элемент.(сейчас 50 секунд) ### var CycleScript=0 ## 1 - Скрипт не отключается после рекола от атакующего, 0 - ### отключаетсяи закрывает UO. ### var Reconnect=1 ## 1 - Включить реконнект на сервер если выкинет, 0 - отключить ### реконнект. ### var DisturbingSound=('C:\warning.wav') ## - Звук которы будет пригран при атаке. ### (замените на свой) ### var DropX=2023 ## - Координата перед сундуком по X. ### var DropY=414 ## - Координата перед сундуком по Y. ### var DropOnVip=0 ## - Если в ВИП пещере пожходить к сундука и сбрасывать руду. ### (TryRecall должно быть 0) ################################################################################ ################### ### ### После настройки: ### Идите в место где будем копать. ### Запустите cкрипт GoMining(), инжект попросит вас указать Кирку(появится ### прицел, прицелом на неё), ### Рунбук(появится прицел, прицелом на него) ,Руну(прицелом на нее) и Сундук ### для логов. ### После этого чар пойдет по координатам и будет копать руду. ########### ### Код ### ########### sub GoMining() uo.Print('Выбери Кирку: ') uo.Exec('addobject Pickaxe') 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 ControlOfDanger==1 then uo.Print('Выбери Руну: ') uo.Exec('addobject Rune') while uo.Targeting() wait(100) wend end if 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[21] 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]=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 21 if uo.LastTile(0)==OreTile[k]+1 then flag=2 end if next if flag==0 then for k=0 to 21 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 InfoOre() flag=WalkN(OreX[j],OreY[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 mx, my, mz, i, j mx = UO.GetX("self") my = UO.GetY("self") mz = UO.GetZ("self") UO.DeleteJournal() for i = mx-2 to mx+2 for j = my -2 to my+2 while not UO.Hidden() UO.Warmode("0") uo.print("pryachemsa...") UO.UseSkill("Hiding") wait(4000) wend UO.Print("kopaem v koord: "+str(mx-i)+" "+str(my-j)) while not UO.InJournal("no ore here") and not UO.InJournal("location") and not UO.InJournal("far away") and not UO.InJournal("in rock") and not UO.InJournal("Copper") and not UO.InJournal("Rusty Ore") UO.DeleteJournal() if uo.waiting() then uo.canceltarget() endif UO.Waittargettile("1341", str(i), str(j), str(mz)) UO.Usetype(uo.GetGraphic("Pickaxe")) while not UO.InJournal("You put") and not UO.InJournal("heavy") and not UO.InJournal("location") and not UO.InJournal("no ore") and not UO.InJournal("but fail") and not UO.InJournal("far away") and not UO.InJournal("in rock") wait (500) if uo.injournal("heavy") or uo.dead() then DisturbingSound(1) DangerWait() endif wend wend UO.DeleteJournal() next 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(1000) 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 WalkN(x,y,Target) VAR LastTimer LastTimer=UO.Timer() VAR i VAR dir,ldir,rdir,key,olddir VAR dx,dy,Exit=0 VAR CacheLimit=9,CacheIndex="Text" DIM CacheX[10], CacheY[10] CacheX[0]="Test" uo.say('') While Exit<>1 or not uo.injournal('You are too overloaded to move') If Target<>"" Then dx=UO.GetX(Target)-UO.GetX() dy=UO.GetY(Target)-UO.GetY() If UO.GetDistance(Target)<2 OR LastTimer+100<UO.Timer() Then wait(1000) return Endif Else dx=x-UO.GetX() dy=y-UO.GetY() If dx==0 AND dy==0 OR LastTimer+100<UO.Timer() Then return Endif Endif If dx<>0 AND dy<>0 Then If dx>0 AND dy>0 Then ; GoSE dir=3 ldir=2 rdir=4 key=40 ; DownArrow olddir=UO.GetDir() If StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Then If olddir==2 Then ; GoNE dir=1 ldir=0 rdir=1 key=39 ; RightArrow While UO.GetDir()<>1 StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Wend Else ; GoSW dir=5 ldir=5 rdir=6 key=37 ; LeftArrow While UO.GetDir()<>5 StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Wend Endif Endif Endif If dx>0 AND dy<0 Then ; GoNE dir=1 ldir=0 rdir=2 key=39 ; RightArrow olddir=UO.GetDir() If StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Then If olddir==0 Then ; GoWN dir=7 ldir=6 rdir=7 key=38 ; UpArrow While UO.GetDir()<>7 StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Wend Else ; GoSE dir=3 ldir=3 rdir=4 key=40 ; DownArrow While UO.GetDir()<>3 StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Wend Endif Endif Endif If dx<0 AND dy>0 Then ; GoSW dir=5 ldir=4 rdir=6 key=37 ; LeftArrow olddir=UO.GetDir() If StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Then If olddir==6 Then ; GoWN dir=7 ldir=7 rdir=0 key=38 ; UpArrow While UO.GetDir()<>7 StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Wend Else ; GoSE dir=3 ldir=2 rdir=3 key=40 ; DownArrow While UO.GetDir()<>3 StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Wend Endif Endif Endif If dx<0 AND dy<0 Then ; GoWN dir=7 ldir=6 rdir=0 key=38 ; UpArrow olddir=UO.GetDir() If StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Then If olddir==0 Then ; GoNE dir=1 ldir=1 rdir=2 key=39 ; RightArrow While UO.GetDir()<>1 StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Wend Else ; GoSW dir=5 ldir=4 rdir=5 key=37 ; LeftArrow While UO.GetDir()<>5 StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Wend Endif Endif Endif Endif If dx<>0 AND dy==0 Then If dx>0 Then ; GoE dir=2 key=34 ; PgDown olddir=UO.GetDir() If StepEdit(UO.GetX(),UO.GetY(),dir,key) Then If olddir==2 Then ; GoSE dir=3 ldir=3 rdir=4 key=40 ; DownArrow While UO.GetDir()<>3 StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Wend Else ; GoNE dir=1 ldir=1 rdir=0 key=39 ; RightArrow While UO.GetDir()<>1 StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Wend Endif Endif Endif If dx<0 Then ; GoW dir=6 key=36 ; Home key olddir=UO.GetDir() If StepEdit(UO.GetX(),UO.GetY(),dir,key) Then If olddir==0 Then ; GoWN dir=7 ldir=7 rdir=0 key=38 ; UpArrow While UO.GetDir()<>7 StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Wend Else ; GoSW dir=5 ldir=4 rdir=5 key=37 ; LeftArrow While UO.GetDir()<>5 StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Wend Endif Endif Endif Endif If dx==0 AND dy<>0 Then If dy>0 Then ; GoS dir=4 key=35 ; End If StepEdit(UO.GetX(),UO.GetY(),dir,key) Then If olddir==2 Then ; GoSE dir=3 ldir=2 rdir=3 key=40 ; DownArrow While UO.GetDir()<>3 StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Wend Else ; GoSW dir=5 ldir=6 rdir=5 key=37 ; LeftArrow While UO.GetDir()<>5 StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Wend Endif Endif Endif If dy<0 Then ;GoN dir=0 key=33 ; PgUp olddir=UO.GetDir() If StepEdit(UO.GetX(),UO.GetY(),dir,key) Then If olddir==2 Then ; GoNE dir=1 ldir=1 rdir=2 key=39 ; RightArrow While UO.GetDir()<>1 StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Wend Else ; GoWN dir=7 ldir=7 rdir=6 key=38 ; UpArrow While UO.GetDir()<>7 StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Wend Endif Endif Endif Endif Wend end sub ##################################################### sub StepEdit(x,y,dir,key) VAR walkwait=405 VAR ErrLevel=0 If UO.GetDir()<>dir Then UO.Press(key) wait(walkwait) If UO.GetDir()<>dir Then CheckLag() Endif Endif UO.Press(key) wait(walkwait) If x==UO.GetX() AND y==UO.GetY() Then CheckLag() If x==UO.GetX() AND y==UO.GetY() Then ;zatik ErrLevel=1 Endif Endif Return ErrLevel end sub ##################################################### sub StepArrow(x,y,dir,ldir,rdir,key) VAR walkwait=405 VAR ErrLevel=0 If UO.GetDir()<>dir Then UO.Press(key) wait(walkwait) If UO.GetDir()<>dir AND UO.GetDir()<>ldir AND UO.GetDir()<>rdir Then CheckLag() Endif Endif If UO.GetX()==x AND UO.GetY()==y Then UO.Press(key) wait(walkwait) If UO.GetDir()==dir AND UO.GetX()==x AND UO.GetY()==y Then CheckLag() If UO.GetDir()==dir AND UO.GetX()==x AND UO.GetY()==y Then ;zatik ErrLevel=1 Endif Endif Endif Return ErrLevel end sub ##################################################### 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.Exec('warmode 0') 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('Прыгаем Домой.') RunebookRecall(RuneToHome) end sub sub RecallToOre() uo.Print('Прыгаем в Пещеру.') RunebookRecall(RuneToMining) end sub sub RunebookRecall(n) var OldX,OldY,Time OldX=uo.GetX() OldY=uo.GetY() repeat uo.Exec('warmode 0') uo.UseObject('Runebook') CheckLag() uo.Lclick(135, n*15+55) CheckLag() Time=uo.Timer() repeat wait(500) until OldX<>uo.GetX() or OldY<>uo.GetY() or uo.Dead() or uo.InJournal('needs') or uo.InJournal('fizzles') or (Time+200<uo.Timer()) uo.DeleteJournal() until OldX<>uo.GetX() or OldY<>uo.GetY() or uo.Dead() or uo.InJournal('needs') 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]=0x1F4C 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('OOPS') 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') 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.PlayWav(DisturbingSound) uo.UseType('0x0F0E','0x0631') wait(100) Recall: uo.DeleteJournal() if uo.Waiting() then uo.CancelTarget() end if uo.WaittargetObject('Rune') wait(100) uo.Cast('Recall') wait(3000) if not uo.GetX('self')<>MX and not uo.GetY('self')<>MY then goto Recall end if repeat uo.DeleteJournal() uo.WaittargetObject('Rune') uo.Cast('Mark') if uo.InJournal('mana for this spell') then ManaUp('Bottle') wait(100) end if wait(3000) until not uo.InJournal('spell fizzles') if uo.Life<uo.STR then LifeUp('Bottle') wait(100) end if if CycleScript==1 then uo.Exec('exec DangerWait') end if if CycleScript==0 then uo.Exec('exec ExitUO') end if end sub sub DisturbingSound(amount) var i for i=1 to amount uo.PlayWav(DisturbingSound) wait(1500) next end sub sub DangerWait() wait(DangerousTime) ToRecall() uo.Exec('exec Mining') 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>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 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>0 and DY>0 then DirW=9 end if if DX>0 and DY<0 then DirW=7 end if if DX<0>0 then DirW=3 end if if DX<0 and DY<0 then DirW=5 end if if DX<0>0 then DirW=8 else DirW=4 end if end if if DX==0 and DY<0>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 |
|
| Page 1 of 1 | All times are UTC+02:00 |
| Powered by phpBB® Forum Software © phpBB Limited https://www.phpbb.com/ |
|