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

2 страниц V  1 2 >  
Ответить в эту темуОткрыть новую тему
> Координаты, как элементы массива
pet
сообщение 3.8.2012, 14:11
Сообщение #1


***

Novice
Сообщений: 67
Регистрация: 4.7.2010
Группа: Пользователи
Наличность: 0
Пользователь №: 12.844



Здравствуйте.
Задача очень тривиальная - перетаскивать итемы по одному из кучи в заданные места. Как аккумулятор был выбран массив, по причине возможного исползования значения счетчика (переменной) в качестве индексов элементов.
Проблема в следующем:
Допустим, я храню координаты в двумерном массиве
Код

// From
set %SourceCoords [1] [1] 111
set %SourceCoords [1] [2] 111

// To
set %DestinationCoords [1] [1] 222
set %DestinationCoords [1] [2] 222
set %DestinationCoords [2] [1] 333
set %DestinationCoords [2] [2] 333

И вот на следующим шаге я попал в тупик. Использование массивов в качестве переменных в команде "Drag", не приводит к нужному результату - команда выполняется без ошибок, но ничего не происходит. Я пришел к выводу, что это из-за отсутствия запятых, разделяющих значения координат:
Код

// From
set %SourceCoords [1] [1] 111
set %SourceCoords [1] [2] 111

// To
set %DestinationCoords [1] [1] 222
set %DestinationCoords [1] [2] 222
set %DestinationCoords [2] [1] 333
set %DestinationCoords [2] [2] 333

// Drag 1 item
drag %SourceCoords [1] %DestinationCoords [1] 1

Проблему можно решить использованием строковой переменной, но мне нужен именно массив. Вставка запятых непосредственно в значения елементов массива, ничего не дала.
Конечный код:
Код

// From
set %SourceCoords [1] [1] 111
set %SourceCoords [1] [2] 111
set %SourceCoords [2] [1] 444
set %SourceCoords [2] [2] 444

// To
set %DestinationCoords [1] [1] 222
set %DestinationCoords [1] [2] 222
set %DestinationCoords [2] [1] 333
set %DestinationCoords [2] [2] 333
set %DestinationCoords [3] [1] 555
set %DestinationCoords [3] [2] 555

set #i 2  // Number of %SC elements
set #j 3 // Number of %DC elements
set #k #j // Temp container
set #n #i // Temp container

// Drag 1 item
repeat #i
   repet #j
      drag %SourceCoords [#i] %DestinationCoords [#k] 1
      set #k #k - 1
  end_repeat
  set #n #n - 1
end_repeat

Буду рад решению данной проблемы либо предложенным альтернативам. Главная цель, поочередный перебор координат мест назначения (куда перетаскивать).
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
pet
сообщение 3.8.2012, 14:50
Сообщение #2


***

Novice
Сообщений: 67
Регистрация: 4.7.2010
Группа: Пользователи
Наличность: 0
Пользователь №: 12.844



Все решилось само сабой(IMG:style_emoticons/default/smile.gif) Извеняюсь за флуд
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
WKnight
сообщение 4.8.2012, 3:54
Сообщение #3


********

Разработчик UO Pilot'а
Сообщений: 1.639
Регистрация: 9.1.2006
Группа: Пользователи
Наличность: 0
Пользователь №: 4.688



Цитата
set %DestinationCoords [3] [2] 555

Как минимум лишние внутренние скобки
set %DestinationCoords [3 2] 555
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
pet
сообщение 5.8.2012, 19:36
Сообщение #4


***

Novice
Сообщений: 67
Регистрация: 4.7.2010
Группа: Пользователи
Наличность: 0
Пользователь №: 12.844



Оп, точно. Привычка. Спасибо за поправку. Там еще опечатка есть, в конце с счетчиком.
А как максимум?)
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
WKnight
сообщение 6.8.2012, 4:23
Сообщение #5


********

Разработчик UO Pilot'а
Сообщений: 1.639
Регистрация: 9.1.2006
Группа: Пользователи
Наличность: 0
Пользователь №: 4.688



Используется фича массивов "drag %SourceCoords [#i] DestinationCoords [#k] 1", а переменная delimiter не задана.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
pet
сообщение 6.8.2012, 8:35
Сообщение #6


***

Novice
Сообщений: 67
Регистрация: 4.7.2010
Группа: Пользователи
Наличность: 0
Пользователь №: 12.844



