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? Или так тоже можно?


Угу. На это внимание не обратил. Поправил.