Вопос специалистам скриптинга.

Anything and all.

Moderators: Murderator+, Murderator

Post Reply
SEGA
Posts: 44
Joined: 2005-07-09 13:45:19

Вопос специалистам скриптинга.

Post by SEGA »

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

Можете помочь подсказать в чем проблемма. В ходилке или нет, если да, то посоветовать переделать.
Заранее спасибо.

Code: Select all

var res 

sub main() 
DIM rune[6] 
DIM ven[6] 
var i, n 
rune[1]='0x411F8886' 
rune[2]='0x411F8888' 
rune[3]='0x411F8887' 
rune[4]='0x411F8885' 
rune[5]='0x411F9016' 
rune[6]='0x411F9E34' 

ven[1]='0x00FD525F' 
ven[2]='0x011883D7' 
ven[3]='0x01599B29' 
ven[4]='0x001D57C7' 
ven[5]='0x0053B6E4' 
ven[6]='0x015C6AD6' 

repeat 
for i=1 to 6 
recall(i,rune) 
WalkN(0,0,ven[i])
UO.Set('buydelay','3000')
UO.buy('alhim','Alchemist') 
wait(500) 
UO.Say("bye") 
UO.DeleteJournal() 
UO.Click(rune[i]) 
repeat 
wait(500) 
until UO.InJournal('jumps left') 
takenum() 
if res < 10 then ; 
Mark(i,rune) 
endif 
med() 
next 
until UO.Dead() 
end sub 
##################################### 
sub takenum() 
var ns, j, i, n 
var str, num 
num='' 
ns=0 
n=uo.InJournal('jumps left')-1 
str=uo.Journal(n) 
UO.Print(str) 
j = len( str ) - 1 
for i = 0 to j 

