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

PanSeek

t.me/dailypanseek
Всефорумный модератор
908
1,776
Ну и как мне ее вызывать ну то есть что каждних 20 сек мне нада просто если появился ган то написало убрал ган еще раз написало
Основы изучай.
Lua:
function main()
    while true do
        wait(0)
        local idGun = getCurrentCharWeapon(playerPed)
        if idGun == 24 then
            sampSendChat("/me достал дигл")
        else
            sampSendChat("/me убрал дигл")
        end
    end
end
В таком случае всегда будет писаться текст и предскажу - игра будет лагать. Сделай какой-нибудь переключатель или что-нибудь другое, чтобы предотвращало это.
 

PanSeek

t.me/dailypanseek
Всефорумный модератор
908
1,776
ну я так и делал проблема что сразу же аризона кикает за много повтороное вызываний функции
В таком случае всегда будет писаться текст и предскажу - игра будет лагать. Сделай какой-нибудь переключатель или что-нибудь другое, чтобы предотвращало это.
Для кого я это написал?
 
  • Нравится
Реакции: deleted-user-443489

Sanchez.

Известный
705
188
Можно где нибудь найти гайд про mimgui, просто я только imgui знаю а mimgui не пробовал
 

bottom_text

Известный
673
320
Можно где нибудь найти гайд про mimgui, просто я только imgui знаю а mimgui не пробовал
 
  • Нравится
Реакции: Sanchez.

Sanchez.

Известный
705
188
Кстати, а кто может сказать на своем опыте: mimgui сложнее или легче чем обычный imgui. Просто я пишу imgui скрипты, и когда я посмотрел на mimgui. то я ахуел потому что там много всего... Скажите пажэ
 

Curtis

Участник
282
10
Как отменить комбинацию клавиш, точнее как сделать это в коде?
1626134953877.png


Lua:
local mainWindow = {
    v = decodeJson(hotkeyIni.hotkey.bindClock)
}

Lua:
bindClock = rkeys.registerHotKey(mainWindow.v, true, toolsFunc)

Lua:
-- imgui.OnDrawFrame
if imgui.HotKey("##1", mainWindow, tLastKeys, 100) then
                    rkeys.changeHotKey(bindClock, mainWindow.v)
                    hotkeyIni.hotkey.bindClock = encodeJson(mainWindow.v)
                    inicfg.save(hotkeyIni, directHotkeyIni)
                end
 

CaJlaT

07.11.2024 14:55
Модератор
2,835
2,673
Как отменить комбинацию клавиш, точнее как сделать это в коде?
1626134953877.png


Lua:
local mainWindow = {
    v = decodeJson(hotkeyIni.hotkey.bindClock)
}

Lua:
bindClock = rkeys.registerHotKey(mainWindow.v, true, toolsFunc)

Lua:
-- imgui.OnDrawFrame
if imgui.HotKey("##1", mainWindow, tLastKeys, 100) then
                    rkeys.changeHotKey(bindClock, mainWindow.v)
                    hotkeyIni.hotkey.bindClock = encodeJson(mainWindow.v)
                    inicfg.save(hotkeyIni, directHotkeyIni)
                end
Пример из моего скрипта
Lua:
if imgui.HotKey('##Выход из авто', keys.carleave, _, 50) then
    if #keys.carleave.v >= 2 then
        sampAddChatMessage('Ошибка, скрипт не поодерживает комбинацию клавиш', 0xFFFF0000)
        keys.carleave.v = {}
    end
end
 

meowprd

Тот самый Котовский
Проверенный
1,278
720
Кстати, а кто может сказать на своем опыте: mimgui сложнее или легче чем обычный imgui. Просто я пишу imgui скрипты, и когда я посмотрел на mimgui. то я ахуел потому что там много всего... Скажите пажэ
учи себя сразу mimgui.
после imgui сложнее перейти на mimgui.
mimgui более новее
Почему оно то работает то не работает
Код:
function se.onShowDialog(dialogId, style, title, button1, button2, text)
    if title:find("%Выберите лицензию") then
        if dialogId == 6 then
            lua_thread.create(function()
                wait(500)
                sampSendDialogResponse(sampGetCurrentDialogId(), 1, selected_item.v, _)
            end)
            return false
        end
    end
