[arz] информация с худа

kolbaskakolbaska

Участник
Автор темы
2
0
Версия SA-MP
  1. 0.3.7 (R1)
всем привет, только вкатываюсь в разработку скриптов под samp, столкнулся с кастомным голодом на серверах аризоны. если с хп и армором проблем нет, то вот доставание информации о голоде стало проблемой. (я знаю, что можно выдрать сообщение о голоде из текстдрава, но мне нужно именно число голода вытащить)

кто разрулил и подскажет как?

речь об этом:
1698917101035.png
 
Решение
Lua:
function onReceivePacket(id, bs)
    if id == 220 then
        raknetBitStreamReadInt8(bs);
        if raknetBitStreamReadInt8(bs) == 17 then
        raknetBitStreamReadInt32(bs);
        local len, text = raknetBitStreamReadInt32(bs), '';
            if len > 0 then
                text = raknetBitStreamReadString(bs, len)
                local event, data = text:match('window%.executeEvent%(\'([%w.]+)\',%s*\'(.+)\'%)');
                if event == 'event.arizonahud.playerSatiety' then
                    local satiety = data:match('%[(%d+)%]')
                    if tonumber(satiety) <= 50 then
                        sampSendChat('/jmeat')
                    end
                end
            end
        end
    end
end
...

1NEXPL1CA

Известный
750
372
всем привет, только вкатываюсь в разработку скриптов под samp, столкнулся с кастомным голодом на серверах аризоны. если с хп и армором проблем нет, то вот доставание информации о голоде стало проблемой. (я знаю, что можно выдрать сообщение о голоде из текстдрава, но мне нужно именно число голода вытащить)

кто разрулил и подскажет как?

речь об этом:
Посмотреть вложение 219874
Через 220 пакет по моему.
 
  • Нравится
Реакции: kolbaskakolbaska

Willy4ka

вилличка
Модератор
457
769
Lua:
function onReceivePacket(id, bs)
    if id == 220 then
        raknetBitStreamReadInt8(bs);
        if raknetBitStreamReadInt8(bs) == 17 then
        raknetBitStreamReadInt32(bs);
        local len, text = raknetBitStreamReadInt32(bs), '';
            if len > 0 then
                text = raknetBitStreamReadString(bs, len)
                local event, data = text:match('window%.executeEvent%(\'([%w.]+)\',%s*\'(.+)\'%)');
                if event == 'event.arizonahud.playerSatiety' then
                    local satiety = data:match('%[(%d+)%]')
                    if tonumber(satiety) <= 50 then
                        sampSendChat('/jmeat')
                    end
                end
            end
        end
    end
end
 
  • Нравится
Реакции: YarikVL и kolbaskakolbaska

kolbaskakolbaska

Участник
Автор темы
2
0
Lua:
function onReceivePacket(id, bs)
    if id == 220 then
        raknetBitStreamReadInt8(bs);
        if raknetBitStreamReadInt8(bs) == 17 then
        raknetBitStreamReadInt32(bs);
        local len, text = raknetBitStreamReadInt32(bs), '';
            if len > 0 then
                text = raknetBitStreamReadString(bs, len)
                local event, data = text:match('window%.executeEvent%(\'([%w.]+)\',%s*\'(.+)\'%)');
                if event == 'event.arizonahud.playerSatiety' then
                    local satiety = data:match('%[(%d+)%]')
                    if tonumber(satiety) <= 50 then
                        sampSendChat('/jmeat')
                    end
                end
            end
        end
    end
end
отличное решение, спасибо
пойду изучать raknet 😁
 
  • Эм
Реакции: Willy4ka