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

 
Ответить в эту темуОткрыть новую тему
> Подскажите, как реализовать на языке Lua, Просмотреть 3 ряда по 10 ячеек
фонарик
сообщение 3.5.2019, 19:47
Сообщение #1


****

Apprentice
Сообщений: 145
Регистрация: 23.11.2011
Группа: Пользователи
Наличность: 0
Пользователь №: 14.305



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

Что должен делать скрипт Lua на человеческом языке: он смотрит последовательно ячейки 3 ряда по 10 штук. Если в ячейке скрипт нашел что-то знакомое - продает купцу. Что-то знакомое - это массив со значениями цвета пикселей.

Какую структуру должен иметь такой скрипт? Пожалуйста, объясните хотя бы просто словами. Но лучше было бы конечно в виде маленького примера.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 3.5.2019, 21:57
Сообщение #2


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26691
Пользователь №: 16.971
Возраст: 29



Цитата
Если в ячейке скрипт нашел что-то знакомое - продает купцу.

Каким образом будет определяться нужный предмет?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
фонарик
сообщение 4.5.2019, 16:33
Сообщение #3


****

Apprentice
Сообщений: 145
Регистрация: 23.11.2011
Группа: Пользователи
Наличность: 0
Пользователь №: 14.305



Цитата(cirus @ 3.5.2019, 21:57) *
Каким образом будет определяться нужный предмет?
У меня на обычном пилотском скрипте было примерно так:
Код
gosub get_data // зададим массив с пикселями иконки

set #mouxe_x 600 //координаты первой ячейки
set #mouxe_y 300

for #row 1 3 1 // 3 ряда
  for #cell 1 9 1 // 9 ячеек
    get color #color #mouxe_x #mouxe_y //смотрим пиксель в текущей ячейке
    set #search indexOf (%DATA noabs (#color)) // ищем в массиве %DATA цвет
      if_not #search = -1 //если #color нашли в массиве %DATA, значит продать
        // тут идет продажа купцу
      end_if
    set #mouxe_x #mouxe_x + 36 // смещение для сл. ячейки
  end_for
  set #mouxe_x 600 // вернем х на 1ю ячейку
  set #mouxe_y #mouxe_y + 38 // сл. ряд
end_for
end_script

:get_data
set %DATA [1] 424240
set %DATA [2] 11491607
set %DATA [3] 5453056
set %DATA [4] 16777215
set %DATA [5] 4189686
set %DATA [6] 11074216
set %DATA [7] 3120216
set %DATA [8] 11728895
set %DATA [9] 16507833
return
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 4.5.2019, 17:04
Сообщение #4


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26691
Пользователь №: 16.971
Возраст: 29



Цитата
У меня на обычном пилотском скрипте было примерно так:

Тоже самое на луа:
Код
--lua
local DATA = {424240, 11491607, 5453056, 16777215, 4189686, 11074216, 3120216, 11728895, 16507833}
local mouxe_x, mouxe_y = 600, 300   -- координаты первой ячейки

function indexOf_lua(col, arr)    -- поиск в массиве
    for i = 1, #arr do    -- для всех элементов массива
        if arr[i] == col then return 1 end    -- если найдено возвращаем 1
    end
    return -1   -- иначе -1
end

for row = 1, 3 do
    for _cell = 1, 9 do
        local _color = color(mouxe_x, mouxe_y) -- смотрим пиксель в текущей ячейке
        local search = indexOf_lua (_color, DATA)  -- в функцию передаём цвет и массив
        if search == -1 then
            -- тут идет продажа купцу
        end
        mouxe_x = mouxe_x + 36 -- смещение для сл. ячейки
    end
    mouxe_x = 600 -- вернем х на 1ю ячейку
    mouxe_y = mouxe_y + 38 -- сл. ряд
end

Лучше не использовать имена переменных совпадающие с именами функций, т. е. color, ceil.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
фонарик
сообщение 4.5.2019, 17:53
Сообщение #5


****

Apprentice
Сообщений: 145
Регистрация: 23.11.2011
Группа: Пользователи
Наличность: 0
Пользователь №: 14.305



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

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

 

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