Перейти к содержанию

Гайдик по массивам


Рекомендуемые сообщения

Тут подробнее!

Гайд по массивам, циклам.

Немного от себя:

Вот я решил написать не большой гайд по массивам, циклам. Да и вообще обо всем что знаю.

Знаю я не особо много. Но я думаю этого будет достаточно. Сразу прошу вас добавить/подправить/спрашивать о том что я написал/не дописал.

Использовать все эти команды я знаю, но может мне не удастся рассказать подробно о них. Или правильнее сказать, я не смогу описать их так как описал бы их другой человек, тот же Lilith, nomn и другие. А еще правильнее, скорее всего у меня не хватит умных слов что бы достаточно описать их. Так что, спрашивайте если что не поняли.

Пожалуй, начну с простого. Массивы (array)

Массивы, в скриптах ро используются как setarray

Их есть несколько видов, точнее через какие переменные вы будете их использовать.

Например сделаем простейший массив:


setarray @massive[0],1,2,3;

@massive - и есть наша переменная, которую вы используете в массиве.

[x] - индекс, порядковый номер элемента массива.

1,2,3 - простые числа.

Итак, мы занесли в массив @massive 3 простых числа (1,2,3)

Для чего мы это сделали? Я сам не знаю, если честно=)

Мы можем вывести их в нпце.Например :


setarray @massive[0],1,2,3;
mes @massive[0];
mes @massive[1];
mes @massive[2];

Т.е. нпц покажет нам 3 наших числа. Думаю будет ясно. Если нет - спрашивайте.

Давайте наведем более сложный пример с использованием цикла.

Заносим в тот же массив те же числа:


setarray @massive[0],1,2,3;

И теперь, с помощью цикла выведем их более простым способом :


for(set .a,0; .a <=getarraysize(@massive); set .a,.a + 1){
mes ""+@massive[.a]+"";
}

for - и есть наш цикл.

getarraysize - еще одна скриптовая команда которая относится к массивам. она покажет кол-во чисел, строчек или как это еще назвать которые есть в массиве.

что бы вам было понятно, создайте простой скрипт:


prontera,150,150,6[TAB]script[TAB]Test[TAB]100,{
setarray @massive[0],1,2,3;
mes ""+getarraysize(@massive)+"";
close;
}

И проверьте как это работает.

Т.е. теперь наш код с циклом покажет нам числа в порядке от 1 до 3 (как и прописано в массиве @massive)

теперь это действие займет только одну строчку.

Поумолчанию в массив помещается 128 значений (как строковых, так и числовых).

В eAtnena нельзя делать многоуровневые массивы, нельзя делать ассоциативные массивы,

только самые простые элементарные массивы, массивы, массивы))

Вот таблица, в которой показано какие переменные можно использовать в качестве массива:


+==========+======+=======+
|VarType   | Norm | Array |
+==========+======+=======+
|$Str$     | OK!  | OK!   |
+----------+------+-------+
|$@Str$    | OK!  | OK!   |
+----------+------+-------+
|@Str$     | OK!  | OK!   |
+----------+------+-------+
|#Str$     | OK!  | FAIL! | // Ахтунг!
+----------+------+-------+
|Str$      | OK!  | FAIL! | // Ахтунг!
+----------+------+-------+
|$Int      | OK!  | OK!   |
+----------+------+-------+
|$@Int     | OK!  | OK!   |
+----------+------+-------+
|@Int      | OK!  | OK!   |
+----------+------+-------+
|#Int      | OK!  | FAIL! | // Ахтунг!
+----------+------+-------+
|Int       | OK!  | FAIL! | // Ахтунг!
+----------+------+-------+
|.Str$     | OK!  | OK!   |
+----------+------+-------+
|.Int      | OK!  | OK!   |
+----------+------+-------+
|.@Str$    | OK!  | OK!   |
+----------+------+-------+
|.@Int     | OK!  | OK!   |
+----------+------+-------+

Удалять массив можно командой *deletearray.

Команды для работы с массивами:

setarray

cleararray

copyarray

deletearray

