Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> запутался в массивах
frakc
сообщение 23.2.2013, 6:19
Сообщение #1


**

Neophyte
Сообщений: 18
Регистрация: 9.2.2013
Группа: Пользователи
Наличность: 0
Пользователь №: 15.775
Возраст: 22



имеется масив

831 695 764 646
883 527
887 594 881 357

я объявил его

init_arr %t 831 695 764 646
init_Arr %t (2) 883 527
init_arr %t (3) 887 594 881 357

log [1 4] = 646
log [2 1] = 883
log [3] = 887594881357

как вывести строку массива как одномерный масив, помимо создания нового массива и вписывания в него параметров одного за другим в for цикле
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 23.2.2013, 6:37
Сообщение #2


***********

Модератор UOPilot
Сообщений: 9.467
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27725
Пользователь №: 11.279



Если я вас правильно понял, то вы все верно написали, только название массива забыли:
Цитата
log [1 4] = 646
log [2 1] = 883
log [3] = 887594881357

Перед размерностью массива %t вставьте.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Zeleax
сообщение 23.2.2013, 10:11
Сообщение #3


*********

ex-Moderator UOPilot
Сообщений: 2.440
Регистрация: 8.10.2010
Группа: Пользователи
Наличность: 0
Из: Киев
Пользователь №: 13.093



Код
set delimiter ' '
init_arr %t (3) 887 594 881 357
log %t[3]


Сообщение отредактировал Zeleax - 23.2.2013, 10:12


--------------------
Полезные советы - читать всем! UOWiki
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
frakc
сообщение 24.2.2013, 15:43
Сообщение #4


**

Neophyte
Сообщений: 18
Регистрация: 9.2.2013
Группа: Пользователи
Наличность: 0
Пользователь №: 15.775
Возраст: 22



такой кусок ничего не делает, %nya пустой(IMG:style_emoticons/default/sad.gif)
Код
log test
set delimiter ' '
init_arr %t 100 101 103
init_arr %t (2) 200 201
init_arr %t (3) 300 301 302 303
log %t [3]
set #line 3
call test %t [#line]
end_script


proc test %nya
log i was there
end_proc


второй вариант вылетает с зависанием

Код

log test
set delimiter ' '
init_arr %t 100 101 103
init_arr %t (2) 200 201
init_arr %t (3) 300 301 302 303
log %t [3]
set #line 3
call test %t #line
end_script


proc test %nya #p
log %nya [#p]
log i was there
end_proc
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 24.2.2013, 15:58
Сообщение #5


***********

Модератор UOPilot
Сообщений: 9.467
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27725
Пользователь №: 11.279



Я вообще не очень понимаю, что вы пытаетесь тут сделать. Я показал как можно без создания нового массива получить тот же самый результат. Если нужен именно новый массив, а не сами данные в виде одного элемента, то все, что могу предложить, перебор через фор строк с использованием вытаскивания данных, как я писал выше.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
frakc
сообщение 24.2.2013, 16:23
Сообщение #6


**

Neophyte
Сообщений: 18
Регистрация: 9.2.2013
Группа: Пользователи
Наличность: 0
Пользователь №: 15.775
Возраст: 22



я хочу передать данные из масива подфункции ( целую строку или ряд)
но во втором варианте где я передаю подфункции целый маси и переменую, пилот тупо виснет и зависает
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Zeleax
сообщение 24.2.2013, 16:35
Сообщение #7


*********

ex-Moderator UOPilot
Сообщений: 2.440
Регистрация: 8.10.2010
Группа: Пользователи
Наличность: 0
Из: Киев
Пользователь №: 13.093



работает:
Код
log test
set delimiter ' '
init_arr %t 100 101 103
init_arr %t (2) 200 201
init_arr %t (3) 300 301 302 303
log %t [3]
set #line 3
call test %t
end_script

proc test %n
log i was there
set delimiter ' '
log N: %n[3]
end_proc


С переменной - действительно виснет

Пока что из процедуры можно обращаться к переменным из основного скрипта, добавляя номер текущей вкладки с точкой:
set #b #a.4


--------------------
Полезные советы - читать всем! UOWiki
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
frakc
сообщение 25.2.2013, 0:19
Сообщение #8


**

Neophyte
Сообщений: 18
Регистрация: 9.2.2013
Группа: Пользователи
Наличность: 0
Пользователь №: 15.775
Возраст: 22



спасибо(IMG:style_emoticons/default/smile.gif)
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
veiron
сообщение 26.2.2013, 1:26
Сообщение #9


********

Master
Сообщений: 1.264
Регистрация: 22.5.2012
Группа: Пользователи
Наличность: 0
Из: Белоруссии
Пользователь №: 14.972



Подскажите. Есть 3 массива %a %b %c, в каждом массиве по 1 точке с разным цветом. Как записать 3 массива в один. Попробовал:
Код
  set %v %a + %b + %с
  set %v %a[1 1] + %b[1 1] + %с[1 1]
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
veiron
сообщение 26.2.2013, 2:06
Сообщение #10


********

Master
Сообщений: 1.264
Регистрация: 22.5.2012
Группа: Пользователи
Наличность: 0
Из: Белоруссии
Пользователь №: 14.972



Все разобрался как записать.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
esqado
сообщение 26.2.2013, 6:18
Сообщение #11


*****

Journeyman
Сообщений: 357
Регистрация: 5.11.2011
Группа: Пользователи
Наличность: 0
Пользователь №: 14.217



А тут написать, чтобы другим легче было?


--------------------
В обычном программировании: любое значение может быть преобразовано в тип string
В программировании Pilot: любое значение должно быть типа имейдж.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
veiron
сообщение 26.2.2013, 8:32
Сообщение #12


********

Master
Сообщений: 1.264
Регистрация: 22.5.2012
Группа: Пользователи
Наличность: 0
Из: Белоруссии
Пользователь №: 14.972



Все теперь точно разобрался. Целый день отдал, что бы освоить эту не сложную задачу)))
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
veiron
сообщение 6.3.2013, 13:11
Сообщение #13


