sub AdvancedMagery() ; Advanced magery script v1.1, (c) Destruction. var i, spell = "Magic Arrow" ; спел который кастовать var target = "self" ; куда прицеливаться - false если не требуется var nmedit = true ; нужно ли медитировать? var nheal = "0x0E21" ; тип бинтов или false, чтобы не лечиться var b_ban = "0x0E20" ; тип кровавых бинтов var water = "0x400524D2" ; water tub ID или false, чтобы не мыть бинты var watertile = false ; tile type, tile x, tile y, tile z через зепятую или false чтобы не мыть var bag = "0x40021A29" ; сумка откуда всё набирать или false uo.useobject(bag) checklag() var nlen = 3 ; количество необходимых реагентов DIM reagents[val(str(nlen))] ; реагенты reagents[0] = "0x0F88" ; nightshade reagents[1] = "0x0F7A" ; black pearls reagents[2] = "0x0E21" ; bandages while uo.skillval("Magery",1) < 1000 if bag then for i=0 to nlen-1 GrabReag(reagents[i],bag) next endif Cast(spell,target) if nmedit then Medit() endif if nheal then Heal(nheal) endif if water then CleanBTub(water,b_ban) endif if watertile then CleantBTile(water,b_ban) endif wend endsub
Sub GrabReag(r,b) ; функция добора r из b до 30. var q repeat q = GetCount(r) if q < 30 then uo.findtype(r,"-1",b) uo.moveitem("finditem",str(30-q),"backpack") wait(100) endif until q >= 30 endsub
Sub GetCount(type) ; функция подсчёта количества вещей (стекующихся) в бекпеке по типу var count = 0 uo.findtype(type,"-1","backpack") while uo.findcount() count = count + uo.getQuantity("finditem") uo.ignore("finditem") uo.findtype(type,"-1","backpack") wend uo.ignorereset() return count endsub
Sub CleantBTile(t,b) ; помывка бинтов в луже, t - информация о тайле (from tileinfo), b - грязные бинты while uo.count() uo.exec("waittargettile "+t) uo.usetype(b) checklag() wait(50) wend endsub
Sub CleanBTub(w,b) ; помывка бинтов в тазике, w - Tazik ID, b - грязные бинты while uo.count(b) uo.waittargetobject(w) uo.usetype(b) checklag() wait(50) wend endsub
Sub Heal(b) ; функция лечения себя, b - тип бинтов while uo.getHP() < uo.str uo.waittargetobject("self") uo.usetype(b) checklag() wait(750) wend endsub
Sub Medit() ; функция медитации while uo.mana < uo.int uo.useskill("Meditation") wait(300) wend endsub
Sub Cast(p1, p2) ; функция каста. p1 - что кастуем, p2 - куда кастуем. var mana = uo.mana if p2 then uo.waittargetobject(p2) endif uo.cast(p1) var timer = uo.timer() repeat wait(100) until uo.mana < mana || uo.timer()-30 > timer endsub