Yoko
http://forum.yoko.com.ua/

помогите пжслта с атакои
http://forum.yoko.com.ua/viewtopic.php?f=17&t=15675
Page 1 of 4

Author:  lavdenis [ 2010-03-27 06:20:23 ]
Post subject:  помогите пжслта с атакои

Недавно начал разбираться со скриптами так что подскажите пжалста по атаке
Идея такая 1) выбираем цель
2) Если пункт 1) существует то кидаем в цель что то
3)пошла атака
4)если цель уже задана коммандои .buy то выполнение с пункта 2
Вот скрипт но как там сделать циклами или как
Var Enemy='Enemy'

sub war()
uo.print('Select Enemy:')
uo.exec('addobject Enemy')
while uo.targeting()
uo.Cast('Magic Arrow',Enemy)
uo.attack(Enemy)
endsub

а то при нажатии снова цель выбирать надо. Как сделать проверку по объекту что он уже определен
вообщем надо чтоб при повторном нажатии цель не выбиралась а сразу шла атака

Author:  Beyonder [ 2010-03-27 10:32:48 ]
Post subject:  Re: помогите пжслта с атакои

Во первых, не советую доставать модераторов двойными темами - могут и по ушам надавать.

Во вторых, ты бы мог без проблем написать этот скрипт сам прочитай ты парочку начальных уроков скриптинга.

В третьих, я сегодне добрый:

Code:
sub war()
    uo.print('Select Enemy:')
    addObjectWait('Enemy',0)
    uo.Cast('Magic Arrow',Enemy)
    uo.attack(Enemy)
endsub

;Функция работает как инжектовская addObject но ждёт пока игрок не укажет нормальную цель.
;Если ждём дольше timeout - скрипт прерывает работу. Timeout может быть 0 - значит ждать бесконечно
Sub addObjectWait(name, timeout)
    var timeLeft
   
   repeat
      UO.AddObject(name,0)
      
      if uo.waiting() then
         uo.canceltarget()
      endif
      UO.AddObject(name)
      
      timeLeft = timeout
      while (NOT uo.Targeting()) AND (timeLeft > 0)
         wait(50)
         timeLeft = timeLeft - 50
      wend
      while (uo.Targeting()) AND (timeLeft > 0)
         wait(50)
         timeLeft = timeLeft - 50
      wend
   until ((timeLeft > 0) OR (timeout <= 0)) AND (UO.GetSerial(name) > 0)
   
   return UO.GetSerial(name)
endsub

Author:  lavdenis [ 2010-03-27 13:54:43 ]
Post subject:  Re: помогите пжслта с атакои

Точно я еще и wend забыл СЕНКИ

Author:  lavdenis [ 2010-03-27 14:34:45 ]
Post subject:  Re: помогите пжслта с атакои

Только я не понял че он стрелку после щелчка не кидает а только при повторном клике

Author:  lavdenis [ 2010-03-27 15:27:30 ]
Post subject:  Re: помогите пжслта с атакои

мож первыи лучше так
Sub war()
uo.print('Select Enemy:')
addObjectWait('Enemy',0)
while uo.targeting()
wait(200)
Wend
uo.Cast('Magic Arrow',Enemy)
uo.attack(Enemy)
endsub

Author:  Beyonder [ 2010-03-27 17:11:40 ]
Post subject:  Re: помогите пжслта с атакои

Извиняюсь, не заметил ошибки в твоём скрипте и поэтому не исправил в своём:

Code:
sub war()
    uo.print('Select Enemy:')
    addObjectWait('Enemy',0)
    uo.Cast('Magic Arrow','Enemy') ;Тут и в следующей строке не хватает кавычек
    uo.attack('Enemy')
endsub

Author:  lavdenis [ 2010-03-27 19:44:30 ]
Post subject:  Re: помогите пжслта с атакои

Тогда Следущии вопрос
Я делаю скрипт чтоб все враги были в переменных.Если им атачить то таргеты в остальных скриптах на атаку будут попадать на врага автоматом так же можно сделать и добавлять друзеи и сразу хил на них в скрипте автоматом работать будет. Только в Objects добавить Frends и Enemy.


и так что мы имеем
переменные

Var manap='manap' (мана)
Var fscroll='fscroll' (скролы FlameStrike)
var Enemy='Enemy' (враг)
Var ManaNeed=20 ####На шарде где я играю надо минимум 20 маны чтоб прошел каст FS со скролла



