обнаружения елема, каст vortexa, лут

Anything and all.

Moderators: Murderator+, Murderator

Post Reply
vertijok
Posts: 117
Joined: 2008-09-26 17:06:16
Contact:

обнаружения елема, каст vortexa, лут

Post by vertijok »

вот четыре куска скрипта проблема в том после того как vortex убил елема чар не хочет кидать на vortex ан орт, потом не хочет подходить туда где был убит елем , и не хочет лутать то что воляица на палуи не вкл основный скрипт

Code: Select all

sub ControlOfDanger()
Var Elemental
while 1
UO.DeleteJournal()
while not UO.InJournal('Elemental')
wait(100)
wend
Elemental=UO.JournalSerial(UO.InJournal("Elemental")-1)
if UO.GetGraphic(Elemental)=='0x0010' then
UO.exec('terminate start')
UO.exec('terminate autohide')
wait(1000)
KillElem(Elemental)
end if
wend
end sub


Sub KillElem(Elemental)
Var Vortex,ElementalX,ElementalY
UO.warmode(0)
uo.exec('usetype 0x0f0e 0x0631')
wait(300)
CastSpel('Energy Vortex',Elemental)
repeat
wait(400)
until UO.InJournal("Energy Vortex")
Vortex=UO.JournalSerial(UO.InJournal("Energy Vortex")-1)
repeat
ElementalX=UO.GetX(Elemental) ## Следим за координатами Элема, что бы не убежал
ElementalY=UO.GetY(Elemental) ## Следим за координатами Элема, что бы не убежал
wait(500)
until UO.Isnpc(Elemental)==0 ## Ждём пока Элем умрёт
CastSpel('Dispel',Vortex)
repeat
wait(600)
until UO.Isnpc(Vortex)==0 ## Ждём пока Вортекс умрёт
Walker(ElementalX,ElementalY,0) ## Идём к месту смерти Элема
Looting() ## Лутаем
UO.exec("exec start")
UO.exec("exec autohide")
end sub

Sub CastSpel(spel,object)
Var LastMana
Cast:
while UO.Mana<50
if UO.Count('0x0F0E','0x09DF') then
UO.UseType ('0x0F0E','0x09DF')
endif
wait(4000)
wend
UO.WaitTargetObject(object)
UO.Cast(spel)
LastMana=UO.Mana
repeat
wait(200)
until UO.Mana < LastMana
if UO.InJournal("fizzles") then
uo.deletejournal()
goto Cast
end if
end sub

Sub Looting()
Var i
dim Item[5]
Item[1] = 0x19B9 ##
Item[2] = 0x19B7 ##
Item[3] = 0x19BA ##
Item[4] = 0x19B8 ##
Item[5] = 0x0EED ##
for i=1 to 5
UO.FindType(Item[i],-1,'ground')
if UO.FindCount() then
UO.MoveItem('finditem','0','backpack')
wait(600)
CheckLag()
end if
next
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 Text9="You put the Iron Ore in your pack."
var Text10="You put the Rusty Ore in your pack."
var Text11="You put the Old Copper Ore in your pack."
var Text12="You put the Dull Copper Ore in your pack."
var Text13="You put the Copper Ore in your pack."
var Text14="You put the Bronze Ore in your pack."
var Text15="You put the Silver Ore in your pack."
var Text16="You put the Gold Ore in your pack."
var Text17="You put the Rose Ore in your pack."
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 or uo.Journal(0)==Text9 or uo.Journal(0)==Text10 or uo.Journal(0)==Text11 or uo.Journal(0)==Text12 or uo.Journal(0)==Text13 or uo.Journal(0)==Text14 or uo.Journal(0)==Text15 or uo.Journal(0)==Text16 or uo.Journal(0)==Text17 then
return 1
end if
if uo.Journal(0)==Text1 then
wait(1000)
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
спс таму кто мне поможет или даст саветы в чём там праблема
GAUHAR
Posts: 137
Joined: 2006-11-06 21:45:23

Post by GAUHAR »

Скорее всего скрипт всегда считает что элементаль жив. Попробуй заменить

Code: Select all