getarraysize

getelementofarray

Подробнее о них можно прочесть (с примерами) в \ea\doc\script_commands.txt

  • Upvote 1
Ссылка на комментарий
Поделиться на другие сайты

[0] - не знаю как подробно объяснить, скорее всего строка с массива(я могу быть не прав, хотя знаю как оно используется, об этом ниже)

Ай-яй-яй

[x] - индекс, порядковый номер элемента массива.

По поводу getarraysize, поправь, индекс указывать не нужно.

И да, в цикле имхо лучше использовать .@a вместо .a

И да, 5 утра, я тоже спать.

P.S.: Опять всплывает вопрос из другой темы про конкатенацию

  • Upvote 1
Ссылка на комментарий
Поделиться на другие сайты

Рас такая жара пошла... не помешает след. инфа:

Поумолчанию в массив помещается 128 значений (как строковых, так и числовых).

В eAtnena нельзя делать многоуровневые массивы, нельзя делать ассоциативные массивы,

только самые простые элементарные массивы, массивы, массивы))

Вот таблица, в которой показано какие переменные можно использовать в качестве массива:


+==========+======+=======+
|VarType | Norm | Array |
+==========+======+=======+
|$Str$ | OK! | OK! |
+----------+------+-------+
|$@Str$ | OK! | OK! |
+----------+------+-------+
|@Str$ | OK! | OK! |
+----------+------+-------+
|#Str$ | OK! | FAIL! | // Ахтунг!
+----------+------+-------+
|Str$ | OK! | FAIL! | // Ахтунг!
+----------+------+-------+
|$Int | OK! | OK! |
+----------+------+-------+
|$@Int | OK! | OK! |
+----------+------+-------+
|@Int | OK! | OK! |
+----------+------+-------+
|#Int | OK! | FAIL! | // Ахтунг!
+----------+------+-------+
|Int | OK! | FAIL! | // Ахтунг!
+----------+------+-------+
|.Str$ | OK! | OK! |
+----------+------+-------+
|.Int | OK! | OK! |
+----------+------+-------+
|.@Str$ | OK! | OK! |
+----------+------+-------+
|.@Int | OK! | OK! |
+----------+------+-------+

Удалять массив можно командой *deletearray.

Команды для работы с массивами:

setarray

cleararray

copyarray

deletearray

getarraysize

getelementofarray

Подробнее о них можно прочесть (с примерами) в \ea\doc\script_commands.txt

  • Upvote 1
Ссылка на комментарий
Поделиться на другие сайты

Массивы

------

Массивы (в eAthena по крайней мере), по существу набор переменных происходит под

одноименным названием. Вы можете сказать, между конкретными переменными массива с

"Индекс массива, число переменных в этот массив:

<variable name> [<array index>]

Переменные, хранящиеся таким образом, внутри массива, которые также называют элементами массива.

Массивы являются особенно полезными для хранения множества аналогичных данных (как и ряд

идентификаторов элементов, например), а затем цикл через него. Вы можете обратиться к любому массиву

переменных, как если бы это была обычная переменная:

Множество @ arrayofnumbers [0], 1;

Вы также можете сделать скрытую вещи, как использование переменной (или выражения, или даже

значение из другого массива), чтобы получить в массиве значения:

установить @ X, 100;

Множество @ arrayofnumbers [@ х], 10;

Это сделает @ arrayofnumbers [100] равно 10.

Обратите внимание, что индекс нумерация всегда начинается с 0. Массивы не могут владеть более чем

128 переменных. (Таким образом, последняя не может иметь несколько выше, чем 127)

И индексов массива, вероятно, не может быть отрицательным. Никто не испытаны что происходит, когда

Вы пытаетесь получить негативное номером переменной из массива, но он не собирается

чтобы быть красивой. :)

Массивы естественно хранить строки:

@ Menulines $ [0] 0-й элемент @ menulines $ массив строк. Замечать

'$', как правило, обозначает строковую переменную, перед квадратных скобках,

обозначается индексом массива.

  • Upvote 1
Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...
Яндекс.Метрика