в объекты прописываем fscroll(скролы ФС) manap(тотл маны) и Enemy(враг)
в Hotkey прописываем exec war(берем таргет на врага), exec FSS(фс во врага со сролла),exec castScroll(Общии каст для всех скролов на врага),exec manadrink(пить ману) и забиваем на клавишы

###само взятие цели только каст один черт через раз и лучшеб чтобы таргет не выползал если те опять надо Magic Arrow в него же кинуть. ну тут моно добавить наверно проверку по объекту, то есть если он уже определен тогда сразу кидать Magic Arrow вощем сам наверное разберусь

sub war()
uo.print('Select Enemy:')
addObjectWait('Enemy',0)
uo.Cast('Magic Arrow','Enemy') ;
uo.attack('Enemy')
endsub


########дальнеишая атака(Flame Strike со скролов )
sub FSS()

If UO.Mana<ManaNeed then
UO.Print("NO MANA!")#####нет маны у плеиера
endif

if uo.count(fscroll)<>0 then
castScroll('fscroll',20,Enemy)
uo.print('fscroll: '+STR(UO.Count('fscroll')))
else
UO.Print("NO SCROLLS!")
end if
Endsub
##############
sub castScroll(scrolID,ManaNeed,Target) #отдельныи скрипт на каст со скролов
UO.FindType(scrolID,-1,'my')#######!!!!! Тут не доработка лучше наверное по типу будет или где?
if UO.GetQuantity('finditem') then
if UO.Mana<ManaNeed then
manadrink()
endif
if UO.Mana>=ManaNeed then
UO.WaitTargetObject(Target)#####Тут не доработка лучше наверное по типу будет или где?
UO.UseObject('finditem')
endif
endif
endsub

###############
sub manadrink()#Отдельныи скрипт на питье маны
if uo.count(manap)<>0 then
uo.usetype('manap')
uo.print('manap: '+STR(UO.Count('manap')))
else
uo.print ("NO MANA POTIONS")####тотлы маны кончились
endsub



Вопрос все ли правильно в стуктуре и будет ли работать связка макросов sub Fss()>>sub castScroll()>>sub manadrink() (причем у меня все скрипты в одном фаиле) или как это моно организовать не через exec чтоб на клавиши лишнее не забивать а то я хз вчера только за скрипты сел так вообщем вывожу че куда (на php пишу) но не знаток.И как сделать чтоб проверка и каст был по типу скрола. Спасибо.

Author:  Beyonder [ 2010-03-27 22:30:03 ]
Post subject:  Re: помогите пжслта с атакои

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

В общем лучше делать так (это не рабочий скрипт, а просто пример чтобы понять идею):
Code:
var fs_scroll_type = "0x1234"
var human_type = "0x4321"

sub kill_human()
    UO.FindType(human_type,-1,'ground')
    UO.WaitTargetObject('finditem')
    UO.UseType(fs_scroll_type)
endsub


Короче как можно меньше использовать AddObject и AddType.

Если-же цель нужно взять с таргета, то это лучше всего делать так (базовыми средствами инжекта):
Code:
sub test()
    UO.AddObject('tempObject') #Добавляем таргет в временную инжектовую переменную 'tempObject'
    while (not UO.Targeting()) #Ждём появления прицела
        wait(50)
    wend
    while (UO.Targeting()) #Ждём исчезновения прицела (цель выбрана)
        wait(50)
    wend

    var enemy = UO.GetSerial('tempObject') #Записываем наш предмет в нормальную переменную а не в инжектовую кавычковую переменную
    UO.Attack(enemy) # Нормально используем её как обычную переменную и забываем о нашем temp Object
endsub


Тот-же код с помощью моей addObjectWait:
Code:
sub test()
    var enemy = addObjectWait('tempObject',0)
    UO.Attack(enemy)
endsub


Кстати да, вот тебе еще в помощь полезная функция addTypeWait. Работает так-же как и addObjectWait но добавляет не обьект а тип:
Code:
Sub addTypeWait(name,timeout)
    var object = addObjectWait('sys_typeobj',timeout)
    var objtype = UO.GetGraphics(object)
    UO.AddType(name,objtype)
    return objtype
endsub


Но не смотря на мой совет не использовать UO.AddObject, бывают случаи когда лучше всё-же его использовать. Использовать нужно тогда - когда тебе переменную нужно передать между несколькими отдельными скриптами. В твоём случае есть несколько скриптов - на бросание разных заклинаний, аттак и т.д. Так вот для врага лучше задействовать переменную инжекта:

