каст с книги

Ask for scripts here

Moderators: Murderator+, Murderator

Post Reply
lavdenis
Posts: 87
Joined: 2010-03-27 06:15:56
Contact:

каст с книги

Post by lavdenis »

Надо чтоб показывал реги которых не хватает. Подскажите уравнение или комманду

Code: Select all

Sub gh()
var i=0
var    a='UO.GA'
var    b='UO.GS'
 var   c='UO.MR'
var   d='UO.SS'
while not uo.Dead()
If a==i AND b==i AND c==i AND d==i  then
UO.Print('Нет'+' '+....) ### Вот тут что ввести чтоб он их выводил на экран по               названиям вообщем ПРИМЕР: Нет гарлика  гинсенга и т. д?           
return
wend
Endif
castBook('Greater Heal',11,'self')
Endsub
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: каст с книги

Post by Mirage »

Ну во первых такие хитросплетения я понимаю для win7 делаются? Отключи там тему аэро и будет тебе панелька с регами вверху.

А так если ты задумал всетаки скрипт ради скрипта то как то так надо:

Code: Select all

Sub gh()
   var i=0
   while not uo.Dead()
      If uo.counta(UO.GA)==i then
         UO.Print('Нет реагента 1)
         return
      Endif   
      If uo.counta(UO.GS)==i then
         UO.Print('Нет реагента 2)
         return
      Endif         
      castBook('Greater Heal',11,'self')
   wend
endsub


либо короче будет через цикл for next
lavdenis
Posts: 87
Joined: 2010-03-27 06:15:56
Contact:

Re: каст с книги

Post by lavdenis »

нееее это вата мож как нить через массив че типо этого. Но как реги которые надо из Sub gh()>>> передать в >>> sub castBook и сделать поиск в массиве только по ним а остальные которые не нужны для каста игнорить ????


Code: Select all


#############################
Sub gh()
     If (NOT (UO.Dead())) Then
          castBook('Greater Heal',11,'self',a,b,c,d) ##### где a b c и d это реги которые нужны
     Endif
Endsub
##############################


sub castBook(Spell,ManaNeed,Target,a,b,c,d)
  Var i
  DIM Text[8]
  Text[0] = 'гарлика'
  Text[1] = 'найтшайда'
  Text[2] = 'гинсенга'
  Text[3] = 'блэкерла'
  Text[4] = 'блудмоса'
  Text[5] = 'спайдкрсилка'
  Text[6] = 'мандрэйка'
  Text[7] = 'сульфураш'
  DIM Vars[8]
  Vars[0] = uo.count('Тут тип регов')  ##### или мож лучше сделать UO.GA?????
  Vars[1] = uo.count('                   ')  ##### или мож лучше сделать UO.NS?????
  Vars[2] = uo.count('                   ')  ##### или мож лучше сделать UO.GS?????
  Vars[3] = uo.count('                   ')  ##### или мож лучше сделать UO.BP?????
  Vars[4] = uo.count('                   ')  ##### или мож лучше сделать UO.BM?????
  Vars[5] = uo.count('                   ')  ##### или мож лучше сделать UO.SS?????
  Vars[6] = uo.count('                   ')  ##### или мож лучше сделать UO.MR?????
  Vars[7] = uo.count('                   ')  ##### или мож лучше сделать UO.SA?????
  while not uo.Dead()
    for i=0 to 7
      repeat
        if Vars[i]==0 then
          uo.print('Нет'+'  '+'Text[i]')###### вот тут будет показыватькаких не хватает
          return
        wend
      Endif
      If UO.Mana<ManaNeed then
        UO.Print("Маны нет лол!")
        drink('тотлов маны','0x0F08')
   
      UO.Cast(Spell,Target)
      Endif
Endsub
Last edited by lavdenis on 2010-07-08 05:26:56, edited 2 times in total.
lavdenis
Posts: 87
Joined: 2010-03-27 06:15:56
Contact:

Re: каст с книги

Post by lavdenis »

ну дак что где знатоки то?
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: каст с книги

Post by Mirage »

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

Code: Select all

#############################
sub gh()
   If (NOT (UO.Dead())) Then
      castBook('Greater Heal',11,'self',a,b,c,d)
   Endif
Endsub
##############################
Sub castBook(Spell,ManaNeed,Target,a,b,c,d)
   Var i
   DIM Text[8]
   Text[0] = 'гарлика'
   Text[1] = 'найтшайда'
   Text[2] = 'гинсенга'
   Text[3] = 'блэкерла'
   Text[4] = 'блудмоса'
   Text[5] = 'спайдкрсилка'
   Text[6] = 'мандрэйка'
   Text[7] = 'сульфураш'
   DIM Vars[8]
   Vars[0] = UO.GA
   Vars[1] = UO.NS
   Vars[2] = UO.GS
   Vars[3] = UO.BP
   Vars[4] = UO.BM
   Vars[5] = UO.SS
   Vars[6] = UO.MA
   Vars[7] = UO.SA
   for i=0 to 7
      if Vars[i]==0 then
         uo.print('Нет '+'Text[i]')
         return
      Endif
   next
   If UO.Mana<ManaNeed then
      UO.Print("Маны нет лол!")
      drink('тотлов маны','0x0F08')
      wait(100)
   Endif
   UO.Cast(Spell,Target)
Endsub
lavdenis
Posts: 87
Joined: 2010-03-27 06:15:56
Contact:

Re: каст с книги

Post by lavdenis »

Нее не покатит он мне покажет только один рег которого не хватает и остановится. к тому же не понятно нужен он для этого каста или нет.А надо чтоб все показал которых нет именно для этого каста. Нужно из предыдущего скрипта передать реги которые нужны и делать поиск в массиве только по ним но как мне a b c d cопоставить с массивом а потом uo.ignore() игнорить те которые не нужны????



там ошибка

Code: Select all

UO.MR
...вместо

Code: Select all

UO.MA
...и

Code: Select all

'Text[i]'
без кавычек
Last edited by lavdenis on 2010-07-08 05:48:13, edited 10 times in total.
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: каст с книги

Post by Mirage »

Ответил в ту тему тебе.

PS можно и крафт сделать в 1 строку которая будет шириной в 3 экрана.
kraft(предмет,меню, на предмет или просто юз инструмента, скидывать или нет продукты, если скидывать то куда, брать или не брать сырье, если брать то откуда, цвет сырья, цвет предмета крафта, есть или не есть, прятаться или не прятаться, атаковать или нет нападающего, логировать или нет производство...) и так далее. У меня даже есть чтото подобное. Поверь это изврат.
lavdenis
Posts: 87
Joined: 2010-03-27 06:15:56
Contact:

Re: каст с книги

Post by lavdenis »

Для начала объясню причину зачем. Зачем мне чтоб скрипт на каст работал полностью до последнего шага если у меня нет регов, нафига нагружать то-незачем. А чтоб показывало каких нет регов это чтоб видно лучше было а то клиентский видно плохо


Mirage wrote:Правда я не совсем понимаю зачем все настолько усложнять - любые рюшечки рано или позно приведут в падению скрипта и клиента. Они используются только при отладке скрипта. Дальнейшее заморачивание скрипта сломает моск. Можно конечно включить считывание с журнала наименование реагентов, добавить проверку на пустой regN номер или не пустой. Но возникает закономерный вопрос ЗАЧЕМ?
То что ты пытаешь скрафтить из достаточно простого скрипта универсальную автоматокрафтокастилку это понятно... Ну флаг в руки.
мне проще пользоваться 1-2 строковыми кастами забиндеными на хоткей

+) Дак я тогда на ассисте посижу с тем же успехом. Если у меня инжект падать будет из за скриптов для которых он сбсно и сделан дак нафига он тогда нужен


Mirage wrote:PS можно и крафт сделать в 1 строку которая будет шириной в 3 экрана.
kraft(предмет,меню, на предмет или просто юз инструмента, скидывать или нет продукты, если скидывать то куда, брать или не брать сырье, если брать то откуда, цвет сырья, цвет предмета крафта, есть или не есть, прятаться или не прятаться, атаковать или нет нападающего, логировать или нет производство...) и так далее. У меня даже есть чтото подобное. Поверь это изврат.


Это удобно!Я ж для себя делаю. Тогда нафиг инжа, PILOT и вперед?


Mirage wrote:Правда я не совсем понимаю зачем все настолько усложнять - любые рюшечки рано или позно приведут в падению скрипта и клиента.


Почему скрипт упадет то если он верный? Не понял может вообще тада с инжой не стоит связываться?
lavdenis
Posts: 87
Joined: 2010-03-27 06:15:56
Contact:

Re: каст с книги

Post by lavdenis »

сделал так,но


Code: Select all

Sub gh()
If (NOT (UO.Dead())) Then

castBook('Greater Heal',11,'self',UO.GA,-1,UO.GS,-1,-1,UO.SS,UO.MR,-1)


Endif
Endsub


Sub castBook(Spell,ManaNeed,Target,reg1,reg2,reg3,reg4,reg5,reg6,reg7,reg8)
   if reg1==0 then
      UO.Print("нет гарлика!")

endif
   if reg2==0 then
      UO.Print("нет найтшайда!")

endif
if reg3==0 then
      UO.Print("нет гинсенга!")

endif
if reg4==0 then
      UO.Print("нет блэкперла!")

endif
if reg5==0 then
      UO.Print("нет блудмоса!")

endif
if reg6==0 then
      UO.Print("нет спайдерсилка!")

endif
if reg7==0 then
      UO.Print("нет мандрэйка!")

endif
if reg8==0 then
      UO.Print("нет сульфураш!")
return
endif

  If UO.Mana<ManaNeed then
      UO.Print("Маны нет лол!")
      drink('тотлов маны','0x0F08')
      wait(1)
   Endif
   UO.Cast(Spell,Target)
Endsub



Но менее удобно чем через массив т.к. везде приходиться прописывать реги которые нужны и которые не нужны
Last edited by lavdenis on 2010-07-09 06:18:15, edited 2 times in total.
lavdenis
Posts: 87
Joined: 2010-03-27 06:15:56
Contact:

Re: каст с книги

Post by lavdenis »

чет мне не нравится
Last edited by lavdenis on 2010-07-09 18:32:30, edited 1 time in total.
lavdenis
Posts: 87
Joined: 2010-03-27 06:15:56
Contact:

Re: каст с книги

Post by lavdenis »

Вообщем я сделал так все таки получилось через массив +) Проблема решена

