son wrote:Здравствуйте,вот нашел на данном форуме хороший скрипт,есть одна проблема-чар после поломки кирки не берет новую, можно ли дополнить скрипт ,чтобы брал новую кирку после того как сломает старую и продолжал копать?
Вот скрипт:
Code: Select all
sub minamine()
#константы
VAR Kirka = '0x0E85' ; Тип кирки
VAR MaxVes =550 ; Больше не утащим
VAR TileNum = '1339' ; Тайл пещеры
#Переменные
VAR x, y, t, k, oldx, oldy, wh, togg
#Сообщения
VAR ms1 = "There is no ore here to mine"
VAR ms2 = "You can't use"
VAR ms3 = "You put the"
VAR ms4 = "You loosen"
VAR ms5 = "You have no"
VAR ms6 = "Try mining in rock"
VAR ms7 = "Хм.."
VAR ms8 = "broke the "
#Поехали!
while 1
wait(300)
oldx = uo.getx(480,98) #Запомним где мы: вдруг в тупике?
oldy = uo.gety(83,377)
wait (3000)
UO.Set('quiet','1') #Заканали сообщения...
for y=-2 to 2
for x=-2 to 2
while not UO.Hidden()
UO.Warmode("0")
uo.print("Прячемся...")
UO.UseSkill("Hiding")
wait(4000)
wend
k = 0
repeat
UO.DeleteJournal()
t = UO.Timer()
k = k + 1
UO.CancelTarget()
wait(300)
UO.WaitTargetTile( TileNum, STR( UO.GetX() + x ), STR( UO.GetY() + y ), 0)
UO.UseType( Kirka )
#########################
repeat
wait(300)
until UO.InJournal(ms1) OR UO.InJournal(ms2) OR UO.InJournal(ms3) OR UO.InJournal(ms4) OR UO.InJournal(ms5) OR UO.InJournal(ms6) OR UO.InJournal(ms7) OR UO.InJournal(ms8)
#########################
If UO.Weight > MaxVes Then
; Фууу....
UO.Print(" Overweight!" )
return
Endif
until ( NOT UO.InJournal(ms4) AND NOT UO.InJournal(ms3) OR (k > 7) )
next
next
UO.Set('quiet','0') #Пошли?
uo.print( 'Ходилка задействована.') #Удобно для отладки...
wait(3000)
oldx = uo.getx(480,98) #Еще раз на всякий.
oldy = uo.gety(83,377)
if wh == '1' then #Вправо
uo.press (33)
uo.press (33)
uo.press (33)
else #Влево
uo.press (35)
uo.press (35)
uo.press (35)
endif
wait(300)
if (uo.getx() == oldx) and (uo.gety() == oldy) then
uo.print('Тупик!')
if wh == '1' then #Переключить wh и сдвинуца вверх
uo.press(36)
uo.press(36)
uo.press(36)
wh = '0'
else
wh = '1'
uo.press(36)
uo.press(36)
uo.press(36)
end if
else
uo.print('Проходим.')
endif
wait(300) # иии.... заново!
wend
endsub
Вот так должно работать © Mirage
Да, мираж спасибо огромное все работает.Я этот скрпит использую в месте с анти-макром и после того как кирка ломается и перс берет новую срабатывает антимакр система ,скрипт его вводит, но после этого чар перестает копать,стоит мне самому сделать дабл по кирке чар начинает копать снова.Нельзя ли добавить чтобы после антимакра перс кирку юзал??
Вот сообщение которое пишет после ввода антимакра "You have entered a true code antimacros systems.Success in work!"
Вот тобой переделанный скрипт уже с анти-макром:
Code: Select all
sub minamine()
#?????????
VAR Kirka = '0x0E85' ; ??? ?????
VAR MaxVes =550 ; ?????? ?? ??????
VAR TileNum = '1339' ; ???? ??????
#??????????
VAR x, y, t, k, oldx, oldy, wh, togg
#?????????
VAR ms1 = "There is no ore here to mine"
VAR ms2 = "You can't use"
VAR ms3 = "You put the"
VAR ms4 = "You loosen"
VAR ms5 = "You have no"
VAR ms6 = "Try mining in rock"
VAR ms7 = "??.."
VAR ms8 = "broke the "
#???????!
while 1
wait(300)
oldx = uo.getx(480,98) #???????? ??? ??: ????? ? ???????
oldy = uo.gety(83,377)
wait (3000)
UO.Set('quiet','1') #???????? ?????????...
for y=-2 to 2
for x=-2 to 2
while not UO.Hidden()
UO.Warmode("0")
uo.print("????????...")
UO.UseSkill("Hiding")
wait(4000)
wend
k = 0
repeat
UO.DeleteJournal()
t = UO.Timer()
k = k + 1
UO.CancelTarget()
wait(300)
UO.WaitTargetTile( TileNum, STR( UO.GetX() + x ), STR( UO.GetY() + y ), 0)
UO.UseType( Kirka )
#########################
repeat
wait(300)
until UO.InJournal(ms1) OR UO.InJournal(ms2) OR UO.InJournal(ms3) OR UO.InJournal(ms4) OR UO.InJournal(ms5) OR UO.InJournal(ms6) OR UO.InJournal(ms7) OR UO.InJournal(ms8)
#########################
If UO.Weight > MaxVes Then
; ????....
UO.Print(" Overweight!" )
return
Endif
until ( NOT UO.InJournal(ms4) AND NOT UO.InJournal(ms3) OR (k > 7) )
next
next
UO.Set('quiet','0') #??????
uo.print( '??????? ?????????????.') #?????? ??? ???????...
wait(3000)
oldx = uo.getx(480,98) #??? ??? ?? ??????.
oldy = uo.gety(83,377)
if wh == '1' then #??????
uo.press (33)
uo.press (33)
uo.press (33)
else #?????
uo.press (35)
uo.press (35)
uo.press (35)
endif
wait(300)
if (uo.getx() == oldx) and (uo.gety() == oldy) then
uo.print('?????!')
if wh == '1' then #??????????? wh ? ???????? ?????
uo.press(36)
uo.press(36)
uo.press(36)
wh = '0'
else
wh = '1'
uo.press(36)
uo.press(36)
uo.press(36)
end if
else
uo.print('????????.')
endif
wait(300) # ???.... ??????!
wend
endsub
sub OneClick()
dim reindex[8]
reindex[0] = 11
reindex[1] = 12
reindex[2] = 13
reindex[3] = 10
reindex[4] = 16
reindex[5] = 14
reindex[6] = 17
reindex[7] = 15
var GumpID = 0
var ButtonID = 0
var ButtonText
var i = 18
if uo.LastGump('text', 4) <> "0" then
i = 19
end if
GumpID = val(Mid(uo.LastGump('command', i), 16, 4))
ButtonID = reindex[GumpID-2225]
ButtonText = uo.LastGump('command', ButtonID)
uo.LClick(Val(Mid(ButtonText, 7, 3)), Val(Mid(ButtonText, 11, 3)))
wait(300)
end sub
sub AntiMacro()
while not uo.Dead()
if not uo.LastGump('replyed') then
if uo.LastGump('text', 0) == 'Antimacros System' then
OneClick()
end if
endif
wait(500)
wend
end sub
sub ExtrimalRecall()
var rune='0x400C3EC4'
uo.Usetype('0x0F08','0x07F2') ; Invisibility
wait(100)
uo.waittargetobject(Rune)
uo.Usetype('0x1F4C','0x0000') ;Recall
end sub