- 359
- 143
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Пытаюсь написать скрипт для ракбота, который будет открывать все сундуки с рулетками(изначально пишу только для 2 сундуков), и у меня появилась проблема! 3 день сижу и не могу придумать как это реализовать.. У меня есть вот такой код:
Проблема состоит в том, что этот код выполняется не по порядку(с lua я работаю впервые), как мне сделать так, что бы код выполнялся по порядку???
Cначала выполняется вот эта часть кода(с поиском модельки обычного сундука)
Дальше пропускается код с вторым сундуком и сразу скрипт проходится по коду который ищет время до открытия сундука
И только потом, скрипт проходится по коду с вторым сундуком и второй раз по коду, который ищет время до открытия
Из-за того, что код выполняется не по порядку, я не могу никак сделать нормально проверку на то, готов ли нужный мне сундук до открытия или нужно ещё подождать некоторое время.. (Пытаюсь записать время и IDtextdraw в переменные, но получается так, что часть кода(с вторым сундуком) выполняется в последнюю очередь и переменная которая отвечает за IDtextdraw второго сундука получается пустой(nil)).. Надеюсь понятно пояснил суть проблемы!
P.S. использовал библиотеку с этой темы https://www.blast.hk/threads/27579/
lua:
package.path = getRakBotPath().."/scripts/libs/?.lua;"..getRakBotPath().."/scripts/libs/?/init.lua;";
package.cpath = getRakBotPath().."/scripts/libs/?.dll";
require("luaAddons.textdraw")
require("luaAddons.fix")
local active = false
local syndyk1 = false
local syndyk2 = false
local s1 = 0
local s2 = 0
t = {}
function onRunCommand(cmd)
if cmd == '!rt' then
clickTextDraw(65535)
active = not active
sendInput('/invent')
printLog('Auto chest start')
end
if cmd == '!stop' then
active = not active
clickTextDraw(65535)
end
end
function onShowTextDraw(tId,data)
if active then
if data.modelId == 19918 then
s1 = tId + 1
s2 = s1 + 2
print('test s1: '..s1)
if syndyk1 == true then
clickTextDraw(tId)
end
end
if data.modelId == 1353 then
s2 = tId + 1
print('test s2: '..s2)
if syndyk2 == true then
clickTextDraw(tId)
end
end
if data.text:match('%d- min') then
for i = 0, 1 do
t[i] = tId
print('Proverka spiska:')
print(i, t[i], sampTextdrawGetString(t[i]))
end
end
--[[if data.text:match('%d- min') then
printLog('idTextDraw = '..tId)
print('s1 = '..s1)
print('s2 = '..s2)
if tId == s1 then
syndyk1 = false
sc1 = s1
print('Vremiya do otkritiya obichnogo syndyka ne prishlo')
elseif tId == s2 then
syndyk2 = false
sc2 = s2
print('Vremiya do otkritiya platinovogo syndyka ne prishlo')
elseif s1 == sc1 and s2 == sc2 then
clickTextDraw(65535)
timeout = 5000
--timeout = (60000*10)+120000
sc1 = nil
sc2 = nil
defCallAdd(timeout, true, check)
elseif tId ~= s1 then
syndyk1 = true
elseif tId ~= s2 then
syndyk2 = true
end
end]]
if data.text == 'USE' or data.text == '…CЊO‡’€O‹AЏ’' then
td = tId + 1
clickTextDraw(td)
end
end
end
function check()
sendInput('/invent')
end
---- id 19918 обычный сундук
---- id 1353 сундук который выпадает после 360 часов игры
Проблема состоит в том, что этот код выполняется не по порядку(с lua я работаю впервые), как мне сделать так, что бы код выполнялся по порядку???
Cначала выполняется вот эта часть кода(с поиском модельки обычного сундука)
lua:
if data.modelId == 19918 then
s1 = tId + 1
s2 = s1 + 2
print('test s1: '..s1)
if syndyk1 == true then
clickTextDraw(tId)
end
end
Дальше пропускается код с вторым сундуком и сразу скрипт проходится по коду который ищет время до открытия сундука
lua:
if data.text:match('%d- min') then
for i = 0, 1 do
t[i] = tId
print('Proverka spiska:')
print(i, t[i], sampTextdrawGetString(t[i]))
end
end
И только потом, скрипт проходится по коду с вторым сундуком и второй раз по коду, который ищет время до открытия
lua:
if data.modelId == 1353 then
s2 = tId + 1
print('test s2: '..s2)
if syndyk2 == true then
clickTextDraw(tId)
end
end
Из-за того, что код выполняется не по порядку, я не могу никак сделать нормально проверку на то, готов ли нужный мне сундук до открытия или нужно ещё подождать некоторое время.. (Пытаюсь записать время и IDtextdraw в переменные, но получается так, что часть кода(с вторым сундуком) выполняется в последнюю очередь и переменная которая отвечает за IDtextdraw второго сундука получается пустой(nil)).. Надеюсь понятно пояснил суть проблемы!
P.S. использовал библиотеку с этой темы https://www.blast.hk/threads/27579/