Page 1 of 2

Мининг(помогите дополнить)

Posted: 2011-05-17 09:51:08
by son
Здравствуйте,вот нашел на данном форуме хороший скрипт,есть одна проблема-чар после поломки кирки не берет новую, можно ли дополнить скрипт ,чтобы брал новую кирку после того как сломает старую и продолжал копать?
Вот скрипт:

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

Re: Мининг(помогите дополнить)

Posted: 2011-05-17 12:13:43
by Mirage
варианты решения уже были не раз.

дописываешь
VAR ms8 = "сообщение которое при поломке кирки"

затем добавляешь

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)


При наличии кирки в паке скрипт подцепит сменную. А уж брать нужно по 2-3 инструмента на базе - сам нарисуешь как ;)

Re: Мининг(помогите дополнить)

Posted: 2011-05-17 12:58:27
by son
Mirage wrote:варианты решения уже были не раз.

дописываешь
VAR ms8 = "сообщение которое при поломке кирки"

затем добавляешь

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)


При наличии кирки в паке скрипт подцепит сменную. А уж брать нужно по 2-3 инструмента на базе - сам нарисуешь как ;)


Ну первое я как ты сказал добавил-

Code: Select all

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 = "You broke the pickaxe"


А это куда вставлять??-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) [b]OR UO.InJournal(ms8)

Re: Мининг(помогите дополнить)

Posted: 2011-05-19 10:07:09
by son
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



Да, мираж спасибо огромное все работает.Я этот скрпит использую в месте с анти-макром и после того как кирка ломается и перс берет новую срабатывает антимакр система ,скрипт его вводит, но после этого чар перестает копать,стоит мне самому сделать дабл по кирке чар начинает копать снова.Нельзя ли добавить чтобы после антимакра перс кирку юзал?? :oops:

Вот сообщение которое пишет после ввода антимакра "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

Re: Мининг(помогите дополнить)

Posted: 2011-05-20 08:57:44
by son
Миражик:) Помоги плииииз))Вся надежда на тебя))

Re: Мининг(помогите дополнить)

Posted: 2011-05-20 10:14:00
by Mirage
попробуй вот так

Code: Select all

sub AntiMacro()

while not uo.Dead()
if not uo.LastGump('replyed') then
if uo.LastGump('text', 0) == 'Antimacros System' then
OneClick()
UO.UseType( Kirka )
end if
endif
wait(500)
wend

end sub


VAR Kirka = '0x0E85' ; перенести выше sub minamine()

Re: Мининг(помогите дополнить)

Posted: 2011-05-20 10:42:31
by ZeroDX
Или же добавить в конец строки

Code: Select all

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)


вот это

Code: Select all

or t + 100 < UO.Timer()


вместо 100 нужно указать кол-во секунд, за которое чар выкапывает руду, прибавить одну секунду, и умножить на 10 =)
100 - 10 сек
70 - 7 сек

Re: Мининг(помогите дополнить)

Posted: 2011-05-27 10:20:03
by son
Mirage wrote:попробуй вот так

Code: Select all

sub AntiMacro()

while not uo.Dead()
if not uo.LastGump('replyed') then
if uo.LastGump('text', 0) == 'Antimacros System' then
OneClick()
UO.UseType( Kirka )
end if
endif
wait(500)
wend

end sub


VAR Kirka = '0x0E85' ; перенести выше sub minamine()