Code:
sub selectEnemy()
    UO.Print('Select enemy')
    addObjectWait('Enemy',0)
    UO.Attack('Enemy')
endsub

sub castFS()
    UO.Cast('Flamestrike','Enemy')
endsub


Quote:
ну тут моно добавить наверно проверку по объекту, то есть если он уже определен тогда сразу кидать Magic Arrow вощем сам наверное разберусь


Легко сделать к примеру так:
Code:
sub addOrGetObject(name,distance,timeout)
    var oldObject = UO.GetSerial(name) ;Вытягиваем обьект из памяти инжи по его имени
    if (oldObject > 0) AND ((UO.GetDistance(oldObject) <= distance) OR (distance == -1)) then ;Если такой обьект есть и расстояние до него меньше указанного
        return oldObject ;то его и возвращаем
    else
        return addObjectWait(name,timeout) ;Иначе добавляем новый обьект (появляется таргет) в указанное имя
    endif
endsub


Тогда везде где нужно можно использовать его примерно так:
Code:
sub selectEnemy()
    addOrGetObject('Enemy',8,-1) ;Если враг уже есть, и находится на расстоянии 8 клеток - то просто его и используем, иначе - добавляем новый обьект. При этом последний параметр указывает что прицел будет висеть бесконечно
endsub

sub cast_fs()
    var enemy = addOrGetObject('Enemy',8,-1)
    UO.Cast('FlameStrike',enemy)
endsub


Далее:

Quote:
...
if uo.count(fscroll)<>0 then
castScroll('fscroll',20,Enemy)
uo.print('fscroll: '+STR(UO.Count('fscroll')))
else
UO.Print("NO SCROLLS!")
end if
Endsub
##############
sub castScroll(scrolID,ManaNeed,Target) #отдельныи скрипт на каст со скролов
UO.FindType(scrolID,-1,'my')#######!!!!! Тут не доработка лучше наверное по типу будет или где?
...


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

Code:
sub FSS()
    If UO.Mana<ManaNeed then
        UO.Print("NO MANA!")
    endif

    var Enemy = addOrGetObject('Enemy',8,-1) ;Вытягиваем нашего врага или добавляем нового если старый убежал или умер

    if uo.count(fscroll)<>0 then
        castScroll(fscroll,20,Enemy) ;Передаём просто тип свитка и нашего найденного врага
        uo.print('fscroll: '+STR(UO.Count(fscroll)))
    else
        UO.Print("NO SCROLLS!")
    end if
Endsub

sub castScroll(scrolType,ManaNeed,Target) #здесь к нам прийдёт уже не ИД а тип свитка
    UO.FindType(scrolType,-1,'my')
    if UO.GetQuantity('finditem') then
        if UO.Mana<ManaNeed then
            manadrink()
        endif
        if UO.Mana>=ManaNeed then
            UO.WaitTargetObject(Target) ;Ничего не надо менять, враг то у нас один, зачем нам его тип?
            UO.UseObject('finditem')
        endif
    endif
endsub


Думаю так проблема решится. Теперь запустив exec FSS получится такой ход проверок:
1) Если враг уже был кем-то выбран - будем использовать его.
2) Если враг не был выбран или убежал очень далеко (8 тайлов в скрипте выше) - покажем прицел, и игрок выберет нового врага.
3) В этой точке враг у нас уже точно есть (после первых двух пунктов) в переменной. Так что делаем с ним что хотим.

Quote:
Вопрос все ли правильно в стуктуре и будет ли работать связка макросов sub Fss()>>sub castScroll()>>sub manadrink()

Не вижу почему она не должна работать :)

Quote:
И как сделать чтоб проверка и каст был по типу скрола.

Так-же как и везде:
Code:
UO.FindType(scrollType,scrollColor,container)
if (UO.FindCount()) then
    UO.WaitTarget....
    UO.UseObject('finditem') ;В файндайтеме у нас сидит последний найденный айтем
endif


Вроде всё ответил. Если что пропустил - спрашивай. Люблю помогать тем кто хочет сам что-то понять, а то развелось тут всяких "помогите доработать мининг"...

Author:  lavdenis [ 2010-03-28 06:36:29 ]
Post subject:  Re: помогите пжслта с атакои

Beyonder wrote:
Во первых, не рекоммендую использовать закладки обьектов и типов в инжекте. Лучше все нужные типы прописывать сразу в скрипт. Так будет меньше проблем при передаче сложного скрипта кому-то другому или на другую инжу.



Согласен скролы и тотлы маны лучше по типу т.к он не меняется

Как я пропишу например тип Flame strike скроллов сразу в скрипт на каст если у меня скрипт на каст для всех скролов один тогда он у меня по одному только скролу кастить будет или ты имеешь ввиду что типы будут уже прописаны в саму атаку со скрола
Например:

sub FSS()
Var fscroll='тип скролла' ############ Здесь что ли?
If UO.Mana<ManaNeed then
UO.Print("NO MANA!")
endif

var Enemy = addOrGetObject('Enemy',8,-1)

if uo.count(fscroll)<>0 then
castScroll(fscroll,20,Enemy)
uo.print(fscroll+': '+STR(UO.Count(fscroll)))
else
UO.Print("NO SCROLLS!")
end if
Endsub


sub castScroll(scrolType,ManaNeed,Target) #здесь к нам прийдёт уже не ИД а тип свитка
UO.FindType(scrolType,-1,'my')
if UO.GetQuantity('finditem') then
if UO.Mana<ManaNeed then
manadrink()
endif
if UO.Mana>=ManaNeed then
UO.WaitTargetObject(Target)
UO.UseObject('finditem')
endif
endif
endsub

sub manadrink() ###и куда тогда прописывать type бутылки маны она ведь этот скрипт общии и должен работать как с отдельнои кнопки так и в связке на все касты

Var manap='тип бутылки' ### и сюда ???? Ну да вообще то все норм Поняна
if uo.count(manap)<>0 then
uo.usetype('manap')
uo.print('manap+': '+STR(UO.Count('manap')))
else
uo.print ("NO MANA POTIONS")
endsub




Оппп в конце вроде допер так и будет похоже или поправь. А как же быть с переменнои ManaNeed ведь она распространяется не только на каст Flame Strike но также задеиствована и в скрипте на каст sub castScroll() и примеру каста Light там будет совсем другое нужное кол-во маны.


Аааа вроде наверно так

sub FSS()
Var fscroll='тип скролла'
Var ManaNeed='нужное колво маны на каст'
If UO.Mana<ManaNeed then
UO.Print("NO MANA!")
endif

var Enemy = addOrGetObject('Enemy',8,-1)

if uo.count(fscroll)<>0 then
castScroll(fscroll,20,Enemy)
uo.print('fscroll: '+STR(UO.Count(fscroll)))
else
UO.Print("NO SCROLLS!")
end if
Endsub

Author:  lavdenis [ 2010-03-28 07:52:57 ]
Post subject:  Re: помогите пжслта с атакои

И так что мы имеем в сумме
#Вопрос по ManaNeed
####################################

sub FSS()
Var fscroll='тип скролла'
Var ManaNeed=20
If UO.Mana<ManaNeed then
UO.Print("NO MANA!")
endif

var Enemy = addOrGetObject('Enemy',8,-1)

if uo.count(fscroll)<>0 then
castScroll(fscroll,20,Enemy)
uo.print('fscroll: '+STR(UO.Count(fscroll)))
else
UO.Print("NO SCROLLS!")
end if
Endsub

#####################################
sub addOrGetObject(name,distance,timeout)
var oldObject = UO.GetSerial(name)
if (oldObject > 0) AND ((UO.GetDistance(oldObject) <= distance) OR (distance == -1)) then
return oldObject
else
return addObjectWait(name,timeout)
endif
endsub

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

sub castScroll(scrolType,ManaNeed,Target)
UO.FindType(scrolType,-1,'my')
if UO.GetQuantity('finditem') then
if UO.Mana<ManaNeed then
manadrink()
endif
if UO.Mana>=ManaNeed then
UO.WaitTargetObject(Target)
UO.UseObject('finditem')
endif
endif
endsub

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


sub manadrink()
Var manap='тип бутылки'
if uo.count(manap)<>0 then
uo.usetype('manap')
uo.print('manap: '+STR(UO.Count('manap')))
else
uo.print ("NO MANA POTIONS")
endsub

#####################################
Итого связка из 5-ти скриптов (sub war()>>sub FSS()>>sub addOrGetObject(...)>>sub castScroll(...)>>sub manadrink()) только с ManaNeed не все понятно и с взятием таргета sub war() еще разбираюсь. То есть осталось забить на кнопки exec manadrink и exec FSS и по идее должно работать, но потестить пока не могу т.к. работу работаю. Вообщем отпишу.А пока и на этом огромное спасибище за труд.Хммм...Раньше все зависило от быстроты рук теперь от знания програмных языков +)Ж

Сюдаже моно забубенить авто атаку
sub AutoWar()
var Enemy = addTypeWait('Enemy',8,-1) ###Получает тип
repeat
if UO.InJournal("attacking you") Then
Enemy = UO.JournalSerial(UO.InJournal("attacking you")-1)
enif
if (Какая переменная на тип,objtype?) =0x0190 and (objtype???)=0x0191 Then ###Проверка Если человек тогда атачит
UO.Cast('Magic Arrow',Enemy)
uo.attack('Enemy')
UO.DeleteJournal()
endif
Wait(2000)
Else
until false
endsub


Sub addTypeWait(name,distance,timeout)###Определяет тип
var object = addObjectWait('sys_typeobj',timeout)
var objtype = UO.GetGraphics(object)
UO.AddType(name,objtype)
return objtype
endsub

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

Author:  Beyonder [ 2010-03-28 14:10:11 ]
Post subject:  Re: помогите пжслта с атакои

1) Насчёт типов, лучше всего описывать такие типы отдельно в самом начале скрипта. Они тогда будут как константы.
К примеру:

Code:
var scrollType = "0x1234" #Обьявляем вне функций, в начале файла все типы которые нам нужны. 

sub funct()
    UO.DoSomething(scrollType)
endsub


2) Насчёт маны, вроде всё верно, только ты забыл кое-что:
Code:
Var fscroll='тип скролла'

sub FSS()
    Var ManaNeed=20
    If UO.Mana<ManaNeed then
        UO.Print("NO MANA!")
    endif

    var Enemy = addOrGetObject('Enemy',8,-1)

    if uo.count(fscroll)<>0 then
        castScroll(fscroll,ManaNeed,Enemy) #### Тут вероятно тоже ManaNeed нужно. Я бы вообще верхний if mana < mananeed перенёс в функцию castscroll...
        uo.print('fscroll: '+STR(UO.Count(fscroll)))
    else
        UO.Print("NO SCROLLS!")
    end if
Endsub


Насчёт автоматики:
Code:
sub AutoWar()
    var Enemy ### = addTypeWait('Enemy',8,-1) ## А зачем тебе этот тип? Ты его нигде не используешь :)
    repeat
        if UO.InJournal("attacking you") Then
            Enemy = UO.JournalSerial(UO.InJournal("attacking you")-1)
        endif
        if (UO.GetGraphics(Enemy) == '0x0190') OR (UO.GetGraphics(Enemy) == '0x0191') Then ###Примерно так. Кстати, типы всегда лучше писать в кавычках.
            UO.Cast('Magic Arrow',Enemy)
            uo.attack(Enemy) #Без кавычек, ты же обьект атакуешь а не тип
            UO.DeleteJournal()
        endif
        Wait(2000)
    until UO.Dead()
endsub

В целом никаких проблем не будет. Всё будет отлично работать.
У меня даже когда-то давно был скрипт на полную автоматику, там еще и встроенная ходилка была которая сама бегала за врагом, сбивала стрелками его заклинания, рубила его, лечилась и т.д. Что-то вроде ПвП бота. Тоже никогда не крашила.

В инжекте самое опасное место - поиск обьектов на земле и их игнорирование. Тоесть если на земле дофига обьектов, и ты делаешь UO.FindType(...,...,'ground'), то рано или поздно инжа крашнет. Или если ты юзаешь UO.Ignore или UO.IgnoreReset() то тоже крашнет. Все остальные функции обычно стабильно работают.

Author:  lavdenis [ 2010-03-28 16:13:13 ]
Post subject:  Re: помогите пжслта с атакои

Beyonder wrote:
У меня даже когда-то давно был скрипт на полную автоматику, там еще и встроенная ходилка была которая сама бегала за врагом, сбивала стрелками его заклинания, рубила его, лечилась и т.д. Что-то вроде ПвП бота. Тоже никогда не крашила.


+))))Ж Включил и забыл.