********

Master
Сообщений: 1.264
Регистрация: 22.5.2012
Группа: Пользователи
Наличность: 0
Из: Белоруссии
Пользователь №: 14.972



Код
init_arr %a(1 2) %b[1 1] %b[1 2], %c[1 1] %c[1 2], %v[1 1] %v[1 2]  
log %b[1 1] %b[1 2], %c[1 1] %c[1 2], %v[1 1] %v[1 2]  //  смотрим, что в массиве, в лог ни чего не записано значит 0
                        set #f size(%a)
                        log #f   // здесь уже пишет 1

Подскажите, что не так в скрипте. В массив b,c,v ни чего не записано. Значит в init_arr должен быть 0, а у меня почему то в #f записывается 1. Если записать 3 массива в #f будет 3, если записать один массив в #f будет 1. Почему у меня в #f ни когда нет 0.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
veiron
сообщение 6.3.2013, 21:04
Сообщение #14


********

Master
Сообщений: 1.264
Регистрация: 22.5.2012
Группа: Пользователи
Наличность: 0
Из: Белоруссии
Пользователь №: 14.972



Мне, что, так ни кто и не ответит(((
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Zeleax
сообщение 6.3.2013, 21:21
Сообщение #15


*********

ex-Moderator UOPilot
Сообщений: 2.440
Регистрация: 8.10.2010
Группа: Пользователи
Наличность: 0
Из: Киев
Пользователь №: 13.093



Наверное, такая специфика команды init_arr.
Проверяйте: если size( %a[1] ) меньше двух, то ничего не присвоено.

Это как вариант.


--------------------
Полезные советы - читать всем! UOWiki
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
veiron
сообщение 6.3.2013, 21:35
Сообщение #16


********

Master
Сообщений: 1.264
Регистрация: 22.5.2012
Группа: Пользователи
Наличность: 0
Из: Белоруссии
Пользователь №: 14.972



Цитата(Zeleax @ 6.3.2013, 21:21) *

Наверное, такая специфика команды init_arr.
Проверяйте: если size( %a[1] ) меньше двух, то ничего не присвоено.

Это как вариант.

А как тогда быть, если в один массив записались данные, он тогда будет равен 1. Вообще то size( %a[1] ) равно единицы если в нем ни чего нет или произведена запись только в один массив. Как то не правильно. Я в истории развития прочитал, что если в init_arr ни чего нет, тогда он равен 1. Просто используешь point_distance если в init_arr ни чего нет, тогда сразу выскакивает ошибка скрипта. Вообще point_distance полезная штука, только много ошибок выдает.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
veiron
сообщение 7.3.2013, 16:18
Сообщение #17


********

Master
Сообщений: 1.264
Регистрация: 22.5.2012
Группа: Пользователи
Наличность: 0
Из: Белоруссии
Пользователь №: 14.972



УФФ, за два дня собственными силами все таки решил как заменить 1 нулем. Хотелось бы конечно, что бы когда в массиве ни чего не записалось, все таки было не 1, а 0.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 27.4.2024, 10:23
Designed by Nickostyle