Вопросы по 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
 
Последнее редактирование:

[SA ARZ]

Известный
390
8
Там где у тебя не работает

клавиша F12 и команда /neupd в main

Lua:
function main()
    if not isSampfuncsLoaded() or not isSampLoaded() then return end
      while not isSampAvailable() do wait(1000) end
    math.randomseed(os.time())
    sampAddChatMessage("{FFF666}[NE]: {FFFFFF}Текущая версия: {FFFF66}"..thisScript().version.." {FFFFFF}| {FFFF66}NewsEditor", 0xFFFFFF)
    sampAddChatMessage("{FFF666}[NE]: {FFFFFF}Авторы данного скрипта {FFFF66}Family Galliardi inc", 0xFFFFFF)
    while not sampIsLocalPlayerSpawned() do wait(0) end
    local _, id = sampGetPlayerIdByCharHandle(PLAYER_PED)
    while sampGetPlayerScore(id) == 0 do wait(0) end
    nick = sampGetPlayerNickname(id)
    color = string.format("%06X", ARGBtoRGB(sampGetPlayerColor(id)))
    sampRegisterChatCommand('r', RadioR)
      sampRegisterChatCommand('rn', RadioRNonRP)
      sampRegisterChatCommand('f', RadioF)
      sampRegisterChatCommand('fn', RadioFNonRP)
    sampRegisterChatCommand('neupd', scriptmenu)
    sampRegisterChatCommand('show', ShporaList)
    sampRegisterChatCommand('invite', InviteRP)
    sampRegisterChatCommand('fwarn', FWarnRP)
    sampRegisterChatCommand('fwarnoff', FWarnoffRP)
    sampRegisterChatCommand('unfwarn', UnFWarnRP)
    sampRegisterChatCommand('rang', RangRP)
    sampRegisterChatCommand('uninvite', UninviteRP)
    sampRegisterChatCommand('ether', EtherRP)
    sampRegisterChatCommand('sellpaper', PaperRP)
    sampRegisterChatCommand('tent', TentRP)
    sampRegisterChatCommand('satellite', SatelliteRP)
    sampRegisterChatCommand('gazet', PapersRP)
    sampRegisterChatCommand('rep', cmd_rep)
    sampRegisterChatCommand('ln', LNChatOOC)
    sampRegisterChatCommand('sobes', SobesMenu)
    sampRegisterChatCommand('settimes', function()
            isMove = true
        end)
    wait(4000)
    if color == 'FF4F00' then
          sampSendChat('/stats')
          regDialogOpen = 1
    elseif nick == "Arkady_Volkov" then
        regDialogOpen = 000
    else
        sampAddChatMessage("{FFF666}[NE]: {FFFFFF}Данный скрипт работает только для: {FF4F00}Mass Media Amber", 0xFFFFFF)
        thisScript():unload()
    end
    if doesDirectoryExist(getGameDirectory() .. "\\moonloader\\resource\\NewsEditor") then
        print('File yes, good game.')
    else
        lua_thread.create(function()
        sampAddChatMessage("{FFF666}[NE]: {FFFFFF}Идёт настройка скрипта...", 0xFFFFFF) 
        createDirectory(getGameDirectory() .. "\\moonloader\\resource\\NewsEditor")
        print("NewsEditor: Папка NewsEditor создана.")
        createDirectory(getGameDirectory() .. "\\moonloader\\resource\\NewsEditor\\files")
        print("NewsEditor: Папка Files создана.")
        createDirectory(getGameDirectory() .. "\\moonloader\\resource\\NewsEditor\\files\\Other")
        print("NewsEditor: Папка Other создана.")
        createDirectory(getGameDirectory() .. "\\moonloader\\resource\\NewsEditor\\files\\LS")
        print("NewsEditor: Папка LS создана.")
        createDirectory(getGameDirectory() .. "\\moonloader\\resource\\NewsEditor\\files\\LV")
        print("NewsEditor: Папка LV создана.")
        createDirectory(getGameDirectory() .. "\\moonloader\\resource\\NewsEditor\\files\\SF")
        print("NewsEditor: Папка SF создана.")
        createDirectory(getGameDirectory() .. "\\moonloader\\resource\\NewsEditor\\files\\Other\\ПРО")
        print("NewsEditor: Папка ПРО создана.")
        createDirectory(getGameDirectory() .. "\\moonloader\\resource\\NewsEditor\\files\\Other\\ПРЭ")
        print("NewsEditor: Папка ПРЭ создана.")
        createDirectory(getGameDirectory() .. "\\moonloader\\resource\\NewsEditor\\files\\Other\\ППГ")
        print("NewsEditor: Папка ППГ создана.")
        createDirectory(getGameDirectory() .. "\\moonloader\\resource\\NewsEditor\\files\\Other\\ППТ")
        print("NewsEditor: Папка ППТ создана.")
        createDirectory(getGameDirectory() .. "\\moonloader\\resource\\NewsEditor\\files\\Other\\ПРБ")
        print("NewsEditor: Папка ПРБ создана.")
        end)
        sampAddChatMessage("{FFF666}[NE]: {FFFFFF}Идёт загрузка файлов...", 0xFFFFFF)
    end
    if updateScript == true then
        update()
        while update ~= false do wait(100) end
    end
    lua_thread.create(function()
        sec, min, hour = 0, 0, 0
        while true do wait(0)
            wait(1000)
            sec = sec + 1
            if sec == 60 then
                sec = 0
                min = min + 1
            end
            if min == 60 then
                min = 0
                hour = hour + 1
            end
        end
    end)
    menuupdate()
    random_messages()
    updateShpora()
    while true do wait(0)
        imgui.Process = Main_News.v or StatsPlayers.v or CommandsDostup.v or SetttingsMenu.v or EditorSMS.v or EditorADS.v or InfoCars.v
        if isMove then
            sampSetCursorMode(2)
            local cursorPosX, cursorPosY = getCursorPos()
            settings.options.infoX, settings.options.infoY = cursorPosX, cursorPosY
            if isKeyJustPressed(0x01) then
                inicfg.save(settings, 'NewsEditor.ini')
                sampSetCursorMode(0)
                isMove = false
            end
        end
        if menutrigger ~= nil then
            menu()
            menutrigger = nil
        end
        if not sampIsChatInputActive() and not sampIsDialogActive() and not sampIsScoreboardOpen() and not isSampfuncsConsoleActive() then
            if wasKeyPressed(key.VK_F12) then Main_News.v = not Main_News.v end
        end
        renderFontDrawText(my_font, "{F3F3F3}До PayDay осталось: {FFFF66}"..59-os.date('%M').." {F3F3F3}минут. {FFFF66}"..60-os.date('%S').."{F3F3F3} секунд.", settings.options.infoX, settings.options.infoY, 0xFFFFFFFF)
        renderFontDrawText(my_font, "{F3F3F3}Время: {FFFF66}"..os.date('%H:%M:%S').." {F3F3F3}| Дата: {FFFF66}"..os.date('%d %B %Y г.'), settings.options.infoX, settings.options.infoY + 20, 0xFFFFFFFF)
        local result1, button, list, input = sampHasDialogRespond(1000) -- 1/7
        local result2, button, list, input = sampHasDialogRespond(1001) -- 2/7
        local result3, button, list, input = sampHasDialogRespond(1002) -- 3/7
        local result4, button, list, input = sampHasDialogRespond(1003) -- 4/7
        local result5, button, list, input = sampHasDialogRespond(1004) -- 5/7
        local result6, button, list, input = sampHasDialogRespond(1005) -- 6/7
        local result7, button, list, input = sampHasDialogRespond(1006) -- 7/7
        local result9, Button, list, input = sampHasDialogRespond(1009) -- Причина отказа
        local result10, Button, list, input = sampHasDialogRespond(1010) -- Причина отказа
        if result1 then
            if button == 1 and list == 0 then
                Sobes2:run()
            elseif button == 1 and list == 1 then
                sampAddChatMessage("{FFF666}[NE]: {FFFFFF}Собеседование отменено!", 0xFFFFFF)
              end
        end
        if result2 then
            if button == 1 and list == 0 then
                Sobes3:run()
            elseif button == 1 and list == 1 then
                sampShowDialog(1009, '{FF4F00}Панель - {FFFF66}собеседования {FFFFFF}| Этапы: {FFFF66}2 / 7 [ ОТКАЗ ]', '{FF0000}[!] {FFFF66}Бредит {FFFFFF}(Нарушение MG)', 'Выбрать', '', 2)
              end
        end
        if result3 then
            if button == 1 and list == 0 then
                Sobes4:run()
            elseif button == 1 and list == 1 then
                sampShowDialog(1010, '{FF4F00}Панель - {FFFF66}собеседования {FFFFFF}| Этапы: {FFFF66}3 / 7 [ ОТКАЗ ]', '{FF0000}[!] {FFFF66}Бредит {FFFFFF}(Нарушение MG)\n{FF0000}[!] {FFFF66}Увроень игрока меньше 3-го\n{FF0000}[!] {FFFF66}У игрока не пройден мед. осмотр\n{FF0000}[!] {FFFF66}У игрока нет лицензии на вождение\n{FF0000}[!] {FFFF66}У игрока болезнь\n{FF0000}[!] {FFFF66}Игрок находится в розыске\n{FF0000}[!] {FFFF66}Игрок незаконопослушный {FFFFFF}(Меньше 20 законопослушности)\n{FF0000}[!] {FFFF66}Опечатка в паспорте {FFFFFF}(НонРП ник)', 'Выбрать', '', 2)
              end
        end
        if result4 then
            if button == 1 and list == 0 then
                Sobes5:run()
            elseif button == 1 and list == 1 then
                sampShowDialog(1009, '{FF4F00}Панель - {FFFF66}собеседования {FFFFFF}| Этапы: {FFFF66}4 / 7 [ ОТКАЗ ]', '{FF0000}[!] {FFFF66}Бредит {FFFFFF}(Нарушение MG)', 'Выбрать', '', 2)
               end
        end
        if result10 then
            if button == 1 and list == 0 then
                sampSendChat("К сожалению Вы нам не подходите, Вы бредите.")
                wait(2100)
                sampSendChat("/n Ты MG-шишь.")
                wait(2100)
                sampSendChat("/r Человек на собеседовании с серией паспорта "..pID.." не подходит нам!")
            elseif button == 1 and list == 1 then
                sampSendChat("К сожалению Вы нам не подходите. Вы меньше 3-х лет в нашей федерации.")
                wait(2100)
                sampSendChat("/n В организацию только с 3-го уровня.")
                wait(2100)
                sampSendChat("/r Человек на собеседовании с серией паспорта "..pID.." не подходит нам!")
              elseif button == 1 and list == 2 then
                sampSendChat("К сожалению Вы нам не подходите. Пройдите мед.осмотр.")
                wait(2100)
                sampSendChat("Сделать Вы это можете в любой из больниц федерации.")
                wait(2100)
                sampSendChat("/r Человек на собеседовании с серией паспорта "..pID.." не подходит нам!")
            elseif button == 1 and list == 3 then
                sampSendChat("К сожалению Вы нам не подходите. У Вас отсутствуют права на вождение.")
                wait(2100)
                sampSendChat("Получить Вы их можете в Автошколе.")
                wait(2100)
                sampSendChat("/r Человек на собеседовании с серией паспорта "..pID.." не подходит нам!")
            elseif button == 1 and list == 4 then
                sampSendChat("К сожалению Вы нам не подходите. В Вашей мед.карте написано, что Вы болеете")
                wait(2100)
                sampSendChat("Вылечитесь в любой из больниц федерации и приходите.")
                wait(2100)
                sampSendChat("/r Человек на собеседовании с серией паспорта "..pID.." не подходит нам!")
            elseif button == 1 and list == 5 then
                sampSendChat("Я "..(SexPlayersRP and 'видела' or 'видел').." плакат 'Разыскивается' с Вашим лицом. Мне вызвать полицию?!")
                wait(2100)
                sampSendChat("/n Уровень розыска идите снимайте")
                wait(2100)
                sampSendChat("/r Человек на собеседовании с серией паспорта "..pID.." не подходит нам!")
            elseif button == 1 and list == 6 then
                sampSendChat("К сожалению Вы нам не подходите. Вы незаконопослушны.")
                wait(2100)
                sampSendChat("/n В организацию с 20 законкой.")
                wait(2100)
                sampSendChat("/r Человек на собеседовании с серией паспорта "..pID.." не подходит нам!")
            elseif button == 1 and list == 7 then
                sampSendChat("К сожалению Вы нам не подходите. В паспорте опечатка в Вашем имени.")
                wait(2100)
                sampSendChat("/n У тебя NonRP-ник. Чтобы сменить воспользуйся: /mn -> Смена NonRP ника.")
                wait(2100)
                sampSendChat("/r Человек на собеседовании с серией паспорта "..pID.." не подходит нам!")
              end
        end
        if result5 then
            if button == 1 and list == 0 then
                Sobes6:run()
            elseif button == 1 and list == 1 then
                sampShowDialog(1009, '{FF4F00}SOBES v1.0 {FFFFFF}| {9966cc}Собеседование {FFFFFF}- 5 / 7 [ ОТКАЗ ]', '{FF0000}[!] {FFFF66}Бредит {FFFFFF}(Нарушение MG)', 'Выбрать', 'Закрыть', 2)
            end
        end
        if result6 then
            if button == 1 and list == 0 then
                Sobes7:run()
            elseif button == 1 and list == 1 then
                sampShowDialog(1010, '{FF4F00}SOBES v1.0 {FFFFFF}| {9966cc}Собеседование {FFFFFF}- 6 / 7 [ ОТКАЗ ]', '{FF0000}[!] {FFFF66}Бредит {FFFFFF}(Нарушение MG)\n{FF0000}[!] {FFFF66}Не знание терминов', 'Выбрать', 'Закрыть', 2)
            end
        end
        if result9 then
            if button == 1 and list == 0 then
                sampSendChat("К сожалению Вы нам не подходите, Вы бредите.")
                wait(2100)
                sampSendChat("/n Ты MG-шишь.")
                wait(2100)
                sampSendChat("/r Человек на собеседовании с серией паспорта "..pID.." не подходит нам!")
            end
        end
        if result10 then
            if button == 1 and list == 0 then
                sampSendChat("К сожалению Вы нам не подходите, Вы бредите.")
                wait(2100)
                sampSendChat("/n Ты MG-шишь.")
                wait(2100)
                sampSendChat("/r Человек на собеседовании с серией паспорта "..pID.." не подходит нам!")
            elseif button == 1 and list == 1 then
                sampSendChat("К сожалению Вы нам не подходите.")
                wait(2100)
                sampSendChat("/n Не знаете терминов РП")
                wait(2100)
                sampSendChat("/r Человек на собеседовании с серией паспорта "..pID.." не подходит нам!")
            end
        end
    end
