Yoko http://forum.yoko.com.ua/ |
|
Нужна помощь в небольшой доработке скрипта! http://forum.yoko.com.ua/viewtopic.php?f=20&t=8983 |
Page 1 of 1 |
Author: | DieVeR [ 2006-10-07 11:09:47 ] |
Post subject: | Нужна помощь в небольшой доработке скрипта! |
Дело такого характера!!! Мне нужно дописать в скипте элемент продолжения работы по команде Go to work ! Тоесть Чар копает видет элементаля или ещё кого нибуть другого но при этом чтобы можно было вписать тех кого он не шугаеться, и он реколится на базу проводит операции с разгрузкой подкормкой пополнением регов и уходит так говорится в ожидании команды из журнала ! Чтобы я мог скажем прыгнуть туда другим чаром грохнуть элементаля прити на базу и датьь ему команду Go to Work и он возврашался к своим обязаностям! ################## ### Переменные ### ################## var Reconnect=0 ## 1 - Включить реконнект на сервер если выкинет, 0 - отключить реконнект.(не проверял работает или нет с этим скриптом) ### var Food=1 ## - Кушать после сброса руды или нет? 1 - да, 0 - нет. ### var Status=0 ## - Статус руды, показывает скока накопали (для опытных скриптёров) 1 - да, 0 - нет. ### var Chest='0x40065d2e' ## - ID сундука куда будут выгружаться руду, где должны лежать реги и еда. ### var TypeFood='0x0C77' ## - Type еды которую будем кушать.(сейчас фиштейки) ### var CountReg=50 ## - Кол-во регов для подзарядки. ### var OreQty=620 ## - Максимальный вес при котором домой с рудой ### var maxjamp=3 ## - Для рекола (изменять не нужно) var rune=1 ## - Для рекола (изменять не нужно) ################################################################################ ################### ### Wait - Ждёт сообшения после замаха кирки, чтобы повторить. ## ### Fizzle - Если пришло такое сообшение, то переходим на след. клетку копать. ## ################################################################################ ################### var Wait1="You put" var Wait2="heavy" var Wait3="location" var Wait4="no ore" var Wait5="but fail" var Wait6="far away" var Wait7="in rock" var Wait8="You can't" var Wait9="You have found some" ### var Fizzle1="There is no ore here to mine." var Fizzle2="You can't use the" var Fizzle3="Try mining elsewhere." var Fizzle4="location" var Fizzle5="nothing here" ################# ### Включалка ### ################# sub Start() If UO.GetGlobal('Maningcheck')=='on' Then UO.SetGlobal('Maningcheck','off') UO.Exec('Exec Terminate') Else UO.Exec('Exec Maning') UO.SetGlobal('Maningcheck','on') EndIf End sub ############### ### Майнинг ### ############### Sub Maning() var Mine=1 UO.print('Select PICKAXE') UO.exec('addobject Shovel') while UO.targeting() wait(100) wend wait(1000) UO.print('SELECT RUNE TO HOME') UO.exec('addobject Home') while UO.targeting() wait(100) wend wait(1000) UO.print('SELECT RUNE TO MINE1') UO.exec('addobject Mine1') while UO.targeting() wait(100) wend wait(1000) UO.print('SELECT RUNE TO MINE2') UO.exec('addobject Mine2') while UO.targeting() wait(100) wend If Reconnect==1 Then UO.Exec('Exec Reconnect') EndIf ############################## ### Копаем руду возле себя ### ############################## If Mine==1 Then REPEAT JumpToRune() GetOre() wait(2000) Until UO.Dead() End sub Sub GetOre() var CheckTime var mx, my, mz, i, j mx = UO.GetX("self") my = UO.GetY("self") mz = UO.GetZ("self") for i = mx-2 to mx+2 for j = my-2 to my+2 ToHide() If UO.waiting() Then UO.canceltarget() EndIf REPEAT If UO.weight >= OreQty Then ToRecall() EndIf ToHide() UO.Waittargettile("1341",str(i),str(j),str(mz)) UO.Useobject("Shovel") CheckTime=UO.Timer() UO.DeleteJournal() REPEAT wait(100) if uo.InJournal("Elemental") or uo.InJournal("is attacking you") then // Здесь он шугаеться пишет в мировой чат помощь и соскакивает! UO.SayU ('.% HELP') UO.DeleteJournal() ToRecallE() Endif Until UO.InJournal(Wait1) or UO.InJournal(Wait2) or UO.InJournal(Wait3) or UO.InJournal(Wait4) or UO.InJournal(Wait5) or UO.InJournal(Wait6) or UO.InJournal(Wait7) or UO.InJournal(Wait8) or UO.InJournal(Wait9) or CheckTime+100<uo.Timer() or UO.Dead() Until UO.InJournal(Fizzle1) or UO.InJournal(Fizzle2) or UO.InJournal(Fizzle3) or UO.InJournal(Fizzle4) or UO.InJournal(Fizzle5) or UO.Dead() If UO.weight >= OreQty Then ToRecall() EndIf Next Next End sub ################### ### Рекол домой ### ################### Sub ToRecall() RecallToHome() ToHide() DropOre() CheckReg() If Food==1 Then ToEat() EndIf If Status==1 Then InfoOre() EndIf BackToMine() End sub #################################### ### Рекол домой Если Элементаль ### #################################### Sub ToRecallE() UO.Cast('Recall','Home') UO.DeleteJournal() wait(5000) ToHide() DropOre() CheckReg() If Food==1 Then ToEat() EndIf If Status==1 Then InfoOre() Work() // переход в ожидание команды EndIf End sub ###################### ## Ожидание Команды ##### // Здесь прошу помощи!!!! ##################### Sub Work() repeat if uo.InJournal("go to work")or UO.Dead() then UO.SayU ('Yes my Sir!') UO.DeleteJournal() BackToMine() EndIf end sub ######################################################## ### Система реколов по рунам (с проверкой на прыжки) ### ######################################################## Sub JumpToRune() var x=0 var mx, my mx = UO.GetX("self") my = UO.GetY("self") dim runes[2] runes[1]='Mine1' runes[2]='Mine2' RecallMana() If rune==maxjamp Then rune=1 EndIf UO.Print("RETURT TO MINE: "+str(rune)) UO.Cast('Recall',runes[rune]) Wait(5000) If UO.getx()==mx and UO.gety()==my Then REPEAT x=x+1 RecallMana() UO.Cast('Recall',runes[rune]) Wait(5000) Until UO.getx()<>mx and UO.gety()<>my or (x==2) or UO.Dead() EndIf CheckMark() rune=rune+1 End sub Sub BackToMine() var x=0 var mx, my mx = UO.GetX("self") my = UO.GetY("self") dim runes[2] runes[1]='Mine1' runes[2]='Mine2' If rune==1 Then rune=2 EndIf rune=rune-1 RecallMana() UO.Print("GO TO MINE"+str(rune)) UO.Cast('Recall',runes[rune]) Wait(5000) If UO.getx()==mx and UO.gety()==my Then REPEAT x=x+1 RecallMana() UO.Cast('Recall',runes[rune]) Wait(5000) Until UO.getx()<>mx and UO.gety()<>my or (x==2) or UO.Dead() EndIf CheckMark() rune=rune+1 End sub Sub CheckMark() dim runes[2] runes[1]='Mine1' runes[2]='Mine2' If UO.InJournal('The recall rune is starting to fade') Then UO.print("MARK RUNE "+str(rune)) REPEAT UO.DeleteJournal() MarkMana() UO.Cast('Mark',runes[rune]) wait(5000) Until NOT UO.InJournal('The spell fizzles') or UO.Dead() UO.DeleteJournal() EndIf End sub ####################################################### ### Реколимся домой по рунам (с проверкой на прыжки) ## ####################################################### Sub RecallToHome() var x=0 var mx, my mx = UO.GetX("self") my = UO.GetY("self") REPEAT x=x+1 RecallMana() UO.Print('GO TO HOME') UO.Cast('Recall','Home') wait(5000) Until UO.getx()<>mx and UO.gety()<>my or (x==3) or UO.Dead() If UO.InJournal('The recall rune is starting to fade') Then UO.print("MARK RUNE") REPEAT UO.DeleteJournal() MarkMana() UO.Cast('Mark','Home') wait(5000) Until NOT UO.InJournal('The spell fizzles') or UO.Dead() UO.DeleteJournal() EndIf End sub #################################### ### Выкладываем руду в контейнер ### #################################### Sub DropOre() If UO.waiting() Then UO.canceltarget() EndIf VAR a,Exit DIM Ore[5] Ore[0]=0x19B9 ; 4 and more ore Ore[1]=0x19B7 ; 1 ore Ore[2]=0x19BA ; 2 ore Ore[3]=0x19B8 ; 3 ore UO.SetReceivingContainer(Chest) wait(500) For a=0 to 3 Exit=0 repeat UO.FindType(Ore[a]) If UO.GetQuantity('finditem') > 0 Then UO.Grab('0','finditem') wait(1500) Else Exit=1 EndIf Until Exit==1 or UO.Dead() Next UO.UnSetReceivingContainer() End sub ##################################### ### Проверяем кол-во регов в паке ### ##################################### Sub CheckReg() If UO.MR <= 3 or UO.BM <= 3 or UO.BP <= 3 Then UO.Print("DOWNLOADS REGS") UO.SetReceivingContainer('backpack') UO.UseObject(Chest) wait(2000) UO.FindType('0x0F86','-1',Chest) ; MR UO.Grab(STR(CountReg-UO.MR),'finditem') wait(2000) UO.FindType('0x0F7B','-1',Chest) ; BM UO.Grab(STR(CountReg-UO.BM),'finditem') wait(5000) UO.FindType('0x0F7A','-1',Chest) ; BP UO.Grab(STR(CountReg-UO.BP),'finditem') wait(2000) UO.UnsetReceivingContainer() UO.Print("DOWNLOADS DONE") EndIf End sub ########################################## ### Берём хавку из контейнера и кушаем ### ########################################## Sub ToEat() UO.UseObject(Chest) wait(5000) UO.FindType(TypeFood,'-1',Chest) If UO.FindCount() > 0 Then UO.SetReceivingContainer('backpack') UO.Grab('25','finditem') wait(2000) REPEAT UO.UseType(TypeFood) wait(1000) Until UO.InJournal('You are simply too full to eat any more!') or UO.Dead() Else UO.print("NOO FOOD") EndIf DropFood() End sub Sub DropFood() var f,Exit dim Food[1] Food[0]=TypeFood If UO.Waiting() Then UO.CancelTarget() EndIf UO.SetReceivingContainer(Chest) for f=0 to 0 Exit=0 repeat UO.FindType(Food[f]) If UO.GetQuantity('finditem') > 0 Then UO.Grab('0','finditem') wait(1500) Else Exit=1 EndIf Until Exit==1 or UO.Dead() next UO.UnsetReceivingContainer() End sub #################################### ### Проверяем ману перед кастами ### #################################### Sub RecallMana() If UO.mana <= 11 Then UO.print('Meditation') UO.Exec('warmode 0') wait(1000) REPEAT UO.UseSkill('Meditation') wait(15000); 15 секунд медетируем. Until UO.mana > 50 or UO.Dead() EndIf End sub Sub MarkMana() If UO.mana <= 17 Then UO.print('Meditation') UO.Exec('warmode 0') wait(1000) REPEAT UO.UseSkill('Meditation') wait(5000); 15 секунд медетируем. Until UO.mana > 50 or UO.Dead() EndIf End sub ####################### ### Прячимся в хайд ### ####################### Sub ToHide() if uo.InJournal("Elemental") or uo.InJournal("is attacking you")then UO.SayU('.% HELP') ToRecallE() UO.DeleteJournal() endif var CheckTime while NOT UO.Hidden() UO.Print('HIDING...') UO.Exec("warmode 0") wait(1000) UO.UseSkill('Hiding') CheckTime=UO.Timer() REPEAT wait(300) Until UO.Hidden() or CheckTime+60<uo.Timer() or UO.Dead() Wend End sub ################################### ### Смотрим скока накопали руды ### ################################### Sub InfoOre() var LogsTime=PrintTime() UO.FindType('0x1BDD','-1',Chest) UO.TextOpen() UO.TextPrint('#####################') UO.TextPrint('## Время: '+LogsTime+' ##') UO.TextPrint('#####################') UO.TextPrint('Iron Ore: '+STR(GetAmount('0x19B9','0x0000',Chest))) UO.TextPrint('Rose Ore: '+STR(GetAmount('0x19B9','0x0665',Chest))) UO.TextPrint('Golden Ore: '+STR(GetAmount('0x19B9','0x084D',Chest))) UO.TextPrint('Orion Ore: '+STR(GetAmount('0x19B9','0x048A',Chest))) UO.TextPrint('Dwarf Ore: '+STR(GetAmount('0x19B9','0x0488',Chest))) UO.TextPrint('Silver Ore: '+STR(GetAmount('0x19B9','0x0482',Chest))) UO.TextPrint('Shadow Ore: '+STR(GetAmount('0x19B9','0x0770',Chest))) UO.TextPrint('Valorite Ore: '+STR(GetAmount('0x19B9','0x0515',Chest))) UO.TextPrint('Crystal Ore: '+STR(GetAmount('0x19B9','0x0487',Chest))) UO.TextPrint('Magma Ore: '+STR(GetAmount('0x19B9','0x0486',Chest))) UO.TextPrint('Obsidian Ore: '+STR(GetAmount('0x19B9','0x0485',Chest))) UO.TextPrint('Mytheril Ore: '+STR(GetAmount('0x19B9','0x048D',Chest))) UO.TextPrint('#####################') End sub Sub GetAmount(Type, Color, Cont) Var item_amount = 0 UO.IgnoreReset() Repeat UO.FindType(Type, Color, Cont) If UO.FindCount() > 0 Then If UO.GetQuantity('finditem')==0 Then item_amount = item_amount + 1 Else item_amount = item_amount + UO.GetQuantity('finditem') EndIf UO.Ignore('finditem') UO.FindType(Type, Color, Cont) EndIf Until UO.FindCount() < 1 or UO.Dead() UO.IgnoreReset() Return item_amount End sub Sub PrintTime() Var HR = '' Var MIN = '' Var SEC = '' Var CurrentTime = UO.Time() If CurrentTime>99999 Then HR = Mid(STR(CurrentTime),0,2) MIN = Mid(STR(CurrentTime),2,2) SEC = Mid(STR(CurrentTime),4,2) Else If CurrentTime > 9999 Then HR = '0'+Mid(STR(CurrentTime),0,1) MIN = Mid(STR(CurrentTime),1,2) SEC = Mid(STR(CurrentTime),3,2) Else If CurrentTime > 999 Then HR = '00' MIN = Mid(STR(CurrentTime),0,2) SEC = Mid(STR(CurrentTime),2,2) Else If CurrentTime > 99 Then HR = '00' MIN = '0'+Mid(STR(CurrentTime),0,1) SEC = Mid(STR(CurrentTime),1,2) Else If CurrentTime > 9 Then HR = '00' MIN = '00' SEC = STR(CurrentTime) Else HR = '00' MIN = '00' SEC = '0'+STR(CurrentTime) EndIf EndIf EndIf EndIf EndIf UO.TextPrint(STR(CurrentTime )) Return (HR+':'+MIN+':'+SEC) End sub ################## ### РЕКОНЕКТОР ### ################## Sub Reconnect() var ReconnectTime,rFlag ReconnectTime='0' rFlag=1 repeat while (UO.ObjAtLayer('Bpack')=='') If rFlag Then ReconnectTime=MakeTime() rFlag=0 EndIf 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' EndIf 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 EndIf 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 EndIf next ret=t+" @ "+d return ret End sub ############################# ### Выключаем все скрипты ### ############################# Sub Terminate() UO.Print("SCRIPTS OFF") UO.DeleteJournal() UO.Exec('terminate all') wait(100) UO.Exec('terminate all') wait(100) UO.Exec('terminate all') wait(100) End sub |
Page 1 of 1 | All times are UTC+02:00 |
Powered by phpBB® Forum Software © phpBB Limited https://www.phpbb.com/ |