Page 1 of 1

Мини вопросик, по скрипту на магери.

Posted: 2005-01-06 17:27:01
by KrafteR
Ваял этот скрипт долго, считай мой первый нормальный скрипт. Понадёргал кусков из множества скриптов, склеел и вроде работает, как ток не проверял. Выключил компьютер пошёл спать... проснулся хотел поставить чара на макрос, но пишет в 43 строке ошибка, но в скрипте всего 42 строчки... сидел ломал голову в чём трабл. При повторном вставлении ID сундука начинает работать. Вопрос в том, что можно сделать чтобы не менять постоянно ID?

Code: Select all

sub Magery()
VAR NS='0x0F88'
VAR Sunduk='0x4021C658'
VAR Kolvo=10
VAR k = 0, j
VAR LastTimer
while NOT UO.Dead()
While UO.NS<=1
UO.FindType(NS, -1, Sunduk)
If UO.FindCount()==0 Then
UO.Print("NS not found, script terminated")
else
j = UO.GetQuantity( 'finditem' )
If j > Kolvo Then
UO.Print("I can use" + str( j ) + "NS")
else
UO.Print("I can't use" + str( j ) + "NS")
Endif
If Kolvo == 1 Then
UO.FindType( NS )
UO.MoveItem( 'finditem', '2', Sunduk )
wait(500)
Else
UO.Grab( Str( Kolvo ), 'finditem' )
wait(500)
Endif
wend
while UO.Mana>66
UO.Cast('Poison','self')
wait(3000)
wend
while UO.Mana<UO.Int
LastTimer=UO.Timer()
UO.UseSkill('Meditation')
repeat
wait(100)
until UO.InJournal("You are") OR UO.InJournal("You lose") OR UO.Timer()>LastTimer+200
UO.DeleteJournal()
wait(2000)
wend
Wend
end sub

Posted: 2005-01-06 18:10:43
by JIupus
Ну как варинат можно сделать так: каждый раз при запуске скрипта, он будет выводит прицел и нужно будет указывать на сундук

Code: Select all

....
VAR Sunduk
.....
UO.Exec('addobject Chest')
While UO.Targeting()
wait(100)
Wend
Sunduk=uo.getserial(Chest)
....

Просьба ногами не бить

Posted: 2005-01-06 18:48:25
by KrafteR
JIupus wrote:Ну как варинат можно сделать так: каждый раз при запуске скрипта, он будет выводит прицел и нужно будет указывать на сундук

Code: Select all

....
VAR Sunduk
.....
UO.Exec('addobject Chest')
While UO.Targeting()
wait(100)
Wend
Sunduk=uo.getserial(Chest)
....

Просьба ногами не бить

Спасибо за вариант, хочется услышать ещё мнения.

Posted: 2005-01-06 19:32:33
by Ugrum.
ок, убедил:) вот тебе еще вариант

Code: Select all

<....>
While UO.NS<=1
      UO.FindType(NS, -1, Sunduk)
       If UO.FindCount()==0 Then <------ начало
          UO.Print("NS not found, script terminated")
       else
          j = UO.GetQuantity( 'finditem' )
          If j > Kolvo Then
             UO.Print("I can use" + str( j ) + "NS")
          else
             UO.Print("I can't use" + str( j ) + "NS")
          Endif
         
          If Kolvo == 1 Then
             UO.FindType( NS )
             UO.MoveItem( 'finditem', '2', Sunduk )
             wait(500)
          Else
             UO.Grab( Str( Kolvo ), 'finditem' )
             wait(500)
          Endif
<------ здесь чего то нехватает?
<....>

Posted: 2005-01-06 19:36:40
by 666Man666
Накалякал от нефиг делать )
может не работать я не тестил... сам попробуй

Code: Select all

sub Magery()
var Sunduk='0x4021C658'
var NS='0x0F88'
var LastTimer, Kolvo=10
var CountReg=XX ## - сюда кол-во регов каторое чар будет заправлять.
REPEAT
While UO.NS >= Kolvo and NOT UO.Dead()
If UO.mana <= 10 Then
REPEAT
UO.UseSkill('Meditation')
LastTimer=UO.Timer()
UO.DeleteJournal()
REPEAT
Wait(300)
Until UO.InJournal("You are") or UO.InJournal("You lose") or UO.Timer()>LastTimer+200
Until UO.mana==UO.int or UO.Dead()
EndIf
UO.Cast('Poison','self')
Wait(3000)
Wend
UO.FindType(NS,'-1',Sunduk)
If UO.FindCount() Then
UO.MoveItem('finditem',CountReg,Sunduk)
Wait(2000)
EndIf
Until UO.Dead()
end sub
 

Posted: 2005-01-06 19:48:44
by KrafteR
Ugrum. wrote:ок, убедил:) вот тебе еще вариант

Code: Select all

<....>
<------ здесь чего то нехватает?
<....>

Так и не догадался чего же там не хватает. Хоть намекни...

Posted: 2005-01-06 19:53:50
by KrafteR
666Man666 wrote:Накалякал от нефиг делать )
может не работать я не тестил... сам попробуй

Code: Select all

sub Magery()
var Sunduk='0x4021C658'
var NS='0x0F88'
var LastTimer, Kolvo=10
var CountReg=XX ## - сюда кол-во регов каторое чар будет заправлять.
REPEAT
While UO.NS >= Kolvo and NOT UO.Dead()
If UO.mana <= 10 Then
REPEAT
UO.UseSkill('Meditation')
LastTimer=UO.Timer()
UO.DeleteJournal()
REPEAT
Wait(300)
Until UO.InJournal("You are") or UO.InJournal("You lose") or UO.Timer()>LastTimer+200
Until UO.mana==UO.int or UO.Dead()
EndIf
UO.Cast('Poison','self')
Wait(3000)
Wend
UO.FindType(NS,'-1',Sunduk)
If UO.FindCount() Then
UO.MoveItem('finditem',CountReg,Sunduk)
Wait(2000)
EndIf
Until UO.Dead()
end sub
 