Code: Select all

sub gh()
    IF (NOT (UO.Dead()) AND (NOT (uo.waiting()))) THEN
         castBook('Greater Heal',11,'self',0,1,0,1,1,0,0,1)
    ENDIF
Endsub



Code: Select all

Sub castBook(Spell,ManaNeed,Target,a,b,c,d,e,f,g,h)
Var i,nullReg=0
DIM Reg[8]
Reg[0] = a
Reg[1] = b
Reg[2] = c
Reg[3] = d
Reg[4] = e
Reg[5] = f
Reg[6] = g
Reg[7] = h
DIM Text[8]
Text[0] = 'гарлика'
Text[1] = 'найтшайда'
Text[2] = 'гинсенга'
Text[3] = 'блэкперла'
Text[4] = 'блудмоса'
Text[5] = 'спайдкрсилка'
Text[6] = 'мандрэйка'
Text[7] = 'сульфураш'
DIM Vars[8]
Vars[0] = UO.GA
Vars[1] = UO.NS
Vars[2] = UO.GS
Vars[3] = UO.BP
Vars[4] = UO.BM
Vars[5] = UO.SS
Vars[6] = UO.MR
Vars[7] = UO.SA
for i=0 to 7
   
    IF reg[i]==0  AND Vars[i]==0 THEN
        UO.concolor(0x002B)
        UO.print('Нет'+' '+Text[i])
        UO.concolor(1088)
        nullReg=nullReg+1
       
    ENDIF
