Yoko http://forum.yoko.com.ua/ |
|
Помогите плиз скрипт мининг исправить http://forum.yoko.com.ua/viewtopic.php?f=20&t=17948 |
Page 1 of 1 |
Author: | shiga [ 2017-01-22 14:21:02 ] |
Post subject: | Помогите плиз скрипт мининг исправить |
парни есть скрипт на копку но 1 минус ) когда маркаю кординаты а потом запускаю он приходит по ним и вылазит таргет пока не нажму на себя не будет копать , потом пошел дальше и тоже самое пока не нажму таргет на себя он не будет копать ( что делать? [code] #@include equip.scl #@include unload.scl #@include walker1.scl ################################################################################ # НАСТРОЙКА И ИСПОЛЬЗОВАНИЕ # 1) запустить функцию setup # 2) в качестве первой точки указать точку выгрузки руды # на расстоянии не более 3х клеток от этой точки должны быть # прилоченны все виды выкапываемой руды # 3) 2 и 3 точки - опорные для прохода в шахт # 4) далее указать до 100 точек в которых надо копать # 5) для окончания разметки, указать на себя # 6) после разметки, настройка закончена # 7) можно запускать функцию mining # # при разметке важно не подходить близко к указываемой точке ################################################################################ sub mining() var points = 0 dim mineX[100] dim mineY[100] points = loadPointsXY(mineX, mineY, FileName()) uo.say('.macro on') equipForMining() Walker(mineX[1], mineY[1]) Walker(mineX[2], mineY[2]) var f = 3 var i var ret uo.deleteJournal() repeat uo.print('walk to point ' + str(f)) Walker(mineX[f], mineY[f]) #ret = MiningHere() ret = MiningHereDumb() #если атакуют или много веса - на разгрузку if ((ret == 2) or (uo.weight > uo.str*3.2)) then uo.print('walk to unload') for i = f to 0 step -1 Walker(mineX[i], mineY[i]) next unloadOres() Walker(mineX[1], mineY[1]) Walker(mineX[2], mineY[2]) f = 3 else f = f + 1 #возвращаемся в первую точку if (f >= points) then for i = f-1 to 3 step -1 Walker(mineX[i], mineY[i]) next f =3 end if #fix "already doing"? wait(2000) end if until uo.life == 0 end sub sub setup() uo.AddType('pickaxe', '0x0E85') uo.AddType('ore', '0x19B9') uo.saveconfig() equipForMining() dim tileArr[100] dim xArr[100] dim yArr[100] dim zArr[100] var points = markPoints(tileArr, xArr, yArr, zArr) savePointsXY(xArr, yArr, FileName(), points) end sub #нормальный мининг с проверкой сообщений, нападения, зависания, ... sub MiningHere() var msg1 = 'You place' var msg2 = 'You fail to find' var msg3 = 'You cannot prospect' var msg4 = 'There is no ore here to mine' var msg5 = 'You cannot mine that' var msg6 = 'attacking you' var done = 0 var counter = 0 var delay = 500 var lastLife = uo.Life var pickaxe = uo.ObjAtLayer('Rhand') uo.deletejournal() uo.useObject(pickaxe) wait (400) uo.press(119) repeat if (uo.injournal(msg1) or uo.injournal(msg2) or uo.injournal(msg3)) then #процесс идет counter = 0 end if if (uo.injournal(msg4) or uo.injournal(msg5)) then #процесс не идет done = 1 end if if (uo.injournal(msg6) or (uo.Life < lastLife)) then #кто-то нас аттачит uo.print('under attack!') done = 2 uo.deleteJournal() end if if (uo.Life > lastLife) then lastLife = uo.Life end if if (counter > 15000) then #процесс не идет, пробуем начать снова CheckLag() if (uo.targeting()) then wait (400) uo.press(119) end if uo.useObject(pickaxe) wait (400) uo.press(119) counter = 0 end if uo.deleteJournal() wait(delay) counter = counter + delay until done or uo.Life == 0 return done end sub #тупой мининг - использовать 1 раз кирку и стоят 1 минуту sub MiningHereDumb() var counter = 0 var delay = 500 var pickaxe = uo.ObjAtLayer('Rhand') uo.useObject(pickaxe) wait (400) uo.press(119) repeat wait(delay) counter = counter + delay until counter > 70000 or uo.Life == 0 return 0 end sub #выгрузка руды #если не сможет выгрузить хотя бы 1 тип руды - #зависнет в вечной попытке его выгрузить sub unloadOres() var idx = 0 var type = '' var color = '' uo.findType('ore') while uo.findCount() type = uo.GetGraphic('finditem') color = uo.GetColor('finditem') unLoad(type, color, 3) uo.findType('0x19B9') wend end sub sub equipForMining() UnEquip('Rhand') UnEquip('Lhand') EquipT('Rhand', 'pickaxe') end sub sub FileName() return 'minePoints-' + UO.GetSerial('self') + '.txt' end sub sub markPoints(tileArr, xArr, yArr, zArr) var count = 0 var done = 0 var tile, x, y, z var hatchet = uo.ObjAtLayer('Rhand') repeat uo.UseObject(hatchet) wait(1000) while uo.targeting() wait(500) wend tile = uo.LastTile(0) x = uo.LastTile(1) y = uo.LastTile(2) z = uo.LastTile(3) if (x == uo.GetX() and y == uo.GetY()) then done = 1 else tileArr[count] = tile xArr[count] = x yArr[count] = y zArr[count] = z count = count + 1 uo.print('Added point ' + STR(count) + ' (' + STR(x) +', ' + STR(y) + ')') end if until done uo.print('Done. ' + STR(count) + ' points added') return count end sub sub savePointsXY(xArr, yArr, name, cnt) var fl = File(name) fl.open() fl.create() safecall fl.writeln(STR(cnt)) for var f = 0 to cnt - 1 safecall fl.writeln(STR(xArr[f]) + ' ' + STR(yArr[f])) next uo.print(STR(cnt) + ' points saved') fl.close() end sub sub loadPointsXY(xArr, yArr, name) var fl = File(name) fl.open() var cnt = safecall fl.ReadNumber() for var f = 0 to cnt - 1 xArr[f] = safecall fl.ReadNumber() yArr[f] = safecall fl.ReadNumber() next fl.close() uo.print(STR(cnt) + ' points loaded') return cnt end sub #@autocode #------------------------------------------------ # included file equip.scl #------------------------------------------------ #@include checklag.scl sub UnEquip(layer) uo.unequip(layer) CheckLag() while uo.ObjAtLayer(layer) <> '' uo.unequip(layer) CheckLag() wait(1000) wend end sub sub EquipT(layer, type) uo.equipt(layer, type) CheckLag() while uo.ObjAtLayer(layer) == '' uo.equipt(layer, type) CheckLag() wait(1000) wend end sub #------------------------------------------------ # included file unload.scl #------------------------------------------------ #@include checklag.scl #выкладныванме из бекпака итемов с типом type #и цветом color на землю в прилоченную кучку #находящуюся на расстояние не больше distance sub unLoad(type, color, distance) var inBackpack = '' var onGround = '' uo.Set('finddistance', distance) uo.FindType(type, color, 'ground') onGround = uo.GetSerial('finditem') uo.FindType(type, color) inBackpack = uo.GetSerial('finditem') if (onGround <> '0x00000000' and inBackpack <> '0x00000000') then var x, y, z x = uo.GetX(onGround) y = uo.GetY(onGround) z = uo.GetZ(onGround) uo.Click(inBackpack) CheckLag() uo.print(uo.GetName(inBackpack)) uo.MoveItem(inBackpack, 0, onGround, x, y, z) wait(1500) CheckLag() end if uo.Set('finddistance', 14) end sub #------------------------------------------------ # included file walker1.scl #------------------------------------------------ #@include math.scl var prec = 0 sub Walker(x,y) var ld=0,ldc=0 var dx,dy var mx,my var ox,oy,mk,k start: mx=UO.GetX() my=UO.GetY() dx=abs(mx-x) dy=abs(my-y) if dy>dx then dx=dy end if if dx<=prec then return end if if dx<3 then mk=70 else mk=15 end if ox=mx oy=my for k=1 to mk mx=UO.GetX() my=UO.GetY() if mx<>ox or my<>oy then goto sdidapl end if wait(10) next sdidapl: mx=UO.GetX() my=UO.GetY() dx=abs(mx-x) dy=abs(my-y) if dy>dx then dx=dy end if if dx<=prec then return end if if ld==dx then ldc=ldc+1 if ldc>100 then uo.print("Can not reach location!") return end if else ld=dx end if if mx==x then if my==y then return endif if my>y then UO.Press(33) goto start endif UO.Press(35) goto start end if if mx<x then if my>y then UO.Press(39) goto start endif if my==y then UO.Press(34) goto start endif UO.Press(40) goto start end if if my<y then UO.Press(37) goto start endif if my==y then UO.Press(36) goto start endif UO.Press(38) goto start end sub #------------------------------------------------ # included file checklag.scl #------------------------------------------------ #проверка на лаг. одиночный клик на backpack и ожидание в журнале #слов "backpack" sub CheckLag() if (uo.Waiting() or uo.targeting()) then uo.canceltarget() end if uo.DeleteJournal() uo.Click('backpack') repeat wait(200) until uo.InJournal('backpack') uo.DeleteJournal() end sub #------------------------------------------------ # included file math.scl #------------------------------------------------ #математические функции #Abs - модуль числа #Sign - знак числа (для отрицательтных чисел -1, для положительных +1) Sub Abs(x) if (x<0) then x = -x end if return x end sub sub Sign(n) if (n < 0) then n = -1 end if if (n > 0) then n = 1 end if return n end sub |
Author: | Mirage [ 2017-01-23 11:10:16 ] |
Post subject: | Re: Помогите плиз скрипт мининг исправить |
1) скрипты оформлять в теги Code: [code] 2) определиться каким скриптом ты будешь пользоваться: Quote: #нормальный мининг с проверкой сообщений, нападения, зависания, ... в скрипте выбран "нормальный" само собой но:#тупой мининг - использовать 1 раз кирку и стоят 1 минуту 3) у тебя в скрипте нет куска куда прицел должен тыкать. Просто вызов прицела и все. По этому либо искать другой скрипт, либо переписывать этот добавляя в него указывалку на тайлы пола. ЗЫ на сервере версия клиента какая используется? |
Author: | shiga [ 2017-01-23 17:05:05 ] |
Post subject: | Re: Помогите плиз скрипт мининг исправить |
Mirage wrote: 1) скрипты оформлять в теги Code: [code] 2) определиться каким скриптом ты будешь пользоваться: Quote: #нормальный мининг с проверкой сообщений, нападения, зависания, ... в скрипте выбран "нормальный" само собой но:#тупой мининг - использовать 1 раз кирку и стоят 1 минуту 3) у тебя в скрипте нет куска куда прицел должен тыкать. Просто вызов прицела и все. По этому либо искать другой скрипт, либо переписывать этот добавляя в него указывалку на тайлы пола. ЗЫ на сервере версия клиента какая используется? Версия клиента 6.0.14.1 . Копать хочу 2 нормальным ))) тот удалю просто если его удалю у меня не че не заглючит?) и как доделать скрипт а то он мне нравиться) раньше был такой же только нормальный но старый комп сломался и все пропала( если поможите кто нибудь буду очень благодарен заранее спасибо |
Author: | shiga [ 2017-01-23 20:02:09 ] |
Post subject: | Re: Помогите плиз скрипт мининг исправить |
Да и мининг не нашел такой что бы копал и носил руду к дому и скидывал на пол руду |
Page 1 of 1 | All times are UTC+02:00 |
Powered by phpBB® Forum Software © phpBB Limited https://www.phpbb.com/ |