Kubix! Опубликовано 17 октября, 2012 Жалоба Поделиться Опубликовано 17 октября, 2012 Тут подробнее!Гайд по массивам, циклам.Немного от себя:Вот я решил написать не большой гайд по массивам, циклам. Да и вообще обо всем что знаю.Знаю я не особо много. Но я думаю этого будет достаточно. Сразу прошу вас добавить/подправить/спрашивать о том что я написал/не дописал.Использовать все эти команды я знаю, но может мне не удастся рассказать подробно о них. Или правильнее сказать, я не смогу описать их так как описал бы их другой человек, тот же 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.Команды для работы с массивами:setarraycleararraycopyarraydeletearraygetarraysizegetelementofarrayПодробнее о них можно прочесть (с примерами) в \ea\doc\script_commands.txt 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Jarek Опубликовано 17 октября, 2012 Жалоба Поделиться Опубликовано 17 октября, 2012 [0] - не знаю как подробно объяснить, скорее всего строка с массива(я могу быть не прав, хотя знаю как оно используется, об этом ниже)Ай-яй-яй[x] - индекс, порядковый номер элемента массива.По поводу getarraysize, поправь, индекс указывать не нужно.И да, в цикле имхо лучше использовать .@a вместо .aИ да, 5 утра, я тоже спать.P.S.: Опять всплывает вопрос из другой темы про конкатенацию 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Кеник Опубликовано 18 октября, 2012 Жалоба Поделиться Опубликовано 18 октября, 2012 mes ""+@massive[0]+"";mes @massive[0];. . . 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
nomn Опубликовано 18 октября, 2012 Жалоба Поделиться Опубликовано 18 октября, 2012 Рас такая жара пошла... не помешает след. инфа:Поумолчанию в массив помещается 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.Команды для работы с массивами:setarraycleararraycopyarraydeletearraygetarraysizegetelementofarrayПодробнее о них можно прочесть (с примерами) в \ea\doc\script_commands.txt 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Magnum Опубликовано 18 октября, 2012 Жалоба Поделиться Опубликовано 18 октября, 2012 Зачем гайд когда есть script_commands.txt. Больше инфы чем там всеравно нигде нет. Ссылка на комментарий Поделиться на другие сайты Поделиться
Kubix! Опубликовано 18 октября, 2012 Автор Жалоба Поделиться Опубликовано 18 октября, 2012 Зачем гайд когда есть script_commands.txt. Больше инфы чем там всеравно нигде нет.Там по англ =) Ссылка на комментарий Поделиться на другие сайты Поделиться
Magnum Опубликовано 18 октября, 2012 Жалоба Поделиться Опубликовано 18 октября, 2012 Массивы ------ Массивы (в eAthena по крайней мере), по существу набор переменных происходит под одноименным названием. Вы можете сказать, между конкретными переменными массива с "Индекс массива, число переменных в этот массив: <variable name> [<array index>] Переменные, хранящиеся таким образом, внутри массива, которые также называют элементами массива. Массивы являются особенно полезными для хранения множества аналогичных данных (как и ряд идентификаторов элементов, например), а затем цикл через него. Вы можете обратиться к любому массиву переменных, как если бы это была обычная переменная: Множество @ arrayofnumbers [0], 1; Вы также можете сделать скрытую вещи, как использование переменной (или выражения, или даже значение из другого массива), чтобы получить в массиве значения: установить @ X, 100; Множество @ arrayofnumbers [@ х], 10; Это сделает @ arrayofnumbers [100] равно 10. Обратите внимание, что индекс нумерация всегда начинается с 0. Массивы не могут владеть более чем 128 переменных. (Таким образом, последняя не может иметь несколько выше, чем 127) И индексов массива, вероятно, не может быть отрицательным. Никто не испытаны что происходит, когда Вы пытаетесь получить негативное номером переменной из массива, но он не собирается чтобы быть красивой. Массивы естественно хранить строки: @ Menulines $ [0] 0-й элемент @ menulines $ массив строк. Замечать '$', как правило, обозначает строковую переменную, перед квадратных скобках, обозначается индексом массива. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Кеник Опубликовано 19 октября, 2012 Жалоба Поделиться Опубликовано 19 октября, 2012 Гуглоперевод? Гомно ж =( Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения