Page 1 of 1

Раскладка карт.

Posted: 2006-03-05 10:43:46
by Night Wolf
Скрипт от , по-моему, Асканели: проблема в том, что он начинает раскладывать карты, разложит парочку и останавливается. Остановка происходит после того как он положит карту в нужный мешок. Для продолжения работы скрипта нужно переложить какую нибудь вещь из одного сундука в другой. Пробовал увеличить задержки в 2 раза, не помогло.

Code: Select all

###Он раскладывает уже расшифрованные карты
###по координатам. Для этого надо 3 контейнера. В первом мешочки с картами,
###во втором ну очень многа пустых мешочков (у мну всегда 255 перед запуском,
###но больше 80-90 обычно не требуется для 3-4-5 левела, а вдруг ...), третий как
###бы вроде пустой, если он не пустой то скрипт переберёт все мешочки и узнает
###карты в какие координаты лежат в мешочках которые тама лежат. В общем ничего
###страшного в том что скрипт вылетел, соскачил конект, жена заигрывающе
###выдернула вилку из розетки, нету Запускаем по новой показываем таргетами на те
###самые контейнеры по порядку и всё будет тип-топ.

###Внимание. В паке чара перед началом не должно быть не одной карты, не в самом
###паке ни в мешочках. Ваще 0 кароче.


###########################################
############## Map_Sort_Uni ###############
###########################################

sub Map_Sort_Uni()
var tx,ty,s,i=0,j=0,flag=0,cc,k=0,Bag0,TMap
var BPack1,BPack2,BPack3

UO.UseObject('backpack')
Cheklag()
UO.exec('resend')
Cheklag()
uo.ignorereset()
wait(50)

Dim Bags[255]
Dim KoordX[255]
Dim KoordY[255]

uo.set('injectecho','1')

uo.print('Pack 1')
uo.exec('addobject Pack')
while uo.targeting()
   wait(100)
wend
BPack1=uo.getserial('Pack')

uo.print('Pack 2')
uo.exec('addobject Pack')
while uo.targeting()
   wait(100)
wend
BPack2=uo.getserial('Pack')

uo.print('Pack 3')
uo.exec('addobject Pack')
while uo.targeting()
   wait(100)
wend
BPack3=uo.getserial('Pack')

uo.useobject(BPack1)
wait(500)
uo.useobject(BPack2)
wait(500)
uo.useobject(BPack3)
wait(500)

uo.findtype('0x0E76','0x0000',BPack3)
wait(50)
while uo.findcount() > 0
   Bag0=uo.getserial('finditem')
   wait(50)   
   uo.useobject(Bag0)
   wait(500)
   uo.findtype('0x14EB','0x0000',Bag0)
   wait(50)
   if uo.findcount() > 0 then
      Tmap=uo.getserial('finditem')
      i=i+1
      uo.moveitem(Tmap,'-1','backpack')
      cc=0
      while cc==0
         wait(100)
         cc=uo.count('0x14EB','0x0000')
      wend
      wait(200)
      uo.deletejournal()
      uo.useobject(Tmap)
      repeat
         wait(10)
      until uo.injournal('Map opened to:')
      wait(100)
      uo.rclick(109,150)
      wait(100)
      s = uo.journal(uo.injournal('Map opened to:')-1)
      s = Trim(Right(s,len(s)-15))
      if s[4] == ':' then
         tx = val(left(s,4))
         ty = val(right(s,len(s)-5))
      else
         tx = val(left(s,3))
         ty = val(right(s,len(s)-4))
      end if
      k=k+1
      KoordX[k]=tx
      KoordY[k]=ty             
      Bags[k]=Bag0
      uo.moveitem(Tmap,'-1',Bag0)
      cc=uo.weight
      while cc==uo.weight
         wait(10)
      wend
      wait(200)
      UO.Print("Координат зафиксировано -> "+str(i))
   end if
   uo.ignore(Bag0)
   wait(50)
   uo.useobject(BPack3)
   wait(500)
   uo.findtype('0x0E76','0x0000',BPack3)
   wait(50)
wend

i=0
uo.ignorereset()
wait(50)

