Собственно проблема в следующем:
есть скрипт под мининг, взять выложеный под дрв и отредактированный мной под мой шард, проблема заключается в следующем максимальные координаты в которых чар может окопаться от -2 до 2, при этом руды в каждой из точек оч мало, выкапывает все вокруг себя буквально за 5 мин, иногда быстрее, хочу сделать так чтобы при повторе 25 раз подряд There is no ore here, чар перемещался на 5 клеток вниз, при удачном выкапывании срабатвала очистка журнала, так вот хочу спросить, реально пощатать количество неудачных попыток выкопать руду подряд?
Можно ли подсчитать uo.injounal(****)
Moderators: Murderator+, Murderator
-
- Posts: 308
- Joined: 2005-07-17 15:30:52
- Location: www.drw.ru
-
- Expert!
- Posts: 1032
- Joined: 2006-02-25 21:48:38
Вот что могу предложить, но скрипт не под ДРВ:
Code: Select all
# Прописываем тип кирки и можно копать...
sub main_mine()
var i
uo.print("поехали")
While UO.Life>0
for i=1 to 20 #максимальное расстояние на которое отходим
kopat()
stam()
uo.press(33) #Определяет направление движения
next
uo.print("GO назад =)")
kopat()
for i=1 to 21
wait(500)
stam()
uo.press(35) #Определяет направление движения
next
stam()
uo.press(33) #Определяет направление движения
wend
end sub
sub kopat()
var where_x,where_y,coords,i
UO.DeleteJournal()
where_x=uo.getx()
where_y=uo.gety()
for i=-2 to 2
uo.print("Тайл "+str(i+3)+"/5")
coords="waittargettile "+" 1343 "+str(where_x+i)+" "+str(where_y)+" 0"
#Здесь, если меняем ось движения, нужно заменить на
#coords="waittargettile "+" 1343 "+str(where_x)+" "+str(where_y+i)+" 0"
uo.exec(coords)
uo.exec("usetype '0x0E85'") # Здесь прописываем тип кирки
UO.DeleteJournal()
while (not (UO.InJournal("stop mining") or UO.InJournal("far")))
wait(1000)
wend
next
end sub
sub stam()
if UO.Stamina < 10 then
wait(300000)
end if
end sub
-
- Expert!
- Posts: 1032
- Joined: 2006-02-25 21:48:38
Re: Можно ли подсчитать uo.injounal(****)
Sanch wrote:Собственно проблема в следующем:
есть скрипт под мининг, взять выложеный под дрв и отредактированный мной под мой шард, проблема заключается в следующем максимальные координаты в которых чар может окопаться от -2 до 2, при этом руды в каждой из точек оч мало, выкапывает все вокруг себя буквально за 5 мин, иногда быстрее, хочу сделать так чтобы при повторе 25 раз подряд There is no ore here, чар перемещался на 5 клеток вниз, при удачном выкапывании срабатвала очистка журнала, так вот хочу спросить, реально пощатать количество неудачных попыток выкопать руду подряд?
Code: Select all
var i=0
uo.deletejournal()
...
sub schetchik()
if uo.injournal("удачном выкапывании") > 0 then
uo.deletejournal()
i=0
end if
if uo.injournal("There is no ore here") > 0 then
uo.SetJournalLine(uo.InJournal("There is no ore here")-1),"cleared")
i=i+1
end if
end sub
...
А дальше просто проверяй значение i...
-
- Posts: 308
- Joined: 2005-07-17 15:30:52
- Location: www.drw.ru
Большое спасибо за помощь, ща че нить попробую намудрить...
Возникла еще 1 трабла
, ну точнее просто нужно пояснение челов шарящих
UO.Print("Копаем в координатах: "+str(mx-i)+" "+str(my-j))
while not UO.InJournal("no ore here") and not UO.InJournal("location") and not UO.InJournal("far away") and not UO.InJournal("in rock") and not UO.InJournal("Iron Ore") and not UO.InJournal("Copper") and not UO.InJournal("Rusty Ore")
UO.DeleteJournal()
if uo.waiting() then
uo.canceltarget()
endif
UO.Waittargettile("1341", str(i), str(j), str(mz))
UO.Useobject("Shovel")
while not UO.InJournal("You put") and not UO.InJournal("heavy") and not UO.InJournal("location") and not UO.InJournal("no ore") and not UO.InJournal("but fail") and not UO.InJournal("far away") and not UO.InJournal("in rock")
wait (500)
if uo.injournal("heavy") or uo.dead() then
pwav()
Pause()
endif
for jor = 0 to 9
ser = uo.journalserial(jor)
noto = uo.getnotoriety(ser)
if noto <> 1 and noto <> 0 and not uo.injournal("elemental") then
if uo.waiting() then
uo.canceltarget()
endif
Save()
pwavw()
wait(180000) ; время в секундах при ожидании пока уйдет ПК
loot()
wait(3000)
goto reccal
endif
next
wend
Не могли бы просвятить о действии оборота while ..... wend, имхо в выше указаных записях в журнале, while not **** много лишнего и я путаюсь при каком условии он копаеть продолжает, а при каком копает в следующей точке, или я мыслю не в том направлении?
В остальном мне целиком понятно как работает скрипт на мининг под дрв, что от чего пляшет, а вот с этим запара, ну не догоняю я.
И еще 1 вопрос
, можно ли убрать там not, оставить просто "while uo.inj***" и поменять списки местами и скрипт будет работать по тому же принцепу или я несу полную чушь?

