Помогете Плз!

Anything and all.

Moderators: Murderator+, Murderator

Post Reply
AD
Posts: 39
Joined: 2004-04-18 01:33:19
Contact:

Помогете Плз!

Post by AD »

Нау4ете делать скрепты! напремере майненга! ЕСле можно поподробней!
user
Posts: 19
Joined: 2004-04-16 00:56:28
Contact:

Post by user »

Для написания майнинга и вообще всех сложных скриптов с перемещением(что кстати не так сложно) научись писать хотябы маленькие скрипты для крафта... потому как тебе нужен либо готовый скрипт либо ты его не осилишь.
Ven
Posts: 16
Joined: 2004-04-15 22:45:52

Re: Помогете Плз!

Post by Ven »

Вот тебе простой скрипт майнинга: Передвигается по контрольным точкам, которые ты указываешь в массиве, копает пока не достигнет предела веса, потом через рунбук телепортируется домой выкладывает добро в ящик, берет из ящика реколы и хлеб, перезаряжает рунбук, телепортируется назад, идет к месту копки и т.д.

;hiding отключен
;айрон выкапывается полностью
sub mining()
var fistx, fisty, fistz, mx, my, mz, i, j
var nowI = 0
fistx = UO.GetX("self")
fisty = UO.GetY("self")
fistz = UO.GetZ("self")
while 1 < 2
mx = UO.GetX("self")
my = UO.GetY("self")
mz = UO.GetZ("self")
; hide(); !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
UO.DeleteJournal()
for i = mx-1 to mx+1
for j = my -2 to my+2
if UO.dead() then
return
endif
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")
UO.DeleteJournal()
UO.Waittargettile("1343", str(i), str(j), str(mz)) ;
UO.Usetype("0x0F39") ;НОМЕР ЛОПАТЫ
while not UO.InJournal("You put") and not UO.InJournal("location") and not UO.InJournal("no ore here") and not UO.InJournal("but fail") and not UO.InJournal("far away") and not UO.InJournal("in rock")
wait (100)
wend
if UO.InJournal("Ore Elemental") then
wait(1000)
UO.Say("guards")
wait(2000)
UO.Say("guards")
hide()
endif
if UO.dead() then
return
endif
if UO.Weight>(UO.STR*4) then
GoHome()
hide()
endif
wend
UO.DeleteJournal()
next
next
; walk(fistx)
nowI = walk1(nowI)
if nowI == 0 then
UO.print("Все, путь закончился")
GoHome()
endif
UO.usetype (0x103B) ;НОМЕР ХЛЕБА
wait(2000)
wend
end sub


sub GoHome()
var x1,y1,x2,y2
UO.print("Полетел домой, добро выкладывать!")
UO.DeleteJournal()
x1 = UO.GetX("self")
y1 = UO.GetY("self")
x2 = UO.GetX("self")
y2 = UO.GetY("self")
uo.recall(0x400C6DE5,2) ;Уникальный НОМЕР РУНБУКА
while (x1 == x2) and (y1 == y2)
wait(100)
x2 = UO.GetX("self")
y2 = UO.GetY("self")
wend


UO.Print("выкладываем добро")
VAR Cont=0x4004929B
UO.SetReceivingContainer(Cont)
UO.DeleteJournal()
UO.FindType('0x19B9','0xffff','my')
while uo.FindCount() <> 0
UO.DeleteJournal()
UO.FindType('0x19B9','0xffff','my')
# UO.print(str(uo.FindCount()))
UO.Grab('0','finditem')
wait(1500)
wend
UO.DeleteJournal()
UO.FindType('0x19B8','0xffff','my')
while uo.FindCount() <> 0
UO.DeleteJournal()
UO.FindType('0x19B8','0xffff','my')
# UO.print(str(uo.FindCount()))
UO.Grab('0','finditem')
wait(1500)
wend
UO.DeleteJournal()
UO.FindType('0x19B7','0xffff','my')
while uo.FindCount() <> 0
UO.DeleteJournal()
UO.FindType('0x19B7','0xffff','my')
# UO.print(str(uo.FindCount()))
UO.Grab('0','finditem')
wait(1500)
wend
UO.DeleteJournal()
UO.FindType('0x19BA','0xffff','my')
while uo.FindCount() <> 0
UO.DeleteJournal()
UO.FindType('0x19BA','0xffff','my')
# UO.print(str(uo.FindCount()))
UO.Grab('0','finditem')
wait(1500)
wend
UO.UnSetReceivingContainer()