if ns==1 and str[i]<>' ' then 
num=num+str[i] 
else 
ns=0 
endif 
if str[i] =='(' then 
ns=1 
endif 
next 
res = val(num) 
UO.Print(str(res)) 
end sub 
##################################### 
sub Recall(i,rune) 
var b 
uo.print('Recoll Rune '+str(i)) 
for b=1 to 10 
uo.deletejournal() 
uo.waittargetobject(rune[i]) 
uo.cast('Recall',rune[i]) 
if WaitForRecall()==1 then 
return 1 
end if 
next 
return 0 
end sub 
##################################### 
sub Mark(i,rune) 
uo.waittargetobject(rune[i]) 
uo.cast('Mark',rune[i]) 
end sub 
##################################### 
sub WaitForRecall() 
var Text1=uo.getname()+": The spell fizzles." 
var mess='',lastX=uo.getX(),lastY=uo.getY() 
for var v=0 to 200 
mess=uo.journal(0) 
if uo.Journal(0)==Text1 then 
return 0 
end if 
if uo.getX()<>lastX OR uo.getY()<>LastY then 
return 1 
end if 
wait(50) 
next 
return 0 
end sub 
###################################### 
sub med() 
VAR LastTimer 
while UO.Mana<UO.Int 
LastTimer=UO.Timer() 
UO.UseSkill('Meditation') 
repeat 
wait(100) 
until UO.InJournal("You are") OR UO.InJournal("You lose") OR UO.Timer()>LastTimer+200 
UO.DeleteJournal() 
wait(200) 
wend 
end sub 
############################## 
# WalkN(X,Y,Serial) - char is walking by dX and dY step 
# sub using Home, End, PgUp, PgDown keys 
# d'not rebind this key from default action! 
# serial - Serial of target or "" - string 
# walkwait - delay after keypress 
# Example: 
# WalkN(2080,2113,'') - go to coordinates 
# WalkN(0,0,'0x12345678') - go to target position 
#-------------------------------------------------------------- 
sub WalkN(x,y,Target) 
VAR i,StepSucess 
VAR dx,dy,Exit=0 
While Exit<>1 
If Target<>"" Then 
dx=UO.GetX(Target)-UO.GetX() 
dy=UO.GetY(Target)-UO.GetY() 
If UO.GetDistance(Target)<2 Then 
Exit=1 
Endif 
Else 
dx=x-UO.GetX() 
dy=y-UO.GetY() 
If dx==0 AND dy==0 Then 
Exit=1 
Endif 
Endif 
If dx<>0 AND dy<>0 Then 
If dx>0 AND dy>0 Then 
StepSucess=Go(3,40,300) ;SE - DownArrow 
If StepSucess==-1 Then 
StepSucess=Go(7,38,300) ;WN - UpArrow 
StepSucess=Go(1,39,300) ;NE - RightArrow 
If StepSucess==-1 Then 
StepSucess=Go(5,37,300) ;SW - LeftArrow 
Endif 
Endif 
Endif 
If dx>0 AND dy<0 Then 
StepSucess=Go(1,39,300) ;NE - RightArrow 
If StepSucess==-1 Then 
StepSucess=Go(5,37,300) ;SW - LeftArrow 
StepSucess=Go(3,40,300) ;SE - DownArrow 
If StepSucess==-1 Then 
StepSucess=Go(7,38,300) ;WN - UpArrow 
Endif 
Endif 
Endif 
If dx<0 AND dy>0 Then 
StepSucess=Go(5,37,300) ;SW - LeftArrow 
If StepSucess==-1 Then 
StepSucess=Go(1,39,300) ;NE - RightArrow 
StepSucess=Go(7,38,300) ;WN - UpArrow 
If StepSucess==-1 Then 
StepSucess=Go(3,40,300) ;SE - DownArrow 
Endif 
Endif 
Endif 
If dx<0 AND dy<0 Then 
StepSucess=Go(7,38,300) ;WN - UpArrow 
If StepSucess==-1 Then 
StepSucess=Go(3,40,300) ;SE - DownArrow 
StepSucess=Go(5,37,300) ;SW - LeftArrow 
If StepSucess==-1 Then 
StepSucess=Go(1,39,300) ;NE - RightArrow 
Endif 
Endif 
Endif 
Endif 
If dx<>0 AND dy==0 Then 
If dx>0 Then 
StepSucess=Go(2,34,300) ;E - PgDown 
If StepSucess==-1 Then 
StepSucess=Go(3,40,300) ;SE - DownArrow 
If StepSucess==-1 Then 
StepSucess=Go(1,39,300) ;NE - RightArrow 
Endif 
StepSucess=Go(2,34,300) ;E - PgDown 
Endif 
Endif 
If dx<0 Then 
StepSucess=Go(6,36,300) ;W - Home 
If StepSucess==-1 Then 
StepSucess=Go(7,38,300) ;WN - UpArrow 
If StepSucess==-1 Then 
StepSucess=Go(5,37,300) ;SW - LeftArrow 
Endif 
StepSucess=Go(6,36,300) ;W - Home 
Endif 
Endif 
Endif 
If dx==0 AND dy<>0 Then 
If dy>0 Then 
StepSucess=Go(4,35,300) ;S - End 
If StepSucess==-1 Then 
StepSucess=Go(3,40,300) ;SE - DownArrow 
If StepSucess==-1 Then 
StepSucess=Go(5,37,300) ;SW - LeftArrow 
Endif 
StepSucess=Go(4,35,300) ;S - End 
Endif 
Endif 
If dy<0 Then 
StepSucess=Go(0,33,300) ;N - PgUp 
If StepSucess==-1 Then 
StepSucess=Go(1,39,300) ;NE - RightArrow 
If StepSucess==-1 Then 
StepSucess=Go(7,38,300) ;WN - UpArrow 
Endif 
StepSucess=Go(0,33,300) ;N - PgUp 
Endif 
Endif 
Endif 
Wend 
end sub 
sub Go(dir,key,walkwait) 
VAR x,y, OldDir 
x=UO.GetX() 
y=UO.GetY() 
OldDir=UO.GetDir() 
If UO.GetDir()<>dir Then 
UO.Press(key) 
wait(walkwait) 
If UO.GetDir()<>dir Then 
CheckLag() 
Endif 
Endif 
UO.Press(key) 
wait(walkwait) 
If x==UO.GetX() AND y==UO.GetY() Then 
CheckLag() 
Endif 
If x==UO.GetX() AND y==UO.GetY() AND OldDir<>UO.GetDir() Then 
UO.Press(key) 
wait(walkwait) 
Endif 
If x==UO.GetX() AND y==UO.GetY() Then 
CheckLag() 
Endif 
If x==UO.GetX() AND y==UO.GetY() Then 
UO.Print("Zasada!") 
return -1 
Else 
return 1 
Endif 
end sub 
######################################### 
sub CheckLag() 
UO.DeleteJournal() 
UO.Click('backpack') 
repeat 
wait(500) 
until UO.InJournal('Backpack') 
end sub 
Mihail
Expert!
Posts: 548
Joined: 2005-05-20 20:30:10
Contact:

Post by Mihail »

см. прилепленный топик с ходилками
SEGA
Posts: 44
Joined: 2005-07-09 13:45:19

Post by SEGA »

Ммм, а может быть и эта ходилка не плоха:

