onTextLabelShow

Cocu

Участник
Автор темы
65
4
Версия MoonLoader
Другое
Добрый вечер господа. Расширял функционал для ракбота, столкнулся со следующим приколом. Есть чудесная функция onTextLabelShow(labelId, positionX, positionY, positionZ, labelString). Из неё отлично достаётся labelString. Однако с позишнами какой-то п##дец. Если быть точнее, то если принтить type(positionX), пишет number, но при этом когда я пытаюсь вывести саму позицию с помощью printLog или же куда-то её приспособить - выдаёт stack traceback без какой-то логичной причины. Может кто-нибудь объяснить, что не так с этими позициями и как это фиксить?
 

winten

Потрачен
409
186
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Не знаю в чем у тебя проблема, но у меня все работает.
1591253748545.png

Lua:
function onTextLabelShow(id, x, y, z, text)
    printLog(string.format('[3D TEXT] id: %d x: %.2f y: %.2f z: %.2f text: %s', id, x, y, z, text))
end
 

Cocu

Участник
Автор темы
65
4
1591263267732.png

Сделал вот так, пишет 'attempt to perform arithmetic on nil value'
1591263303185.png

xf и yf не nil'ы, а вот с позицией из этой фунции адовая ебля какая-то
При этом если принтить posx и posy, то он их выводит без б, но работать с ними нельзя -_________-
 

winten

Потрачен
409
186
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Посмотреть вложение 58458
Сделал вот так, пишет 'attempt to perform arithmetic on nil value'
Посмотреть вложение 58459
xf и yf не nil'ы, а вот с позицией из этой фунции адовая ебля какая-то
При этом если принтить posx и posy, то он их выводит без б, но работать с ними нельзя -_________-
что ты вообще сделать с этими координатами хочешь?
 

Cocu

Участник
Автор темы
65
4
что ты вообще сделать с этими координатами хочешь?
я сравниваю их с координатами из файла (xf yf) и если их разница <5, то условие выполняется. Но сука, они блять нихуя не хотят вычитаться друг из друга и я не понимаю почему, проще переписать функцию на onPrintLog и брать эти координаты из трочки которую пишет ракбот в лог.
1591264932980.png


При этом если я вывожу стринг формат, он выводит, но если я пытаюсь его превратить в число - эксепшн (на скрине posx - выводит, posy - ловит эксепшн)
1591265456539.png
 

Вложения

  • 1591264962402.png
    1591264962402.png
    7.9 KB · Просмотры: 87
Последнее редактирование:

Shamanije

Известный
Друг
957
924
Lua:
function onTextLabelShow(id, x, y, z, text)
    if math.abs(posx - math.floor(x)) < 5 and math.abs(posy - math.ceil(y)) < 5 then
        -- code
    end
end
зачем тебе сокращать число до сотых, если после этого ты и так берешь модуль из числа и сравниваешь его с целым?
выдаёт stack traceback без какой-то логичной причины
printLog() может вывести исключительно строку, при этом он не переводит любой другой тип в строку и выдает ошибку при попытке вывести что-либо другое
при этом ты еще и пытаешься функцию форматирования строки применить на число
 

Cocu

Участник
Автор темы
65
4
Lua:
function onTextLabelShow(id, x, y, z, text)
    if math.abs(posx - math.floor(x)) < 5 and math.abs(posy - math.ceil(y)) < 5 then
        -- code
    end
end
зачем тебе сокращать число до сотых, если после этого ты и так берешь модуль из числа и сравниваешь его с целым?

printLog() может вывести исключительно строку, при этом он не переводит любой другой тип в строку и выдает ошибку при попытке вывести что-либо другое

при этом ты еще и пытаешься функцию форматирования строки применить на число
так а поч он пишет тогда что я пытаюсь выполнить арифметическую операцию над nil, если у меня нигде nil'а нет?
1591265605849.png

Беру модуль разницы координат из файла и из метки, но пишет attempt to perform arithmetic on nil value


До сотых я не сокращал изначально, просто пытался сравнить tonumber(координаты метки) и tonumber(координаты из базы), но выдавало эксепшн, подумал если это добавить хоть как-то поможет, но нет.

Код ща чекну


UPD: Залил твой код, не алё
1591265987656.png

1591266055872.png

1591266044065.png
 
Последнее редактирование:

Shamanije

Известный
Друг
957
924
так а поч он пишет тогда что я пытаюсь выполнить арифметическую операцию над nil, если у меня нигде nil'а нет?
луажит думает иначе. убери лишние tonumber() и прочую ебень и нормально сравни координаты. функцию тебе оставил выше
 

Cocu

Участник
Автор темы
65
4
луажит думает иначе. убери лишние tonumber() и прочую ебень и нормально сравни координаты. функцию тебе оставил выше
так рофл в том что у меня координаты из базы вытаскивает как строку, поэтому нужно её превратить в число. Хз как еще. Ибо XF и YF - строки и их нужно как-то в числа переводить
 

Shamanije

Известный
Друг
957
924
так рофл в том что у меня координаты из базы вытаскивает как строку, поэтому нужно её превратить в число. Хз как еще. Ибо XF и YF - строки и их нужно как-то в числа переводить
кинь целый скрипт (если хочешь - под хайд)
 

Cocu

Участник
Автор темы
65
4
function onTextLabelShow(labelId, positionX, positionY, positionZ, labelString)
num=''
owner=''
numcheck=0
ownercheck=0
coordz = io.open('coord.txt','r')
for lin in coordz:lines() do
xf=''
yf=''
top=''
left=''
fdf=0
for ff = 1,#lin do
if string.sub(lin,ff,ff)==',' then
fdf=fdf+1
end
if fdf==0 then
xf= xf..string.sub(lin,ff,ff)
end
if fdf==1 and string.sub(lin,ff,ff)~=',' then
yf=yf..string.sub(lin,ff,ff)
end
if fdf==2 and string.sub(lin,ff,ff)~=',' then
top=top..string.sub(lin,ff,ff)
end
if fdf==3 and string.sub(lin,ff,ff)~=',' then
left=left..string.sub(lin,ff,ff)
end
if math.abs(tonumber(xf) - math.floor(positionX)) < 5 and math.abs(tonumber(yf) - math.ceil(positionY)) < 5 then
outl=left
outp=top
end
end
end
[USERSID=]163165[/USERSID]
 

Shamanije

Известный
Друг
957
924
если выразить твои xf и yf константами, то условие выполняется. проблема исключительно в твоем способе определения координат
Lua:
function onTextLabelShow(labelId, positionX, positionY, positionZ, labelString)
    local xf, yf = '1922.2124', '2020.2863'
    if math.abs(tonumber(xf) - math.floor(positionX)) < 5 and math.abs(tonumber(yf) - math.ceil(positionY)) < 5 then
        printLog('< 5')
    else
        printLog('> 5')
    end
end
Hv344.png
 

Cocu

Участник
Автор темы
65
4
если выразить твои xf и yf константами, то условие выполняется. проблема исключительно в твоем способе определения координат
Lua:
function onTextLabelShow(labelId, positionX, positionY, positionZ, labelString)
    local xf, yf = '1922.2124', '2020.2863'
    if math.abs(tonumber(xf) - math.floor(positionX)) < 5 and math.abs(tonumber(yf) - math.ceil(positionY)) < 5 then
        printLog('< 5')
    else
        printLog('> 5')
    end
end
Hv344.png
а как по-другому можно достать? Ну типа, у меня координаты в формате x,y в файлике. Когда я достаю их и потом запускаю по ним коордмастер - проблем вообще никаких нет, но со сравнением беда
1591267012944.png