repeat 
ElementalX=UO.GetX(Elemental) ## Следим за координатами Элема, что бы не убежал
ElementalY=UO.GetY(Elemental) ## Следим за координатами Элема, что бы не убежал
wait(500)
until UO.Isnpc(Elemental)==0 ## Ждём пока Элем умрёт

на

Code: Select all

repeat 
ElementalX=UO.GetX(Elemental) ## Следим за координатами Элема, что бы не убежал
ElementalY=UO.GetY(Elemental) ## Следим за координатами Элема, что бы не убежал
wait(500)
until not UO.Isnpc(Elemental) ## Ждём пока Элем умрёт

или на

Code: Select all

while UO.Isnpc(Elemental)  ## Ждём пока Элем умрёт
ElementalX=UO.GetX(Elemental) ## Следим за координатами Элема, что бы не убежал
ElementalY=UO.GetY(Elemental) ## Следим за координатами Элема, что бы не убежал
wait(500)
wend
vertijok
Posts: 117
Joined: 2008-09-26 17:06:16
Contact:

Post by vertijok »

GAUHAR wrote:Скорее всего скрипт всегда считает что элементаль жив. Попробуй заменить

Code: Select all

repeat 
ElementalX=UO.GetX(Elemental) ## Следим за координатами Элема, что бы не убежал
ElementalY=UO.GetY(Elemental) ## Следим за координатами Элема, что бы не убежал
wait(500)
until UO.Isnpc(Elemental)==0 ## Ждём пока Элем умрёт

на

Code: Select all

repeat 
ElementalX=UO.GetX(Elemental) ## Следим за координатами Элема, что бы не убежал
ElementalY=UO.GetY(Elemental) ## Следим за координатами Элема, что бы не убежал
wait(500)
until not UO.Isnpc(Elemental) ## Ждём пока Элем умрёт

или на

Code: Select all

while UO.Isnpc(Elemental)  ## Ждём пока Элем умрёт
ElementalX=UO.GetX(Elemental) ## Следим за координатами Элема, что бы не убежал
ElementalY=UO.GetY(Elemental) ## Следим за координатами Элема, что бы не убежал
wait(500)
wend


спс тебе добрый скрептёр как проидёт тест так сразу скажу .

теперь у меня другой вопрос есть скрипт с ходилкой но почемута при хождения вылетает табличка конект лост хз почему вот сам скрипт

Code: Select all

var qman
var vendor="Beaumont"

################################################################

################################################################

sub main()
uo.exec('exec start')
end sub

################################################################

sub start()
 while not uo.dead()
  gomine()
  gozanovo()
  gomine()
  gosmelt()
  smeltore()
  gobank()
  tink()
  gosell()
  sellvendor()
  goungold()
  unloadgold()
  gomaxback()
 wend
end sub

################################################################

Sub gomine()
uo.exec('exec gvard')
  WalkN(1516,1505,0)
  kopka()
  WalkN(1518,1506,0)
  kopka()
  WalkN(1519,1507,0)
  kopka()
  WalkN(1519,1509,0)
  kopka()
  WalkN(1519,1511,0)
  kopka()
  WalkN(1519,1513,0)
  kopka()
  WalkN(1519,1515,0)
  kopka()
  WalkN(1520,1517,0)
  kopka()
  WalkN(1520,1519,0)
  kopka()
  WalkN(1519,1521,0)
  kopka()
  WalkN(1517,1521,0)
  WalkN(1517,1523,0)
  kopka()
  WalkN(1516,1520,0)
  kopka()
  WalkN(1515,1518,0)
  kopka()
  WalkN(1515,1516,0)
  kopka()
  WalkN(1514,1514,0)
  kopka()
  WalkN(1514,1512,0)
  kopka()
  WalkN(1513,1511,0)
  kopka()
  WalkN(1513,1509,0)
  kopka()
  WalkN(1513,1508,0)
  kopka()
  WalkN(1512,1506,0)
  kopka()
endsub

################################################################

sub gozanovo()
WalkN(1513,1521,0)
WalkN(1522,1523,0)
WalkN(1522,1508,0)
end sub