Code: Select all

############################## 
# WalkN(X,Y,Serial) - char is walking by dX and dY step 
# sub using Home, End, PgUp, PgDown keys 
# d'not rebind this key from default action! 
# serial - Serial of target or "" - string 
# walkwait - delay after keypress 
# Example: 
# WalkN(2080,2113,'') - go to coordinates 
# WalkN(0,0,'0x12345678') - go to target position 
#-------------------------------------------------------------- 
sub WalkN(x,y,Target) 
VAR i,StepSucess 
VAR dx,dy,Exit=0 
While Exit<>1 
If Target<>"" Then 
dx=UO.GetX(Target)-UO.GetX() 
dy=UO.GetY(Target)-UO.GetY() 
If UO.GetDistance(Target)<2 Then 
Exit=1 
Endif 
Else 
dx=x-UO.GetX() 
dy=y-UO.GetY() 
If dx==0 AND dy==0 Then 
Exit=1 
Endif 
Endif 
If dx<>0 AND dy<>0 Then 
If dx>0 AND dy>0 Then 
StepSucess=Go(3,40,300) ;SE - DownArrow 
If StepSucess==-1 Then 
StepSucess=Go(7,38,300) ;WN - UpArrow 
StepSucess=Go(1,39,300) ;NE - RightArrow 
If StepSucess==-1 Then 
StepSucess=Go(5,37,300) ;SW - LeftArrow 
Endif 
Endif 
Endif 
If dx>0 AND dy<0 Then 
StepSucess=Go(1,39,300) ;NE - RightArrow 
If StepSucess==-1 Then 
StepSucess=Go(5,37,300) ;SW - LeftArrow 
StepSucess=Go(3,40,300) ;SE - DownArrow 
If StepSucess==-1 Then 
StepSucess=Go(7,38,300) ;WN - UpArrow 
Endif 
Endif 
Endif 
If dx<0 AND dy>0 Then 
StepSucess=Go(5,37,300) ;SW - LeftArrow 
If StepSucess==-1 Then 
StepSucess=Go(1,39,300) ;NE - RightArrow 
StepSucess=Go(7,38,300) ;WN - UpArrow 
If StepSucess==-1 Then 
StepSucess=Go(3,40,300) ;SE - DownArrow 
Endif 
Endif 
Endif 
If dx<0 AND dy<0 Then 
StepSucess=Go(7,38,300) ;WN - UpArrow 
If StepSucess==-1 Then 
StepSucess=Go(3,40,300) ;SE - DownArrow 
StepSucess=Go(5,37,300) ;SW - LeftArrow 
If StepSucess==-1 Then 
StepSucess=Go(1,39,300) ;NE - RightArrow 
Endif 
Endif 
Endif 
Endif 
If dx<>0 AND dy==0 Then 
If dx>0 Then 
StepSucess=Go(2,34,300) ;E - PgDown 
If StepSucess==-1 Then 
StepSucess=Go(3,40,300) ;SE - DownArrow 
If StepSucess==-1 Then 
StepSucess=Go(1,39,300) ;NE - RightArrow 
Endif 
StepSucess=Go(2,34,300) ;E - PgDown 
Endif 
Endif 
If dx<0 Then 
StepSucess=Go(6,36,300) ;W - Home 
If StepSucess==-1 Then 
StepSucess=Go(7,38,300) ;WN - UpArrow 
If StepSucess==-1 Then 
StepSucess=Go(5,37,300) ;SW - LeftArrow 
Endif 
StepSucess=Go(6,36,300) ;W - Home 
Endif 
Endif 
Endif 
If dx==0 AND dy<>0 Then 
If dy>0 Then 
StepSucess=Go(4,35,300) ;S - End 
If StepSucess==-1 Then 
StepSucess=Go(3,40,300) ;SE - DownArrow 
If StepSucess==-1 Then 
StepSucess=Go(5,37,300) ;SW - LeftArrow 
Endif 
StepSucess=Go(4,35,300) ;S - End 
Endif 
Endif 
If dy<0 Then 
StepSucess=Go(0,33,300) ;N - PgUp 
If StepSucess==-1 Then 
StepSucess=Go(1,39,300) ;NE - RightArrow 
If StepSucess==-1 Then 
StepSucess=Go(7,38,300) ;WN - UpArrow 
Endif 
StepSucess=Go(0,33,300) ;N - PgUp 
Endif 
Endif 
Endif 
Wend 
end sub 
sub Go(dir,key,walkwait) 
VAR x,y, OldDir 
x=UO.GetX() 
y=UO.GetY() 
OldDir=UO.GetDir() 
If UO.GetDir()<>dir Then 
UO.Press(key) 
wait(walkwait) 
If UO.GetDir()<>dir Then 
CheckLag() 
Endif 
Endif 
UO.Press(key) 
wait(walkwait) 
If x==UO.GetX() AND y==UO.GetY() Then 
CheckLag() 
Endif 
If x==UO.GetX() AND y==UO.GetY() AND OldDir<>UO.GetDir() Then 
UO.Press(key) 
wait(walkwait) 
Endif 
If x==UO.GetX() AND y==UO.GetY() Then 
CheckLag() 
Endif 
If x==UO.GetX() AND y==UO.GetY() Then 
UO.Print("Zasada!") 
return -1 
Else 
return 1 
Endif 
end sub 