Ого, я даже не знал о ней. Спасибо огромное. Её-то как раз и не хватало.
Я в итоге вернулся к строкам - меньше места занимают:
Код

set %SourceCoords [1] 111, 111
set %DestinationCoords [1] 222, 222

drag %SourceCoords [1] %DestinationCoords [1] 1
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
pet
сообщение 8.8.2012, 21:46
Сообщение #7


***

Novice
Сообщений: 67
Регистрация: 4.7.2010
Группа: Пользователи
Наличность: 0
Пользователь №: 12.844



Возникла идентичная проблема с Findimage.
Массивы не воспринимаются. Возвращается -1:
Код

set %searchRgnS [1 1] 197
set %searchRgnS [1 2] 205
set %searchRgnE [1 1] 402
set %searchRgnE [1 2] 295

set delimiter ', '

set $res findimage (%searchRgnS [1] %searchRgnE [1] (d:\Images\4.bmp) %imgCoordsTemp 2 80 3 3)


Стоит подставить цифры и изобразение ищется без проблем. Скажите в чем причина? Или же просто нельзя использовать в этой функции массивы?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Zeleax
сообщение 8.8.2012, 21:49
Сообщение #8


*********

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



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


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


***

Novice
Сообщений: 67
Регистрация: 4.7.2010
Группа: Пользователи
Наличность: 0
Пользователь №: 12.844



Спаибо за ответ. Выходит, что даже по одному элементу для каждой координаты - тоже нельзя.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Zeleax
сообщение 8.8.2012, 22:05
Сообщение #10


*********

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



Почему нельзя? Думаю, что можно


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


***

Novice
Сообщений: 67
Регистрация: 4.7.2010
Группа: Пользователи
Наличность: 0
Пользователь №: 12.844



Я попробовал, но ничего не вышло.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Zeleax
сообщение 9.8.2012, 6:54
Сообщение #12


*********

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



Покажите код, который не сработал


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


***

Novice
Сообщений: 67
Регистрация: 4.7.2010
Группа: Пользователи
Наличность: 0
Пользователь №: 12.844



Цитата(Zeleax @ 9.8.2012, 7:54) *

Покажите код, который не сработал

Тот, что выше - не работает
Код
set %searchRgnS [1 1] 197
set %searchRgnS [1 2] 205
set %searchRgnE [1 1] 402
set %searchRgnE [1 2] 295

set delimiter ', '

set $res findimage (%searchRgnS [1] %searchRgnE [1] (d:\Images\4.bmp) %imgCoordsTemp 2 80 3 3)

Если вместо массива подставить переменные - все ок, как и с числами напрямую.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Zeleax
сообщение 9.8.2012, 20:01
Сообщение #14


*********

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



А где же это?
Цитата(pet @ 8.8.2012, 21:55) *

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


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


***

Novice
Сообщений: 67
Регистрация: 4.7.2010
Группа: Пользователи
Наличность: 0
Пользователь №: 12.844



Вы уже знаете потенциальную ошибку? Может не будете томить, а проедположите?))
Код

set %searchRgnS [1 1] 197
set %searchRgnS [1 2] 205
set %searchRgnE [1 1] 402
set %searchRgnE [1 2] 295

set delimiter ', '

set $res findimage (%searchRgnS [1 1] %searchRgnS [1 2] %searchRgnE [1 1] %searchRgnE [1 2] (d:\Images\4.bmp) %imgCoordsTemp 2 80 3 3)
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
pet
сообщение 11.8.2012, 17:41
Сообщение #16


***

Novice
Сообщений: 67
Регистрация: 4.7.2010
Группа: Пользователи
Наличность: 0
Пользователь №: 12.844



Вопрос осталься без ответа. Я так понимаю, что невозможно использовать?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 11.8.2012, 18:11
Сообщение #17


***********

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



Я не тестил. Времени нет. Zeleax что там с массивами?


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


*********

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



Цитата(pet @ 11.8.2012, 17:41) *

Вопрос осталься без ответа. Я так понимаю, что невозможно использовать?

Проверил. Действительно, в findimage массивы в качестве координат области поиска вообще не воспринимаются. Переменные использовать можно точно.


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


***********

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



ну выход простой. присваивать переменным элементы массива.


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


***

Novice
Сообщений: 67
Регистрация: 4.7.2010
Группа: Пользователи
Наличность: 0
Пользователь №: 12.844



Спасибо друзья большое. Я сомневался в том, что делаю все правильно. Буду пользовать переменные.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

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

 

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