Анти макр код не вводит((( То есть он его пытается вводить,но выдает очень быстро и очень много анти-макрос окон и пишет Targeting canceled МНОГО РАЗ

Re: Мининг(помогите дополнить)

Posted: 2011-05-27 13:54:05
by Mirage
интересная система у вас. Правильно ли я понял что антимакрос возникает только при использовании предмета из пака? Или он срабатывает всегда при использовании кирки или лопаты?

Если первый вариант то в скрипте антимакроса поменяй

Code: Select all

OneClick()
UO.UseType( Kirka )
end if


на

Code: Select all

OneClick()
uo.useobject(uo.ObjAtLayer('Phand'))
end if

Re: Мининг(помогите дополнить)

Posted: 2011-05-29 16:46:33
by son
Mirage wrote:интересная система у вас. Правильно ли я понял что антимакрос возникает только при использовании предмета из пака? Или он срабатывает всегда при использовании кирки или лопаты?

Если первый вариант то в скрипте антимакроса поменяй

Code: Select all

OneClick()
UO.UseType( Kirka )
end if


на

Code: Select all

OneClick()
uo.useobject(uo.ObjAtLayer('Phand'))
end if


Антимакрос возникает при юзаньи топора или кирки в паке ,плюс возникает каждые 15 минут.

Re: Мининг(помогите дополнить)

Posted: 2011-05-29 17:01:28
by Mirage
значит вариант должен сработать.
Шарды пошли. Чем чуднее тем моднее. Уж незнают как бороться с макросниками. :|

Re: Мининг(помогите дополнить)

Posted: 2011-05-29 17:08:49
by Incorrect User
Шарды пошли. Чем чуднее тем моднее.

Это на ФВ.

Re: Мининг(помогите дополнить)

Posted: 2011-05-31 15:46:30
by son
Mirage wrote:интересная система у вас. Правильно ли я понял что антимакрос возникает только при использовании предмета из пака? Или он срабатывает всегда при использовании кирки или лопаты?

Если первый вариант то в скрипте антимакроса поменяй

Code: Select all

OneClick()
UO.UseType( Kirka )
end if


на

Code: Select all

OneClick()
uo.useobject(uo.ObjAtLayer('Phand'))
end if


Неа ((( Ошибку линии 156 выдает(((

Re: Мининг(помогите дополнить)

Posted: 2011-05-31 16:16:00
by Mirage
в твоем последнем варианте 128 строк. Если кроме выложенного скрипта ничего нет значит гдето пропустил закрывашку цикла. Если чтото есть еще то выкладывай полный скрипт.
Это Forgotten ?
Можно там протестировать систему сегодня вечером.

Re: Мининг(помогите дополнить)

Posted: 2011-06-01 09:44:44
by son
Mirage wrote:в твоем последнем варианте 128 строк. Если кроме выложенного скрипта ничего нет значит гдето пропустил закрывашку цикла. Если чтото есть еще то выкладывай полный скрипт.
Это Forgotten ?
Можно там протестировать систему сегодня вечером.


Да это ФВ.

Вот скрипт:

Code: Select all

VAR Kirka = '0x0E85' ; ??? ?????  
sub minamine()
#?????????
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()
uo.useobject(uo.ObjAtLayer('Phand'))
end if

end sub


sub ExtrimalRecall()
var rune='0x4010409A'
  uo.Usetype('0x0F08','0x07F2') ; Invisibility
  wait(100)
  uo.waittargetobject(Rune)
  uo.Usetype('0x1F4C','0x0000') ;Recall
end sub


sub Gong(times) ; play wav-file
   VAR i
   for i=1 to times
      UO.Exec("playwav d:\Alert")
      wait(1200) ; time to play sample at once
   next
end sub


sub Alarm()
   VAR CharHP=150
   while 1==1
      wait(1000)
      if UO.Life<136 then
         gong(1)
      endif     
   wend
end sub

Re: Мининг(помогите дополнить)

Posted: 2011-06-01 10:17:22
by Incorrect User
Кстати, в реколе, можеш жать рекол а потом уже пить инвиз. Не физлит, и рекол быстрее чуток выходит.

Code: Select all

var rune='0x4010409A'
  uo.waittargetobject(Rune)
  uo.Usetype('0x1F4C','0x0000') ;Recall
  uo.Usetype('0x0F08','0x07F2') ; Invisibility
end sub

Re: Мининг(помогите дополнить)

Posted: 2011-06-01 10:43:37
by Incorrect User
И чар идет всего на 2 тайла в другую сторону, а нужно на 5, или я что-то непонял?

Re: Мининг(помогите дополнить)

Posted: 2011-06-01 11:09:05
by Mirage
2 son

Code: Select all

sub AntiMacro()
   while not uo.Dead()
      if not uo.LastGump('replyed') then
         if uo.LastGump('text', 0) == 'Antimacros System' then
            OneClick()
            uo.useobject(uo.ObjAtLayer('Phand'))
         end if
      end if
   wend
end sub


у тебя не хватало endif и wend

Re: Мининг(помогите дополнить)

Posted: 2011-06-01 11:48:56
by son
Incorrect User wrote:Кстати, в реколе, можеш жать рекол а потом уже пить инвиз. Не физлит, и рекол быстрее чуток выходит.

Code: Select all

var rune='0x4010409A'
  uo.waittargetobject(Rune)
  uo.Usetype('0x1F4C','0x0000') ;Recall
  uo.Usetype('0x0F08','0x07F2') ; Invisibility
end sub


Твой вариант только пьет инвизку рекола после этого не следует..

Re: Мининг(помогите дополнить)

Posted: 2011-06-01 12:09:11
by Incorrect User
только пьет инвизку

Щас проверю.