Code: Select all

# WalkN(2080,2113,'') - go to coordinates 
# WalkN(0,0,'0x12345678') - go to target position 
#-------------------------------------------------------------- 
sub WalkN(x,y,Target) 
Вот как понять "go to target position" какие мне именно надо вписать координаты и ID?
Mihail
Expert!
Posts: 548
Joined: 2005-05-20 20:30:10
Contact:

Post by Mihail »

я могу ошибаться но видимо go to target posotoin это

Code: Select all

target=0x00000
x=uo.getx(target)
y=uo.gety(target)
walk(x,y)
типа того :)
DerMeister =)
Expert!
Posts: 1032
Joined: 2006-02-25 21:48:38

Post by DerMeister =) »

&pathfind(dx,dy) ;)
DerMeister сейчас на нейрале!
Savage
Expert!
Posts: 1205
Joined: 2004-04-04 11:13:54
Location: Балаково, Саратовская обл.
Contact:

Post by Savage »

Попробуй SuperWalk можеь поможет. Она умеет обходить простые препядствия.
SEGA
Posts: 44
Joined: 2005-07-09 13:45:19

Post by SEGA »

DerMeister =) wrote:&pathfind(dx,dy) ;)
ДерМейстер, ты не мог бы указать на хорошую ходилку на пачфайдинге и помочь состыковать ее со скриптом.
Savage wrote:Попробуй SuperWalk можеь поможет. Она умеет обходить простые препядствия.
Сэвадж, а что это за СуперВалк?
Savage
Expert!
Posts: 1205
Joined: 2004-04-04 11:13:54
Location: Балаково, Саратовская обл.
Contact:

Post by Savage »

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

Post by DerMeister =) »

SEGA wrote:
DerMeister =) wrote:&pathfind(dx,dy) ;)
ДерМейстер, ты не мог бы указать на хорошую ходилку на пачфайдинге и помочь состыковать ее со скриптом.
Savage wrote:Попробуй SuperWalk можеь поможет. Она умеет обходить простые препядствия.
Сэвадж, а что это за СуперВалк?
=_) &pathfind(dx,dy) и есть ходилка :wink: Только в обычном инжекте её нету, она есть в пинжекте.
DerMeister сейчас на нейрале!
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