wait(5000)

UO.Print("берем хлеб")
UO.FindType('0x103B','0xffff','my') ;хлеб
UO.Print("у меня хлеба осталось "+str(uo.FindCount()))
if uo.FindCount() == 0 then
;хлеб закончился надо взять еще
UO.FindType('0x103B','0xffff',cont) ;хлеб в сундуке
UO.Print("в сундуке хлеба "+str(uo.FindCount()))
if uo.FindCount() <> 0 then
UO.Grab('10','finditem')
wait(1000)
endif
endif

wait(2000)
UO.FindType('0x1F4C','0xffff','my')
UO.Print("реколов осталось "+str(uo.FindCount()))
if uo.FindCount() == 0 then
UO.FindType('0x1F4C','0xffff',cont) ;реколы в сундуке
UO.Print("в сундуке реколов "+str(uo.FindCount()))
if uo.FindCount() <> 0 then
UO.Print("берем реколы из сундука")
UO.Grab('0','finditem')
wait(1000)
endif
endif

;заряжаем рунбук
UO.Print("заряжаем рунбук")
uo.recall(0x400C6DE5,1) ;Уникальный НОМЕР РУНБУКА

wait(8000)

UO.Print("В шахту")
path1() ;Путь к шахтам номер раз
end sub

sub path1()
var x1,y1,x2,y2,x3,y3
x1 = UO.GetX("self")
y1 = UO.GetY("self")
x2 = UO.GetX("self")
y2 = UO.GetY("self")
UO.print("Поперся по первому пути")
UO.DeleteJournal()
uo.recall(0x400C6DE5,3) ; Уникальный НОМЕР РУНБУКА
while UO.InJournal("some time to recharge")
UO.print("Вот уродский рунбук!!! Жду пока перезарядится")
UO.DeleteJournal()
wait(5000)
uo.recall(0x400C6DE5,3) ; Уникальный НОМЕР РУНБУКА
wend
while (x1 == x2) and (y1 == y2)
wait(100)
x2 = UO.GetX("self")
y2 = UO.GetY("self")
wend

dim x[9],y[9]
var len = 9
;расставляем контрольные точки
x[1] = 5308
y[1] = 123
x[2] = 5302
y[2] = 123
x[3] = 5302
y[3] = 99
x[4] = 5316
y[4] = 99
x[5] = 5316
y[5] = 81
x[6] = 5297
y[6] = 81
x[7] = 5297
y[7] = 66
x[8] = 5299
y[8] = 66
x[9] = 5299
y[9] = 62

var i
; var delay = 500
var LastKey = 0;

i = 1
x1 = UO.GetX("self")
y1 = UO.GetY("self")
x2 = UO.GetX("self")
y2 = UO.GetY("self")

while i <= len
while (x1<>x[i]) or (y1<>y[i])
if y1 > y[i] then
UO.Press(33) ;вправо вверх
if LastKey == 33 then
while (x1 == x2) and (y1 == y2)
wait(100)
x2 = UO.GetX("self")
y2 = UO.GetY("self")
wend
endif
LastKey = 33
else
if y1 < y[i] then
UO.Press(35) ;влево вниз
if LastKey == 35 then
while (x1 == x2) and (y1 == y2)
wait(100)
x2 = UO.GetX("self")
y2 = UO.GetY("self")
wend
endif
LastKey = 35
else
if x1 > x[i] then
UO.Press(36) ;влево вверх
if LastKey == 36 then
while (x1 == x2) and (y1 == y2)
wait(100)
x2 = UO.GetX("self")
y2 = UO.GetY("self")
wend
endif
LastKey = 36
else
if x1 < x[i] then
UO.Press(34) ;вправо вниз
if LastKey == 34 then
while (x1 == x2) and (y1 == y2)
wait(100)
x2 = UO.GetX("self")
y2 = UO.GetY("self")
wend
endif
LastKey = 34
endif
endif
endif
endif
x1 = UO.GetX("self")
y1 = UO.GetY("self")
x2 = UO.GetX("self")
y2 = UO.GetY("self")
; UO.Print("x1: "+str(x1)+" y1: "+str(y1)+" x2: "+str(x[i])+" y2: "+str(y[i]))
; UO.Print("i: "+str(i))
wend
UO.print("Дошел до контрольной точки "+str(i)+" следующая "+str(i+1))
i = i+1
wend
end sub


