Yoko

All sides of Injection
It is currently 2024-04-20 01:02:20

All times are UTC+02:00




Post new topic  Reply to topic  [ 6 posts ] 

If uo.all_OK return 1 else return 2 end if
1 50%  50%  [ 3 ]
2 50%  50%  [ 3 ]
Total votes: 6
Author Message
PostPosted: 2010-01-17 20:08:08 
Offline

Joined: 2004-09-08 05:17:37
Posts: 8
Скрипт писался для себя. Хотелось бы упростить некоторые функции,так как иногда вылезает ошибка парсера...(в основном когда убивают)
Короче если кому нечем занятся,прошу просмотреть бегло,мот вдруг что увидите,или добавите пару функций(или переделаете на стелз :D ).Зарание спасибо.
пс. так как скрипт бьется,вылаживаю без /code


##############################
#Crafted by 08 - 17j,2010
#For DRW.ru Shard Injection 505.18 Vendor
#Lumberjacking v 7.1
#Ламбер рядом с домом/сейфом
#Смена координат при появлении эНта,
#или вырубке одного места.
#Три разных места для рубки
#Авторес,автореконектИ
#Идеален для прокачки ламбера
###############################
# Что нужно
# 1= Sейф(1 шт),сумка с топорами в нём(1шт)
# 2=Еда(pigs),бинты(все в сумку с топорами)
# 3= топоры четыре вида(побольше)
# "battle axe" * "executioners axe"
# "a large battle axe" * "a two handed axe"
# 4=Бука с руной к сейфу(9 руна по умолчанию)
#################################
# FaQ #
#################################
#Разместить сейф в заборе,с доступом извне
#[][][][][][][][][][][][][][][][][][][][][][]
#Добавить через скрипт МАРКИРОВКА ДЕРЕВЬЕВ
#Или через команду ,infotile
#три .dat фаила,положить в корень диска C:\
#обозвать файлы в порядке очереди рубки-
# tr0.dat tr1.dat tr2.dat
#в случаи появления энта,чар меняет фаил рубки
#на следуюший(логично разместить все три места
#в разных частях леса).
#[][][][][][][][][][][][][][][][][][][][][][]
#включить AUTORUN в настройках игры или через
#выполнение скрипта AR_On().Слезть с лошади
#Настроить переменные под себя.
#Перем.ОБЯЗАТЕЛЬНЫЕ к настроике помечены "!"
################################
# [color=red]Внимание!

# Неотправленные Буквы в чате
# останавливают ходилку!
# Некоторые команды инжекта и номера рун
# вы можете найти снизу скрипта
#################################
# Переменные #
################################
# Расположение кнопки HELP
var helpX=980 # Переменные без кавычек
var helpY=55 # Переменные без кавычек
#################################
var Runebook='0x404ACE9F' # Для рекола домой. !
var Runenr='1025' # Номер руны в книге. !
var food='0x09BB' # Тип еды(свинья!,внимание мусульмане)
var band='0x0E21' #тип бандаг
var sunduk='0x40556A9D' #Сейф !
var sumka_axe='0x4021CB0B'#Сумка с топорами !
var homeX=1111#Координата X рядом с сундуком !
var homeY=1111#Координатa Y рядом с сундуком !
var homeXreserv=1112#Резервные координаты !
var homeYreserv=1112#Резервные координаты !
#Резервные коорд.=Коорд.X,Y,увеличиные на 1
var StepTimeOut=350 #Таймаут шага
##################################
sub main()
uo.set('quiet', '0') #Рекомендую поставить 1 после отладки рубки
uo.set('finddistance','10')
xy()
Open(sunduk)
Open(sumka_axe)
wait(500)
tallq()
DropLogs()
uo.exec('exec lumbera')
uo.exec('exec Reconnector')
uo.exec('exec Resurrector')
endsub
####################LUMBER######################
#[][][][][][][][][][][][][][][][][][][]LUMBER_A[][][][][][][][][][][][][][][][]
###############################################