end
 

ШPEK

Известный
1,476
525
клавиша F12 и команда /neupd в main

Lua:
function main()
    if not isSampfuncsLoaded() or not isSampLoaded() then return end
      while not isSampAvailable() do wait(1000) end
    math.randomseed(os.time())
    sampAddChatMessage("{FFF666}[NE]: {FFFFFF}Текущая версия: {FFFF66}"..thisScript().version.." {FFFFFF}| {FFFF66}NewsEditor", 0xFFFFFF)
    sampAddChatMessage("{FFF666}[NE]: {FFFFFF}Авторы данного скрипта {FFFF66}Family Galliardi inc", 0xFFFFFF)
    while not sampIsLocalPlayerSpawned() do wait(0) end
    local _, id = sampGetPlayerIdByCharHandle(PLAYER_PED)
    while sampGetPlayerScore(id) == 0 do wait(0) end
    nick = sampGetPlayerNickname(id)
    color = string.format("%06X", ARGBtoRGB(sampGetPlayerColor(id)))
    sampRegisterChatCommand('r', RadioR)
      sampRegisterChatCommand('rn', RadioRNonRP)
      sampRegisterChatCommand('f', RadioF)
      sampRegisterChatCommand('fn', RadioFNonRP)
    sampRegisterChatCommand('neupd', scriptmenu)
    sampRegisterChatCommand('show', ShporaList)
    sampRegisterChatCommand('invite', InviteRP)
    sampRegisterChatCommand('fwarn', FWarnRP)
    sampRegisterChatCommand('fwarnoff', FWarnoffRP)
    sampRegisterChatCommand('unfwarn', UnFWarnRP)
    sampRegisterChatCommand('rang', RangRP)
    sampRegisterChatCommand('uninvite', UninviteRP)
    sampRegisterChatCommand('ether', EtherRP)
    sampRegisterChatCommand('sellpaper', PaperRP)
    sampRegisterChatCommand('tent', TentRP)
    sampRegisterChatCommand('satellite', SatelliteRP)
    sampRegisterChatCommand('gazet', PapersRP)
    sampRegisterChatCommand('rep', cmd_rep)
    sampRegisterChatCommand('ln', LNChatOOC)
    sampRegisterChatCommand('sobes', SobesMenu)
    sampRegisterChatCommand('settimes', function()
            isMove = true
        end)
    wait(4000)
    if color == 'FF4F00' then
          sampSendChat('/stats')
          regDialogOpen = 1
    elseif nick == "Arkady_Volkov" then
        regDialogOpen = 000
    else
        sampAddChatMessage("{FFF666}[NE]: {FFFFFF}Данный скрипт работает только для: {FF4F00}Mass Media Amber", 0xFFFFFF)
        thisScript():unload()
    end
    if doesDirectoryExist(getGameDirectory() .. "\\moonloader\\resource\\NewsEditor") then
        print('File yes, good game.')
    else
        lua_thread.create(function()
        sampAddChatMessage("{FFF666}[NE]: {FFFFFF}Идёт настройка скрипта...", 0xFFFFFF)
        createDirectory(getGameDirectory() .. "\\moonloader\\resource\\NewsEditor")
        print("NewsEditor: Папка NewsEditor создана.")
        createDirectory(getGameDirectory() .. "\\moonloader\\resource\\NewsEditor\\files")
        print("NewsEditor: Папка Files создана.")
        createDirectory(getGameDirectory() .. "\\moonloader\\resource\\NewsEditor\\files\\Other")
        print("NewsEditor: Папка Other создана.")
        createDirectory(getGameDirectory() .. "\\moonloader\\resource\\NewsEditor\\files\\LS")
        print("NewsEditor: Папка LS создана.")
        createDirectory(getGameDirectory() .. "\\moonloader\\resource\\NewsEditor\\files\\LV")
        print("NewsEditor: Папка LV создана.")
        createDirectory(getGameDirectory() .. "\\moonloader\\resource\\NewsEditor\\files\\SF")
        print("NewsEditor: Папка SF создана.")
        createDirectory(getGameDirectory() .. "\\moonloader\\resource\\NewsEditor\\files\\Other\\ПРО")
        print("NewsEditor: Папка ПРО создана.")
        createDirectory(getGameDirectory() .. "\\moonloader\\resource\\NewsEditor\\files\\Other\\ПРЭ")
        print("NewsEditor: Папка ПРЭ создана.")
        createDirectory(getGameDirectory() .. "\\moonloader\\resource\\NewsEditor\\files\\Other\\ППГ")
        print("NewsEditor: Папка ППГ создана.")
        createDirectory(getGameDirectory() .. "\\moonloader\\resource\\NewsEditor\\files\\Other\\ППТ")
        print("NewsEditor: Папка ППТ создана.")
        createDirectory(getGameDirectory() .. "\\moonloader\\resource\\NewsEditor\\files\\Other\\ПРБ")
        print("NewsEditor: Папка ПРБ создана.")
        end)
        sampAddChatMessage("{FFF666}[NE]: {FFFFFF}Идёт загрузка файлов...", 0xFFFFFF)
    end
    if updateScript == true then
        update()
        while update ~= false do wait(100) end
    end
    lua_thread.create(function()
        sec, min, hour = 0, 0, 0
        while true do wait(0)
            wait(1000)
            sec = sec + 1
            if sec == 60 then
                sec = 0
                min = min + 1
            end
            if min == 60 then
                min = 0
                hour = hour + 1
            end
        end
    end)
    menuupdate()
    random_messages()
    updateShpora()
    while true do wait(0)
        imgui.Process = Main_News.v or StatsPlayers.v or CommandsDostup.v or SetttingsMenu.v or EditorSMS.v or EditorADS.v or InfoCars.v
        if isMove then
            sampSetCursorMode(2)
            local cursorPosX, cursorPosY = getCursorPos()
            settings.options.infoX, settings.options.infoY = cursorPosX, cursorPosY
            if isKeyJustPressed(0x01) then
                inicfg.save(settings, 'NewsEditor.ini')
                sampSetCursorMode(0)
                isMove = false
            end
        end
        if menutrigger ~= nil then
            menu()
            menutrigger = nil
        end
        if not sampIsChatInputActive() and not sampIsDialogActive() and not sampIsScoreboardOpen() and not isSampfuncsConsoleActive() then
            if wasKeyPressed(key.VK_F12) then Main_News.v = not Main_News.v end
        end
        renderFontDrawText(my_font, "{F3F3F3}До PayDay осталось: {FFFF66}"..59-os.date('%M').." {F3F3F3}минут. {FFFF66}"..60-os.date('%S').."{F3F3F3} секунд.", settings.options.infoX, settings.options.infoY, 0xFFFFFFFF)
        renderFontDrawText(my_font, "{F3F3F3}Время: {FFFF66}"..os.date('%H:%M:%S').." {F3F3F3}| Дата: {FFFF66}"..os.date('%d %B %Y г.'), settings.options.infoX, settings.options.infoY + 20, 0xFFFFFFFF)
        local result1, button, list, input = sampHasDialogRespond(1000) -- 1/7
        local result2, button, list, input = sampHasDialogRespond(1001) -- 2/7
        local result3, button, list, input = sampHasDialogRespond(1002) -- 3/7
        local result4, button, list, input = sampHasDialogRespond(1003) -- 4/7
        local result5, button, list, input = sampHasDialogRespond(1004) -- 5/7
        local result6, button, list, input = sampHasDialogRespond(1005) -- 6/7
        local result7, button, list, input = sampHasDialogRespond(1006) -- 7/7
        local result9, Button, list, input = sampHasDialogRespond(1009) -- Причина отказа
        local result10, Button, list, input = sampHasDialogRespond(1010) -- Причина отказа
        if result1 then
            if button == 1 and list == 0 then
                Sobes2:run()
            elseif button == 1 and list == 1 then
                sampAddChatMessage("{FFF666}[NE]: {FFFFFF}Собеседование отменено!", 0xFFFFFF)
              end
        end
        if result2 then
            if button == 1 and list == 0 then
                Sobes3:run()
            elseif button == 1 and list == 1 then
                sampShowDialog(1009, '{FF4F00}Панель - {FFFF66}собеседования {FFFFFF}| Этапы: {FFFF66}2 / 7 [ ОТКАЗ ]', '{FF0000}[!] {FFFF66}Бредит {FFFFFF}(Нарушение MG)', 'Выбрать', '', 2)
              end
        end
        if result3 then
            if button == 1 and list == 0 then
                Sobes4:run()
            elseif button == 1 and list == 1 then
                sampShowDialog(1010, '{FF4F00}Панель - {FFFF66}собеседования {FFFFFF}| Этапы: {FFFF66}3 / 7 [ ОТКАЗ ]', '{FF0000}[!] {FFFF66}Бредит {FFFFFF}(Нарушение MG)\n{FF0000}[!] {FFFF66}Увроень игрока меньше 3-го\n{FF0000}[!] {FFFF66}У игрока не пройден мед. осмотр\n{FF0000}[!] {FFFF66}У игрока нет лицензии на вождение\n{FF0000}[!] {FFFF66}У игрока болезнь\n{FF0000}[!] {FFFF66}Игрок находится в розыске\n{FF0000}[!] {FFFF66}Игрок незаконопослушный {FFFFFF}(Меньше 20 законопослушности)\n{FF0000}[!] {FFFF66}Опечатка в паспорте {FFFFFF}(НонРП ник)', 'Выбрать', '', 2)
              end
        end
        if result4 then
            if button == 1 and list == 0 then
                Sobes5:run()
            elseif button == 1 and list == 1 then
                sampShowDialog(1009, '{FF4F00}Панель - {FFFF66}собеседования {FFFFFF}| Этапы: {FFFF66}4 / 7 [ ОТКАЗ ]', '{FF0000}[!] {FFFF66}Бредит {FFFFFF}(Нарушение MG)', 'Выбрать', '', 2)
               end
        end
        if result10 then
            if button == 1 and list == 0 then
                sampSendChat("К сожалению Вы нам не подходите, Вы бредите.")
                wait(2100)
                sampSendChat("/n Ты MG-шишь.")
                wait(2100)
                sampSendChat("/r Человек на собеседовании с серией паспорта "..pID.." не подходит нам!")
            elseif button == 1 and list == 1 then
                sampSendChat("К сожалению Вы нам не подходите. Вы меньше 3-х лет в нашей федерации.")
                wait(2100)
                sampSendChat("/n В организацию только с 3-го уровня.")
                wait(2100)
                sampSendChat("/r Человек на собеседовании с серией паспорта "..pID.." не подходит нам!")
              elseif button == 1 and list == 2 then
                sampSendChat("К сожалению Вы нам не подходите. Пройдите мед.осмотр.")
                wait(2100)
                sampSendChat("Сделать Вы это можете в любой из больниц федерации.")
                wait(2100)
                sampSendChat("/r Человек на собеседовании с серией паспорта "..pID.." не подходит нам!")
            elseif button == 1 and list == 3 then
                sampSendChat("К сожалению Вы нам не подходите. У Вас отсутствуют права на вождение.")
                wait(2100)
                sampSendChat("Получить Вы их можете в Автошколе.")
                wait(2100)
                sampSendChat("/r Человек на собеседовании с серией паспорта "..pID.." не подходит нам!")
            elseif button == 1 and list == 4 then
                sampSendChat("К сожалению Вы нам не подходите. В Вашей мед.карте написано, что Вы болеете")
                wait(2100)
                sampSendChat("Вылечитесь в любой из больниц федерации и приходите.")
                wait(2100)
                sampSendChat("/r Человек на собеседовании с серией паспорта "..pID.." не подходит нам!")
            elseif button == 1 and list == 5 then
                sampSendChat("Я "..(SexPlayersRP and 'видела' or 'видел').." плакат 'Разыскивается' с Вашим лицом. Мне вызвать полицию?!")
                wait(2100)
                sampSendChat("/n Уровень розыска идите снимайте")
                wait(2100)
                sampSendChat("/r Человек на собеседовании с серией паспорта "..pID.." не подходит нам!")
            elseif button == 1 and list == 6 then
                sampSendChat("К сожалению Вы нам не подходите. Вы незаконопослушны.")
                wait(2100)
                sampSendChat("/n В организацию с 20 законкой.")
                wait(2100)
                sampSendChat("/r Человек на собеседовании с серией паспорта "..pID.." не подходит нам!")
            elseif button == 1 and list == 7 then
                sampSendChat("К сожалению Вы нам не подходите. В паспорте опечатка в Вашем имени.")
                wait(2100)
                sampSendChat("/n У тебя NonRP-ник. Чтобы сменить воспользуйся: /mn -> Смена NonRP ника.")
                wait(2100)
                sampSendChat("/r Человек на собеседовании с серией паспорта "..pID.." не подходит нам!")
              end
        end
        if result5 then
            if button == 1 and list == 0 then
                Sobes6:run()
            elseif button == 1 and list == 1 then
                sampShowDialog(1009, '{FF4F00}SOBES v1.0 {FFFFFF}| {9966cc}Собеседование {FFFFFF}- 5 / 7 [ ОТКАЗ ]', '{FF0000}[!] {FFFF66}Бредит {FFFFFF}(Нарушение MG)', 'Выбрать', 'Закрыть', 2)
            end
        end
        if result6 then
            if button == 1 and list == 0 then
                Sobes7:run()
            elseif button == 1 and list == 1 then
                sampShowDialog(1010, '{FF4F00}SOBES v1.0 {FFFFFF}| {9966cc}Собеседование {FFFFFF}- 6 / 7 [ ОТКАЗ ]', '{FF0000}[!] {FFFF66}Бредит {FFFFFF}(Нарушение MG)\n{FF0000}[!] {FFFF66}Не знание терминов', 'Выбрать', 'Закрыть', 2)
            end
        end
        if result9 then
            if button == 1 and list == 0 then
                sampSendChat("К сожалению Вы нам не подходите, Вы бредите.")
                wait(2100)
                sampSendChat("/n Ты MG-шишь.")
                wait(2100)
                sampSendChat("/r Человек на собеседовании с серией паспорта "..pID.." не подходит нам!")
            end
        end
        if result10 then
            if button == 1 and list == 0 then
                sampSendChat("К сожалению Вы нам не подходите, Вы бредите.")
                wait(2100)
                sampSendChat("/n Ты MG-шишь.")
                wait(2100)
                sampSendChat("/r Человек на собеседовании с серией паспорта "..pID.." не подходит нам!")
            elseif button == 1 and list == 1 then
                sampSendChat("К сожалению Вы нам не подходите.")
                wait(2100)
                sampSendChat("/n Не знаете терминов РП")
                wait(2100)
                sampSendChat("/r Человек на собеседовании с серией паспорта "..pID.." не подходит нам!")
            end
        end
    end
end
Не работает ибо функции нет
 

petuch228

Новичок
82
2
Пытаюсь создать текстдрав, но он даже не отображается

Код:
        sampTextdrawCreate(1, "_", 257.000000, 100.000000)
        sampTextdrawSetLetterSizeAndColor(1, 0.500000, 5.199999, 0x000000FF)
        sampTextdrawSetBoxColorAndSize(1, 1, 0x00000070, 380.000000, .000000)
        sampTextdrawSetAlign(1, 0)
        sampTextdrawSetShadow(1, 1, -1)
        sampTextdrawSetOutlineColor(1, 0, 0xFFFFFFFF)
        sampTextdrawSetStyle(1, 1)
        sampTextdrawSetProportional(1, 1)
 

checkdasound

Известный
Проверенный
963
407
Пытаюсь создать текстдрав, но он даже не отображается

Код:
        sampTextdrawCreate(1, "_", 257.000000, 100.000000)
        sampTextdrawSetLetterSizeAndColor(1, 0.500000, 5.199999, 0x000000FF)
        sampTextdrawSetBoxColorAndSize(1, 1, 0x00000070, 380.000000, .000000)
        sampTextdrawSetAlign(1, 0)
        sampTextdrawSetShadow(1, 1, -1)
        sampTextdrawSetOutlineColor(1, 0, 0xFFFFFFFF)
        sampTextdrawSetStyle(1, 1)
        sampTextdrawSetProportional(1, 1)
Скинь весь код
 

petuch228

Новичок
82
2
Скинь весь код
Код:
function main()
  if not isSampfuncsLoaded() or not isSampLoaded() then return end
  while not isSampAvailable() do wait(100) end
  sampRegisterChatCommand("test",
    function()
        sampTextdrawCreate(1, "_", 257.000000, 100.000000)
        sampTextdrawSetLetterSizeAndColor(1, 0.500000, 5.199999, 0x000000FF)
        sampTextdrawSetBoxColorAndSize(1, 1, 0x00000070, 380.000000, 0.000000)
        sampTextdrawSetAlign(1, 0)
        sampTextdrawSetShadow(1, 1, -1)
        sampTextdrawSetOutlineColor(1, 0, 0xFFFFFFFF)
        sampTextdrawSetStyle(1, 1)
        sampTextdrawSetProportional(1, 1)
    end)
    wait(-1)
end
 
Последнее редактирование:

checkdasound

Известный
Проверенный
963
407
Код:
function main()
  if not isSampfuncsLoaded() or not isSampLoaded() then return end
  while not isSampAvailable() do wait(100) end
  sampRegisterChatCommand("test",
    function()
        sampTextdrawCreate(1, "_", 257.000000, 100.000000)
        sampTextdrawSetLetterSizeAndColor(1, 0.500000, 5.199999, 0x000000FF)
        sampTextdrawSetBoxColorAndSize(1, 1, 0x00000070, 380.000000, 0.000000)
        sampTextdrawSetAlign(1, 0)
        sampTextdrawSetShadow(1, 1, -1)
        sampTextdrawSetOutlineColor(1, 0, 0xFFFFFFFF)
        sampTextdrawSetStyle(1, 1)
        sampTextdrawSetProportional(1, 1)
    end)
    wait(-1)
