Yoko

All sides of Injection
It is currently 2025-12-03 08:54:42

All times are UTC+02:00




Post new topic  Reply to topic  [ 17 posts ] 
Author Message
PostPosted: 2006-12-01 02:09:44 
Offline
Junior Expert
User avatar

Joined: 2004-06-24 22:08:56
Posts: 3220
Собственно нарыл у друга пачку своих скриптов, некоторые из них настолько старые, что не выдерживают никакой критики..

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

Прокачка скилла Magery.
Code:
; Функция для прокачки скилла 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:
; Функция сбивает касты противников
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:
; Собственно непосредственно функция лута, описание внутри функции. Лутит из трупов то, что НЕ указано в списке.
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:
; Собственно скрипт - включаем и он будет использовать скилл на ближайший труп.
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:
; Функция полечит персонаж бинтами, если есть бинты и клиент не ожидает курсора.
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:
 ; Функция плавит всё, что указано в списке
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:
 ; Скрипт берёт по 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:
 ; Функция прокачивает скилл 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:
; Функция исользуя баг 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:
 ; Уже не помню, что это, но кажется идеей было оптимально пересложить предметы в контейнере 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..


Top
   
 Post subject:
PostPosted: 2006-12-09 23:48:27 
Offline
User avatar

Joined: 2006-05-25 23:02:02
Posts: 185
Location: Uoo
Сбивание кастов противников.

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



Code:
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


Top
   
 Post subject:
PostPosted: 2006-12-10 08:07:39 
Offline
Junior Expert
User avatar

Joined: 2004-06-24 22:08:56
Posts: 3220
Code:
Sub isFreind( tar )
if tar == uo.getSerial( "lasttarget" ) then
   return false;
endif
return true;
endsub


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


Top
   
 Post subject:
PostPosted: 2006-12-10 11:06:48 
Offline
User avatar

Joined: 2006-05-25 23:02:02
Posts: 185
Location: Uoo
Destruction wrote:
Code:
Sub isFreind( tar )
if tar == uo.getSerial( "lasttarget" ) then
   return false;
endif
return true;
endsub


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


=) у мя со скриптингом неочень,
а подскажи плз куда друзей вписать?*
а то будет на всех кидать
друзей примерно 4-человека, это минимально


Top
   
 Post subject:
PostPosted: 2006-12-10 18:11:05 
Offline
Junior Expert
User avatar

Joined: 2004-06-24 22:08:56
Posts: 3220
Этот вариант будет кидать только на lasttarget.


Top
   
 Post subject:
PostPosted: 2006-12-11 23:20:16 
Offline
User avatar

Joined: 2006-05-25 23:02:02
Posts: 185
Location: Uoo
оке спс, ласт таргет и ласт статус это не одно и то же?


Top
   
 Post subject:
PostPosted: 2006-12-12 17:24:05 
Offline
Junior Expert
User avatar

Joined: 2004-06-24 22:08:56
Posts: 3220
$keR wrote:
оке спс, ласт таргет и ласт статус это не одно и то же?

Нет.


Top
   
 Post subject:
PostPosted: 2006-12-12 19:27:38 
Offline
User avatar

Joined: 2006-05-25 23:02:02
Posts: 185
Location: Uoo
if not isFriend(tar) then
В ЭТОЙ СТРОКЕ ДАЕТ ОШИБКУ=(


Top
   
 Post subject:
PostPosted: 2006-12-12 19:36:26 
Offline
Expert!
User avatar

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

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

_________________
DerMeister сейчас на нейрале!


Top
   
 Post subject:
PostPosted: 2006-12-12 21:17:56 
Offline
User avatar

Joined: 2006-05-25 23:02:02
Posts: 185
Location: Uoo
DerMeister =) wrote:
$keR wrote:
if not isFriend(tar) then
В ЭТОЙ СТРОКЕ ДАЕТ ОШИБКУ=(

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


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

в УО вторым чаро кастую ченить и вылазит ошибка в той строке


Top
   
 Post subject:
PostPosted: 2006-12-12 21:39:02 
Offline
Expert!
User avatar

Joined: 2006-02-25 21:48:38
Posts: 1032
Destruction wrote:
Этот вариант будет кидать только на lasttarget.

Этот скрипт нивкого кидать не будет по определению,потому что:
Code:
if tar == uo.getSerial( "lasttarget" ) then

tar у тебя, это номер строки... Надо:
Code:
if uo.journalserial(tar-1) == uo.getSerial( "lasttarget" ) then


А прописывать друзей так:
Code:
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 сейчас на нейрале!


Top
   
 Post subject:
PostPosted: 2006-12-12 22:10:40 
Offline
User avatar

Joined: 2006-05-25 23:02:02
Posts: 185
Location: Uoo
Code:


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





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

Исправил, проверяй. Вук.


Top
   
 Post subject:
PostPosted: 2006-12-12 22:48:50 
Offline
Expert!
User avatar

Joined: 2006-02-25 21:48:38
Posts: 1032
Кароч, я в ТВОЁМ предидущем посте исправил. Бери оттуда и проверяй:
ЗЫ: Это вопрос к Destr'u, почему он непровернные скрипты клаёдт.

ЗЗЫ: Поменял
Code:
if tar == friends[i] then

на
Code:
if uo.journalserial(tar-1) == friends[i] then
.

// -- // -- // -- // -- // -- // -- // -- // -- // -- // -- // -- // -- // -- // -- // -- // -- // -- // -- // -- // -- // -- // -- // -- // -- // -- // -- // -- // -- // -- // -- // -- // -- // -- //
Вообще, мне концепция скрипта не нравится. Пока пройдёт часть проверок, tar может перестать указыать на нужную строчку. Думаю, нужно привязатся не только к номеру строки (для проверки цвета), а еще и к ИД, так как номер строки не стратичен.

_________________
DerMeister сейчас на нейрале!


Top
   
 Post subject:
PostPosted: 2006-12-12 23:05:17 
Offline
User avatar

Joined: 2006-05-25 23:02:02
Posts: 185
Location: Uoo
ув. DerMeister
а по русски можно? 0_0
я ниче не понял=(
пробую вставить все что сказал)


Top
   
 Post subject:
PostPosted: 2006-12-13 01:13:17 
Offline
Expert!
User avatar

Joined: 2006-02-25 21:48:38
Posts: 1032
Кароч, берешь
Code:
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 сейчас на нейрале!


Top
   
 Post subject:
PostPosted: 2006-12-13 08:31:00 
Offline
User avatar

Joined: 2006-05-25 23:02:02
Posts: 185
Location: Uoo
ВСТАВИЛ скрипт, работает без Ошибки, уже порадовало=)
НО игнорит массив френдов, зато себя терь тож игнорит=)
может как нить можно сделать, чтоб френды были? или никак?


Top
   
 Post subject:
PostPosted: 2006-12-13 16:05:24 
Offline
Expert!
User avatar

Joined: 2006-02-25 21:48:38
Posts: 1032
А, хз... Попробуй серийники френдов в кавычки взять...

_________________
DerMeister сейчас на нейрале!


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 17 posts ] 

All times are UTC+02:00


Who is online

Users browsing this forum: No registered users and 3 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited