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

zTechnology

Известный
1,101
486
Реально ли вывести системное сообщение спомощю lua? Если да, то как?
если брать пример выше:
Lua:
local ffi = require "ffi"
function ShowMessage(text, title, style)
    ffi.cdef [[
        int MessageBoxA(
            void* hWnd,
            const char* lpText,
            const char* lpCaption,
            unsigned int uType
        );
    ]]
    local hwnd = ffi.cast("void*", readMemory(0x00C8CF88, 4, false))
    ffi.C.MessageBoxA(hwnd, text,  title, style and (style + 0x50000) or 0x50000)
end
ShowMessage("text", "title", 0x10)
 
  • Нравится
Реакции: DeKzer

DeKzer

Известный
519
223
если брать пример выше:
Lua:
local ffi = require "ffi"
function ShowMessage(text, title, style)
    ffi.cdef [[
        int MessageBoxA(
            void* hWnd,
            const char* lpText,
            const char* lpCaption,
            unsigned int uType
        );
    ]]
    local hwnd = ffi.cast("void*", readMemory(0x00C8CF88, 4, false))
    ffi.C.MessageBoxA(hwnd, text,  title, style and (style + 0x50000) or 0x50000)
end
ShowMessage("text", "title", 0x10)
уже сам по нему сделал, но спасибо)
 
  • Нравится
Реакции: zTechnology

accord-

Потрачен
437
79
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Как сделать Imgui.ToggleButton в несколько рядов? Через imgui.NewLine() не идёт, [SCREEN] - поставил после 1 ToggleButton там где imgui.SameLine()
Код:
                    if imgui.ToggleButton(u8"123", 123) then
                        -- code
                    end
                        imgui.SameLine()
                    imgui.Text(u8'123')
                    if imgui.ToggleButton(u8"1234", 1234) then
                        -- code
                    end
                        imgui.SameLine()
                    imgui.Text(u8'1234')
1646500176678.png
 
Последнее редактирование:

zTechnology

Известный
1,101
486
Как сделать Imgui.ToggleButton в несколько рядов? Через imgui.NewLine() не идёт, [SCREEN] - поставил после 1 ToggleButton там где imgui.SameLine()
Код:
                    if imgui.ToggleButton(u8"123", 123) then
                        -- code
                    end
                        imgui.SameLine()
                    imgui.Text(u8'123')
                    if imgui.ToggleButton(u8"1234", 1234) then
                        -- code
                    end
                        imgui.SameLine()
                    imgui.Text(u8'1234')
Посмотреть вложение 138736
NewLine - начать с новой линии расположения компонентов
SameLine - продолжить расположение компонентов на текущей линии
Предлагаю тебе кинуть мне код imgui.togglebutton, чтобы я сделал вывод названия данной кнопки, т.к. то что ты делаешь полный костыль..
И тогда не придётся после каждого чекбокса (тоглбаттона) писать текст
 

accord-

Потрачен
437
79
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
NewLine - начать с новой линии расположения компонентов
SameLine - продолжить расположение компонентов на текущей линии
Предлагаю тебе кинуть мне код imgui.togglebutton, чтобы я сделал вывод названия данной кнопки, т.к. то что ты делаешь полный костыль..
И тогда не придётся после каждого чекбокса (тоглбаттона) писать текст
Уже сделал, спасибо
 
  • Нравится
Реакции: zTechnology

(^O_O^)

Активный
114
27
как с помощью кода луа можно создать папку в которой будут храниться файлы по типу шрифтов, и т.д
 

Rice.

Известный
Модератор
1,756
1,622
как с помощью кода луа можно создать папку в которой будут храниться файлы по типу шрифтов, и т.д
Lua:
if not doesDirectoryExist(getWorkingDirectory()..'//Название папки') then createDirectory(getWorkingDirectory()..'//Название папки') end

Возможно ли перезагрузить другой скрипт из папки 'moonloader'? Если возможно, то каким способом?
 

(^O_O^)

Активный
114
27
как мне перехватить серверный диалог о транспорте(ид 162), потом скрыть его
 

auf.exe

Участник
41
12
в таком случае поменяй кодировку на UTF-8
И проверь есть ли такой код:
Lua:
local encoding = require "encoding"
encoding.default = "cp1251"
local u8 = encoding.UTF8