Sub gosmelt()
WalkN(1486,1512,1)
WalkN(1473,1532,1)
  WalkN(1430,1540,1)
  UO.exec('terminate gvard')
  WalkN(1430,1554,1)
  WalkN(1425,1556,1)
  smeltore()
endsub

################################################################

Sub gobank()
  WalkN(1430,1570,1)
  WalkN(1438,1583,1)
  WalkN(1425,1592,1)
  WalkN(1425,1622,1)
  WalkN(1420,1631,1)
  WalkN(1420,1668,1)
  WalkN(1436,1671,1)
  WalkN(1435,1680,1)
endsub

################################################################

Sub gomaxback()
  WalkN(1435,1669,1)
  WalkN(1418,1669,1)
  WalkN(1420,1620,1)
  WalkN(1424,1613,1)
  WalkN(1424,1589,1)
  WalkN(1436,1589,1)
  WalkN(1436,1573,1)
  WalkN(1431,1568,1)
  WalkN(1431,1541,1)
  WalkN(1522,1531,1)
endsub

################################################################

Sub gominback()
  WalkN(1446,1533,1)
  WalkN(1441,1524,1)
  WalkN(1447,1504,1)
  WalkN(1460,1504,1)
endsub

################################################################

Sub gosell()
 var dver='0x400009D9'
  WalkN(1435,1658,1)
  WalkN(1432,1658,1)
  WalkN(1427,1658,1)
  while uo.getx('self')>=1432
  CheckLag()
   uo.useobject(dver)
   wait(500)
   uo.press(36)
   wait(200)
   uo.press(36)
   wait(200)
   uo.press(36)
   wait(200)
  wend
  WalkN(1426,1655,1)
endsub

################################################################

Sub goungold()
 var dver='0x400009D9'
  WalkN(1426,1658,1)
  WalkN(1430,1658,1)
  while uo.getx('self')<=1430
   uo.useobject(dver)
   wait(500)
   Walker(1434,1658,1)
   uo.press(39)
   wait(200)
   uo.press(39)
   wait(200)
   uo.press(39)
   wait(200)
  wend
  WalkN(1435,1680,1)
endsub

################################################################

Sub sellvendor()
 var vendor="Beaumont"
 uo.set('buydelay','4000')
 uo.set('maxsell','200')
 findvendor()
 uo.findtype('0x14FB','-1','backpack')
 while uo.findcount()
  uo.sell('lp',vendor)
  CheckLag()
  wait(6000)
  uo.findtype('0x14FB','-1','backpack')
 wend
end sub

################################################################

sub findvendor()
  uo.ignorereset()
  repeat
    uo.findman(-1)
    qman=uo.findcount()
    if uo.getdistance('finditem')<15 && qman>0 && left(uo.getcolor('finditem'),3)<>'0x8' && uo.getserial('finditem')<>'0x00000000' then
      uo.getstatus('finditem')
      vendor=uo.getname('finditem')
     WalkN(uo.getx('finditem'),uo.gety('finditem'),2)       
      uo.sell('lp','vendor')
      wait(1000)
    endif
    uo.ignore('finditem')
    wait(5)
  until qman==0
end sub

################################################################

sub gvard()
while not uo.dead()
uo.say('Guards')
wait(3000)
uo.say('Guards')
wait(3000)
wend
end sub

################################################################

Sub kopka()
 var kirka='0x0E85' ; тут ставим тип кирки
 var i,j,x,y,z
 var ms1="Try mining"
 var ms2="You put"
 var ms3="There is no ore"
 var ms4="You loosen some"
 x=uo.getx('self')
 y=uo.gety('self')
 z=uo.getz('self')
 for i=-1 to 1
  for j=-1 to 1
   repeat
    uo.deletejournal()
    uo.waittargettile(0,x+i,y+j,z)
    uo.usetype(kirka)
    repeat
     wait(100)
    until uo.injournal(ms1) or uo.injournal(ms2) or uo.injournal(ms3) or uo.injournal(ms4)
   until uo.injournal(ms1) or uo.injournal(ms3)
  next
 next
endsub

################################################################

Sub unloadgold()
 uo.findtype('0x0EED','-1','backpack')
 while uo.findcount()
  uo.say("bank")
  wait(1000)
  uo.findtype('0x0EED','-1','backpack')
  if uo.findcount() then
  CheckLag()
   uo.moveitem('finditem','all','lastcontainer')
  endif
  uo.findtype('0x0EED','-1','backpack')
 wend
endsub

################################################################

Sub smeltore()
 uo.findtype('0x19B9','-1','backpack')
 while uo.findcount()
  uo.useobject('finditem')
  wait(500)
  uo.findtype('0x19B9','-1','backpack')
 wend
endsub

################################################################
  VAR EDA       = '0x097b'             # Это рыбные стейки
   VAR LastTimerDinner = UO.Timer()     # Время приема пищи
   VAR FrequencyDinner = 3600           # как часто (раз в 6 минут)
   VAR LastTimerSpiritism = UO.Timer()  # Время спиритизма
   VAR FrequencySpiritism = 3000        # как часто (раз в 5 минут)
   VAR SpiritismYorN      = 1           # 1 - качать спирит спик, 0 - нет

sub tink()
While UO.Count('0x1BEF') > 0
UO.deletejournal()
CheckLag()
UO.Exec("waitmenu 'Tinkering' 'Tools' 'Tools' 'lockpick'")
UO.usetype("0x1EBC")
repeat
wait(500)
until UO.injournal("You put") OR UO.InJournal("fail")
DINNER()
   if SpiritismYorN == 1 then
         Spiritism()
      endif
wend
end sub

Sub WalkN(x,y,prec)
   var ld=0,ldc=0
   var dx,dy
   var mx,my
   var ox,oy,mk,k
   #uo.print(">")
   #uo.track("1",str(x),str(y))
 start:
   mx=UO.GetX()
   my=UO.GetY()
   dx=mx-x
   if dx<0 then
      dx=0-dx
   endif
   dy=my-y
   if dy<0 then
      dy=0-dy
   endif
   if dy>dx then
      dx=dy
   endif
   if dx<=prec then
      return
   endif
   if not ldc then
      uo.print(STR(dx))
   endif
   if dx<3 then
      mk=70
    else
      mk=15
   endif
   ox=mx
   oy=my
   for k=1 to mk
      mx=UO.GetX()
      my=UO.GetY()
      if mx<>ox or my<>oy then
         goto sdidapl
      endif
      wait(10)
   next
 sdidapl:
   mx=UO.GetX()
   my=UO.GetY()
   dx=mx-x
   if dx<0 then
      dx=0-dx
   endif
   dy=my-y
   if dy<0 then
      dy=0-dy
   endif
   if dy>dx then
      dx=dy
   endif
   if dx<=prec then
      return
   endif
   if ld==dx then
      ldc=ldc+1
      if ldc>100 then
         uo.print("Can not reach location!")
         return
      endif
    else
      ld=dx
   endif
   if mx==x then
      if my==y then
         return
      endif
      if my>y then
         #UO.Print("UR")
         UO.Press(33)
         goto start
      endif
      #UO.Print("DL")
      UO.Press(35)
      goto start
   endif
   if mx<x then
      if my>y then
         #UO.Print("R")
         UO.Press(39)
         goto start
      endif
      if my==y then
         #UO.Print("DR")
         UO.Press(34)
         goto start
      endif
      #UO.Print("D")
      UO.Press(40)
      goto start
   endif
   if my<y then
      #UO.Print("L")
      UO.Press(37)
      goto start
   endif
   if my==y then
      #UO.Print("LU")
      UO.Press(36)
      goto start
   endif
   #UO.Print("U")
   UO.Press(38)
   goto start
endsub

################################################################