end
за время пока ты ждешь 500 мс ID диалога может измениться.
проверяй проверки, срабатывают ли они, ищи сначала не по title:find, а по dialogId
 

meowprd

Тот самый Котовский
Проверенный
1,278
720
Как сделать что если библиотека imgui присутсвует то все норм и переменный делаються и функия с imgui ттоже а если библиотеки нету то ничего не создавать у меня покачто вот такой варик
ERRORS:
[ML] (error) ASHelper.lua: F:\games\ARIZONA GAMES\bin\Arizona\moonloader\ASHelper.lua:69: attempt to index global 'main_window_state' (a nil value)
stack traceback:
    F:\games\ARIZONA GAMES\bin\Arizona\moonloader\ASHelper.lua: in function <F:\games\ARIZONA GAMES\bin\Arizona\moonloader\ASHelper.lua:40>
[ML] (error) ASHelper.lua: Script died due to an error. (17B09C4C)
покдлючение:
local imguicheck, imgui    = pcall(require, "imgui")
в main():
if imguicheck then
                imgui.Process = main_window_state.v
end
Создание переменных:
if imguicheck then
    local main_window_state = imgui.ImBool(false)
    local playerID = imgui.ImBuffer(256)
    local playerExpel = imgui.ImBuffer(256)
    local licID = imgui.ImBuffer(256)
    local checkbox1 = imgui.ImBool(false)
    local checkbox2 = imgui.ImBool(false)
    local checkbox3 = imgui.ImBool(false)
    local isp_menu = imgui.ImBool(false)
    local lic_menu = imgui.ImBool(false)
    local other_menu = imgui.ImBool(false)
    local settings_menu = imgui.ImBool(false)

    local settings_menu = imgui.ImBool(false)
    local anim_cheat = imgui.ImBool(false)
    local arr_lic = {u8"Машина", u8"Мотоциклы", u8"Пилот", u8"Рыбалка", u8"Лодки", u8"Оружие", u8"Раскопки", u8"Такси"}
    local lictype = imgui.ImInt(0)

end
Full code:
require "lib.moonloader"

local dlstatus = require('moonloader').download_status
local se = require 'samp.events'
local config = require "config"
local imguicheck, imgui    = pcall(require, "imgui")
local key = require 'vkeys'
local encoding = require 'encoding'
local inicfg = require 'inicfg'

update_state = false
local script_vers = 4
local script_vers_text = "1.3"

local update_url = "https://raw.githubusercontent.com/Nazar1ky/ASHelper/main/update.ini"
local update_path = getWorkingDirectory() .. "/update.ini"

local script_url = "https://github.com/Nazar1ky/ASHelper/raw/main/ASHelper.lua"
local script_path = thisScript().path

encoding.default = 'CP1251'
u8 = encoding.UTF8
local tag = "{62E200}[ASHelper]: {FFFFFF}"
local color_err = "{62E200}[ASHelper]: {FF0000}"
local inprocess = false


local confige = config.settings
local gender = confige.gender
local keyr = confige.keyr

