| Yoko http://forum.yoko.com.ua/ |
|
| Помогите пожалуйста со криптом на мининг.... http://forum.yoko.com.ua/viewtopic.php?f=3&t=14402 |
Page 1 of 1 |
| Author: | Jaguar1987 [ 2009-02-11 15:29:43 ] |
| Post subject: | Помогите пожалуйста со криптом на мининг.... |
Имеется скрипт на мининг, задача данного скрипта дойти от дома до копалки, накопать инготов, далее дойти обратно до дома, переплавить руду в инги и раскидать по кучкам, которые прилочены около дома. Скрипт настроен так, что когда чар использует pickaxe скрипт направляет таргет на чара, то есть получается чар капает под себя, то есть на клетке на которой он находиться. Вопрос в следующем, как сделать так, чтобы герой копал не под себя а на 1 клетку вперед ? Уже все перепробовал, видать мозгов не хватает =( Заранее благодарен. Вот скрипт : #При работе должна быть "отжата" кнопка NumLock Var Pickaxe=0x0E85 # Pichaxe Var Ore=0x19B9 Var Ingot=0x1BF2 Var Iron=0x0000 Var MoveDelay=150 # Промежуток между шагами Var MoveNumber=1 # Количество шагов при смене дислокации Var Ep=0.172 # Значение ширины угла хождения при определении направления. Если на пути встречаются сложные и широкие препятствия - увеличить. 0.172 - сбаланчированный. Var FileName='c:\games\injection\mining51.dat' # В каждой строке файла тайл дерева Sub Main() UO.SetGlobal('process','no') repeat if UO.GetGlobal('process')=='no' then GoToTile(2498,555,0,False) GoToTile(2503,555,1,False) GoToTile(2503,558,1,False) UO.opendoor() GoToTile(2503,562,1,False) GoToTile(2516,562,1,False) GoToTile(2516,538,1,False) GoToTile(2529,538,1,False) GoToTile(2529,508,1,False) GoToTile(2525,508,1,False) GoToTile(2525,501,1,False) GoToTile(2552,501,1,False) GoToTile(2552,505,1,False) GoToTile(2558,505,1,False) GoToTile(2558,493,1,False) GoToTile(2565,485,1,False) UO.DeleteJournal() UO.Exec('exec Lumb') endIf Wait(3000) until (1==0) EndSub Sub Lumb() Var Tl,T,X,Y,Z,srl var wei UO.SetGlobal('process','yes') Var F=File(FileName) F.Open() Beg: DeleteJournal('no mine') Tl=safecall F.Readln() Tl=Trim(Tl) If Tl=='File read error' Then GoTo Ext EndIf T=GetNumb(Tl,0) X=GetNumb(Tl,1) Y=GetNumb(Tl,2) Z=GetNumb(Tl,3) UO.Print('next mine') UO.Print('Tile '+Tl) GoToTile(X,Y,1,False) Repeat uo.DeleteJournal() UO.WaitTargetTile(Str(T),Str(X),Str(Y),Str(Z)) While uo.Waiting() Emil() If UO.Dead() Then Ress() UO.WarMode( 0 ) GoToTile(X,Y,1,false) UO.WaitTargetTile(Str(T),Str(X),Str(Y),Str(Z)) Emil() endif WEND repeat Wait(1000) If UO.Dead() Then Ress() UO.WarMode( 0 ) GoToTile(X,Y,1,False) UO.WaitTargetTile(Str(T),Str(X),Str(Y),Str(Z)) Emil() endif #if uo.count(Ore)>170 then wei = ( UO.Str * 4 ) - 30 if UO.Weight > wei then GoToTile(2564,493,1,False) GoToTile(2558,493,1,False) GoToTile(2558,505,1,False) GoToTile(2552,505,1,False) GoToTile(2552,501,1,False) GoToTile(2525,501,1,False) GoToTile(2525,508,1,False) GoToTile(2529,508,1,False) GoToTile(2529,538,1,False) GoToTile(2516,538,1,False) GoToTile(2516,562,1,False) GoToTile(2503,562,1,False) GoToTile(2503,560,1,False) UO.opendoor() GoToTile(2503,558,1,False) GoToTile(2503,555,1,False) GoToTile(2498,555,1,False) wait(1000) Plav() wait(1000) Exist() wait(1000) GoToTile(2498,555,1,False) GoToTile(X,Y,1,False) UO.WaitTargetTile(Str(T),Str(X),Str(Y),Str(Z)) UO.UseObject(UO.ObjAtLayer('Rhand')) endif Until UO.InJournal("There is no ore here to mine.") or UO.InJournal("There is no ore here to mine") Until UO.InJournal("There is no ore here to mine.") or UO.InJournal("There is no ore here to mine") If UO.InJournal("There is no ore here to mine.") or UO.InJournal("There is no ore here to mine") then Goto Beg EndIf Ext: F.Close() UO.SetGlobal('process','no') EndSub ############################################################### #Определение что есть ж) ############################################################### sub Exist() #############Iron If UO.Count(0x1BF2, 0x0000) > 0 Then ProDrop(0x1BF2, 0x0000) EndIF ############Rasty If UO.Count(0x1BF2,0x0750) > 0 Then ProDrop(0x1BF2,0x0750) EndIF ############Bronze If UO.Count(0x1BF2, 0x0488) > 0 Then ProDrop(0x1BF2, 0x0488) EndIF ############Old Copper If UO.Count(0x1BF2, 0x0949) > 0 Then ProDrop(0x1BF2, 0x0949) EndIF ############Dull Copper If UO.Count(0x1BF2, 0x060A) > 0 Then ProDrop(0x1BF2, 0x060A) EndIF ############Copper If UO.Count(0x1BF2, 0x0641) > 0 Then ProDrop(0x1BF2, 0x0641) EndIF ############Pirit If UO.Count(0x1BF2, 0x09EE) > 0 Then ProDrop(0x1BF2, 0x09EE) EndIF ############Silver If UO.Count(0x1BF8, 0x0482) > 0 Then ProDrop(0x1BF8, 0x0482) EndIF ############Gold If UO.Count(0x1BEC, 0x0000) > 0 Then ProDrop(0x1BEC, 0x0000) EndIF ############Shadow If UO.Count(0x1BF2, 0x0770) > 0 Then ProDrop(0x1BF2, 0x0770) EndIF ############Verit If UO.Count(0x1BF2, 0x0947) > 0 Then ProDrop(0x1BF2, 0x0947) EndIF ############Agapit If UO.Count(0x1BF2, 0x0400) > 0 Then ProDrop(0x1BF2, 0x0400) EndIF ############Blood If UO.Count(0x1BF2, 0x04C2) > 0 Then ProDrop(0x1BF2, 0x04C2) EndIF ############Azurit If UO.Count(0x1BF2, 0x04DF) > 0 Then ProDrop(0x1BF2, 0x04DF) EndIF ############Mithril ore If UO.Count(0x19B9, 0x052D) > 0 Then ProDrop(0x19B9, 0x052D) EndIF ############Valorite ore If UO.Count(0x19B9, 0x0515) > 0 Then ProDrop(0x19B9, 0x0515) EndIF ############Winter ore If UO.Count(0x19B9, 0x0481) > 0 Then ProDrop(0x19B9, 0x0481) EndIF ############Black Rock Ore If UO.Count(0x19B9,0x0455) > 0 Then ProDrop(0x19B9,0x0455) EndIF ############Ambers If UO.Count(0x0F25,0x0000) > 0 Then ProDrop(0x0F25,0x0000) EndIF end sub ############################################################### #Умный дроп ############################################################### sub ProDrop(T,C) UO.FindType(T,C,'backpack') Var b = UO.GetSerial("finditem") UO.FindType(T,C,'ground') Var g = UO.GetSerial("finditem") UO.MoveItem(b, "0", g,str(uo.getx(g)),str(uo.gety(g)),"0") Wait(500) If Uo.Count(T,C) > 0 Then Clear(T,C) endIF end sub ############################################################### #Конец умного дропа ############################################################### ############################################################### #Умный дроп 2 ############################################################### sub ProDrop2(T,C) UO.FindType(T,C,'backpack') If C < 0 Then C = UO.GetColor('finditem') endif Var b = UO.GetSerial('finditem') UO.FindType(T,C,'ground') Var g = UO.GetSerial('finditem') UO.MoveItem(b, '0', g,str(uo.getx(g)),str(uo.gety(g)),'0') Wait(500) If Uo.Count(T,C) > 0 Then Clear(T,C) endIF end sub ############################################################### #Конец умного дропа 2 ############################################################### Sub GetNumb(C,I) var J,T,K J=0 K=1 While K>0 J=J+1 If (Mid(C,J,1)==' ') Or (J>=Len(C)-1) Then If I==0 Then T=Val(Left(C,J)) Else T=GetNumb(Right(C,Len(C)-J-1),I-1) EndIf K=0 EndIf wend UO.Print(T) return T endsub Sub Perp(Dir) Var D D=Dir If Dir==1 Then D=3 EndIf If Dir==2 Then D=4 EndIf If Dir==3 Then D=-1 EndIf If Dir==4 Then D=-2 EndIf If Dir==-1 Then D=-3 EndIf If Dir==-2 Then D=-4 EndIf If Dir==-3 Then D=1 EndIf If Dir==-4 Then D=2 EndIf RETURN D EndSub Sub MoveOnce(Dir,Del,Rev) Var Num If Rev Then Num=MoveNumber+1 Else Num=MoveNumber EndIf If (Num>0) and (Dir<>0) Then If Dir==1 Then UO.Press(38,Num,Del) EndIf If Dir==2 Then UO.Press(33,Num,Del) EndIf If Dir==3 Then UO.Press(39,Num,Del) EndIf If Dir==4 Then UO.Press(34,Num,Del) EndIf If Dir==-1 Then UO.Press(40,Num-1,Del) EndIf If Dir==-2 Then UO.Press(35,Num,Del) EndIf If Dir==-3 Then UO.Press(37,Num,Del) EndIf If Dir==-4 Then UO.Press(36,Num,Del) EndIf If Rev Then If Dir<>-1 Then UO.Press(40,1,Del) EndIf EndIf EndIf EndSub Sub GetQDir(x,y) Var J=0 If X==0 Then J=1 Else If (Y/X)<ep Then J=3 Else If (X/Y)<ep Then J=1 Else J=2 EndIf EndIf EndIf RETURN J EndSub sub GetDir(myx,myy,ox,oy) Var I,J J=0 Var X=ox-myx Var Y=oy-myy I=GetQDir(Abs(X),Abs(Y)) If X>=0 Then If Y>=0 Then If I==1 Then J=-2 Else If I==2 Then J=-1 Else If I==3 Then J=4 EndIf EndIf EndIf Else If I==1 Then J=2 Else If I==2 Then J=3 Else If I==3 Then J=4 EndIf EndIf EndIf EndIf Else If Y>=0 Then If I==1 Then J=-2 Else If I==2 Then J=-3 Else If I==3 Then J=-4 EndIf EndIf EndIf Else If I==1 Then J=2 Else If I==2 Then J=1 Else If I==3 Then J=-4 EndIf EndIf EndIf EndIf EndIf RETURN J endsub sub abs(a) Var b If a<0 Then b=-a Else b=a endif return b endsub Sub PermResend() Var Mn=4 Repeat # UO.Resend() Wait(MoveDelay*Mn) Until (1>2) EndSub sub max(A,B) Var C If A>B Then C=A Else C=B EndIf Return C EndSub sub GetDistance(X,Y) return max(abs(X-uo.getx()),abs(Y-uo.gety())) endsub sub GoToTile(OX,OY,N,S) var myx, myy, MD, J var Lx1 ,Ly1 var Lx2 ,Ly2 var Sx ,Sy var T var Des=N J=1 MD=MoveDelay*1.5 myx=uo.getx() myy=uo.gety() MoveOnce(GetDir(uo.getx(),uo.gety(),ox,oy),MD,False) Sx=0 Sy=0 Lx1=uo.getx()/2 Ly1=uo.gety()/2 Lx2=Lx1/2 Ly2=Ly1/2 T=UO.Timer() If (GetDistance(ox,oy)<>N) or ((not S) and GetDistance(ox,oy)>N) Then UO.Exec('exec PermResend') EndIf While ((GetDistance(ox,oy)<>N) or ((not S) and GetDistance(ox,oy)>N)) and (OX>=0) and (OY>=0) If ((UO.Timer()-T)*15>MoveDelay) Then T=UO.Timer() # UO.Print(Str(uo.getx())+' '+Str(uo.gety())+' '+Str(ox)+' '+Str(oy)+' '+Str(GetDir(uo.getx(),uo.gety(),ox,oy))+' '+Str(T)) Lx2=Lx1 Ly2=Ly1 Lx1=myx Ly1=myy myx=uo.getx() myy=uo.gety() endIf MD=MoveDelay If ((OX-uo.getx())*(OX-uo.getx())+(OY-uo.gety())*(OY-uo.gety())>0) Then MD=MD*3/GetDistance(ox,oy) EndIf wait(MD) If GetDistance(OX,OY)>Des Then MoveOnce(GetDir(uo.GetX(),uo.GetY(),ox,oy),MD,False) Else If S Then If GetDistance(OX,OY)<Des Then If GetDistance(OX,OY)<>0 Then MoveOnce(GetDir(ox,oy,uo.GetX(),uo.GetY()),MD,False) Else MoveOnce(GetDir(uo.GetX(),uo.GetY(),Lx2,Ly2),MD,False) EndIf EndIf EndIf EndIf If GetDistance(OX,OY)<>Des Then If (Lx2==uo.getx()) and (Ly2==uo.gety()) Then If (Sx<>uo.getx()) or (Sy<>uo.gety()) Then J=1 EndIf J=J+1 UO.Resend() Sx = uo.getx() Sy = uo.gety() Stun(ox,oy,J) EndIf EndIf Wend UO.Exec('terminate PermResend') endsub Sub Stun(X,Y,N) Var I Var myx Var myy myx = uo.getx() myy = uo.gety() For I=1 to N MoveOnce(perp(GetDir(myx,myy,x,y)),MoveDelay,False) Next Wait(MoveDelay) UO.Resend() If (myx==uo.getx()) and (myy==uo.gety()) Then For I=1 to N MoveOnce(-perp(GetDir(myx,myy,x,y)),MoveDelay,False) Next Wait(MoveDelay) UO.Resend() EndIf If (myx==uo.getx()) and (myy==uo.gety()) Then For I=1 to N MoveOnce(-GetDir(myx,myy,x,y),MoveDelay,False) Next Wait(MoveDelay) Stun(x,y,N) EndIf EndSub Sub DeleteJournal(What) Var T,J J=False If UO.InJournal(What) Then J=True UO.DeleteJournal() EndIf RETURN J EndSub sub Plav() UO.Set('finddistance','2') UO.FindType(0x0FB1,-1,'ground') If UO.FindCount() <> 0 Then repeat UO.FindType(0x19B9) IF UO.FindCount() > 0 Then If UO.GetColor('finditem') == '0x0455' Then ProDrop(0x19B9,0x0455) else if UO.GetColor('finditem') == '0x052D' Then ProDrop(0x19B9, 0x052D) else if UO.GetColor('finditem') == '0x0515' Then ProDrop(0x19B9, 0x0515) else if UO.GetColor('finditem') == '0x0481' Then ProDrop(0x19B9, 0x0481) else UO.UseObject('finditem') wait(1200) end If end if end if end if EndIf until UO.FindCount() == 0 UO.Print("-=-= END =-=-") else UO.Print("Forge not found") endIf end sub sub count() UO.Print(str(UO.Count(ore))) end sub Sub BS() #0x1B7B - Metal shield #0x13BF - chainmail tunic #0x1415 - грудина while true UO.FindType(0x1415, -1,'ground') wait(2000) If UO.FindCount() > 0 Then uo.waittargetobject('finditem') Uo.UseType(0x0FBB) wait(5000) endif WEND end sub sub Emil() IF (UO.GetGraphic(UO.ObjAtLayer("Rhand"))) <> '0x0E85' Then If UO.Count('0x0E85') > 0 Then UO.UseType('0x0E85') endif else UO.UseObject(UO.ObjAtLayer('Rhand')) EndIf wait(2000) end sub sub Clear(T,C) Var Count = UO.Count(T,C) UO.FindType(T,C,'backpack') Var b = UO.GetSerial("finditem") UO.FindType(T,C,'ground') Var g = UO.GetSerial("finditem") Wait(500) UO.MoveItem(b, "0", g,str(uo.getx(g)),str(uo.gety(g)),"0") Wait(500) If UO.Count(T,C) == Count Then If (UO.Count('finditem')+Count) < 60000 Then uo.ignore('finditem') ProDrop(T,C) endIf endIf end sub sub Ress() While UO.Dead() wait(1000) UO.WarMode( 1 ) WEND end sub sub Count() #UO.Print('Iron : '+Str(UO.Count(0x19B9, 0x0000))) #UO.Print('-=-=-=-=-=-=-=-') #UO.Print('Bronze : '+Str(UO.Count(0x19B9, 0x0488))) #UO.Print('Rasty : '+Str(UO.Count(0x19B9, 0x0750))) #UO.Print('-=-=-=-=-=-=-=-') #wait(4000) #UO.Print('-=-=-=-=-=-=-=-') #UO.Print('Old Copper : '+Str(UO.Count(0x19B9, 0x0949))) #UO.Print('Dull Copper : '+Str(UO.Count(0x19B9, 0x060A))) #UO.Print('Copper : '+Str(UO.Count(0x19B9, 0x0641))) #UO.Print('-=-=-=-=-=-=-=-') #wait(4000) #UO.Print('-=-=-=-=-=-=-=-') #UO.Print('Pirit : '+Str(UO.Count(0x19B9, 0x09EE))) #UO.Print('Silver : '+Str(UO.Count(0x19B9, 0x0482))) #UO.Print('Shadow : '+Str(UO.Count(0x19B9, 0x0770))) #UO.Print('Gold : '+Str(UO.Count(0x19B9, 0x04AA))) #UO.Print('-=-=-=-=-=-=-=-') #wait(4000) #UO.Print('-=-=-=-=-=-=-=-') #UO.Print('Verit : '+Str(UO.Count(0x19B9, 0x0947))) #UO.Print('Agapit : '+Str(UO.Count(0x19B9, 0x0400))) #UO.Print('Blood : '+Str(UO.Count(0x19B9, 0x04C2))) #UO.Print('Azurit : '+Str(UO.Count(0x19B9, 0x04DF))) #UO.Print('-=-=-=-=-=-=-=-') Wait(4000) #UO.Print('-=-=-=-=-=-=-=-') #UO.Print('Mithril : '+Str(UO.Count(0x19B9, 0x052D))) #UO.Print('Valorite : '+Str(UO.Count(0x19B9, 0x0515))) #UO.Print('Winter : '+Str(UO.Count(0x19B9, 0x0481))) #UO.Print('-=-=-=-=-=-=-=-') #UO.Print('BlackRock : '+Str(UO.Count(0x19B9, 0x0455))) #UO.Print('-=-=-=-=-=-=-=-') end sub sub play() Var Co = 0 While true If UO.Life < UO.Str then If Co < 10 then uo.playwav("D:\cap000.wav") wait(1500) Co = Co + 1 else wait(60000) Co = 0 endif end if wait(1000) wend sub Lot() repeat UO.FindType(0x19B9,-1,'ground') IF UO.FindCount() > 0 Then Uo.Grab(0,'finditem') wait(1000) end if until UO.FindCount() == 0 end sub |
|
| Author: | Jaguar1987 [ 2009-02-11 16:38:32 ] |
| Post subject: | |
Я знаю что там совсем немного нужно поменять, но просто мозг не доходит что именно ( |
|
| Author: | Savage [ 2009-02-11 18:56:12 ] |
| Post subject: | |
"Немного" завист от многих факторов. Один из них, потыкай командой ,infotile в пещере, если первая цифра будет одинаковой, тогда "немного", если нет тогда много. И зачем такой изврат то? Чем копать под себя не устраивает? |
|
| Author: | Jaguar1987 [ 2009-02-11 19:13:46 ] |
| Post subject: | |
Копать под себя устраивает еще как ) Просто администрация сервера пофиксила это ( Теперь надо макрос переписывать... |
|
| Author: | Jaguar1987 [ 2009-02-11 19:16:14 ] |
| Post subject: | |
Да уж, первая цифра в пещере не одинаковая, а что там надо поменять чтобы он на клетку впереди от себя капал ? В 2 х словах объясните пжлст... |
|
| Author: | Savage [ 2009-02-11 19:30:56 ] |
| Post subject: | |
Пофиксила прицел на себя? А если в пак или статус целить? Попробуй такой вариант: Code: sub zzz() походи по шахте, попробуй в разных местах, будет копать или нет? |
|
| Author: | Jaguar1987 [ 2009-02-11 19:53:54 ] |
| Post subject: | |
Сейчас попробую... |
|
| Author: | Jaguar1987 [ 2009-02-11 20:01:37 ] |
| Post subject: | |
Вообщем ситуация такая, макрос говорит что cannot mine that, а когда просто тыкаешь 2 раза на кирку и потом на клетку под себя он роет нормально =-( Как бы этот ньюанс обойти то ? |
|
| Author: | Jaguar1987 [ 2009-02-11 20:03:05 ] |
| Post subject: | |
Целить ни в пак ни в статус не помогает =( |
|
| Author: | Savage [ 2009-02-11 20:07:31 ] |
| Post subject: | |
Вот так можно: Code: sub DigItStay(MaxWeight,MaxDistance,BaseX,BaseY) Сначала функция приватгеттайл простукивает тип тайла. Потом этот тип используем. Не каждая версия инжи работает с этой функцией. Надо предварительно проверить. |
|
| Author: | Jaguar1987 [ 2009-02-11 20:18:40 ] |
| Post subject: | |
То есть мне это отрывок прямо в скрипт вставлять ? |
|
| Author: | Savage [ 2009-02-11 20:23:58 ] |
| Post subject: | |
Неа. Так работать не будет твой скрипт. Можешь этот отрывок изучить как наглядное пособие решения твоей проблемы. |
|
| Author: | Jaguar1987 [ 2009-02-11 20:35:44 ] |
| Post subject: | |
Ладно, спасибо огромное за помощь ) Признателен ) |
|
| Author: | Jaguar1987 [ 2009-02-19 12:55:38 ] |
| Post subject: | |
Savage wrote: Вот так можно:
Code: sub DigItStay(MaxWeight,MaxDistance,BaseX,BaseY) Сначала функция приватгеттайл простукивает тип тайла. Потом этот тип используем. Не каждая версия инжи работает с этой функцией. Надо предварительно проверить. Может кто подскажет куда именно этот отрывок в макросе вставлять ? |
|
| Page 1 of 1 | All times are UTC+02:00 |
| Powered by phpBB® Forum Software © phpBB Limited https://www.phpbb.com/ |
|