Quote:
не знал что имеет значение с какой буквы пишется "Backpack". =)
И не надо. На разных шардах встречается по разному, а поиск - так или иначе - регистрозависимый.
Отсюда следует два варианта кроссшардного решения проблемы:
Вариант первый - очевидный: deljournal( "Backpack|backpack" )
Вариант второй - тоже очевидный, но более.. мм.. краткий: deljournal( "ackpack" )
Quote:
1. "var menu_size = 1 ; количество элементов в выборке меню" Элементы это те итемы в меню ктороые можно сделать? А как тогда выглядят элементы подменю. Т.е. есть крафты в меню которых сначала выберается раздел, а уже потом итем.
Не-не-не.. Смотри, у нас waitmenu как работает?:
waitmenu( prompt, choice, ... итд ... )
Для полного понимания - зайди на
http://yoko.com.ua/help в раздел "Символы" и ознакомься, что это конкретно есть.
Теперь касательно того, как работает шаманская функция. Однажды я подумал, а почему бы данные для этого waitmenu не выносить в отдельную переменную? - В переменную оказалось не удобно - длинная строка получается, а вот в массивы - самое оно.
Так вот, возвращаясь к теме вопроса. Переменная означает лишь то, сколько мы хотим объявить пар promt & choice (если вы прочитали про них внимательно, то почему именно пар - вопроса быть не должно).
Собственно говоря, зачем она нужна? - Посмотрите скрипт, используется в трёх местах:
1. Для объявления массива promt (указывает количество элементов конструктору массива).
2. Аналогично в массиве choice.
3. Для перебора всех элементов массивов promt и choice (который передаются в функцию, кстати да - массивы можно передавать аргументом в функцию, хитрая фишка).
По второму вопросу я кажется уже ответил в первом пункте -)
Quote:
3. uo.moveitem( "^" + T_arrow, "0", I_receiver ) -- Понятно впринципе почти всё кроме параметров "^" и "0". Что они означают? И почему перед "T_arrow" стоит "+" ?
Давайте разберёмся по-порядку.
Первое - нулик. В первую очередь - открываем хелп по команде:
http://yoko.com.ua/help/help.php?lang=r ... m=moveitemСмотрим, нулик идёт вторым аргументом - второй аргумент - quantity - количество, про что в хелпе более чем ясно написано:
Количество quantity если 0 или не указано означает всю стопку.Вы просто поленились зайти в хелп да прочитать, непорядок.
Далее, что означает плюсик? - Плюсик это оператор конкатенации, если справа и слева строка или оператор сложения, если справа и слева число. Если тип данных справа отличается от типа данных слева, то вы плохой программист -)
Конкатенация, если вкратце, это процесс склеивания строк. Т.е. "a" + "b" = "ab" и ничего более.
Собственно говоря имеем строку - "^" и к ней прибавляется переменная, T_arrow, значение которой - строка "0x0F3F", итого получается, что первый аргумент функции moveitem передаётся - "^0x0F3F".
Опять идём в хелп по команде moveitem - первый аргумент подсвечен, нажимаем на него и попадаем в описание символа "object". Пролистав вниз, вы найдёте информацию о том, что такая строка означает.
Quote:
4. Sub my.waitmenu( promts, choice, len )
Почему минус один? - В скрипте как раз таки единица. Мы заранее знаем, что количество элементов в получаемых массивах promts и choice - одинаково. Третий же аргумент функции, len - говорит сколько в них элементов, т.к. другого нормального способа получить эту информацию - просто нет. Ну и соответственно исходя из третьего аргумента уже и работает цикл.
Quote:
menu = menu + " '" + promts[ i ] + "' '" + choice[ i ] + "'" -- эта строчка вообще для меня "тёмный лес". -)
Я уже писал про конкатенацию. promts[ i ] - обращение к конкретному элементу массива, в котором опять-таки лежит строка.
Проще говоря - эта функция строит команду waitmenu с нужными аргументами и исполняет через uo.exec.
Quote:
6. Sub checklag() -- Что делает этот саб? Кликает на бэкпаке, ждёт отклика от сервера и появление в журнале строчки "a Backpack"? А если нет отклика от сервера (лаг), то что? Скрипт как бы стоит на паузе и ждёт пока будет отклик от сервера в виде надписи в журнале "a Backpack" и только после этого продолжает работать?
Это динамическая пауза. Суть этого шаманства в том, что сервер присылает данные строго по-порядку, т.е. если в журнале появилась надпись (а мы её ещё не получили от сервера), потом мы сделали клик по бекпаку - то сначала нам придёт надпись в журнал, а потом надпись о клаце по бекпаку. Проще говоря - так мы как раз таки ждём, пока всё отлагает. Есть минус - если есть потери пакетов до сервера, то нужно как-то ограничить эту функцию, но это требуется очень редко и вообще - играть с потерями пакетов - плохая идея.
Кажется ответил на все вопросы, который ты растянул на столь длинный пост -)
PS: Задание на дом - разобраться в чём отличие писать "sub" или "Sub", проще говоря - в чём фишка
PPS: Касательно того, что я поназывал переменные I_, T_, C_ - я просто подумал, что так новичку будет сложнее запутаться и читабельность как-то выше - сразу видно где возможна ошибка.