sub hide()
while NOT UO.Hidden()
UO.DeleteJournal()
UO.Exec('warmode 0')
UO.UseSkill('Stealth')
repeat
wait(50)
until UO.InJournal('You have hidden') OR UO.InJournal('seem to hide') OR UO.InJournal('preoccupied')
wend
end sub

sub walk1(i)
dim x[16],y[16]
var x1,y1,x2,y2
var len = 16
;расставляем контрольные точки
x[1] = 5299
y[1] = 62
x[2] = 5299
y[2] = 66
x[3] = 5288
y[3] = 66
x[4] = 5288
y[4] = 68
x[5] = 5289
y[5] = 68
x[6] = 5289
y[6] = 70
x[7] = 5286
y[7] = 70
x[8] = 5286
y[8] = 72
x[9] = 5285
y[9] = 72
x[10] = 5285
y[10] = 75
x[11] = 5286
y[11] = 75
x[12] = 5286
y[12] = 81
x[13] = 5283
y[13] = 81
x[14] = 5283
y[14] = 86
x[15] = 5284
y[15] = 86
x[16] = 5284
y[16] = 99

var LastKey = 0;
x1 = UO.GetX("self")
y1 = UO.GetY("self")
x2 = UO.GetX("self")
y2 = UO.GetY("self")

;-------------Определяем в какой части пути мы находимся-----------------
var j
;------------Определяем находимся ли мы в контрольной точке-------------
if i == 0 then
for j = 1 to len
if (x1==x[j]) and (y1==y[j]) then
UO.print("Нахожусь в контрольной точке номер "+str(j))
i = j+1
if i>len then
return 0
endif
endif
next
endif
;-----Определяем между какими контрольными точками мы находимся по X-----
if i==0 then
for j = 1 to len-1
if x1 == x[j] then
if x1 == x[j+1] then
if ((y1>y[j]) and (y1<y[j+1])) or ((y1<y[j]) and (y1>y[j+1])) then
UO.print("Нахожусь между контрольными точками "+str(j)+" и "+str(j+1))
i = j+1
endif
endif
endif
next
endif
;-----Определяем между какими контрольными точками мы находимся по Y-----
if i==0 then
for j = 1 to len-1
if y1 == y[j] then
if y1 == y[j+1] then
if ((x1>x[j]) and (x1<x[j+1])) or ((x1<x[j]) and (x1>x[j+1])) then
UO.print("Нахожусь между контрольными точками "+str(j)+" и "+str(j+1))
i = j+1
endif
endif
endif
next
endif
;--------Если расположение не найдено тогда облом------------------------
if i==0 then
UO.print("Хрен его знает где я нахожусь!!!")
wait(5000)
return 0
endif
;------------------------------------------------------------------------


if y1 > y[i] then
key1:
UO.Press(33) ;вправо вверх
if LastKey == 33 then
while (x1 == x2) and (y1 == y2)
wait(100)
x2 = UO.GetX("self")
y2 = UO.GetY("self")
wend
else
LastKey = 33
goto key1
endif
LastKey = 33
else
if y1 < y[i] then
key2:
UO.Press(35) ;влево вниз
if LastKey == 35 then
while (x1 == x2) and (y1 == y2)
wait(100)
x2 = UO.GetX("self")
y2 = UO.GetY("self")
wend
else
LastKey = 35
goto key2
endif
LastKey = 35
else
if x1 > x[i] then
key3:
UO.Press(36) ;влево вверх
if LastKey == 36 then
while (x1 == x2) and (y1 == y2)
wait(100)
x2 = UO.GetX("self")
y2 = UO.GetY("self")
wend
else
LastKey = 36
goto key3
endif
LastKey = 36
else
if x1 < x[i] then
key4:
UO.Press(34) ;вправо вниз
if LastKey == 34 then
while (x1 == x2) and (y1 == y2)
wait(100)
x2 = UO.GetX("self")
y2 = UO.GetY("self")
wend
else
LastKey = 34
goto key4
endif
LastKey = 34
endif
endif
endif
endif
x1 = UO.GetX("self")
y1 = UO.GetY("self")
x2 = UO.GetX("self")
y2 = UO.GetY("self")
UO.Print("x1: "+str(x1)+" y1: "+str(y1)+" x2: "+str(x[i])+" y2: "+str(y[i]))
; UO.Print("i: "+str(i))