end
Потому что в sampTextdrawSetLetterSizeAndColor цвет 0x000000FF (прозрачный). Выбери другой цвет и все заработает.
 

checkdasound

Известный
Проверенный
963
407
Не пашет все равно. Пробовал с 0xDD0000AA
Все робит.
Lua:
function main()
  if not isSampfuncsLoaded() or not isSampLoaded() then return end
  while not isSampAvailable() do wait(100) end
  sampRegisterChatCommand("test",
    function()
        sampTextdrawCreate(1, "_", 257.000000, 100.000000)
        sampTextdrawSetLetterSizeAndColor(1, 0.500000, 5.199999, 0xDD0000AA)
        sampTextdrawSetBoxColorAndSize(1, 1, 0x00000070, 380.000000, 0.000000)
        sampTextdrawSetAlign(1, 0)
        sampTextdrawSetShadow(1, 1, -1)
        sampTextdrawSetOutlineColor(1, 0, 0xFFFFFFFF)
        sampTextdrawSetStyle(1, 1)
        sampTextdrawSetProportional(1, 1)
    end)
    wait(-1)
end
 

petuch228

Новичок
82
2
Все робит.
Lua:
function main()
  if not isSampfuncsLoaded() or not isSampLoaded() then return end
  while not isSampAvailable() do wait(100) end
  sampRegisterChatCommand("test",
    function()
        sampTextdrawCreate(1, "_", 257.000000, 100.000000)
        sampTextdrawSetLetterSizeAndColor(1, 0.500000, 5.199999, 0xDD0000AA)
        sampTextdrawSetBoxColorAndSize(1, 1, 0x00000070, 380.000000, 0.000000)
        sampTextdrawSetAlign(1, 0)
        sampTextdrawSetShadow(1, 1, -1)
        sampTextdrawSetOutlineColor(1, 0, 0xFFFFFFFF)
        sampTextdrawSetStyle(1, 1)
        sampTextdrawSetProportional(1, 1)
    end)
    wait(-1)
