Моё скриптовое наследие.

Anything and all.

Moderators: Murderator+, Murderator

Post Reply
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Моё скриптовое наследие.

Post by Destruction »

Собственно нарыл у друга пачку своих скриптов, некоторые из них настолько старые, что не выдерживают никакой критики..

Буду вот потихоньку выкладывать, может кому пригодится.

Прокачка скилла Magery.

Code: Select all

; Функция для прокачки скилла Magery
; Все настройки описаны в скрипте
sub AdvancedMagery()
   ; Advanced magery script v1.0, (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

; Функция - добирает реагент r из сумки b до количества 30 шт.
Sub GrabReag(r,b)
   uo.findtype(r,"-1","backpack")
   var q = uo.getQuantity("finditem")
   if q < 30 then
      uo.findtype(r,"-1",b)
      uo.moveitem("finditem",str(30-q),"backpack")
   endif
endsub

; Функция - моет бинты в воде, t - координаты тайла, b - тип грязных бинтов
Sub CleantBTile(t,b)
   while uo.count()
      uo.exec("waittargettile "+t)
      uo.usetype(b)
      checklag()
      wait(50)
   wend
endsub

; Функция - моет бинты в тазике. w - тазик, b - тип грязных бинтов
Sub CleanBTub(w,b)
   while uo.count(b)
      uo.waittargetobject(w)
      uo.usetype(b)
      checklag()
      wait(50)
   wend
endsub

; Лечит персонаж до максимального количества жизней. b - тип бинтов
Sub Heal(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

; Функция кастует спелл p1 на объект p2.
Sub Cast(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


Сбивание кастов противников.

Code: Select all

; Функция сбивает касты противников
sub AntiMagic()
   var tar, cast = "In Nox|Vas Flam|In Sanct Ylem|Des Sanct|Por Ort Grav|In Jux Hur Ylem|An Ex Por|An Ort|Corp Por|Vas Ort Flam|Kal Vas Flam|Ort Sanct|Vas Corp Po|Ort Rel" ; слова, на которые следует реагировать
   deljournal(cast)
   repeat
      tar = uo.injournal(cast)
      if tar then
         if isCast(tar) then
            if not isFriend(tar) then
               killCast(tar)
            endif
         endif
         deljournal(cast)
      endif
      wait(100)
   until false
endsub

; Функция кидает Magic Arrow в объект tar
Sub killCast(tar)
   var mana = uo.mana
   uo.cast('Magic Arrow',uo.journalserial(tar-1))
   while mana==uo.mana
      wait(100)
   wend
endsub

; Функция проверяет объект tar на дружелюбность.
Sub isFriend(tar)
   var i
   DIM friends[1] ; массив с указание ID друзей
   friends[0] = uo.getSerial()
   if uo.GetNotoriety(tar)=="1" then
      return true
   endif
   for i=0 to 1
      if tar == friends[i] then
         return true
      endif
   next
   return false
endsub

; Функция - проверяет действительно ли строка в журнале tar вызвана чьим-либо кастом.
Sub isCast(tar)
   if uo.journalcolor(tar-1) == "0x03B2" then
      return true
   endif
   return false
endsub


Лут трупов.

Code: Select all

; Собственно непосредственно функция лута, описание внутри функции. Лутит из трупов то, что НЕ указано в списке.
sub looter()
   var lc, lf, i, j, summ, ig, sp, st, tt
   var sp_len = 8#Для спец паков
   var db_len = 130#Для игнора
   var ct_len = 4#Для контейнеров
   DIM cont[val(str(ct_len))]
   cont[0] = '0x0E76'#Bag
   cont[1] = '0x0E75'#Backpack
   cont[2] = '0x0E40'#Metal Chest (Gold)
   cont[3] = '0x09AB'#Metal Chest (Metal)
   DIM sp_type[val(str(sp_len))]
   sp_type[0] = '0x0F7A'#Black Pearl
   sp_type[1] = '0x0F88'#Nightshade
   sp_type[2] = '0x0F8D'#Spider's Silk
   sp_type[3] = '0x0F85'#Ginseng
   sp_type[4] = '0x0F84'#Garlic
   sp_type[5] = '0x0F86'#Mandrake Root
   sp_type[6] = '0x0F7B'#Blood Moss
   sp_type[7] = '0x0F8C'#Sulphorous Ash
   DIM sp_pack[val(str(sp_len))]
   sp_pack[0] = '0x4001C74F'
   sp_pack[1] = sp_pack[0]
   sp_pack[2] = sp_pack[0]
   sp_pack[3] = sp_pack[0]
   sp_pack[4] = sp_pack[0]
   sp_pack[5] = sp_pack[0]
   sp_pack[6] = sp_pack[0]
   sp_pack[7] = sp_pack[0]
   DIM db[val(str(db_len))]
   db[0] = '0x14EF'#Deed
   db[1] = '0x13FE'#Katana
   db[2] = '0x1057'#Sextant
   db[3] = '0x1713'#Floppy Hat
   db[4] = '0x1404'#War Fork
   db[5] = '0x0F9E'#Scissors
   db[6] = '0x0C7F'#Ear of corn
   db[7] = '0x153B'#Half apron
   db[8] = '0x13C7'#Leather Gorget
   db[9] = '0x13D4'#Studded sleeves
   db[10] = '0x0994'#Pear
   db[11] = '0x1030'#Jointing plane 0 0x1030
   db[12] = '0x0EB3'#Lute
   db[13] = '#0x1EBC'#Tinker Tools
   db[14] = '0x13E3'#Smith Hammer
   db[15] = '0x1F7B'#Doublet
   db[16] = '0x1B78'#Kite wooden shield
   db[17] = '0x0C74'#Honeydew melon
   db[18] = '0x1516'#Long skirt
   db[19] = '0x1EFD'#Fancy shirt
   db[20] = '0x0F39'#Showel
   db[21] = '0x170F'#Shoes
   db[22] = '0x170D'#Sandals
   db[23] = '0x1539'#Long pants
   db[24] = '0x13EE'#Ringmail sleeves
   db[25] = '0x13EE'#Leather cap
   db[26] = '0x171C'#Jester's cap
   db[27] = '0x1517'#Plain shirt
   db[28] = '0x0FBB'#Tongs
   db[29] = '0x1541'#Body sash
   db[30] = '0x0EC2'#Cleaver
   db[31] = '0x1EFF'#Fancy dress
   db[32] = '0x1FA1'#Tunic
   db[33] = '0x0E87'#Pitchfork
   db[34] = '0x0E9C'#Drum
   db[35] = '0x0F9D'#Sewening kit
   db[36] = '0x1C02'#Studded armor
   db[37] = '0x1400'#Kryss
   db[38] = '0x0F4B'#Double axe
   db[39] = '0x1C08'#Leather skirt
   db[40] = '0x1531'#Short skirt
   db[41] = '0x1B7B'#Metal shield
   db[42] = '0x172A'#Lime
   db[43] = '0x1F01'#Plain dress
   db[44] = '0x1F03'#Robe
   db[45] = '0x1515'#Cloak
   db[46] = '0x1B74'#Kite metal shield
   db[47] = '0x1402'#Short spear
   db[48] = '0x0EB2'#Lap Harp
   db[49] = '0x1034'#Saw
   db[50] = '0x0C70'#Head of lettuce
   db[51] = '0x0E86'#Pickaxe
   db[52] = '0x1B7B'#Metal shield
   db[53] = '0x0C64'#Gourd
   db[54] = '0x1711'#Thigh Boots
   db[55] = '0x0EC4'#Skinning Knife
   db[56] = '#0x0F43'#Hatchet
   db[57] = '0x0F49'#Axe
   db[58] = '0x171A'#Feather Hat
   db[59] = '0x0F51'#Dagger
   db[60] = '0x0F0D'#Explosion Bottle
   db[61] = '0x0F0A'#Poison Bottle
   db[62] = '0x0F0B'#Refresh Bottle
   db[63] = '0x0F08'#Agility Bottle
   db[64] = '0x0F07'#Cure Bottle
   db[65] = '0x0F0C'#Heal Bottle
   db[66] = '0x0F09'#Strength Bottle
   db[67] = '0x0E9D'#Tambourine
   db[68] = '0x13CB'#Leather Leggins
   db[69] = '0x1716'#Straw Tall Hat
   db[70] = '0x13CC'#Leather Tunic
   db[71] = '0x13CC'#Ringmain Leggins
   db[72] = '0x13D5'#Studded gloves
   db[73] = '0x1442'#Two Handed Axe
   db[74] = '0x13B9'#Viking Sword
   db[75] = '0x1C06'#Leather Armor
   db[76] = '0x1C00'#Leather Shorts
   db[77] = '0x1715'#Cap
   db[78] = '0x1714'#Brim Hat
   db[79] = '0x13F6'#Butcher knife
   db[80] = '0x1C00'#Leather Shorts
   db[81] = '0x13F0'#Ringmail Leggins
   db[82] = '0x1F9F'#Jester's Suit
   db[83] = '0x13BE'#Chainmail Leggins
   db[84] = '0x1718'#Wizards Hat
   db[85] = '0x1406'#War Mace
   db[86] = '0x0F60'#Long Sword
   db[87] = '0x1537'#Kilt
   db[88] = '0x1DB9'#Leather Cap
   db[89] = '0x153F'#Bandana
   db[90] = '0x0E9B'#Mortat and Pestle
   db[91] = '0x13B3'#Club
   db[92] = '0x0F06'#Nightsight Bottle
   db[93] = '0x1543'#Scullcap
   db[94] = '0x0F62'#Spear
   db[95] = '0x0F5E'#Broadsword
   db[96] = '0x170B'#Boots
   db[97] = '0x1F49'#Short Pants
   db[98] = '0x171B'#Tricone Hat
   db[99] = '0x0C79'#Canteloupe
   db[100] = '0x13DA'#Studded Leggins
   db[101] = '0x13FA'#Large Battle Axe
   db[102] = '0x1C0A'#Leather Bustier
   db[103] = '0x152E'#Shrort Pants
   db[104] = '0x13BB'#Chainmail Coif
   db[105] = '0x13B5'#Scimitar
   db[106] = '0x1B7A'#Wooden Shield
   db[107] = '0x13DB'#Studded Tunic
   db[108] = '0x13BF'#Ringmail Tunic
   db[109] = '0x1438'#War Hammer
   db[110] = '0x1C0C'#Studded Bustier
   db[111] = '0x13EB'#Ringmail Gloves
   db[112] = '0x13EC'#Ringmail Tunic
   db[113] = '0x143E'#Halberd
   db[114] = '0x13D6'#Studded Gorget
   db[115] = '0x13C6'#Leather Gloves
   db[116] = '0x1717'#Straw Hat
   db[117] = '0x1B76'#Platemail Heater
   db[118] = '0x1411'#Platemail Legs
   db[119] = '0x1410'#Platemail Arms
   db[120] = '0x1414'#Platemail Gloves
   db[121] = '0x1415'#Platemail Chest
   db[122] = '0x1412'#Platemail Helm
   db[123] = '0x140E'#Nose Helm
   db[124] = '0x140A'#Helmet
   db[125] = '0x0F47'#Battle Axe
   db[126] = '0x1413'#Platemail Gorget
   db[127] = '0x0F4D'#Bardiche
   db[128] = '0x1440'#Cutlass
   db[129] = '0x1408'#Closed Helm
   uo.exec('set injectecho 1')
   uo.exec('set finddistance 2')
   repeat
      uo.findtype('0x2006','-1','ground')
      if uo.findcount() && uo.getDistance('finditem') < 4 then
         lc=uo.getSerial('finditem')
         uo.useobject(lc)
         checklag()
         repeat
            uo.findtype(-1,-1,lc)
            if uo.findcount() then
               ig = false
               sp = false
               st = false
               lf = uo.getGraphic('finditem')
               for i=0 to db_len-1
                  if lf == db[i] then
                     ig = true
                  endif
               next
               if ig then
                  uo.ignore('finditem')
               else
                  for i=0 to sp_len-1
                     if lf == sp_type[i] then
                        sp = true
                        summ = i
                     endif
                  next
                  if sp then
                     repeat
                        uo.moveitem('finditem',0,sp_pack[i])
                        wait(200)
                        uo.findtype(-1,-1,lc)
                     until not uo.getGraphic('finditem')==lf
                  else
                     if uo.getQuantity('finditem') > 1 then
                        repeat
                           uo.moveitem('finditem',0,'backpack')
                           wait(200)
                           uo.findtype(-1,-1,lc)
                        until not uo.getGraphic('finditem')==lf
                     else
                        repeat
                           uo.moveitem('finditem',0,'backpack',50,130,0)
                           wait(200)
                           uo.findtype(-1,-1,lc)
                        until not uo.getGraphic('finditem')==lf
                     endif
                  endif
               endif
            endif
         until not uo.findcount()
         uo.ignore(lc)
         uo.hide(lc)
      endif
      for j=0 to ct_len-1
         uo.findtype(cont[j],-1,'backpack')
         while uo.findcount()
            lc = uo.getSerial('finditem')
            uo.useobject(lc)
            checklag()
            uo.findtype(-1,-1,lc)
            repeat
               uo.findtype(-1,-1,lc)
               if uo.findcount() then
                  ig = false
                  sp = false
                  st = false
                  lf = uo.getGraphic('finditem')
                  for i=0 to db_len-1
                     if lf == db[i] then
                        ig = true
                     endif
                  next
                  if ig then
                     uo.ignore('finditem')
                  else
                     for i=0 to sp_len-1
                        if lf == sp_type[i] then
                           sp = true
                           summ = i
                        endif
                     next
                     if sp then
                        repeat
                           uo.moveitem('finditem',0,sp_pack[i])
                           wait(200)
                           uo.findtype(-1,-1,lc)
                        until not uo.getGraphic('finditem')==lf
                     else
                        if uo.getQuantity('finditem') > 1 then
                           repeat
                              uo.moveitem('finditem',0,'backpack')
                              wait(200)
                              uo.findtype(-1,-1,lc)
                           until not uo.getGraphic('finditem')==lf
                        else
                           repeat
                              uo.moveitem('finditem',0,'backpack',50,130,0)
                              wait(200)
                              uo.findtype(-1,-1,lc)
                           until not uo.getGraphic('finditem')==lf
                        endif
                     endif
                  endif
               endif
            until not uo.findcount()
            while uo.containerOf(lc)==uo.getSerial('backpack')
               uo.moveitem(lc,0,'ground')
               wait(100)
            wend
            uo.findtype(cont[j],-1,'backpack')
         wend
      next
      wait(100)
   until false
endsub


Прокачка скилла Forensic.

Code: Select all

; Собственно скрипт - включаем и он будет использовать скилл на ближайший труп.
sub forensic()
   uo.set('finddistance','3')
   repeat
      uo.deletejournal()
      uo.findtype('0x2006','-1','ground')
      uo.waittargetobject('finditem')
      uo.useskill('Forensic Evaluation')
      repeat
         wait(200)
      until uo.injournal('can tell nothing|been killed by|cannot|decide')
   until false
endsub


Лечение бинтами.

Code: Select all

; Функция полечит персонаж бинтами, если есть бинты и клиент не ожидает курсора.
sub selfbandage()
   if not uo.waiting() then
      uo.findtype('0x0E21',"-1",'backpack')
      if uo.findcount() then
         uo.waittargetself()
         uo.useobject('finditem')
      else
         uo.print('Бинты не найдены!')
      endif
   else
      uo.print('Ловушка на прицел уже установлена!')
   endif
endsub


Плавка.

Code: Select all

 ; Функция плавит всё, что указано в списке
sub smelt_all()
   uo.set('finddistance','2')
   var i, item
   DIM ore[11] ; список того, что нужно сплавить.
   ore[0] = '0x19B7'
   ore[1] = '0x19BA'
   ore[2] = '0x19B8'
   ore[3] = '0x19B9'
   ore[4] = '0x1415'
   ore[5] = '0x1411'
   ore[6] = '0x1410'
   ore[7] = '0x1412'
   ore[8] = '0x1414'
   ore[9] = '0x1413'
   ore[10] = '0x13B9'
   for i=0 to 10
      repeat
         uo.findtype(ore[i],"-1","backpack")
         if uo.findcount() then
            item = uo.getSerial('finditem')
            uo.findtype('0x1991',"-1",'ground')
            if not uo.findcount() then
               uo.findtype('0x19A3',"-1",'ground')
            endif
            uo.waittargetobject(item)
            uo.useobject('finditem')
            while uo.waiting()
               wait(100)
            wend
         endif
      until not uo.findcount()
   next
endsub


Прокачка скилла Bowcraft / Fletching.

Code: Select all

 ; Скрипт берёт по 1ому логу из контейнера и крафтит shaft'ы (заготовки стрел).
sub Bowcraft()
   var q
   uo.set("finddistance","1")
   uo.addObject("Container with logs")
   while uo.targeting()
      wait(100)
   wend
   repeat
      uo.findtype("0x1BDD","0x0000","Container with logs")
      uo.moveitem("finditem","2","backpack")
      while uo.count("0x1BDD","0x0000") < 1
         wait(200)
      wend
      q = uo.getQuantity("finditem")
      while uo.getQuantity("finditem") == q
         uo.moveitem("finditem","1","Container with logs")
         wait(100)
      wend
      repeat
         uo.deletejournal()
         uo.waittargettype("0x1BDD")
         uo.waitmenu('What do you want to carve the', 'Shaft')
         uo.usetype("0x0F51")
         repeat
            wait(100)
         until uo.injournal("pack|fail")
      until uo.count("0x1BDD","0x0000") == 0
      if uo.weight > 200 then
         uo.findtype("0x1BD4","-1","backpack")
         uo.moveitem("finditem","0","Container with logs")
         while uo.count("0x1BD4") > 0
            wait(700)
         wend
      endif
   until false
endsub


Прокачка скилла Stealth.

Code: Select all

 ; Функция прокачивает скилл Stealth посредством использования скилла и непосредственно хождения в скрытом режиме.
sub Stealth()
   repeat
      while not uo.hidden()
         uo.useskill('Stealth')
         wait(200)
      wend
      uo.press(36,2)
      while not uo.hidden()
         uo.useskill('Stealth')
         wait(200)
      wend
      uo.press(34,2)
   until false
endsub


Забивка банка.

Code: Select all

; Функция исользуя баг Sphere докладывает в банк любой предмет, не смотря на ограничения по весу. Так же может использоваться для складирования контейенров друг в друга.
sub InsertToBank()
   uo.print("Укажи объект который хочешь положить в банк")
   uo.addObject("To Bank")
   while uo.targeting()
      wait(50)
   wend
   uo.print("Укажи вещь в банке")
   uo.addObject("Into Bank")
   while uo.targeting()
      wait(50)
   wend
   uo.exec("moveitem "+uo.getSerial("To Bank")+" 0 "+uo.getSerial("Into Bank"))
endsub


ContOptimize

Code: Select all

 ; Уже не помню, что это, но кажется идеей было оптимально пересложить предметы в контейнере c.
sub contOptimize(c)
   var i, j, k, count
   uo.findtype("-1","-1",c)
   k = uo.findcount()
   DIM items[val(str(k))]
   for i=0 to k-1
      uo.findtype("-1","-1",c)
      items[i] = uo.getSerial("finditem")
      uo.ignore("finditem")
   next
   for i=0 to k-1
      uo.ignore(items[i])
   next
   for i=0 to k-1
      for j=0 to k-1
         if items[i] && (uo.getQuantity(items[i])>1 || uo.getQuantity(items[j])>1) && uo.getGraphic(items[i])==uo.getGraphic(items[j]) && uo.getColor(items[i])==uo.getColor(items[j]) then
            count = uo.getQuantity(items[i])
            uo.moveitem(items[j],0,items[i])
            items[i] = items[j]
            while count == uo.getQuantity(items[i])
               wait(200)
            wend
            items[j] = false
         endif
      next
   next
endsub


to be continued..
$keR
Posts: 185
Joined: 2006-05-25 23:02:02
Location: Uoo

Post by $keR »

Сбивание кастов противников.

с этим скриптом трабл:
кидает стрелку и в себя и в любого кто кастует рядом=( а надо чтоб по последней цели и + UO.Ignore("self") ток пробовал ниче не могу сделать.=(
надеюсь поможете



Code: Select all

Sub isFriend(tar) 

   var i
   DIM friends[3]
   friends[0] ='0x00xxxxxxx' ; ja
   friends[1] ='0x00xxxxxxx' 1drug
   friends[2] ='0x00xxxxxxx' 2 drug
   UO.Ignore("self")
   if uo.GetNotoriety(tar)=="1" then
      return true
   endif
   for i=0 to 2
      if tar == friends[i] then
         return true
      endif
   next
   return false
endsub
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Post by Destruction »

Code: Select all

Sub isFreind( tar )
if tar == uo.getSerial( "lasttarget" ) then
   return false;
endif
return true;
endsub


Нужно иногда мозг напрягать.
$keR
Posts: 185
Joined: 2006-05-25 23:02:02
Location: Uoo

Post by $keR »

Destruction wrote:

Code: Select all

Sub isFreind( tar )
if tar == uo.getSerial( "lasttarget" ) then
   return false;
endif
return true;
endsub


Нужно иногда мозг напрягать.


=) у мя со скриптингом неочень,
а подскажи плз куда друзей вписать?*
а то будет на всех кидать
друзей примерно 4-человека, это минимально
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Post by Destruction »

Этот вариант будет кидать только на lasttarget.
$keR
Posts: 185
Joined: 2006-05-25 23:02:02
Location: Uoo

Post by $keR »

оке спс, ласт таргет и ласт статус это не одно и то же?
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Post by Destruction »

$keR wrote:оке спс, ласт таргет и ласт статус это не одно и то же?

Нет.
$keR
Posts: 185
Joined: 2006-05-25 23:02:02
Location: Uoo

Post by $keR »

if not isFriend(tar) then
В ЭТОЙ СТРОКЕ ДАЕТ ОШИБКУ=(
DerMeister =)
Expert!
Posts: 1032
Joined: 2006-02-25 21:48:38

Post by DerMeister =) »

$keR wrote:if not isFriend(tar) then
В ЭТОЙ СТРОКЕ ДАЕТ ОШИБКУ=(

Если ты пытаешься непосредственно запустить этот "скрипт", то это не скрипт а "процедура"... её нельзя непосредственно вызывать на вкладки "Script" или через бинды...
DerMeister сейчас на нейрале!
$keR
Posts: 185
Joined: 2006-05-25 23:02:02
Location: Uoo

Post by $keR »

DerMeister =) wrote:
$keR wrote:if not isFriend(tar) then
В ЭТОЙ СТРОКЕ ДАЕТ ОШИБКУ=(

Если ты пытаешься непосредственно запустить этот "скрипт", то это не скрипт а "процедура"... её нельзя непосредственно вызывать на вкладки "Script" или через бинды...


pзапускаю во вкладке Скриптс:
sub AntiMagic()

в УО вторым чаро кастую ченить и вылазит ошибка в той строке
DerMeister =)
Expert!
Posts: 1032
Joined: 2006-02-25 21:48:38

Post by DerMeister =) »

Destruction wrote:Этот вариант будет кидать только на lasttarget.

Этот скрипт нивкого кидать не будет по определению,потому что:

Code: Select all

if tar == uo.getSerial( "lasttarget" ) then

tar у тебя, это номер строки... Надо:

Code: Select all

if uo.journalserial(tar-1) == uo.getSerial( "lasttarget" ) then


А прописывать друзей так:

Code: Select all

Sub isFriend(tar) 
   var i
   DIM friends[100] ;Массив с ID друзей (100, чтобы не напрягатся, при перенастройке (если друзей больше ста, то поставь тогда большее число)
   friends[0] = uo.getSerial()
   friends[1] = 0x00000000   #тут серийники френдов.
   friends[2] = 0x00000000
   friends[3] = 0x00000000   #и тп...

   if uo.GetNotoriety(uo.journalserial(tar-1))=="1" then
      return true
   endif
   for i=0 to 3   # тут число друзей (включая себя) МИНУС ЕДИНИЦА, другими словами: номер последнего друга из массива friends[]
      if tar == friends[i] then
         return true
      endif
   next
   return false
endsub


ЗЫ: Пока писал, появился вопрос: Destr, а ты скрипты то перед тем как выложить тестишь, или так же как Quest самонадеян??? :?
DerMeister сейчас на нейрале!
$keR
Posts: 185
Joined: 2006-05-25 23:02:02
Location: Uoo

Post by $keR »

Code: Select all



sub AntiMagic()

   var tar, cast = "Ort Sanct|Ort Rel|In Nox|Kal Ort Por|Por Ort Grav|An Ex Por|An Ort|Kal Vas Flam" ; слова, на которые следует реагировать
uo.deletejournal(cast)
   repeat

      tar =uo.injournal(cast)
     
      if tar then
         if isCast(tar) then
            if not isFriend(tar) then
               killCast(tar)
            endif
         endif
      uo.deletejournal(cast)
      endif
      wait(100)
   until false
endsub

; Функция кидает Magic Arrow в объект tar
Sub killCast(tar)

   var mana = uo.mana
   
   uo.cast('Magic Arrow',uo.journalserial(tar-1))
   
   while mana==uo.mana
      wait(100)
   wend
end sub

; Функция проверяет объект tar на дружелюбность.
Sub isFriend(tar)
   var i
   DIM friends[100] ;Массив с ID друзей (100, чтобы не напрягатся, при перенастройке (если друзей больше ста, то поставь тогда большее число)
   friends[0] = uo.getSerial()   (ВОТ ТУТ МЕНЯТЬ НИЧЕГО НЕ НАДО? В ЭТОЙ СТРОКЕ?)
   friends[1] = 0x016ACCA4  #тут серийники френдов. 
   friends[2] = 0x0031FB21 ;
   friends[3] = 0x000CCB01   #и тп...

   if uo.GetNotoriety(uo.journalserial(tar-1))=="1" then
      return true
   endif
   for i=0 to 3   # тут число друзей (включая себя) МИНУС ЕДИНИЦА, другими словами: номер последнего друга из массива friends[]
      if uo.journalserial(tar-1) == friends[i] then
         return true
      endif
   next
   return false
endsub

; Функция - проверяет действительно ли строка в журнале tar вызвана чьим-либо кастом.
Sub isCast(tar)
   if uo.journalcolor(tar-1) == "0x03B2" then
      return true
   endif
   return false
endsub





блин чет фаще неврубаюсь нифига=(
не хочет игнорить френдом и меня, темболее! нельзя игнор селф поставить какнитЬ?

Исправил, проверяй. Вук.
DerMeister =)
Expert!
Posts: 1032
Joined: 2006-02-25 21:48:38

Post by DerMeister =) »

Кароч, я в ТВОЁМ предидущем посте исправил. Бери оттуда и проверяй:
ЗЫ: Это вопрос к Destr'u, почему он непровернные скрипты клаёдт.

ЗЗЫ: Поменял

Code: Select all

if tar == friends[i] then

на

Code: Select all

if uo.journalserial(tar-1) == friends[i] then
.

// -- // -- // -- // -- // -- // -- // -- // -- // -- // -- // -- // -- // -- // -- // -- // -- // -- // -- // -- // -- // -- // -- // -- // -- // -- // -- // -- // -- // -- // -- // -- // -- // -- //
Вообще, мне концепция скрипта не нравится. Пока пройдёт часть проверок, tar может перестать указыать на нужную строчку. Думаю, нужно привязатся не только к номеру строки (для проверки цвета), а еще и к ИД, так как номер строки не стратичен.
DerMeister сейчас на нейрале!
$keR
Posts: 185
Joined: 2006-05-25 23:02:02
Location: Uoo

Post by $keR »

ув. DerMeister
а по русски можно? 0_0
я ниче не понял=(
пробую вставить все что сказал)
DerMeister =)
Expert!
Posts: 1032
Joined: 2006-02-25 21:48:38

Post by DerMeister =) »

Кароч, берешь

Code: Select all

sub AntiMagic() 

   var tar, cast = "Ort Sanct|Ort Rel|In Nox|Kal Ort Por|Por Ort Grav|An Ex Por|An Ort|Kal Vas Flam" ; слова, на которые следует реагировать
uo.deletejournal(cast)
   repeat

      tar =uo.injournal(cast)
     
      if tar then
         if isCast(tar) then
            if not isFriend(tar) then
               killCast(tar)
            endif
         endif
      uo.deletejournal(cast)
      endif
      wait(100)
   until false
endsub

; Функция кидает Magic Arrow в объект tar
Sub killCast(tar)

   var mana = uo.mana
   
   uo.cast('Magic Arrow',uo.journalserial(tar-1))
   
   while mana==uo.mana
      wait(100)
   wend
end sub

; Функция проверяет объект tar на дружелюбность.
Sub isFriend(tar)
   var i
   DIM friends[100] ;Массив с ID друзей (100, чтобы не напрягатся, при перенастройке (если друзей больше ста, то поставь тогда большее число)
   friends[0] = uo.getSerial()   (ВОТ ТУТ МЕНЯТЬ НИЧЕГО НЕ НАДО? В ЭТОЙ СТРОКЕ?)
   friends[1] = 0x016ACCA4  #тут серийники френдов. 
   friends[2] = 0x0031FB21 ;
   friends[3] = 0x000CCB01   #и тп...

   if uo.GetNotoriety(uo.journalserial(tar-1))=="1" then
      return true
   endif
   for i=0 to 3   # тут число друзей (включая себя) МИНУС ЕДИНИЦА, другими словами: номер последнего друга из массива friends[]
      if uo.journalserial(tar-1) == friends[i] then
         return true
      endif
   next
   return false
endsub

; Функция - проверяет действительно ли строка в журнале tar вызвана чьим-либо кастом.
Sub isCast(tar)
   if uo.journalcolor(tar-1) == "0x03B2" then
      return true
   endif
   return false
endsub

И не нужно квотить скрипты, из-за этого тема растёт как на дрожжях. Когда цитируешь, удаляй от туда код (или оставляй всего пару строк). Если нармально объянишь и так будет понятно к какому скрипту относится.
DerMeister сейчас на нейрале!
$keR
Posts: 185
Joined: 2006-05-25 23:02:02
Location: Uoo

Post by $keR »

ВСТАВИЛ скрипт, работает без Ошибки, уже порадовало=)
НО игнорит массив френдов, зато себя терь тож игнорит=)
может как нить можно сделать, чтоб френды были? или никак?
DerMeister =)
Expert!
Posts: 1032
Joined: 2006-02-25 21:48:38

Post by DerMeister =) »

А, хз... Попробуй серийники френдов в кавычки взять...
DerMeister сейчас на нейрале!
Post Reply