NEXT
IF nullReg>0 THEN
   Return
   ENDIF
IF UO.Mana<ManaNeed THEN
    UO.concolor(0x002B)
    UO.Print("Маны нет лол!")
    UO.concolor(1088)
    drink('тотлов маны','0x0F08')
   
    wait(1)
ENDIF

UO.Cast(Spell,Target)

Endsub
Beyonder
Expert!
Posts: 388
Joined: 2005-04-23 10:19:43
Contact:

Re: каст с книги

Post by Beyonder »

Во первых, Mirage - ты не прав. Такого рода универсальные функции очень даже полезные для скриптов. Я сам регулярно использую функции вроде той что пишет автор. Т.к. в будущем - если вдруг какая проблема - ты сразу знаешь где её искать. Плюс к этому, если тебе нужна еще какая-то дополнительная проверка - нужно править только одно место а не 40+ функций которые делают то-же самое.

Во вторых, насчёт самой проблемы. Я бы сделал функцию именно как предложил Mirage. Правда у него ошибка в скрипте была, вот исправленная версия:

Code: Select all

#############################
sub gh()
   If (NOT (UO.Dead())) Then
      castBook('Greater Heal',11,'self',a,b,c,d)
   Endif
Endsub
##############################
Sub castBook(Spell,ManaNeed,Target,a,b,c,d)
   Var i
   DIM Text[8]
   Text[0] = 'гарлика'
   Text[1] = 'найтшайда'
   Text[2] = 'гинсенга'
   Text[3] = 'блэкерла'
   Text[4] = 'блудмоса'
   Text[5] = 'спайдкрсилка'
   Text[6] = 'мандрэйка'
   Text[7] = 'сульфураш'
   DIM Vars[8]
   Vars[0] = UO.GA
   Vars[1] = UO.NS
   Vars[2] = UO.GS
   Vars[3] = UO.BP
   Vars[4] = UO.BM
   Vars[5] = UO.SS
   Vars[6] = UO.MA
   Vars[7] = UO.SA
   
   var status = 1
   for i=0 to 7
      if (Vars[i] == a) OR (Vars[i] == b) OR (Vars[i] == c) OR (Vars[i] == d) then
         if UO.Count(Vars[i])==0 then
            uo.print('Нет '+'Text[i]')
            status = 0
         Endif
      endif
   next
   if (status == 0) then
      return
   endif
   If UO.Mana<ManaNeed then
      UO.Print("Маны нет лол!")
      drink('тотлов маны','0x0F08')
      wait(100)
   Endif
   UO.Cast(Spell,Target)