sub lumbera()
var f=file("C:\tr0.dat"),TreeCount=0,i
dim TreeX[500],TreeY[500],TreeT[500]
f.open()
uo.exec('terminate cheker1')
uo.exec('terminate cheker2')
uo.exec('terminate cheker')
uo.exec('terminate lumberc')
uo.exec('exec cheker')
TreeCount=safe call f.readNumber()
for i=1 to TreeCount
TreeT[i]=safe call f.ReadNumber()
TreeX[i]=safe call f.ReadNumber()
TreeY[i]=safe call f.ReadNumber()
next
f.close()
while not uo.dead()
for i=1 to TreeCount
uo.Print('Lumber1=Идем к дереву номер '+str(i)+': x='+str(TreeX[i])+' y='+str(TreeY[i]))
walker(treex[i],treey[i],1)
GetTree(str(treeT[i]),str(treeX[i]),str(TreeY[i]),str(uo.getz()))
next
DropLogs()
uo.exec('exec lumberb')
wend
endsub
#[][][][][][][][][][][][][][][][][][][]LUMBER_B[][][][][][][][][][][]
sub lumberb()
var f=file("C:\tr1.dat"),TreeCount=0,i
dim TreeX[500],TreeY[500],TreeT[500]
uo.exec('terminate cheker1')
uo.exec('terminate cheker2')
uo.exec('terminate cheker')
uo.exec('terminate lumbera')
f.open()
uo.exec('exec cheker1')
TreeCount=safe call f.readNumber()
for i=1 to TreeCount
TreeT[i]=safe call f.ReadNumber()
TreeX[i]=safe call f.ReadNumber()
TreeY[i]=safe call f.ReadNumber()
next
f.close()
while not uo.dead()
for i=1 to TreeCount
uo.Print('Lumber2=Идем к дереву номер '+str(i)+': x='+str(TreeX[i])+' y='+str(TreeY[i]))
walker(treex[i],treey[i],1)
# ToHide()
GetTree(str(treeT[i]),str(treeX[i]),str(TreeY[i]),str(uo.getz()))
next
DropLogs()
uo.exec('exec lumberc')
wend
endsub
#[][][][][][][][][][][][][][][][][][][]LUMBER_C[][][][][][][][][][][]
sub lumberc()
var f=file("C:\tr2.dat"),TreeCount=0,i
dim TreeX[500],TreeY[500],TreeT[500]
uo.exec('terminate cheker1')
uo.exec('terminate cheker2')
uo.exec('terminate cheker')
uo.exec('terminate lumberb')
uo.exec('exec cheker2')
f.open()
TreeCount=safe call f.readNumber()
for i=1 to TreeCount
TreeT[i]=safe call f.ReadNumber()
TreeX[i]=safe call f.ReadNumber()
TreeY[i]=safe call f.ReadNumber()
next
f.close()
while not uo.dead()
for i=1 to TreeCount
uo.Print('Lumber3=Идем к дереву номер '+str(i)+': x='+str(TreeX[i])+' y='+str(TreeY[i]))
walker(treex[i],treey[i],1)
# ToHide()
GetTree(str(treeT[i]),str(treeX[i]),str(TreeY[i]),str(uo.getz()))
next
DropLogs()
uo.exec('exec lumbera')
wend
endsub
#[][][][][][][][][][][][][][][][][][][]GET_TREE[][][][][][][][][][][][]
Sub GetTree(type,x,y,z)
var ms1="logs in your pack"
var ms2="logs here to chop"
var ms3="log in your pack"
var ms4="You hack"
var ms5="That is too far away"
var ms6="You can't reach this"
var Time
Time=uo.Timer()
wait(200)
repeat
uo.deletejournal()
uo.waittargettile(type,x,y,z)
uo.useobject('axe')
#cheker()
repeat
wait(100)
########ВНИМАНИЕ!!!#########ВНИМАНИЕ!!!#########ВНИМАНИЕ!!!#########ВНИМАНИЕ!!!
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 Time+80<uo.Timer() #После копирования сделайте в ОДНУ строку то,что помечено синим!
########ВНИМАНИЕ!!!#########ВНИМАНИЕ!!!#########ВНИМАНИЕ!!!#########ВНИМАНИЕ!!!
until uo.injournal(ms2) or uo.injournal(ms5) or uo.injournal(ms6) or uo.injournal(ms4) or Time+50<uo.Timer()
end sub
#[][][][][][][][][][][][][][][][][][][]DROP_LOGS[][][][][][][][][][][][][]
sub DropLogs()
var a,Exit,Logs='0x1BDD'
xy()
ToHide()
uo.findtype(Logs,'-1','backpack')
while uo.findcount()>0
uo.moveitem('finditem','all',sunduk)
wait(3000)
uo.findtype(Logs,'-1','backpack')
wend
CheckLag()
checkhpS()
Getaxe()
toeat()
end sub
#[][][][][][][][][][][][][][][][][][][]GOTO_XY[][][][][][][][][][][][][][][]
#идет к сундуку,проверка на открытие
sub xy()
while not uo.InJournal('Contains')
repeat
walker(homeX,homeY,1)
Open(sunduk)
Open(sumka_axe)
ToHide()
if uo.injournal('reach that') or uo.injournal('You can') then
walker(homeXreserv,homeYreserv,1)
ToHide()
endif
wend
UO.DeleteJournal()
endsub
#[][][][][][][][][][][][][][][][][][][]GET_AXE[][][][][][][][][][][][][][][]
sub Getaxe()
var n
dim instrument[4]
instrument[1]='0x1442' #Четыре типа топора.
instrument[2]='0x0F45'
instrument[3]='0x0F47'
instrument[4]='0x13FA'
if uo.count('0x13FA')==0 and uo.count('0x0F47')==0 and uo.count('0x0F45')==0 and uo.count('0x1442')==0 then
for n=1 to 4
uo.findtype(instrument[n],-1,'0x4021CB0B')
if uo.findcount() then
Uo.exec("addobject axe finditem")
uo.moveitem('finditem',0,'backpack')
uo.print('axe found!')
save()
checklag()
wait(700)
return
endif
next
else
for n=1 to 4
uo.findtype(instrument[n],-1,'my')
if uo.findcount() then
Uo.exec("addobject axe finditem")
uo.print('axe found in pack!')
save()
return
endif
next
endif
while 1
uo.print(' axe not found ')
wait(3000)
wend
endsub
##############################################
#[][][][][][][][][][][][][][][][][][][]CHECKER[][][][][][][][][][][][][][][][]
##############################################

