Page 1 of 1

скрипт на прокачку вар-скилов на менекене

Posted: 2006-06-11 21:56:14
by Дисконнект™
в общем в инже я нуб.
наваял тут это

Code: Select all

sub kykla()
uo.Exec('exec say_guards')
UO.Exec('set finddistance 2')
repeat
UO.FindType("0x1074","-1","ground")
wait(100)
UO.UseObject('finditem')
wait(5000)
	until false
end sub

sub say_guards()
repeat
uo.say ('guards')
wait(10000)
until false
end sub
в общем тут чар ищет манекен для прокачки и долбит его оружеем которое в руке. (короче просто ласт обжект на луп стоит.)
у нас на шарде на манекенах максимум до 60 можно прокачать.
и вот тут нужна ваша помошь.
помогите мне замутить автосмену девайса по достижению скила 60.
тоесть допустим в бэкпаке лежит катана, крисс и молоточек для БС (у нас на них тоже маза качается). ну и как он достиг 60 допустим сворды, катану убирает берет крисс и качает фенсинг.
мне не лень посмотреть за чаром, но просто на ночь не оставишь, т.к. скилл растет быстрее и к утру он просто стоит и ничего не делает.
заранее благодарен и надеюсь на вашу помошь

Posted: 2006-06-11 22:47:08
by Edred
Посмотри в топике с моим наследством (прилеплен), файл SkillUp.sc, там есть то, что ты ищешь. Точнее, там скрипты сами берут оружие из пака, если оно разрушится - берут новое. А запустить скрипты можно из другого скрипта просто по очереди. Скрипты работают до скилла в 60 или силы в 150 - второе условие отмени и будет тебе счастье.