нету. можно
Не работает
Лог:
[ML] (error) test.lua: C:\Games\GTA\moonloader\lib\encoding.lua:77: bad argument #1 to 'iconv' (string expected, got nil)
stack traceback:
    [C]: in function 'iconv'
    C:\Games\GTA\moonloader\lib\encoding.lua:77: in function 'decode'
    C:\Games\GTA\moonloader\test.lua:172: in function 'OnDrawFrame'
    C:\Games\GTA\moonloader\lib\imgui.lua:1378: in function <C:\Games\GTA\moonloader\lib\imgui.lua:1367>
[ML] (error) test.lua: Script died due to an error. (07B01C94)
Код:
Lua:
local sampev = require('lib.samp.events')
require 'lib.moonloader'

local imgui = require 'imgui'
local ini = require 'inicfg'
local encoding = require "encoding"
encoding.default = "cp1251"
local u8 = encoding.UTF8

local iniFile = "moonloader\\Script by auf\\iniFile.ini"
local Directory = "moonloader\\Script by auf"
local windowImgui = imgui.ImBool(false)
local noteText = imgui.ImBuffer(256)
local CMDact = imgui.ImBuffer(256)
local noteLock = 1
local wmine = 700

local rak = require 'samp.raknet'

local mainBind = ini.load(nil, iniFile)

local tag = "{FF00FF}Script by auf.exe"

local x, y = getScreenResolution()

if not doesDirectoryExist(Directory) then
    createDirectory(Directory)
end

if not doesFileExist(iniFile) then
    f = io.open(iniFile, 'a')
    f:write("[Console]\n")
    f:write("command=hmenu")
    f:close()
end

function main()
    while not isSampAvailable() do wait(0) end
    sampAddChatMessage(tag, -1)
    sampRegisterChatCommand(mainBind.Console.command, cmd_imgui)
    while true do
        wait(0)
    end
end

function sampev.onServerMessage(color, text)
    if text:find('Лошара ебаная') then
        sampSendChat('Пошёл нахуй')
    end
end

function cmd_imgui()
    imgui.Process = true
end