sub cheker()
while true
if CheckIfTree() ==1 then
uo.exec('terminate lumbera')
UO.DeleteJournal()
uo.ignorereset()
DropLogs()
wait(15000)
uo.exec('exec lumberb')
end if
repeat
wait(2000)
wend
end sub
#[][][][][][][][][][][][][][][][][][][]CHECKER1[][][][][][][][][][][][][][]
sub cheker1()
while true
if CheckIfTree() ==1 then
uo.exec('terminate lumberb')
UO.DeleteJournal()
uo.ignorereset()
DropLogs()
wait(15000)
uo.exec('exec lumberc')
end if
repeat
wait(1000)
wend
end sub
#[][][][][][][][][][][][][][][][][][][]CHECKER2[][][][][][][][][][][][][][][]
sub cheker2()
while true
if CheckIfTree() ==1 then
uo.exec('terminate lumberc')
UO.DeleteJournal()
uo.ignorereset()
DropLogs()
wait(150000)
uo.exec('exec lumbera')
end if
repeat
wait(1000)
wend
end sub
##############################################
#[][][][][][][][][][][][][][][][][][][]HEAL[][][][][][][][][][][][][][][][][][]
##############################################


sub checkhpS()
if uo.life < 90 then
getBND()
while uo.life < 90
uo.WarMode(false)
uo.WaitTargetObject('self')
uo.UseType('band')
wait(3500)
CheckLag()
wend
dropBND()
endif
end sub

sub getBND()
uo.findtype(band,-1,sumka_axe)
if uo.findcount() then
uo.moveitem('finditem','15','backpack')
wait(600)
endif
endsub

sub dropBND()
uo.findtype(band,-1,'backpack')
if uo.findcount() then
uo.moveitem('finditem',0,sumka_axe)
wait(600)
endif
endsub

##############################################
#[][][][][][][][][][][][][][][][][][][]OTHER[][][][][][][][][][][][][][][][][]
##############################################

sub CheckIfTree()
uo.findtype('0x002F',-1,'ground')
if uo.findcount() then
return 1
uo.Print('found some!')
endif
if uo.InJournal('OOPS') or uo.InJournal('attacking you') then
return 1
uo.Print('found some!')
endif
endsub
#[][][][][][][][][][][][][][][][][][]TO_EAT[][][][][][][][][][][][][][][]
sub toeat()
uo.findtype(food,-1,sumka_axe)
if uo.findcount() then
uo.moveitem('finditem','1','backpack')
checklag()
wait(600)
uo.usetype(food)
wait(500)
uo.findtype(food,-1,'backpack')
if uo.findcount() then
uo.moveitem('finditem',0,sumka_axe)
checklag()
wait(600)
endif
endif
endsub
#[][][][][][][][][][][][][][][][][][][]AUTORUN[][][][][][][][][][][][][][][]
sub AR_On()
if uo.GetRun('self')==0 then
uo.press(122)
endif
uo.print('Бег включен')
end sub
#[][][][][][][][][][][][][][][][][][][]TOHIDE[][][][][][][][][][][][][][][][]
Sub ToHide()
while not UO.Hidden()
uo.WarMode(false)
uo.deletejournal()
UO.UseSkill("Stealth")
wait(3500)
wend
end sub
#[][][][][][][][][][][][][][][][][][][]NUMB[][][][][][][][][][][][][][][][][]
Sub Numb(num)
if num>=0 then
return num
else
return num*(-1)
end if
end sub
#[][][][][][][][][][][][][][][][][][][]CHECKLAG[][][][][][][][][][][][][][][]
Sub CheckLag()
UO.DeleteJournal()
UO.Click('backpack')
repeat
wait(150)
until UO.InJournal('backpack')
end sub
#[][][][][][][][][][][][][][][][][][][]WRITELOG[][][][][][][][][][][][][][][]
sub writeLog()
var ser
var n
for n=0 to 0
ser=uo.journalserial(n)
uo.TextOpen()
uo.TextPrint(uo.getname(ser)+' @ '+MakeTime())
endif
next
endsub
#[][][][][][][][][][][][][][][][][][][]SAVE[][][][][][][][][][][][][][][][][]
sub save()
uo.exec('saveconfig')
endsub
#[][][][][][][][][][][][][][][][][][][]TERM_OTHER[][][][][][][][][][][][][][]
sub tall()
uo.exec('terminate main')
uo.exec('terminate Reconnector')
uo.exec('terminate lumbera')
uo.exec('terminate lumberb')
uo.exec('terminate lumberc')
uo.exec('terminate cheker')
uo.exec('terminate cheker1')
uo.exec('terminate cheker2')
endsub

