Можно ли подсчитать uo.injounal(****)

Ask for help

Moderators: Murderator+, Murderator

Post Reply
Sanch
Posts: 308
Joined: 2005-07-17 15:30:52
Location: www.drw.ru

Можно ли подсчитать uo.injounal(****)

Post by Sanch »

Собственно проблема в следующем:
есть скрипт под мининг, взять выложеный под дрв и отредактированный мной под мой шард, проблема заключается в следующем максимальные координаты в которых чар может окопаться от -2 до 2, при этом руды в каждой из точек оч мало, выкапывает все вокруг себя буквально за 5 мин, иногда быстрее, хочу сделать так чтобы при повторе 25 раз подряд There is no ore here, чар перемещался на 5 клеток вниз, при удачном выкапывании срабатвала очистка журнала, так вот хочу спросить, реально пощатать количество неудачных попыток выкопать руду подряд?
Grin
Expert!
Posts: 2580
Joined: 2005-05-04 14:05:19
Location: Москва

Post by Grin »

ты не тем замарачиваешься...
InJournal тебе нужен что бы отпределять результат от твоих капаний..
5х5 задаешь циклом счетчиком... как только ни отрабатывают о делаешь переход и опять колбасишься;)
DerMeister =)
Expert!
Posts: 1032
Joined: 2006-02-25 21:48:38

Post by DerMeister =) »

Вот что могу предложить, но скрипт не под ДРВ:

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
DerMeister =)
Expert!
Posts: 1032
Joined: 2006-02-25 21:48:38

Re: Можно ли подсчитать uo.injounal(****)

Post by DerMeister =) »

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...
Sanch
Posts: 308
Joined: 2005-07-17 15:30:52
Location: www.drw.ru

Post by Sanch »

Большое спасибо за помощь, ща че нить попробую намудрить... :)

Возникла еще 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 вопрос :roll: , можно ли убрать там not, оставить просто "while uo.inj***" и поменять списки местами и скрипт будет работать по тому же принцепу или я несу полную чушь?
DerMeister =)
Expert!
Posts: 1032
Joined: 2006-02-25 21:48:38

Post by DerMeister =) »

:shock:

Первое: 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.
DerMeister =)
Expert!
Posts: 1032
Joined: 2006-02-25 21:48:38

Post by DerMeister =) »

Не могли бы просвятить о действии оборота while ..... wend, имхо в выше указаных записях в журнале, while not **** много лишнего и я путаюсь при каком условии он копаеть продолжает, а при каком копает в следующей точке, или я мыслю не в том направлении?


Вообще всё что связано с while, if, repeat, for и т.д. вообще из программирования, а не из инжекта как такогого...

Вот нашел для тебя учебник по паскалю:
http://www.tvoyomsk.com/index.php?id=13 ... 6905b68e27
Втыкай... :roll:

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