[LUA] Запись числа из onShowDialog.

Статус
В этой теме нельзя размещать новые ответы.

Aizen Sosuke

Участник
Автор темы
120
20
Версия MoonLoader
.026-beta
Здравствуйте. Пытаюсь продумать логику скрипта.
К примеру, у меня есть переменная:
Lua:
local iMoneyBank = 0;

Далее, я хочу достать из диалога число:
zipQXJJ.png

Lua:
function sampev.onShowDialog(dialogId, dialogStyle, dialogTitle, okButtonText, cancelButtonText, dialogText)
    if dialogId == 235 then
        for line in dialogText:gmatch("[^\n]+") do
            if line:find('Деньги в банке') then
                iMoneyBank = line:match('%$(.+)]');
                sampAddChatMessage(iMoneyBank, -1);
            end
        end
    end
end

Все хорошо, все выводит.
Но теперь вопрос. Как мне получить значение из диалога сразу после входа в игру? возможно ли это без открытия диалога?
 
Решение
то-есть, при спавне игрока отправлять команду в чат /stats и резко скрыть?
Да, вот тебе код( вроде рабочий )
Lua:
local ev = require "lib.samp.events"
local stats = true

function main()
    if not isSampfuncsLoaded() or not isSampLoaded() then return end
    while not isSampAvailable() do wait(100) end

    if sampIsLocalPlayerSpawned() then
        sampSendChat("/stats")
    end

    wait(-1)
end

function ev.onShowDialog(id, style, title, button1, button2, text)
    if id == 235 then
        for line in text:gmatch("[^\n]+") do
            if line:find('Деньги в банке') then
                iMoneyBank = line:match('%$(.+)]');
                sampAddChatMessage(iMoneyBank, -1);
            end
        end
        if stats then...

ARMOR

kjor32 is legend
Друг
4,861
6,215
Здравствуйте. Пытаюсь продумать логику скрипта.
К примеру, у меня есть переменная:
Lua:
local iMoneyBank = 0;

Далее, я хочу достать из диалога число:
zipQXJJ.png

Lua:
function sampev.onShowDialog(dialogId, dialogStyle, dialogTitle, okButtonText, cancelButtonText, dialogText)
    if dialogId == 235 then
        for line in dialogText:gmatch("[^\n]+") do
            if line:find('Деньги в банке') then
                iMoneyBank = line:match('%$(.+)]');
                sampAddChatMessage(iMoneyBank, -1);
            end
        end
    end
end

Все хорошо, все выводит.
Но теперь вопрос. Как мне получить значение из диалога сразу после входа в игру? возможно ли это без открытия диалога?
Без открытия нельзя, но можно при заходе открыть диалог, получить информацию, и быстро его скрыть
 

Aizen Sosuke

Участник
Автор темы
120
20
Без открытия нельзя, но можно при заходе открыть диалог, получить информацию, и быстро его скрыть
то-есть, при спавне игрока отправлять команду в чат /stats и резко скрыть?
 

ARMOR

kjor32 is legend
Друг
4,861
6,215
то-есть, при спавне игрока отправлять команду в чат /stats и резко скрыть?
Да, вот тебе код( вроде рабочий )
Lua:
local ev = require "lib.samp.events"
local stats = true

function main()
    if not isSampfuncsLoaded() or not isSampLoaded() then return end
    while not isSampAvailable() do wait(100) end

    if sampIsLocalPlayerSpawned() then
        sampSendChat("/stats")
    end

    wait(-1)
end

function ev.onShowDialog(id, style, title, button1, button2, text)
    if id == 235 then
        for line in text:gmatch("[^\n]+") do
            if line:find('Деньги в банке') then
                iMoneyBank = line:match('%$(.+)]');
                sampAddChatMessage(iMoneyBank, -1);
            end
        end
        if stats then
            sampSendDialogResponse(235, 0, nil, nil)
            return false
            stats = false
        end
    end
end

PS: Переменная status нужна для того что бы скрипт сам закрыл диалог только один раз.
 
  • Нравится
Реакции: Aizen Sosuke
Статус
В этой теме нельзя размещать новые ответы.