Вопросы по Lua скриптингу

Общая тема для вопросов по разработке скриптов на языке программирования Lua, в частности под MoonLoader.
  • Задавая вопрос, убедитесь, что его нет в списке частых вопросов и что на него ещё не отвечали (воспользуйтесь поиском).
  • Поищите ответ в теме посвященной разработке Lua скриптов в MoonLoader
  • Отвечая, убедитесь, что ваш ответ корректен.
  • Старайтесь как можно точнее выразить мысль, а если проблема связана с кодом, то обязательно прикрепите его к сообщению, используя блок [code=lua]здесь мог бы быть ваш код[/code].
  • Если вопрос связан с MoonLoader-ом первым делом желательно поискать решение на wiki.

Частые вопросы

Как научиться писать скрипты? С чего начать?
Информация - Гайд - Всё о Lua скриптинге для MoonLoader(https://blast.hk/threads/22707/)
Как вывести текст на русском? Вместо русского текста у меня какие-то каракули.
Изменить кодировку файла скрипта на Windows-1251. В Atom: комбинация клавиш Ctrl+Shift+U, в Notepad++: меню Кодировки -> Кодировки -> Кириллица -> Windows-1251.
Как получить транспорт, в котором сидит игрок?
Lua:
local veh = storeCarCharIsInNoSave(PLAYER_PED)
Как получить свой id или id другого игрока?
Lua:
local _, id = sampGetPlayerIdByCharHandle(PLAYER_PED) -- получить свой ид
local _, id = sampGetPlayerIdByCharHandle(ped) -- получить ид другого игрока. ped - это хендл персонажа
Как проверить, что строка содержит какой-то текст?
Lua:
if string.find(str, 'текст', 1, true) then
-- строка str содержит "текст"
end
Как эмулировать нажатие игровой клавиши?
Lua:
local game_keys = require 'game.keys' -- где-нибудь в начале скрипта вне функции main

setGameKeyState(game_keys.player.FIREWEAPON, -1) -- будет сэмулировано нажатие клавиши атаки
Все иды клавиш находятся в файле moonloader/lib/game/keys.lua.
Подробнее о функции setGameKeyState здесь: lua - setgamekeystate | BlastHack — DEV_WIKI(https://www.blast.hk/wiki/lua:setgamekeystate)
Как получить id другого игрока, в которого целюсь я?
Lua:
local valid, ped = getCharPlayerIsTargeting(PLAYER_HANDLE) -- получить хендл персонажа, в которого целится игрок
if valid and doesCharExist(ped) then -- если цель есть и персонаж существует
  local result, id = sampGetPlayerIdByCharHandle(ped) -- получить samp-ид игрока по хендлу персонажа
  if result then -- проверить, прошло ли получение ида успешно
    -- здесь любые действия с полученным идом игрока
  end
end
Как зарегистрировать команду чата SAMP?
Lua:
-- До бесконечного цикла/задержки
sampRegisterChatCommand("mycommand", function (param)
     -- param будет содержать весь текст введенный после команды, чтобы разделить его на аргументы используйте string.match()
    sampAddChatMessage("MyCMD", -1)
end)
Крашит игру при вызове sampSendChat. Как это исправить?
Это происходит из-за бага в SAMPFUNCS, когда производится попытка отправки пакета определенными функциями изнутри события исходящих RPC и пакетов. Исправления для этого бага нет, но есть способ не провоцировать его. Вызов sampSendChat изнутри обработчика исходящих RPC/пакетов нужно обернуть в скриптовый поток с нулевой задержкой:
Lua:
function onSendRpc(id)
  -- крашит:
  -- sampSendChat('Send RPC: ' .. id)

  -- норм:
  lua_thread.create(function()
    wait(0)
    sampSendChat('Send RPC: ' .. id)
  end)
end
 
Последнее редактирование:

blzlchk

Активный
152
33
Спасибо, а можно ещё кое что? как сделать сразу несколько команд, ну вот вообще любую команду. Покажи пожалуйста просто примерный код
у тебя же пример есть, регистрация команды с использованием команды и название функции, в функции пишешь, какую команду вызываешь
 

Vintik

Через тернии к звёздам
Проверенный
1,526
1,011

Curtis

Участник
282
10
Как сделать запрет, чтобы не открывалось пауза меню игры?
 

mzxer

Активный
83
119
Как сделать запрет, чтобы не открывалось пауза меню игры?
самый простой способ - "отменять" нажатие escape
Lua:
local wm = require("windows.message")

function main()
    if not isSampLoaded() then return end
    while not isSampAvailable() do wait(100) end
    
    addEventHandler("onWindowMessage", function(msg, wparam, lparam)
        if msg == wm.WM_KEYDOWN or msg == wm.WM_SYSKEYDOWN then
            if wparam == 27 then -- escape
                consumeWindowMessage()
            end
        end
    end)
    
    wait(-1)
end
 
  • Нравится
Реакции: Yakushizz и Curtis

Curtis

Участник
282
10
Как сделать, чтобы в HotKey можно было оставить без клавиши, т.е No, т.к сейчас у емня обазательна клавиша
 

tsunamiqq

Участник
433
17
Как пофиксить то, чего нет в строке?
Lua:
')' expected near 'Moonloader'
Lua:
script_name('FamilyHelper v 1.0')
script_author('Lycorn')
script_description('FamilyHelper v 1.0')
script_version('1.0')
require 'lib.moonloader'
local imgui = require 'imgui'
local key = require 'vkeys'
local encoding = require ('encoding')
local inicfg = require 'inicfg'
local directIni = 'moonloader\\config\\famhelper.ini'
local mainIni = inicfg.load(nil, directIni)
encoding.default = 'CP1251'
u8 = encoding.UTF8
local flooder1 = imgui.ImBuffer(256)
local flooder2 = imgui.ImBuffer(256)
local flooder3 = imgui.ImBuffer(256)
local flooder4 = imgui.ImBuffer(256)
local timer1 = imgui.ImBuffer(256)
local timer2 = imgui.ImBuffer(256)
local timer3 = imgui.ImBuffer(256)
local timer4 = imgui.ImBuffer(256)
local money = imgui.ImInt(50000)
local mainIni = inicfg.load(nil, directIni)
local stateIni = inicfg.save(mainIni, directIni)
local status = inicfg.load(mainIni, directIni)
local act = 0
local checked1 = imgui.ImBool(false)
local checked2 = imgui.ImBool(false)
local checked3 = imgui.ImBool(false)
local checked4 = imgui.ImBool(false)
function apply_custom_style()
    local style = imgui.GetStyle()
    local colors = style.Colors
    local clr = imgui.Col
    local ImVec4 = imgui.ImVec4
    colors[clr.Button] = ImVec4(0.59, 0.13, 0.13, 1.00)
    colors[clr.ButtonHovered] = ImVec4(0.69, 0.15, 0.15, 1.00)
    colors[clr.ButtonActive] = ImVec4(0.67, 0.13, 0.07, 1.00)
end
apply_custom_style()
local main_window_state = imgui.ImBool(false)
local interaction_window_state = imgui.ImBool(false)
local rank = imgui.ImBool(false)
local givemoney = imgui.ImBool(false)
local checkbox = imgui.ImBool(false)
function imgui.OnDrawFrame()
local iScreenWidth, iScreenHeight = getScreenResolution()
local btn_size = imgui.ImVec2(-1, 0)
    if main_window_state.v then
    imgui.SetNextWindowSize(imgui.ImVec2(1000, 500), imgui.Cond.FirstUseEver)
    imgui.Begin('Family Helper', main_window_state, imgui.WindowFlags.NoResize + imgui.WindowFlags.NoCollapse)
    imgui.BeginChild('##121', imgui.ImVec2(200, 465), true)
    if imgui.Button('Управление участниками', imgui.ImVec2(-1, 53), main_window_state) then menu = 0 end
    if imgui.Button('Для участников семей', imgui.ImVec2(-1, 53), main_window_state) then menu = 1 end
    if imgui.Button('Для лидеров, замов', imgui.ImVec2(-1, 53), main_window_state) then menu = 2 end
    if imgui.Button('О скрипте', imgui.ImVec2(-1, 53), main_window_state) then menu = 3 end
    if imgui.Button('Правила', imgui.ImVec2(-1, 53), main_window_state) then menu = 4 end
    if imgui.Button('Список команд', imgui.ImVec2(-1, 53), main_window_state) then menu = 5 end
    if imgui.Button('Настройки', imgui.ImVec2(-1, 53), main_window_state) then menu = 6 end
    if imgui.Button('Биндер/Флудер', imgui.ImVec2(-1, 53), main_window_state) then menu = 7 end
    imgui.EndChild()
    imgui.SameLine()
    if menu == 0 then
        imgui.BeginChild('##once', imgui.ImVec2(775, 465), true)
        imgui.Text('')
        imgui.EndChild()
    elseif menu == 1 then
        imgui.BeginChild('##twice', imgui.ImVec2(775, 465), true)
        if imgui.Button('Список системы повышения') then
            rank.v = true
        end
        imgui.EndChild()
    elseif menu == 2 then
        imgui.BeginChild('##twice2', imgui.ImVec2(775, 465), true)
        imgui.Text('')
        imgui.EndChild()
    elseif menu == 3 then
        imgui.BeginChild('##twice3', imgui.ImVec2(775, 465), true)
        imgui.Text('FamHelper - это скрипт который упрощает игру игрокам из семьи, так же их руководителям.')
        imgui.Text('В скрипте присутствует много разных плюшек, таких как система повышений, пиар, настройки для игры, плюшки для руководителей семей, и т.д')
        imgui.Text('Автор скрипта: Lycorn. Помощник: Adam_Karleone', main_window_state)
        imgui.Text('ВК - @lcn.maks', main_window_state)
        imgui.Text('Пишите в вк о багам, или предложением к обновлению.', main_window_state)
        imgui.EndChild()
    elseif menu == 4 then
        imgui.BeginChild('##twice', imgui.ImVec2(775, 465), true)
        imgui.Text('')
        imgui.EndChild()
    elseif menu == 5 then
        imgui.BeginChild('##twice', imgui.ImVec2(775, 465), true)
        imgui.Text('/famh - Открытие меню')
        imgui.Text('PKM(при наводке на игрока) + E - Открытие меню взаимодействие с игроком')
        imgui.EndChild()
    elseif menu == 6 then
        imgui.BeginChild('##twice', imgui.ImVec2(775, 465), true)
        imgui.EndChild()
    elseif menu == 7 then
        imgui.BeginChild('##twice', imgui.ImVec2(775, 465), true)
        imgui.Text('                                                                                                 Биндер:')
        imgui.Separator()
        imgui.InputText('Введите текст для пиара в /fam чат', flooder1)
        if imgui.Checkbox('Save1', flooder1) then
            mainIni.config.text = tostring(u8:decode(flooder1.v))
            if inicfg.save(mainIni, directIni) then
                saveIniFile()
        end
        imgui.SameLine()
        if imgui.Button('Отправить в /fam') then
            sampSendChat(u8:decode(flooder1.v))
        end
        imgui.SameLine()
        imgui.InputText('Задержка', timer1)
        mainIni.config.text3 = tostring(u8:decode(timer1.v))
        if inicfg.save(mainIni, directIni) then
            saveIniFile()
        end
        imgui.InputText('Введите текст для пиара в /vr чат', flooder2)
        if imgui.Checkbox('Save2', flooder2) then
            mainIni.config.text2 = tostring(u8:decode(flooder2.v))
            if inicfg.save(mainIni, directIni) then
                saveIniFile()
        end
        imgui.SameLine()
        if imgui.Button('Отправить в /vr') then
            sampSendChat(u8:decode(flooder2.v))
        end
        imgui.SameLine()
        imgui.InputText('Задержка', timer2)
        mainIni.config.text3 = tostring(u8:decode(timer2.v))
            if inicfg.save(mainIni, directIni) then
                saveIniFile()
        end
        imgui.InputText('Введите текст для пиара в /j чат', flooder3)
        if imgui.Checkbox('Save3', flooder3) then
            mainIni.config.text3 = tostring(u8:decode(flooder3.v))
            if inicfg.save(mainIni, directIni) then
                saveIniFile()
        end
        imgui.SameLine()
        if imgui.Button('Отправить в /j') then
            sampSendChat(u8:decode(flooder3.v))
        end
        imgui.SameLine()
        imgui.InputText('Задержка', timer3)
        mainIni.config.text3 = tostring(u8:decode(timer3.v))
        if inicfg.save(mainIni, directIni) then
            saveIniFile()
        end
        imgui.InputText('Введите текст для пиара в /s чат', flooder4)
        if imgui.Checkbox('Save4', flooder4) then
            mainIni.config.text2 = tostring(u8:decode(flooder4.v))
            if inicfg.save(mainIni, directIni) then
                saveIniFile()
        end
        imgui.SameLine()
        if imgui.Button('Отправить в /s') then
            sampSendChat(u8:decode(flooder4.v))
        end
        imgui.SameLine()
        imgui.InputText('Задержка', timer4)
        mainIni.config.text3 = tostring(u8:decode(timer4.v))
            if inicfg.save(mainIni, directIni) then
                saveIniFile()
        end
        imgui.EndChild()
        menu = 7
    end
    imgui.End()
    end
       
    function imgui.CenterColumnText(text)
        imgui.SetCursorPosX((imgui.GetColumnOffset() + (imgui.GetColumnWidth() / 2)) - imgui.CalcTextSize(text).x / 2)
        imgui.Text(text)
    end

    function saveIniFile()
        local inicfgsaveparam = inicfg.save(mainIni,path_ini)
    end
    saveIniFile()
    if interaction_window_state.v then
        imgui.SetNextWindowSize(imgui.ImVec2(900, 350), imgui.Cond.FirstUseEver)
        imgui.Begin(u8'Взаимодействие с игроком', interaction_window_state, imgui.WindowFlags.NoResize + imgui.WindowFlags.NoCollapse)
        imgui.BeginChild('##121', imgui.ImVec2(270, 300), true)
        imgui.Text(u8(sampGetPlayerNickname(actionId)))
        imgui.Separator()
        imgui.Columns(2, "columns", true)
        imgui.CenterColumnText('Уровень:', main_window_state)
        imgui.NextColumn()
        imgui.CenterColumnText(u8(sampGetPlayerScore(actionId)))
        imgui.Separator()
        imgui.NextColumn()
        imgui.CenterColumnText('ИД персонажа:', main_window_state)
        imgui.NextColumn()
        imgui.CenterColumnText(u8((actionId)))
        imgui.Separator()
        imgui.NextColumn()
        imgui.CenterColumnText('Фракция:', main_window_state)
        imgui.NextColumn()
        imgui.CenterColumnText(u8(sampGetPlayerOrganisation(actionId)))
        imgui.Separator()
        imgui.NextColumn()
        imgui.CenterColumnText('Здоровье:', main_window_state)
        imgui.NextColumn()
        imgui.CenterColumnText(u8(sampGetPlayerHealth(actionId)))
        imgui.Separator()
        imgui.NextColumn()
        imgui.CenterColumnText('Бронижелет:', main_window_state)
        imgui.NextColumn()
        imgui.CenterColumnText(u8(sampGetPlayerArmor(actionId)))
        imgui.Separator()
        imgui.NextColumn()
        imgui.CenterColumnText('Оружие:', main_window_state)
        imgui.NextColumn()
        imgui.CenterColumnText(u8((actionId)))
        imgui.Separator()
        imgui.NextColumn()
        imgui.CenterColumnText('Пинг:', main_window_state)
        imgui.NextColumn()
        imgui.CenterColumnText(u8(sampGetPlayerPing(actionId)))
        imgui.Separator()
        imgui.NextColumn()
        imgui.CenterColumnText('Скин:', main_window_state)
        imgui.NextColumn()
        imgui.CenterColumnText(u8(sampGetPlayerSkin(actionId)))
        imgui.Separator()
        imgui.NextColumn()
        imgui.CenterColumnText('АФК:', main_window_state)
        imgui.NextColumn()
        imgui.CenterColumnText(u8(sampGetPlayerPause(actionId)))
        imgui.Columns(1)
        imgui.Separator()
        imgui.NextColumn()
        imgui.Text('Интерфейс и идея взята с Interaction Menu', main_window_state)
        imgui.Text('Код сделан с нуля. Не взят с скрипта выше.', main_window_state)
        imgui.Text('Меню подделано к скрипту Family Helper', main_window_state)
        imgui.EndChild()
        imgui.SameLine()
        if act == 0 then
            imgui.BeginChild('##once', imgui.ImVec2(320, 300), true)
            if imgui.Button('Паспорт', imgui.ImVec2(150,25.7)) then
                sampSendChat(u8:decode'/do Паспорт находится в кармане')
                wait(2000)
                sampSendChat(u8:decode'/me сунул(а) руку в карман затем достал паспорт')
                wait(2000)
                sampSendChat(u8:decode'/todo Взял паспорт в руку*затем передал человеку напротив')
                wait(150)
                sampSendChat(u8:decode'/showpass '..actionId)
            end
            imgui.SameLine()
            if imgui.Button('Мед.карта', imgui.ImVec2(150,25.7)) then
                sampSendChat(u8:decode'/do Мед. карточка находится в кармане')
                wait(2000)
                sampSendChat(u8:decode'/me сунул(а) руку в карман затем достал мед.карту')
                wait(2000)
                sampSendChat(u8:decode'/todo Взял карточку в руку*затем передал человеку напротив')
                wait(150)
                sampSendChat(u8:decode'/showmc '..actionId)
            end
            if imgui.Button('Лицензии', imgui.ImVec2(150,25.7)) then
                sampSendChat(u8:decode'/do Документы с лицензиями находится в кармане')
                wait(2000)
                sampSendChat(u8:decode'/me сунул(а) руку в карман затем достал документы')
                wait(2000)
                sampSendChat(u8:decode'/todo Взял документы в руку*затем передал человеку напротив')
                wait(150)
                sampSendChat(u8:decode'/showlic '..actionId)
            end
            imgui.SameLine()
            if imgui.Button('Скиллы', imgui.ImVec2(150,25.7)) then
                sampSendChat(u8:decode'/do Папка с документами находится в кармане')
                wait(2000)
                sampSendChat(u8:decode'/me сунул(а) руку в карман затем достал папку с документами')
                wait(2000)
                sampSendChat(u8:decode'/todo Взял документы в руку*затем передал человеку напротив')
                wait(150)
                sampSendChat(u8:decode'/showskill '..actionId)
            end
            imgui.Button('Передать ганы', imgui.ImVec2(150,25.7))
            imgui.SameLine()
            if imgui.Button('Дать денег$', imgui.ImVec2(150,25.7)) then
                  givemoney.v = true
            else
                  sampAddChatMessage(u8:decode'Вы или игрок, отошли друг от друга, подойдите ближе.')
                  closeAll()
               end
            end
            if imgui.Button('T        R        A        D        E', imgui.ImVec2(308, 50)) then
                sampSendChat(u8:decode'/trade '..actionId)
            end
            imgui.Button('Принять в Банду', imgui.ImVec2(150,25.7))
                sampSendChat(u8:decode'/do Пакет с одеждой находится в кармане')
                wait(2000)
                sampSendChat(u8:decode'/me сунул(а) руку в карман затем достал одежду')
                wait(2000)
                sampSendChat(u8:decode'/todo Взял одежду в руку*затем передал человеку напротив')
                wait(2000)
                sampSendChat(u8:decode'Возьмите вашу одежду.')
                wait(1500)
                sampSendChat(u8:decode'/invite '..actionId)
            end
            imgui.SameLine()
            if imgui.Button('Уволить с Банды(ПСЖ)', imgui.ImVec2(150,25.7)) then
                sampSendChat(u8:decode'/do Телефон находится в кармане')
                wait(2000)
                sampSendChat(u8:decode'/me сунул(а) руку в карман затем достал телефон')
                wait(2000)
                sampSendChat(u8:decode'/todo Взял телефон в руку*затем зашел в список сотрудников')
                wait(2000)
                sampSendChat(u8:decode'/todo Указал сотрудника*затем стёр его с базы')
                wait(2000)
                sampSendChat(u8:decode'/uninvite'..actionId' ПСЖ')
            end
            if imgui.Button('Выдать ранг в Банде', imgui.ImVec2(150,25.7)) then
                sampSendChat(u8:decode'/do Телефон находится в кармане')
                wait(2000)
                sampSendChat(u8:decode'/me сунул(а) руку в карман затем достал телефон')
                wait(2000)
                sampSendChat(u8:decode'/todo Взял телефон в руку*затем зашел в список сотрудников')
                wait(2000)
                sampSendChat(u8:decode'/todo Указал сотрудника*затем повысил его')
                wait(2000)
                sampSendChat(u8:decode'Возьмите форму, переодевайтесь.')
                sampAddChatMessage(u8:decode'Введите команду /giverank и айди, затем укажите ранг на который хотите повысить игрока.')
            end
            imgui.SameLine()
            imgui.Button('Мут в Банде', imgui.ImVec2(150,25.7)) then
                sampSendChat(u8:decode'/do Телефон находится в кармане')
                wait(2000)
                sampSendChat(u8:decode'/me сунул(а) руку в карман затем достал телефон')
                wait(2000)
                sampSendChat(u8:decode'/todo Взял телефон в руку*затем зашел в список сотрудников')
                wait(2000)
                sampSendChat(u8:decode'/todo Указал сотрудника*затем заглушил его')
                sampAddChatMessage(u8:decode'Введите команду /fmute и айди, затем укажите количество минут на которые хотите заглушить игрока.')
            end
            if imgui.Button('Розмут в банде', imgui.ImVec2(150,25.7)) then
                sampSendChat(u8:decode'/do Телефон находится в кармане')
                wait(2000)
                sampSendChat(u8:decode'/me сунул(а) руку в карман затем достал телефон')
                wait(2000)
                sampSendChat(u8:decode'/todo Взял телефон в руку*затем зашел в список сотрудников')
                wait(2000)
                sampSendChat(u8:decode'/todo Указал сотрудника*затем снял заглушку с него.')
                wait(1500)
                sampSendChat(u8:decode'/funmute '..actionId)
            end
            imgui.SameLine()
            if imgui.Button('Принять в семью', imgui.ImVec2(150,25.7)) then
                sampSendChat(u8:decode'/do Пакет с одеждой "Continental" находится в кармане')
                wait(2000)
                sampSendChat(u8:decode'/me сунул(а) руку в карман затем достал одежду')
                wait(2000)
                sampSendChat(u8:decode'/todo Взял одежду в руку*затем передал человеку напротив')
                wait(2000)
                sampSendChat(u8:decode'Возьмите вашу одежду.')
                wait(1500)
                sampSendChat(u8:decode'/faminvite '..actionId)
            end
            if imgui.Button('Уволить из семьи', imgui.ImVec2(150,25.7)) then
                sampSendChat(u8:decode'/do Телефон находится в кармане')
                wait(2000)
                sampSendChat(u8:decode'/me сунул(а) руку в карман затем достал телефон')
                wait(2000)
                sampSendChat(u8:decode'/todo Взял телефон в руку*затем зашел в список сотрудников')
                wait(2000)
                sampSendChat(u8:decode'/todo Указал сотрудника*затем стёр его с базы')
                sampAddChatMessage('Введите команду /famuninvite и айди, затем укажите причину увольнения игрока.')
            end
            imgui.SameLine()
            if imgui.Button('Выдать ранг в семьи', imgui.ImVec2(150,25.7)) then
                sampSendChat(u8:decode'/do Телефон находится в кармане')
                wait(2000)
                sampSendChat(u8:decode'/me сунул(а) руку в карман затем достал телефон')
                wait(2000)
                sampSendChat(u8:decode'/todo Взял телефон в руку*затем зашел в список сотрудников')
                wait(2000)
                sampSendChat(u8:decode'/todo Указал сотрудника*затем повысил его')
                sampAddChatMessage(u8:decode'Введите команду /giverankfam и айди, затем укажите ранг на который хотите повысить игрока.')
            end
            if imgui.Button('Мут в семье', imgui.ImVec2(150,25.7)) then
                sampSendChat(u8:decode'/do Телефон находится в кармане')
                wait(2000)
                sampSendChat(u8:decode'/me сунул(а) руку в карман затем достал телефон')
                wait(2000)
                sampSendChat(u8:decode'/todo Взял телефон в руку*затем зашел в список сотрудников')
                wait(2000)
                sampSendChat(u8:decode'/todo Указал сотрудника*затем заглушил его')
                sampAddChatMessage(u8:decode'Введите команду /fammute и айди, затем укажите количество минут на которые хотите заглушить игрока.')
            end
            imgui.SameLine()
            if imgui.Button('Розмут в семье', imgui.ImVec2(150,25.7)) then
                sampSendChat(u8:decode'/do Телефон находится в кармане')
                wait(2000)
                sampSendChat(u8:decode'/me сунул(а) руку в карман затем достал телефон')
                wait(2000)
                sampSendChat(u8:decode'/todo Взял телефон в руку*затем зашел в список сотрудников')
                wait(2000)
                sampSendChat(u8:decode'/todo Указал сотрудника*затем снял заглушку с него.')
                wait(1500)
                sampSendChat(u8:decode'/famunmute '..actionId)
            end
            imgui.EndChild()
        imgui.SameLine()
        imgui.BeginChild('##tabs2', imgui.ImVec2(270, 300), true)
        imgui.EndChild()
        imgui.End()
    end
    end
    local id = 0
    if rank.v then
        imgui.SetNextWindowSize(imgui.ImVec2(1000, 500), imgui.Cond.FirstUseEver)
        imgui.Begin('Список повышений', obn_window_state, imgui.WindowFlags.NoResize + imgui.WindowFlags.NoCollapse)
        imgui.Text('Внимательно прочитайте весь текст, да бы не было ни каких ошибок при выполнении.')
        imgui.Separator()
        imgui.Text('Повышение с 1 на 2 ранг:')
        imgui.Text('1. Выполнить 3 любых квеста.')
        imgui.Separator()
        imgui.Text('Повышение с 2 на 3 ранг:')
        imgui.Text('1. Должен быть VIP статус Titan')
        imgui.Text('2. Выполнить 5 любых квестов.')
        imgui.Separator()
        imgui.Text('Повышение с 3 на 4 ранг:')
        imgui.Text('1. Должен быть VIP статус Premium')
        imgui.Text('2. Выполнить 10 любых квестов.')
        imgui.Separator()
        imgui.Text('Повышение с 4 на 5 ранг:')
        imgui.Text('1. Выполнить 20 любых квестов.')
        imgui.Text('2. Должно быть в сумме в имуществе 10.000.000$')
        imgui.Separator()
        imgui.Text('Повышение с 5 на 6 ранг:')
        imgui.Text('1. Выполнить 30 любых квестов.')
        imgui.Text('2. Должно быть в сумме в имуществе 100.000.000$')
        imgui.Separator()
        imgui.Text('Повышение с 6 на 7 ранг:')
        imgui.Text('1. Перевести на баланс семьи или лидеру на счет 1.000.000$')
        imgui.Text('2. Быть адекватным, в нормальных отношениях с лидером/заместителем семьи.')
        imgui.Text('3. Выполнить 50 любых квестов')
        imgui.Separator()
        imgui.Text('Повышение с 7 на 8 ранг:')
        imgui.Text('1. Перевести на баланс семьи или лидеру на счет 2.000.000$')
        imgui.Text('2. Выполнить 100 любых квестов.')
        imgui.Text('3. Сменить свою фамилию, на название семьи(По типу: Имя_Continental)')
        imgui.Separator()
        imgui.Text('Повышение с 8 на 9 ранг:')
        imgui.Text('Данный ранг могут получить только заместители семьи.')
        imgui.Separator()
        imgui.Text('Повышение с 9 на 10 ранг:')
        imgui.Text('Данный ранг может получить только лидер семьи.')
        imgui.End()
    end
    if givemoney.v then
        imgui.SetNextWindowSize(imgui.ImVec2(1000, 500), imgui.Cond.FirstUseEver)
        imgui.Begin('Выдача денег', obn_window_state, imgui.WindowFlags.NoResize + imgui.WindowFlags.NoCollapse)
        if imgui.Button('Дать 10k', imgui.ImVec2(50,20), main_window_state) then
            sampSendChat('/pay '..actionId' 10000')
            givemoney.v = false
            interaction_window_state.v = true
        end
        if imgui.Button('Дать 20k', imgui.ImVec2(50,20), main_window_state) then
            sampSendChat('/pay '..actionId' 20000')
            givemoney.v = false
            interaction_window_state.v = true
        end
        if imgui.Button('Дать 30k', imgui.ImVec2(50,20), main_window_state) then
            sampSendChat('/pay '..actionId' 30000')
            givemoney.v = false
            interaction_window_state.v = true
        end
        if imgui.Button('Дать 40k', imgui.ImVec2(50,20), main_window_state) then
            sampSendChat('/pay '..actionId' 40000')
            givemoney.v = false
            interaction_window_state.v = true
        end
        if imgui.Button('Дать 50k', imgui.ImVec2(50,20), main_window_state) then
            sampSendChat('/pay '..actionId' 50000')
            givemoney.v = false
            interaction_window_state.v = true
        end
        imgui.Separator()
        imgui.Text('Введите свою сумму')
        imgui.InputText('##givemoney', money)
        if money.v > 50000 then money.v = 50000 end
        if money.v < 1 then money.v = 1 end
        if imgui.Button('Передать деньги', imgui.ImVec2(50,20), , main_window_state) then
            sampSendChat('/pay '..actionId' '..money.v)
        if imgui.Button('Назад', imgui.ImVec2(50,20), main_window_state) then
            givemoney.v = false
            interaction_window_state.v = true
    end
function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end
    sampAddChatMessage(u8:decode'[FamHelper] Автор скрипта: Lycorn. Помощник: Adam_Karleone', 0x00BFFF)
    sampAddChatMessage(u8:decode'[FamHelper] Есть вопросы? ВК - lcn.maks', 0x00BFFF)
    sampAddChatMessage(u8:decode'[FamHelper] Активация хелпера: /famh', 0x00BFFF)
    sampAddChatMessage(u8:decode'[FamHelper] Нашли баг, или не доработку? Пишите в ВК', 0x00BFFF)
    sampRegisterChatCommand('famh', function() main_window_state.v = not main_window_state.v end)
    while true do wait(0)
        local valid, ped = getCharPlayerIsTargeting(PLAYER_HANDLE)
        if valid and doesCharExist(ped) then
            local result, id = sampGetPlayerIdByCharHandle(ped)
            if result and isKeyJustPressed(VK_E) then
                interaction_window_state.v = true
                actionId = id
            end
        end
        if checkbox.v then
            printStringNow('test', 1000)
        end
        imgui.Process = main_window_state.v or interaction_window_state.v or rank.v or givemoney.v
    end
end
function imgui.CenterTextColoredRGB(text)
    local width = imgui.GetWindowWidth()
    local style = imgui.GetStyle()
    local colors = style.Colors
    local ImVec4 = imgui.ImVec4
    end   
function yellowbtn()
        imgui.PushStyleColor(imgui.Col.Text, imgui.ImVec4(0, 0, 0, 0.8))
        imgui.PushStyleColor(imgui.Col.Button, imgui.ImVec4(1, 0.6, 0, 1))
        imgui.PushStyleColor(imgui.Col.ButtonHovered, imgui.ImVec4(1, 0.5, 0, 1))
        imgui.PushStyleColor(imgui.Col.ButtonActive, imgui.ImVec4(1, 0.4, 0, 1))
    end
function endbtn()
        imgui.PopStyleColor(4)
        style()
    end
   
function greybtn()
        imgui.PushStyleColor(imgui.Col.Button, imgui.ImVec4(0.4, 0.4, 0.4, 1))
        imgui.PushStyleColor(imgui.Col.ButtonHovered, imgui.ImVec4(0.3, 0.3, 0.3, 1))
        imgui.PushStyleColor(imgui.Col.ButtonActive, imgui.ImVec4(0.2, 0.2, 0.2, 1))
    end
   
function sampGetPlayerSkin(id)
    result, pedHandle = sampGetCharHandleBySampPlayerId(id)
    if result then
        skinId = getCharModel(pedHandle)
        return skinId
    end
end
function sampGetPlayerPause(playerId)
    if sampIsPlayerPaused(playerId) then
        return tostring('АФК', main_window_state)
    else
        return tostring('Не АФК', main_window_state)
    end
end
function sampGetPlayerOrganisation(playerId)
    if sampGetPlayerColor(actionId) == 2147502591 then
        return tostring('Полиция', main_window_state)
    end
    if sampGetPlayerColor(actionId) == 2164227710 then
        return tostring('Больница', main_window_state)
    end
    if sampGetPlayerColor(actionId) == 2160918272 then
        return tostring('Мэрия', main_window_state)
    end
    if sampGetPlayerColor(actionId) == 2157536819 then
        return tostring('Армия/ТСР', main_window_state)
    end
    if sampGetPlayerColor(actionId) == 2164221491 then
        return tostring('Автошкола', main_window_state)
    end
    if sampGetPlayerColor(actionId) == 2164228096 then
        return tostring('СМИ', main_window_state)
    end
    if sampGetPlayerColor(actionId) == 2150206647 then
        return tostring('Банк ЛС', main_window_state)
    end
    if sampGetPlayerColor(actionId) == 2566951719 then
        return tostring('Groove', main_window_state)
    end
    if sampGetPlayerColor(actionId) == 2580667164 then
        return tostring('Vagos', main_window_state)
    end
    if sampGetPlayerColor(actionId) == 2580283596 then
        return tostring('Ballas', main_window_state)
    end
    if sampGetPlayerColor(actionId) == 2566979554 then
        return tostring('Aztec', main_window_state)
    end
    if sampGetPlayerColor(actionId) == 2573625087 then
        return tostring('Rifa', main_window_state)
    end
    if sampGetPlayerColor(actionId) == 2155832420 then
        return tostring('N.Wolves', main_window_state)
    end
    if sampGetPlayerColor(actionId) == 2573625087 then
        return tostring('Yakuza', main_window_state)
    end
    if sampGetPlayerColor(actionId) == 2150852249 then
        return tostring('Рус. Мафия', main_window_state)
    end
    if sampGetPlayerColor(actionId) == 2157523814 then
        return tostring('LCN', main_window_state)
    end
    if sampGetPlayerColor(actionId) == 23486046 then
        return tostring('*В маске*', main_window_state)
    end
    if sampGetPlayerColor(actionId) == 2149720609 then
        return tostring('Хитманы', main_window_state)
    end
    return tostring('Не состоит', main_window_state)
end
function apply_custom_style()
    local style = imgui.GetStyle()
    local colors = style.Colors
    local clr = imgui.Col
    local ImVec4 = imgui.ImVec4
            colors[clr.Text]                 = ImVec4(1.00, 1.00, 1.00, 0.78)
            colors[clr.TextDisabled]         = ImVec4(1.00, 1.00, 1.00, 1.00)
            colors[clr.WindowBg]             = ImVec4(0.11, 0.15, 0.17, 1.00)
            colors[clr.ChildWindowBg]        = ImVec4(0.15, 0.18, 0.22, 1.00)
            colors[clr.PopupBg]              = ImVec4(0.08, 0.08, 0.08, 0.94)
            colors[clr.Border]               = ImVec4(0.43, 0.43, 0.50, 0.50)
            colors[clr.BorderShadow]         = ImVec4(0.00, 0.00, 0.00, 0.00)
            colors[clr.FrameBg]              = ImVec4(0.20, 0.25, 0.29, 1.00)
            colors[clr.FrameBgHovered]       = ImVec4(0.12, 0.20, 0.28, 1.00)
            colors[clr.FrameBgActive]        = ImVec4(0.09, 0.12, 0.14, 1.00)
            colors[clr.TitleBg]              = ImVec4(0.53, 0.20, 0.16, 0.65)
            colors[clr.TitleBgActive]        = ImVec4(0.56, 0.14, 0.14, 1.00)
            colors[clr.TitleBgCollapsed]     = ImVec4(0.00, 0.00, 0.00, 0.51)
            colors[clr.MenuBarBg]            = ImVec4(0.15, 0.18, 0.22, 1.00)
            colors[clr.ScrollbarBg]          = ImVec4(0.02, 0.02, 0.02, 0.39)
            colors[clr.ScrollbarGrab]        = ImVec4(0.20, 0.25, 0.29, 1.00)
            colors[clr.ScrollbarGrabHovered] = ImVec4(0.18, 0.22, 0.25, 1.00)
            colors[clr.ScrollbarGrabActive]  = ImVec4(0.09, 0.21, 0.31, 1.00)
            colors[clr.ComboBg]              = ImVec4(0.20, 0.25, 0.29, 1.00)
            colors[clr.CheckMark]            = ImVec4(1.00, 0.28, 0.28, 1.00)
            colors[clr.SliderGrab]           = ImVec4(0.64, 0.14, 0.14, 1.00)
            colors[clr.SliderGrabActive]     = ImVec4(1.00, 0.37, 0.37, 1.00)
            colors[clr.Button]               = ImVec4(0.59, 0.13, 0.13, 1.00)
            colors[clr.ButtonHovered]        = ImVec4(0.69, 0.15, 0.15, 1.00)
            colors[clr.ButtonActive]         = ImVec4(0.67, 0.13, 0.07, 1.00)
            colors[clr.Header]               = ImVec4(0.20, 0.25, 0.29, 0.55)
            colors[clr.HeaderHovered]        = ImVec4(0.98, 0.38, 0.26, 0.80)
            colors[clr.HeaderActive]         = ImVec4(0.98, 0.26, 0.26, 1.00)
            colors[clr.Separator]            = ImVec4(0.50, 0.50, 0.50, 1.00)
            colors[clr.SeparatorHovered]     = ImVec4(0.60, 0.60, 0.70, 1.00)
            colors[clr.SeparatorActive]      = ImVec4(0.70, 0.70, 0.90, 1.00)
            colors[clr.ResizeGrip]           = ImVec4(0.26, 0.59, 0.98, 0.25)
            colors[clr.ResizeGripHovered]    = ImVec4(0.26, 0.59, 0.98, 0.67)
            colors[clr.ResizeGripActive]     = ImVec4(0.06, 0.05, 0.07, 1.00)
            colors[clr.CloseButton]          = ImVec4(0.40, 0.39, 0.38, 0.16)
            colors[clr.CloseButtonHovered]   = ImVec4(0.40, 0.39, 0.38, 0.39)
            colors[clr.CloseButtonActive]    = ImVec4(0.40, 0.39, 0.38, 1.00)
            colors[clr.PlotLines]            = ImVec4(0.61, 0.61, 0.61, 1.00)
            colors[clr.PlotLinesHovered]     = ImVec4(1.00, 0.43, 0.35, 1.00)
            colors[clr.PlotHistogram]        = ImVec4(0.90, 0.70, 0.00, 1.00)
            colors[clr.PlotHistogramHovered] = ImVec4(1.00, 0.60, 0.00, 1.00)
            colors[clr.TextSelectedBg]       = ImVec4(0.25, 1.00, 0.00, 0.43)
            colors[clr.ModalWindowDarkening] = ImVec4(1.00, 0.98, 0.95, 0.73)
        end
        apply_custom_style()
Я установил 5.4.1-final и у меня установилась папка я взял скрипт SAMPFUNCS.asi и вставил в папку с игрой после запуска игры папка SAMPFUNCS не появилась
SAMPFUNCS.asi это не скрипт а файл, и в этой версии которую ты установил, устанавливается другая папка, возьми версию по ниже.
 
Последнее редактирование:

Curtis

Участник
282
10
Как сделать, чтобы клавиши Hotkey не срабатывали при открытом диалоге ?