Можно ли как-то изменить дальность прорисовки 3dText'a?

wintreist

Активный
Автор темы
308
71
Версия MoonLoader
.026-beta
По стандарту 3dText прорисовывается когда к нему подойти на определенное расстояние, мне требуется изменить у ОПРЕДЕЛЕННОГО 3dText'a дальность. Чтобы именно тот текст, который мне нужен начинал рисоваться раньше и исчезал позже определенного расстояния. Пробовал сделать так

Lua:
function sampev.onCreate3DText(idObject, color, position, distance, testLOS, attachedPlayerId, attachedVehicleId, textObject)
    if text:find('*** Дом занят ***', 1, true) and then
        distance = 100.0
        return {idObject, color, position, distance, testLOS, attachedPlayerId, attachedVehicleId, textObject}
    end
end
Думал distance - это дистанция прорисовки, но нет, весь текст рисуется одинаково...
 
  • Нравится
Реакции: kyrtion
Решение
Пробовал. Не меняло дистанцию
У меня такой код работает
47200

Попробуй где в return "testLOS" поставить false
return {idObject, color, position, 228, false, attachedPlayerId, attachedVehicleId, textObject}

winten

Потрачен
409
182
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
3dtext тебе показывает сервер, только если синхрой оказаться ближе к 3dtext, запомнить его параметры и рисовать у себя локально
 

wintreist

Активный
Автор темы
308
71
У меня получается так. Сервер создаёт 3dtext который я получаю и вижу. Следующий шаг для меня сделать так, чтобы когда я от него отдалялся, я всё ещё видел его (дальше от текста -> размер меньше и т.д.) я делаю так, чтобы текст было видно сквозь стены (спасибо людям из предыдущего вопроса). В итоге должно получиться, что сервер создал для меня текст, я сделал так чтобы он был виден через стены и на требуемом мне расстоянии я все ещё его видел.
 

koncumone

Известный
337
87
У меня получается так. Сервер создаёт 3dtext который я получаю и вижу. Следующий шаг для меня сделать так, чтобы когда я от него отдалялся, я всё ещё видел его (дальше от текста -> размер меньше и т.д.) я делаю так, чтобы текст было видно сквозь стены (спасибо людям из предыдущего вопроса). В итоге должно получиться, что сервер создал для меня текст, я сделал так чтобы он был виден через стены и на требуемом мне расстоянии я все ещё его видел.
возможно рендером, и там дистанцию указывать, но я хз возможно идея бредовая(скорее всего)
 

wintreist

Активный
Автор темы
308
71
Я пробую использовать sampCreate3dTextEx чтобы перезаписать 3dText, но из-за перезаписи происходит краш. Это если пробовать перезаписать прямо в sampev.onCreate3DText. Если вынести sampCreate3dTextEx в main, то меня не крашит, но текст исчезает.
 

wintreist

Активный
Автор темы
308
71
Lua:
function sampev.onCreate3DText(idObject, color, position, distance, testLOS, attachedPlayerId, attachedVehicleId, textObject)
    if textObject == "*** Дом занят ***" then
        return {idObject, color, position, 228, testLOS, attachedPlayerId, attachedVehicleId, textObject}
    end
end
Пробовал. Не меняло дистанцию
 

Dmitriy Makarov

25.05.2021
Проверенный
2,484
1,114
  • Нравится
Реакции: wintreist

wintreist

Активный
Автор темы
308
71
У меня такой код работает
Посмотреть вложение 47200
Попробуй где в return "testLOS" поставить false
return {idObject, color, position, 228, false, attachedPlayerId, attachedVehicleId, textObject}
Мне как раз и нужно, чтобы testLOS был true. Моя задача, чтобы текст просвечивался через стены и была увеличена дистанция прорисовки
@Dmitriy Makarov , что странно, это то, что return всё-таки изменяет текст. Он просвечивает через стены, но дистанция не меняется
Теперь у меня получилось увеличить дальность, но LOS не работает
Lua:
function sampev.onCreate3DText(idObject, color, position, distance, testLOS, attachedPlayerId, attachedVehicleId, textObject)
    if textObject:find('*** Дом занят ***', 1, true) and not testLOS then
        return {idObject, color, position, 100, true, attachedPlayerId, attachedVehicleId, textObject}
    end
end
Хоть я и ставил true. Странно
47203

Примечание для @Dmitriy Makarov. Когда я тестировал код, который приложили вы, и тот, что у меня в первом сообщении темы, всё это происходило в отдельно созданном потоке lua_thread. Может быть из-за этого не получалось. Сейчас я вынес проверку из потока и дальность изменить получилось, однако мне всё ещё нужно, чтобы LOS был true
 
Последнее редактирование:

Dmitriy Makarov

25.05.2021
Проверенный
2,484
1,114
однако мне всё ещё нужно, чтобы LOS был true
Честно, я не знаю за что отвечает testLOS. Если это отвечает за то, чтобы было видно через стены, то с значением false у меня виден текст через стены.
 

wintreist

Активный
Автор темы
308
71
Очень, очень, очень странно. Сделал так

Lua:
function sampev.onCreate3DText(idObject, color, position, distance, testLOS, attachedPlayerId, attachedVehicleId, textObject)
    if textObject:find('*** Дом занят ***', 1, true) and not testLOS then
        testLOS = false
        return {idObject, color, position, 100, testLOS, attachedPlayerId, attachedVehicleId, textObject}
    end
end
И текст стал виден через стены
 

Dmitriy Makarov

25.05.2021
Проверенный
2,484
1,114
Очень, очень, очень странно. Сделал так

Lua:
function sampev.onCreate3DText(idObject, color, position, distance, testLOS, attachedPlayerId, attachedVehicleId, textObject)
    if textObject:find('*** Дом занят ***', 1, true) and not testLOS then
        testLOS = false
        return {idObject, color, position, 100, testLOS, attachedPlayerId, attachedVehicleId, textObject}
    end
end
И текст стал виден через стены
and not testLOS testLOS = false
Не проще в return выставить значение false/true? Return как-никак возвращает что-нибудь. В данном случае, вернёт либо false, либо true
 

wintreist

Активный
Автор темы
308
71
and not testLOS testLOS = false
Не проще в return выставить значение false/true? Return как-никак возвращает что-нибудь. В данном случае, вернёт либо false, либо true
Да, я сделал это для теста, в итоге получилось. Благодарю всех за ответы, считаю, что @Dmitriy Makarov сделал больше всех.
 
  • Нравится
Реакции: Dmitriy Makarov