Posted: 2006-06-12 01:23:21
by Дисконнект™
Edred wrote:Посмотри в топике с моим наследством (прилеплен), файл SkillUp.sc, там есть то, что ты ищешь. Точнее, там скрипты сами берут оружие из пака, если оно разрушится - берут новое. А запустить скрипты можно из другого скрипта просто по очереди. Скрипты работают до скилла в 60 или силы в 150 - второе условие отмени и будет тебе счастье.
спасибо... тока я вот не нашел как запускать процедуру из процедуры :oops: я через арм\дизарм сделал смену дивов.... щас вот ошибки выискиваю:(

Posted: 2006-06-12 02:50:19
by Дисконнект™

Code: Select all

sub smena_sword()
uo.disarm()
wait(1000)
uo.arm('katana')
wait(500)
uo.Exec('exec kykla')
while UO.SkillVal('Swordsmanship') > 59
UO.Exec('exec smena_fens')
wend
end sub

sub smena_fens()
uo.disarm()
wait(1000)
uo.arm('dagger')
wait(500)
while UO.SkillVal('Fencing') > 59
UO.Exec('exec smena_mace')
wend
end sub

sub smena_mace()
uo.disarm()
wait(1000)
uo.arm('hammer')
wait(500)
while UO.SkillVal('Mace Fighting') > 59
UO.Exec('terminate all')
wait(1000)
UO.Print('all skills already high. End script')
wend
end sub


sub kykla()
uo.Exec('exec say_guards')
UO.Exec('set finddistance 2')
repeat
UO.FindType("0x1074","-1","ground")
wait(100)
UO.UseObject('finditem')
wait(5000)
until false
end sub

sub say_guards()
repeat
if uo.life < uo.str then
uo.say ("guards")
wait(1000)
until false
end sub
наваял... все равно где то косяк.... у меня процудуры смены дивов идут по кругу без задержек и сразу запуск кучи процедур привозит к вылету клиента с инжей.... надо чтоб менялся при достижении скила.
чего исправить?

Posted: 2006-06-12 08:49:31
by Edred
Сорри, просто лень сегодня в чужом скрипте ковыряться, проще написать свой:

Code: Select all

sub Kukla()
; Писано на коленке. Не тестировалось
; v.1.00b, (c) Edred, 2006
;
	DIM Weapon[3]
	Weapon[0] = '0x143A'		; Оружие для мейсы
	Weapon[1] = '0x0F51'		; Оружие для фенсы
	Weapon[2] = '0x13FE'		; Оружие для сворды
	DIM Skills[3]
	Skills[0] = 'Mace Fighting'	; Точные названия скиллов
	Skills[1] = 'Fencing'
	Skills[2] = 'Swordsmanship'
	VAR Kukla = '0x1074'		; Тип куклы
	VAR MaxSkill = 600		; До какого скилла прокачка (*10)
	VAR flag = 1, i
	; Ищем куклу
	UO.Set( 'finddistance', '2' )
	UO.FindType( Kukla, '-1', 'ground' )
	If UO.Findcount() == 0 Then
		UO.Print( 'kukla ne naydena!' )
		return
	Else
		UO.AddObject( 'Kukla', 'finditem' )
	Endif
	; Работаем в цикле
	for i = 0 To 2
		While UO.SkillVal( Skills[i] ) < MaxSkill
			flag = GetDagger( Weapon[i] )
			If flag == 0 Then
				UO.Print( 'weapon not found!' )
				return
			Endif
			UO.UseObject( 'Kukla' )
			wait(4000)
			If UO.Life < 100 Then
				UO.SayU( 'Guards!' )
			Endif
		Wend
	Next
endsub

Sub GetDagger( Dagger )
	If UO.GetGraphic( UO.ObjAtLayer( 'Rhand' ) ) <> Dagger Then
		UO.FindType( Dagger )
		If UO.FindCount() == 0 Then
			return 0
		Endif
		UO.Equipt( 'Rhand', Dagger )
		wait(1000)
	Endif
	return 1
endsub

Posted: 2006-06-12 09:29:20
by Дисконнект™
сенк.... но там парсер эррор в 5 строчке.
в общем я понял где у меня ошибки были. надо максимальное значение *10 писать, а я просто написал+кое где терминаты добавил... щас вот тестю

Posted: 2006-06-12 14:16:42
by Scripts Writer

Code: Select all

   DIM Weapon[3] 
   Weapon[0] = '0x143A'      ; Оружие для мейсы 
   Weapon[1] = '0x0F51'      ; Оружие для фенсы 
   Weapon[2] = '0x13FE'      ; Оружие для сворды 
   DIM Skills[3] 
   Skills[1] = 'Mace Fighting'   ; Точные названия скиллов 
   Skills[2] = 'Fencing' 
   Skills[3] = 'Swordsmanship'

Posted: 2006-06-14 17:20:05
by Edred
Дисконнект™ wrote:сенк.... но там парсер эррор в 5 строчке.
Исправил.

Posted: 2006-06-14 18:58:22
by Scripts Writer
Edred wrote:
Дисконнект™ wrote:сенк.... но там парсер эррор в 5 строчке.
Исправил.
Ничего ты не исправил :\

Posted: 2006-06-15 21:44:31
by Edred
You Must Die wrote:Ничего ты не исправил :\
И что же, по твоему, я не исправил? Нумерацию элементов в массиве, которую забыл сразу, поправил. Причем правильно, в отличие от того, как предложил ты. Что еще? Я скрипт не тестил и не буду тестить (не играю уже год). Если кто-нить потестит и напишет еще о какой ошибке - посмотрю еще. Иначе - телепаты в отпуске.

Posted: 2006-06-15 22:34:49
by Scripts Writer
Edred wrote:
You Must Die wrote:Ничего ты не исправил :\
И что же, по твоему, я не исправил? Нумерацию элементов в массиве, которую забыл сразу, поправил. Причем правильно, в отличие от того, как предложил ты. Что еще? Я скрипт не тестил и не буду тестить (не играю уже год). Если кто-нить потестит и напишет еще о какой ошибке - посмотрю еще. Иначе - телепаты в отпуске.
Не сомневаюсь что ты в инже больше меня знаешь, но разве массив значится через VAR? Или так тоже можно?

Code: Select all

   VAR Weapon[3] 
   Weapon[0] = '0x143A'      ; Оружие для мейсы 
   Weapon[1] = '0x0F51'      ; Оружие для фенсы 
   Weapon[2] = '0x13FE'      ; Оружие для сворды 
   VAR Skills[3] 
   Skills[0] = 'Mace Fighting'   ; Точные названия скиллов 
   Skills[1] = 'Fencing' 
   Skills[2] = 'Swordsmanship' 

Posted: 2006-06-16 13:02:58
by Edred
You Must Die wrote:Не сомневаюсь что ты в инже больше меня знаешь, но разве массив значится через VAR? Или так тоже можно?
Угу. На это внимание не обратил. Поправил.