Yoko

All sides of Injection
It is currently 2024-04-18 02:04:23

All times are UTC+02:00




Post new topic  Reply to topic  [ 8 posts ] 
Author Message
PostPosted: 2011-04-15 11:51:41 
Offline
User avatar

Joined: 2009-05-28 09:58:28
Posts: 2802
Location: Иваново
Чейто я в тяпницу никак не соображу. Мыслями уже в субботе.

Задача состоит в следующем:
есть 3 предмета - ножницы, книга, ключ.
Скриптом нужно разложить их по разным углам рюкзака.
Теоретически это выглядит вот так:
Code:
sub sort()
UO.MoveItem('_0x0EFA', '0', 'backpack', 10, 10, 0) ; spellbook
      wait(500)
UO.MoveItem('_0x0F9E', '0', 'backpack', 150, 10, 0) ; Silver Scissors
      wait(500)
UO.MoveItem('_0x1012', '0', 'backpack', 10, 150, 0) ; Key
      wait(500)
end sub


Но это не спортивно. Модифицируем через for:

Code:
sub sort()
   var i
   DIM item[3]
   item[0] = '0x0EFA' ; spellbook
   item[1] = '0x0F9E' ; Silver Scissors
   item[2] = '0x1012' ; Key

   for i = 0 to 2
      UO.MoveItem(item[i], '0', 'backpack', X, Y, Z)
      wait(500)
   next
end sub


И вот тут мы подходим к моей проблеме.
Как задать массив координат не делая 3 (2 для XY) отдельных массива?


То-есть конечный результат должен иметь вид примерно следующего плана:

Code:
sub sort()
   var i
   DIM item[3], XYZ[3]
   item[0] = '0x0EFA' ; spellbook
   item[1] = '0x0F9E' ; Silver Scissors
   item[2] = '0x1012' ; Key
   XYZ[0] = '10, 10, 0'
   XYZ[1] = '150, 10, 0'
   XYZ[3] = '10, 150, 0'

   for i = 0 to 2
      UO.MoveItem(item[i], '0', 'backpack', XYZ[i])
      wait(500)
   next
end sub

В таком виде скрипт к сожалению не работает.

_________________
Image
YokoInjection CodeSweeper
Ошибка "Unhandled exception in parser"
Стрелялка для олдов.


Top
   
PostPosted: 2011-04-15 19:14:07 
Offline

Joined: 2007-07-07 13:14:01
Posts: 90
универсальная ф-ция для перекладывания по координатам тебе в помощь.


Top
   
PostPosted: 2011-04-15 19:23:44 
Offline
User avatar

Joined: 2009-05-28 09:58:28
Posts: 2802
Location: Иваново
Этот вариант у меня есть, мне интересно именно в массиве можно это использовать?

_________________
Image
YokoInjection CodeSweeper
Ошибка "Unhandled exception in parser"
Стрелялка для олдов.


Top
   
PostPosted: 2011-04-15 19:40:02 
Offline

Joined: 2007-07-07 13:14:01
Posts: 90
@reag = (
['0x0F7A',-1,100,'Black Pearl',137,124],['0x0F7B',-1,100,'Blood Moss',137,124],['0x0F86',-1,100,'Mandrake Root',137,124],['0x0F84',-1,100,'Garlic',137,124],['0x0F85',-1,100,'Ginseng',137,124],['0x0F88',-1,100,'Night Shade',137,124],['0x0F8C',-1,100,'Sulfurous Ash',137,124],['0x0F8D',-1,100,'Spiders Silk',137,124],['0x0E21',-1,150,'Bandage',96,65]
,['0x0F87',-1,0,'Eye of Newt',96,65],['0x0F80',-1,0,'Daemon Bones',96,65],['0x0F7E',-1,0,'Bones',96,65]
);
$array = scalar(@reag);
for ($i;$i < $array;$i++) {
&supply($reag[$i][0],$reag[$i][1],$reag[$i][2],$reag[$i][4],$reag[$i][5],$container);
}


Советую


Top
   
PostPosted: 2011-05-21 09:57:21 
Offline

Joined: 2010-06-19 22:59:51
Posts: 35
че за код ваще такой первый раз вижу =)


Top
   
PostPosted: 2011-05-21 10:19:02 
Offline

Joined: 2007-07-07 13:14:01
Posts: 90
perl


Top
   
PostPosted: 2014-03-22 18:19:43 
Offline
User avatar

Joined: 2012-12-15 12:03:25
Posts: 119
Location: C-Петербург
Да, уже 2014. Просьба не ругаться :lol:

Что-то в таком духе. Только разделители надо поменять.

Code:

[...]
for i = 0 to 2
      UO.MoveItem(item[i], '0', 'backpack', GetWord(XYZ[i],1), GetWord(XYZ[i],2), GetWord(XYZ[i],3)  )
      wait(500)
   next

Sub GetWord( st, nom )
; (c) Edred
; Возвращает слово из строки str за номером num
; если такого слова нет - возвращаем ''
;
; Разделителем слов считаем пробел. Несколько пробелов подряд считаются за один.
; Функция сделана без рекурсии специально для считывания слов из сверхдлинных строк!
;
   VAR tmpst, i, dlin, kol = 0, start = 0
   dlin = len( st )
   For i=0 To dlin - 1
      If mid( st, i, 1 ) == ' ' OR i == dlin - 1 Then
         kol = kol + 1
         If kol == nom Then
            ; это первый пробел после нужного нам слова
            tmpst = mid( st, start, i - start )
            return tmpst
         Else
            While mid( st, i, 1 ) == ' '
               i = i + 1
            Wend
            If kol == nom - 1 Then
               start = i
            Endif
         Endif
      Endif
   Next
   tmpst = ''
   return tmpst
endsub



Top
   
PostPosted: 2014-03-22 20:02:21 
Offline

Joined: 2011-06-11 19:54:23
Posts: 820
Juicy Fruit wrote:
GetWord(Source,WordIndex,[Separator]) - получение слова из строки Source под номером WordIndex разделенного пробелом (или Separator'ом, если он указан)
GetWordCount(Source,[Separator]) - получение общего кол-ва слов, содержащихся в строке Source разделенных пробелом (или Separator'ом, если он указан)
От сюда


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

All times are UTC+02:00


Who is online

Users browsing this forum: No registered users and 13 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:  
cron
Powered by phpBB® Forum Software © phpBB Limited