-- if not _ then
--         sampAddChatMessage("Библиотека imgui не найдена... Установим!", -1)
--         downloadUrlToFile('https://raw.githubusercontent.com/Nazar1ky/ASHelper/main/imgui.lua', 'moonloader/lib/imgui.lua')
--         downloadUrlToFile('https://raw.githubusercontent.com/Nazar1ky/ASHelper/main/MoonImGui.dll', 'moonloader/lib/MoonImGui.dll')
--         thisScript():reload()
--         return false
-- end

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

    downloadUrlToFile(update_url, update_path, function(id, status)
        if status == dlstatus.STATUS_ENDDOWNLOADDATA then
            updateIni = inicfg.load(nil, update_path)
            if tonumber(updateIni.info.vers) > script_vers then
                sampAddChatMessage(tag .. "Есть обновление! Версия: " .. updateIni.info.vers_text .. ", Попытаюсь установить", 0xFFFF00)
                update_state = true
            end
            os.remove(update_path)
        end
    end)
    while true do
        wait(0)
        if update_state then
            downloadUrlToFile(script_url, script_path, function(id, status)
                if status == dlstatus.STATUS_ENDDOWNLOADDATA then
                    sampAddChatMessage(tag .. "Скрипт успешно обновлен! Перезапускаю...")
                    thisScript():reload()
                end
            end)
            break
        end
            if wasKeyPressed(keyr) then
                    main_window_state.v = not main_window_state.v
            end
            if imguicheck then
                imgui.Process = main_window_state.v
            end
            local valid, ped = getCharPlayerIsTargeting(PLAYER_HANDLE)
            if valid and doesCharExist(ped) then
                local result, id = sampGetPlayerIdByCharHandle(ped)
                if result then
                    if checkbox2.v then
                        playerID.v = tostring(id)
                    end
                end
            end
            local idGun = getCurrentCharWeapon(playerPed)
            -- if idGun == 24 then
            --     sampSendChat("/me достал дигл")
            -- else
            --     sampSendChat("/me убрал дигл")
            -- end
    end
end

if imguicheck then
    local main_window_state = imgui.ImBool(false)
    local playerID = imgui.ImBuffer(256)
    local playerExpel = imgui.ImBuffer(256)
    local licID = imgui.ImBuffer(256)
    local checkbox1 = imgui.ImBool(false)
    local checkbox2 = imgui.ImBool(false)
    local checkbox3 = imgui.ImBool(false)
    local isp_menu = imgui.ImBool(false)
    local lic_menu = imgui.ImBool(false)
    local other_menu = imgui.ImBool(false)
    local settings_menu = imgui.ImBool(false)

    local settings_menu = imgui.ImBool(false)
    local anim_cheat = imgui.ImBool(false)
    local arr_lic = {u8"Машина", u8"Мотоциклы", u8"Пилот", u8"Рыбалка", u8"Лодки", u8"Оружие", u8"Раскопки", u8"Такси"}
    local lictype = imgui.ImInt(0)