uo.findtype('0x0E76','0x0000',BPack1)
wait(50)
while uo.findcount() > 0
   Bag0=uo.getserial('finditem')
   wait(50)   
   uo.useobject(Bag0)
   wait(500)
   uo.findtype('0x14EB','0x0000',Bag0)
   wait(50)
   while uo.findcount() > 0
      Tmap=uo.getserial('finditem')
      i=i+1
      uo.moveitem(Tmap,'-1','backpack')
      cc=0
      while cc==0
         wait(100)
         cc=uo.count('0x14EB','0x0000')
      wend
      wait(200)
      uo.deletejournal()
      uo.useobject(Tmap)
      repeat
         wait(10)
      until uo.injournal('Map opened to:')
      wait(100)
      uo.rclick(109,150)
      wait(100)
      s = uo.journal(uo.injournal('Map opened to:')-1)
      s = Trim(Right(s,len(s)-15))
      if s[4] == ':' then
         tx = val(left(s,4))
         ty = val(right(s,len(s)-5))
      else
         tx = val(left(s,3))
         ty = val(right(s,len(s)-4))
      end if
      flag=0
      if k>0 then
         For j=1 to k
            if abs(KoordX[j]-tx) < 30 and abs(KoordY[j]-ty) < 30 then
               uo.moveitem(Tmap,'-1',Bags[j])
               cc=uo.weight
               while cc==uo.weight
                  wait(10)
               wend
               wait(300)
               flag=1
            end if
         next
      end if
      if flag==0 then
         k=k+1
         KoordX[k]=tx
         KoordY[k]=ty
         uo.findtype('0x0E76','0x0000',BPack2)
         wait(50)
         if uo.findcount()>0 then             
            Bags[k]=uo.getserial('finditem')
            uo.moveitem('finditem','-1',BPack3)
            wait(500)
         else
            uo.exec("terminate all")
         end if
         uo.moveitem(Tmap,'-1',Bags[k])
         cc=uo.weight
         while cc==uo.weight
            wait(10)
         wend
         wait(300)
      end if
      UO.Print("Карт отсортировано -> "+str(i))
      uo.findtype('0x14EB','0x0000',Bag0)
      wait(50)
   wend
   uo.moveitem(Bag0,'-1',BPack2)
   wait(500)
   uo.findtype('0x0E76','0x0000',BPack1)
   wait(50)
wend
uo.set('injectecho','0')
end sub

###########################################
################### abs ###################
###########################################

Sub abs(n)
   if n < 0 then
      return n*(-1)
   else
      return n
   end if
end sub
 
sub Cheklag()
   UO.DeleteJournal()
   UO.Click('backpack')

   repeat
      wait(500)
   until UO.InJournal('backpack')
end sub

Posted: 2006-12-04 14:33:15
by Askaneli
Во первых нужно пользовать оригинал.
Во вторых нужно этот оригинал настраивать нормально.

Posted: 2006-12-04 21:43:48
by I'm
Askaneli wrote:Во первых нужно пользовать оригинал.
Во вторых нужно этот оригинал настраивать нормально.

Суров но справедлив :)

Posted: 2006-12-04 22:20:05
by Spirit
Askaneli wrote:Во первых нужно пользовать оригинал.
Во вторых нужно этот оригинал настраивать нормально.
Как можно оригинал пользовать?

Posted: 2006-12-06 11:43:18
by Askaneli
Spirit wrote:
Askaneli wrote:Во первых нужно пользовать оригинал.
Во вторых нужно этот оригинал настраивать нормально.
Как можно оригинал пользовать?


Хорошо.
Получить копию оригинального скрипта у автора и использовать, а не брать 10 раз переделанный кем-то ...

Могу сказать одно. Девушка позавчера взяла оригинальную копию приведённого в этом топике скрипта и запустила его без особых проблем ...

Posted: 2006-12-06 19:07:52
by GimFlex
переделал саваджа раскидку только без рун теперь все ок раскидывает

Code: Select all

sub CartSort() 
   VAR Exit, Exit2, Buffer, Buffer2, i, Line, MapX, MapY
   VAR Index=1, MapSerial, BagSerial, MatchFound
   VAR StepRound=60 ; razbros koordinat
   VAR WaitTime=500 ; 2 sec pauza
   
   DIM X[255],Y[255],Bag[255]
   
   UO.Print('Vibery meshok s kartamy!')
   UO.AddObject('SourceBag')
   While UO.Targeting()==2
      wait(500)
   Wend
   UO.UseObject('SourceBag')

   UO.Print('Vibery portfel dlya kart!')
   UO.AddObject('ReceiveBag')
   While UO.Targeting()==2
      wait(500)
   Wend
   UO.UseObject('ReceiveBag')

   UO.Print('Vibery portfel s pustimi meshkami!')
   UO.AddObject('SkladBag')
   While UO.Targeting()==2
      wait(500)
   Wend
   UO.UseObject('SkladBag')


   UO.IgnoreReset()
   Exit=0
   While Exit<>1
      UO.FindType('0x0E76','-1','ReceiveBag')
      IF UO.findcount() Then
         Bag[Index]=UO.GetSerial('finditem')
         UO.UseObject(Bag[Index])
         wait(WaitTime)
         UO.FindType('0x14EB','-1',Bag[Index])
         IF UO.findcount() Then
            UO.DeleteJournal()
            uo.moveitem('finditem','1','backpack')
            wait(500)
            UO.useobject('finditem')
            Repeat
               Wait(100)
            Until UO.InJournal("Map opened")
            Line=UO.InJournal("Map opened")-1
            Buffer=UO.Journal(Line)
            uo.moveitem('finditem','1',Bag[Index])
            wait(500)
            Buffer2=""
            Exit2=0
            i=15
            While Exit2<>1
               If Buffer[i]<>":" Then
                  Buffer2=Buffer2+Buffer[i]
               Else
                  Exit2=1
               Endif             
               i=i+1
            Wend
            MapX=VAl(Buffer2)

            Buffer2=""
            Exit2=0
            While Exit2<>1
               If Buffer[i]<>"" Then
                  Buffer2=Buffer2+Buffer[i]
               Else
                  Exit2=1
               Endif             
               i=i+1
            Wend
            MapY=VAl(Buffer2)

            X[Index]=MapX
            Y[Index]=MapY
            UO.Ignore(Bag[Index])
         Else
            UO.MoveItem(Bag[Index],'1','SkladBag')
            wait(WaitTime)
            Index=Index-1
         Endif
         Index=Index+1
      Else
         Exit=1
      Endif
   Wend
   