А для обычного инжекта заменой &patchfind является связка с ИзиУО. Как это использовать и функции для этого - смотри в топике с моим наследством, простой вариант где-то в начале, более продвинутый - в конце.
Ни один скрипт не работает? Пора обновить [url=http://www.eof.nm.ru/FiLeS/uoloop.exe]Инжект[/url]...
Все работает, но хочется большего? Пора переходить на [url=http://stealth.od.ua/]стелс[/url]...
dmitrykit
Posts: 247
Joined: 2005-06-12 22:12:15

Post by dmitrykit »

pathfind vesch,.. esli ktoto realizujet algoritm dlja hodilki s ispolzovanijem pathfinda na dliteljnyje rasstojanija.. to konkurentov ej nebudet
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

dmitrykit wrote:pathfind vesch,.. esli ktoto realizujet algoritm dlja hodilki s ispolzovanijem pathfinda na dliteljnyje rasstojanija.. to konkurentov ej nebudet
В этом нет никаких проблем. Идешь http://www.easyuo.com, берешь там скрипт на хождение (например Roadkill's RKSpotAutoWalker, http://www.easyuo.com/forum/viewtopic.php?p=58641#58641, классный скриптец, я пользовался им раньше на изе). Язык в Изе элементарный, проще чем в инжекте, переписать на перл вообще проблем нет. Патчфинд Изя использует, естественно, тот же самый, что и Пинжект. То есть встроенный в клиент...

Code: Select all

;================================== 
; Script Name: RKSpotAutoWalker.txt 
; Author: Roadkill 
; Version: 1.0 
; Client Tested with: 4.0.3d 
; EUO version tested with: build 0093 
; Shard OSI / FS: OSI 
; Revision Date: 10Jul04 
; Public Release: 10Jul04 
; Global Variables Used: none 
; Purpose: Auto or manual long-distance pathfinding to a spot with continuous 
;    distance & direction-arrow.  If auto enabled (3rd param #true) it 
;   AUTO-PATHFINDS no matter how far the spot is!  Autosenses if called 
;   or standalone andadjusts. Auto-unblocks. Auto-adjusts for hills. 
;==================================
Ни один скрипт не работает? Пора обновить [url=http://www.eof.nm.ru/FiLeS/uoloop.exe]Инжект[/url]...
Все работает, но хочется большего? Пора переходить на [url=http://stealth.od.ua/]стелс[/url]...
discon
Posts: 34
Joined: 2006-08-09 20:33:57

Post by discon »

Народ, да чего вы мутите? выложили бы скрипт рабочий на скупку..... неповерю что ни у кого нету
Scripts Writer
Posts: 2259
Joined: 2005-04-19 18:00:29
Location: Московская область
Contact:

Post by Scripts Writer »

Есть. Раздел Scripts!
discon
Posts: 34
Joined: 2006-08-09 20:33:57

Post by discon »

You Must Die wrote:Есть. Раздел Scripts!
Млин, умный самый!!! еслиб он работал, так наверно никто бы не создавал такие топы!!!
DerMeister =)
Expert!
Posts: 1032
Joined: 2006-02-25 21:48:38

Post by DerMeister =) »

discon wrote:
You Must Die wrote:Есть. Раздел Scripts!
Млин, умный самый!!! еслиб он работал, так наверно никто бы не создавал такие топы!!!
Ты не умнее ;)
ЗЫ: Юзайте гугл и (ой!) не еб*те мозги :evil:
DerMeister сейчас на нейрале!
Scripts Writer
Posts: 2259
Joined: 2005-04-19 18:00:29
Location: Московская область
Contact:

Post by Scripts Writer »

Еслиб он не работал, то отсюда 2 следствия:

1. Он бы там не висел.
2. Я бы этого не говорил.

Посчитай сколько топов на мининг и ламбер, и зделай вывод что эти скрипты не рабочие.
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

discon wrote:Млин, умный самый!!! еслиб он работал, так наверно никто бы не создавал такие топы!!!
В разделе Scripts! опубликованы только проверенные, 100% рабочие скрипты. Если у тебя все равно не работает - решение ищи в моей подписи.
Ни один скрипт не работает? Пора обновить [url=http://www.eof.nm.ru/FiLeS/uoloop.exe]Инжект[/url]...
Все работает, но хочется большего? Пора переходить на [url=http://stealth.od.ua/]стелс[/url]...
dmitrykit
Posts: 247
Joined: 2005-06-12 22:12:15

Post by dmitrykit »

Edred wrote:
dmitrykit wrote:pathfind vesch,.. esli ktoto realizujet algoritm dlja hodilki s ispolzovanijem pathfinda na dliteljnyje rasstojanija.. to konkurentov ej nebudet
В этом нет никаких проблем. Идешь http://www.easyuo.com, берешь там скрипт на хождение (например Roadkill's RKSpotAutoWalker, http://www.easyuo.com/forum/viewtopic.php?p=58641#58641, классный скриптец, я пользовался им раньше на изе). Язык в Изе элементарный, проще чем в инжекте, переписать на перл вообще проблем нет. Патчфинд Изя использует, естественно, тот же самый, что и Пинжект. То есть встроенный в клиент...

Code: Select all

;================================== 
; Script Name: RKSpotAutoWalker.txt 
; Author: Roadkill 
; Version: 1.0 
; Client Tested with: 4.0.3d 
; EUO version tested with: build 0093 
; Shard OSI / FS: OSI 
; Revision Date: 10Jul04 
; Public Release: 10Jul04 
; Global Variables Used: none 
; Purpose: Auto or manual long-distance pathfinding to a spot with continuous 
;    distance & direction-arrow.  If auto enabled (3rd param #true) it 
;   AUTO-PATHFINDS no matter how far the spot is!  Autosenses if called 
;   or standalone andadjusts. Auto-unblocks. Auto-adjusts for hills. 
;==================================


Nu vsja problemma v to i uprajecca... 4to za neimenijem vremeni, i otsutstvijem opyta v easyuo, ja etogo nesdelaju...
Post Reply