Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

UoKit.com Форумы _ UO Pilot _ hint

Автор: Cheloveche 22.1.2019, 21:01

Доброго времени суток!
Подскажите как привести к нормальному отображению hint timer например чч:мм:сс, а то отображается в миллисекундах.
Спасибо.

Автор: cirus 22.1.2019, 21:29

Код
hint timestamp (timer)

Автор: KotMC 21.4.2021, 23:58

Подскажите, как в hint вывести "остаток", по wait?
По аналогии с настройкой пилота (отображать переменную timer).

Автор: cirus 22.4.2021, 1:40

Цитата
как в hint вывести "остаток"

Остаток от чего?

Автор: KotMC 22.4.2021, 5:19

biggrin.gif Не знаю как правильно выразиться. Хочу с помощью hint вывести отсчет до завершения задержки указанной в wait., а как сделать не знаю.
Правильнее наверное было сказать не остаток, а время до завершения wait.

Автор: sutra 22.4.2021, 9:56

Не совсем понятно что Вы хотите. wait на то и wait чтобы именно ЖДАТЬ, т.е. ничего не делать.
Если Вам надо организовать цикл с пределом ожидания, то примерно так.

Код
  set timer        // Сброс таймера контроля времени
  set #lim 300000   // Предел времени выполнения цикла в мсек
  set #a           // Контроль остатка времени
  while #a = #a  // Цикл ожидания
    if #a < 0      // Если прошло более предела
       break       // Прерывание цикла ожидания
    end_if
    set #a #lim - timer
    set #v div (#a 1000)
    hint div(#v 60) : mod(#v 60)   // вывод сколько осталось ждать
  end_while


Настолько отвык от Пилота, что ковырялся с этим несколько минут. Совет - переходите на lua.
Освоите быстро и не пожалеете.

Автор: cirus 22.4.2021, 11:27

Код
--lua
function _wait(ms)
    local t = os.clock() + ms
    while t - os.clock() > 0 do
        hint (os.date("%M:%S", t - os.clock()))
        wait (1)
    end
end

_wait(5) -- ждать 5 секунд
log (111)
_wait(3) -- ждать 3 секунды
log(222)

Автор: KotMC 22.4.2021, 13:32



Cirus, Спасибо Вам в который раз, это то что нужно.
Sutra, я хотел то что Вы сформулировали как "// вывод сколько осталось ждать"

Автор: nykep 9.1.2023, 3:04

Цитата(cirus @ 22.4.2021, 11:27) *

Код
--lua
function _wait(ms)
    local t = os.clock() + ms
    while t - os.clock() > 0 do
        hint (os.date("%M:%S", t - os.clock()))
        wait (1)
    end
end

_wait(5) -- ждать 5 секунд
log (111)
_wait(3) -- ждать 3 секунды
log(222)



а можно подробнее про hint в луа? есть там какие то параметры или только в углу можно выводить? на вики нету и на форуме не нашел

Автор: DarkMaster 9.1.2023, 3:52

что-то нативно не получилось завести. Парсит как-то криво. Тем не менее цвет нужно задавать либо числом либо clred и прочее использовть, как вызов функции, т.е. clred(). Однако добиться каких-либо результатов я не смог даже закинув все параметры в большой стринг (обычно при такой передаче вызывается старый парсер и функция обрабатывается, как-будто мы используем старый синтаксис).

Автор: nykep 9.1.2023, 4:33

раньше я использовал хинт при тестировании скрипта для наглядности, выскакивало на экране в том месте где находит цвет, ну да ладно. А на счет таймера - как в луа сделать что-то подобное? Например, мне надо нажать кнопку по условию, и чтобы в течение 5 секунд после ее нажатия в это же условие не попадало, со старым таймером было просто.

Код

            if color (1786, 947) ~= 123 and color (1517, 1027) ~= 6 and color (510, 1054) ~= 321 then
                sendex ("5")
            end

Автор: DarkMaster 9.1.2023, 7:36

Код
local timeout = os.clock() + 5
while timeout > os.clock() then
    log("вася")
    wait(1000)
end

Автор: nykep 9.1.2023, 8:50

я в луа совсем не шарю, не понимаю как это применить к моему условию?

Автор: nykep 9.1.2023, 9:35

я свой старый скрипт пытаюсь переделать на луа, загвоздка только в этом таймере

Код

set %u FindWindow (Path of Exile)
set workwindow %u[1 1]
hint (20 clRed 800 900 -1 -1 (ВКЛ))
get color #pupok 31 1012
get color #hp 170 948
get color #mp 1786 947
get color #mptop 1807 897
repeat 10
    sendex 5
end_repeat
wait 100
get color #mbottle 510 1054
set timer 0
while 1 = 1
if 31, 1012 #pupok
    if_not 170, 948 #hp
        sendex 1
        wait 200
    end_if
        if #mpuse = 1 and 1807, 897 #mptop
            set #mpuse 0
            set #full 1
        end_if
        if_not (1786, 947 #mp or 1517, 1027 6 or 510, 1054 #mbottle) or (timer < 4500 and #full = 0)
            sendex 5
            set timer 0
            set #mpuse 1
            set #full 0
        end_if
end_if
end_while

Код

--lua
local u = findwindow ("Path of Exile")
workwindow (u[1][1])
hint ('ВКЛ')
local x = 0
local pupok = color (31, 1012)
local hp = color (170, 948)
local mp = color (1786, 947)
local mptop = color (1807, 897)
local t = 0
repeat
    x = x + 1
    sendex("5")
until x == 10
wait (100)
local mbottle = color (510, 1054)
while 1 == 1 do
    if color (31, 1012) == pupok then
        if color (170, 948) ~= hp then
            sendex ("1")
            wait (200)
        end
        if mpuse == 1 and color (1807, 897) == mptop then
            local mpuse = 0
            local full = 1
        end

            if (color (1786, 947) ~= mp and color (1517, 1027) ~= 6 and color (510, 1054) ~= mbottle) then
                sendex ("5")

                local mpuse = 1
                local full = 0
            end
    end
end

Автор: DarkMaster 9.1.2023, 10:06

Код
local timeout = os.clock() + 4.5
if timeout > os.clock() then
    ...
    if .... then -- reset
        timeout = os.clock() + 4.5
    end
end


Фактически смысл в том, что мы создаем некоторый таймштамп момента будущем. Т.е. мы делаем настоящее + 4.5 секунды. Настоящее мы получаем вызовом os.clock(). Ну и соответственно при необходимости мы это будущее опять двигаем вперед.

Автор: DarkMaster 9.1.2023, 10:17

Код
local timer = function(reset_flag)end
do
    local t = os.clock()
    timer = function(reset_flag)
       if reset_flag then
            t = os.clock()
            return 0
       else
            return os.clock() - t
        end
    end
end

log(tostring(timer))


log(timer())
wait(123)
log(timer())
log(timer("0"))
log(timer())
wait(1000)
log(timer())


Олдскусльный таймер. Насколько он нужен большой вопрос.

Автор: nykep 9.1.2023, 11:41

Цитата(DarkMaster @ 9.1.2023, 10:06) *

Код
local timeout = os.clock() + 4.5
if timeout > os.clock() then
    ...
    if .... then -- reset
        timeout = os.clock() + 4.5
    end
end


Фактически смысл в том, что мы создаем некоторый таймштамп момента будущем. Т.е. мы делаем настоящее + 4.5 секунды. Настоящее мы получаем вызовом os.clock(). Ну и соответственно при необходимости мы это будущее опять двигаем вперед.

блин, оказывается у меня сразу почти получилось, но я там где хотел присвоить переменной какое то значение писал local a = 0, а не просто a = 0 и оно не работало как хотел. В итоге сделал немного по другому как мне привычнее
Код

local t1 = os.clock()
while 1 == 1 do
    if (os.clock() - t1) > 4.5 then
        t1 = os.clock
    end
end

спасибо

Автор: DarkMaster 9.1.2023, 12:34

Цитата
local a = 0, а не просто a = 0

области видимости. когда вы пишите local то вы создаете локальную переменную которую не видно снаружи. Соответственно существующую "снаружи" при этом вы не перезапишите. Очень удобно чтобы избежать случайных конфликтов имен. После скриптов на старом синтаксисе в тысячи строк у меня уже глаз дергался придумывать уникальные названия им, особенно в циклах типа for i. Сейчас все проще намного стало. Хотя нужно отдать должное старом языку - он свое выполнял два десятилетия.

Автор: nykep 9.1.2023, 18:31

Код
--lua
local pupok = 2893595
while 1 == 1 do
    if color (31, 1012) == pupok then
--    wait (500)
    else
--        wait (500)
    end
end


простая проверка цвета на луа в игре вовремя загрузки приводит у меня вот к чему
[+]

если записывать видео программой, то на нём всё ровно. Установка вэйтов уменьшает моргание. В чем может быть дело?

Автор: Cockney 10.1.2023, 0:11

Цитата
Установка вэйтов уменьшает моргание. В чем может быть дело?



Вероятно часто происходит поиск. Вообще, обычно вместо if color используют связку gettimage()/findcolor(). С ними о подобной проблеме не слышал.

Автор: nykep 10.1.2023, 1:49

с findcolor не моргает, спасибо. Странно что на старом языке такого нет, хотя там тоже вроде поиск не медленный. Я когда ставлю wait (500) например, он все равно промаргивает каждые полсекунды.

Автор: nykep 10.1.2023, 20:05

почему если я в findcolor вместо цвета ставлю переменную то он выдает значение -1 ? если пишу просто значение то работает нормально

Код

--lua
local mp = color (1786, 947)  -- 11892493
log (mp)
while 1 == 1 do
    local c = findcolor([[1728, 913, 1851, 1026 , 1, 1 (mp) %arr 2]])
    if c then
       log (c)
    end
    wait (3000)
end

Автор: Cockney 10.1.2023, 21:27

Я не эксперт, но по-моему это не валидный код.

Вот тут вроде как правильно https://forum.uokit.com/index.php?s=&showtopic=70978&view=findpost&p=442767
Нужно привести вызов findcolor() к такому же виду.

Автор: nykep 10.1.2023, 22:17

Цитата(Cockney @ 10.1.2023, 21:27) *

Я не эксперт, но по-моему это не валидный код.

Вот тут вроде как правильно https://forum.uokit.com/index.php?s=&showtopic=70978&view=findpost&p=442767
Нужно привести вызов findcolor() к такому же виду.

мой вариант я тоже у сируса скопировал только в другой теме и он работал, но видимо не совсем. А этот вроде норм, с переменным цветом все работает.

Автор: nykep 11.1.2023, 0:02

а как вписать туда несколько цветов?

Автор: DarkMaster 11.1.2023, 7:09

"(color1, color2)"

Автор: nykep 11.1.2023, 17:21

Цитата(DarkMaster @ 11.1.2023, 7:09) *

"(color1, color2)"

спасибо

Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)