uo.resend()

   Exit=0
   While Exit<>1
      UO.FindType('0x14EB','0x0000','SourceBag')
      wait(100)
      If uo.findcount() Then
         UO.DeleteJournal()
         UO.MoveItem('finditem','1','backpack')
         wait(WaitTime)
         UO.UseObject('finditem')
         MapSerial=UO.GetSerial('finditem')
         Repeat
            wait(100)
         Until UO.InJournal("Map opened")
         Line=UO.InJournal("Map opened")-1
         Buffer=UO.Journal(Line)

         Buffer2=""
         Exit2=0
         i=15
         While Exit2<>1
            If Buffer[i]<>":" Then
               Buffer2=Buffer2+Buffer[i]
            Else
               Exit2=1
            Endif             
            i=i+1
         Wend
         MapX=VAl(Buffer2)

         Buffer2=""
         Exit2=0
         While Exit2<>1
            If Buffer[i]<>"" Then
               Buffer2=Buffer2+Buffer[i]
            Else
               Exit2=1
            Endif             
            i=i+1
         Wend
         MapY=VAl(Buffer2)

         i=1
         Exit2=0
         MatchFound=0
         While i<Index AND Exit2<>1
            If X[i]-StepRound<MapX AND X[i]+StepRound>MapX Then
               If Y[i]-StepRound<MapY AND Y[i]+StepRound>MapY Then
                  BagSerial=Bag[i]
                  MatchFound=1
                  Exit2=1
               Endif
            EndIf
            i=i+1
         Wend

         If MatchFound Then
            UO.MoveItem(MapSerial,'1',BagSerial)
            wait(WaitTime)
         Else
            UO.FindType('0x0E76','-1','SkladBag') ; meshok
            IF uo.findcount() Then
               UO.MoveItem('finditem','1','ReceiveBag')
               Bag[Index]=UO.GetSerial('finditem')
               X[Index]=MapX
               Y[Index]=MapY 
               UO.MoveItem(MapSerial,'1',Bag[Index])
               wait(WaitTime)
               Endif
               Index=Index+1
            Else
               Exit=1
               UO.Print("Error! Kon4ilis pustie sumki!")
            Endif
         Endif
         wait(WaitTime)
      Else
         Exit=1
      Endif
   Wend
   UO.Print("Done!!!")
end sub

Posted: 2006-12-08 06:35:27
by Askaneli
Question_GimFlex wrote:переделал саваджа раскидку только без рун теперь все ок раскидывает
...


А своё что-нибуть есть ?

Posted: 2006-12-08 12:39:45
by LeeLoo
Askaneli wrote:
Spirit wrote:
Askaneli wrote:Могу сказать одно. Девушка позавчера взяла оригинальную копию приведённого в этом топике скрипта и запустила его без особых проблем ...

Скрипт не просто работает, а красиво работает!) Смотришь и любуешься! Сразу захотелось стать программисткой.
Спасибо, Асканели!

Posted: 2006-12-08 12:50:43
by GimFlex
Askaneli wrote:
Question_GimFlex wrote:переделал саваджа раскидку только без рун теперь все ок раскидывает
...


А своё что-нибуть есть ?


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

Posted: 2006-12-08 14:54:37
by Askaneli
Question_GimFlex wrote:
Askaneli wrote:
Question_GimFlex wrote:переделал саваджа раскидку только без рун теперь все ок раскидывает
...


А своё что-нибуть есть ?


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


А я вот не выкладываю к примеру тот же скрипт на карты, потому что там есть часть кода сделанная Сфаги.

Не то что бы он против. Просто не могу хвастать не своим на 100% трудом ...

Posted: 2006-12-22 21:55:27
by qqqqqq
макрос класный грех жаловаться но вот смущает одно но можно сделать так чтобы к примеру у меня 1000 крт ето несколько сумок можно чтобы он все ети сумки разобрал а не только 1

Posted: 2006-12-23 17:13:17
by qqqqqq
помогите

Posted: 2007-08-27 09:21:36
by No***Name
Пожалуста обьясните мне вот в переделе Гима что у меня в паке дложно быть вообще краткую инструкцию пожалуйста дайте :?: :cry:

Posted: 2007-08-28 15:53:43
by Lucifer PK
Хорошо.
Получить копию оригинального скрипта у автора и использовать, а не брать 10 раз переделанный кем-то ...

Ребят подскажите куда и к кому обратиться за оригеналом такоги скрипта :cry: а то у меня та же самая проблема.... 1 раз на вашем форуме и что то ничего немогу найти =((

Posted: 2007-08-29 10:16:39
by I'm
К автору :)
В топик где автор выкладывал свои скрипты.