Page 1 of 1
Train Meditation and Healing skills with Curse. Dragon World
Posted: 2006-11-30 18:09:57
by Scripts Writer
Медитация и хелинг с курсой + мытьё бинтов + еда.
Скрипт написан и протестирован на шарде DRW: 30.11.06.
Редактирование + критику рассмотрю в этой теме.
Code: Select all
sub Heal_Medit()
var mana=uo.mana ,life=uo.life ,k, i
var item='0x153E' #Type of curse
var wash='0x402D878C'
var bloody='0x0E20' #Type of a bloody bandage
var food='0x097B' #Type something to eat
while not uo.Dead() && uo.SkillVal('Meditation',2) <= 1010 && uo.SkillVal('Healing',2) <= 1010
uo.FindType(item,'-1','backpack')
if uo.FindCount() then
uo.UseObject('finditem')
repeat
wait(250)
CheckLag()
until uo.life <= life -1 && uo.mana <= mana-1
uo.UnDress()
repeat
k = 0
if uo.life <> life && uo.mana <> mana then
uo.CancelTarget()
uo.BandageSelf()
else
if uo.life <> life && uo.mana == mana then
uo.BandageSelf()
wait(3500)
end if
end if
CheckLag()
if uo.mana <> mana then
uo.UseSkill('Meditation')
uo.DeleteJournal()
repeat
wait(100)
k = k + 1
until uo.InJournal('You are') || uo.InJournal('you lose') || (k>50)
end if
until uo.life == life && uo.mana == mana
uo.FindType(bloody,'-1','backpack')
if uo.FindCount() && uo.GetQuantity('finditem') >= 180 then
uo.WaitTargetObject(wash)
uo.UseObject('finditem')
CheckLag()
for i = 0 to 10
uo.UseType(food)
wait(1000)
next
end if
else
if not uo.FindCount() then
uo.CloseUo()
else
wait(500)
end if
end if
wend
end sub
sub CheckLag()
uo.DeleteJournal('backpack')
uo.Click('backpack')
repeat
wait(100)
until uo.InJournal('backpack')
end sub
Posted: 2006-11-30 20:00:04
by omi4
Code: Select all
sub Heal_Medit()
var p = 1 ; поправка к статам, чтобы было что лечить и медитировать
var curse = '0x153E' ; Type of curse
repeat
UO.UseObject('_' + curse)
; Почему тут нет CheckLag?
; По тому что поиск ведет инжа у себя в памяти
; При любых лагах все проидет зачепятельно
if not UO.FindCount() then
; выход по фатальной ошибке
UO.Print("ERROR: !!! curse !!!")
return 1
endif
; разрушаем свой организьм
repeat
; пока ждем можно пожрать, постирать или просто вайт
util()
until UO.HP < UO.MaxHP - p && UO.MANA < UO.INT - p
UO.UnDress()
while heal() && meditation()
wait(200)
wend
; Поправил, у автора там хз что
until UO.Dead() || (UO.SkillVal('Meditation',1) == 1000 && UO.SkillVal('Healing',1) == 1000)
end sub
sub util()
; тут код
end sub
sub heal()
; тут код
return 0
end sub
sub meditation
; тут код
return 0
end sub
Code: Select all
; ПОЧЕМУ ТУТ НЕ ТИП?
var wash='0x402D878C';
; разьве есть шарды где тип иной?
var bloody='0x0E20' #Type of a bloody bandage
; это едят все, в крайнем случае все стоя на скриптах
var food='0x097B' #Type something to eat
; нафиг тогда переменные?
Posted: 2006-11-30 20:37:30
by Scripts Writer
omi4 wrote:Code: Select all
sub Heal_Medit()
var p = 1 ; поправка к статам, чтобы было что лечить и медитировать
var curse = '0x153E' ; Type of curse
repeat
UO.UseObject('_' + curse)
; Почему тут нет CheckLag?
; По тому что поиск ведет инжа у себя в памяти
; При любых лагах все проидет зачепятельно
if not UO.FindCount() then
; выход по фатальной ошибке
UO.Print("ERROR: !!! curse !!!")
return 1
endif
; разрушаем свой организьм
repeat
; пока ждем можно пожрать, постирать или просто вайт
util()
until UO.HP < UO.MaxHP - p && UO.MANA < UO.INT - p
UO.UnDress()
while heal() && meditation()
wait(200)
wend
; Поправил, у автора там хз что
until UO.Dead() || (UO.SkillVal('Meditation',1) == 1000 && UO.SkillVal('Healing',1) == 1000)
end sub
sub util()
; тут код
end sub
sub heal()
; тут код
return 0
end sub
sub meditation
; тут код
return 0
end sub
Code: Select all
; ПОЧЕМУ ТУТ НЕ ТИП?
var wash='0x402D878C';
; разьве есть шарды где тип иной?
var bloody='0x0E20' #Type of a bloody bandage
; это едят все, в крайнем случае все стоя на скриптах
var food='0x097B' #Type something to eat
; нафиг тогда переменные?
=\
1. На шарде Форест Варс к примеру нет корыта в котором мыть бинты( когда я играл) -там приходилось мыть в деревянном корыте, из которых "пьют лошадки".
2. Бинты... ммм. Не задумывался об этом-но не вижу здесь каких то недочётов.
3. Еда. Мммм... еда бывает разная. Все едят фишстейки?! -Возможно, но могу вспомнить к примеру мёд на цитадели(если не ошибаюсь).
Зачем переменные -думаю теперь понятно. Ведь не всем так просто читать код и находить,-поэтому все используемые объекты которые могут быть изменены вынес в начало скрипта. Разве что разность макс. жизни и той с которой начинаем лечиться.
Posted: 2006-11-30 20:44:15
by GimFlex
на медит есть и другой скрипт

Posted: 2006-12-03 11:20:40
by Scripts Writer
Healing+Meditation
Code: Select all
sub Heal_Medit()
# Edited:
# 1.mana and life -had been changed to STR and INT for more safety.
#
var STR=195 # You STR withour curse
var INT=60 # You INT without curse
var item='0x153E' #Type of curse
var wash='0x402D878C' #ID where to clean bandage
var bloody='0x0E20' #Type of bloody bandage
var food='0x097B' # Type of anything to eat
var k, i
while not uo.Dead() && uo.SkillVal('Meditation',1) < 1000 && uo.SkillVal('Healing',1) < 1000
if uo.life < STR && uo.mana < INT then
goto Begin
end if
uo.FindType(item,'-1','backpack')
if uo.FindCount() then
uo.UseObject('finditem')
repeat
wait(250)
CheckLag()
until uo.life <= STR -1 && uo.mana <= INT-1
Begin:
uo.UnDress()
repeat
k = 0
if uo.life <> STR && uo.mana <> INT then
uo.CancelTarget()
uo.BandageSelf()
else
if uo.life <> STR && uo.mana == INT then
uo.BandageSelf()
wait(3500)
end if
end if
CheckLag()
if uo.mana <> INT then
uo.UseSkill('Meditation')
uo.DeleteJournal()
wait(150)
repeat
wait(100)
k = k + 1
until uo.InJournal('You are') || uo.InJournal('you lose') || (k>50)
end if
until uo.life == STR && uo.mana == INT
uo.FindType(bloody,'-1','backpack')
if uo.FindCount() && uo.GetQuantity('finditem') >= 180 then
uo.WaitTargetObject(wash)
uo.UseObject('finditem')
CheckLag()
for i = 0 to 10
uo.UseType(food)
wait(1000)
next
end if
else
if not uo.FindCount() then
uo.CloseUo()
uo.exec('terminate all')
else
wait(500)
end if
end if
wend
end sub
MeditationCode: Select all
sub MeditationTrain()
var INT=60 #Your INT withour curse
var item='0x153E' #Type of curse
var food='0x097B' #Type of something to eat
var k, i, l
l=0
while not uo.Dead() && uo.SkillVal('Meditation',1) < 1000
if uo.mana < INT then
goto BeginMedit
end if
uo.FindType(item,'-1','backpack')
if uo.FindCount() then
uo.UseObject('finditem')
repeat
wait(150)
CheckLag()
until uo.mana <= INT-1
BeginMedit:
uo.UnDress()
repeat
k = 0
CheckLag()
if uo.mana <> INT then
uo.UseSkill('Meditation')
uo.DeleteJournal()
wait(150)
repeat
wait(100)
k = k + 1
until uo.InJournal('You are') || uo.InJournal('you lose') || (k>50)
end if
until uo.mana == INT
l=l+1
if l>100 then
for i=0 to 10
uo.UseType(food)
wait(1000)
next
l=0
end if
else
if not uo.FindCount() then
uo.CloseUo()
uo.exec('terminate all')
else
wait(500)
end if
end if
wend
end sub
HealingCode: Select all
sub Healing()
var STR=195 #Your STR withour curse
var item='0x153E' #Type of curse
var wash='0x402D878C' #ID where to clean bandage
var bloody='0x0E20' #Type of bloody bandage
var food='0x097B' #Type of something to eat
var k, i
while not uo.Dead() && uo.SkillVal('Healing',1) < 1000
if uo.life < STR then
goto BeginHeal
end if
uo.FindType(item,'-1','backpack')
if uo.FindCount() then
uo.UseObject('finditem')
repeat
wait(250)
CheckLag()
until uo.life <= STR -1
BeginHeal:
uo.UnDress()
repeat
k = 0
if uo.life <> STR then
uo.BandageSelf()
wait(3500)
end if
until uo.life == STR
uo.FindType(bloody,'-1','backpack')
if uo.FindCount() && uo.GetQuantity('finditem') >= 180 then
uo.WaitTargetObject(wash)
uo.UseObject('finditem')
CheckLag()
for i = 0 to 10
uo.UseType(food)
wait(1000)
next
end if
else
if not uo.FindCount() then
uo.CloseUo()
uo.exec('terminate all')
else
wait(500)
end if
end if
wend
end sub
Posted: 2006-12-03 13:12:10
by omi4
в строке
Code: Select all
while not uo.Dead() && uo.SkillVal('Meditation',2) <= 1010 && uo.SkillVal('Healing',2) <= 1010
Синтакс: number uo.SkillVal(skill,[case])
--------------------------------------------------------------------------------
Возвращает величину умения skill в десятых процента, т.е. 12.3%=123.
Если задано значение параметра case то можно получить такие значения:
case=0: величина умения skill в десятых процента
case=1: величина умения skill в десятых процента (real)
case=2: увеличение skill с момента загрузки или сброса в десятых процента
case=3: статус skill (открыт, закрыт, уменьшается)
чтобы из выйти цикла нужно иметь все скиллы 110 и быть мертвым
&& это AND
Posted: 2006-12-03 13:23:52
by Scripts Writer
Мы как бы из цикла выходить не собираемся-а со скилвалом немножко зделал направильно. Сейчас поправлю.
2
Meditation = 100.0 :
Code: Select all
while not uo.Dead() -цикл выполняется
while uo.SkillVal('Meditation',1) < 1000 -цикл не выполняется
while not uo.Dead() && uo.SkillVal('Meditation',1) < 1000 -цикл не выполняется
while not uo.Dead() && uo.SkillVal('Meditation',1) < 1001 -цикл выполняется
Posted: 2006-12-03 14:13:53
by omi4
у тебя
Мертв и ГМ1 и ГМ2 / Мертв && ГМ1 && ГМ2
нужно
мертв или (ГМ1 и ГМ2) / мертв || (ГМ1 && ГМ2)