Часть кода содрана у Эдреда.
Code: ; Мининг в Миноке(mtKendalt), Oscom Opay.Чар - гном с мифриловой киркой. В паке ничего кроме кирки не носим. ; Вкачать stealth, hide, anatomy, healing. Иметь побольше магии. ; Копает руду, бегает к банку, из банка реколится домой. ; Запускаем либо в шахте, либо дома. ; У входа в пещеру маркаем штук 8-20 рун. ; Дома ставим два сундука(сумки), один для руды, во второй кладём замарченные ; руны, обязательно стейки(голодный чар быстро вылетает из хайда), реагенты на ; реколл. Маркаем несколько рун возле сундука, эти руны пойдут в банк. ; Опустошаем банк чара. закладываем туда 6-12 рун домой, около 600-800 бинтов, ; около 600 регов на реколл. ; Чтобы получить %BankID, подходим к банку, кричим ; bank, ждем когда он откроется и копируем переменную #CONTID из закладки ; Container Info в палени информации самой EasyUO. ; Чтобы узнать ИД сундука, открываем сундук (дабл клик на него), и смотрим ; либо #CONTID , либо из Last Action #LOBJECTID. Они должны совпадать. ; ; this must be modyfied ; нижележащие данные подстраиваются под каждого персонально ;===================================================================== ;===================================================================== set %OreBag TVUFMMD ;ИД сундука, куда скидываем руду set %regBag CTZNNMD ;Ид сумки с регами и рунками set %BankID XLQCPMD ;ИД банковского контейнера set %xHome 1703 ;координата Х возле сундука дома set %yHome 2002 ;координата Y возле сундука дома ;===================================================================== ;===================================================================== set #LPC 10000
initevents event macro 8 2 ; открыть статус если закрыт event macro 8 7 ; открыть бекпак если закрыт ignoreItem reset 1
set %oreType . 1 DWJ set %oreType . 2 EWJ set %oreType . 3 GWJ set %oreType . 4 TVJ
set %MythColor 1936
set %nothing _@C4K ; тут не осталось руды set %far _>BAN40 ; это слишком далеко отсюда set %try dig here set %cannot _4>1K20BL_@C4C ; попробуйте добывать руду из валунов или В ШАХТЕ! _2_HOEB5! set %noline Wow! ;You_have_no_line set %cannot2 _=5_4>BO=CBLAO ; вам до туда не дотянуться set %attacking is_attacking_you set %decide dig_here set %put in_your_pack. set %loosen _:0<=59 ; Раздолбив несколько камней set %fignya _:0<=59 ; "вы не смогли выкопать ничего стоющего" set %battle _=5_4>_MB>3> ;You_are_preoccupied_with_thoughts set %VyNeMojete K_=5_<>65B5_ ; Вы не можете медитировать\хайдиться в режиме войны ; set %MaxTime4Mes 20 ; Максимум сколько ждать сообщений в секундах set %MaxPointIteration 10 ; сколько раз получать сообщение "ничего стоющего" ; set %RunOn Always_Run_is_now_on. set %RunOff Always_Run_is_now_off. ; set %mSpirit GI ;AngryMountainSPirit type
set %line _
set %OreType1 DWJ_EWJ_GWJ_TVJ ;set %cntghost 0 set %RuneType QWL
set %miningPointRail . 1 2558_496 ;точки в ещере, где чар окапывается set %miningPointRail . 2 2562_489 set %miningPointRail . 3 2567_482 set %miningPointRail . 4 2570_484 set %miningPointRail . 5 2576_481 set %miningPointRail . 6 2571_478 set %miningPointRail . 7 2576_476
; Головная процедура:
event SysMessage Script started... set %PointNumber 1
set %SayGuard 0 ;если чар стартует дома If #charposX >= ( %xHome - 3 ) && #charposX <= ( %xHome + 3 ) && #charposY >= ( %yHome - 3 ) && #charposY <= ( %yHome + 3 ) goto AlreadyHome
; чар стартует в пещёре main: set %SpiritHere #false If %PointNumber > 7 set %PointNumber 1 event SysMessage pointnumber= %PointNumber %miningPointRail . %PointNumber ;gosub ChangeRun 1
gosub FindSpirit If %SpiritHere = #true goto GoHome gosub Hide gosub _pathFind 2559 496 0 0 ; в пещере у входа
gosub FindSpirit If %SpiritHere = #true 2 goto GoHome
gosub Hide gosub _pathFind 2566 485 0 0 ; идем в центр пещеры gosub FindSpirit If %SpiritHere = #true 2 goto GoHome
gosub Hide gosub ChangeRun 0 nextPoint: gosub GotoRail %miningPointRail . %PointNumber 1 0 ; из центра идем в точку номер pointNumber gosub MineAround set %PointNumber %PointNumber + 1 ;gosub FindSpirit ;If %SpiritHere = #true 2 ; goto GoHome
if #result = 0 ; чара писдят { event SysMessage Сдох или почти умер! Бежим к банку! gosub DetermAttackingType ; если нас атаковал человек, кричим гвард по пути к банку. } if #result = 1 { event SysMessage Обкопались в этой точке. If #weight < 250 ; перевес или выкопал все нахуй { event SysMessage Идем к следующей ; перевес или выкопал все нахуй GoTo nextPoint If %PointNumber > 7 set %PointNumber 6 set %PointNumber %PointNumber + 1 } event SysMessage Идем к банку }
If #result = 3 { event SysMessage Нашли миф! Бежим выкладывать в банк! }
GoHome: gosub ChangeRun 1 if %Spirithere = #true gosub _pathFind 2552 502 0 %SayGuard else gosub _pathFind 2559 496 0 %SayGuard gosub GoToBank %SayGuard set %SayGuard 0 gosub HealNearBank If #weight < 250 && #charGhost = NO && %PointNumber < 8 && %SpiritHere = #false { For %oreN 1 4 { repeat finditem %oreType . %oreN C_ , #backpackID if #findCol = %MythColor { exevent drag #findid exevent dropc %bankID wait 10 } else ignoreItem #findID 2 until #findCnt < 1 } ignoreItem reset 2 set %PointNumber %PointNumber - 1 gosub FromBankToCave goto main } Ghost: if #charghost = YES { event SysMessage We are dead ... Go to healer... gosub GotoHealer event SysMessage Пытается реснуться gosub ResChar event SysMessage Идем к банку лечиться gosub GotoFromHealerToBank event SysMessage Лечимся у банка gosub HealNearBank If %SpiritHere = #true goto RecallHome If %PointNumber > 7 goto RecallHome event SysMessage Go to Cave... gosub FromBankToCave Goto Main } RecallHome: gosub RecallFrombank if #CHARGHOST = YES goto Ghost gosub OreUnload if %SpiritHere = #true 2 event sysmessage Awaiting while somebody kill the SPIRIT. wait 1800s
if %PointNumber > 7 { wait 1800s set %pointNumber 1 } AlreadyHome: gosub RecallToCave goto main
;#################### END OF MAIN PROCEDURE ############################
sub GotoBank set %SayGFlag %1 gosub _pathFind 2538 501 30 %SayGFlag ; средина моста gosub _pathFind 2529 518 0 %SayGFlag ; угол здания gosub _pathFind 2530 535 0 %SayGFlag ; не доходя банка gosub _pathFind 2515 544 0 %SayGFlag ; не доходя банка gosub _pathFind 2513 551 0 %SayGFlag ; банк return
sub GotoHealer gosub _pathFind 2530 564 0 0 gosub _pathFind 2546 575 0 0 gosub _pathFind 2555 586 0 0 gosub _pathFind 2565 595 0 0 gosub _pathFind 2576 597 0 0 return
sub GotoFromHealerToBank gosub _pathFind 2565 595 0 0 gosub _pathFind 2555 586 0 0 gosub _pathFind 2546 575 0 0 gosub _pathFind 2530 564 0 0 gosub _pathFind 2513 551 0 0 return sub FromBankToCave gosub _pathFind 2515 544 0 0 gosub _pathFind 2530 535 0 0 gosub _pathFind 2529 518 0 0 gosub _pathFind 2542 501 30 0 ;gosub _pathFind 2559 496 0 0 ; в пещере у входа return
;############################################################################################### ;###################### FIND THE SPIRIT ############################# ;############################################################################################### sub FindSpirit finditem GI G_ If #findCnt > 0 { event Sysmessage SPIRIT IS OUT HERE! set %SpiritHere #true } return
;############################################################################################### ;###################### RECALL TO CAVE ############################# ;############################################################################################### sub RecallToCave gosub Peace while #mana < #maxmana { set %jrnl #jindex event macro 13 46 ; for %i %jrnl #jindex ; { ; scanjournal %i ; if %VyNeMojete in #journal ; { ; deletejournal ; event macro 6 0 ; wait 4 ; break ; } ; } wait 2s }
set #LObjectID %RegBag event Macro 17 wait 1s gosub Eating Gosub RecallFromCont %RegBag return
;############################################################################################### ;###################### EATING ############################# ;############################################################################################### ; кушаем пока не нажремся sub Eating set %steak HND gosub moveitems %regBag #backpackID %steak 30 repeat finditem %steak C_ , #backpackID set #LObjectID #findid event Macro 17 set %MessageFlag 0 set %jrnl #jindex wait 12 for %i %jrnl #jindex { scanjournal %i if are_stuffed! in #journal || are_simply_too_full in #journal { set %MessageFlag 1 break } } until %MessageFlag = 1 finditem %steak C_ , #backpackID exevent drag #findid #findStack exevent dropc %regBag wait 1s return
;############################################################################################### ;###################### HIDDING ############################# ;############################################################################################### sub GoHide ;event sysmessage HIDING... if #CHARGHOST = yes return gosub Peace while H notIn #charstatus { set %H_jrnl #jindex ;event sysmessage event macro HIDING.... event macro 13 21 set %H_MesFlag 0 set %StartTime #scnt + 5 repeat { if #scnt > %StartTime break ; set %H_jrnl #jindex While #charname = N/A wait 1s
wait 6 If #CharGhost = YES || #hits < #maxhits - 10 return
for %H_i %H_jrnl #jindex { scanjournal %H_i if You_have_hidden in #journal return if _A:@KBLAO in #journal { set %H_MesFlag 1 break } if %VyNeMojete in #journal { event macro 6 0 event sysmessage WARMODE OFF wait 2 ;deletejournal ; wait 10 set %H_MesFlag 1 break } } } until %H_MesFlag = 1 } return
;############################################################################################### ;###################### PATHFINDING ############################# ;############################################################################################### ; _pathFind X Y Z sayGuards [0/1] sub _pathFind set %_gotoX %1 set %_gotoY %2 set %_gotoZ %3 set %SayGuardFlag %4 set %_gotoxMin %1 - 2 set %_gotoxMax %1 + 2 set %_gotoyMin %2 - 2 set %_gotoyMax %2 + 2 repeat { While #charname = N/A wait 1s event PathFind %_gotoX %_gotoY %_gotoZ wait 1s If %SayGuardFlag = 1 && #charghost = NO msg Guard $ } until #charposx <= %_gotoxMax && #charposx >= %_gotoxMin && #charposy >= %_gotoyMin && #charposy <= %_gotoyMax return sub CheckConnect ; If ( #contSize = 203_121 ) && ( #contName = waiting_gump ) ; { ; Call TheUnseenPowerRelog.txt ; If ! #Result ; Halt ; } return
;############################################################################################### ;###################### RESSURECTION ############################# ;############################################################################################### sub ResChar ; Ресаем чара с креста и восстанавливаем ему здоровье спирит спиком
while #charghost = YES { While #charname = N/A wait 1s
event macro 6 0 wait 1s msg Ress $ wait 1s } set %cntghost %cntghost + 1 event macro 8 1 ; открыть папердолл если закрыт event macro 8 2 ; открыть статус если закрыт event macro 8 7 ; открыть бекпак если закрыт return
;############################################################################################### ;###################### RECALL FROM BANK ############################# ;###############################################################################################
sub RecallFromBank While #charname = N/A wait 1s if #CHARGHOST = yes return
if G in #charStatus { event macro 6 0 wait 1s }
repeat msg Bank $ wait 1s until #CONTID = %BankID For %oreN 1 4 { repeat finditem %oreType . %oreN C_ , %bankID exevent drag #findid exevent dropc #backpackID wait 10 until #findCnt < 1 }
gosub RecallFromCont %BankID return
;############################################################################################### ;###################### HEALING ############################# ;############################################################################################### sub Healing While #charname = N/A wait 1s
while #charGhost = NO && #hits < #maxhits && #charName <> N/A { finditem ZLF C_ , #backpackID if #findCnt < 1 2 event Sysmessage no bandages found return
set #lObjectID #findID event Macro 17 0 target 5S event Macro 23 0 set %MessageFlag 0 set %CurTime4Mes 0 repeat set %jrnl #jindex wait 1s set %CurTime4Mes %CurTime4Mes + 1 if %CurTime4Mes >= %MaxTime4Mes break for %i %jrnl #jindex { scanjournal %i if attacking_you in #journal msg Guards $ if _see_the_target in #journal || _A>2A5<_=5_ in #journal || _<C<8N? in #journal || _bloody_bandages_2_backpack in #journal || _bloody_bandage_2_backpack in #journal { set %MessageFlag 1 break }
} until %MessageFlag = 1 } return
;############################################################################################### ;###################### HEAL NEAR BANK ############################# ;############################################################################################### sub HealNearBank repeat if #charGhost = YES return msg Bank $ wait 1s event SysMessage #CONTID until #CONTID = %BankID If #hits < #maxhits 2 gosub moveItems %bankID #backpackID ZLF 20 gosub healing finditem ZLF C_ , #backpackID exevent drag #findid #findStack exevent dropc %bankID wait 1s return
;############################################################################################### ;###################### ORE UNLOAD ############################# ;############################################################################################### sub OreUnLoad ;ignoreItem reset 2 While #CharName = N/A wait 1s OpenCont: set #LObjectID %OreBag event Macro 17 wait 1s
For %oreN 1 4 { repeat finditem %oreType . %oreN C_ , #backpackID exevent drag #findid #findstack wait 5 exevent dropc %OreBag repeat finditem #findID C_ , #backpackID until #findCnt < 1 finditem %oreType . %oreN C_ , #backpackID until #findCnt < 1 } return
;############################################################################################### ;###################### RECALL FROM CONTAINER ############################# ;############################################################################################### ; грузим по одному регу, контейнер должен быть открыт! ; проверяем рунку и летим по ней. просранные рунки игнорим sub RecallFromCont event macro 8 7 ; открываем бекпак set %_ContID %1 set %RuneType QWL set %regType . 1 JUF set %regType . 2 MZF set %regType . 3 KUF findNewRune:
finditem %RuneType C_ , %_ContID if #findCnt = 0 2 event SysMessage Can't find rune to home... halt set %RuneToHome #findID set %charposx #charposx set %charposy #charposy While #CharName = N/A wait 1s recall: gosub Peace If #mana < 14 { while #mana < 14 { set %jrnl #jindex event macro 13 46 for %i %jrnl #jindex { scanjournal %i if %VyNeMojete in #journal { event macro 6 0 event sysmessage WARMODE OFF deletejournal ; wait 10 set %H_MesFlag 1 break } } wait 2s } } For %regN 1 3 ;подгружаем по одному регу gosub moveItems %_ContID #backpackID %regType . %regN 1 set %scnt #scnt + 4 set %scnt2 #scnt + 10 set #ltargetKind 1 event macro 15 31 target 5s set #ltargetid %RuneToHome event macro 22 0 set #result 0 repeat set %jStart #jIndex wait 6 set %jEnd #jindex for %_jindex %jStart %jEnd { scanjournal %_jIndex if has_faded in #journal { ignoreItem %RuneToHome 1 event sysmessage rune has faded set #result 1 break } } if ( #charposx <> %charposx || #charposy <> %charposy ) && #scnt > %scnt set #result 3 if ( #charposx = %charposx && #charposy = %charposy ) && #scnt > %scnt2 2 event sysmessage recall failed. trying again. set #result 2 until #result <> 0 if #result = 1 goto findNewRune if #result = 2 goto Recall return
; Usage: gosub moveItems sourceContainer targetContainer [itemTypes] sub moveItems set !items %3 if %0 < 3 set !items * set !from %1 set !to %2 set %_needCnt %4 if %4 = N/A %_needCnt = #findcnt finditem !items C_ , #backpackID If #findStack >= %_needCnt return While #CharName = N/A wait 1s
TryAgain: finditem !items C_ , !from exevent drag #findid %_needCnt exevent dropc !to wait 1s finditem !items C_ , !to If #findStack < %_needCnt goto TryAgain return
; возвращает один, если нас атаковал человек и ноль если не человек sub DetermAttackingType finditem #enemyID G If #findtype = IS || #findtype = HS { event sysmessage Нас атакует человек... set %sayGuard 1 } return
sub MineAround ; Обкопка вокруг чара ; Возвращает: ; 0 - чар под атакой ; 1 - все выкопано или перевес ; 3 - выкопал миф if #charghost = YES || #hits < #maxhits return 0 for %minex -4 4 { for %miney -4 4 { set %FinishFlag 1 set %CountIteration 0 repeat { While #CharName = N/A wait 1s if #charghost = YES || #hits < #maxhits return 0 if #weight >= #MaxWeight - 40 ; MAX WEIGHT return 1 gosub GoHide
if #charghost = YES || #hits < #maxhits return 0
if G in #charStatus { event macro 6 0 wait 1s } ;set %jrnl #jindex finditem NPF_WTH_QPF set #lobjectid #findid ; set %jrnl #jindex event macro 17 0 if #charghost = YES || #hits < #maxhits return 0 set #ltargetkind 3 set #ltargetx #charposx + %minex set #ltargety #charposy + %miney target 2s event macro 22 0 if #charghost = YES || #hits < #maxhits return 0 ; сканируем журнал в поисках сообщений: set %MessageFlag 0 set %CurTime4Mes 0 repeat { set %jrnl #jindex wait 8 set %CurTime4Mes %CurTime4Mes + 1 if %CurTime4Mes >= %MaxTime4Mes { set %FinishFlag 1 break } for %i %jrnl #jindex { scanjournal %i if %decide in #journal { wait 3s set %MessageFlag 1 break }
if #hits < #maxhits - 10 || #charghost = YES ;%attacking in #journal || return 0 if Mytheril_Ore in #journal { event sysmessage Mytheril Ore founded... return 3 } if %nothing in #journal || %far in #journal || %try in #journal || %cannot in #journal || %noline in #journal || %cannot2 in #journal { set %FinishFlag 0 set %MessageFlag 1 break ; _have_been_revealed in #journal || } if %put in #journal { if Mytheril_Ore in #journal { event sysmessage Mytheril Ore founded... return 3 } set %MessageFlag 1 break } if %loosen in #journal || %fignya in #journal { set %CountIteration %CountIteration + 1 if %CountIteration >= %MaxPointIteration { set %FinishFlag 0 wait 20s } else set %FinishFlag 1 set %MessageFlag 1 break } } } until %MessageFlag = 1 } until %FinishFlag = 0 } } return 1
sub ChangeRun ; Смена Always Run в зависимости от параметра. ; 0 - выключить Always Run ; 1 - включить Always Run set %RunFlag %1 set %jrnl #jindex event macro 32 0 wait 4 for %i %jrnl #jindex { scanjournal %i if %RunOn in #journal && %RunFlag = 0 { event macro 32 0 break } if %RunOff in #journal && %RunFlag = 1 { event macro 32 0 break } } return
Sub GotoRail ; %1 - маршрут ; %2 - направление (1 - прямое, 0 - обратное) ; %3 - вызывать гвардов в узловых точках или нет (есл здоровья меньше максимума -10) set %rail %1 set %direct %2 set %guard %3 set %tolerant 1 set %timeout 60s set %line _
if %direct = 0 { ; вывернем "наизнанку" маршрут %rail set %railback set %nstep 1 repeat { gosub GetWord %rail %nstep set %myx #result set %nstep %nstep + 1 gosub GetWord %rail %nstep set %myy #result if %myx <> %line && %myy <> %line { str Len %railback if #strRes <> 0 set %railback %myx , %line , %myy , %line , %railback else set %railback %myx , %line , %myy } set %nstep %nstep + 1 } until %myx = %line || %myy = %line set %rail %railback } set %nstep 1 repeat { gosub GetWord %rail %nstep set %myx #result set %nstep %nstep + 1 gosub GetWord %rail %nstep set %myy #result event sysmessage %myx %myy if %myx <> %line && %myy <> %line { if %guard = 1 && #hits < #maxhits - 10 && #charghost = NO { msg guards $ wait 2 } move %myx %myy %tolerant %timeout set %nstep %nstep + 1 } else { return } } until %myx = %line || %myy = %line return
Sub GetWord ; (c) Edred ; Возвращает слово из строки str (первый параметр) за номером ; num (второй параметр), слова должны быть разделены _ ; если такого слова нет - возвращаем _ ; Пример 1111_2222_3333_4444
; считаем параметры в переменные set %str %1 set %num %2 - 1 if %num > 0 { ; установим возврат в _ set %ret _ ; запомним длину строки str Len %str set %len #strRes ; определим количество подчеркиваний str Count %str _ set %cnt #strRes ; если их меньше чем заказано - вернуть пустую строку if %num > %cnt return %ret ; найдем нужное подчеркивание и следующая позиция - начало str Pos %str _ %num set %start #strRes + 1 } else { set %start 1 } ; увеличим счетчик подчеркиваний на 1 set %num %num + 1 ; если это больше макс числа - значит до конца строки if %num > %cnt { set %fin %len - %start + 1 str Mid %str %start %fin } else { ; иначе считаем до предыдущей позиции str Pos %str _ %num set %num #strRes - 1 set %fin %num - %start + 1 str Mid %str %start %fin } set %ret #strRes return %ret
sub Hide gosub Peace if H notIn #charstatus { set %H_jrnl #jindex event macro 13 21 for %H_i %H_jrnl #jindex { scanjournal %H_i if %VyNeMojete in #journal { event macro 6 0 event sysmessage WARMODE OFF event macro 13 21 return } } } return
sub Peace if G in #charstatus event macro 6 0 return
|