end
local ex, ey = getScreenResolution()
function imgui.OnDrawFrame()
    local _, myid = sampGetPlayerIdByCharHandle(PLAYER_PED)
    if main_window_state.v then
        imgui.SetNextWindowSize(imgui.ImVec2(580, 250), imgui.Cond.FirstUseEver)
        imgui.Begin('AutoSchool helper', main_window_state)
        imgui.InputText(u8'ID Игрока для манипуляций', playerID)
        imgui.Checkbox(u8'При нацеливание playerID заполняеться айди в того кого целитесь', checkbox2)
        imgui.Checkbox(u8'PRICE LIST', isp_menu)
        imgui.Checkbox(u8'Продажа Лицензий', lic_menu)
        imgui.Checkbox(u8'Прочее', other_menu)
        imgui.Checkbox(u8'Настройки', settings_menu)
        imgui.Checkbox(u8'Сбив анимки дубинки (ЧИТ)', anim_cheat)
        imgui.Text(u8'Версия скрипта: ' .. script_vers_text)
        imgui.Text(u8(string.format('Текущая дата: %s', os.date())))
        imgui.End()
    end
    if isp_menu.v then
        imgui.ShowCursor = true
        imgui.SetNextWindowSize(imgui.ImVec2(300, 170), imgui.Cond.FirstUseEver)
        imgui.SetNextWindowPos(imgui.ImVec2(ex / 2 - 515, ey / 2 - 220), imgui.Cond.FirstUseEver)
        imgui.Begin(u8'AutoSchool Helper || PRICE LIST', nil, imgui.WindowFlags.NoCollapse)
        imgui.Text(u8'PRICE LIST:\nНа авто: 10.000\nНа мото: 12.000\nНа рыбалку: 21.000\nВодный транспорт: 20.000\nОружие: 50.000(Требуеться Мед. карта\nОхота: 100.000\nНа распопки: 200.000\nНа полеты 20.000 (Сдавать в авиашколе)')
        imgui.End()
    end
    if lic_menu.v then
        imgui.ShowCursor = true
        imgui.SetNextWindowSize(imgui.ImVec2(430, 275), imgui.Cond.FirstUseEver)
        imgui.SetNextWindowPos(imgui.ImVec2(ex / 2 - 515, ey / 2 - 220), imgui.Cond.FirstUseEver)
        imgui.Begin(u8'AutoSchool Helper || Продажа лицензий', nil, imgui.WindowFlags.NoCollapse)
        imgui.Text(u8'При продаже лицензии на оружие нужно проверить мед. карту!')
        if imgui.Button(u8'Приставиться') then
            privet()
        end
        if imgui.Button(u8'Лицензия на пилота') then
            pilot()
        end
        if imgui.Button(u8'Проверить мед. карту') then
                med(myid)
        end
        if imgui.Button(u8'Выдать лицензию') then
            if playerID.v == '' then
                sampAddChatMessage(tag .. "Вы не указали playerID !", 0xFFFF00)
            else
                licgive(playerID.v)
            end
        end
        if imgui.Button(u8'Выдать лицензию (nonRP)') then
            sampSendChat('/givelicense '.. playerID.v)
            print(sampGetPlayerNickname(playerID.v))
        end
        if imgui.Button(u8'Пожелать хорошего дня') then
            if inprocess == false then
                sampSendChat('/todo Удачного вам дня*улыбнувшись посетителю')
            else
                sampAddChatMessage(tag .. "Вы уже чтото выполняете, подождите!", 0xFFFF00)
            end

        end
        imgui.Checkbox(u8'Писать при успешной покупки в чат пожелание', checkbox1)
        imgui.Checkbox(u8'Автосистема (BETA)', checkbox3)
        if checkbox3.v then
            if imgui.Combo(u8'Выберите лицензию', lictype, arr_lic, 8) then
                print(lictype.v)
            end
        end
            imgui.End()
        end
    if other_menu.v then
        imgui.ShowCursor = true
        imgui.SetNextWindowSize(imgui.ImVec2(200, 320), imgui.Cond.FirstUseEver)
        imgui.SetNextWindowPos(imgui.ImVec2(ex / 2 - 515, ey / 2 - 220), imgui.Cond.FirstUseEver)
        imgui.Begin(u8'AutoSchool Helper || Прочее', nil, imgui.WindowFlags.NoCollapse)
        imgui.Text(u8'По работе:')
        imgui.InputText(u8'Причина', playerExpel)
        if imgui.Button(u8'Выгнать из автошколы') then
            if  playerID.v == '' or playerExpel.v == '' then
                sampAddChatMessage(tag .. "Вы не указали причину либо playerID !", 0xFFFF00)
                print(1)
            else
                print(0)
                sampSendChat('/expel '.. playerID.v .. ' ' .. u8:decode(playerExpel.v))
            end
        end
        if imgui.Button(u8'Рабочее портфолио') then
            sampSendChat('/jobprogress')
        end
        if imgui.Button(u8'Список во фракции(online)') then
            sampSendChat('/members')
        end
        if imgui.Button(u8'Посмотреть время') then
            sampSendChat('/time')
        end
        imgui.Text(u8'Другое:')
        if imgui.Button(u8'Меню') then
            sampSendChat('/mm')
        end
        if imgui.Button(u8'Настройки') then
            sampSendChat('/settings')
        end
        if imgui.Button(u8'Помощь') then
            sampSendChat('/help')
        end
        if imgui.Button(u8'Навигатор') then
            sampSendChat('/gps')
        end
        if imgui.Button(u8'Инвентарь') then
            sampSendChat('/invent')
        end
        imgui.End()
    end
    if settings_menu.v then
        imgui.ShowCursor = true
        imgui.SetNextWindowSize(imgui.ImVec2(200, 100), imgui.Cond.FirstUseEver)
        imgui.SetNextWindowPos(imgui.ImVec2(ex / 2 - 515, ey / 2 - 220), imgui.Cond.FirstUseEver)
        imgui.Begin(u8'AutoSchool Helper || Настройки', nil, imgui.WindowFlags.NoCollapse)
        if imgui.Button(u8'Перезагрузить скрипт') then
            thisScript():reload()
        end
        if imgui.Button(u8'Выгрузить скрипт') then
            thisScript():unload()
        end
        imgui.End()
    end
