При отаке на вас нодо ОДЕТЬСЯ

Anything and all.

Moderators: Murderator+, Murderator

Post Reply
AntiKiller
Posts: 51
Joined: 2004-04-12 13:16:17

При отаке на вас нодо ОДЕТЬСЯ

Post by AntiKiller »

Люди, суть в том что я плаваю на лодке хочу сделать так что если меня атакует какаято гадость--то я отаковал её и запустил следовательно боевой скрипт с хиллингом.
Мне нужно пару или не пару строк))) чтобы он Атаковал ту гадость которая нападает!!! ПРоблема в том что Надпись в журнале я так понимаю должна быть последней или как?
Psimorph
Posts: 118
Joined: 2004-04-06 12:27:32
Contact:

Re: При отаке на вас нодо ОДЕТЬСЯ

Post by Psimorph »

Лучше сделать проверку журнала после каждого броска удочки, тоесть если в журнале появиться например You see a sea serpent тогда написать так
if UO.InJournal('You see a sea serpent ') then
killit()
endif
и тут уже пишешь скрипт атаки с хилингом.
Не забывай удалять журнал, а то он будет каждый раз находить You see a sea serpent эту фразу и пытаться найти монстра...воть
AntiKiller
Posts: 51
Joined: 2004-04-12 13:16:17

Re: При отаке на вас нодо ОДЕТЬСЯ

Post by AntiKiller »

Сенкс.
а удалять журнал в конце боя?
Psimorph
Posts: 118
Joined: 2004-04-06 12:27:32
Contact:

Re: При отаке на вас нодо ОДЕТЬСЯ

Post by Psimorph »

Журнал лучше чистить при любом удобном случае, главеное не переусердствовать
вот тебе пример скрипта атаки
тоесть когда у меня в журнале типа что я выловил си монстра у мя идёт скрипт атаки, вот он сам

Code: Select all

sub killsea()

   VAR LastTimer, Sea
   
   UO.UnSetcatchbag()
   LastTimer=UO.Timer()

   UO.UseType('0x1B76') ; Heater
   wait(1000)
   UO.UseType('0x13FF') ; Kryss
   wait(500)

   UO.DeleteJournal()
   UO.Exec('warmode 1')

   UO.FindType('0x0096',-1,'ground')
   Sea=UO.GetSerial('finditem')
   UO.Attack(Sea)
   repeat
      wait(1000)
      If UO.Life<90 Then
      repeat
         UO.Bandageself()
         wait(700)
         UO.UseType('0x1B76') ; Heater
         wait(1000)
         UO.UseType('0x13FF') ; Kryss
         wait(2500)
         UO.Attack(Sea)
      until UO.Life>=115
      Endif

; так много повторов атаки потому что монстр имеет привычку уплывать когда его подкоцаеш малёха
   until UO.IsNPC(Sea)==0
   wait(3000)


   UO.Attack(Sea)
   UO.FindType('0x0096',-1,'ground') ; ищет тип монстра
   If UO.GetQuantity('finditem')>0 Then ; если его больше нуля
      wait(500)
      UO.Attack(Sea)
      killsea()
   Endif

   UO.Exec('warmode 0')
   wait(1000)

   UO.Print("Sdoh skotina!")
   UO.SetEasyUO(99,'0')

   LastTimer=UO.Timer()
   if UO.Life<119 then
      repeat
         UO.BandageSelf()
         wait(4000)
                   until UO.Life>119 OR LastTimer+300<UO.Timer()

   UO.Print("Killing Done!")

end sub


воть тебе пример. но он под мой шард, тебе наверно не подойдёт. но сама идея >>>
AntiKiller
Posts: 51
Joined: 2004-04-12 13:16:17

Re: При отаке на вас нодо ОДЕТЬСЯ

Post by AntiKiller »

хых) круто написано)) но я новичёк)) я геморойно но уверенно делаю простенькие скрипты)
поэтому вопрос!
Как Встать в ВАР мод и потом как выйти из него!???
И как сделать чтоб он атаковал то что выловит(сиа серпент ватер элементаль и т.д.)
UO.Exec('warmode 1')
UO.Exec('warmode 0')
так понял это и есть в вар мод и из вара.
Тока остаётся чтоб он именно атакавал монстра.
а вот монстра как обозначить?
просто имя его?
Или узнать его TYPE и через findType потом атаковать?
Psimorph
Posts: 118
Joined: 2004-04-06 12:27:32
Contact:

Re: При отаке на вас нодо ОДЕТЬСЯ

Post by Psimorph »

sub killsea()

VAR Sea - даём имя переменной

UO.UnSetcatchbag() ; отменяем приёмный контейнер,на всякий, в моём скрипте надо

UO.UseType('0x1B76') ; Heater берём оружие и щит
wait(1000)
UO.UseType('0x13FF') ; Kryss
wait(500)

UO.DeleteJournal() ; чистим журнал
UO.Exec('warmode 1') ; идём в вар мод

UO.FindType('0x0096',-1,'ground') ; ищем на земле(ground) предмет типа 0x0096 с цветом -1 (тоесть любой)
Sea=UO.GetSerial('finditem') присваиваем к Sea сериал найденной вещи (команда на 1 выше) чтобы далее атаковать её. Тоесть атаковать си монстра
UO.Attack(Sea) ; непосредсвенно атакуем его
repeat ; повторять действие (надо указать сколько раз, либо ДО чего. У мя до смерти монстра)
wait(1000) пауза
If UO.Life<90 Then если жизни менее 90 идёт лечение
repeat повторять лечение до жизи более 115
UO.Bandageself() - лечить себя
wait(700)
UO.UseType('0x1B76') ; Heater щит
wait(1000)
UO.UseType('0x13FF') ; Kryss меч
wait(2500)
UO.Attack(Sea) атака монстра
until UO.Life>=115 закрытие repeat(повтора) условие его закрытия
Endif закрытие Если(if)


until UO.IsNPC(Sea)==0 закрытие repeat'a . Тоетсь когда НПЦ с сериал номером (который мы ваще брали) не существует, тоесть его ноль, то повтор закрываеться
wait(3000)


UO.Attack(Sea) атака монстра
UO.FindType('0x0096',-1,'ground') поиск монстра по типу
If UO.GetQuantity('finditem')>0 Then если нашёл больше нуля
wait(500) то
UO.Attack(Sea) атака опять его
killsea()
Endif закрытие если, если монстра ноль, то идёт далее, что ниже

UO.Exec('warmode 0') выключение вара
wait(1000)

UO.Print("Sdoh skotina!") уо пишет что монстр умер
loot() это скрипт лута, у меня свой...
wait(3000)


if UO.Life<119 then "если" жизни мало, лечиться до 119 хп (120 у меня максимум)
repeat
UO.BandageSelf() лечение
wait(4000)
until UO.Life>119 условие закрытия репита
endif конец "Если"
UO.DeleteJournal() чистка журнала
UO.Press(118) - F8 кнопка в УО забиндена на CloseGumps, тоесть закрытие всех открытых гампов, тоесть Папердол, корпус монстра итд чтобы не мешали рыбачить потом. Но если труп не открыт то это не зачем
UO.Print("Killing Done!") Уо пишет - всё круто =)
end sub конец

надеюсь более менее понятно.
зы. Я сам инжект неделю всего юзаю. Если что не так ,прошу не ругать!
AntiKiller
Posts: 51
Joined: 2004-04-12 13:16:17

Re: При отаке на вас нодо ОДЕТЬСЯ

Post by AntiKiller »

Слух! спасиб огромное здорово расписал!
Буду химичить)))
Часть у тебя возьму)))
Ещё раз спасибо!
Кое-что нового узнал!
AntiKiller
Posts: 51
Joined: 2004-04-12 13:16:17

Re: При отаке на вас нодо ОДЕТЬСЯ

Post by AntiKiller »

Слух вот сделал а терь не запускается, где-то крутая ошибка!!!!


#sub killsea()
#VAR Sea
#UO.Arm ("1") #òóò áóäåò ìå÷
#UO.DeleteJournal()
#UO.Exec('warmode 1')
#UO.FindType('0x0096',-1,'ground')
#Sea=UO.GetSerial('finditem')
#UO.Attack(Sea)
#repeat
#wait(1000)
#if UO.Heal<=75 then
#UO.Bandageself()
#wait(200)
#UO.Arm ("1")
#wait(3000)
#UO.Attack(Sea)
#Until UO.Life>=100
#endif

#Until UO.IsNPC(Sea)==0
#Wait(3000)

#UO.Attack(Sea)
#UO.FindType('0x0096',-1,'ground')
#If UO.GetQuantity('finditem')>0 Then
#Wait(500)
#UO.Attack(Sea)
#killsea()
#Endif

#UO.Exec('warmode 0')
#wait(1000)

#if UO.Life<114 then
#repeat
#UO.BandageSelf()
#wait(4000)
#until UO.Life>114
#endif
#UO.DeleteJournal()
#UO.Arm ("2") #òóò áóäåò óäî÷êà
#endsub
Psimorph
Posts: 118
Joined: 2004-04-06 12:27:32
Contact:

Re: При отаке на вас нодо ОДЕТЬСЯ

Post by Psimorph »

#repeat
#wait(1000)
#if UO.Heal<=75 then
#UO.Bandageself()
#wait(200)
#UO.Arm ("1")
#wait(3000)
#UO.Attack(Sea)
#Until UO.Life>=100
#endif

#Until UO.IsNPC(Sea)==0
#Wait(3000)


вот этот момент
У тебя не хватает одного Репита, который надо вставить тут
#if UO.Heal<=75 then
ТУТ
#UO.Bandageself()
чтобы повторялось лечение до #Until UO.Life>=100
вроде так
totus
Posts: 48
Joined: 2004-04-17 23:02:41
Location: Odessa, Ukraine
Contact:

no UO.Heal

Post by totus »

try using UO.Life

Искренне Ваш, Тотус Маньяковски.
...thinking - 37% complete...
AntiKiller
Posts: 51
Joined: 2004-04-12 13:16:17

Re: no UO.Heal

Post by AntiKiller »

Такс Это исправил, всё равно....
#Until UO.IsNPC(Sea)==0
#Wait(3000)
как тока это удалил сразу скрипт стал ВКЛЮЧАТЬСЯ! раньше не включался вооще.
у меня вопрос какой блок репита он закрывает???
т.к. там выше

repeat
wait(1000)
if UO.Life<=75 then
UO.Bandageself()
wait(200)
UO.Arm ("1")
wait(3000)
UO.Attack(Sea)
Until UO.Life>=100

Вот репеат закрыт!
а следующие эти две строчки! что они закрывают то?
AntiKiller
Posts: 51
Joined: 2004-04-12 13:16:17

Re: no UO.Heal

Post by AntiKiller »

блин я слепой ты написал а я тормоз! ща вставлю!]
AntiKiller
Posts: 51
Joined: 2004-04-12 13:16:17

Re: no UO.Heal

Post by AntiKiller »

Последний вопрос!
UO.FindType('0x0096',-1,'ground') ; ищем на земле(ground) предмет типа 0x0096 с цветом -1 (тоесть любой)

Это тип СИА серпент? Если да то тогда мне придётся ещё делать ТИП ВАТЕР элементаля и Скелета Кинга!
Или это пофиг чо?
Psimorph
Posts: 118
Joined: 2004-04-06 12:27:32
Contact:

Re: no UO.Heal

Post by Psimorph »

это мой тип си серпента, на твоём шарде он может быть другой. я ждал пока выловлю скелета или елементаля, потом узнавал их тип ,info и делал 3 скрипта под каждого монстра. и когда у мя в журнале было типа Вы выловили скелета у мя шло killskeletal если монстра killelem итд
AntiKiller
Posts: 51
Joined: 2004-04-12 13:16:17

Re: no UO.Heal

Post by AntiKiller »

Слух работает.
Тока Трабл!
Until UO.IsNPC(Sea)==0
он не обращает внимание на это , тобиш он подлечился и давай дальше скрипт считывать........
ТОбиш перестаёт драться...
Я заблочил эту строчку, тогда он полностью убивает тварь.
но конешно дальше потом не ловит.


repeat
UO.Attack(Sea)
wait(1000)
While UO.Life<=90
UO.Bandageself()
wait(200)
UO.Arm ("1")
wait(3000)
UO.Attack(Sea)
Wend
#Until UO.IsNPC(Sea)==0
Wait(1000)

Короче я сделал чтоб он лечился пока хитов у него меньше либо равно 90, так удобнее
Как видеш цикл РЕПЕАТ тока 1 остался.
И надо чтоб он останавливался на #Until UO.IsNPC(Sea)==0
но он как бы забивает на хто МОЛ 0 этих штук и дальше читает скрипт!!?
Чо делать?
AntiKiller
Posts: 51
Joined: 2004-04-12 13:16:17

Re: no UO.Heal

Post by AntiKiller »

Until UO.IsNPC(Sea)==0 может надо не так а
Until UO.IsNPC('Sea')==0 так сделать?
AntiKiller
Posts: 51
Joined: 2004-04-12 13:16:17

Re: no UO.Heal

Post by AntiKiller »

#=======> Áîé íà ëîäêå SEA
sub killsea()
VAR Sea
UO.Arm ("1") #òóò áóäåò ìå÷
UO.DeleteJournal()
UO.Exec('warmode 1')
UO.FindType('0x0096',-1,'ground')
Sea=UO.GetSerial('finditem')

