Camping / Кемпинг (Лагереводство?)

Only tested and approved scripts

Moderators: Murderator+, Murderator

Post Reply
Yoko
Site Admin
Posts: 1964
Joined: 2004-04-03 16:49:38
Contact:

Camping / Кемпинг (Лагереводство?)

Post by Yoko »

Discussion:______________
http://yoko.netroof.net/forum/viewtopic.php?t=1713
Author or poster:_________
Edred, tercia@spb.lanck.net
Tested on:_______________
Цитадель http://ultima.e-burg.ru
Must work:_______________
Sphere emu
Customization required:____
Yes/place (serial Sunduk, runebook, rune to town, FinalX coordinate; also check up types)
Description:______________
Берем в пак 200 хвороста и реги, реколлимся по руне туда где можно жечь костры, врубаем медитацию, отделяем по 1 шт. хвороста, кладем их вокруг чара с трех сторон, дважды щелкаем по этим кучкам хвороста для их разжигания (с повторами в случае физлов). Отходим назад (направление на правый нижний угол - клавиша "3" на нумпаде). Повторям последнюю операцию пока чар не придет в точку FinalX. Реколлимся на базу, добираем из ящика хворост и реги. И по кругу.
Разметьте руну где-нибудь в непосещаемом городе, прогуляйтесь шагов на 30-50 по диагонали по направлению цифры 3 на нумпаде, занесите координату X этой точки в FinalX (для надежности и защиты от лагов будет лучше если в этой точке чар упрется в стенку). На базе рядом с реколлкой поставьте сундук и в него положите много хвороста (можно одной "неподьъемной" кучкой и побольше регов для реколла. Занесите руну в этот город в ту же рунбуку, где и руна на базу.
Yoko comment:___________
none
________________________

Code: Select all

#===================================================================#
# CAMPING                                                           #
#===================================================================#
#   v.1.04b (с) Edred                                               #
#===================================================================#
; Берем в пак 200 хвороста и реги, реколлимся по руне туда где можно 
; жечь костры, врубаем медитацию, отделяем по 1 шт. хвороста, кладем их 
; вокруг чара с трех сторон, дважды щелкаем по этим кучкам хвороста 
; для их разжигания (с повторами в случае физлов). Отходим назад 
; (направление на правый нижний угол - клавиша "3" на нумпаде). 
; Повторям последнюю операцию пока чар не придет в точку FinalX. 
; Реколлимся на базу, добираем из ящика хворост и реги. И по кругу.
;
; Разметьте руну где-нибудь в непосещаемом городе, прогуляйтесь шагов
; на 30-50 по диагонали по направлению цифры 3 на нумпаде, занесите
; координату X этой точки в FinalX (для надежности и защиты от лагов
; будет лучше если в этой точке чар упрется в стенку). На базе рядом
; с реколлкой поставьте сундук и в него положите много хвороста (можно
; одной "неподьъемной" кучкой и побольше регов для реколла.
; Занесите руну в этот город в ту же рунбуку, где и руна на базу.
;
sub camping()
	DIM Regs[3]
	Regs[0] = '0x0F7A'			; Black Pearl
	Regs[1] = '0x0F7B'			; Bood Moss
	Regs[2] = '0x0F86'			; Mandrake Root
	VAR Hvorost = '0x0DE1'
	VAR flag, myx, myy, myz, fin, i
	VAR FinalX = 1350
	VAR Sunduk = '0x40591B82'
	VAR RuneToBase = '20'
	VAR RuneToFire = '30'
	;
	; Стартуем стоя в начале пути.
;   	UO.SetGlobal( 'TimeProcess', str( UO.Timer() ) )
	UO.Exec( 'set finddistance 3' )
	While UO.SkillVal( 'Camping' ) < 1000
		fin = 0
		UO.UseSkill( 'Meditation' )
		UO.FindType ( Hvorost )
		While ( UO.FindCount() > 0 ) AND ( fin == 0 )
			myx = UO.GetX()
			myy = UO.GetY()
			myz = UO.GetZ()
			UO.MoveItem('finditem', '1', 'ground', str(myx-1), str(myy), str(myz))
			wait(1000)
			CheckLag()
			UO.FindType ( Hvorost )
			UO.MoveItem('finditem', '1', 'ground', str(myx), str(myy+1), str(myz))
			wait(1000)
			CheckLag()
			UO.FindType ( Hvorost )
			UO.MoveItem('finditem', '1', 'ground', str(myx), str(myy-1), str(myz))
			wait(1000)
			CheckLag()
			UO.Findtype( Hvorost, -1, 1 )
			While UO.FindCount() > 0 AND NOT UO.InJournal( "You can't ignite several" )
				repeat
					flag = 1
					DeleteJournal( "You fail to ignite" )
					DeleteJournal( "You can't ignite several" )
					DeleteJournal( "You must wait" )
					UO.UseFromGround( Hvorost )
					wait(1000)
					CheckLag()
					If UO.InJournal( "You must wait" ) OR UO.InJournal( "You fail to ignite" ) Then
						flag = 0
						wait(1000)
					Endif
					If UO.InJournal( "You can't ignite several" ) Then
						UO.FindType( Hvorost, -1, 1 )
						While UO.FindCount() > 0
							If UO.GetQuantity( 'finditem' ) > 1 Then
								UO.Grab( str( UO.GetQuantity( 'finditem' ) - 1 ), 'finditem' )
								wait(1000)
								CheckLag()
							Endif
							UO.Ignore( 'finditem' )
							UO.FindType( Hvorost, -1, 1 )
						Wend
						UO.IgnoreReset()
					Endif
				until flag
				UO.Findtype( Hvorost, -1, 1 )
			Wend
			While ( UO.GetX() < myx + 1 ) AND ( fin == 0 )
				UO.Press( 34 )
				wait(300)
				CheckLag()
				If UO.GetX() == FinalX Then
					fin = 1
				Endif
			Wend
			UO.FindType ( Hvorost )
		Wend
		; достигли конца маршрута или кончился хворост
		Recalling( 'CommonRunbook', RuneToBase )
		UO.UseObject( Sunduk )
		wait(1000)
		CheckLag()
		for i = 0 To 2
			If UO.Count( Regs[i] ) < 6 Then
				; этого рега меньше 6
				UO.FindType( Regs[i], '-1', Sunduk )
				UO.Grab( str( 6 - UO.Count( Regs[i] ) ), 'finditem' )
				Wait( 1000 )
				CheckLag()
			Endif
		next
		If UO.Count( Hvorost ) < 200 Then
			; хвороста меньше 200
			UO.FindType( Hvorost, '-1', Sunduk )
			UO.Grab( str( 200 - UO.Count( Hvorost ) ), 'finditem' )
			Wait( 1000 )
			CheckLag()
		Endif
;		EatChar( Sunduk, 2, 1, 60 )
		Recalling( 'CommonRunbook', RuneToFire )
	Wend
endsub

#####################################################################
Sub CheckLag()
	DeleteJournal( 'backpack' )
	UO.Click( 'backpack' )
	repeat
		wait(100)
	until UO.InJournal( 'backpack' )
	return
end sub

#####################################################################
Sub DeleteJournal( string1 )
	VAR nom = UO.InJournal( string1 )
	If nom > 0 Then
		UO.SetJournalLine( Nom - 1, 'string replaced' )
		DeleteJournal( string1 )
	Endif
endsub

#####################################################################
Sub Recalling( Runbk, NRune ) 
	; Runbk - сериал или ссылка на объект рунбуки 
	; NRune - десятичный номер (текстом) руны для реколла 
	VAR myx = UO.GetX()
	VAR myy = UO.GetY()
	VAR OldMana = UO.Mana
	VAR i = 0
	DeleteJournal( 'fizzles' )
	UO.Exec("recall " + Runbk + " " + NRune) 
	repeat
		CheckLag()
		wait(1000)
		i = i + 1
	until ( i > 6 ) OR ( UO.Mana < OldMana - 8 ) OR UO.InJournal( 'fizzles' )
	wait(500)
	If myx == UO.GetX() AND myy == UO.GetY() Then
		UO.WarMode( 'flip' ) 
		wait(100) 
		UO.WarMode( 'flip' )
		Recalling( Runbk, NRune ) 
	Endif
endsub 
Post Reply