SUB DINNER()
   VAR k
   if UO.Timer() > LastTimerDinner+FrequencyDinner then
      if UO.Count(EDA) < 5 then
         PEREBROS(10,EDA,'-1','CONTAINER_sender','backpack')
      endif
      repeat
         k = 0
         UO.UseType(EDA)
         wait(1000)
         repeat
            wait(100)
            k = k + 1
         until (UO.InJournal("the food") or UO.InJournal("You are stuffed") or UO.InJournal("You are simply too full") or k==30)
         DelJournal("the food")
      until (UO.InJournal("You are stuffed") or UO.InJournal("You are simply too full") or k==30)
      if k <> 30 then
         PrintInColor("НАЕЛСЯ",'0x0053')
       else
         PrintInColor("Ты не можешь есть то, чего у тебя нет",'0x0053')
         PrintInColor("Пополни запас еды, или выбери другой тип",'0x0053')
      endif
      LastTimerDinner = UO.Timer()
   endif
endsub

SUB Spiritism()
   VAR ispir, k
   if UO.Timer() > LastTimerSpiritism+FrequencySpiritism then
      PrintInColor("Разговор с духами",'0x0053')
      for ispir=1 to 3
         k = 0
         UO.UseSkill('Spirit Speak')
         while not (UO.InJournal("You fail your attempt") or UO.InJournal("You establish a connection") or k == 100)
            wait(100)
            k = k + 1
         wend
         DelJournal("You fail your attempt")
         DelJournal("You establish a connection")
      next
      LastTimerSpiritism = UO.Timer()
   endif
endsub

################################################################

Sub CheckLag()
   UO.DeleteJournal()
   UO.Click('backpack')
   repeat
      Wait(50)
   until UO.InJournal('backpack')
endsub

SUB DelJournal(string1)
   VAR nom = UO.InJournal(string1)
   if nom > 0 Then
      UO.SetJournalLine(Nom - 1, 'string replaced')
      DelJournal(string1)
   endif
endsub

SUB Presentation(TXT)
   PrintInColor("**************************",'0x0035')
   PrintInColor(TXT,'0x0035')
   PrintInColor("*           Made by GAUHAR            *",'0x0035')
   PrintInColor("**************************",'0x0035')
   wait(3000)
endsub

SUB PrintInColor(text,color)
   # PrintInColor("здесь текст",'цвет')
   UO.ConColor(color)
   UO.Print(text)
   UO.ConColor('1088')
endsub

sub Reconnector()
var ReconnectTime, RFlag
ReconnectTime = '0'
RFlag = 1
Repeat
While (UO.ObjAtLayer('Bpack') == '')
if RFlag Then
ReconnectTime = MakeTime()
RFlag = 0
endif
Wait(15000) # WorldSave Protection
UO.Say('')
Wait(5000)
UO.Say('')
Wait(5000)
UO.Say('')
Wait(3000)
UO.LDblClick(357,164)
UO.LClick(616,459)
Wait(3000)
WEnd
Wait(3000)
if (RFlag == 0) and (ReconnectTime <> '0') Then

wait(1000)
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


этот скрипт я сам намутил , поменял ,поставил но не магу поставить чтобы постаяна работал норм и даже рекоонектор не помогает, постояна конект лост мешает
GAUHAR
Posts: 137
Joined: 2006-11-06 21:45:23

Post by GAUHAR »

vertijok wrote:теперь у меня другой вопрос есть скрипт с ходилкой но почемута при хождения вылетает табличка конект лост хз почему вот сам скрипт

добавь в ходилку паузу между шагами

Code: Select all

Sub WalkN(x,y,prec)
   ...
   ...
 sdidapl:
   wait(120)   #<<<<<
   mx=UO.GetX()
   my=UO.GetY()
   ...
   ...
endsub
vertijok
Posts: 117
Joined: 2008-09-26 17:06:16
Contact:

Post by vertijok »

GAUHAR wrote:
vertijok wrote:теперь у меня другой вопрос есть скрипт с ходилкой но почемута при хождения вылетает табличка конект лост хз почему вот сам скрипт

добавь в ходилку паузу между шагами

Code: Select all

Sub WalkN(x,y,prec)
   ...
   ...
 sdidapl:
   wait(120)   #<<<<<
   mx=UO.GetX()
   my=UO.GetY()
   ...
   ...
endsub


спс что ответил но я менял ходилку и тоже самое :(
vertijok
Posts: 117
Joined: 2008-09-26 17:06:16
Contact:

Post by vertijok »

АП
Post Reply