[ImGui] Выдача прав через окно ImGui.

Mico

Активный
Автор темы
251
48
Версия MoonLoader
.026-beta
Приветствую! Я снова с вопросом, помоги! Как сделать, окно Имгуи, которые выдает админку (допустим).
Т.е: есть поле ввода ника, я ввёл ник, далее есть список (combo) уровня, я выбрал допустим - 9 уровень. После жму выдать и админка выдается этому человек, чей ник я написал.

Надеюсь на помощь :)
 
Решение
Мало подробностей, друг, очень мало подробностей. Сделать это не сложно, только вот я не знаю, что у тебя за команда для выдачи админки, выдаётся ли она по нику игрока или же нужно его ID ввести.

UPD:
Ладно, так как ждать мне лень, то вот, сделал от себя.
Lua:
-- Эти 3 строки нужны, чтобы русский текст отображался корректно. Добавляешь их в начало кода
local encoding = require 'encoding'
encoding.default = 'CP1251'
u8 = encoding.UTF8
-- Эти 2 туда же
local combo = imgui.ImInt(0) -- 0 - Это изначальное значение твоего комбо. (То есть первая строчка)
local inputnick = imgui.ImBuffer(256) -- Это инпут, куда нужно ник вводить


-- function OnDrawFrame()
imgui.PushItemWidth(160) -- Ширина инпута, чтобы длинным не был...

winten

Потрачен
409
184
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
При нажатии на кнопку
sampSendChat(string.format('/makeadmin %s %d', *переменная, в которую вводишь ник*.v, *переменная с уровнем админимки*.v))
 

Dmitriy Makarov

25.05.2021
Проверенный
2,500
1,131
Мало подробностей, друг, очень мало подробностей. Сделать это не сложно, только вот я не знаю, что у тебя за команда для выдачи админки, выдаётся ли она по нику игрока или же нужно его ID ввести.

UPD:
Ладно, так как ждать мне лень, то вот, сделал от себя.
Lua:
-- Эти 3 строки нужны, чтобы русский текст отображался корректно. Добавляешь их в начало кода
local encoding = require 'encoding'
encoding.default = 'CP1251'
u8 = encoding.UTF8
-- Эти 2 туда же
local combo = imgui.ImInt(0) -- 0 - Это изначальное значение твоего комбо. (То есть первая строчка)
local inputnick = imgui.ImBuffer(256) -- Это инпут, куда нужно ник вводить


-- function OnDrawFrame()
imgui.PushItemWidth(160) -- Ширина инпута, чтобы длинным не был
imgui.InputText(u8"Введите ник", inputnick) -- Сам инпут
imgui.PopItemWidth() -- Закрываем эту штуку с шириной
local admlevel = {u8"Нет", u8"Первый", u8"Второй", u8"Третий", u8"Четвёртый", u8"Пятый"} -- Это строки комбо, можешь дополнять. Первая строка "Нет" - это дефолт значение
imgui.PushItemWidth(130) -- Ширина комбо
imgui.Combo(u8'Уровень админки', combo, admlevel) -- Само комбо.
imgui.PopItemWidth() -- Закрываем штуку с шириной
if imgui.Button(u8"Выдать") then -- Если нажать на кнопку "Выдать"
    if combo.v == 0 or inputnick.v == "" then -- И если в комбо будет выбрана строка "Нет" или же ник игрока не будет введён
        sampAddChatMessage("Вы забыли ник игрока или уровень админки", -1) -- Напишут, что ты кое-что забыл
    else -- Иначе
        sampSendChat("/makeadmin "..inputnick.v.." "..tonumber(combo.v)) -- Выдается админка игроку с ником который ты ввёл и уровень который ты выбрал
        combo.v = 0 -- Автоматом выбираем после этого комбо на "Нет"
        inputnick.v = "" -- И убираем из инпута ник
        -- Это чтобы случайно не нажимать снова или же вручную не удалять
    end
end
Видеообзор:
 
Последнее редактирование:
  • Нравится
Реакции: MrBidloKoder

Mico

Активный
Автор темы
251
48
Мало подробностей, друг, очень мало подробностей. Сделать это не сложно, только вот я не знаю, что у тебя за команда для выдачи админки, выдаётся ли она по нику игрока или же нужно его ID ввести.

UPD:
Ладно, так как ждать мне лень, то вот, сделал от себя.
Lua:
-- Эти 3 строки нужны, чтобы русский текст отображался корректно. Добавляешь их в начало кода
local encoding = require 'encoding'
encoding.default = 'CP1251'
u8 = encoding.UTF8
-- Эти 2 туда же
local combo = imgui.ImInt(0) -- 0 - Это изначальное значение твоего комбо. (То есть первая строчка)
local inputnick = imgui.ImBuffer(256) -- Это инпут, куда нужно ник вводить