function imgui.OnDrawFrame()
    imgui.SetNextWindowPos(imgui.ImVec2(x / 2, y / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
    imgui.SetNextWindowSize(imgui.ImVec2(750, 300), imgui.Cond.FirstUseEver)
    imgui.Begin("Здарова", windowImgui, imgui.WindowFlags.NoResize + imgui.WindowFlags.NoTitleBar + imgui.WindowFlags.NoMove)
        imgui.Text('Здраствуй путник, сегодня ты попал в чудесный мир ' .. sampGetCurrentServerName() .. '. Ловите скрипт для записок, так как читы я попросту делать не умею.')
        imgui.Text('Авто обновления тут нету, так-что заходи на тему под названием [All Servers] Notepad Lua by auf.exe и там скачивай новую версию.')
        imgui.Text('В скорем времени добавлю кастомную команду а пока пользуйся.')
        imgui.Separator()
        imgui.InputText('Ввод записки', noteText)
        if imgui.Button('Сохранить(Максимум 15)', imgui.ImVec2(150, 30)) then
            if noteLock == 1 then
                mainBind.Console.note1 = noteText.v
                ini.save(mainBind, iniFile)
                sampAddChatMessage(u8:decode'Вы сохранили: ' .. u8:decode(noteText.v) .. u8:decode" Текущая строка: " .. noteLock, -1)
            end
            if noteLock == 2 then
                mainBind.Console.note2 = noteText.v
                ini.save(mainBind, iniFile)
                sampAddChatMessage(u8:decode'Вы сохранили: ' .. u8:decode(noteText.v) .. u8:decode" Текущая строка: " .. noteLock, -1)
            end
            if noteLock == 3 then
                mainBind.Console.note3 = noteText.v
                ini.save(mainBind, iniFile)
                sampAddChatMessage(u8:decode("Вы сохранили: "..noteText.v.." Текущая строка: "..noteLock), -1)
            end
            if noteLock == 4 then
                mainBind.Console.note4 = noteText.v
                ini.save(mainBind, iniFile)
                sampAddChatMessage(u8:decode'Вы сохранили: ' .. u8:decode(noteText.v) .. u8:decode" Текущая строка: " .. noteLock, -1)
            end
            if noteLock == 5 then
                mainBind.Console.note5 = noteText.v
                ini.save(mainBind, iniFile)
                sampAddChatMessage(u8:decode'Вы сохранили: ' .. u8:decode(noteText.v) .. u8:decode" Текущая строка: " .. noteLock, -1)
            end
            if noteLock == 6 then
                mainBind.Console.note6 = noteText.v
                ini.save(mainBind, iniFile)
                sampAddChatMessage(u8:decode'Вы сохранили: ' .. u8:decode(noteText.v) .. u8:decode" Текущая строка: " .. noteLock, -1)
            end
            if noteLock == 7 then
                mainBind.Console.note7 = noteText.v
                ini.save(mainBind, iniFile)
                sampAddChatMessage(u8:decode'Вы сохранили: ' .. u8:decode(noteText.v) .. u8:decode" Текущая строка: " .. noteLock, -1)
            end
            if noteLock == 8 then
                mainBind.Console.note8 = noteText.v
                ini.save(mainBind, iniFile)
                sampAddChatMessage(u8:decode'Вы сохранили: ' .. u8:decode(noteText.v) .. u8:decode" Текущая строка: " .. noteLock, -1)
            end
            if noteLock == 9 then
                mainBind.Console.note9 = noteText.v
                ini.save(mainBind, iniFile)
                sampAddChatMessage(u8:decode'Вы сохранили: ' .. u8:decode(noteText.v) .. u8:decode" Текущая строка: " .. noteLock, -1)
            end
            if noteLock == 10 then
                mainBind.Console.note10 = noteText.v
                ini.save(mainBind, iniFile)
                sampAddChatMessage(u8:decode'Вы сохранили: ' .. u8:decode(noteText.v) .. u8:decode" Текущая строка: " .. noteLock, -1)
            end
            if noteLock == 11 then
                mainBind.Console.note11 = noteText.v
                ini.save(mainBind, iniFile)
                sampAddChatMessage(u8:decode'Вы сохранили: ' .. u8:decode(noteText.v) .. u8:decode" Текущая строка: " .. noteLock, -1)
            end
            if noteLock == 12 then
                mainBind.Console.note12 = noteText.v
                ini.save(mainBind, iniFile)
                sampAddChatMessage(u8:decode'Вы сохранили: ' .. u8:decode(noteText.v) .. u8:decode" Текущая строка: " .. noteLock, -1)
            end
            if noteLock == 13 then
                mainBind.Console.note13 = noteText.v
                ini.save(mainBind, iniFile)
                sampAddChatMessage(u8:decode'Вы сохранили: ' .. u8:decode(noteText.v) .. u8:decode" Текущая строка: " .. noteLock, -1)
            end
            if noteLock == 14 then
                mainBind.Console.note14 = noteText.v
                ini.save(mainBind, iniFile)
                sampAddChatMessage(u8:decode'Вы сохранили: ' .. u8:decode(noteText.v) .. u8:decode" Текущая строка: " .. noteLock, -1)
            end
            if noteLock == 15 then
                mainBind.Console.note15 = noteText.v
                ini.save(mainBind, iniFile)
                sampAddChatMessage(u8:decode'Вы сохранили: ' .. u8:decode(noteText.v) .. u8:decode" Текущая строка: " .. noteLock, -1)
                sampAddChatMessage(u8:decode'Внимание достигнут придел текстов! Нажмите на кнопку ниже!', FF0000)
            end
        end
        if imgui.Button('Перенести строку', imgui.ImVec2(150, 30)) then
            noteLock = noteLock + 1
            sampAddChatMessage(u8:decode'Текущая строка: ' .. noteLock, -1)
        end
        if imgui.Button('Очистить тексты', imgui.ImVec2(150, 30)) then
            mainBind.Console.note1 = "пусто"
            mainBind.Console.note2 = "пусто"
            mainBind.Console.note3 = "пусто"
            mainBind.Console.note4 = "пусто"
            mainBind.Console.note5 = "пусто"
            mainBind.Console.note6 = "пусто"
            mainBind.Console.note7 = "пусто"
            mainBind.Console.note8 = "пусто"
            mainBind.Console.note9 = "пусто"
            mainBind.Console.note10 = "пусто"
            mainBind.Console.note11 = "пусто"
            mainBind.Console.note12 = "пусто"
            mainBind.Console.note13 = "пусто"
            mainBind.Console.note14 = "пусто"
            mainBind.Console.note15 = "пусто"
            ini.save(mainBind, iniFile)
            noteLock = 1
            sampAddChatMessage(u8:decode"Успешно", -1)
        end
        if imgui.Button('Вывести текст', imgui.ImVec2(150, 30)) then
            sampAddChatMessage(u8:decode"1 текст: ".. u8:decode(mainBind.Console.note1), -1)
            sampAddChatMessage(u8:decode"2 текст: ".. u8:decode(mainBind.Console.note2), -1)
            sampAddChatMessage(u8:decode"3 текст: ".. u8:decode(mainBind.Console.note3), -1)
            sampAddChatMessage(u8:decode"4 текст: ".. u8:decode(mainBind.Console.note4), -1)
            sampAddChatMessage(u8:decode"5 текст: ".. u8:decode(mainBind.Console.note5), -1)
            sampAddChatMessage(u8:decode"6 текст: ".. u8:decode(mainBind.Console.note6), -1)
            sampAddChatMessage(u8:decode"7 текст: ".. u8:decode(mainBind.Console.note7), -1)
            sampAddChatMessage(u8:decode"8 текст: ".. u8:decode(mainBind.Console.note8), -1)
            sampAddChatMessage(u8:decode"9 текст: ".. u8:decode(mainBind.Console.note9), -1)
            sampAddChatMessage(u8:decode"10 текст: ".. u8:decode(mainBind.Console.note10), -1)
            sampAddChatMessage(u8:decode"11 текст: ".. u8:decode(mainBind.Console.note11), -1)
            sampAddChatMessage(u8:decode"12 текст: ".. u8:decode(mainBind.Console.note12), -1)
            sampAddChatMessage(u8:decode"13 текст: ".. u8:decode(mainBind.Console.note13), -1)
            sampAddChatMessage(u8:decode"14 текст: ".. u8:decode(mainBind.Console.note14), -1)
            sampAddChatMessage(u8:decode"15 текст: ".. u8:decode(mainBind.Console.note15), -1)
        end
        imgui.Separator()
        imgui.Text('Тут можно сохранить свою активацию. Введите в поле ниже саму комманду и нажмите на кнопку!')
        imgui.InputText('Комманда', CMDact)
        if imgui.Button('Сохранить команду', imgui.ImVec2(150, 30)) then
            mainBind.Console.command = CMDact.v
            sampAddChatMessage(u8:decode"Успешно!", -1)
            
            
        end
    imgui.End()
end
 

Mico

Активный
251
48
Я давно делал функцию кнопки с подсказкой, но просрал. Мб у кого то есть (сейчас уже сам не напишу, ниче не помню XD), если есть скиньте пожалуйста) или кому не лень - напишите XD

Обычная кнопка (желательно под цвет кнопки), но при наведении подсказка.
 

SKIP_CRMP

Участник
90
7
Знает кто чит на телепорт с зависимостью от машины, куда телепортируешься?
 

zTechnology

Известный
1,101
486
Не работает
Лог:
[ML] (error) test.lua: C:\Games\GTA\moonloader\lib\encoding.lua:77: bad argument #1 to 'iconv' (string expected, got nil)
stack traceback:
    [C]: in function 'iconv'
    C:\Games\GTA\moonloader\lib\encoding.lua:77: in function 'decode'
    C:\Games\GTA\moonloader\test.lua:172: in function 'OnDrawFrame'
    C:\Games\GTA\moonloader\lib\imgui.lua:1378: in function <C:\Games\GTA\moonloader\lib\imgui.lua:1367>
[ML] (error) test.lua: Script died due to an error. (07B01C94)
Код:
Lua:
local sampev = require('lib.samp.events')
require 'lib.moonloader'

local imgui = require 'imgui'
local ini = require 'inicfg'
local encoding = require "encoding"
encoding.default = "cp1251"
local u8 = encoding.UTF8

local iniFile = "moonloader\\Script by auf\\iniFile.ini"
local Directory = "moonloader\\Script by auf"
local windowImgui = imgui.ImBool(false)
local noteText = imgui.ImBuffer(256)
local CMDact = imgui.ImBuffer(256)
local noteLock = 1
local wmine = 700

local rak = require 'samp.raknet'

local mainBind = ini.load(nil, iniFile)

local tag = "{FF00FF}Script by auf.exe"

local x, y = getScreenResolution()

if not doesDirectoryExist(Directory) then
    createDirectory(Directory)
end

if not doesFileExist(iniFile) then
    f = io.open(iniFile, 'a')
    f:write("[Console]\n")
    f:write("command=hmenu")
    f:close()
end

function main()
    while not isSampAvailable() do wait(0) end
    sampAddChatMessage(tag, -1)
    sampRegisterChatCommand(mainBind.Console.command, cmd_imgui)
    while true do
        wait(0)
    end
end

function sampev.onServerMessage(color, text)
    if text:find('Лошара ебаная') then
        sampSendChat('Пошёл нахуй')
    end
end

function cmd_imgui()
    imgui.Process = true
end

function imgui.OnDrawFrame()
    imgui.SetNextWindowPos(imgui.ImVec2(x / 2, y / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
    imgui.SetNextWindowSize(imgui.ImVec2(750, 300), imgui.Cond.FirstUseEver)
    imgui.Begin("Здарова", windowImgui, imgui.WindowFlags.NoResize + imgui.WindowFlags.NoTitleBar + imgui.WindowFlags.NoMove)
        imgui.Text('Здраствуй путник, сегодня ты попал в чудесный мир ' .. sampGetCurrentServerName() .. '. Ловите скрипт для записок, так как читы я попросту делать не умею.')
        imgui.Text('Авто обновления тут нету, так-что заходи на тему под названием [All Servers] Notepad Lua by auf.exe и там скачивай новую версию.')
        imgui.Text('В скорем времени добавлю кастомную команду а пока пользуйся.')
        imgui.Separator()
        imgui.InputText('Ввод записки', noteText)
        if imgui.Button('Сохранить(Максимум 15)', imgui.ImVec2(150, 30)) then
            if noteLock == 1 then
                mainBind.Console.note1 = noteText.v
                ini.save(mainBind, iniFile)
                sampAddChatMessage(u8:decode'Вы сохранили: ' .. u8:decode(noteText.v) .. u8:decode" Текущая строка: " .. noteLock, -1)
            end
            if noteLock == 2 then
                mainBind.Console.note2 = noteText.v
                ini.save(mainBind, iniFile)
                sampAddChatMessage(u8:decode'Вы сохранили: ' .. u8:decode(noteText.v) .. u8:decode" Текущая строка: " .. noteLock, -1)
            end
            if noteLock == 3 then
                mainBind.Console.note3 = noteText.v
                ini.save(mainBind, iniFile)
                sampAddChatMessage(u8:decode("Вы сохранили: "..noteText.v.." Текущая строка: "..noteLock), -1)
            end
            if noteLock == 4 then
                mainBind.Console.note4 = noteText.v
                ini.save(mainBind, iniFile)
                sampAddChatMessage(u8:decode'Вы сохранили: ' .. u8:decode(noteText.v) .. u8:decode" Текущая строка: " .. noteLock, -1)
            end
            if noteLock == 5 then
                mainBind.Console.note5 = noteText.v
                ini.save(mainBind, iniFile)
                sampAddChatMessage(u8:decode'Вы сохранили: ' .. u8:decode(noteText.v) .. u8:decode" Текущая строка: " .. noteLock, -1)
            end
            if noteLock == 6 then
                mainBind.Console.note6 = noteText.v
                ini.save(mainBind, iniFile)
                sampAddChatMessage(u8:decode'Вы сохранили: ' .. u8:decode(noteText.v) .. u8:decode" Текущая строка: " .. noteLock, -1)
            end
            if noteLock == 7 then
                mainBind.Console.note7 = noteText.v
                ini.save(mainBind, iniFile)
                sampAddChatMessage(u8:decode'Вы сохранили: ' .. u8:decode(noteText.v) .. u8:decode" Текущая строка: " .. noteLock, -1)
            end
            if noteLock == 8 then
                mainBind.Console.note8 = noteText.v
                ini.save(mainBind, iniFile)
                sampAddChatMessage(u8:decode'Вы сохранили: ' .. u8:decode(noteText.v) .. u8:decode" Текущая строка: " .. noteLock, -1)
            end
            if noteLock == 9 then
                mainBind.Console.note9 = noteText.v
                ini.save(mainBind, iniFile)
                sampAddChatMessage(u8:decode'Вы сохранили: ' .. u8:decode(noteText.v) .. u8:decode" Текущая строка: " .. noteLock, -1)
            end
            if noteLock == 10 then
                mainBind.Console.note10 = noteText.v
                ini.save(mainBind, iniFile)
                sampAddChatMessage(u8:decode'Вы сохранили: ' .. u8:decode(noteText.v) .. u8:decode" Текущая строка: " .. noteLock, -1)
            end
            if noteLock == 11 then
                mainBind.Console.note11 = noteText.v
                ini.save(mainBind, iniFile)
                sampAddChatMessage(u8:decode'Вы сохранили: ' .. u8:decode(noteText.v) .. u8:decode" Текущая строка: " .. noteLock, -1)
            end
            if noteLock == 12 then
                mainBind.Console.note12 = noteText.v
                ini.save(mainBind, iniFile)
                sampAddChatMessage(u8:decode'Вы сохранили: ' .. u8:decode(noteText.v) .. u8:decode" Текущая строка: " .. noteLock, -1)
            end
            if noteLock == 13 then
                mainBind.Console.note13 = noteText.v
                ini.save(mainBind, iniFile)
                sampAddChatMessage(u8:decode'Вы сохранили: ' .. u8:decode(noteText.v) .. u8:decode" Текущая строка: " .. noteLock, -1)
            end
            if noteLock == 14 then
                mainBind.Console.note14 = noteText.v
                ini.save(mainBind, iniFile)
                sampAddChatMessage(u8:decode'Вы сохранили: ' .. u8:decode(noteText.v) .. u8:decode" Текущая строка: " .. noteLock, -1)
            end
            if noteLock == 15 then
                mainBind.Console.note15 = noteText.v
                ini.save(mainBind, iniFile)
                sampAddChatMessage(u8:decode'Вы сохранили: ' .. u8:decode(noteText.v) .. u8:decode" Текущая строка: " .. noteLock, -1)
                sampAddChatMessage(u8:decode'Внимание достигнут придел текстов! Нажмите на кнопку ниже!', FF0000)
            end
        end
        if imgui.Button('Перенести строку', imgui.ImVec2(150, 30)) then
            noteLock = noteLock + 1
            sampAddChatMessage(u8:decode'Текущая строка: ' .. noteLock, -1)
        end
        if imgui.Button('Очистить тексты', imgui.ImVec2(150, 30)) then
            mainBind.Console.note1 = "пусто"
            mainBind.Console.note2 = "пусто"
            mainBind.Console.note3 = "пусто"
            mainBind.Console.note4 = "пусто"
            mainBind.Console.note5 = "пусто"
            mainBind.Console.note6 = "пусто"
            mainBind.Console.note7 = "пусто"
            mainBind.Console.note8 = "пусто"
            mainBind.Console.note9 = "пусто"
            mainBind.Console.note10 = "пусто"
            mainBind.Console.note11 = "пусто"
            mainBind.Console.note12 = "пусто"
            mainBind.Console.note13 = "пусто"
            mainBind.Console.note14 = "пусто"
            mainBind.Console.note15 = "пусто"
            ini.save(mainBind, iniFile)
            noteLock = 1
            sampAddChatMessage(u8:decode"Успешно", -1)
        end
        if imgui.Button('Вывести текст', imgui.ImVec2(150, 30)) then
            sampAddChatMessage(u8:decode"1 текст: ".. u8:decode(mainBind.Console.note1), -1)
            sampAddChatMessage(u8:decode"2 текст: ".. u8:decode(mainBind.Console.note2), -1)
            sampAddChatMessage(u8:decode"3 текст: ".. u8:decode(mainBind.Console.note3), -1)
            sampAddChatMessage(u8:decode"4 текст: ".. u8:decode(mainBind.Console.note4), -1)
            sampAddChatMessage(u8:decode"5 текст: ".. u8:decode(mainBind.Console.note5), -1)
            sampAddChatMessage(u8:decode"6 текст: ".. u8:decode(mainBind.Console.note6), -1)
            sampAddChatMessage(u8:decode"7 текст: ".. u8:decode(mainBind.Console.note7), -1)
            sampAddChatMessage(u8:decode"8 текст: ".. u8:decode(mainBind.Console.note8), -1)
            sampAddChatMessage(u8:decode"9 текст: ".. u8:decode(mainBind.Console.note9), -1)
            sampAddChatMessage(u8:decode"10 текст: ".. u8:decode(mainBind.Console.note10), -1)
            sampAddChatMessage(u8:decode"11 текст: ".. u8:decode(mainBind.Console.note11), -1)
            sampAddChatMessage(u8:decode"12 текст: ".. u8:decode(mainBind.Console.note12), -1)
            sampAddChatMessage(u8:decode"13 текст: ".. u8:decode(mainBind.Console.note13), -1)
            sampAddChatMessage(u8:decode"14 текст: ".. u8:decode(mainBind.Console.note14), -1)
            sampAddChatMessage(u8:decode"15 текст: ".. u8:decode(mainBind.Console.note15), -1)
        end
        imgui.Separator()
        imgui.Text('Тут можно сохранить свою активацию. Введите в поле ниже саму комманду и нажмите на кнопку!')
        imgui.InputText('Комманда', CMDact)
        if imgui.Button('Сохранить команду', imgui.ImVec2(150, 30)) then
            mainBind.Console.command = CMDact.v
            sampAddChatMessage(u8:decode"Успешно!", -1)
           
           
        end
    imgui.End()
end
у тебя видимо битая библиотека, а и да перестань говнокодить:
1646581783291.png


Знает кто чит на телепорт с зависимостью от машины, куда телепортируешься?
телепорт унок
 

Вложения

  • encoding.lua
    2.6 KB · Просмотры: 4

dmitri4

Известный
452
78
Я давно делал функцию кнопки с подсказкой, но просрал. Мб у кого то есть (сейчас уже сам не напишу, ниче не помню XD), если есть скиньте пожалуйста) или кому не лень - напишите XD

Обычная кнопка (желательно под цвет кнопки), но при наведении подсказка.
 
  • Нравится
Реакции: Mico

sep

Известный
681
77
как при открытие инвентаря визуально отключить курсор sampSetCursorMode(0) наработает
но так чтобы sampSendClickTextdraw работал как и раньше

===================================================================================================================================================================================================================================================================================================
как сделать так чтобы ты выпрыгивал из машины только в бок от двери а не как попало
сейчас прыжок зависит от того как машина стоит
-- Мгновенный выход из авто
if isKeyDown(VK_SHIFT) and isKeyJustPressed(VK_2) and isCharInAnyCar(PLAYER_PED) then
local cx, cy, cz = getCarCoordinates(storeCarCharIsInNoSave(PLAYER_PED))
warpCharFromCarToCoord(PLAYER_PED, cx, cy + 2, cz)
end

версия на клео которая работает как надо
код:
// This file was decompiled using SASCM.ini published by GTAG (http://gtag.gtagaming.com/opcode-database/) on 24.2.2014
{$CLEO .cs}

//-------------MAIN---------------
0662: write_debug "SCRIPT_BY_[_KRASH_]" // nop
03A4: script_name "GETOUTFROMTHISFUCKINGCAR"

:GETOUTFROMTHISFUCKINGCAR_51
0001: wait 0
00D6: if and
056D:   does_char_exist $PLAYER_ACTOR
00DF:   is_char_in_any_car $PLAYER_ACTOR
004D: goto_if_false @GETOUTFROMTHISFUCKINGCAR_51
0001: wait 0
00D6: if
0AB0:   is_key_pressed 96
004D: goto_if_false @GETOUTFROMTHISFUCKINGCAR_51
0001: wait 0
00D6: if
04A9:   is_char_in_any_heli $PLAYER_ACTOR
004D: goto_if_false @GETOUTFROMTHISFUCKINGCAR_174
04C4: get_offset_from_char_in_world_coords $PLAYER_ACTOR offset -2.0 0.0 -0.5 store_to 1@ 2@ 3@
0001: wait 100
0362: warp_char_from_car_to_coord $PLAYER_ACTOR coord 1@ 2@ 3@
0001: wait 1000
0002: goto @GETOUTFROMTHISFUCKINGCAR_51

:GETOUTFROMTHISFUCKINGCAR_174
04C4: get_offset_from_char_in_world_coords $PLAYER_ACTOR offset -2.0 0.0 -0.5 store_to 1@ 2@ 3@
0001: wait 100
0362: warp_char_from_car_to_coord $PLAYER_ACTOR coord 1@ 2@ 3@
0001: wait 1000
0002: goto @GETOUTFROMTHISFUCKINGCAR_51