Endsub


Вот так будет и нормально проверять реги, и выводить все которых не хватает.
Не проверял код, нет игры. Но вероятно должно работать (чтобы точно работал - запускай в новолуние).
lavdenis
Posts: 87
Joined: 2010-03-27 06:15:56
Contact:

Re: каст с книги

Post by lavdenis »

Code: Select all

if (Vars[i] == a) OR (Vars[i] == b) OR (Vars[i] == c) OR (Vars[i] == d) then

+) Сенки чет сразу не допер не знал как с массивом подругому связать
lavdenis
Posts: 87
Joined: 2010-03-27 06:15:56
Contact:

Re: каст с книги

Post by lavdenis »

Финал испарвил там чуток

Code: Select all

UO.MA
на

Code: Select all

UO.MR
и

Code: Select all

Text[i]
без кавычек

Code: Select all

sub gh()
     If (NOT (UO.Dead())AND (NOT (uo.waiting()))) Then
      castBook('Greater Heal',11,'self',0,1,0,1,1,0,0,1)
Endif
Endsub



Code: Select all

Sub castBook(Spell,ManaNeed,Target,a,b,c,d,e,f,g,h)
   Var i
   DIM Text[8]
   Text[0] = 'гарлика'
   Text[1] = 'найтшайда'
   Text[2] = 'гинсенга'
   Text[3] = 'блэкерла'
   Text[4] = 'блудмоса'
   Text[5] = 'спайдкрсилка'
   Text[6] = 'мандрэйка'
   Text[7] = 'сульфураш'
   DIM Vars[8]
   Vars[0] = UO.GA
   Vars[1] = UO.NS
   Vars[2] = UO.GS
   Vars[3] = UO.BP
   Vars[4] = UO.BM
   Vars[5] = UO.SS
   Vars[6] = UO.MR
   Vars[7] = UO.SA
   
   var status = 1
   for i=0 to 7
      if (Vars[i] == a) OR (Vars[i] == b) OR (Vars[i] == c) OR (Vars[i] == d) OR (Vars[i] == e)OR (Vars[i] == f)OR (Vars[i] == g)OR (Vars[i] == h) then
         if UO.Count(Vars[i])==0 then
            uo.print('Нет '+Text[i])
            status = 0
         Endif
      endif
   next
   if (status == 0) then
      return
   endif
   If UO.Mana<ManaNeed then
      UO.Print("Маны нет лол!")
      drink('тотлов маны','0x0F08')
      wait(100)
   Endif
   UO.Cast(Spell,Target)
Endsub
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: каст с книги

Post by Mirage »

тогда последние 10 копеек. Вот так визуально красивей.

Code: Select all

var printcolour = '1069'
sub gh()
     If NOT UO.Dead() Then ; uo.waiting() в такой конструкции не работает.
        castBook('Greater Heal',11,'self',0,1,0,1,1,0,0,1)
     Endif
endsub

