Боевые.

Ask for scripts here

Moderators: Murderator+, Murderator

Post Reply
EvolutioN
Posts: 15
Joined: 2011-03-04 05:58:46

Боевые.

Post by EvolutioN »

Помогите пожалуйста. При чар атакует чара-куклу с луком, потом лечит его, но почему то лечит 1-2 раза и снова бьет. Все хп не вылечивает. В чем тут проблема?
Заранее благодарю.

Code: Select all

sub main()
var selfID = UO.GetSerial('self')
var ID = '0x004CFD60'                             ## ID персонажа которого бить надо
UO.Exec("exec reconnector")
UO.Exec("setarm wp")
while not UO.Dead()
     if GetHP(ID) < 60 then
          uo.Exec('warmode 0')
          UO.Disarm()
          while GetHP(ID) < 60
               uo.Exec('warmode 0')
               Healing(ID)
               wait(100)
          wend
          UO.Exec("arm wp")
          wait(1000)
          uo.Exec('warmode 1')
     end if
     wait(500)
     UO.Attack(ID)
wend
end sub

sub GetHP(ID)
var maxhp, result
UO.GetStatus(ID)
maxhp = UO.GetMaxHP(ID)
if maxhp > 0 then
     result = (UO.GetHP(ID) * 150) / maxhp
else
     result = 0
end if
return result
end sub

sub Healing(ID)
var b=0x0E21
;if UO.Life < UO.Str then
     UO.WaitTargetObject(ID)
     UO.UseType(b)
     CheckLag()
     uo.Exec('warmode 0')
     wait(1000)
     uo.Exec('warmode 0')
     wait(1000)
     uo.Exec('warmode 0')
     wait(1000)
     return true
;end if
return true
end sub

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

sub DeleteJournal(msg)
var num
while UO.InJournal(msg)
     num = UO.InJournal(msg)
     UO.SetJournalLine(num - 1,' ')
wend
end sub

sub CheckBandage()
uo.WaitTargetType('0x1008')
uo.UseType('0x0E20')
wait(1000)
end sub


sub Reconnector()
var RFlag
RFlag = 1
Repeat
While (UO.ObjAtLayer('Bpack') == '')
if RFlag Then
RFlag = 0
endif
Wait(20000) # WorldSave Protection
UO.Say('')
Wait(3000)
UO.Say('')
Wait(3000)
UO.Say('')
Wait(3000)
UO.LDblClick(357,164)
UO.LClick(616,459)
Wait(3000)
WEnd
Wait(3000)
if (RFlag == 0) Then
RFlag = 1
endif
Until false
end sub

EvolutioN
Posts: 15
Joined: 2011-03-04 05:58:46

Re: Боевые.

Post by EvolutioN »

subj.
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: Боевые.

Post by Mirage »

Code: Select all

sub main()
	var selfID = UO.GetSerial('self')
	var ID = '0x004CFD60'                             ## ID персонажа которого бить надо
	var MAXHP = 150 ## максимальное значение жизни у цели. Отрегулируй.
	UO.Exec("exec reconnector")
	UO.Exec("setarm wp")
	while not UO.Dead()
		if GetHP(ID) < 60 then
			uo.Exec('warmode 0')
			UO.Disarm()
			while GetHP(ID) < MAXHP
				if  UO.WarMode()==1 then
					UO.WarMode(0)
				endif
				Healing(ID)
				wait(100)
			wend
			UO.Exec("arm wp")
			wait(1000)
			uo.warmode (1)
		end if
		wait(500)
		UO.Attack(ID)
	wend
end sub
sub GetHP(ID)
	var maxhp, result
	UO.GetStatus(ID)
	maxhp = UO.GetMaxHP(ID)
	if maxhp > 0 then
		result = (UO.GetHP(ID) * 150) / maxhp
	else
		result = 0
	end if
	return result
end sub
sub Healing(ID)
	var b=0x0E21
	if  UO.WarMode()==1 then
		UO.WarMode(0)
	endif
	UO.WaitTargetObject(ID)
	UO.UseType(b)
	CheckLag()
	wait(3000)
	return true
end sub
sub CheckLag()
	DeleteJournal('ackpack')
	repeat
		UO.Click('backpack')
		wait(500)
	until UO.InJournal('ackpack')
end sub
sub DeleteJournal(msg)
	var num
	while UO.InJournal(msg)
		num = UO.InJournal(msg)
		UO.SetJournalLine(num - 1,' ')
	wend
end sub
sub CheckBandage()
	uo.WaitTargetType('0x1008')
	uo.UseType('0x0E20')
	wait(1000)
end sub
sub Reconnector()
	var RFlag
	RFlag = 1
	Repeat
		While (UO.ObjAtLayer('Bpack') == '')
			if RFlag Then
				RFlag = 0
			endif
			Wait(20000) # WorldSave Protection
			UO.Say('')
			Wait(3000)
			UO.Say('')
			Wait(3000)
			UO.Say('')
			Wait(3000)
			UO.LDblClick(357,164)
			UO.LClick(616,459)
			Wait(3000)
		WEnd
		Wait(3000)
		if (RFlag == 0) Then
			RFlag = 1
		endif
	Until false
end sub
EvolutioN
Posts: 15
Joined: 2011-03-04 05:58:46

Re: Боевые.

Post by EvolutioN »

Спасибо :) Теперь не могу понять почему он хватает молоток, а если нет молотка то бьет рукой ...
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: Боевые.

Post by Mirage »

у тебя запоминается первое оружие которое есть в руках у чара.
UO.Exec("setarm wp")
EvolutioN
Posts: 15
Joined: 2011-03-04 05:58:46

Re: Боевые.

Post by EvolutioN »

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

Re: Боевые.

Post by Mirage »

вместо
UO.Exec("setarm wp")
впиши

Code: Select all

var x = uo.GetGraphic(uo.ObjAtLayer('Lhand'))
var y = uo.GetGraphic(uo.ObjAtLayer('Rhand'))
вместо
UO.Exec("arm wp")
впиши

Code: Select all

    uo.Equipt('Lhand',x)
    uo.Equipt('Rhand',y) 
usetype не очень хорошо работает с даггерами - появляется прицел, который надо сбивать... Возня.
EvolutioN
Posts: 15
Joined: 2011-03-04 05:58:46

Re: Боевые.

Post by EvolutioN »

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

Re: Боевые.

Post by Mirage »

не моет потому что лучше сделать вот так:
прописать в шапке скрипта
var Miska = 'ID тазика для мытья'

Code: Select all

Sub CheckBandage()  
  UO.waittargetobject( Miska )
  UO.usetype('0x0e20')
  Wait(1000)
end sub 
Post Reply