sub tallq()
uo.exec('terminate Resurrector')
uo.exec('terminate Reconnector')
uo.exec('terminate lumbera')
uo.exec('terminate lumberb')
uo.exec('terminate lumberc')
uo.exec('terminate cheker')
uo.exec('terminate cheker1')
uo.exec('terminate cheker2')
endsub
#[][][][][][][][][][][][][][][][][][]RESSURECTOR[][][][][][][][][][][][][][][][]
sub Resurrector()
var oldX,oldY
while 1
if uo.dead() then
tall()
# uo.TextOpen()
uo.TextPrint('- dead - @ '+MakeTime())
wait(5000)
oldX = Uo.GetX()
oldY = Uo.GetY()
uo.useobject('self')
checklag()
wait(700)
repeat
uo.lclick(helpX,helpY)
checklag()
wait(700)
uo.lclick(264,308)
checklag()
wait(700)
uo.lclick(175,203)
checklag()
wait(5000)
until oldX<>UO.GetX() OR oldY<>UO.GetY()
repeat
uo.press(39)
wait(2000)
until UO.GetY()<534
repeat
uo.useobject('0x4001BDF0')
wait(3000)
until uo.life>0
Open(uo.getserial('backpack'))
wait(300000)
oldX = Uo.GetX()
oldY = Uo.GetY()
uo.recall(Runebook,Runenr)
repeat
wait(700)
until oldX<>uo.getx('self') && oldY<>uo.gety('self')
Open(sunduk)
if uo.waiting() then
uo.canceltarget()
endif
uo.exec('exec main')
endif
wait(5000)
wend
endsub
#[][][][][][][][][][][][][][][][][][][]OPEN[][][][][][][][][][][][][][][][][][][]
sub Open(what)
uo.useobject(what)
checklag()
wait(700)
endsub
#[][][][][][][][][][][][][][][][][][][]COUNT_LOGS[][][][][][][][][][][][][][][][]
sub Get_Logs_Count()
var type='0x1BDD'
var i
uo.FindType(type,'-1','0x40556A9D')
uo.TextClear()
for i = 0 to uo.FindCount() - 1
uo.FindType(type,'-1','0x40556A9D')
uo.Click('finditem')
uo.Print(uo.GetName('finditem'))
wait(100)
uo.TextOpen()
uo.TextPrint(uo.GetName('finditem'))
uo.Ignore('finditem')
next
uo.IgnoreReset()
end sub


####################ХОДИЛКА 3
var MaxTraceDistance=10
var TraceLoopIncrease=5
var LimitTrace=20
var Speed=3
#var StepTimeOut=350
# Для ходьбы - 500+Ping
# Для бега/ходьбы на лошади - 300+Ping
# Бег на лошади - 150 + Ping

var CheckCnt=2
var DynamicPause=30

Sub Walker(GoX,GoY,Prec)
UO.SetGlobal("Logging","0")
UO.SetGlobal("BlindWalk","0")
var LastDir
var MoveRes
var TracerCnt
UO.SetGlobal("GlobalGoX",str(GoX))
UO.SetGlobal("GlobalGoY",str(GoY))
while not IsEnd(GoX,GoY,Prec)
TracerCnt = MaxTraceDistance
repeat
LogInfo('Just walking')
LastDir=GoUntilHit(GoX,GoY,Prec)

if IsEnd(GoX,GoY,Prec) then
return 1
end if

LogInfo('Tracing')
MoveRes = FullAroundTrace(LastDir,GoX,GoY,Prec,TracerCnt)
if TracerCnt > LimitTrace then
return 0
endif
TracerCnt = TracerCnt + TraceLoopIncrease
until MoveRes == 1
wend
return 1
end sub

Sub FullAroundTrace(StartDir,GoX,GoY,Prec,MaxTrace)
var LineX=UO.GetX()
var LineY=UO.GetY()
var CurDir=StartDir
var Direction=CountDirection(GoX,GoY,CurDir,Prec)
var StartX,StartY
var MovesDone=0
repeat
StartX=UO.GetX()
StartY=UO.GetY()
CurDir=Tracer(CurDir,Direction,Prec)
if (CurDir==GetDir(GoX,GoY,Prec)) then
return 1
endif
if MovesDone>0 and PrevMoveCross(GetDirToDir(UO.GetDir(),Prec),LineX,LineY,GoX,GoY,StartX,StartY,Prec) then
return 1
end if
MovesDone=MovesDone+1
CurDir=AddToDir(CurDir,-Direction,Prec)
until MovesDone>MaxTrace
return 0
end sub