-- function OnDrawFrame()
imgui.PushItemWidth(160) -- Ширина инпута, чтобы длинным не был
imgui.InputText(u8"Введите ник", inputnick) -- Сам инпут
imgui.PopItemWidth() -- Закрываем эту штуку с шириной
local admlevel = {u8"Нет", u8"Первый", u8"Второй", u8"Третий", u8"Четвёртый", u8"Пятый"} -- Это строки комбо, можешь дополнять. Первая строка "Нет" - это дефолт значение
imgui.PushItemWidth(130) -- Ширина комбо
imgui.Combo(u8'Уровень админки', combo, admlevel) -- Само комбо.
imgui.PopItemWidth() -- Закрываем штуку с шириной
if imgui.Button(u8"Выдать") then -- Если нажать на кнопку "Выдать"
    if combo.v == 0 or inputnick.v == "" then -- И если в комбо будет выбрана строка "Нет" или же ник игрока не будет введён
        sampAddChatMessage("Вы забыли ник игрока или уровень админки", -1) -- Напишут, что ты кое-что забыл
    else -- Иначе
        sampSendChat("/makeadmin "..inputnick.v.." "..tonumber(combo.v)) -- Выдается админка игроку с ником который ты ввёл и уровень который ты выбрал
        combo.v = 0 -- Автоматом выбираем после этого комбо на "Нет"
        inputnick.v = "" -- И убираем из инпута ник
        -- Это чтобы случайно не нажимать снова или же вручную не удалять
    end
end
Видеообзор:
Ого!! Спасибо, сейчас проверю.
Мало подробностей, друг, очень мало подробностей. Сделать это не сложно, только вот я не знаю, что у тебя за команда для выдачи админки, выдаётся ли она по нику игрока или же нужно его ID ввести.

UPD:
Ладно, так как ждать мне лень, то вот, сделал от себя.
Lua:
-- Эти 3 строки нужны, чтобы русский текст отображался корректно. Добавляешь их в начало кода
local encoding = require 'encoding'
encoding.default = 'CP1251'
u8 = encoding.UTF8
-- Эти 2 туда же
local combo = imgui.ImInt(0) -- 0 - Это изначальное значение твоего комбо. (То есть первая строчка)
local inputnick = imgui.ImBuffer(256) -- Это инпут, куда нужно ник вводить


-- function OnDrawFrame()
imgui.PushItemWidth(160) -- Ширина инпута, чтобы длинным не был
imgui.InputText(u8"Введите ник", inputnick) -- Сам инпут
imgui.PopItemWidth() -- Закрываем эту штуку с шириной
local admlevel = {u8"Нет", u8"Первый", u8"Второй", u8"Третий", u8"Четвёртый", u8"Пятый"} -- Это строки комбо, можешь дополнять. Первая строка "Нет" - это дефолт значение
imgui.PushItemWidth(130) -- Ширина комбо
imgui.Combo(u8'Уровень админки', combo, admlevel) -- Само комбо.
imgui.PopItemWidth() -- Закрываем штуку с шириной
if imgui.Button(u8"Выдать") then -- Если нажать на кнопку "Выдать"
    if combo.v == 0 or inputnick.v == "" then -- И если в комбо будет выбрана строка "Нет" или же ник игрока не будет введён
        sampAddChatMessage("Вы забыли ник игрока или уровень админки", -1) -- Напишут, что ты кое-что забыл
    else -- Иначе
        sampSendChat("/makeadmin "..inputnick.v.." "..tonumber(combo.v)) -- Выдается админка игроку с ником который ты ввёл и уровень который ты выбрал
        combo.v = 0 -- Автоматом выбираем после этого комбо на "Нет"
        inputnick.v = "" -- И убираем из инпута ник
        -- Это чтобы случайно не нажимать снова или же вручную не удалять
    end
end
Видеообзор:
Добавил в свой скрипт, но, что то не работает. Ошибок нет. Но не работает. Код ниже:
Код:
local combo = imgui.ImInt(0) -- 0 - Это изначальное значение твоего комбо. (То есть первая строчка)
local inputnick = imgui.ImBuffer(256) -- код, который Вы скинули

local main_window_state = imgui.ImBool(false)
local two_window_state = imgui.ImBool(false)
local gun_window_state = imgui.ImBool(false)
local adm_window_state = imgui.ImBool(false) -- переменные с окнами

function cmd_ah(arg)
    main_window_state.v = not main_window_state.v
    imgui.Process = main_window_state.v

    themes.SwitchColorTheme()
end

function cmd_tl(arg)
    two_window_state.v = not two_window_state.v
    imgui.Process = two_window_state.v
end