Возникла еще 1 трабла

UO.Print("Копаем в координатах: "+str(mx-i)+" "+str(my-j))
while not UO.InJournal("no ore here") and not UO.InJournal("location") and not UO.InJournal("far away") and not UO.InJournal("in rock") and not UO.InJournal("Iron Ore") and not UO.InJournal("Copper") and not UO.InJournal("Rusty Ore")
UO.DeleteJournal()
if uo.waiting() then
uo.canceltarget()
endif
UO.Waittargettile("1341", str(i), str(j), str(mz))
UO.Useobject("Shovel")
while not UO.InJournal("You put") and not UO.InJournal("heavy") and not UO.InJournal("location") and not UO.InJournal("no ore") and not UO.InJournal("but fail") and not UO.InJournal("far away") and not UO.InJournal("in rock")
wait (500)
if uo.injournal("heavy") or uo.dead() then
pwav()
Pause()
endif
for jor = 0 to 9
ser = uo.journalserial(jor)
noto = uo.getnotoriety(ser)
if noto <> 1 and noto <> 0 and not uo.injournal("elemental") then
if uo.waiting() then
uo.canceltarget()
endif
Save()
pwavw()
wait(180000) ; время в секундах при ожидании пока уйдет ПК
loot()
wait(3000)
goto reccal
endif
next
wend
Не могли бы просвятить о действии оборота while ..... wend, имхо в выше указаных записях в журнале, while not **** много лишнего и я путаюсь при каком условии он копаеть продолжает, а при каком копает в следующей точке, или я мыслю не в том направлении?
В остальном мне целиком понятно как работает скрипт на мининг под дрв, что от чего пляшет, а вот с этим запара, ну не догоняю я.
И еще 1 вопрос

-
- Expert!
- Posts: 1032
- Joined: 2006-02-25 21:48:38

Первое: http://yoko.netroof.net/help/
Второе: купи книжку по программированию на:
ABAP/4 | Ада | Алгол | Алгол 68 | АПЛ | Ассемблеры | Awk | Бейсик | Brainfuck | Си | Objective-C | C++ | C# | Clean | Curry | GPSS | КОБОЛ | ColdFusion | Dylan | Delphi | Erlang | Forth | Фортран | FoxPro | Haskell | INTERCAL | Io | Java | JavaScript | JOVIAL | Jython | Лисп | Лого | Limbo | Lua | Mercury | Mesa | ML | Модула-2 | Оберон | Компонентный Паскаль | OCaml | Occam | Паскаль | Перл | PHP | Pike | ПЛ/1 | PL/M | PL/SQL | Планкалкюль | Постскрипт | Пролог | Python | QBASIC | РЕФАЛ | REXX | Руби | sh | Scala | Scheme | Smalltalk | Self | Simula | Tcl/Tk | Visual Basic | xBase | Эйфель
[нужное подчеркнуть]

Третье: not это логическое "НЕ"
true это логическая единица (true = 1)
false - логический ноль (false = 0).
Пример:
НЕ ПРАВДА = ЛОЖЬ, другими словами:
not true = false <==> not 1 = 0
not false = true <==> not 0 = 1.
Четвёртое:
По поводу UO.InJournal("text") :
Описание: InJournal
Синтакс: uo.InJournal("text")
Ищет в журнале Injection строку, в которой встречается text, и возвращает её номер плюс 1, или возвращает 0 если такая строка с момента последнего удаления журнала DeleteJournal не обнаружена. Номер может быть использован в дальнейшем для функций Journal, JournalSerial, SetJournalLine (не забыть отнять единицу).
Наверное, теперь про not UO.InJournal("text") ты сам догадаешься...
Last edited by DerMeister =) on 2006-03-28 17:09:11, edited 1 time in total.
-
- Expert!
- Posts: 1032
- Joined: 2006-02-25 21:48:38
Не могли бы просвятить о действии оборота while ..... wend, имхо в выше указаных записях в журнале, while not **** много лишнего и я путаюсь при каком условии он копаеть продолжает, а при каком копает в следующей точке, или я мыслю не в том направлении?
Вообще всё что связано с while, if, repeat, for и т.д. вообще из программирования, а не из инжекта как такогого...
Вот нашел для тебя учебник по паскалю:
http://www.tvoyomsk.com/index.php?id=13 ... 6905b68e27
Втыкай...

А всё что имеет отношение к УО можно найти тут:
http://yoko.netroof.net/help/
и тут:
viewtopic.php?t=3491