Перейти к содержанию
Авторизация  
Razi

Нужно сделать скрипт на условие на языке Lua.

Рекомендуемые сообщения

Как в Lua написать если первое значение = 72 или 8, и если второе значение = 1, и если третье значение = 115, тогда к первому значению прибавить +16, потом подождать 1 секунду и отнять от первого значения -16 ?

Писал вот так, но не работает:

Скрытый текст

[ENABLE]
{$LUA}
timer = createTimer(true)
timer:setInterval(50)
timer.OnTimer = function()
value1 = readBytes('00A444E8',1) --which row
value2 = readBytes('00A443DF',1) -- which beast
value3 = readBytes('009B583F',1)
value4 = readBytes('009B59E7',1)
value5 = readBytes('800F38B2',1) -- In-Battle Action

if value1 == 72 or value1 == 8 then
	if value2 == 1 then
    if value5 == 115 then
            value1 =+16
            sleep (1000)
            value1 =-16

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
if value1 == 72 or value1 == 8 and value2 == 1 and value3 == 115 then
            value1 = value1 + 16
            Sleep(1000)
            value1 = value1 - 16
end

на счет value += 16  не работает, загуглил.

Изменено пользователем partoftheworlD
  • Плюс 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
47 минут назад, partoftheworlD сказал:

            value1 = value1 + 16
            Sleep(1000)
            value1 = value1 - 16

 

 

Попробовал вот так, но работать не хочет: (То есть код: value1 = value1 - 16, получается не работает)

Скрытый текст

[ENABLE]
{$LUA}
timer = createTimer(true)
timer:setInterval(50)
timer.OnTimer = function()
value1 = readBytes('00A444E8',1)
if (value1 == 88) then
            value1 = value1 - 16
else
if (value1 == 24) then
            value1 = value1 - 16
         end
    end
end

{$ASM}

[DISABLE]
{$LUA}
timer:setEnabled(false)

 

Может можно как-то от значения в адресе прибавлять или отнимать?

Изменено пользователем Razi

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А разве после расчетов не надо обратно в адрес записывать значение?

типа прибавил значение к value1 после какой-нибудь метод типа writeBytes по адресу с этим значением, Sleep(1000) и дальше value - 16 и снова пишешь в адрес.

Изменено пользователем partoftheworlD

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
30 минут назад, Razi сказал:

Попробовал вот так

А теперь логически подумай.

1. Ты прочитал значение из адреса в свою переменную.

2. Ты изменил значение своей переменной, когда нужно и на что нужно.

3. А кто же будет это (новое значение) записывать назад в адрес?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
52 минуты назад, partoftheworlD сказал:

А разве после расчетов не надо обратно в адрес записывать значение?

 

51 минуту назад, Garik66 сказал:

кто же будет это (новое значение) записывать назад в адрес?

Думал, что код: value1 = value1 - 16 и делает сразу запись в адрес.

Вот теперь код работает:

Скрытый текст

[ENABLE]
{$LUA}
timer = createTimer(true)
timer:setInterval(50)
timer.OnTimer = function()
value1 = readBytes('00A444E8',1)
if (value1 == 88) then
            value1 = value1 - 16 --writeBytes('00A444E8',72)
            writeBytes('00A444E8',value1)
else
if (value1 == 24) then
            value1 = value1 - 16 --writeBytes('00A444E8',8)
            writeBytes('00A444E8',value1)
         end
    end
end

{$ASM}

[DISABLE]
{$LUA}
timer:setEnabled(false)

 

 

А можно вместо переменной value1, сразу отнимать -16 от значения в адресе 00A444E8 ?

И на какой язык, похож язык Lua, по синтаксису? :offtopic:

Изменено пользователем Razi

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
9 минут назад, Razi сказал:

А можно вместо переменной value1, сразу отнимать -16 от значения в адресе 00A444E8 ?

А зачем вообще отнимать? Разве не будет проще так:

Скрытый текст

[ENABLE]
{$LUA}
timer = createTimer(true)
timer:setInterval(50)
timer.OnTimer = function()
value1 = readBytes('00A444E8',1)
if (value1 == 88) then
            writeBytes('00A444E8',72)
else
if (value1 == 24) then
            writeBytes('00A444E8',8)
         end
    end
end

{$ASM}

[DISABLE]
{$LUA}
timer:setEnabled(false)

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
17 минут назад, Razi сказал:

И на какой язык, похож язык Lua, по синтаксису?

 

pascal, python, c, go 

Изменено пользователем partoftheworlD
  • Плюс 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
23 минуты назад, Garik66 сказал:

А зачем вообще отнимать? Разве не будет проще так:

Да, так проще. Но, держу сразу дополнительную цель, как расширение знаний и изучение языка сразу на практике. Можно ведь обоими способами попробовать сделать и выбрать тот, который будет более удобен.

Вот почему мне нравится программирование, потому что есть не один способ решения задачи smile3.gif .

Есть также другой код и код будет немного проще, если сделать, чтоб от значения в адресе отнималось или прибавлялось 16.

Изменено пользователем Razi

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
23 минуты назад, Razi сказал:

А можно вместо переменной value1, сразу отнимать -16 от значения в адресе 00A444E8 ?

Возможно, можешь попробовать так, по идее writebytes может принимать функцию как аргумент.

writeBytes('00A444E8', readBytes('00A444E8',1) - 16)

Ведь можно считывать значения указывая вместо адреса, функцию которая динамически получала бы адрес.на какое-либо значение.

 

Изменено пользователем partoftheworlD
  • Плюс 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
7 минут назад, partoftheworlD сказал:

writeBytes('00A444E8', readBytes('00A444E8',1) - 16)

Проверил, работает, спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Закрываю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Гость
Эта тема закрыта для публикации ответов.
Авторизация  

×

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.