function cmd_guns(arg)
    gun_window_state.v = not gun_window_state.v
    imgui.Process = gun_window_state.v

end

function cmd_dmd(arg)
    adm_window_state.v = not adm_window_state.v
    imgui.Process = adm_window_state.v
end -- функция окон

-- здесь остальные имгуи окна, а ниже, имгуи окно с выдачей.
    if adm_window_state.v then
        imgui.SetNextWindowSize(imgui.ImVec2(300,600), imgui.Cond.FirstUseEver)
        imgui.SetNextWindowPos(imgui.ImVec2((sw / 2), sh / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.Begin(u8"[AHelper] Выдача админ-прав", adm_window_state, imgui.WindowFlags.NoCollapse)
        imgui.PushItemWidth(160) -- Ширина инпута, чтобы длинным не был
        imgui.InputText(u8"Введите ник", inputnick) -- Сам инпут
        imgui.PopItemWidth() -- Закрываем эту штуку с шириной
        local admlevel = {u8"Нет", u8"Первый", u8"Второй", u8"Третий", u8"Четвёртый", u8"Пятый"} -- Это строки комбо, можешь дополнять. Первая строка "Нет" - это дефолт значение
        imgui.PushItemWidth(130) -- Ширина комбо
        imgui.Combo(u8'Уровень админки', combo, admlevel) -- Само комбо.
        imgui.PopItemWidth() -- Закрываем штуку с шириной
        if imgui.Button(u8"Выдать") then -- Если нажать на кнопку "Выдать"
            if combo.v == 0 or inputnick.v == "" then -- И если в комбо будет выбрана строка "Нет" или же ник игрока не будет введён
            sampAddChatMessage("Вы забыли ник игрока или уровень админки", -1) -- Напишут, что ты кое-что забыл
            else -- Иначе
            sampSendChat("/makeadmin "..inputnick.v.." "..tonumber(combo.v)) -- Выдается админка игроку с ником который ты ввёл и уровень который ты выбрал
            combo.v = 0 -- Автоматом выбираем после этого комбо на "Нет"
            inputnick.v = "" -- И убираем из инпута ник
        -- Это чтобы случайно не нажимать снова или же вручную не удалят
            end
        end

        imgui.End()
    end
end

UPD: забыл добавить, команду я зарегистрировал (/dmd), но, когда ввожу в игре ничего не работает.
Мало подробностей, друг, очень мало подробностей. Сделать это не сложно, только вот я не знаю, что у тебя за команда для выдачи админки, выдаётся ли она по нику игрока или же нужно его ID ввести.

UPD:
Ладно, так как ждать мне лень, то вот, сделал от себя.
Lua:
-- Эти 3 строки нужны, чтобы русский текст отображался корректно. Добавляешь их в начало кода
local encoding = require 'encoding'
encoding.default = 'CP1251'
u8 = encoding.UTF8
-- Эти 2 туда же
local combo = imgui.ImInt(0) -- 0 - Это изначальное значение твоего комбо. (То есть первая строчка)
local inputnick = imgui.ImBuffer(256) -- Это инпут, куда нужно ник вводить


-- function OnDrawFrame()
imgui.PushItemWidth(160) -- Ширина инпута, чтобы длинным не был
imgui.InputText(u8"Введите ник", inputnick) -- Сам инпут
imgui.PopItemWidth() -- Закрываем эту штуку с шириной
local admlevel = {u8"Нет", u8"Первый", u8"Второй", u8"Третий", u8"Четвёртый", u8"Пятый"} -- Это строки комбо, можешь дополнять. Первая строка "Нет" - это дефолт значение
imgui.PushItemWidth(130) -- Ширина комбо
imgui.Combo(u8'Уровень админки', combo, admlevel) -- Само комбо.
imgui.PopItemWidth() -- Закрываем штуку с шириной
if imgui.Button(u8"Выдать") then -- Если нажать на кнопку "Выдать"
    if combo.v == 0 or inputnick.v == "" then -- И если в комбо будет выбрана строка "Нет" или же ник игрока не будет введён
        sampAddChatMessage("Вы забыли ник игрока или уровень админки", -1) -- Напишут, что ты кое-что забыл
    else -- Иначе
        sampSendChat("/makeadmin "..inputnick.v.." "..tonumber(combo.v)) -- Выдается админка игроку с ником который ты ввёл и уровень который ты выбрал
        combo.v = 0 -- Автоматом выбираем после этого комбо на "Нет"
        inputnick.v = "" -- И убираем из инпута ник
        -- Это чтобы случайно не нажимать снова или же вручную не удалять
    end
end
Видеообзор:
Сделал другой скрипт, там работает. Спасибо :)
 
Последнее редактирование:
  • Нравится
Реакции: Dmitriy Makarov