end
function privet()
    if inprocess == false then
        lua_thread.create(function()
            inprocess = not inprocess
            sampAddChatMessage(tag .. "Выполняю...", 0xFFFF00)
            sampSendChat('Приветствую, я "' .. confige.rank .. '" данного лицензированного центра, чем могу вам помочь?')
            wait(1500)
            sampSendChat('/do На груди весит бейджик с надписью "' .. confige.rank .. ' - '.. confige.name .. '.')
            wait(500)
            sampAddChatMessage(tag .. "Выполнено!", 0xFFFF00)
            inprocess = not inprocess
        end)
    else
        sampAddChatMessage(color_err .. "Вы уже чтото выполняете, подождите!", 0xFFFF00)
    end
end
function pilot()
    if inprocess == false then
        lua_thread.create(function()
            inprocess = not inprocess
            sampAddChatMessage(tag .. "Выполняю...", 0xFFFF00)
            sampSendChat('Получить лицензию на полёты Вы можете в авиашколе г. Лас-Вентурас')
            wait(1500)
            sampSendChat('/n /gps -> Важные места -> Следующая страница -> [LV] Авиашкола (9)')
            wait(500)
            sampAddChatMessage(tag .. "Выполнено!", 0xFFFF00)
            inprocess = not inprocess
        end)
    else
        sampAddChatMessage(color_err .. "Вы уже чтото выполняете, подождите!", 0xFFFF00)
    end
end
function med(myid)
    if inprocess == false then
        lua_thread.create(function()
            inprocess = not inprocess
            sampAddChatMessage(tag .. "Выполняю...", 0xFFFF00)
            sampSendChat('Для получения лицензии на оружие покажите вашу мед.карту ')
            wait(1000)
            sampSendChat('/b /showmc ' .. myid)
            wait(500)
            sampAddChatMessage(tag .. "Выполнено! Убедитесь что в Мед. карте написано 'Полностью здоровый(ая)'", 0xFFFF00)
            inprocess = not inprocess
            wait(500)
            if checkbox3.v then
                lictype.v = 4
                sampAddChatMessage(tag .. "Автолицензия выбрана: Оружие'", 0xFFFF00)
            end
        end)
    else
        sampAddChatMessage(color_err .. "Вы уже чтото выполняете, подождите!", 0xFFFF00)
    end
end
function licgive(id)
    if inprocess == false then
        lua_thread.create(function()
            inprocess = not inprocess
            sampAddChatMessage(tag .. "Выполняю...", 0xFFFF00)
            sampSendChat('Секунду...')
            wait(2000)
            sampSendChat('/me {gender:взял|взяла} со стола бланк и {gender:заполнил|заполнила} ручкой бланк на получение лицензии')
            wait(2000)
            sampSendChat('/do Спустя некоторое время бланк на получение лицензии был заполнен.')
            wait(2000)
            sampSendChat('/me распечатав лицензию на оружие {gender:передал|передала} её человеку напротив')
            wait(1700)
            sampSendChat('/givelicense '.. playerID.v)
            inprocess = not inprocess
        end)
    else
        sampAddChatMessage(color_err .. "Вы уже чтото выполняете, подождите!", 0xFFFF00)
    end
