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

pavl1nio

Участник
95
13
Lua:
if  isKeyJustPressed(VK_SHIFT) then
                  lua_thread.create(function()
                     setVirtualKeyDown(1, true)
                     wait(100)
                     setVirtualKeyDown(1, false)

как сделать так, чтобы ПОКА был зажат шифт, производилось нажатие клавиши 1
 

D3xter

Новичок
9
0
Как сделать так, чтобы по команде выключалась и выключалась?
Код:
if status then
        local audio = loadAudioStream('moonloader/proverka.mp3')
            setAudioStreamState(audio, 1)
 

chapo

чопа сребдс // @moujeek
Модератор
8,934
11,700
Как сделать так, чтобы по команде выключалась и выключалась?
Код:
if status then
        local audio = loadAudioStream('moonloader/proverka.mp3')
            setAudioStreamState(audio, 1)
Lua:
local sound_state = require "moonloader".audiostream_state

function main()
    while not isSampAvailable() do wait(0) end
    AudioStream_plus = loadAudioStream('moonloader/resource/audio/file.mp3')
    sampRegisterChatCommand('snd', function() setAudioStreamState(AudioStream, sound_state.PLAY) end)
    --для выключения звука юзай setAudioStreamState(AudioStream, sound_state.STOP)
    while true do
        wait(0)
        
    end
end
 

ROBERT PUSHER

Известный
305
213
Как сделать проверку на нажатие в собственном диалоге? (Если диалог открыт, то sampHasDialogRespond в аргументе button будет всегда выдавать 1)
-GcZQeHAkz0.jpg
 

ROBERT PUSHER

Известный
305
213
Lua:
function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(0) end
    sampAddChatMessage(u8:decode"{FF0000}Скрипт {BDB76B}SMI Helper Mesa{FF0000} успешно загружен. Автор скрипта - Ramzes_Chiron", -1)
    sampAddChatMessage(u8:decode"{FF0000}ВКонтакте для связи - @luzer2002. Регайтесь на мой ник - Ramzes_Chiron", -1)
    sampRegisterChatCommand('fh', function(num)
        sampAddChatMessage(u8:decode'{FF0000}Окей, выполняю. Правильный ввод: /fh (айди дома).', -1)
            sampSendChat('/findihouse '..num)
    end)
    sampRegisterChatCommand('fbiz', function(num)
        sampAddChatMessage(u8:decode'{FF0000}Окей, выполняю. Правильный ввод: /fbiz (айди биза).', -1)
            sampSendChat('/findibiz'..num)
    end)
    sampRegisterChatCommand('t', function(num)
        sampAddChatMessage(u8:decode'{FF0000}Окей, выполняю.', -1)
            sampSendChat(u8:decode'/me отодвинул рукав рубашки и взглянул на часы марки "Rolex". ')
            sampSendChat('/time')
    end)
    sampRegisterChatCommand('k', function(num)
        sampAddChatMessage(u8:decode'{FF0000}Окей, выполняю.', -1)
            sampSendChat('/key')
    end)
        sampRegisterChatCommand('healman', function()
      wait(0)
      sampSendChat('Здравствуйте, я сотрудник данного медицинского центра, что вас беспокоит?')
      wait(1600)
      sampSendChat('/me нырнув правой рукой в карман, вытянул оттуда блокнот и ручку')
      wait(1600)
      sampSendChat('/todo Хорошо, понял, ничего страшного*записывая в блокнот, все сказанное пациентом.')
      wait(1600)
      sampSendChat('/do Открытая сумка весит на плече правой руки.')
      wait(1600)
      sampSendChat('/me несколькими движениями нащупал лекарство')
      wait(1600)
      sampSendChat('/do Лекарство в левой руке.')
      wait(1600)
      sampSendChat('/todo Вот, держите*передавая лекарство человеку напротив.')
      wait(1600)
      sampSendChat('Принимайте эти таблетки, и через некоторое время вам станет лучше.')
      wait(1600)
      sampAddChatMessage(u8:decode'[FFFF00]Пропишите самостоятельно /heal (айди игрока)', -1)
  end)
    while true do
      wait(0)
    if isKeyJustPressed(VK_K) and not sampIsChatInputActive() and not sampIsDialogActive() and not isPauseMenuActive() and not isSampfuncsConsoleActive() then
        sampAddChatMessage(u8:decode'{FF0000}Окей, выполняю.', -1)
        sampSendChat("/anim 2")
    end
    if isKeyJustPressed(VK_L) and not sampIsChatInputActive() and not sampIsDialogActive() and not isPauseMenuActive() and not isSampfuncsConsoleActive() then
        sampAddChatMessage(u8:decode'{FF0000}Окей, выполняю.', -1)
        sampSendChat("/lock")
    end
    if isKeyJustPressed(VK_P) and not sampIsChatInputActive() and not sampIsDialogActive() and not isPauseMenuActive() and not isSampfuncsConsoleActive() then
        sampAddChatMessage(u8:decode'{FF0000}Окей, выполняю.', -1)
        sampSendChat("/usemed")
    end
    if isKeyJustPressed(VK_Z) and not sampIsChatInputActive() and not sampIsDialogActive() and not isPauseMenuActive() and not isSampfuncsConsoleActive() then
        sampAddChatMessage(u8:decode'{FF0000}Окей, выполняю.', -1)
        sampSendChat("/armour")
    end
    if isKeyJustPressed(VK_F3) then
        sampAddChatMessage(u8:decode"{FFFF00}Вывожу окно. Автор делал 1 неделю  скрипт, а мог за день, но я ленивый :) ", -1)
        sampAddChatMessage(u8:decode"{FFFF00}Вывожу окно. Автор делал 1 неделю  скрипт, а мог за день, но я ленивый :) ", -1)
    end
      if wasKeyPressed(VK_F3) then
        main_window_state.v = not main_window_state.v
    end
    imgui.Process = main_window_state.v
  end
end

крашит изза

Lua:
sampRegisterChatCommand('healman', function()
      wait(0)
      sampSendChat('Здравствуйте, я сотрудник данного медицинского центра, что вас беспокоит?')
      wait(1600)
      sampSendChat('/me нырнув правой рукой в карман, вытянул оттуда блокнот и ручку')
      wait(1600)
      sampSendChat('/todo Хорошо, понял, ничего страшного*записывая в блокнот, все сказанное пациентом.')
      wait(1600)
      sampSendChat('/do Открытая сумка весит на плече правой руки.')
      wait(1600)
      sampSendChat('/me несколькими движениями нащупал лекарство')
      wait(1600)
      sampSendChat('/do Лекарство в левой руке.')
      wait(1600)
      sampSendChat('/todo Вот, держите*передавая лекарство человеку напротив.')
      wait(1600)
      sampSendChat('Принимайте эти таблетки, и через некоторое время вам станет лучше.')
      wait(1600)
      sampAddChatMessage(u8:decode'[FFFF00]Пропишите самостоятельно /heal (айди игрока)', -1)
  end)
не могу понять в чем тут проблема

имгуи скрипт, не буду весь кидать, ошибка изза wait в этой команде
Простите извините, но зачем u8:decode? - "ошибка изза wait в этой команде" значит после sampRegisterChatCommand создаёшь поток lua_thread.create(function()
 

PanSeek

t.me/dailypanseek
Всефорумный модератор
908
1,776
Как сделать проверку на нажатие в собственном диалоге? (Если диалог открыт, то sampHasDialogRespond в аргументе button будет всегда выдавать 1)
-GcZQeHAkz0.jpg
Lua:
--in while true do
local result_d, button, list, input = sampHasDialogRespond(id)
if result_d then
    if button == 1 then
        -- code
        --[[
        Также можно указать здесь пункт
        if list == 0 then
            -- code
        end
        ]]
    end
end
У меня получалось на 0 и 1 кнопку жать.
 

Myroslaw

Известный
133
5
Lua:
script_author("myr0cha")
script_description("EasyCMD for radmir rp samp")
script_name("EasyCMD by myr0cha")

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

    sampRegisterChatCommand("c", cut)
    sampRegisterChatCommand("ad", cut1)
    sampRegisterChatCommand("vs", cut2)
    sampRegisterChatCommand("mr", cut3)
    sampRegisterChatCommand("use", cut4)
    sampRegisterChatCommand("fi", cut5)
    sampRegisterChatCommand('fm', cut6)
    sampRegisterChatCommand('ac', cut7)
    sampRegisterChatCommand('re', cut8)
    sampRegisterChatCommand('nc', cut9)
    sampRegisterChatCommand('nn', cut10)
    sampRegisterChatCommand('rep', cut11)
    sampRegisterChatCommand('sd', cut12)
    sampRegisterChatCommand('fgb', cut13)
    sampRegisterChatCommand('ftb', cut14)
    sampRegisterChatCommand('gr', cut15)

    while true do
        wait(0)
    end
end

function cut()
    sampSendChat("/clist 0")
end

function cut1()
    sampSendChat("/admins")
end

function cut2()
    sampSendChat("/vehspawn")
end

function cut3()
    sampSendChat("/members")
end

function cut4()
    sampSendChat("/usemedkit")
end

function cut5(arg)
    sampSendChat('/finvite '..arg)
end

function cut6()
    sampSendChat('/fmembers')
end

function cut7()
    sampSendChat('/accept')
end

function cut8(arg)
    sampSendChat('/repairengine '..arg)
end

function cut9(arg)
    sampSendChat('/newcolor '..arg)
end

function cut10(arg)
    sampSendChat('/newnumber '..arg)
end

function cut11(arg)
    sampSendChat('/repair '..arg)
end

function cut12()
    sampSendChat('/speed')
end

function cut13()
    sampSendChat('/fgivebank')
end

function cut14()
    sampSendChat('/ftakebank')
end

function cut15(arg)
    sampSendChat('/giverank '..arg)
end
Помогите, вот ето почемуто не роботает
 

PanSeek

t.me/dailypanseek
Всефорумный модератор
908
1,776
Lua:
script_author("myr0cha")
script_description("EasyCMD for radmir rp samp")
script_name("EasyCMD by myr0cha")

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

    sampRegisterChatCommand("c", cut)
    sampRegisterChatCommand("ad", cut1)
    sampRegisterChatCommand("vs", cut2)
    sampRegisterChatCommand("mr", cut3)
    sampRegisterChatCommand("use", cut4)
    sampRegisterChatCommand("fi", cut5)
    sampRegisterChatCommand('fm', cut6)
    sampRegisterChatCommand('ac', cut7)
    sampRegisterChatCommand('re', cut8)
    sampRegisterChatCommand('nc', cut9)
    sampRegisterChatCommand('nn', cut10)
    sampRegisterChatCommand('rep', cut11)
    sampRegisterChatCommand('sd', cut12)
    sampRegisterChatCommand('fgb', cut13)
    sampRegisterChatCommand('ftb', cut14)
    sampRegisterChatCommand('gr', cut15)

    while true do
        wait(0)
    end
end

function cut()
    sampSendChat("/clist 0")
end

function cut1()
    sampSendChat("/admins")
end

function cut2()
    sampSendChat("/vehspawn")
end

function cut3()
    sampSendChat("/members")
end

function cut4()
    sampSendChat("/usemedkit")
end

function cut5(arg)
    sampSendChat('/finvite '..arg)
end

function cut6()
    sampSendChat('/fmembers')
end

function cut7()
    sampSendChat('/accept')
end

function cut8(arg)
    sampSendChat('/repairengine '..arg)
end

function cut9(arg)
    sampSendChat('/newcolor '..arg)
end

function cut10(arg)
    sampSendChat('/newnumber '..arg)
end

function cut11(arg)
    sampSendChat('/repair '..arg)
end

function cut12()
    sampSendChat('/speed')
end

function cut13()
    sampSendChat('/fgivebank')
end

function cut14()
    sampSendChat('/ftakebank')
end

function cut15(arg)
    sampSendChat('/giverank '..arg)
end
Помогите, вот ето почемуто не роботает
Что именно? Почему бы не сократить в разы?
 

CaJlaT

07.11.2024 14:55
Модератор
2,835
2,673
Lua:
script_author("myr0cha")
script_description("EasyCMD for radmir rp samp")
script_name("EasyCMD by myr0cha")

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

    sampRegisterChatCommand("c", cut)
    sampRegisterChatCommand("ad", cut1)
    sampRegisterChatCommand("vs", cut2)
    sampRegisterChatCommand("mr", cut3)
    sampRegisterChatCommand("use", cut4)
    sampRegisterChatCommand("fi", cut5)
    sampRegisterChatCommand('fm', cut6)
    sampRegisterChatCommand('ac', cut7)
    sampRegisterChatCommand('re', cut8)
    sampRegisterChatCommand('nc', cut9)
    sampRegisterChatCommand('nn', cut10)
    sampRegisterChatCommand('rep', cut11)
    sampRegisterChatCommand('sd', cut12)
    sampRegisterChatCommand('fgb', cut13)
    sampRegisterChatCommand('ftb', cut14)
    sampRegisterChatCommand('gr', cut15)

    while true do
        wait(0)
    end
end

function cut()
    sampSendChat("/clist 0")
end

function cut1()
    sampSendChat("/admins")
end

function cut2()
    sampSendChat("/vehspawn")
end

function cut3()
    sampSendChat("/members")
end

function cut4()
    sampSendChat("/usemedkit")
end

function cut5(arg)
    sampSendChat('/finvite '..arg)
end

function cut6()
    sampSendChat('/fmembers')
end

function cut7()
    sampSendChat('/accept')
end

function cut8(arg)
    sampSendChat('/repairengine '..arg)
end

function cut9(arg)
    sampSendChat('/newcolor '..arg)
end

function cut10(arg)
    sampSendChat('/newnumber '..arg)
end

function cut11(arg)
    sampSendChat('/repair '..arg)
end

function cut12()
    sampSendChat('/speed')
end

function cut13()
    sampSendChat('/fgivebank')
end

function cut14()
    sampSendChat('/ftakebank')
end

function cut15(arg)
    sampSendChat('/giverank '..arg)
end
Помогите, вот ето почемуто не роботает
Вместо создания кучи команд (которых кстати может быть всего 144) лучше юзай https://www.blast.hk/threads/76240/
 

Setkh

Участник
74
6
Lua:
function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(0) end
    sampAddChatMessage(u8:decode"{FF0000}Скрипт {BDB76B}SMI Helper Mesa{FF0000} успешно загружен. Автор скрипта - Ramzes_Chiron", -1)
    sampAddChatMessage(u8:decode"{FF0000}ВКонтакте для связи - @luzer2002. Регайтесь на мой ник - Ramzes_Chiron", -1)
    sampRegisterChatCommand('fh', function(num)
        sampAddChatMessage(u8:decode'{FF0000}Окей, выполняю. Правильный ввод: /fh (айди дома).', -1)
            sampSendChat('/findihouse '..num)
    end)
    sampRegisterChatCommand('fbiz', function(num)
        sampAddChatMessage(u8:decode'{FF0000}Окей, выполняю. Правильный ввод: /fbiz (айди биза).', -1)
            sampSendChat('/findibiz'..num)
    end)
    sampRegisterChatCommand('t', function(num)
        sampAddChatMessage(u8:decode'{FF0000}Окей, выполняю.', -1)
            sampSendChat(u8:decode'/me отодвинул рукав рубашки и взглянул на часы марки "Rolex". ')
            sampSendChat('/time')
    end)
    sampRegisterChatCommand('k', function(num)
        sampAddChatMessage(u8:decode'{FF0000}Окей, выполняю.', -1)
            sampSendChat('/key')
    end)
        sampRegisterChatCommand('healman', function()
      wait(0)
      sampSendChat('Здравствуйте, я сотрудник данного медицинского центра, что вас беспокоит?')
      wait(1600)
      sampSendChat('/me нырнув правой рукой в карман, вытянул оттуда блокнот и ручку')
      wait(1600)
      sampSendChat('/todo Хорошо, понял, ничего страшного*записывая в блокнот, все сказанное пациентом.')
      wait(1600)
      sampSendChat('/do Открытая сумка весит на плече правой руки.')
      wait(1600)
      sampSendChat('/me несколькими движениями нащупал лекарство')
      wait(1600)
      sampSendChat('/do Лекарство в левой руке.')
      wait(1600)
      sampSendChat('/todo Вот, держите*передавая лекарство человеку напротив.')
      wait(1600)
      sampSendChat('Принимайте эти таблетки, и через некоторое время вам станет лучше.')
      wait(1600)
      sampAddChatMessage(u8:decode'[FFFF00]Пропишите самостоятельно /heal (айди игрока)', -1)
  end)
    while true do
      wait(0)
    if isKeyJustPressed(VK_K) and not sampIsChatInputActive() and not sampIsDialogActive() and not isPauseMenuActive() and not isSampfuncsConsoleActive() then
        sampAddChatMessage(u8:decode'{FF0000}Окей, выполняю.', -1)
        sampSendChat("/anim 2")
    end
    if isKeyJustPressed(VK_L) and not sampIsChatInputActive() and not sampIsDialogActive() and not isPauseMenuActive() and not isSampfuncsConsoleActive() then
        sampAddChatMessage(u8:decode'{FF0000}Окей, выполняю.', -1)
        sampSendChat("/lock")
    end
    if isKeyJustPressed(VK_P) and not sampIsChatInputActive() and not sampIsDialogActive() and not isPauseMenuActive() and not isSampfuncsConsoleActive() then
        sampAddChatMessage(u8:decode'{FF0000}Окей, выполняю.', -1)
        sampSendChat("/usemed")
    end
    if isKeyJustPressed(VK_Z) and not sampIsChatInputActive() and not sampIsDialogActive() and not isPauseMenuActive() and not isSampfuncsConsoleActive() then
        sampAddChatMessage(u8:decode'{FF0000}Окей, выполняю.', -1)
        sampSendChat("/armour")
    end
    if isKeyJustPressed(VK_F3) then
        sampAddChatMessage(u8:decode"{FFFF00}Вывожу окно. Автор делал 1 неделю  скрипт, а мог за день, но я ленивый :) ", -1)
        sampAddChatMessage(u8:decode"{FFFF00}Вывожу окно. Автор делал 1 неделю  скрипт, а мог за день, но я ленивый :) ", -1)
    end
      if wasKeyPressed(VK_F3) then
        main_window_state.v = not main_window_state.v
    end
    imgui.Process = main_window_state.v
  end
end

крашит изза

Lua:
sampRegisterChatCommand('healman', function()
      wait(0)
      sampSendChat('Здравствуйте, я сотрудник данного медицинского центра, что вас беспокоит?')
      wait(1600)
      sampSendChat('/me нырнув правой рукой в карман, вытянул оттуда блокнот и ручку')
      wait(1600)
      sampSendChat('/todo Хорошо, понял, ничего страшного*записывая в блокнот, все сказанное пациентом.')
      wait(1600)
      sampSendChat('/do Открытая сумка весит на плече правой руки.')
      wait(1600)
      sampSendChat('/me несколькими движениями нащупал лекарство')
      wait(1600)
      sampSendChat('/do Лекарство в левой руке.')
      wait(1600)
      sampSendChat('/todo Вот, держите*передавая лекарство человеку напротив.')
      wait(1600)
      sampSendChat('Принимайте эти таблетки, и через некоторое время вам станет лучше.')
      wait(1600)
      sampAddChatMessage(u8:decode'[FFFF00]Пропишите самостоятельно /heal (айди игрока)', -1)
  end)
не могу понять в чем тут проблема

имгуи скрипт, не буду весь кидать, ошибка изза wait в этой команде
Lua:
function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(0) end
    
    sampAddChatMessage("{FF0000}Скрипт {BDB76B}SMI Helper Mesa{FF0000} успешно загружен. Автор скрипта - Ramzes_Chiron", -1)
    sampAddChatMessage("{FF0000}ВКонтакте для связи - @luzer2002. Регайтесь на мой ник - Ramzes_Chiron", -1)
    
    sampRegisterChatCommand('fh', function(num)
        sampAddChatMessage('{FF0000}Окей, выполняю. Правильный ввод: /fh (айди дома).', -1)
        sampSendChat('/findihouse '..num)
    end)
    sampRegisterChatCommand('fbiz', function(num)
        sampAddChatMessage('{FF0000}Окей, выполняю. Правильный ввод: /fbiz (айди биза).', -1)
        sampSendChat('/findibiz'..num)
    end)
    sampRegisterChatCommand('t', function(num)
        sampAddChatMessage('{FF0000}Окей, выполняю.', -1)
        sampSendChat('/me отодвинул рукав рубашки и взглянул на часы марки "Rolex". ')
        sampSendChat('/time')
    end)
    sampRegisterChatCommand('k', function(num)
        sampAddChatMessage('{FF0000}Окей, выполняю.', -1)
        sampSendChat('/key')
    end)
    sampRegisterChatCommand('healman', function()
        lua_thread.create(function()
            wait(0)
            sampSendChat('Здравствуйте, я сотрудник данного медицинского центра, что вас беспокоит?')
            wait(1600)
            sampSendChat('/me нырнув правой рукой в карман, вытянул оттуда блокнот и ручку')
            wait(1600)
            sampSendChat('/todo Хорошо, понял, ничего страшного*записывая в блокнот, все сказанное пациентом.')
            wait(1600)
            sampSendChat('/do Открытая сумка весит на плече правой руки.')
            wait(1600)
            sampSendChat('/me несколькими движениями нащупал лекарство')
            wait(1600)
            sampSendChat('/do Лекарство в левой руке.')
            wait(1600)
            sampSendChat('/todo Вот, держите*передавая лекарство человеку напротив.')
            wait(1600)
            sampSendChat('Принимайте эти таблетки, и через некоторое время вам станет лучше.')
            wait(1600)
            sampAddChatMessage('{FFFF00}Пропишите самостоятельно /heal (айди игрока)', -1)
        end)
      end)
  
    while true do
        wait(0)
        if isKeyJustPressed(VK_K) and not sampIsChatInputActive() and not sampIsDialogActive() and not isPauseMenuActive() and not isSampfuncsConsoleActive() then
            sampAddChatMessage('{FF0000}Окей, выполняю.', -1)
            sampSendChat("/anim 2")
        end
        if isKeyJustPressed(VK_L) and not sampIsChatInputActive() and not sampIsDialogActive() and not isPauseMenuActive() and not isSampfuncsConsoleActive() then
            sampAddChatMessage('{FF0000}Окей, выполняю.', -1)
            sampSendChat("/lock")
        end
        if isKeyJustPressed(VK_P) and not sampIsChatInputActive() and not sampIsDialogActive() and not isPauseMenuActive() and not isSampfuncsConsoleActive() then
            sampAddChatMessage('{FF0000}Окей, выполняю.', -1)
            sampSendChat("/usemed")
        end
        if isKeyJustPressed(VK_Z) and not sampIsChatInputActive() and not sampIsDialogActive() and not isPauseMenuActive() and not isSampfuncsConsoleActive() then
            sampAddChatMessage('{FF0000}Окей, выполняю.', -1)
            sampSendChat("/armour")
        end
        if isKeyJustPressed(VK_F3) then
            sampAddChatMessage("{FFFF00}Вывожу окно. Автор делал 1 неделю  скрипт, а мог за день, но я ленивый :) ", -1)
            sampAddChatMessage("{FFFF00}Вывожу окно. Автор делал 1 неделю  скрипт, а мог за день, но я ленивый :) ", -1)
        end
        if wasKeyPressed(VK_F3) then
            main_window_state.v = not main_window_state.v
        end
        imgui.Process = main_window_state.v
      end
end
 

Myroslaw

Известный
133
5

PanSeek

t.me/dailypanseek
Всефорумный модератор
908
1,776
Мне просто интересно писать скриптЬІ, я нехочу себе еупрощать игру, мне просто интересно писать, но я особо не умею
Просто не пойму что именно не работает.
А сократить можно так:
Lua:
sampRegisterChatCommand("c", function() sampSendChat("/clist 0") end)
sampRegisterChatCommand("ad", function() sampSendChat("/admins") end)
sampRegisterChatCommand("vs", function() sampSendChat("/vehspawn") end)
sampRegisterChatCommand("mr", function() sampSendChat("/members") end)
sampRegisterChatCommand("use", function() sampSendChat("/usemedkit") end)
sampRegisterChatCommand("fi", function(arg) sampSendChat('/finvite '..arg) end)
sampRegisterChatCommand('fm', function() sampSendChat('/fmembers') end)
sampRegisterChatCommand('ac', function() sampSendChat('/accept') end)
sampRegisterChatCommand('re', function(arg) sampSendChat('/repairengine '..arg) end)
sampRegisterChatCommand('nc', function(arg) sampSendChat('/newcolor '..arg) end)
sampRegisterChatCommand('nn', function(arg) sampSendChat('/newnumber '..arg) end)
sampRegisterChatCommand('rep', function(arg) sampSendChat('/repair '..arg) end)
sampRegisterChatCommand('sd', function() sampSendChat('/speed') end)
sampRegisterChatCommand('fgb', function() sampSendChat('/fgivebank') end)
sampRegisterChatCommand('ftb', function() sampSendChat('/ftakebank') end)
sampRegisterChatCommand('gr', function(arg) sampSendChat('/giverank '..arg) end)
И внизу удалить функции. Когда выполняется маленькое (в одну строчку например) действие, так же проще и удобнее.
 

Myroslaw

Известный
133
5
как можно сделать, что б сервер думал что я нажимаю клавишу, но я ее не наажимал, я знаю что есть setVirtualKeyDown(16, true), но оно зажимает, а мне надо что б нажало, и отжало, вот так делать нехочу setVirtualKeyDown(16, true) setVirtualKeyDown(16, false)