| Yoko http://forum.yoko.com.ua/ |
|
| Почему то не работает =((( http://forum.yoko.com.ua/viewtopic.php?f=20&t=5654 |
Page 1 of 1 |
| Author: | ZondeR [ 2006-02-11 18:55:49 ] |
| Post subject: | Почему то не работает =((( |
Quote: while 1==1
if OreCount>0 then for i=1 to OreCount if TryRecall==1 and uo.Weight>OreQty then ToRecall() end if if uo.InJournal('attacking you') or uo.InJournal('An Mani') or uo.InJournal('Por Ort Grav') or uo.InJournal('An Ex Por') or uo.InJournal('ppN') or uo.InJournal('Man') or uo.InJournal('MAKC') or uo.InJournal('Adios') or uo.InJournal('Guardian') then uo.Exec('terminate Mining') uo.DeleteJournal() RecallAtAttack() end if uo.Print('Идём к координате руды номер '+str(i)+': x='+str(OreX[i])+' y='+str (OreY[i])) InfoOre() flag=GotoXY(OreX[i],OreY[i]) if flag==1 then if TryHiding==1 then ToHide() end if GetOre(str(OreT[i]),str(OreX[i]),str(OreY[i]),str(uo.GetZ())) end if next end if wend end sub Почемуто не сматывается от ПК при появлении в журнале перечисленных сообщений. Кажется напутал с if. Посмотрите плиз. |
|
| Author: | Grin [ 2006-02-11 19:14:19 ] |
| Post subject: | |
так утебя это где крутится то? суб назыается Mining? если да то утебя Мининг отрубается раньше чем ты реколишься.. Code: if uo.InJournal('attacking you') or uo.InJournal('An Mani') or uo.InJournal('Por Ort Grav') or uo.InJournal('An Ex Por') or uo.InJournal('ppN') or uo.InJournal('Man') or uo.InJournal('MAKC') or uo.InJournal('Adios') or uo.InJournal('Guardian') then
|
|
| Author: | ZondeR [ 2006-02-11 19:46:07 ] |
| Post subject: | |
Да нет вроде не отрубается. Я с парнишкой тестил. Я реколюсь в шахту начинаю капать. Нормально капает, а потом когда друг меня атачить стал, чар просто продолжал дальше капать... Суб Mining() называется. |
|
| Author: | Grin [ 2006-02-11 19:58:43 ] |
| Post subject: | |
ну если утебя GetOre(str(OreT[i]),str(OreX[i]),str(OreY[i]),str(uo.GetZ())) это функция которая выкапывает тайл целиковм то ты не улетишь пока не вы копаешь тайл... + не забудь про предыдущию ошибку |
|
| Author: | ZondeR [ 2006-02-11 20:44:47 ] |
| Post subject: | |
Quote: #########################################################
### Mining Mountains / Копание скалл v5.1.7 Full ### ######################################################### ### Шард Dragon World / www.drw.ru ### ######################################################### ################## ### Переменные ### ################## ################################################################################ ################### var f=file('C:\ore.dat') ## - Путь к файлу в котором будут хранится ### координаты где копать. ### var TryHiding=1 ## 1 - Перед тем как копать руду, будет пытаться уйти в хайд, ### 0 - не будет . ### var TryRecall=1 ## 1 - После того как соберет достаточный вес, будет пытаться ### реколиться домой, ### складывать руду в сундук и реколиться обратно , 0 - не будет.(DropOnVip ### должно быть 0) ### var GetFromFile=1 ## 1 - Координаты где копать будут считыватся из файла, 0 - ### собиратся из клиента ### (сначала соберите а потом считывайте из файла). ### var OreQty=550 ## - Максимальный вес, добыв который надо реколиться домой. ### (сейчас 600 стоунов) ### var AttackEnts=1 ## 1 - Включить рекол по руне(в паке) при атаке, 0 - ### отключить рекол. ### var ElementalKill=0 ## 1 - Вылючить килл элементала, 0 - отключить(рекол). ### var DangerousTime=60000 ## - Время в секундах которое чар будет ждать(после ### рекола) пока уйдет ПК или Элемент.(сейчас 50 секунд) ### var CycleScript=1 ## 1 - Скрипт не отключается после рекола от атакующего, 0 - ### отключаетсяи закрывает UO. ### var Reconnect=1 ## 1 - Включить реконнект на сервер если выкинет, 0 - отключить ### реконнект. ### var DisturbingSound=('C:\warning.wav') ## - Звук которы будет пригран при атаке. ### (замените на свой) ### var RecallDrop=1 ## 1 - Включить рекол после побега от ента домой и выложить логи, 0 -выключить. ### var DropY=566 ## - Координата перед сундуком по Y. ### var oldX,oldY,time ## - Для рекола. ### var Pickaxe='0x0E85' ################################################################################ ################### ### ### После настройки: ### Идите в место где будем копать. ### Запустите cкрипт GoMining(), инжект попросит вас указать Кирку(появится ### прицел, прицелом на неё), ### Рунбук(появится прицел, прицелом на него) ,Руну(прицелом на нее) и Сундук ### для логов. ### После этого чар пойдет по координатам и будет копать руду. ########### ### Код ### ########### sub GoMining() if Reconnect==1 then uo.Exec('exec Reconnect') end if RecallToOre() uo.Exec('exec Mining') end sub sub Mining() var i=0,j=0,k=0,r=0,q=0,ii,jj var TopX=324,TopY=65 dim OreX[5000],OreY[5000],OreT[5000] dim OreTile[27] var flag=0,OreCount=0,clicks=0,flag2=0 #################### ### Графика руды ### #################### OreTile[0]=1339 OreTile[1]=1355 OreTile[2]=1354 OreTile[3]=1359 OreTile[4]=1358 OreTile[5]=1357 OreTile[6]=1352 OreTile[7]=1341 OreTile[8]=1363 OreTile[9]=1359 OreTile[10]=1339 OreTile[11]=1354 OreTile[12]=1386 OreTile[13]=1353 OreTile[14]=2278 OreTile[15]=2282 OreTile[16]=2281 OreTile[17]=2277 OreTile[18]=2278 OreTile[19]=2275 OreTile[20]=1351 OreTile[21]=6007 OreTile[22]=6012 OreTile[23]=6004 OreTile[24]=6011 OreTile[25]=6008 OreTile[26]=6003 uo.FilterSpeech('on') uo.FilterSpeech('add', 'Where do you want to use ') ##################################### ### Загружаем координаты из файла ### ##################################### if GetFromFile==1 then uo.Print('Загружаем координаты из файла...') f.Open() OreCount=safe call f.ReadNumber() for i=1 to OreCount OreT[i]=safe call f.ReadNumber() OreX[i]=safe call f.ReadNumber() OreY[i]=safe call f.ReadNumber() next f.Close() else ###################################### ### Собираем координаты из клиента ### ###################################### uo.Print('Собираем координаты руды в округе...') repeat clicks=0 flag=0 uo.DeleteJournal() ####################### ### Кликаем на тайл ### ####################### uo.UseType( Pickaxe ) wait(500) uo.DeleteJournal() while uo.Targeting() wait(100) wend ########################### ### Проверяем то ли это ### ########################### flag=0 for k=0 to 27 if uo.LastTile(0)==OreTile[k]+1 then flag=2 end if next if flag==0 then for k=0 to 27 if uo.LastTile(0)==OreTile[k] then flag=1 end if next end if if uo.Lasttile(1)==uo.GetX() and uo.Lasttile(2)==uo.Gety() then flag=3 end if ######################## ### Кликнули на тайл ### ######################## if flag==1 then flag2=0 if OreCount>0 then for ii=1 to OreCount if OreX[ii]==uo.LastTile(1) and OreY[ii]==uo.LastTile(2) then flag2=1 end if next end if if flag2==0 then OreCount=OreCount+1 OreX[OreCount]=uo.LastTile(1) OreY[OreCount]=uo.LastTile(2) OreT[OreCount]=uo.LastTile(0) uo.Print('Найдена руда номер '+str(OreCount)+' : x='+str(uo.Lasttile(1))+' y='+str(uo.LastTile(2))) end if end if ##################### ### Кликнули выше ### ##################### if flag==2 then flag2=0 if OreCount>0 then for ii=1 to OreCount if OreX[ii]==uo.LastTile(1) and OreY[ii]==uo.LastTile(2) then flag2=1 end if next end if if flag2==0 then OreCount=OreCount+1 OreX[OreCount]=uo.LastTile(1) OreY[OreCount]=uo.LastTile(2) OreT[OreCount]=uo.LastTile(0)-1 uo.print('Найдена руда номер '+str(OreCount)+' : x='+str(uo.Lasttile(1))+' y='+str(uo.LastTile(2))) end if end if until (Flag==3) or (OreCount==5000) uo.FilterSpeech('off') uo.Print('Анализ закончен, координаты руды записаны в файл C:\ore.dat') SaveToFile(OreCount,OreX,OreY,OreT) end if uo.Print('Координат найдено: '+str(OreCount)) wait(2000) ###################################### ### Ходим по собранным координатам ### ###################################### while 1==1 if OreCount>0 then for i=1 to OreCount if TryRecall==1 and uo.Weight>OreQty then ToRecall() end if if uo.InJournal('attacking you') or uo.InJournal('An Mani') or uo.InJournal('Por Ort Grav') or uo.InJournal('An Ex Por') or uo.InJournal('ppN') or uo.InJournal('Man') or uo.InJournal('MAKC') or uo.InJournal('Adios') or uo.InJournal('Guardian') then uo.Exec('terminate Mining') uo.DeleteJournal() RecallAtAttack() end if uo.Print('Идём к координате руды номер '+str(i)+': x='+str(OreX[i])+' y='+str (OreY[i])) InfoOre() flag=GotoXY(OreX[i],OreY[i]) if flag==1 then if TryHiding==1 then ToHide() end if GetOre(str(OreT[i]),str(OreX[i]),str(OreY[i]),str(uo.GetZ())) end if next end if wend end sub sub GetOre(Type,X,Y,Z) var i uo.Print('Начинаем копать...') for i=1 to 20 if uo.Warmode()==1 then return 0 end if wait(200) uo.DeleteJournal() CheckLag() wait(100) uo.WaitTargetTile(Type,X,Y,Z) uo.UseType(Pickaxe) wait(500) if WaitForChange()==1 then return 1 end if next return 0 end sub sub ToRecall() RecallToHome() DropOre() InfoOre() RecallToOre() end sub sub RecallToHome() var i uo.print('Реколимся домой...') for i=1 to 10 uo.deletejournal() uo.waittargetobject(0x400B1682) uo.UseType('0x1F4C') if WaitForRecall()==1 then return 1 end if next return 0 end sub sub RecallToOre() var i uo.print('Реколимся обратно...') for i=1 to 10 uo.deletejournal() uo.waittargetobject(0x40068DC9) uo.UseType('0x1F4C') if waitForRecall()==1 then return 1 end if next return 0 end sub sub ToHide() while not uo.Hidden() uo.Print('Пытаемся уйти в хайд...') uo.DeleteJournal() uo.UseSkill('Stealth') wait(6000) wend wait(100) end sub sub WaitForRecall() var Text1=uo.GetName()+": The spell fizzles." var mess='',lastX=uo.getX(),lastY=uo.getY() for var i=0 to 200 mess=uo.Journal(0) if uo.Journal(0)==Text1 then return 0 end if if uo.getX()<>lastX or uo.getY()<>LastY then return 1 end if wait(50) next return 0 end sub sub WaitForHide() var Text1=uo.GetName()+": You have hidden yourself well" var Text2=uo.GetName()+": You can't seem to hide here." var mess for var i=0 to 200 mess=uo.Journal(0) if uo.Journal(0)==Text1 then return 1 end if if uo.Journal(0)==Text2 then return 0 end if wait(50) next return 0 end sub sub WaitForChange() var Text1=uo.GetName()+': You loosen some rocks but fail to find any useable ore.' var Text2='There is no ore here to mine.' var Text3="You can't reach this." var Text4="That is too far away." var Text5="You can't do much in your current state." var Text6="You have no line of sight to that location" var Text7="You can't see the target" var Text8="Try mining in rock." var mess for var i=0 to 200 mess=uo.Journal(0) if uo.Journal(0)==Text2 or uo.Journal(0)==Text3 or uo.Journal(0)==Text4 or uo.Journal(0)==Text6 or uo.Journal(0)==Text7 or uo.Journal(0)==Text8 then return 1 end if if uo.Journal(0)==Text1 then wait(500) return 0 end if if mess[0]=='Y' and mess[1]=='o' and mess[2]=='u' and mess[4]=='p' and mess[5]=='u' and mess[6]=='t' then return 0 end if wait(50) next return 0 end sub sub WaitForTarget() for var i=0 to 50 if uo.Targeting()==1 then return 1 end if wait(200) next return 0 end sub sub WaitForChangeXY(myX,myY,lastX,lastY) for var i=1 to 50 if lastX<>myX or lastY<>myY then return 1 end if wait(200) next return 0 end sub sub GotoXY(x,y) var myX,myY,lastX=0,lastY=0,i,halt=0,z,r=0 for i=1 to 60 myX=uo.getX(); myY=uo.getY(); if LastX==myX and LastY==myY then halt=halt+1 else halt=0 end if if halt>=10 then if uo.GetDir()==1 then for z=0 to 8 uo.Press(40) next end if if uo.GetDir()==3 then for z=0 to 8 uo.Press(37) next end if if uo.GetDir()==5 then for z=0 to 8 uo.Press(38) next end if if uo.GetDir()==7 then for z=0 to 8 uo.Press(39) next end if halt=15 end if if Numb(x-myX)<=1 and Numb(y-myY)<=2 then return 1 end if if x<=myX then if y<=myY then for z=0 to 3 uo.Press(38) next else for z=0 to 3 uo.Press(37) next end if else if y<=myY then for z=0 to 3 uo.Press(39) next else for z=0 to 3 uo.Press(40) next end if end if lastX=myX lastY=myY wait(200) next return 0 end sub sub Numb(num) if num>=0 then return num else return num*(-1) end if end sub sub SaveToFile(OreCount,OreX,OreY,OreT) var s=0,i=0 var f=file("C:\ore.dat") f.Open() f.Create() s=safe call f.Writeln(OreCount) for i=1 to OreCount s=safe call f.Writeln(str(OreT[i])+' '+str(OreX[i])+' '+str(OreY[i])) next f.Close() end sub sub DropOre() ToHide() if uo.Waiting() then uo.CancelTarget() end if var a,Exit dim Ore[14] Ore[0]=0x19B9 Ore[1]=0x19B7 Ore[2]=0x19BA Ore[3]=0x19B8 Ore[4]=0x0F11 Ore[5]=0x0F16 Ore[6]=0x0F18 Ore[7]=0x0F15 Ore[8]=0x0F10 Ore[9]=0x0F0F Ore[10]=0x0F26 Ore[11]=0x0F4C Ore[12]=0x0EED Ore[13]=0x0F20 uo.Print('Выкладываем руду.') uo.SetReceivingContainer(0x400C5D57) wait(500) for a=0 to 13 Exit=0 repeat uo.FindType(Ore[a]) if uo.GetQuantity('finditem')>0 then uo.Grab('0','finditem') wait(1500) else Exit=1 end if until Exit==1 next uo.UnSetReceivingContainer(0x400C5D57) uo.Print('Руда выложена.') end sub sub InfoOre() uo.Print('У вас всего '+str(uo.Count('0x19B7')+uo.Count('0x19B8')+uo.Count('0x19B9')+uo.Count('0x19BA'))+' руды в сумке') uo.Print('Из нее '+str(uo.Count('0x19B7','0x0000')+uo.Count('0x19B8','0x0000') +uo.Count('0x19B9','0x0000')+uo.Count('0x19BA','0x0000'))+' железо и ' +str (uo.Count('0x19B7')+uo.Count('0x19B8')+uo.Count('0x19B9')+uo.Count('0x19BA')- (uo.Count('0x19B7','0x0000')+uo.Count('0x19B8','0x0000')+uo.Count ('0x19B9','0x0000')+uo.Count('0x19BA','0x0000')))+' цветмет') end sub sub Open(Container) uo.DeleteJournal() uo.UseObject(Container) repeat wait(500) until uo.InJournal('Contains') end sub sub RecallAtAttack() var mX,mY uo.UseType('0x0F08') wait(100) reccal: uo.DeleteJournal() if uo.Waiting() then uo.CancelTarget() end if mX=uo.getX("self") mY=uo.getY("self") uo.DeleteJournal() uo.waittargetobject('0x40014354') uo.UseType('0x1F4C') uo.Print('Атака! Реколимся!') wait(4000) if not uo.getX("self")<>mX and not uo.getY("self")<>mY then goto reccal end if wait(60000) DropOre() InfoOre() RecallToOre() Mining() end sub sub Reconnect() var ReconnectTime,rFlag ReconnectTime='0' rFlag=1 repeat while (uo.ObjAtLayer('Bpack')=='') if rFlag then ReconnectTime=MakeTime() rFlag=0 end if wait(20000) uo.Say('') wait(3000) uo.Say('') wait(3000) uo.Say('') wait(3000) uo.LDblClick(357,164) uo.LClick(616,459) wait(3000) wend wait(3000) if (rFlag==0) and (ReconnectTime<>'0') then uo.TextOpen() uo.TextPrint('Disconnected & Reconnected @ '+ReconnectTime) rFlag=1 ReconnectTime='0' end if until false end sub sub MakeTime() var d,t,ret,i ret=str(uo.Time()) t="" for i=0 to Len(ret) t=ret[Len(ret)-i]+t if (i==2) or (i==4) then t=":"+t end if next ret=str(uo.Date()) d="" for i=0 to Len(ret) d=ret[Len(ret)-i] + d if (i==2) or (i==4) then d="."+d end if next ret=t+" @ "+d return ret end sub sub Terminate() uo.Print('Все функции скрипта отключены!') uo.DeleteJournal() uo.Exec('terminate all') wait(100) uo.Exec('terminate all') wait(100) uo.Exec('terminate all') wait(100) end sub sub CheckLag() if uo.Waiting()>0 then uo.Exec('canceltarget') end if uo.DeleteJournal() uo.Click('backpack') repeat wait(50) until uo.InJournal('backpack') #BETEP™# end sub Посмотри плиз может еще ченить не так хотя вроде скрипт капает. За исходник брал скрипт ветра но он не возвращался к последней точке после сброса руды. Скрестил со скриптом на ламбер тогоже автора))) и теперь после разгрузки идет к той точке на которой закончил. Но после рекола от ПК опять начинает с первой точки капать вхолостую, поэтому я и сделал так как в первом посте. Кстати я так и не понял че там изменить нужно( |
|
| Author: | Grin [ 2006-02-11 21:13:08 ] |
| Post subject: | |
Code: sub GetOre(Type,X,Y,Z) данная процедура чистит журнал... и после ее работы ты не узнаешь атаковали тебя или нет... Проверить ты можеш да работы и соответствено после... Когда чар капает то журнал чиститься... Code: if uo.InJournal('attacking you') or uo.InJournal('An Mani') or uo.InJournal('Por Ort Grav') or uo.InJournal('An Ex Por') or uo.InJournal('ppN') or uo.InJournal('Man') or uo.InJournal('MAKC') or uo.InJournal('Adios') or uo.InJournal('Guardian') then В этом куске основная процедура Mining от ключается раньше чем чар реколиться... Хотя хз как сработает парсер... Пологике сначала надо было запустить рекол от атаки отдельным потоком а в потоке майнинга вырубить сам майнинг...А вообще достаточно изменить Code: if uo.InJournal('attacking you') or uo.InJournal('An Mani') or uo.InJournal('Por Ort Grav') or uo.InJournal('An Ex Por') or uo.InJournal('ppN') or uo.InJournal('Man') or uo.InJournal('MAKC') or uo.InJournal('Adios') or uo.InJournal('Guardian') then и тут Code: sub RecallAtAttack() |
|
| Author: | ZondeR [ 2006-02-11 22:30:33 ] |
| Post subject: | |
Переделал как ты сказал но все равно он не реколится. Если запускать рекол отдельным потоком то потом чар просто не будет подходить к той точке на которой закончил. А можно как нибудь сделать чтоб ГетОре не чистил журнал? |
|
| Author: | Grin [ 2006-02-11 22:44:56 ] |
| Post subject: | |
реколится он и не будет я тебе уже написал почему... та переделка поповоду координат... поповоду журнала... или за крашивай строчки или поверяй не напали ли на тебя там... %) найди другой скрипт;) |
|
| Author: | ZondeR [ 2006-02-11 22:57:37 ] |
| Post subject: | |
А чем этот плох? Я уже весь форум облазил ничего лучше не нашел((( Хотя может че нить стоящее пропустил. Ссылочкой не поделишься если есть)))))) |
|
| Author: | ZondeR [ 2006-02-12 11:51:38 ] |
| Post subject: | |
Grin мне тут в голову мысль пришла, а если сделать так: Quote: while 1==1
if OreCount>0 then for i=1 to OreCount if TryRecall==1 and uo.Weight>OreQty then if uo.InJournal('attacking you') or uo.InJournal('An Mani') or uo.InJournal('Por Ort Grav') or uo.InJournal('An Ex Por') or uo.InJournal('ppN') or uo.InJournal('Man') or uo.InJournal('MAKC') or uo.InJournal('Adios') or uo.InJournal('Guardian') then uo.Exec('terminate Mining') uo.DeleteJournal() ToRecall() end if end if uo.Print('Идём к координате руды номер '+str(i)+': x='+str(OreX[i])+' y='+str (OreY[i])) InfoOre() flag=GotoXY(OreX[i],OreY[i]) if flag==1 then if TryHiding==1 then ToHide() end if GetOre(str(OreT[i]),str(OreX[i]),str(OreY[i]),str(uo.GetZ())) end if next end if wend end sub Будет работать? |
|
| Page 1 of 1 | All times are UTC+02:00 |
| Powered by phpBB® Forum Software © phpBB Limited https://www.phpbb.com/ |
|