end
function se.onServerMessage(color, text)
    if text:find('%[Информация%]%s+%{%w+%}Вы успешно продали лицензию') then
        if checkbox1.v then
            if inprocess == false then
                lua_thread.create(function()
                    sampSendChat('/todo Удачного вам дня*улыбнувшись посетителю')
                    wait(500)
                    sampAddChatMessage(tag .. "Клиент купил лицензию, деньги начислены.", 0xFFFF00)
                end)
            else
                sampAddChatMessage(color_err .. "Вы чтото выполняете, выполнить пожелание не удалось!", 0xFFFF00)
            end
        end
    end
end
-- function se.onShowDialog(dialogId, style, title, button1, button2, text)
--     if dialogId == 6 then
--         sampSendDialogResponse(6, 1, 0, nil)
--     end
-- end
function se.onShowDialog(dialogId, style, title, button1, button2, text)
    if checkbox3.v then
        if dialogId == 6 then
            sampSendDialogResponse(sampGetCurrentDialogId(), 1, lictype.v, _)
            return false
        end
    end
    if dialogId == 1234 then
        if checkbox3.v then
            if text:find("Имя: "..sampGetPlayerNickname(playerID.v)) then
                if text:find("Полностью здоровый") then
                    lua_thread.create(function()
                        while inprocess do
                            wait(0)
                        end
                        inprocess = true
                        lictype.v = 6
                        sampSendChat("/me взяв мед.карту в руки начал её проверять")
                        wait(2000)
                        sampSendChat("/do Мед.карта в норме.")
                        wait(2000)
                        sampSendChat("/todo Всё в порядке* отдавая мед.карту обратно")
                        wait(2000)
                        sampSendChat('/me {gender:взял|взяла} со стола бланк и {gender:заполнил|заполнила} ручкой бланк на получение лицензии на оружие')
                        wait(2000)
                        sampSendChat('/do Спустя некоторое время бланк на получение лицензии был заполнен.')
                        wait(2000)
                        sampSendChat('/me распечатав лицензию на оружие {gender:передал|передала} её человеку напротив')
                        sampSendChat('/givelicense ' .. playerID)
                        inprocess = false
                    end)
                else
                    lua_thread.create(function()
                        inprocess = true
                        ASHelperMessage('Человек не полностью здоровый, требуется поменять мед.карту!')
                        sampSendChat("/me взяв мед.карту в руки начал её проверять")
                        wait(2000)
                        sampSendChat("/do Мед.карта не в норме.")
                        wait(2000)
                        sampSendChat("/todo К сожалению, в мед.карте написано, что у вас есть отклонения.* отдавая мед.карту обратно")
                        wait(2000)
                        sampSendChat("Обновите её и приходите снова!")
                        inprocess = false
                    end)
                end
                return false
            end
        end
    end
end

function se.onSendCommand(cmd)
    if cmd:find('{gender:%A+|%A+}') then
        local male, female = cmd:match('{gender:(%A+)|(%A+)}')
        if  gender == 0 then
            local gendermsg = cmd:gsub('{gender:%A+|%A+}', male, 1)
            sampSendChat(tostring(gendermsg))
            return false
        else
            local gendermsg = cmd:gsub('{gender:%A+|%A+}', female, 1)
            sampSendChat(tostring(gendermsg))
            return false
        end
    end
end
function se.onApplyPlayerAnimation(playerId, animLib, animName, frameDelta, loop, lockX, lockY, freeze, time)
    if anim_cheat.v then
        if playerId == select(2, sampGetPlayerIdByCharHandle(PLAYER_PED)) then
            if animLib == 'CRACK' and animName == 'crckdeth2' then return false end
        end
    end