Sub castBook(Spell,ManaNeed,Target,a,b,c,d,e,f,g,h)
   Var i
   DIM Text[8]
   Text[0] = 'гарлика'
   Text[1] = 'найтшайда'
   Text[2] = 'гинсенга'
   Text[3] = 'блэкерла'
   Text[4] = 'блудмоса'
   Text[5] = 'спайдкрсилка'
   Text[6] = 'мандрэйка'
   Text[7] = 'сульфураш'
   DIM Vars[8]
   Vars[0] = UO.GA
   Vars[1] = UO.NS
   Vars[2] = UO.GS
   Vars[3] = UO.BP
   Vars[4] = UO.BM
   Vars[5] = UO.SS
   Vars[6] = UO.MR
   Vars[7] = UO.SA
   
   var status = 1
   for i=0 to 7
      if (Vars[i] == a) OR (Vars[i] == b) OR (Vars[i] == c) OR (Vars[i] == d) OR (Vars[i] == e) OR (Vars[i] == f) OR (Vars[i] == g) OR (Vars[i] == h) then
         if UO.Count(Vars[i])==0 then
            uo.charprint(printcolour,'Нет '+Text[i])
            status = 0
         endif
      endif
   next
   if (status == 0) then
      return
   endif
   If UO.Mana<ManaNeed then
      uo.charprint(printcolour,'Маны нет, лол!')
      drink('тотлов маны','0x0F08')
      wait(100)
   Endif
   UO.Cast(Spell,Target)
Endsub


Beyonder спасибо за замечание и доработку.

PS чето я с утра не соображу как оно вообще работает ну да ладно...
Beyonder
Expert!
Posts: 388
Joined: 2005-04-23 10:19:43
Contact:

Re: каст с книги

Post by Beyonder »

Чего-то господа Вы как-то мой скрипт изуродовали.

Вот это - неверно:

Code: Select all

sub gh()
     If (NOT (UO.Dead())AND (NOT (uo.waiting()))) Then
      castBook('Greater Heal',11,'self',0,1,0,1,1,0,0,1)
Endif
Endsub


А вот это, верно:

Code: Select all

sub gh()
     If (NOT (UO.Dead())AND (NOT (uo.waiting()))) Then
          castBook('Greater Heal',11,'self',UO.MR,UO.BM,UO.NS,UO.GA,0,0,0,0)
     Endif
Endsub


Тоесть не еденички и нолики, а просто указываешь все ресурсы необходимые а скрипт сам их проверяет. Намного понятнее чем набор еденичек и ноликов. И потому у меня и было всего 4 параметра - я не видел серверов где для каста заклинания нужно больше 4-ех ингридиентов.
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: каст с книги

Post by Mirage »

вот я и пишу - сижу и втыкаю почему оно рабдотает (а оно работает). Видимо какието тайности недоступные мне... :mrgreen:

ЗЫ про 10010100 он сам придумая. Тут я не причем. :roll: Я имел ввиду перечисление регов как у Beyonder
lavdenis
Posts: 87
Joined: 2010-03-27 06:15:56
Contact:

Re: каст с книги

Post by lavdenis »

Beyonder wrote:Чего-то господа Вы как-то мой скрипт изуродовали.

Вот это - неверно:

Code: Select all

sub gh()
     If (NOT (UO.Dead())AND (NOT (uo.waiting()))) Then
      castBook('Greater Heal',11,'self',0,1,0,1,1,0,0,1)
Endif
Endsub


А вот это, верно:

Code: Select all

sub gh()
     If (NOT (UO.Dead())AND (NOT (uo.waiting()))) Then
          castBook('Greater Heal',11,'self',UO.MR,UO.BM,UO.NS,UO.GA,0,0,0,0)
     Endif
Endsub


Тоесть не еденички и нолики, а просто указываешь все ресурсы необходимые а скрипт сам их проверяет. Намного понятнее чем набор еденичек и ноликов. И потому у меня и было всего 4 параметра - я не видел серверов где для каста заклинания нужно больше 4-ех ингридиентов.


Нет это не работает. Мое работает
Beyonder
Expert!
Posts: 388
Joined: 2005-04-23 10:19:43
Contact:

Re: каст с книги

Post by Beyonder »

Изумительно.
lavdenis
Posts: 87
Joined: 2010-03-27 06:15:56
Contact:

Re: каст с книги

Post by lavdenis »

+))))))))))
Post Reply