if (x1==x[i]) or (y1==y[i]) then
UO.print("Дошел до контрольной точки "+str(i)+" следующая "+str(i+1))
i = i+1
endif

if i > len then
return 0
else
return i
endif
end sub

sub coords()
var x,y
x = UO.GetX("self")
y = UO.GetY("self")
UO.Print("x: "+str(x)+" y: "+str(y))
end sub
AD
Posts: 39
Joined: 2004-04-18 01:33:19
Contact:

!!

Post by AD »

Э... Ну согласен мне такой не осилить, а модно немного полег4е скрипт? И есле можно какая команда 4е озна4ает!
Ven
Posts: 16
Joined: 2004-04-15 22:45:52

Re: !!

Post by Ven »

На самом деле он очень простой, просто начинай разбираться от главной функции (mining) если че не понятно, спрашивай
AD
Posts: 39
Joined: 2004-04-18 01:33:19
Contact:

!!

Post by AD »

Ну обьясните команды
Dzen
Posts: 29
Joined: 2004-04-08 16:06:21
Contact:

Post by Dzen »

Еще один пример мининга, роет вокруг себя в хайде ..

Code: Select all

sub mining()
    Var mnPickaxe, mnR, mnXSt, mnXEnd, mnYSt, mnYEnd, mnXMy, mnYMy, mnZMy, mnX, mnY, mnXCur, mnYCur, mnCheck
    mnPickaxe = "0x0E85" # Тип кирки
    mnR = 3              # Радиус копания

    mnXSt = - mnR
    mnXEnd = mnR
    mnYSt = - mnR
    mnYEnd = mnR

    For mnXCur = mnXSt To mnXEnd
     For mnYCur = mnYSt To mnYEnd
      hiding()
      Repeat
       UO.DeleteJournal()
       mnXMy = UO.GetX()
       mnYMy = UO.GetY()
       mnZMy = UO.GetZ()
       mnX = mnXCur + mnXMy
       mnY = mnYCur + mnYMy

       UO.Print("Current position (" + Str(mnX) + ";" + Str(mnY) + ";" + Str(mnZMy) + ")")
       UO.WaitTargetTile("1530", Str(mnX), Str(mnY), Str(mnZMy))
       UO.UseType(mnPickaxe)

       mnCheck = 0
       Repeat
        mnCheck = mnCheck + 1
        Wait(100)
       Until mnCheck >= 120 Or UO.InJournal("You put") Or UO.InJournal("You loose") Or UO.InJournal("Try mining") Or UO.InJournal("no line") Or UO.InJournal("no ore") Or UO.InJournal("no line")
      Until UO.InJournal("no ore") Or UO.InJournal("no line") Or UO.InJournal("Try mining")
     Next
    Next
end sub

sub hiding()
    Var hdntim
    If Not UO.Hidden() Then
     hdnst:
      UO.DeleteJournal()
      hdntim = 0
      UO.UseSkill('Hiding')
      Repeat
       hdntim = hdntim + 1
       Wait(100)
      Until UO.InJournal("You have hidden yourself well") Or hdntim >= 36
      If Not UO.InJournal("You have hidden yourself well") Then
       Goto hdnst
      End If
    End If
end sub


а насчет сложных скриптов, я думаю стоит тебе попробовать написать несколько простых функций, каждая из которых выполняет свое действие.. (один копает, другой ходит по координатам, 3-яя плавит руду, 4-ая реколится и другие..) А потом один, который будет запускать каждую из этих функций и делать соответствующие проверки..
South
Posts: 21
Joined: 2004-04-16 17:11:35
Contact:

Post by South »

По этому поводу кстати вопросик.

предположим надо в главном скрипте запустить дополнительный скриипт и дождатся его выполнения.

Посоветуйте каким образом лучше организовывать задержку в главном скрипте.

Возможен ли в инжекте возврат значения через имя функции пользователя, или надо организовывать глобальную переменную-флаг которую по завершению дополнительного скрипта просто надо записать какое нить определенное значение ???????
Dzen
Posts: 29
Joined: 2004-04-08 16:06:21
Contact:

Post by Dzen »

задержку я обычно реализовываю припомощи небольшого цикла:

Code: Select all

Repeat
 Wait(100)