end
Lua:
if imguicheck then
    main_window_state = imgui.ImBool(false)
    playerID = imgui.ImBuffer(256)
    playerExpel = imgui.ImBuffer(256)
    licID = imgui.ImBuffer(256)
    checkbox1 = imgui.ImBool(false)
    checkbox2 = imgui.ImBool(false)
    checkbox3 = imgui.ImBool(false)
    isp_menu = imgui.ImBool(false)
    lic_menu = imgui.ImBool(false)
    other_menu = imgui.ImBool(false)
    settings_menu = imgui.ImBool(false)

    settings_menu = imgui.ImBool(false)
    anim_cheat = imgui.ImBool(false)
    arr_lic = {u8"Машина", u8"Мотоциклы", u8"Пилот", u8"Рыбалка", u8"Лодки", u8"Оружие", u8"Раскопки", u8"Такси"}
    lictype = imgui.ImInt(0)
end

тебе не нужны локальные переменные внутри проверки, иначе они останутся внутри переменной и поэтому ты не можешь их использовать.
 
  • Нравится
Реакции: deleted-user-443489

Dmitriy Makarov

25.05.2021
Проверенный
2,505
1,134
Пытаюсь прикрепить текст к машине, в которой я сижу, но что-то он не крепится. Не знаете почему?
Lua:
local veh = storeCarCharIsInNoSave(PLAYER_PED)
local res, vehid = sampGetVehicleIdByCarHandle(veh)
if res then
    sampCreate3dText("Text", 16777215, 0, 0, 0, 5, true, -1, vehid) -- text, color, x, y, z, radius, ignoreWalls, playerId, vehicleId
end
Никто не знает, да? (;
Координаты даже чекал, там тоже ничего.
 
  • Нравится
Реакции: copypaste_scripter

sep

Известный
681
76
что за бред помогите
если так то я не вижу сообщения (время)

код:
function sampev.onServerMessage(color, text)
if text:find('%[teg%]%s(.-)%[(%d+)%]: время$') then
--lua_thread.create(function()
--wait(100)
sampSendChat(' московское время ' ..time)
--end)
end
а так вижу
код:
function sampev.onServerMessage(color, text)
if text:find('%[teg%]%s(.-)%[(%d+)%]: время$') then
lua_thread.create(function()
wait(100)
sampSendChat(' московское время ' ..time)
end)
end
как сделать правельно неужели надо костыль sampAddChatMessage(text, 0xFF0000) добавлять ?

изза чего произходит так что невидно это сообщение

код:
function sampev.onServerMessage(color, text)
if text:find('%[teg%]%s(.-)%[(%d+)%]: 1$') then
sampSendChat('1')
end
end
 
Последнее редактирование:

Rafinad

Известный
189
63
что за бред помогите
если так то я не вижу сообщения (время)

код:
function sampev.onServerMessage(color, text)
if text:find('%[teg%]%s(.-)%[(%d+)%]: время$') then
--lua_thread.create(function()
--wait(100)
sampSendChat(' московское время ' ..time)
--end)
end
а так вижу
код:
function sampev.onServerMessage(color, text)
if text:find('%[teg%]%s(.-)%[(%d+)%]: время$') then
lua_thread.create(function()
wait(100)
sampSendChat(' московское время ' ..time)
end)
end
как сделать правельно неужели надо костыль sampAddChatMessage(text, 0xFF0000) добавлять ?

изза чего произходит так что невидно это сообщение

код:
function sampev.onServerMessage(color, text)
if text:find('%[teg%]%s(.-)%[(%d+)%]: 1$') then
sampSendChat('1')
end
end
Что такое time?
Ты выходишь того чего нету
 

W H Y ?

Участник
103
8
Как после Ник_Нейма продолжить строку? пробовал 2 варианта и не работает

Lua:
        if wasKeyPressed(VK_F5) then
            wait(2500)
                sampAddChatMessage('Текст'..sampGetPlayerNickname(select(2, sampGetPlayerIdByCharHandle(PLAYER_PED))), -1)
            end
        end
Пример: Текст Мой_Ник опять текст