Page 1 of 1

Помогите доработать

Posted: 2009-03-03 13:06:32
by Antilis Aton
Все привет =) Помогите мне с массивами. Как объявить 3х мерный массив чтобы не пришлось создавать кучу одномерных. Я почти все перепробовал что-то ничего не получилось. И еще..Как сделать так чтобы координаты хранились в отдельном документе и скрипт их от туда грузил. P.S. Массивы я обрубил чтобы не нагромождать тут =)

Code: Select all

Sub test1()
   DIM x[50]
   x[0] = 2505      ; Black Pearl
   x[1] = 2499      ; Bood Moss
   x[2] = 2499      ; Black Pearl
   x[3] = 2499      ; Bood Moss
   x[4] = 2499      ; Black Pearl
   x[5] = 2507     ; Bood Moss
   x[6] = 2507      ; Black Pearl
   x[7] = 2523      ; Bood Moss
   x[8] = 2526      ; Black Pearl
   x[9] = 2538      ; Bood Moss
   x[10] = 2548      ; Black Pearl
   x[11] = 2549      ; Bood Moss
   x[12] = 2550      ; Black Pearl
   x[13] = 2550      ; Bood Moss
   x[14] = 2550      ; Black Pearl
   x[15] = 2507      ; Bood Moss
   x[16] = 2507      ; Black Pearl


   
   DIM y[50]
   y[0] = 622      ; Black Pearl
   y[1] = 620      ; Bood Moss
   y[2] = 620      ; Black Pearl
   y[3] = 609      ; Bood Moss
   y[4] = 609      ; Black Pearl
   y[5] = 613      ; Bood Moss
   y[6] = 613      ; Black Pearl
   y[7] = 613      ; Bood Moss

DIM a[50]
   a[0] = '6012'      ; Black Pearl
   a[1] = '0'     ; Bood Moss
   a[2] = '6012'      ; Black Pearl
   a[3] = '6008'     ; Bood Moss
   a[4] = '6003'      ; Black Pearl
   a[5] = '6011'     ; Bood Moss
   a[6] = 6004      ; Black Pearl
   a[7] = 6004     ; Bood Moss
   a[8] = 6012      ; Black Pearl
   a[9] = 6008     ; Bood Moss
   a[10] = 6012      ; Black Pearl
   a[11] = 0     ; Bood Moss
   a[12] = 6008      ; Black Pearl
   a[13] = 6011     ; Bood Moss
   a[14] = 0      ; Black Pearl
   a[15] = 6008     ; Bood Moss
   


   
   
   DIM b[50]
   b[0] = '2505'      ; Black Pearl
   b[1] = '2500'      ; Bood Moss
   b[2] = '2497'      ; Black Pearl
   b[3] = '2498'      ; Bood Moss
   b[4] = '2500'      ; Black Pearl
   b[5] = '2507'      ; Bood Moss
   b[6] = 2509      ; Black Pearl
   b[7] = 2522      ; Bood Moss
   b[8] = 2527      ; Black Pearl
   b[9] = 2539      ; Bood Moss
   b[10] = 2545      ; Black Pearl
   b[11] = 2551      ; Bood Moss
   b[12] = 2549      ; Black Pearl
   b[13] = 2550      ; Bood Moss
   b[14] = 2548      ; Black Pearl
   b[15] = 2506      ; Bood Moss
   b[16] = 2507      ; Black Pearl
   b[17] = 2505      ; Bood Moss


   
   DIM c[50]
   c[0] = '623'      ; Black Pearl
   c[1] = '622'     ; Bood Moss
   c[2] = '617'      ; Black Pearl
   c[3] = '607'     ; Bood Moss
   c[4] = '609'      ; Black Pearl
   c[5] = '611'     ; Bood Moss
   c[6] = 614      ; Black Pearl
   c[7] = 614     ; Bood Moss
   c[8] = 615      ; Black Pearl
   c[9] = 607     ; Bood Moss
   c[10] = 606      ; Black Pearl
   c[11] = 599     ; Bood Moss
   c[12] = 592      ; Black Pearl
   c[13] = 586     ; Bood Moss
   c[14] = 573      ; Black Pearl


   
   DIM d[50]
   d[0] = '0'      ; Black Pearl
   d[1] = '1'     ; Bood Moss
   d[2] = '0'      ; Black Pearl
   d[3] = '0'      ; Bood Moss
   d[4] = '0'      ; Black Pearl
   d[5] = '0'      ; Bood Moss
   d[6] = 0      ; Black Pearl
   d[7] = 0      ; Bood Moss
   d[8] = 0      ; Black Pearl
   d[9] = 0      ; Bood Moss


   
    var k=0
    var t=0
    var kirka='0x0E85'
    var ms1="Попробуйте"
    var ms2="You put"
    var ms3="Раздолбив"
    var ms4="не осталось"
    var ms5="далеко"
    var msat="is attacking you"
    VAR Home='0x401B1A8E' ## - Для рекола (изменять не нужно)
    VAR Minoc='0x400DFA37'
   
   repeat
   k = 0
   repeat
   Walker(x[k], y[k], 0)
   wait(300)
   repeat
   uo.deletejournal()
   CheckLag()
   uo.waittargettile(a[k], b[k], c[k], d[k])
   UO.UseType(kirka)
   repeat
   CheckLag()
   wait(500)
   if uo.injournal(msat) then
   uo.say('Guard')
   wait(100)
   uo.say('Guard')
   wait(120)
   uo.say('Guard')
   end if
   t = t + 1
   until uo.injournal(ms1) or uo.injournal(ms2) or uo.injournal(ms3) or uo.injournal(ms4) or uo.injournal(ms5) or t > 150
   until uo.injournal(ms1) or uo.injournal(ms4) or uo.injournal(ms5) or t > 150
   k = k + 1
   t = 0
   wait(1000)
   until k > 49 or UO.Weight > 720
   ToRecall()
   until UO.Dead()
   end sub
[/code]

Posted: 2009-03-03 14:58:45
by Millerbeer
В инже не создашь, помоему, многомерный массив. Можно извратиться, наверное, забить в массив названия массивов, но я так не извращался и не уверен, что это сработает. А по поводу сохранения координат в файл и их загрузки из файла, найди , например, ветерановский скрипт на лумбер, там это дело используется и понятно и красиво нарисованоhttp://forum.yoko.com.ua/viewtopic.php?t=14015&highlight=%EB%F3%EC%E1%E5%F0 тут он есть.

Немного теории по этому делу...

Класс FILE:
пример:
sub main()
var f=file("c:\имя файла")
var s=0
f.open()
while not f.eof() and not fatal error
s=safe call f.readnumber()
if not fatal error then
dbgmsg(s)
endif
wend
f.close()
endsub

Методы класса:
File(имя файла) - конструктор
Open() - открыть на чтение/запись. Возвращает true==открылся удачно
Create() - затереть файл. Возврат так же
Eof() - true == конец
ReadLn() - возвращает строку из файла. Строку полностью!!!
ReadString() - возвр. слово из файла до пробела/TAB
ReadNumber() - число
Write(строка/число) - запись строки/числа в файл.
WriteLn(строка/число) - запись строки/числа в файл+перевод строки.
WriteLn() - просто запись перевода строки
Close() - закрыть файл и освободить память из-под класса. После вызова Close() с файлом больше работать нельзя (даже вызвав Open).