помогите со скриптом на убийство мобов
Moderators: Murderator+, Murderator
Re: помогите со скриптом на убийство мобов
всё всем спасибо, нашёл то что искал-))
Re: помогите со скриптом на убийство мобов
там 6 страниц скриптов ты хотя бы ссылку на сам скрипт дал
Re: помогите со скриптом на убийство мобов
Mirage wrote:там 6 страниц скриптов ты хотя бы ссылку на сам скрипт дал
))) пропарился )) скрипт на мобов щит берёт орудие отказывается брать ((. Или после резки трупа ножик в руках оставляет.
Code: Select all
var distance='4' # дистанция поиска мобов
var corpser=1 # 1-резать труп # 0-не резать труп
sub main()
var n, m, mob
var tweapon=uo.getserial(uo.objatlayer('Rhand'))
var tshield=uo.getserial(uo.objatlayer('Lhand'))
Dim npc[10]
npc[0]=2 # count
npc[1]='0x0018'
npc[2]='0x0038'
npc[3]=''
Dim loot[50]
loot[0]=2 # count
loot[1]='0x0EED'
loot[2]='0x0F7E'
loot[3]=''
uo.set('finddistance',distance)
while 1
for n=1 to npc[0]
uo.findtype(npc[n],-1,'ground')
if uo.findcount() then
uo.useobject(tweapon)
uo.useobject(tshield)
wait(100)
mob=uo.getserial('finditem')
kill(mob)
uo.useobject('lastcorpse')
checklag()
wait(1000)
for m=1 to loot[0]
while uo.getquantity('<'+loot[m])
uo.moveitem('<'+loot[m])
wait(700)
wend
next
while uo.life<uo.str-20 and uo.count('0x0E21')
uo.bandageself()
wait(3500)
wend
if uo.count('0x0E20') then
uo.waittargettype('0x1008')
uo.usetype('0x0E20')
wait(1000)
endif
endif
next
wait(1000)
wend
endsub
sub kill(mob)
var n
checklag()
for n=0 to 100
uo.attack(mob)
if uo.getdistance(mob)>1 then
walkn(0,0,mob)
endif
if uo.injournal('Body of') then
if corpser==1 then
uo.waittargetobject('lastcorpse')
wait(100)
uo.usetype('0x0F51')
wait(500)
endif
return
endif
wait(1000)
next
endsub
sub WalkN(x,y,Target) ########################################## Ходилка
VAR LastTimer
LastTimer=UO.Timer()
VAR i
VAR dir,ldir,rdir,key,olddir
VAR dx,dy,Exit=0
VAR CacheLimit=9,CacheIndex="Text"
DIM CacheX[10], CacheY[10]
CacheX[0]="Test"
uo.say('')
While Exit<>1
If Target<>"" Then
dx=UO.GetX(Target)-UO.GetX()
dy=UO.GetY(Target)-UO.GetY()
If UO.GetDistance(Target)<2 OR LastTimer+100<UO.Timer() Then
wait(1000)
return
Endif
Else
dx=x-UO.GetX()
dy=y-UO.GetY()
If dx==0 AND dy==0 OR LastTimer+100<UO.Timer() Then
return
Endif
Endif
If dx<>0 AND dy<>0 Then
If dx>0 AND dy>0 Then ; GoSE
dir=3
ldir=2
rdir=4
key=40 ; DownArrow
olddir=UO.GetDir()
If StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Then
If olddir==2 Then ; GoNE
dir=1
ldir=0
rdir=1
key=39 ; RightArrow
While UO.GetDir()<>1
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Else ; GoSW
dir=5
ldir=5
rdir=6
key=37 ; LeftArrow
While UO.GetDir()<>5
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Endif
Endif
Endif
If dx>0 AND dy<0 Then ; GoNE
dir=1
ldir=0
rdir=2
key=39 ; RightArrow
olddir=UO.GetDir()
If StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Then
If olddir==0 Then ; GoWN
dir=7
ldir=6
rdir=7
key=38 ; UpArrow
While UO.GetDir()<>7
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Else ; GoSE
dir=3
ldir=3
rdir=4
key=40 ; DownArrow
While UO.GetDir()<>3
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Endif
Endif
Endif
If dx<0 AND dy>0 Then ; GoSW
dir=5
ldir=4
rdir=6
key=37 ; LeftArrow
olddir=UO.GetDir()
If StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Then
If olddir==6 Then ; GoWN
dir=7
ldir=7
rdir=0
key=38 ; UpArrow
While UO.GetDir()<>7
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Else ; GoSE
dir=3
ldir=2
rdir=3
key=40 ; DownArrow
While UO.GetDir()<>3
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Endif
Endif
Endif
If dx<0 AND dy<0 Then ; GoWN
dir=7
ldir=6
rdir=0
key=38 ; UpArrow
olddir=UO.GetDir()
If StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Then
If olddir==0 Then ; GoNE
dir=1
ldir=1
rdir=2
key=39 ; RightArrow
While UO.GetDir()<>1
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Else ; GoSW
dir=5
ldir=4
rdir=5
key=37 ; LeftArrow
While UO.GetDir()<>5
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Endif
Endif
Endif
Endif
If dx<>0 AND dy==0 Then
If dx>0 Then ; GoE
dir=2
key=34 ; PgDown
olddir=UO.GetDir()
If StepEdit(UO.GetX(),UO.GetY(),dir,key) Then
If olddir==2 Then ; GoSE
dir=3
ldir=3
rdir=4
key=40 ; DownArrow
While UO.GetDir()<>3
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Else ; GoNE
dir=1
ldir=1
rdir=0
key=39 ; RightArrow
While UO.GetDir()<>1
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Endif
Endif
Endif
If dx<0 Then ; GoW
dir=6
key=36 ; Home key
olddir=UO.GetDir()
If StepEdit(UO.GetX(),UO.GetY(),dir,key) Then
If olddir==0 Then ; GoWN
dir=7
ldir=7
rdir=0
key=38 ; UpArrow
While UO.GetDir()<>7
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Else ; GoSW
dir=5
ldir=4
rdir=5
key=37 ; LeftArrow
While UO.GetDir()<>5
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Endif
Endif
Endif
Endif
If dx==0 AND dy<>0 Then
If dy>0 Then ; GoS
dir=4
key=35 ; End
If StepEdit(UO.GetX(),UO.GetY(),dir,key) Then
If olddir==2 Then ; GoSE
dir=3
ldir=2
rdir=3
key=40 ; DownArrow
While UO.GetDir()<>3
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Else ; GoSW
dir=5
ldir=6
rdir=5
key=37 ; LeftArrow
While UO.GetDir()<>5
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Endif
Endif
Endif
If dy<0 Then ;GoN
dir=0
key=33 ; PgUp
olddir=UO.GetDir()
If StepEdit(UO.GetX(),UO.GetY(),dir,key) Then
If olddir==2 Then ; GoNE
dir=1
ldir=1
rdir=2
key=39 ; RightArrow
While UO.GetDir()<>1
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Else ; GoWN
dir=7
ldir=7
rdir=6
key=38 ; UpArrow
While UO.GetDir()<>7
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Endif
Endif
Endif
Endif
Wend
end sub
sub StepEdit(x,y,dir,key)
VAR walkwait=150
VAR ErrLevel=0
If UO.GetDir()<>dir Then
UO.Press(key)
wait(walkwait)
If UO.GetDir()<>dir Then
CheckLag()
Endif
Endif
UO.Press(key)
wait(walkwait)
If x==UO.GetX() AND y==UO.GetY() Then
CheckLag()
If x==UO.GetX() AND y==UO.GetY() Then
;zatik
ErrLevel=1
Endif
Endif
Return ErrLevel
end sub
sub StepArrow(x,y,dir,ldir,rdir,key)
VAR walkwait=150
VAR ErrLevel=0
If UO.GetDir()<>dir Then
UO.Press(key)
wait(walkwait)
If UO.GetDir()<>dir AND UO.GetDir()<>ldir AND UO.GetDir()<>rdir Then
CheckLag()
Endif
Endif
If UO.GetX()==x AND UO.GetY()==y Then
UO.Press(key)
wait(walkwait)
If UO.GetDir()==dir AND UO.GetX()==x AND UO.GetY()==y Then
CheckLag()
If UO.GetDir()==dir AND UO.GetX()==x AND UO.GetY()==y Then
;zatik
ErrLevel=1
Endif
Endif
Endif
Return ErrLevel
end sub
sub checklag()
repeat
UO.DeleteJournal()
UO.Click('backpack')
until backpack()==1
endsub
sub backpack()
var n
for n=0 to 200
if uo.injournal('a backpack') then
return 1
endif
wait(200)
next
endsub
Re: помогите со скриптом на убийство мобов
Code: Select all
sub test1()
var tweapon=uo.getserial(uo.objatlayer('Rhand'))
uo.usetype('0x0F51')
wait(500)
uo.useobject(tweapon)
endsub
sub test2()
var tshield=uo.getserial(uo.objatlayer('Lhand'))
uo.usetype('0x0F51')
wait(500)
uo.useobject(tshield)
endsub
sub test3()
var tweapon=uo.getserial(uo.objatlayer('Rhand'))
var tshield=uo.getserial(uo.objatlayer('Lhand'))
uo.usetype('0x0F51')
wait(500)
uo.useobject(tweapon)
uo.useobject(tshield)
endsub
sub test4()
var tweapon=uo.getserial(uo.objatlayer('Rhand'))
var tshield=uo.getserial(uo.objatlayer('Lhand'))
uo.usetype('0x0F51')
wait(500)
uo.useobject(tweapon)
wait(500)
uo.useobject(tshield)
endsub
Одеваешь оружие и щит (саблю какуюнибудь), берешь в пак пару ножиков типа 0x0F51, и по очереди запускаешь эти скрипты (перед запуском если сабля и/или щит не наденутся одеваешь их руками), отписываешься о результатах проверки всех тестов.
Всего скорее либо не хватает паузы на одевание. Но может быть что то еще. Кстати разьве щит скидывается при резке? И еще кстати - на некоторых шардах не все ножи одеваются на куклу. Например кливеры при использовании вызывают прицел для резки. По дефолту все оружие через даблклик режет и рубит без одевания.
Re: помогите со скриптом на убийство мобов
Mirage wrote:Одеваешь оружие и щит (саблю какуюнибудь), берешь в пак пару ножиков типа 0x0F51, и по очереди запускаешь эти скрипты (перед запуском если сабля и/или щит не наденутся одеваешь их руками), отписываешься о результатах проверки всех тестов.
Всего скорее либо не хватает паузы на одевание. Но может быть что то еще. Кстати разьве щит скидывается при резке? И еще кстати - на некоторых шардах не все ножи одеваются на куклу. Например кливеры при использовании вызывают прицел для резки. По дефолту все оружие через даблклик режет и рубит без одевания.
Все кроме 2-го работают
Re: помогите со скриптом на убийство мобов
второй отдельно возьми и поменяй тип даггера на тип любого лука, он тоже на левой руке. Если щит не наденется значит проблема со щитом.
Re: помогите со скриптом на убийство мобов
Mirage wrote:второй отдельно возьми и поменяй тип даггера на тип любого лука, он тоже на левой руке. Если щит не наденется значит проблема со щитом.
Мираж выручай старина.
Решил качаться на блейдах спиритах, но кастер иногда тупит как только замочу блейда и начинаю хилиться кастер пускает ещё блейда. Т. Е. бывает подглючивает проверка отхила бойцом ... Есть идеи?
Мойка бинтов тоже потглючивает, после мытья бинтов не видит чистых бинтиков.
Code: Select all
var x='1275' ; координата Х куда кастуем
var y='527' ; координата Y куда кастуем
var fighter='0x00198671' ; ИД того, кто качает боевые
var spirit='0x023E' ; тип блейд спирита
var bints='0x0E21' ; тип бинтов
var bloodbints='0x0E20' ; тип кровавых бинтов
var washbasin='0x1008' ; тип ванночки
var Svord='0x0E81' ; тип оружия
var Shield='' ; тип щита
var gh='0x0F0E' ; тип ГХ
var cgh='0x09BB' ; цвет ГХ
var i=3
####################### Настройки ##########################
#Кастер #
#в пак положить необходимые реги, одеть браслет маны, #
#включить TWI, перетащить статус файтера #
#Файтер #
#в пак положить ванночку, бинты, ГХ, одеть браслет жизни, #
#положить побольше оружия, включить TWI, одеть щит и оружие#
#################### Caster Spirits ########################
sub caster()
uo.set('finddistance','14')
while not uo.dead()
if i==3 then
i=0
castparaliz()
endif
i=i+1
castbladespirit()
meditation()
waitdiespirit()
waithealfighter()
wend
endsub
Sub castbladespirit()
uo.findtype(spirit,'-1','ground')
if uo.findcount() then
while uo.findcount()
wait(1000)
uo.findtype(spirit,'-1','ground')
wend
endif
repeat
meditation()
uo.deletejournal()
uo.waittargettile('0',x,y,30)
uo.cast ('Blade Spirits')
wait(8000)
until not uo.InJournal("The spell fizzles.")
end sub
Sub castparaliz()
uo.findtype(spirit,'-1','ground')
if uo.findcount() then
while uo.findcount()
wait(1000)
uo.findtype(spirit,'-1','ground')
wend
endif
repeat
if uo.mana-24<=24 then
uo.exec('warmode 0')
repeat
uo.useskill('Meditation')
wait(4000)
until uo.mana == uo.int
endif
meditation()
uo.deletejournal()
uo.waittargettile('0',x,y,30)
uo.cast ('Paralyze Field')
wait(8000)
until not uo.InJournal("The spell fizzles.")
end sub
Sub meditation()
if UO.Mana<24 then
uo.exec('warmode 0')
repeat
uo.useskill('Meditation')
wait(4000)
until uo.mana == uo.int
endif
endsub
Sub waithealfighter()
repeat
wait(100)
until uo.GetHp(fighter) == uo.GetMaxHp(fighter)
endsub
Sub waitdiespirit()
uo.findtype(spirit,'-1','ground')
if uo.findcount() then
while uo.gethp('finditem')>0
wait(1000)
uo.findtype(spirit,'-1','ground')
wend
endif
endsub
################### Fighter Spirits #################
sub fighter()
uo.set('finddistance','14')
while not uo.dead()
healing()
sword()
killspirits()
wend
endsub
Sub healing()
UO.FindType(bints,'-1','backpack')
if UO.FindCount() then
while uo.life<>uo.str
uo.bandageself()
wait(3500)
wend
else
UO.FindType(bloodbints,'-1','backpack')
if UO.FindCount() then
uo.waittargettype(washbasin)
uo.UseType(bloodbints)
endif
endif
endsub
Sub killspirits()
uo.findtype(spirit,'-1','ground')
uo.warmode(1)
while not uo.findcount()
wait(1000)
uo.findtype(spirit,'-1','ground')
wend
wait(2000)
uo.attack('finditem')
while uo.findcount()
checksword()
checkhp()
uo.findtype(spirit,'-1','ground')
wait(1000)
wend
wait(500)
uo.findtype(spirit,'-1','ground')
if uo.findcount() then
wait(2000)
uo.attack('finditem')
while uo.findcount()
checksword()
checkhp()
uo.findtype(spirit,'-1','ground')
wait(1000)
wend
wait(500)
endif
endsub
Sub sword()
var s
UO.Equipt('Lhand',shield)
wait(2000)
uo.findtype(Svord,'-1','backpack')
if uo.findcount() then
s=uo.getserial('finditem')
uo.ignore('finditem')
else
uo.ignorereset()
uo.findtype(Svord,'-1','backpack')
s=uo.getserial('finditem')
endif
uo.useobject(s)
wait(2000)
end sub
Sub checksword()
if UO.GetGraphic(UO.ObjAtLayer('Rhand')) <> svord then
uo.findtype(svord,'-1','backpack')
if uo.findcount() then
uo.usetype('finditem')
endif
endif
endsub
Sub checkhp()
if uo.life<17 then
uo.usetype(gh,cgh)
endif
endsub
Re: помогите со скриптом на убийство мобов
Code: Select all
Sub waithealfighter()
repeat
wait(100)
until uo.GetHp(fighter) == uo.GetMaxHp(fighter)
endsub
Не корректно работает. Я где то писал. Максимальное определяется как 100, после любого нанесения урона становится равным 50... Замороченно в общем и глючно.
Сделай проверку на стоп слово от файтера. Когда спирит испарился маг ждет пока файлер отхилившись не произнесет фразу "Поехали", и после наинает кастовать клинки.
Re: помогите со скриптом на убийство мобов
Mirage wrote:Code: Select all
Sub waithealfighter()
repeat
wait(100)
until uo.GetHp(fighter) == uo.GetMaxHp(fighter)
endsub
Не корректно работает. Я где то писал. Максимальное определяется как 100, после любого нанесения урона становится равным 50... Замороченно в общем и глючно.
Сделай проверку на стоп слово от файтера. Когда спирит испарился маг ждет пока файлер отхилившись не произнесет фразу "Поехали", и после наинает кастовать клинки.
Спасибо, завтра попробую отпишусь
Re: помогите со скриптом на убийство мобов
Чёта запарился так и не воткнул отмашку кастеру
нашёл скриптик с кричалками. Есть конечно минусы (сам не атачит блейда и главное бинты мыть не хочет) но работает стабильней
Code: Select all
if uo.life == uo.str then ;или UO.InJournal("need healing or cure")
uo.say('GO')
wait(3500)
endif
нашёл скриптик с кричалками. Есть конечно минусы (сам не атачит блейда и главное бинты мыть не хочет) но работает стабильней
var vrag = '0x001DDB81' # айди того кто качает
var BladeSpirit = '0x023E'
var msgReady = 'I am Ready'
var msgBladeDied = 'Blade Died'
var msgHelp = 'Help me'
var msgNoMana = 'No mana... Meditation...'
sub main()
while NOT uo.dead()
if Uo.Mana < 40 then
FullMeditation()
endif
uo.Say(MsgReady)
wait(1000)
Uo.DeleteJournal()
while NOT Uo.InJournal(msgReady)
wait(500)
wend
uo.waittargettile("1400",str(uo.getx(vrag)),str(uo.gety(vrag)),str(uo.getz(vrag)))
uo.cast("Blade Spirits")
wait(6000)
BladeContr()
wend
end sub
Sub FullMeditation()
while UO.Mana<UO.Int
UO.UseSkill('Meditation')
repeat
wait(2000)
uo.Say(msgNoMana)
until UO.InJournal("You are") OR UO.InJournal("You lose")
UO.DeleteJournal()
wait(4000)
wend
uo.useskill("Spirit Speak")
wait(10000)
end sub
sub BladeContr()
var BladeFound = 1
uo.set( 'finddistance', '20' )
while BladeFound == 1
Uo.FindType( BladeSpirit ,-1,'ground')
if Uo.FindCount() then
BladeFound = 1
Else
BladeFound = 0
endif
If Uo.Injournal(msgHelp) then
uo.cast('Greater Heal',vrag)
wait(4000)
uo.DeleteJOurnal()
endif
wait(1000)
wend
Uo.Say(msgBladeDied)
wait(1000)
end sub
sub automedit()
wait(10000)
while not uo.dead()
if uo.warmode() <> 1 then
if uo.mana < 70 then
uo.useskill("Meditation")
wait(5000)
endif
endif
wait(1000)
wend
end sub
Code: Select all
var msgReady = 'I am Ready'
var msgBladeDied = 'Blade Died'
var msgHelp = 'Help me'
var msgNoMana = 'No mana... Meditation...'
var key = 0
sub main()
VAR Banka='0x401C4D33' ; айди умывальницы
UO.waittargetobject(banka)
UO.usetype(0x0E21) # бенты
Wait(1000)
while NOT uo.Dead()
uo.DeleteJournal()
if Uo.GetHP('self') < Uo.Str then
uo.SetArm('MyArm')
wait(100)
uo.DisArm()
while Uo.GetHP('self') < Uo.Str
uo.bandageself()
uo.DeleteJournal()
while NOT uo.Injournal('You')
wait(1000)
wend
wend
endif
uo.Arm('MyArm')
Uo.DeleteJournal()
CheckLag()
while Uo.GetHP('self') == Uo.Str
uo.say(msgReady)
wait(3000)
wend
uo.deletejournal()
while NOT Uo.Injournal(msgBladeDied)
If Uo.GetHP('self') < 40 then
uo.say(msgHelp)
endif
wait(2000)
wend
Uo.DeleteJournal()
wend
end sub
sub CheckLag()
uo.DeleteJournal()
uo.Click('backpack')
repeat
wait(150)
until uo.InJournal('backpack')
end sub
Re: помогите со скриптом на убийство мобов
Да что за невезуха такая отказывается мыть бинты и точка - весь мозг себе сломал.
Code: Select all
var msgReady = 'I am Ready'
var msgBladeDied = 'Blade Died'
var msgHelp = 'Help me'
var msgNoMana = 'No mana... Meditation...'
var key = 0
sub main()
VAR Banka='0x401C4D33' ; айди умывальницы
UO.waittargetobject(banka)
UO.usetype(0x0E21) # бенты
Wait(1000)
while NOT uo.Dead()
uo.DeleteJournal()
if Uo.GetHP('self') < Uo.Str then
uo.SetArm('MyArm')
wait(100)
uo.DisArm()
while Uo.GetHP('self') < Uo.Str
uo.bandageself()
uo.DeleteJournal()
while NOT uo.Injournal('You')
wait(1000)
wend
wend
endif
uo.Arm('MyArm')
Uo.DeleteJournal()
CheckLag()
while Uo.GetHP('self') == Uo.Str
uo.say(msgReady)
wait(3000)
wend
uo.deletejournal()
while NOT Uo.Injournal(msgBladeDied)
If Uo.GetHP('self') < 40 then
uo.say(msgHelp)
endif
wait(2000)
wend
Uo.DeleteJournal()
wend
end sub
sub CheckLag()
uo.DeleteJournal()
uo.Click('backpack')
repeat
wait(150)
until uo.InJournal('backpack')
end sub