Beyonder wrote:
В инжекте самое опасное место - поиск обьектов на земле и их игнорирование. Тоесть если на земле дофига обьектов, и ты делаешь UO.FindType(...,...,'ground'), то рано или поздно инжа крашнет. Или если ты юзаешь UO.Ignore или UO.IgnoreReset() то тоже крашнет. Все остальные функции обычно стабильно работают.


Интересно что получится у меня с ресом на друга
script.dll - не твое добро?
Дааа с кавычками виновен

Author:  lavdenis [ 2010-03-28 16:18:22 ]
Post subject:  Re: помогите пжслта с атакои

Я смотрю тут и из за бугра педалят +)))))

Author:  lavdenis [ 2010-03-28 16:38:06 ]
Post subject:  Re: помогите пжслта с атакои

Beyonder wrote:
Var fscroll='тип скролла'

sub FSS()
Var ManaNeed=20
If UO.Mana<ManaNeed then
UO.Print("NO MANA!")
endif

var Enemy = addOrGetObject('Enemy',8,-1)

if uo.count(fscroll)<>0 then
castScroll(fscroll,ManaNeed,Enemy) #### Тут вероятно тоже ManaNeed нужно. Я бы вообще верхний if mana < mananeed перенёс в функцию castscroll...
uo.print('fscroll: '+STR(UO.Count(fscroll)))
else
UO.Print("NO SCROLLS!")
end if
Endsub




Неа.+) Как так то в castScroll у меня ведь каст скролл общии а как скрипт на другои тогда каст допустим молнии там ManaNeed=10 и как быть чет у меня после работа башка не варит вообще не вывожу. Пример
sub Light()
Var lightscroll='тип скролла'
Var ManaNeed=10
If UO.Mana<ManaNeed then
UO.Print("NO MANA!")
endif

var Enemy = addOrGetObject('Enemy',8,-1)

if uo.count( lightscroll)<>0 then
castScroll( lightscroll,20,Enemy)
uo.print(' lightscroll: '+STR(UO.Count( lightscroll)))
else
UO.Print("NO SCROLLS!")
end if
Endsub


sub castScroll(scrolType,ManaNeed,Target)
UO.FindType(scrolType,-1,'my')
if UO.GetQuantity('finditem') then
if UO.Mana<ManaNeed then
manadrink()
endif
if UO.Mana>=ManaNeed then
UO.WaitTargetObject(Target)
UO.UseObject('finditem')
endif
endif
endsub




он ведь тож будет на CastScroll ссылаться ManaNeed у нас две а переменная и значение одно а надо чтоб значения менялись. По моему это элементарно но я че то залип надо наверное отдохнуть. Поиду пивалдер бушлатить +)))))

Author:  lavdenis [ 2010-03-29 04:46:45 ]
Post subject:  Re: помогите пжслта с атакои

Вроде появилась мысль но моно ли передать переменную между скриптами????. То есть от глобальнои переменнои>>основоному скрипту>>вспомогательному скрипту.uo.SetGlobal????

Например:

Var i=ManaNeed
sub FSS()
Var i=20
If UO.Mana<ManaNeed then
UO.Print("NO MANA!")
endif
...
Endsub

sub castScroll(scrolType,ManaNeed,Target)
Var ... ???????????????????????????????
UO.FindType(scrolType,-1,'my')
if UO.GetQuantity('finditem') then
if UO.Mana<ManaNeed then
manadrink()
endif
if UO.Mana>=ManaNeed then
UO.WaitTargetObject(Target)
UO.UseObject('finditem')
endif
endif
endsub

Author:  Beyonder [ 2010-03-29 08:13:07 ]
Post subject:  Re: помогите пжслта с атакои

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

Author:  lavdenis [ 2010-03-29 09:28:45 ]
Post subject:  Re: помогите пжслта с атакои

sub FSS()
Var fscroll='тип скролла'
Var ManaNeed=20 # одна переменная
If UO.Mana<ManaNeed then #тут проверка на нужное кол-во маны героя
UO.Print("NO MANA!")
endif

var Enemy = addOrGetObject('Enemy',8,-1)

if uo.count(fscroll)<>0 then
castScroll(fscroll,20,Enemy)
uo.print('fscroll: '+STR(UO.Count(fscroll)))
else
UO.Print("NO SCROLLS!")
end if
Endsub