Sub CountDirection(GoX,GoY,StartDir,Prec)
var GoDir=GetDir(GoX,GoY,Prec)
var MyX=UO.GetX()
var MyY=UO.GetY()
if GoDir<StartDir then
return -1
end if
if GoDir>StartDir then
return 1
end if
if Abs(MyX-GoX)>Abs(MyY-GoY) then
if (GoDir==3 and GoY>MyY) OR (GoDir==7 and GoY<MyY) then
return -1
else
return 1
end if
else
if (GoDir==1 and GoX<MyX) or (GoDir==5 and GoX>MyX) then
return -1
else
return 1
end if
end if
end sub

Sub PrevMoveCross(Dir,x1,y1,x2,y2,StartX,StartY,Prec)
var x3,y3,x4,y4
x3=StartX
y3=StartY
x4=StartX+(XFromDir(Dir)-StartX)*Speed
y4=StartY+(YFromDir(Dir)-StartY)*Speed
return LinesCrossing(x1,y1,x2,y2,x3,y3,x4,y4,Prec)
end sub

Sub LinesCrossing(x1,y1,x2,y2,x3,y3,x4,y4,Prec)
if x1==x3 and y1==y3 then
return false
end if
var z1=(x3-x1)*(y2-y1)-(y3-y1)*(x2-x1)
var z2=(x4-x1)*(y2-y1)-(y4-y1)*(x2-x1)
if z1*z2>0 then
return false
else
LogInfo('Vector info:')
LogInfo('x1= '+str(x1))
LogInfo('y1= '+str(y1))
LogInfo('x2= '+str(x2))
LogInfo('y2= '+str(y2))
LogInfo('x3= '+str(x3))
LogInfo('y3= '+str(y3))
LogInfo('x4= '+str(x4))
LogInfo('y4= '+str(y4))
return true
end if
end sub

Sub IsDiap(X,X0,X1,Prec)
if X<=X0+Prec and X>=X1-Prec OR X>=X0-Prec and X<=X1+Prec then
return true
end if
return false
end sub

Sub GoUntilHit(GoX,GoY,Prec)
var LastDir
LastDir=GetDir(GoX,GoY,Prec)
var CouldMove
repeat
LastDir=GetDir(GoX,GoY,Prec)
if LastDir<>0 and not IsEnd(GoX,GoY,Prec) then
CouldMove=TryDir(LastDir,Prec)
end if
until LastDir==0 or IsEnd(GoX,GoY,Prec) or not CouldMove
return LastDir
end sub

Sub IsEnd(GoX,GoY,Prec)
if Abs(UO.GetX()-GoX)<=Prec and Abs(UO.GetY()-GoY)<=Prec then
LogInfo('END FOUND')
return true
else
return false
end if
end sub

Sub GetDir(GoX,GoY,Prec)
var MyX=UO.GetX()
var MyY=UO.GetY()
var DiffX=Abs(UO.GetX()-GoX)
var DiffY=Abs(UO.GetY()-GoY)
var GoDir=0
if (DiffX/(DiffY+0.1))>=2 then
if (MyX>GoX) then
GoDir=7
else
GoDir=3
end if
else

if (DiffY/(DiffX+0.1))>=2 then
if (MyY>GoY) then
GoDir=5
else
GoDir=1
end if
else

if (MyX>GoX) and (MyY>GoY) then
GoDir=6
else
if (MyX>GoX) and (MyY<GoY) then
GoDir=8
else
if (MyX<GoX) and (MyY>GoY) then
GoDir=4
else
if (MyX<GoX) and (MyY<GoY) then
GoDir=2
end if
end if
end if
end if
end if
end if
return GoDir
end sub

Sub Tracer(StartDir,Direction,Prec)
var CurDir=StartDir
var Result
repeat
Result=TryDir(CurDir,Prec)
if not Result then
CurDir=AddToDir(CurDir,Direction,Prec)
end if
until Result
return Result
end sub

Sub AddToDir(Dir,Cnt,Prec)
var NewDir=Dir
NewDir=NewDir+Cnt
while NewDir>8
NewDir=NewDir-8
wend
while NewDir<1
NewDir=NewDir+8
wend
return NewDir
end sub

Sub TryDir(Dir,Prec)
var BegX=UO.GetX() # Ia?aeuiia O
var BegY=UO.GetY() # Ia?aeuiia Y
var Counter=0
var GoX=BegX
var GoY=BegY
GoX=XFromDir(Dir)
GoY=YFromDir(Dir)
if not IsPass(GoX,GoY) then
LogInfo(str(GoX)+':'+str(GoY)+' is not passable')
return false
end if
return TurnAndGoDir(Dir,Prec)
end sub

Sub XFromDir(Dir)
if Dir==2 OR Dir==3 Or Dir==4 then
return (UO.GetX()+1)
end if
if Dir==6 OR Dir==7 Or Dir==8 then
return (UO.GetX()-1)
end if
return (UO.GetX())
end sub

Sub YFromDir(Dir)
if Dir==8 OR Dir==1 Or Dir==2 then
return (UO.GetY()+1)
end if
if Dir==4 OR Dir==5 Or Dir==6 then
return (UO.GetY()-1)
end if
return (UO.GetY())
end sub

