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 - второе условие отмени и будет тебе счастье.
спасибо... тока я вот не нашел как запускать процедуру из процедуры

я через арм\дизарм сделал смену дивов.... щас вот ошибки выискиваю:(
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? Или так тоже можно?
Угу. На это внимание не обратил. Поправил.