На готов отказываться от функциональности АСМа из за такой проблемы ... =)
Попробую решить обновлением дллок
- Old Paradise Forums
- → Viewing Profile: Posts: Dustman
Toggle shoutbox
Chat
Прямая связь с администрацией по скайпу: gods.dragon
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Community Stats
- Group Members
- Active Posts 48
- Profile Views 6175
- Member Title Novice
- Age Age Unknown
- Birthday Birthday Unknown
-
Gender
Not Telling
Posts I've Made
In Topic: Проблема с инжой
19 February 2010 - 11:35
In Topic: Проблема с инжой
19 February 2010 - 02:37
автолоад немаленький =))) и проблем в нем я не нашел... но может свежий взгляд... =)
sub recallASMmini() var runebook = '0x40044c23'; ID Runebook. Use ,info var where = uo.asminputstring("Введите порядковый номер руны от 1 до 16:") var how = 2 #### 1 = Реколл_по_зарядам; 2 = Реколл_по_регам; 3 = Реколл_гейтом; 4 = Перезарядка_рунбуки var oldX=uo.getX() var oldY=uo.getY() var number, num=val(where) if how == 1 then number = num+1 endif if how == 2 then number = num*2+18 endif if how == 3 then number = num*2+19 endif if how == 4 then deletejournal('You have no scrolls') uo.recall(runebook, 1) if uo.injournal('You have no scrolls') then uo.print('You have no scrolls. Terminating.') return else return endif endif if num>16 or num<1 then uo.print('Wrong rune number. Terminating.') return endif repeat uo.warmode(false) deleteJournal('Insufficient mana for this spell|You lack the reagents for this spell') uo.recall(runebook, number) uo.useskill('Hiding') var k=0 repeat wait(500) k=k+500 until oldX<>uo.getX() or oldY<>uo.getY() or uo.InJournal('Insufficient mana for this spell|You lack the reagents for this spell') or k>15000 if uo.injournal('Insufficient mana for this spell') then uo.print('You need more mana. Terminating') return endif if uo.injournal('You lack the reagents for this spell') then uo.print('You need more reagents. Terminating') return endif until oldX<>uo.getX() or oldY<>uo.getY() end sub sub saysell() uo.msg('Продам МС+9/+15/Холинайт грудак/Драгон руки/ДМ перчи') endsub sub testtt() repeat uo.findtype('0x13E3', '0x0000', -1) if uo.findcount()>0 then deletejournal('You smelt') wait(100) uo.waittargetobject('finditem') uo.useobject(0x400541FB) repeat wait(100) until uo.injournal('You smelt') else wait(1000) endif until uo.findcount()==0 endsub sub repairarm() var i, name, y, itemnum, reptool, item var dblhand = 1; 1 - dvuruchnoe; 0 - odnoruchnoe oruzhie var armor = 1; 0 - esli metal, 1 - esli kozha var necklace = 1; если используешь реген ожерелье то ставим 0, если используешь армор горжетку, то 1 Dim ar[8] ar[0] = 'Hat' ar[1] = 'Lhand' ar[2] = 'Torso' ar[3] = 'Arms' ar[4] = 'Gloves' ar[5] = 'Legs' ar[6] = 'Pants' ar[7] = 'Neck' if armor == 0 then reptool = '0x1865' else reptool = '0x0F9D' endif if uo.count(reptool) then uo.print('Repair tool is avaliable. Starting to repair your armor') else uo.print('Repair tool not found! Terminating..') return endif if necklace == 0 then itemnum = 6 else itemnum = 7 endif for i = 0 to itemnum if uo.objatlayer(ar[i])<>'' then if i==1 and dblhand==1 then goto skip endif item = uo.getserial(uo.objatlayer(ar[i])) uo.moveitem(uo.objatlayer(ar[i]),-1,'backpack') wait(300) deletejournal('fully repaired|must have|Target weapon or armor to repair|Target leather armor to repair') uo.waittargetobject(item) uo.usetype(reptool) repeat wait(100) until uo.injournal('fully repaired|must have|Target weapon or armor to repair|Target leather armor to repair') if uo.injournal('must have') then uo.print('No resourses to repair the weapon') endif if uo.injournal('fully repaired') then uo.print('Succesfully repaired') endif if uo.injournal('Target weapon or armor to repair|Target leather armor to repair') then uo.useobject(item) uo.print('False settings. Terminating...') return endif uo.useobject(item) while uo.objatlayer(ar[i])<>item wait(100) wend skip: endif next uo.print('-=Done=-') endsub sub repairarmASM() # podumat pro sloj malenkogo nagrudnika... var MinDur = 10 var i, name, y, itemnum, reptool, item var dblhand = UO.asmInputList("Выберите тип оружия","Одноручное;Двуручное") ;2 - dvuruchnoe; 1 - odnoruchnoe oruzhie var armor = UO.asmInputList("Выберите тип доспехов","Металл;Кожа") ;1 - esli metal, 2 - esli kozha var necklace = UO.asmInputList("Что у Вас на шее?","Ожерелье;Горжетка") ;если используешь реген ожерелье то ставим 1, если используешь армор горжетку, то 2 Dim ar[8] ar[0] = 'Hat' ar[1] = 'Lhand' ar[2] = 'Torso' ar[3] = 'Arms' ar[4] = 'Gloves' ar[5] = 'Legs' ar[6] = 'Pants' ar[7] = 'Neck' if armor == 1 then reptool = '0x1865' ;reptool for metall stuff else reptool = '0x0F9D' ;reptool for tailored stuff endif if uo.count(reptool) then #h=uo.getserial('_0x13E3') uo.print('Repair tool is avaliable. Starting to repair your armor') else uo.print('Repair tool not found! Terminating..') return endif if necklace == 1 then itemnum = 6 else itemnum = 7 endif for i = 0 to itemnum if uo.objatlayer(ar[i])<>'' then #deletejournal('Durability') #uo.click(uo.objatlayer(ar[i])) # repeat # wait(10) # until UO.InJournal("Durability") # name = uo.Journal(uo.InJournal("Durability")-1) # y = val(onlynumbers( name )) # if y < MinDur then # uo.print('Nachinau pochinku') if i==1 and dblhand==2 then goto skip endif item = uo.getserial(uo.objatlayer(ar[i])) uo.moveitem(uo.objatlayer(ar[i]),-1,'backpack') ### uo.moveitem(Arms,-1,'backpack') or uo.unequip(ar[i]) #CheckLag() wait(300) deletejournal('fully repaired|must have|Target weapon or armor to repair|Target leather armor to repair') uo.waittargetobject(item) uo.usetype(reptool) repeat wait(100) until uo.injournal('fully repaired|must have|Target weapon or armor to repair|Target leather armor to repair') if uo.injournal('must have') then uo.print('No resourses to repair the weapon') endif if uo.injournal('fully repaired') then uo.print('Succesfully repaired') endif if uo.injournal('Target weapon or armor to repair|Target leather armor to repair') then uo.useobject(item) uo.print('False settings. Terminating...') return endif uo.useobject(item) while uo.objatlayer(ar[i])<>item wait(100) wend # else # uo.print('Pochinka ne nuzhna. Tekushaya prochnost: ' + str(y)) # endif skip: endif next uo.print('-=Done=-') endsub sub checkdurability() var MinDur = 10, name, y, hand var dblhand = 1 if dblhand == 0 then hand = 'Rhand' else hand = 'Lhand' endif deletejournal('Durability') uo.click(uo.objatlayer(hand)) repeat wait(100) until UO.InJournal("Durability") name=uo.Journal(uo.InJournal("Durability")-1) if len(onlynumbers( name )) == 4 then y = val(Left(onlynumbers( name ),2)) endif if len(onlynumbers( name )) == 3 then y = val(Left(onlynumbers( name ),1)) endif if y < MinDur then uo.print('Nachinau pochinku') repair() else uo.print('Pochinka ne nuzhna. Tekushaya prochnost: ' + str(y)) endif endsub sub repair() var reptool = '0x1865' var dblhand = 1; 0 - onehand. 1 - 2hand weapon var wep, hand if uo.count(reptool) then uo.print('Repair tool is avaliable. Starting to repair your weapon') else uo.print('Repair tool not found! Terminating..') return endif if dblhand == 0 then wep = uo.getserial(uo.objatlayer('Rhand')) hand = 'Rhand' else wep = uo.getserial(uo.objatlayer('Lhand')) hand = 'Lhand' endif uo.unequip(hand) CheckLag() deletejournal('fully repaired|must have') uo.waittargetobject(wep) uo.usetype(reptool) repeat wait(100) until uo.injournal('fully repaired|must have') if uo.injournal('must have') then uo.print('No resourses to repair the weapon') endif wait(50) if uo.injournal('fully repaired') then uo.print('Succesfully repaired') endif uo.useobject(wep) end sub sub fullavtoloot() deletejournal('Body of') while not false if uo.injournal('Body of') then deletejournal('Body of') Looting2() #checkdurability() else wait(100) endif wend endsub sub autoattack() var mob If UO.InJournal('is attacking you') then mob=uo.getserial(UO.JournalSerial(UO.InJournal('is attacking you')-1)) UO.DeleteJournal() if mob<>0 and mob<>uo.getserial('self') then uo.attack(mob) wait(1000) end if endif wait(500) endsub ##################################################################### ; Remember armor & weapon, disarm, healing from bandages, arm Sub Bandag() UO.Exec('bandageself') endsub ##################################################################### ; AutoHeal. v.1.10b (c) Edred ; ; ?????????????? ?????? ???? (???????? ????? 30). ?????????????? ????? ; ???????? ??????? ??? ???????? ?????? 60. ?????????????? ??????????? ; ?????? ? ???? ??? ??????? ? ?????? ?? ? ???? ????? ????????. ; dorabotat poison sub AutoHeal() while not uo.dead() DeleteJournal('You put the bloody|You fail|already fully heal|Targeting cancelled|Unexpected target info') If UO.Life < uo.str-(uo.str/10) Then UO.Exec('bandageself') repeat wait(100) until UO.InJournal('You put the bloody|You fail|already fully heal|Targeting cancelled|Unexpected target info') else wait(100) Endif wend endsub Sub Looting() var wep = uo.getserial(uo.objatlayer('Lhand')) #Rhand for 1hand weapon - Lhand for 2 hand wep VAR WaitTime=1800 VAR Exit=0, i VAR dagger=0x0F51 DIM Loot[15] Loot[0]=0x0EED;gold Loot[1]=0x09AA;pandora Loot[2]=0x1088;бусы Loot[3]=0x108A;кольцо Loot[4]=0x1086;браслет Loot[5]=0x1087;серьги Loot[6]=0x1078;кожа Loot[7]=0x0F7B; BM Loot[8]=0x0F7A; BP Loot[9]=0x0F84; GA Loot[10]=0x0F85; GI Loot[11]=0x0F86; MR Loot[12]=0x0F88; NS Loot[13]=0x0F8C; SA Loot[14]=0x0F8D; SS Loot[15]=0x0E76;bag #UO.UseObject('lastcorpse') uo.waittargetobject('lastcontainer') UO.UseType(dagger); бучер wait(500) uo.useobject(wep) uo.say(chr(27)) For i=0 to 15 #UO.FindType(Loot[i],-1,'ground') #if uo.findcount() then #UO.moveitem("finditem", -1, 'backpack') #wait(WaitTime) #endif #if UO.GetQuantity('lastcorpse') then UO.FindType(Loot[i],-1,'lastcontainer') if uo.findcount() then UO.moveitem("finditem", -1, 'backpack') wait(WaitTime) endif #endif next end sub Sub Looting2() var i,n Dim Loot[15] Loot[0]=0x0EED;gold Loot[1]=0x09AA;pandora Loot[2]=0x1088;бусы Loot[3]=0x108A;кольцо Loot[4]=0x1086;браслет Loot[5]=0x1087;серьги Loot[6]=0x1078;кожа Loot[7]=0x0F7B; BM Loot[8]=0x0F7A; BP Loot[9]=0x0F84; GA Loot[10]=0x0F85; GI Loot[11]=0x0F86; MR Loot[12]=0x0F88; NS Loot[13]=0x0F8C; SA Loot[14]=0x0F8D; SS Loot[15]=0x0E76;bag i = 1800 FOR n=0 TO 15 uo.findtype(Loot[n],"-1","lastcontainer") if uo.findcount() > 0 then UO.moveitem("finditem", -1, 'backpack') uo.print("Found "+str(uo.findcount())) Wait(i) END if next end sub ##################################################################### Sub GoHide() While not UO.Hidden() uo.warmode(false) UO.UseSkill('Hiding') Wait(4000) Wend endsub Sub dogonPvM() var mob mob=uo.getserial('laststatus') repeat if uo.getdistance(mob)>1 then Walker(uo.getX(mob), uo.gety(mob), 1) end if wait(500) until uo.getHP(mob)<=0 endsub sub RegCheck() VAR n, q, c Dim Req[50]; Requirements Req[0]='0x0F7A'; regi bp Req[1]='0x0F7B'; regi bm Req[2]='0x0F86'; regi mr Req[3]='0x0F88'; regi ns Req[4]='0x0F8D'; regi ss Req[5]='0x0F84'; regi ga Req[6]='0x0F85'; regi gs Req[7]='0x0F8C'; regi sa Req[8]='0x0F0E'; gh Req[9]='0x0F0E'; mana Req[10]='0x0F0E'; refresh Req[11]='0x0E21'; bandages Req[12]='0x1F52'; paralyze scrolls Req[13]='0x0F0E'; poison Req[14]='0x0F3F'; arrows Req[15]='0x0F0E'; empty bottles Req[16]='0x0E20'; bloody bandages Req[17]='0x1F5F'; fs Req[18]='0x1BFB'; bolts Req[19]='0x0F03'; Antifreeze Req[20]='0x0F0E'; Invisibility Req[21]='0x1F50'; Magic Reflection Dim Qnt[50]; Quantity Qnt[0]=50; regi Qnt[1]=50; regi Qnt[2]=50; regi Qnt[3]=50; regi Qnt[4]=50; regi Qnt[5]=50; regi Qnt[6]=50; regi Qnt[7]=50; regi Qnt[8]=15; gh Qnt[9]=15; mana Qnt[10]=10; refresh Qnt[11]=100; bandages Qnt[12]=20; paralyze scrolls Qnt[13]=3; poison Qnt[14]=0; arrows Qnt[15]=0; empty bottles Qnt[16]=0; bloody bandages Qnt[17]=10; fs Qnt[18]=50; bolts Qnt[19]=3; Antifreeze Qnt[20]=0; Invisibility Qnt[21]=0; Magic Reflection Dim Clr[50]; Color Clr[0]='0x0000'; regi Clr[1]='0x0000'; regi Clr[2]='0x0000'; regi Clr[3]='0x0000'; regi Clr[4]='0x0000'; regi Clr[5]='0x0000'; regi Clr[6]='0x0000'; regi Clr[7]='0x0000'; regi Clr[8]='0x09BB'; gh Clr[9]='0x09DF'; mana Clr[10]='0x0997'; refresh Clr[11]='0x0000'; bandages Clr[12]='0x0000'; paralyze scrolls Clr[13]='0x0998'; poison Clr[14]='0x0000'; arrows Clr[15]='0x0000'; empty bottles Clr[16]='0x0000'; bloody bandages Clr[17]='0x0000'; fs Clr[18]='0x0000'; bolts Clr[19]='0x09CF'; Antifreeze Clr[20]='0x0631'; Invisibility Clr[21]='0x0000'; Magic Reflection if (uo.getserial('backpack') <> uo.getserial('lastcontainer')) then c=uo.getserial('lastcontainer') for n=0 to 7 while uo.count(Req[n],Clr[n])<>Qnt[n] q=Qnt[n]-uo.count(Req[n],Clr[n]) if q>0 then uo.findtype(Req[n],Clr[n],c) if uo.findcount() then uo.moveitem('finditem',STR(q),'backpack',141,134,0) checklag() wait(600) else uo.msg(' item Req('+str(n)+') NOT FOUND ') return endif else q=-q uo.findtype(Req[n],Clr[n],'backpack') if uo.findcount() then uo.moveitem('finditem',STR(q),c) checklag() wait(600) endif endif wend next endif uo.print(' -= done =- ') endsub sub unloadregs() VAR n, q, c Dim Req[50]; Requirements Req[0]='0x0F7A'; regi Req[1]='0x0F7B'; regi Req[2]='0x0F86'; regi Req[3]='0x0F88'; regi Req[4]='0x0F8D'; regi Req[5]='0x0F84'; regi Req[6]='0x0F85'; regi Req[7]='0x0F8C'; regi Req[8]='0x0F0E'; gh Req[9]='0x0F0E'; mana Req[10]='0x0F0E'; refresh Req[11]='0x0E21'; bandages Req[12]='0x1F52'; paralyze scrolls Req[13]='0x0F0E'; poison Req[14]='0x0F3F'; arrows Req[15]='0x0F0E'; empty bottles Req[16]='0x0E20'; bloody bandages Req[17]='0x1F5F'; fs Req[18]='0x1BFB'; bolts Req[19]='0x0F03'; Antifreeze if (uo.getserial('backpack') <> uo.getserial('lastcontainer')) then c=uo.getserial('lastcontainer') for n=0 to 7 uo.findtype(Req[n],-1,'my') while uo.findcount() uo.moveitem('finditem',0,c) checklag() wait(700) uo.findtype(Req[n],-1,'my') wend next endif uo.print(' -= done =- ') endsub Sub opendoor() uo.set('distance','2') uo.opendoor() uo.set('distance','3') endsub Sub RunebookRecall() var n = 1 var oldX=uo.getX() var oldY=uo.getY() repeat uo.Exec('warmode 0') uo.UseObject('0x40044C23') CheckLag() uo.LClick(255, n*15+240) CheckLag() uo.LClick(255, n*15+240) var time=uo.Timer() repeat wait(500) until oldX<>uo.getX() or oldY<>uo.getY() or uo.Life==0 or uo.InJournal('needs') or time+200<uo.Timer() uo.DeleteJournal() until oldX<>uo.getX() or oldY<>uo.getY() end sub sub RunebookRecallRegs() var oldX=uo.getX() var oldY=uo.getY() repeat uo.Exec('warmode 0') uo.UseObject('0x40044C23') CheckLag() uo.LClick(255, 377) CheckLag() uo.LClick(260, 330) UO.UseSkill('Hiding') var time=uo.Timer() repeat wait(500) until oldX<>uo.getX() or oldY<>uo.getY() or uo.Life==0 or uo.InJournal('needs') or time+200<uo.Timer() uo.DeleteJournal() until oldX<>uo.getX() or oldY<>uo.getY() end sub ########################################## ХОДИЛКА 3 ########################## #var Prec=3 # Как близко следует подойти к цели (Precision) #var MaxTraceDistance=5 # Максимальная длина обхода. Желательно ставить с расчета возможных препятсвий. Если ставить очень #большие числа, кодилка может пойти в обход пол мира чтобы дойти к соседнему дереву. #var Speed=2 # Длина шага. Сколько шагов делать за раз. Выше 3 ставить смысла нет. Тоесть тупое умножение шагов. Для ламбера #идеально 3, для майнинга - 1. #var StepTimeOut=400 # Если уперлись в неопознанный обьект, сколько мсек ждать сдвига с места. Если по простому - таймаут #шага. Если поставить сильно маленькие, ходилка начнет трассировать пустые места. #UO.SetGlobal("Logging","1") # - показывать отладочные сообщения. #UO.SetGlobal("BlindWalk","0") # - не использовать проверку тайлов, а использовать ходьбу наощупь. Для майнинга ОБЯЗАТЕЛЬНО #ВКЛЮЧИТЬ. #В функции IsPass, содержиться список проходимых тайлов. #Walker(X,Y,Prec) - идем к цели с координатами X,Y. Возвращает 1 в случае успешного достижения цели, и 0 - при невозможном обходе (путь не найден) #Tracer(StartDir,Direction) - трассировка 1 шага. Возвращает направление по которому получилось сдвинуться с места. StartDir #- направление последнего движения, Direction (-1 или +1) направление обхода. -1 - по часовой стрелке, +1 против часовой #стрелки. Направления скрипт использует личного формата: #1 - влево вниз #2 - вниз #3 - вправо вниз #4 - вправо #5 - вправо вверх #6 - вверх #7 - влево вверх #8 - влево #Tracer(StartDir,Direction) - идеально подходит для рыбалки вдоль берега так как она будет обходить берег бесконечно (1 #запуск функции = 1 шаг обхода). ##################################################### # WW W WW AA LL Kk KK EE EE RRR # # WW W WW AA A LL Kk K EEE R R # # WW W WW AA A LL KKK EEEEE R R # # WW WW WW AAAA LL KKK EEE RRR # # WWW WWW AA A LLLL KK Kk EE EE R RR # #################################################### var MaxTraceDistance=5 var TraceLoopIncrease=5 #Увеличение MaxTraceDistance при исчерпании количества ходов var LimitTrace=20 #Сколько шагов в ОБЕ стороны от начальной точки обхода прекращают ходилку (выхода нет). var Speed=2 var StepTimeOut=300 #Таймаут шага. Устанавливать не в размер пинга, а в размер шага + размер пинга. # Для ходьбы - 500+Ping # Для бега/ходьбы на лошади - 300+Ping # Бег на лошади - 150 + Ping var CheckCnt=2 #Количество слепых проверок. УВЕЛИЧИВАЕТ В СТОЛЬКО РАЗ ТАЙМАУТ. Использовать только на БЫСТРОМ но НЕСТАБИЛЬНОМ коннекте. При большом пинге будет УЖАС. var DynamicPause=30 #Минимальные паузы в циклах. Чем меньше число - тем меньше рывков и тем больше нагрузка процессора. Sub Walker(GoX,GoY,Prec) UO.SetGlobal("Logging","0") UO.SetGlobal("BlindWalk","0") var LastDir var MoveRes var TracerCnt UO.SetGlobal("GlobalGoX",str(GoX)) UO.SetGlobal("GlobalGoY",str(GoY)) while not IsEnd(GoX,GoY,Prec) TracerCnt = MaxTraceDistance repeat LogInfo('Just walking') LastDir=GoUntilHit(GoX,GoY,Prec) if IsEnd(GoX,GoY,Prec) then return 1 end if LogInfo('Tracing') MoveRes = FullAroundTrace(LastDir,GoX,GoY,Prec,TracerCnt) if TracerCnt > LimitTrace then return 0 endif TracerCnt = TracerCnt + TraceLoopIncrease until MoveRes == 1 wend return 1 end sub Sub FullAroundTrace(StartDir,GoX,GoY,Prec,MaxTrace) var LineX=UO.GetX() var LineY=UO.GetY() var CurDir=StartDir var Direction=CountDirection(GoX,GoY,CurDir,Prec) var StartX,StartY var MovesDone=0 repeat StartX=UO.GetX() StartY=UO.GetY() CurDir=Tracer(CurDir,Direction,Prec) if (CurDir==GetDir(GoX,GoY,Prec)) then return 1 endif if MovesDone>0 and PrevMoveCross(GetDirToDir(UO.GetDir(),Prec),LineX,LineY,GoX,GoY,StartX,StartY,Prec) then return 1 end if MovesDone=MovesDone+1 CurDir=AddToDir(CurDir,-Direction,Prec) until MovesDone>MaxTrace return 0 end sub Sub CountDirection(GoX,GoY,StartDir,Prec) var GoDir=GetDir(GoX,GoY,Prec) var MyX=UO.GetX() var MyY=UO.GetY() if GoDir<StartDir then return -1 end if if GoDir>StartDir then return 1 end if if Abs(MyX-GoX)>Abs(MyY-GoY) then if (GoDir==3 and GoY>MyY) OR (GoDir==7 and GoY<MyY) then return -1 else return 1 end if else if (GoDir==1 and GoX<MyX) or (GoDir==5 and GoX>MyX) then return -1 else return 1 end if end if end sub Sub PrevMoveCross(Dir,x1,y1,x2,y2,StartX,StartY,Prec) var x3,y3,x4,y4 x3=StartX y3=StartY x4=StartX+(XFromDir(Dir)-StartX)*Speed y4=StartY+(YFromDir(Dir)-StartY)*Speed return LinesCrossing(x1,y1,x2,y2,x3,y3,x4,y4,Prec) end sub Sub LinesCrossing(x1,y1,x2,y2,x3,y3,x4,y4,Prec) if x1==x3 and y1==y3 then return false end if var z1=(x3-x1)*(y2-y1)-(y3-y1)*(x2-x1) var z2=(x4-x1)*(y2-y1)-(y4-y1)*(x2-x1) if z1*z2>0 then return false else LogInfo('Vector info:') LogInfo('x1= '+str(x1)) LogInfo('y1= '+str(y1)) LogInfo('x2= '+str(x2)) LogInfo('y2= '+str(y2)) LogInfo('x3= '+str(x3)) LogInfo('y3= '+str(y3)) LogInfo('x4= '+str(x4)) LogInfo('y4= '+str(y4)) return true end if end sub Sub IsDiap(X,X0,X1,Prec) if X<=X0+Prec and X>=X1-Prec OR X>=X0-Prec and X<=X1+Prec then return true end if return false end sub Sub GoUntilHit(GoX,GoY,Prec) var LastDir LastDir=GetDir(GoX,GoY,Prec) var CouldMove repeat LastDir=GetDir(GoX,GoY,Prec) if LastDir<>0 and not IsEnd(GoX,GoY,Prec) then CouldMove=TryDir(LastDir,Prec) end if until LastDir==0 or IsEnd(GoX,GoY,Prec) or not CouldMove return LastDir end sub Sub IsEnd(GoX,GoY,Prec) if Abs(UO.GetX()-GoX)<=Prec and Abs(UO.GetY()-GoY)<=Prec then LogInfo('END FOUND') return true else return false end if end sub Sub GetDir(GoX,GoY,Prec) var MyX=UO.GetX() var MyY=UO.GetY() var DiffX=Abs(UO.GetX()-GoX) var DiffY=Abs(UO.GetY()-GoY) var GoDir=0 if (DiffX/(DiffY+0.1))>=2 then if (MyX>GoX) then GoDir=7 else GoDir=3 end if else if (DiffY/(DiffX+0.1))>=2 then if (MyY>GoY) then GoDir=5 else GoDir=1 end if else if (MyX>GoX) and (MyY>GoY) then GoDir=6 else if (MyX>GoX) and (MyY<GoY) then GoDir=8 else if (MyX<GoX) and (MyY>GoY) then GoDir=4 else if (MyX<GoX) and (MyY<GoY) then GoDir=2 end if end if end if end if end if end if return GoDir end sub Sub Tracer(StartDir,Direction,Prec) var CurDir=StartDir var Result repeat Result=TryDir(CurDir,Prec) if not Result then CurDir=AddToDir(CurDir,Direction,Prec) end if until Result return Result end sub Sub AddToDir(Dir,Cnt,Prec) var NewDir=Dir NewDir=NewDir+Cnt while NewDir>8 NewDir=NewDir-8 wend while NewDir<1 NewDir=NewDir+8 wend return NewDir end sub Sub TryDir(Dir,Prec) var BegX=UO.GetX() # Ia?aeuiia O var BegY=UO.GetY() # Ia?aeuiia Y var Counter=0 var GoX=BegX var GoY=BegY GoX=XFromDir(Dir) GoY=YFromDir(Dir) if not IsPass(GoX,GoY) then LogInfo(str(GoX)+':'+str(GoY)+' is not passable') return false end if return TurnAndGoDir(Dir,Prec) end sub Sub XFromDir(Dir) if Dir==2 OR Dir==3 Or Dir==4 then return (UO.GetX()+1) end if if Dir==6 OR Dir==7 Or Dir==8 then return (UO.GetX()-1) end if return (UO.GetX()) end sub Sub YFromDir(Dir) if Dir==8 OR Dir==1 Or Dir==2 then return (UO.GetY()+1) end if if Dir==4 OR Dir==5 Or Dir==6 then return (UO.GetY()-1) end if return (UO.GetY()) end sub Sub TurnAndGoDir(Dir,Prec) var StartDir=GetDirToDir(UO.GetDir(),Prec) var StartX=UO.GetX() var StartY=UO.GetY() var EndDir var Counter=0 var TestCounter=CheckCnt #Direction Test repeat Counter = 0 LogInfo('Dir: '+str(StartDir)+' Counter: '+str(Counter)) PressDir(Dir) repeat EndDir=GetDirToDir(UO.GetDir(),Prec) wait(DynamicPause) Counter=Counter+1 until StartDir<>EndDir or StartY<>UO.GetY() or StartX<>UO.GetX() or Counter>=StepTimeOut/DynamicPause TestCounter = TestCounter - 1 LogInfo('Dir: '+str(EndDir)+' Counter: '+str(Counter)) until TestCounter <= 0 or Counter < StepTimeOut/DynamicPause if Counter>=StepTimeOut/DynamicPause then LogInfo('Direction timeout reached') return 0 end if #End direction Test if StartY<>UO.GetY() or StartX<>UO.GetX() then return Dir end if #Start Primary test TestCounter=CheckCnt repeat GoDir(Dir,Prec) Counter=0 repeat wait(DynamicPause) Counter=Counter+1 until StartY<>UO.GetY() or StartX<>UO.GetX() or Counter>=StepTimeOut/DynamicPause TestCounter = TestCounter - 1 until TestCounter <= 0 or Counter < StepTimeOut/DynamicPause #End primary test if Counter>=StepTimeOut/DynamicPause then LogInfo('Step timeout reached') return 0 else return Dir end if end sub Sub GetDirToDir(GotDir,Prec) var ChangedDir=-GotDir ChangedDir=AddToDir(ChangedDir,5,Prec) return ChangedDir end sub Sub DirToInj(Dir) dim Dirs[9] Dirs[1]=1 Dirs[2]=2 Dirs[3]=3 Dirs[4]=6 Dirs[5]=9 Dirs[6]=8 Dirs[7]=7 Dirs[8]=4 return (Dirs[Dir]) end sub Sub PressDir(Dir) dim Dirs[9] Dirs[1]=35 Dirs[2]=40 Dirs[3]=34 Dirs[4]=39 Dirs[5]=33 Dirs[6]=38 Dirs[7]=36 Dirs[8]=37 UO.Press(Dirs[Dir],1) end sub Sub GoDir(Dir,Prec) dim Dirs[9] Dirs[1]=35 Dirs[2]=40 Dirs[3]=34 Dirs[4]=39 Dirs[5]=33 Dirs[6]=38 Dirs[7]=36 Dirs[8]=37 var DistanceX=Abs(UO.GetX()-val(UO.GetGlobal("GlobalGoX"))) var DistanceY=Abs(UO.GetY()-val(UO.GetGlobal("GlobalGoY"))) var GoDistance if (DistanceX-Prec)<Speed then GoDistance=DistanceX-Prec else if (DistanceY-Prec)<Speed then GoDistance=DistanceY-Prec else GoDistance=Speed endif endif UO.Press(Dirs[Dir],GoDistance) end sub Sub IsPass(X,Y) if UO.GetGlobal("BlindWalk") then return true endif dim Types[60] Types[1]=3 Types[2]=25 Types[3]=51 Types[4]=63 Types[5]=113 Types[6]=140 Types[7]=172 Types[8]=219 Types[9]=232 Types[10]=235 Types[11]=239 Types[12]=243 Types[13]=248 Types[14]=251 Types[15]=264 Types[16]=267 Types[17]=282 Types[18]=289 Types[19]=321 Types[20]=379 Types[21]=420 Types[22]=440 Types[23]=476 Types[24]=499 Types[25]=513 Types[26]=542 Types[27]=578 Types[28]=586 Types[29]=622 Types[30]=700 Types[31]=804 Types[32]=1740 Types[33]=1758 Types[34]=1770 Types[35]=1779 Types[36]=1779 Types[37]=1881 Types[38]=1886 Types[39]=1801 Types[40]=1805 Types[41]=1813 Types[42]=1820 Types[43]=1831 Types[44]=1833 Types[45]=1843 Types[46]=1850 Types[47]=1873 Types[48]=1876 Types[49]=1885 Types[50]=1888 Types[51]=1946 Types[52]=1969 Types[53]=2500 Types[54]=2539 for var i=1 TO 53 STEP 2 if UO.PrivateGetTile(X,Y,-1,Types[i],Types[i+1]) then return true end if next return false end sub Sub LogInfo(Line) if not UO.GetGlobal("Logging")=="0" then UO.TextOpen() UO.TextPrint(str(UO.GetX())+":"+str(UO.GetY())+" - "+Line); end if end sub Sub Abs(X) if X>0 then return X else return (-X) end if end sub ########################################## КОНЕЦ ХОДИЛКИ 3 ########################## Sub DeleteJournal(msg); msg это параметр, см. выше как его передают var nom=UO.InJournal(msg); ищем сообщение и в переменную его if nom>0 then UO.SetJournalLine(Nom - 1,"deleted"); подменим сообщение DeleteJournal(msg); вызов функцией самой себя, рекурсия endif endsub Sub CheckLag() DeleteJournal("backpack"); вытрим ТОЛЬКО нужные нам сообщения в журнале UO.Click('backpack'); одиночный клик по вашему backpack ; ждем сообщения в журнале repeat wait(100) until UO.InJournal("backpack") end sub Sub onlynumbers(string) var i, j var text='' for i=0 to len(string); вот начинается этот самый перебор строки по 1 символу for j=0 to 9; используется для "если символ (str) от 0 до 9, то.." if mid(string,i,1)==str(j) then; если текущий символ в строке равен (преобразованному в текст) числу от 0 до 9, то... text = text + mid(string,i,1); ...то записываем его в переменную которая потом будет передана в исходный скрипт end if next next return text end sub
In Topic: Хорошие скрипты
19 February 2010 - 01:33
Третий вариант рекола. Задает только один вопрос - номер руны. Переменную вар меняет под себя в соответствии с комментариями.
sub recallASMmini() var runebook = '0x40044c23'; ID Runebook. Use ,info var where = uo.asminputstring("Введите порядковый номер руны от 1 до 16:") var how = 2 #### 1 = Реколл_по_зарядам; 2 = Реколл_по_регам; 3 = Реколл_гейтом; 4 = Перезарядка_рунбуки var oldX=uo.getX() var oldY=uo.getY() var number, num=val(where) if how == 1 then number = num+1 endif if how == 2 then number = num*2+18 endif if how == 3 then number = num*2+19 endif if how == 4 then deletejournal('You have no scrolls') uo.recall(runebook, 1) if uo.injournal('You have no scrolls') then uo.print('You have no scrolls. Terminating.') return else return endif endif if num>16 or num<1 then uo.print('Wrong rune number. Terminating.') return endif repeat uo.warmode(false) deleteJournal('Insufficient mana for this spell|You lack the reagents for this spell') uo.recall(runebook, number) uo.useskill('Hiding') var k=0 repeat wait(500) k=k+500 until oldX<>uo.getX() or oldY<>uo.getY() or uo.InJournal('Insufficient mana for this spell|You lack the reagents for this spell') or k>15000 if uo.injournal('Insufficient mana for this spell') then uo.print('You need more mana. Terminating') return endif if uo.injournal('You lack the reagents for this spell') then uo.print('You need more reagents. Terminating') return endif until oldX<>uo.getX() or oldY<>uo.getY() end sub
In Topic: Хорошие скрипты
19 February 2010 - 01:31
Отличие от предыдущего скрипта в том, что номер руны не руками вводим, а выбираем из меню...
sub recallASMcombo() var runebook = '0x40044c23'; ID Runebook. Use ,info var where = uo.asminputcombo("Укажите порядковый номер руны","1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16") var how = uo.asminputlist("Укажите задачу","Реколл_по_зарядам;Реколл_по_регам;Реколл_гейтом;Перезарядка_рунбуки") var oldX=uo.getX() var oldY=uo.getY() var number if how == 1 then number = where+1 endif if how == 2 then number = where*2+18 endif if how == 3 then number = where*2+19 endif if how == 4 then deletejournal('You have no scrolls') uo.recall(runebook, 1) if uo.injournal('You have no scrolls') then uo.print('You have no scrolls. Terminating.') return else return endif endif if how == 0 then uo.print('Wrong choise of recall method. Terminating.') return endif if where>16 or where<1 then uo.print('Wrong rune number. Terminating.') return endif repeat uo.warmode(false) deleteJournal('Insufficient mana for this spell|You lack the reagents for this spell') uo.recall(runebook, number) uo.useskill('Hiding') var k=0 repeat wait(500) k=k+500 until oldX<>uo.getX() or oldY<>uo.getY() or uo.InJournal('Insufficient mana for this spell|You lack the reagents for this spell') or k>15000 if uo.injournal('Insufficient mana for this spell') then uo.print('You need more mana. Terminating') return endif if uo.injournal('You lack the reagents for this spell') then uo.print('You need more reagents. Terminating') return endif until oldX<>uo.getX() or oldY<>uo.getY() end sub
In Topic: Хорошие скрипты
19 February 2010 - 01:28
Скрипт на рекол по рунбуке. Ставим АйДи своей буки и пользуемся. Вводим номер руны руками и выбераем необходимый способ. Так же можно перезаряжать, выбрав соответствующий пункт. Не стоит использовать для побега от ПК.
sub recallASMstring() var runebook = '0x40044c23'; ID Runebook. Use ,info var where = uo.asminputstring("Введите порядковый номер руны от 1 до 16:") var how = uo.asminputlist("Укажите задачу","Реколл_по_зарядам;Реколл_по_регам;Реколл_гейтом;Перезарядка_рунбуки") var oldX=uo.getX() var oldY=uo.getY() var number, num=val(where) if how == 1 then number = num+1 endif if how == 2 then number = num*2+18 endif if how == 3 then number = num*2+19 endif if how == 4 then deletejournal('You have no scrolls') uo.recall(runebook, 1) if uo.injournal('You have no scrolls') then uo.print('You have no scrolls. Terminating.') return else return endif endif if how == 0 then uo.print('Wrong choise of recall method. Terminating.') return endif if num>16 or num<1 then uo.print('Wrong rune number. Terminating.') return endif repeat uo.warmode(false) deleteJournal('Insufficient mana for this spell|You lack the reagents for this spell') uo.recall(runebook, number) uo.useskill('Hiding') var k=0 repeat wait(500) k=k+500 until oldX<>uo.getX() or oldY<>uo.getY() or uo.InJournal('Insufficient mana for this spell|You lack the reagents for this spell') or k>15000 if uo.injournal('Insufficient mana for this spell') then uo.print('You need more mana. Terminating') return endif if uo.injournal('You lack the reagents for this spell') then uo.print('You need more reagents. Terminating') return endif until oldX<>uo.getX() or oldY<>uo.getY() end sub
- Old Paradise Forums
- → Viewing Profile: Posts: Dustman
- Privacy Policy