var CountReg=XX ## - сюда кол-во регов каторое чар будет заправлять.
Куда заправлять так и не понял :) поподробней если нетрудно. А скрипт протестирую обязательно, но всё же вопрос топика остаёться. Рад, что получил пару вариантов... Может чему-нибудь научусь.

Posted: 2005-01-06 20:01:03
by 666Man666
KrafteR wrote:var CountReg=XX ## - сюда кол-во регов каторое чар будет заправлять.
Куда заправлять так и не понял :) поподробней если нетрудно.
а туда нужно вписать число, какое кол-во чар будет брать НС из сундука в пак... например

Code: Select all

var CountReg='200'

Posted: 2005-01-06 20:13:05
by KrafteR
666Man666 wrote:
KrafteR wrote:var CountReg=XX ## - сюда кол-во регов каторое чар будет заправлять.
Куда заправлять так и не понял :) поподробней если нетрудно.
а туда нужно вписать число, какое кол-во чар будет брать НС из сундука в пак... например

Code: Select all

var CountReg='200'

Понял.

Code: Select all

var Kolvo=10
вот эта строчка в моём скрипте.

Posted: 2005-01-06 20:30:34
by Ugrum.
KrafteR wrote:Так и не догадался чего же там не хватает. Хоть намекни...

намекаю

Code: Select all

<....> 
       If UO.FindCount()==0 Then
          <....>
       else
           <....>
          <------ здесь чего то нехватает?
<....>

Posted: 2005-01-06 21:38:33
by KrafteR
Ugrum. wrote:
KrafteR wrote:Так и не догадался чего же там не хватает. Хоть намекни...

намекаю

Code: Select all

<....> 
       If UO.FindCount()==0 Then
          <....>
       else
           <....>
          <------ здесь чего то нехватает?
<....>

Видно я деревянный. Прям заинтриговал, что там не хватает?

Re: Мини вопросик, по скрипту на магери.

Posted: 2005-01-06 22:06:42
by Ugrum.
KrafteR wrote:

Code: Select all

sub Magery()
VAR NS='0x0F88'
VAR Sunduk='0x4021C658'
VAR Kolvo=10
VAR k = 0, j
VAR LastTimer
while NOT UO.Dead()
While UO.NS<=1
UO.FindType(NS, -1, Sunduk)
If UO.FindCount()==0 Then                         <--------IF №1
UO.Print("NS not found, script terminated")
else
j = UO.GetQuantity( 'finditem' )
If j > Kolvo Then                                        <--------IF №2
UO.Print("I can use" + str( j ) + "NS")
else
UO.Print("I can't use" + str( j ) + "NS")
Endif                                               <--------END IF №1
If Kolvo == 1 Then                                      <--------IF №3
UO.FindType( NS )
UO.MoveItem( 'finditem', '2', Sunduk )
wait(500)
Else
UO.Grab( Str( Kolvo ), 'finditem' )
wait(500)
Endif                                               <--------END IF №2
wend
while UO.Mana>66
UO.Cast('Poison','self')
wait(3000)
wend
while UO.Mana<UO.Int
LastTimer=UO.Timer()
UO.UseSkill('Meditation')
repeat
wait(100)
until UO.InJournal("You are") OR UO.InJournal("You lose") OR UO.Timer()>LastTimer+200
UO.DeleteJournal()
wait(2000)
wend
Wend
end sub

сдаюсь. никогда неумел обьяснять(. не буду больше и пытаться.....
<--------END IF №3 ставить некуда.

Re: Мини вопросик, по скрипту на магери.

Posted: 2005-01-06 22:14:44
by KrafteR
Ugrum. wrote:
KrafteR wrote:

Code: Select all

sub Magery()
VAR NS='0x0F88'
VAR Sunduk='0x4021C658'
VAR Kolvo=10
VAR k = 0, j
VAR LastTimer
while NOT UO.Dead()
While UO.NS<=1
UO.FindType(NS, -1, Sunduk)
If UO.FindCount()==0 Then                         <--------IF №1
UO.Print("NS not found, script terminated")
else
j = UO.GetQuantity( 'finditem' )
If j > Kolvo Then                                        <--------IF №2
UO.Print("I can use" + str( j ) + "NS")
else
UO.Print("I can't use" + str( j ) + "NS")
Endif                                               <--------END IF №1
If Kolvo == 1 Then                                      <--------IF №3
UO.FindType( NS )
UO.MoveItem( 'finditem', '2', Sunduk )
wait(500)
Else
UO.Grab( Str( Kolvo ), 'finditem' )
wait(500)
Endif                                               <--------END IF №2
wend
while UO.Mana>66
UO.Cast('Poison','self')
wait(3000)
wend
while UO.Mana<UO.Int
LastTimer=UO.Timer()
UO.UseSkill('Meditation')
repeat
wait(100)
until UO.InJournal("You are") OR UO.InJournal("You lose") OR UO.Timer()>LastTimer+200
UO.DeleteJournal()
wait(2000)
wend
Wend
end sub

сдаюсь. никогда неумел обьяснять(. не буду больше и пытаться.....
<--------END IF №3 ставить некуда.

Оу пасиб...лень просто Ifы считать было. Ты думаешь из за этого ID- постоянно перевставлять надо было?*Чешет в голове, сомнивается.* За доработку скрипта огромное человеческое...