repeat
UO.Attack(Sea)
wait(1000)
While UO.Life<=90
UO.Bandageself()
wait(200)
UO.Arm ("1")
wait(3000)
UO.Attack(Sea)
Wend
#Until UO.IsNPC(Sea)==0
#Wait(1000)

UO.Attack(Sea)
UO.FindType('0x0096',-1,'ground')
#If UO.GetQuantity('finditem')>0 Then
if UO.FindCount()>0 and Uo.GetDistance("finditem")<=2 then
Wait(1000)
UO.Attack(Sea)
killsea()
Endif
Until UO.Life<90


UO.Exec('warmode 0')
wait(1000)

if UO.Life<104 then
repeat
UO.BandageSelf()
wait(3000)
until UO.Life>104
endif


UO.DeleteJournal()
UO.Arm ("2") #òóò áóäåò óäî÷êà
endsub


Короче ипался ипался я ВОТ так заработала!
Да кстате ТИП СИА серпент у нас совпадает дай плиз ТИП ВАТЕР элементаля и Скелета!
Dzen
Posts: 29
Joined: 2004-04-08 16:06:21
Contact:

Post by Dzen »

лучше узнай их командой инфо: ,info
так не ошибешься -)
AntiKiller
Posts: 51
Joined: 2004-04-12 13:16:17

Post by AntiKiller »

Вот тока незагвоздка)) выловить их надо для началу!
А потом всёравно фигня в конце зацикливается и постоянно берёт удочку вруки и так безконечно*(((
вот полный код


sub killsea()
VAR Sea
UO.Arm ("1")
UO.DeleteJournal()
UO.Exec('warmode 1')
UO.FindType('0x0096',-1,'ground')
Sea=UO.GetSerial('finditem')

Kill:

repeat
UO.Attack(Sea)
wait(3000)
While UO.Life<=90
UO.Bandageself()
wait(200)
UO.Arm ("1")
wait(3000)
UO.Attack(Sea)
Wend
#Until UO.IsNPC(Sea)==0 -эта бяка неработает!!!!!!!!!!!!!!!!!!!!!!!!!!
#Wait(1000)

UO.FindType('0x0096',-1,'ground')
if UO.FindCount()>0 and Uo.GetDistance("finditem")<=2 then
Wait(3000)
Goto Kill
Endif
Until UO.Life>90


UO.Exec('warmode 0')
wait(1000)

if UO.Life<104 then
repeat
UO.BandageSelf()
wait(3000)
Until UO.Life>104
endif

UO.DeleteJournal()
Wait(1000)
UO.DisArm ("1")
Wait(2000)
endsub
Psimorph
Posts: 118
Joined: 2004-04-06 12:27:32
Contact:

Post by Psimorph »

Code: Select all

sub killsea()

   VAR LastTimer, Sea
   
   UO.UnSetcatchbag()
   LastTimer=UO.Timer()

   UO.UseType('0x1B76') ; Heater
   wait(1000)
   UO.UseType('0x13FF') ; Kryss
   wait(500)

   UO.DeleteJournal()
   UO.Exec('warmode 1')

   UO.FindType('0x0096',-1,'ground')
   Sea=UO.GetSerial('finditem')
   UO.Attack(Sea)
   repeat
      wait(1000)
      If UO.Life<90 Then
      repeat
         UO.Bandageself()
         wait(700)
         UO.UseType('0x1B76') ; Heater
         wait(1000)
         UO.UseType('0x13FF') ; Kryss
         wait(2500)
         UO.Attack(Sea)
      until UO.Life>=115
      Endif


   until UO.IsNPC(Sea)==0
   wait(3000)


   UO.Attack(Sea)
   UO.FindType('0x0096',-1,'ground')
   If UO.GetQuantity('finditem')>0 Then
      wait(500)
      UO.Attack(Sea)
      killsea()
   Endif

   UO.Exec('warmode 0')
   wait(1000)

   UO.Print("Sdoh skotina!")
   UO.SetEasyUO(99,'0')
   loot()
   wait(3000)

   LastTimer=UO.Timer()
   if UO.Life<119 then
      repeat
         UO.BandageSelf()
         wait(4000)
      until UO.Life>119 OR LastTimer+300<UO.Timer()
   endif
   UO.DeleteJournal()
   UO.Press(118)
   UO.Print("Killing Done!")
end sub


вот всё работает. Втсавь только своё оружие...
0x0096 - a deep sea serpent
0x0038 - скелет с топором
0X0032 - скелет без всего
0x0096 - a sea serpent
0x0010 - a water elemental
Post Reply