sub castScroll(scrolID,ManaNeed,Target) #отдельныи скрипт на каст со скролов
UO.FindType(scrolID,-1,'my')
if UO.GetQuantity('finditem') then
if UO.Mana<ManaNeed then # здесь он ману пьет автоматом если кол-во маны героя меньше нужного кол ва маны(так вот скрипт на каст общии а переменная то тут окуда возьмется надо чтоб нужное колво маны передавалось из предидущего или как то по другому)
manadrink()
endif
if UO.Mana>=ManaNeed then ## Тут тоже самое
UO.WaitTargetObject(Target)
UO.UseObject('finditem')
endif
endif
endsub


чтоб моно было не париться а сразу допустим
sub Drugoi_kakoinit_kast()
Var fscroll='тип скролла'
Var ManaNeed=10 #### Отсюда и в общий на каст
If UO.Mana<ManaNeed then #тут проверка на нужное кол-во маны героя
UO.Print("NO MANA!")
endif


sub castScroll(scrolID,ManaNeed,Target) #отдельныи скрипт на каст со скролов
UO.FindType(scrolID,-1,'my')
if UO.GetQuantity('finditem') then
if UO.Mana<ManaNeed then ##### сюда!!!
manadrink()
endif
if UO.Mana>=ManaNeed then#### и сюда!!!
UO.WaitTargetObject(Target)
UO.UseObject('finditem')
endif
endif
endsub


вообщем чтоб кол во маны нужнои шло из скриптов на касты в общии каст со скролов sub castScroll Var ManaNeed=10>>>>>>>sub castScroll(scrolID,ManaNeed,Target) ManaNeed

Author:  lavdenis [ 2010-03-29 10:31:11 ]
Post subject:  Re: помогите пжслта с атакои

минуточку но вроде ведь все же правильно

sub FSS()

Var ManaNeed=20######1)Отсюда
If UO.Mana<ManaNeed then >>>1)Сюда
UO.Print("NO MANA!")
endif

var Enemy = addOrGetObject('Enemy',8,-1)

if uo.count(fscroll)<>0 then
castScroll(fscroll,20,'Enemy') #####2) и отсюда
uo.print('fscroll: '+STR(UO.Count(fscroll)))
else
UO.Print("NO SCROLLS!")
end if
Endsub


sub castScroll(scrolType,ManaNeed,Target)####2) сюда
UO.FindType(scrolType,-1,'my')
if UO.GetQuantity('finditem') then
if UO.Mana<ManaNeed then 2)####### и сюда Тут у меня сомнение
manadrink()
endif
if UO.Mana>=ManaNeed then ####2)и сюда Тут у меня сомнение
UO.WaitTargetObject(Target)
UO.UseObject('finditem')
endif
endif
endsub


дак че я парюсь или нет??

Author:  Beyonder [ 2010-03-29 12:08:51 ]
Post subject:  Re: помогите пжслта с атакои

Дык я поэтому и спросил, вроде всё есть и всё передаётся, а ты куда-то еще передать её хочешь :)

Всё верно, только в кастскролл я бы передал так:

castScroll(fscroll,ManaNeed,'Enemy')
Зачем в двух местах 20 писать если можно переменную использовать...

Author:  lavdenis [ 2010-03-29 13:09:32 ]
Post subject:  Re: помогите пжслта с атакои

То есть если я правильно понял такое тоже покатит? (добавляем еще один каст по скролам)

sub FSS()

Var ManaNeed=20
If UO.Mana<ManaNeed then
UO.Print("NO MANA!")
endif

var Enemy = addOrGetObject('Enemy',8,-1)

if uo.count(fscroll)<>0 then
castScroll(fscroll,ManaNeed,'Enemy')
uo.print('fscroll: '+STR(UO.Count(fscroll)))
else
UO.Print("NO SCROLLS!")
end if
Endsub

sub Light()

Var ManaNeed=10
If UO.Mana<ManaNeed then
UO.Print("NO MANA!")
endif

var Enemy = addOrGetObject('Enemy',8,-1)

if uo.count(fscroll)<>0 then
castScroll(fscroll,ManaNeed,'Enemy')
uo.print('fscroll: '+STR(UO.Count(fscroll)))
else
UO.Print("NO SCROLLS!")
end if
Endsub






sub castScroll(scrolType,ManaNeed,Target)
UO.FindType(scrolType,-1,'my')
if UO.GetQuantity('finditem') then
if UO.Mana<ManaNeed then
manadrink()
endif
if UO.Mana>=ManaNeed then
UO.WaitTargetObject(Target)
UO.UseObject('finditem')
endif
endif
endsub

Page 1 of 4 All times are UTC+02:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/