Sub TurnAndGoDir(Dir,Prec)
var StartDir=GetDirToDir(UO.GetDir(),Prec)
var StartX=UO.GetX()
var StartY=UO.GetY()
var EndDir
var Counter=0
var TestCounter=CheckCnt

#Direction Test
repeat
Counter = 0
LogInfo('Dir: '+str(StartDir)+' Counter: '+str(Counter))
PressDir(Dir)
repeat
EndDir=GetDirToDir(UO.GetDir(),Prec)
wait(DynamicPause)
Counter=Counter+1
until StartDir<>EndDir or StartY<>UO.GetY() or StartX<>UO.GetX() or Counter>=StepTimeOut/DynamicPause
TestCounter = TestCounter - 1
LogInfo('Dir: '+str(EndDir)+' Counter: '+str(Counter))
until TestCounter <= 0 or Counter < StepTimeOut/DynamicPause

if Counter>=StepTimeOut/DynamicPause then
LogInfo('Direction timeout reached')
return 0
end if
#End direction Test

if StartY<>UO.GetY() or StartX<>UO.GetX() then
return Dir
end if

#Start Primary test
TestCounter=CheckCnt
repeat
GoDir(Dir,Prec)
Counter=0
repeat
wait(DynamicPause)
Counter=Counter+1
until StartY<>UO.GetY() or StartX<>UO.GetX() or Counter>=StepTimeOut/DynamicPause
TestCounter = TestCounter - 1
until TestCounter <= 0 or Counter < StepTimeOut/DynamicPause
#End primary test

if Counter>=StepTimeOut/DynamicPause then
LogInfo('Step timeout reached')
return 0
else
return Dir
end if
end sub

Sub GetDirToDir(GotDir,Prec)
var ChangedDir=-GotDir
ChangedDir=AddToDir(ChangedDir,5,Prec)
return ChangedDir
end sub

Sub DirToInj(Dir)
dim Dirs[9]
Dirs[1]=1
Dirs[2]=2
Dirs[3]=3
Dirs[4]=6
Dirs[5]=9
Dirs[6]=8
Dirs[7]=7
Dirs[8]=4

return (Dirs[Dir])
end sub

Sub PressDir(Dir)
dim Dirs[9]
Dirs[1]=35
Dirs[2]=40
Dirs[3]=34
Dirs[4]=39
Dirs[5]=33
Dirs[6]=38
Dirs[7]=36
Dirs[8]=37

UO.Press(Dirs[Dir],1)
end sub

Sub GoDir(Dir,Prec)
dim Dirs[9]
Dirs[1]=35
Dirs[2]=40
Dirs[3]=34
Dirs[4]=39
Dirs[5]=33
Dirs[6]=38
Dirs[7]=36
Dirs[8]=37

var DistanceX=Abs(UO.GetX()-val(UO.GetGlobal("GlobalGoX")))
var DistanceY=Abs(UO.GetY()-val(UO.GetGlobal("GlobalGoY")))
var GoDistance
if (DistanceX-Prec)<Speed then
GoDistance=DistanceX-Prec
else
if (DistanceY-Prec)<Speed then
GoDistance=DistanceY-Prec
else
GoDistance=Speed
endif
endif

UO.Press(Dirs[Dir],GoDistance)
end sub

Sub IsPass(X,Y)
if UO.GetGlobal("BlindWalk") then
return true
endif

dim Types[60]
Types[1]=3
Types[2]=25
Types[3]=51
Types[4]=63
Types[5]=113
Types[6]=140
Types[7]=172
Types[8]=219
Types[9]=232
Types[10]=235
Types[11]=239
Types[12]=243
Types[13]=248
Types[14]=251
Types[15]=264
Types[16]=267
Types[17]=282
Types[18]=289
Types[19]=321
Types[20]=379
Types[21]=420
Types[22]=440
Types[23]=476
Types[24]=499
Types[25]=513
Types[26]=542
Types[27]=578
Types[28]=586
Types[29]=622
Types[30]=700
Types[31]=804
Types[32]=1740
Types[33]=1758
Types[34]=1770
Types[35]=1779
Types[36]=1779
Types[37]=1881
Types[38]=1886
Types[39]=1801
Types[40]=1805
Types[41]=1813
Types[42]=1820
Types[43]=1831
Types[44]=1833
Types[45]=1843
Types[46]=1850
Types[47]=1873
Types[48]=1876
Types[49]=1885
Types[50]=1888
Types[51]=1946
Types[52]=1969
Types[53]=2500
Types[54]=2539

for var i=1 TO 53 STEP 2
if UO.PrivateGetTile(X,Y,-1,Types[i],Types[i+1]) then
return true
end if
next
return false
end sub

Sub LogInfo(Line)
if not UO.GetGlobal("Logging")=="0" then
UO.TextOpen()
UO.TextPrint(str(UO.GetX())+":"+str(UO.GetY())+" - "+Line);
end if
end sub

