|
|
|
Упростить скрипт |
|
|
veiron |
2.1.2013, 21:18
|
Master
Сообщений: 1.264
Регистрация: 22.5.2012 Группа: Пользователи Наличность: 0 Из: Белоруссии
Пользователь №: 14.972
|
Цитата(DarkMaster @ 2.1.2013, 21:37) Это не о том. Это просто набор переменных. То что ты писал тебе ручками делать надо.
Так я понимаю, что ручками. Так же понимаю, что надо найти и переместить к ним еще одну. я понять не могу как это начать. Допустим 2 вместе я Findimage найду, но как дать понять пилоту, что еще одну надо подставить, которая может быть с любой стороны от этих двух. Пробовал еще Findimage но с одной, так он одну находит и куда я задал, допустим в прово двинуть, он ее и двигает. А с другой стороны стоят нужных 2 и он не понимает, что ему туда надо переместить. Если пробовать перечислить все возможные комбинации перемещения, тогда неуложишься в 30 секунд боя. Потому и прошу подсказать с помощью каких команд, пилот можно заставить это исполнить.
|
|
|
|
DarkMaster |
10.1.2013, 6:55
|
Модератор UOPilot
Сообщений: 9.468
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 27737
Пользователь №: 11.279
|
Для меня есть некий смысл, т.к. есть некоторые функции, которые неплохо бы иметь унифицированными в каждом скрипте. Например: сложение времени, формирование времени в чч:мм:сс, преобразование массивов(выкидывание пустых, устаревших значений, копирование(в более ранних версиях), контроль статусов скриптов и т.д. Так же есть одна очень приятная деталь: область видимости переменных. При присвоении переменных внутри proc мы не рискуем затереть уже существующую в основном скрипте(когда он большой и с кучей схожих вычислений, то это становится очень актуально). С proc были проблемы со стабильностью. Вроде исправлены, но я по многолетней привычке сижу только на gosub.
--------------------
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____
|
|
|
|
xolost |
10.1.2013, 9:14
|
Expert
Сообщений: 517
Регистрация: 17.6.2012 Группа: Пользователи Наличность: 0
Пользователь №: 15.035
|
В теории звучит красиво, но на практике я всё ещё не представляю как это выглядит. Будьте добры, примерчиков дайте пожалуйста на пункты ниже, спасибо. 1. Цитата Очень похоже на gosub, но можно легко передавать вовнутрь параметры и получать назад результат (если в качестве параметра передавать массив). Примерчик плиз. Я лично не понял как вернуть результат. Парочка из моих попыток: Код set #s 5 set %q[1] #s call test1 #s %q[1] proc test1 #s1 for #i 1 500 set #s1 #s1 + 15 set %q1[1] #s1 end_for end_proc msg #s #s1 %q[1] %q1[1] // получается 5 #s1 5 end_script Код set #s 5 set %q[1] #s call test1 #s %q[1] proc test1 #s1 %q1[1] // здесь падает на попытке вернуть массив for #i 1 500 set #s1 #s1 + 15 set %q1[1] #s1 end_for end_proc msg #s #s1 %q[1] %q1[1] // получается 5 #s1 5 end_script Цитата Можно сказать, что это позволяет создавать свои собственные "команды" (процедуры), выполняющие сразу несколько действий/вычислений и состоящие из целого набора других команд пилота. Если эту фразу я понял верно, то абсолютно тоже самое делает gosub. 2. Цитата Для меня есть некий смысл, т.к. есть некоторые функции, которые неплохо бы иметь унифицированными в каждом скрипте. Например: сложение времени, формирование времени в чч:мм:сс, преобразование массивов(выкидывание пустых, устаревших значений.
Какой-нить примерчик на любой предложенный вами вариант, пожалуйста. Цитата Так же есть одна очень приятная деталь: область видимости переменных. При присвоении переменных внутри proc мы не рискуем затереть уже существующую в основном скрипте(когда он большой и с кучей схожих вычислений, то это становится очень актуально). Проверил, это действительно так и это выглядит крутастенько, но пока не вижу способа применения выгоднее, чем gosub. Будьте добры, примерчик.
|
|
|
|
xolost |
10.1.2013, 19:51
|
Expert
Сообщений: 517
Регистрация: 17.6.2012 Группа: Пользователи Наличность: 0
Пользователь №: 15.035
|
Цитата(Zeleax @ 10.1.2013, 20:32) Код set %a[1] 5 set %a[2] 4 set %a[3] обязательно резервируем для результата
call умножить %a
msg Если %a[1] помножить на %a[2], то получится %a[3] end_script
proc умножить %b set %b[3] %b[1] * %b[2] end_proc Ага, понял. Спасибо. Я нумерацию зря указывал. Так, с примером этим разобрались. Но что-то все равно фактической полезности всё ещё не вижу(( Зато поэкспериментировав, словил красивую ошибку: (IMG: http://www.pictureshack.ru/images/9375_super.GIF)
|
|
|
|
xolost |
10.1.2013, 20:13
|
Expert
Сообщений: 517
Регистрация: 17.6.2012 Группа: Пользователи Наличность: 0
Пользователь №: 15.035
|
Цитата(Zeleax @ 10.1.2013, 21:00) А если в процедуру передавать 10 параметров? Так сделаете 1 строкой, а через gosub придется выделять 10 переменных, чтоб передать данные внутрь процедуры
Хм... Ок. Вот ваша процедура: Код set %a[1] 5 set %a[2] 4 set %a[3] обязательно резервируем для результата
call умножить %a
msg Если %a[1] помножить на %a[2], то получится %a[3] end_script
proc умножить %b set %b[3] %b[1] * %b[2] end_proc А вот через госап: Код set %a[1] 4 set %a[2] 5 gosub formula set %a[3] #s msg Если %a[1] помножить на %a[2], то получится %a[3] end_script
:formula set #s %a[1] * %a[2] return Те же самые 7 строчек(без мсг и енд скрипта) Теперь как понять передать 10 переменных? Вернее для чего? Пожалуйста, для процедуры примерчик напишите с несколькими переменными, так же как написали выше отличный пример. Спасибо.
|
|
|
|
|
|
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|