SAMP | Изменение текста в серверном TextDraw

Mashra

Новичок
Автор темы
17
2
Версия MoonLoader
.026-beta
Привет всем,

Есть ли возможность изменить текст, который отображен на серверном textdraw?

Код:
 function sampev.onShowTextDraw(txid, data)
    file = io.open(getGameDirectory().."//moonloader//mylog.txt", "a")
    io.output(file)
    for key, val in pairs(data) do
           tval = tostring(val)
           tip = type(val)
           file:write(key.." : "..tval.. "   type - "..tip, "\n")
       end
    sampAddChatMessage("The end", -1)
    texid = txid
    io.close(file)
    data.text = "150"
    return {txid, data}
 end

Я ловлю TextDraw при открытии, получаю текст и возвращаю измененный. Он меняется обратно на серверное значение буквально через секунду.

Есть ли какой-нибудь функционал, который позволяет взаимодействовать (и изменять?) открытый TextDraw, а не взаимодействовать с ним только при открытии.

Спасибо!

Upd.: Знаю про функцию sampTextdrawGetString - она корректно возвращает значение, но она не отправляет?
 

ARMOR

kjor32 is legend
Модератор
4,853
6,142
  • Нравится
Реакции: Mashra

Mashra

Новичок
Автор темы
17
2
Скинь скрин этих Подсказок
Есть ли где-нибудь ресурс, где можно подсмотреть весь функционал и способы вытащить информацию?

Например, textdraw содержит table - можно ли как то её распечатать? data.rotation (так называется переменная) выдаёт пустоту.
 

ARMOR

kjor32 is legend
Модератор
4,853
6,142
Корень игры/moonloader/lib/samp/events.lua

Вот список чтобы ты не ебался с поисками:
flags = 'uint8'
letterWidth = 'float'
letterHeight = 'float'
letterColor = 'int32'
lineWidth = 'float'
lineHeight = 'float'
boxColor = 'int32'
shadow = 'uint8'
outline = 'uint8'
backgroundColor = 'int32'
style = 'uint8'
selectable = 'uint8'
position = 'vector2d'
modelId = 'uint16'
rotation = 'vector3d'
zoom = 'float'
color = 'int32'
text = 'string16'
Пример:
Lua:
local events = require 'lib.samp.events'

function ev.onShowTextDraw(id, data)
    print(data.text) -- в результате мы выводим в консоль сампфункса текст из текстдрава
end
 
  • Нравится
Реакции: Mashra

chapo

🫡 В армии с 17.10.2023. В ЛС НЕ ОТВЕЧАЮ
Друг
8,776
11,234
  • Нравится
Реакции: ARMOR

Mashra

Новичок
Автор темы
17
2
Корень игры/moonloader/lib/samp/events.lua

Вот список чтобы ты не ебался с поисками:

Пример:
Lua:
local events = require 'lib.samp.events'

function ev.onShowTextDraw(id, data)
    print(data.text) -- в результате мы выводим в консоль сампфункса текст из текстдрава
end
Я правильно понимаю, что каждому созданному текстдраву соответствуют все вышеперечисленные пункты? Т.е., условно говоря, я могу сделать "if data.text =="Яблоко", то он найдет яблоко и будет изменять данные, которые я укажу? Например тот же бекграунд колор.

За таблицу огромное спасибо!
 

ARMOR

kjor32 is legend
Модератор
4,853
6,142
Я правильно понимаю, что каждому созданному текстдраву соответствуют все вышеперечисленные пункты? Т.е., условно говоря, я могу сделать "if data.text =="Яблоко", то он найдет яблоко и будет изменять данные, которые я укажу? Например тот же бекграунд колор.

За таблицу огромное спасибо!
Да

Вот ещё пример получения позиции текстдрава( проверка по координатам намного лучше чем по id )
Lua:
local ev = require 'lib.samp.events'

function ev.onShowTextDraw(id, data)
    if id == ид твоего текстдрава then
        print("X: " .. data.position.x .. " | Y: " .. data.position.y ) -- в результате в консоль сампфункса выводятся координаты текстдрава
    end
end
 
Последнее редактирование:
  • Нравится
Реакции: Mashra

Mashra

Новичок
Автор темы
17
2
Да

Вот ещё пример получения позиции текстдрава( проверка по координатам намного лучше чем по id )
Lua:
local ev = require 'lib.samp.events'

function ev.onShowTextDraw(id, data)
    if id == ид твоего текстдрава then
        print("X: " .. data.position.x .. " | Y: " .. data.position.y ) -- в результате в консоль сампфункса выводятся координаты текстдрава
    end
end
Хорошо, спасибо за метод, попробую и его.

И еще такой вопрос, табличные значения имеют такой формат: "0x15908088", они поддаются какой-то дешифровке, или это могут быть рандомные значения?

Text: POLE2 :: Position: table: 0x15908088 :: Rotation: table: 0x159080d8
 

ARMOR

kjor32 is legend
Модератор
4,853
6,142
Хорошо, спасибо за метод, попробую и его.

И еще такой вопрос, табличные значения имеют такой формат: "0x15908088", они поддаются какой-то дешифровке, или это могут быть рандомные значения?
В душе не ебу чесно говоря
 

chapo

🫡 В армии с 17.10.2023. В ЛС НЕ ОТВЕЧАЮ
Друг
8,776
11,234
Хорошо, спасибо за метод, попробую и его.

И еще такой вопрос, табличные значения имеют такой формат: "0x15908088", они поддаются какой-то дешифровке, или это могут быть рандомные значения?
так положение это vector2d, что бы получить значения нужно юзать position.x или position.y
 

Mashra

Новичок
Автор темы
17
2
так положение это vector2d, что бы получить значения нужно юзать position.x или position.y
Можешь привести пример, пожалуйста? как должна выглядеть строка для записи/получения?