Until условие_которое_мы_ждем

так же я обычно добавляю переменную, которая помогает проверить не случилось ли чего другого, не предусмотренного в скрипте, тоесть чтобы цикл не зацикливался ..

Code: Select all

Var check
check = 0
Repeat
 check = check + 1
 Wait(100)
Until check >= 100 Or условие_которое_мы_ждем

Примером может послужить мой мининг..
Вот фрагмент:

Code: Select all

       mnCheck = 0 
       Repeat
        mnCheck = mnCheck + 1
        Wait(100)
       Until mnCheck >= 120 Or UO.InJournal("You put") Or UO.InJournal("You loose") Or UO.InJournal("Try mining") Or UO.InJournal("no line") Or UO.InJournal("no ore") Or UO.InJournal("no line")


Насчет возврата значения сказать не могу, т.к. не знаю. Скажу одно, что можно вызывать функции с определенными значениями имя_функции(первое_значение, второе, ..., последнее) и потом ими можно аперировать. Также, если ты вызываешь функцию, то у тебя скрипт будет ждать, пока она не выполнится, и не пойдет дальше. Примером этих вызывов может послужить сложные скрипты мининга, ламбера и другие.. Там обычно главный скрипт вызывает функцию ходьбы, причем при вызове он дает ей координаты, куда чар должен дойти. Та, в свою очередь, доходит, завершается и главный скрипт переходит к следующему действию..
Lego-go
Posts: 2
Joined: 2004-07-15 18:21:18

Post by Lego-go »

Code: Select all

       mnCheck = 0 
       Repeat
        mnCheck = mnCheck + 1
        Wait(100)
       Until mnCheck >= 120 Or UO.InJournal("You put") Or UO.InJournal("You loose") Or UO.InJournal("Try mining") Or UO.InJournal("no line") Or UO.InJournal("no ore") Or UO.InJournal("no line")


ужас какой... а не проще так ?

Code: Select all

       mnCheck = 0 
       Repeat
        mnCheck = mnCheck + 1
        Wait(100)
       Until mnCheck >= 120 Or UO.InJournal("You") Or UO.InJournal("Try mining") Or UO.InJournal("no")


всеравно ведь повторяюцца фразы "You" и "no"...

можно еще и так... кому как нравицца...

Code: Select all

mnCheck = 0
while not mnCheck >= 120 and not UO.InJournal("You") and not UO.InJournal("Try mining") and not UO.InJournal("no")
    mnCheck = mnCheck + 1
    Wait(100)
wend
Xabus
Posts: 117
Joined: 2004-05-18 02:24:25

Post by Xabus »

ну тогда обеснить что значит вот етоа строчка!
var fistx, fisty, fistz, mx, my, mz, i, j
что значит именнт приставка fist?
x y z - это координаты?
а еще что таконе приставка m?
I, j - это переменные!?
если да, то они сразу есть в инжекте или их надо erfps указывать?
Xabus
Posts: 117
Joined: 2004-05-18 02:24:25

Post by Xabus »

for i = mx-1 to mx+1
for j = my -2 to my+2
все понял это типо корраз и указывает переменные i и j так?
но тогда такой вопрос что именно они указывают!
типо чтобы тыркал на таил котороый указан потом тыкал на тоже тока -1 потом -2
AGRS
Expert!
Posts: 1007
Joined: 2004-04-04 21:40:09
Contact:

Post by AGRS »

Неплохо бы для начала прочитать документацию. Всю!
Xabus
Posts: 117
Joined: 2004-05-18 02:24:25

Post by Xabus »

и это тоже :)
BETEPAH
Expert!
Posts: 838
Joined: 2004-05-31 09:31:51
Contact:

Post by BETEPAH »

AGRS wrote:Неплохо бы для начала прочитать документацию. Всю!



Так вот как пишутся скрипты !!!! ......... ура я все понял ))))) :lol:
Все просто.
BETEPAH ™
Yaponchick
Posts: 36
Joined: 2004-06-24 14:50:25
Location: Moscow, Russia
Contact:

Re: Помогете Плз!

Post by Yaponchick »

AD wrote:Нау4ете делать скрепты! напремере майненга! ЕСле можно поподробней!


Научись СНАЧАЛА ПО РУССКИ ПИСАТЬ!
(www.translit.ru)
Я наверное, один из старых ;)
Post Reply