end
У меня и с твоим кодом не работает текстдрав..
UPD: получилось как-то отобразить это окошко, но его цвет совершенно не такой как должен быть. Я взял зеленый, а отображает какой-то фиолетовый
 

checkdasound

Известный
Проверенный
963
407
У меня и с твоим кодом не работает текстдрав..
А, точно, там просто не отображает нижнее подчеркивание, а вот например слово TEST да.
Lua:
function main()
  if not isSampfuncsLoaded() or not isSampLoaded() then return end
  while not isSampAvailable() do wait(100) end
  sampRegisterChatCommand("test",
    function()
        sampTextdrawCreate(1, "TEST", 257.000000, 100.000000)
        sampTextdrawSetLetterSizeAndColor(1, 0.500000, 5.199999, 0xDD0000AA)
        sampTextdrawSetBoxColorAndSize(1, 1, 0x00000070, 380.000000, 0.000000)
        sampTextdrawSetAlign(1, 0)
        sampTextdrawSetShadow(1, 1, -1)
        sampTextdrawSetOutlineColor(1, 0, 0xFFFFFFFF)
        sampTextdrawSetStyle(1, 1)
        sampTextdrawSetProportional(1, 1)
    end)
    wait(-1)
end
 

petuch228

Новичок
82
2
А, точно, там просто не отображает нижнее подчеркивание, а вот например слово TEST да.
Lua:
function main()
  if not isSampfuncsLoaded() or not isSampLoaded() then return end
  while not isSampAvailable() do wait(100) end
  sampRegisterChatCommand("test",
    function()
        sampTextdrawCreate(1, "TEST", 257.000000, 100.000000)
        sampTextdrawSetLetterSizeAndColor(1, 0.500000, 5.199999, 0xDD0000AA)
        sampTextdrawSetBoxColorAndSize(1, 1, 0x00000070, 380.000000, 0.000000)
        sampTextdrawSetAlign(1, 0)
        sampTextdrawSetShadow(1, 1, -1)
        sampTextdrawSetOutlineColor(1, 0, 0xFFFFFFFF)
        sampTextdrawSetStyle(1, 1)
        sampTextdrawSetProportional(1, 1)
    end)
    wait(-1)
end
Мой текстдрав - это не слово, а просто прямоугольник. И что на счет цвета? Ставлю цвет 0x73B461FF (зеленый), а отображает розовый?

Код:
        sampTextdrawCreate(1, "_", 257.000000, 100.000000)
        sampTextdrawSetLetterSizeAndColor(1, 0.500000, 5.199999, 0x73B461FF)
        sampTextdrawSetBoxColorAndSize(1, 1, 0x73B461FF, 380.000000, 0.000000)
        sampTextdrawSetAlign(1, 0)
        sampTextdrawSetShadow(1, 1, 0x73B461FF)
        sampTextdrawSetOutlineColor(1, 0, 0x73B461FF)
        sampTextdrawSetStyle(1, 1)
        sampTextdrawSetProportional(1, 1)