Sub Abs(X)
if X>0 then
return X
else
return (-X)
end if
end sub
########################################## КОНЕЦ ХОДИЛКИ 3 ##########################
sub Reconnector()
var ReconnectTime, RFlag
ReconnectTime = '0'
RFlag = 1
Repeat
While (UO.ObjAtLayer('Bpack') == '')
if RFlag Then
ReconnectTime = MakeTime()
RFlag = 0
endif
Wait(1000)
UO.Say('')
Wait(3000)
UO.Say('')
Wait(3000)
UO.Say('')
Wait(3000)
UO.LDblClick(357,164)
UO.LClick(616,459)
Wait(3000)
WEnd
Wait(3000)
if (RFlag == 0) and (ReconnectTime <> '0') Then
;UO.Exec('terminate all')
;UO.Exec('exec autoload')
UO.TextOpen()
UO.TextPrint('Disconnected & Reconnected @ '+ReconnectTime)
RFlag = 1
ReconnectTime = '0'
endif
Until false
end sub
sub MakeTime()
VAR D, T, Ret, i
Ret = STR(UO.Time())
T = ""
For i = 0 To Len(Ret)
T = Ret[Len(Ret)-i] + T
If (I == 2) OR (I == 4) Then
T = ":" + T
EndIf
Next
Ret = STR(UO.Date())
D = ""
For i = 0 To Len(Ret)
D = Ret[Len(Ret)-i] + D
If (I == 2) OR (I == 4) Then
D = "." + D
EndIf
Next
Ret = T + " @ " + D
RETURN Ret
end sub
##############################################
# Readme #
##############################################
#Номера рун в книге
#uo.recall(RuneBook,'21') ; 1-я
#uo.recall(RuneBook,'33') ; 2-я
#uo.recall(RuneBook,'46') ; 3-я
#uo.recall(RuneBook,'58') ; 4-я
#uo.recall(RuneBook,'64') ; 5-я
#uo.recall(RuneBook,'73') ; 6-я
#uo.recall(RuneBook,'88') ; 7-я
#uo.recall(RuneBook,'94') ; 8-я
#uo.recall(RuneBook,'1025');9-я
###############################################
#Добавить свой предмет можно командой ,info
#Пример команды ,info
###############################################
#ID=0x40369130 Type=0x1BDD ESVMRMD Name=
#Quantity: 8 Colour: 0x0014 Layer: 0 Has: 1
#X=55 Y=76 Z=0 C=0x400BEF55 F=0x00
###############################################
#Где-ID=0x40369130=нужный номер предмета
###############################################
#Координаты легко можно найти в окне инжекта
#пишутся вверху как "4343 3434 YokoInjection"
#Скрипт для маркировки деревьев легко находится
#в интернете,или на саите Йокко
#http://forum.yoko.com.ua
#маркирует скриптом деревья,на выходе получаем
#файл C:\ltitles.txt. Перейменовываем его в
#tr0.dat и запускаем скрипт сначала,на другом
#участке леса.Получаем три фаила таким образом
#(tr0.dat tr1.dat tr2.dat)
#которые ложим в корень диска C:\
#(C:\tr0.dat)(C:\tr1.dat)(C:\tr2.dat)
###############################################
#Ошибки.
#При возникновении ошибок,или в случае если
#скрипт НЕработает,стоит проверить Переменные
#и каждую функцию по отдельности.
#Переменные вещей пишутся в кавычках,тогда как
#переменные передвижения пишутся БЕЗ оных.
#Если у вас плохой пинг или вас часто дисконектит
#то проверяем пинг до сервера
#пуск-выполнить-пишем cmd,жмём ввод
#далее пишем ping и ИП адрес сервера
#Ип адресс можно узнать в инжекте
#пример - Ping 89.222.192.234
#нам нужно ВРЕМЯ ответа от сервера
#находим вверху переменную var StepTimeOut=350
#ставим по формуле 300+ваше время ответа
#пример-пинг показал время=136 мс
#значит необходимо поставить значение 300+136=436
#Для того кто хочет переделать скрипт под свой шард
#незабываем так же править фразы рубки на свои
#и установить задержку на рубку под свой сервер
################################################
#PC.Выражаю благодарность за предоставленные скрипты
#Yoko,Beyonder,Edred,Mikhail,Destruction,Dark Enemy.
#И всем,кто еше не забыл что такое Ultima Online.
#by 08 17j,2010/18:40/Luxembourg.


Last edited by lexxxxx on 2010-01-19 00:31:08, edited 12 times in total.

Top
   
 Post subject:
PostPosted: 2010-01-18 09:57:18 
Offline
User avatar

Joined: 2009-05-28 09:58:28
Posts: 2802
Location: Иваново
vidimo chtoto sluchilos' - pod glazom carapina a v zhope kol.
Translit zakolebal uzhe :(

_________________
Image
YokoInjection CodeSweeper
Ошибка "Unhandled exception in parser"
Стрелялка для олдов.


Top
   
 Post subject:
PostPosted: 2010-01-19 00:33:31 
Offline

Joined: 2004-09-08 05:17:37
Posts: 8
Mirage wrote:
vidimo chtoto sluchilos' - pod glazom carapina a v zhope kol.
Translit zakolebal uzhe :(

извини что изменил топик.. но этот скрипт и был первоначальной идеей его создания :)
пс. скрипт всёравно бьется,что с /code что без. Нечитабельный шрифт ставить нехочу.Как можно уменьшить строку?


Top
   
 Post subject:
PostPosted: 2010-01-19 09:08:25 
Offline
User avatar

Joined: 2009-05-28 09:58:28
Posts: 2802
Location: Иваново
Code:
вроде щаз все в порядке

_________________
Image
YokoInjection CodeSweeper
Ошибка "Unhandled exception in parser"
Стрелялка для олдов.


Top
   
PostPosted: 2010-01-27 09:11:39 
Offline
User avatar

Joined: 2009-05-28 09:58:28
Posts: 2802
Location: Иваново
Мдя Вообщето скрипт можно раза в 2,5 сократить.
1)заменить можно 3 ламбера 1
Code:
sub lumber()
   var f,x,TreeCount=0,i
   dim TreeX[500],TreeY[500],TreeT[500]
   DIM put[3]
   put[0]="C:\tr0.dat"
   put[1]="C:\tr1.dat"
   put[2]="C:\tr2.dat"
   for x=0 to 2
      uo.exec('terminate cheker')
      uo.exec('exec cheker')
      f=file(put[x])
      f.open()
      TreeCount=safe call f.readNumber()
      for i=1 to TreeCount
         TreeT[i]=safe call f.ReadNumber()
         TreeX[i]=safe call f.ReadNumber()
         TreeY[i]=safe call f.ReadNumber()
      next
      f.close()
      ;   while not uo.dead() вот тут надо поменять условие на другое
      for i=1 to TreeCount
         uo.Print('Lumber1=Идем к дереву номер '+str(i)+': x='+str(TreeX[i])+' y='+str(TreeY[i]))
         walker(treex[i],treey[i],1)
         GetTree(str(treeT[i]),str(treeX[i]),str(TreeY[i]),str(uo.getz()))
      next
      DropLogs()
      ;   wend
   next
endsub

2)cheker() аналогично можно переработать и сократить
3)
по лучше будет вот так:
Code:
sub main()
   uo.set('quiet', '0') #Рекомендую поставить 1 после отладки рубки
   uo.set('finddistance','3') ;зачем тут 10? для сундука надо 3.
   xy()
;   Open(sunduk)   это тут не нужно раз уже открыл
;   wait(500)
;   Open(sumka_axe)
;   wait(500)
   tallq()
   DropLogs()
   uo.exec('exec Reconnector') ; 1
   uo.exec('exec Resurrector')  ; 2
   uo.exec('exec lumbera')       ; 3 
endsub

4)у тебя смотри
Code:
sub Resurrector()
var oldX,oldY
while 1
if uo.dead() then
tall()  ; <--  смотри
Code:
sub tall()
uo.exec('terminate main')
uo.exec('terminate Reconnector') ;<--- ЧПОК

.....

Из советов
1)заключи НОРМАЛЬНО в "код"
2)проставь отступы
3)Попробуй избавиться от дубляторов
4)сделай 1-2 терминатолки и используй их но только внимательно!
5)ресурект можно вставить в основной ламбер типо - рубишь-убили-если убили то ресурект

будет время попробую подкорректировать весь скрипт Но лучше сам старайся :)

_________________
Image
YokoInjection CodeSweeper
Ошибка "Unhandled exception in parser"
Стрелялка для олдов.


Top
   
PostPosted: 2010-01-28 00:28:57 
Offline

Joined: 2004-09-08 05:17:37
Posts: 8
спасибо за помошь!
такое чувство что мы тут троем остались)) я ты,да йокко.
у тебя так хорошо выходит,мот наидеш время доработать? ессесня еси не занят буш :D
я прихожу домой ,вечером,уже не до скриптов ( увы..
из моментов

uo.exec('terminate Reconnector') ;<--- ЧПОК
заметь реконектор,не реССуректор )
еше вопрос! походу понял из за чего забивает оперативку
вот скрока,процедура getaxe()
Uo.exec("addobject axe finditem")
добавляет каждый раз при смене координат(каждые 5-6 минут)
раньше там было вот так --
uo.findtype(instrument[n],-1,'my')
if uo.findcount() then
axe= uo.getserial('finditem')
но! как я не старался,этот AXE не был видет никаким путём! т.е не рубил он нифига,подходит и не берет вообшем) на команды usetype/object axe тож не реагирует.
так что сделал вот так=Uo.exec("addobject axe finditem")
незнаю прав я или нет.
процедуры загоню в одну,ты прав зачем их там три)


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 6 posts ] 

All times are UTC+02:00


Who is online

Users browsing this forum: No registered users and 35 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB® Forum Software © phpBB Limited