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

paulohardy

вы еще постите говно? тогда я иду к вам
Всефорумный модератор
1,909
1,286
Я тупой, но как сделать, чтобы я писал /de и он автоматически открывал диалог с /makegun и выбирал 2 лист, вот код:
Govno Code:
require 'moonloader'
local sampev = require 'lib.samp.events'

function main()
    sampAddChatMessage("[Fast Gun] {FFFFFF}Скрипт был успешно запущен. {FF5000}/dialog {FFFFFF}для информации.", 0xFF5000)
    sampRegisterChatCommand("dialog", func)
    sampRegisterChatCommand("de", deagle)
    while true do
    wait(0)
    local resultMain, buttonMain, listMain = sampHasDialogRespond(220)
end
end

function func()
sampAddChatMessage('q')
sampShowDialog(109, "Fast Gun", "Fast Deagle - /de\nFast M4 - /m4\nFast Rifle - /rfl", "ОК", "Отмена", DIALOG_STYLE_LIST)
end

function deagle()
sampSendChat('/makegun')
sampSetCurrentDialogListItem()
end
делай отправку makegun и через samp events в функции onShowDialog выбирай второй пункт
img = imgui.CreateTextureFromFile(getGameDirectory() .. '\\moonloader\\Папка\\Линия.png')
куда угодно
 

Fabregoo

Известный
656
128
Было все хорошо.Но я установил новый стиль умгуи, убрал его.
И теперь при активации скрипта ( он в imgui ) вылазит курсор, и скрипт прекращает роботу.
мун лог
sdfffffs.lua: D:\GTA San Andreas - копия\moonloader\sdfffffs.lua:50: attempt to call field 'TextQuestion' (a nil value)
stack traceback:
D:\GTA San Andreas - копия\moonloader\sdfffffs.lua:50: in function 'OnDrawFrame'
D:\GTA San Andreas - копия\moonloader\lib\imgui.lua:1378: in function <D:\GTA San Andreas - копия\moonloader\lib\imgui.lua:1367>
[ML] (error) sdfffffs.lua: Script died due to an error. (id:9)

Код скрипта
Lua:
require 'moonloader'
local ev = require 'lib.samp.events'
local ac = true
local imgui = require 'imgui'
local key = require 'vkeys'
local inicfg = require 'inicfg'
local directini = "moonloader\\sdff.ini"
local mainini = inicfg.load(nil, directini)
local hook = require("lib.samp.events")
local encoding = require 'encoding'
local CheckBox = imgui.ImBool(false)
encoding.default = 'CP1251'
u8 = encoding.UTF8
activation = false

local main_window_state = imgui.ImBool(false)
function imgui.OnDrawFrame()
    if main_window_state.v then
        imgui.SetNextWindowSize(imgui.ImVec2(1200, 600), imgui.Cond.FirstUseEver)
        imgui.Begin('Mini_Helper', main_window_state)
        imgui.Text(u8'РП Документы.')
        if imgui.Button(u8"РП паспорт.") then
            lua_thread.create(function()
                sampSendChat("/me снЯл портфель с плечей, положил на землю, и открыл его")
                wait(1200)
                sampSendChat("/me достал из откротого портфеля, и открыл первую страницу")
                wait(1200)
                sampSendChat("/me передал паспорт человеку напротив")
                wait(1200)
                sampSetChatInputText('/showpass ')
                sampSetChatInputEnabled(true)
            end)
        end
                    imgui.SameLine()
                         imgui.TextQuestion(u8'Отыграет за вас паспорт по РП')
                imgui.SameLine(220)
            if imgui.Button(u8"РП Мед.Карта.") then
            lua_thread.create(function()
                sampSendChat("/me достал из левого кармана штанов мед.книжку")
                wait(1200)
                sampSendChat("/me открыл мед.книжку на 1 странице, и передал человеку напротив")
                wait(1200)
                sampSendChat("/todo Вот держите*говорит передаваю документ человеку напротив.")
                wait(1200)
                sampSetChatInputText('/showmc ')
                sampSetChatInputEnabled(true)
            end)
        end
        imgui.SameLine()
              imgui.TextQuestion(u8"Отыграет за вас по РП Мед.Карту.")
              imgui.SameLine(440)
        if imgui.Button(u8'РП лицензии.') then
            lua_thread.create(function()
                sampSendChat("/me достал из нагрудного карманчика, и открыл 1-у страницу")
                wait(1200)
                sampSendChat("/todo Вот держите* говорит передаваю лицензии человеку напротив.")
                wait(1200)
                sampSendChat("/me передал лицензии человеку напротив")
                wait(1200)
                sampSetChatInputText('/showlic ')
                sampSetChatInputEnabled(true)
            end)
        end
        imgui.SameLine()
        imgui.TextQuestion(u8"Отыграет за вас по РП лицензии.")
        imgui.Text(u8'Роле Плей топ.')
        imgui.Separator(10)
        imgui.SameLine(8)
        if imgui.Button('Disconnect') then
            sampDisconnectWithReason(0)
        end
        imgui.SameLine()
        imgui.TextQuestion(u8'По нажатию вас сразу дисконектит от сервера.')
        imgui.SameLine(220)
        if imgui.Button(u8'Репорт') then
            activation = not activation
            sampSendChat('/report')
        end
        imgui.SameLine()
           imgui.TextQuestion(u8"Как только вы нажмете сюда, то в репорт отправится фраза,'Фаст следите'")
        imgui.Separator()
             if imgui.Button('rprprprprprp') then
             sampAddChatMessage('</3', -1)
             end
             imgui.SameLine(220)
              if imgui.Button('rprprprprprprprprp') then
              sampSendChat("Џривет")
              end   
               imgui.SameLine(420)
               if imgui.Button('prosto rp') then
                sampAddChatMessage('ты кросс нажал на prosto rp', -1)
                 end
               if imgui.Button('1') then sampSendChat('MQ') end
                    imgui.SameLine()
                         imgui.TextQuestion(u8'ЦЕ КНОПКА 1')           
        imgui.End()
    end
end

function hook.onShowDialog(dialogId, style, title ,button1, button2, text)
    lua_thread.create(function()
        if activation then
            wait(100)
            if dialogId == (32) and ac then
                sampSendDialogResponse(dialogId, 1, sampGetCurrentDialogListItem(), 'Фаст следите, требуется помощь')
                ac = false
                return false
            end
        end
    end)
end

function main()
  while true do
    wait(0)
    if wasKeyPressed(key.VK_R) then -- активация по нажатию клавиши X
        main_window_state.v = not main_window_state.v -- переключаем статус активности окна, не забываем про .v
    end
    imgui.Process = main_window_state.v -- теперь значение imgui.Process всегда будет задаваться в зависимости от активности основного окна
  end
end
 

_razor

t.me/sssecretway | ТГК: t.me/razor_code
Всефорумный модератор
1,948
3,212
Куда впихнуть...
img = imgui.CreateTextureFromFile(getGameDirectory() .. '\\moonloader\\Папка\\Линия.png')
И еще вопросик.
Как добавить сразу несколько стилей имуги в один скрипт?
То есть что - бы была кнопка переключится с одного допустим синий, на вторый к примеру красный.
Создавать для каждого стиля свою функцию и в нужный момент их вызывать, они будут меняться в реальном времени без закрытия окна и перезагрузки скрипта
Было все хорошо.Но я установил новый стиль умгуи, убрал его.
И теперь при активации скрипта ( он в imgui ) вылазит курсор, и скрипт прекращает роботу.
мун лог
sdfffffs.lua: D:\GTA San Andreas - копия\moonloader\sdfffffs.lua:50: attempt to call field 'TextQuestion' (a nil value)
stack traceback:
D:\GTA San Andreas - копия\moonloader\sdfffffs.lua:50: in function 'OnDrawFrame'
D:\GTA San Andreas - копия\moonloader\lib\imgui.lua:1378: in function <D:\GTA San Andreas - копия\moonloader\lib\imgui.lua:1367>
[ML] (error) sdfffffs.lua: Script died due to an error. (id:9)

Код скрипта
Lua:
require 'moonloader'
local ev = require 'lib.samp.events'
local ac = true
local imgui = require 'imgui'
local key = require 'vkeys'
local inicfg = require 'inicfg'
local directini = "moonloader\\sdff.ini"
local mainini = inicfg.load(nil, directini)
local hook = require("lib.samp.events")
local encoding = require 'encoding'
local CheckBox = imgui.ImBool(false)
encoding.default = 'CP1251'
u8 = encoding.UTF8
activation = false

local main_window_state = imgui.ImBool(false)
function imgui.OnDrawFrame()
    if main_window_state.v then
        imgui.SetNextWindowSize(imgui.ImVec2(1200, 600), imgui.Cond.FirstUseEver)
        imgui.Begin('Mini_Helper', main_window_state)
        imgui.Text(u8'РП Документы.')
        if imgui.Button(u8"РП паспорт.") then
            lua_thread.create(function()
                sampSendChat("/me снЯл портфель с плечей, положил на землю, и открыл его")
                wait(1200)
                sampSendChat("/me достал из откротого портфеля, и открыл первую страницу")
                wait(1200)
                sampSendChat("/me передал паспорт человеку напротив")
                wait(1200)
                sampSetChatInputText('/showpass ')
                sampSetChatInputEnabled(true)
            end)
        end
                    imgui.SameLine()
                         imgui.TextQuestion(u8'Отыграет за вас паспорт по РП')
                imgui.SameLine(220)
            if imgui.Button(u8"РП Мед.Карта.") then
            lua_thread.create(function()
                sampSendChat("/me достал из левого кармана штанов мед.книжку")
                wait(1200)
                sampSendChat("/me открыл мед.книжку на 1 странице, и передал человеку напротив")
                wait(1200)
                sampSendChat("/todo Вот держите*говорит передаваю документ человеку напротив.")
                wait(1200)
                sampSetChatInputText('/showmc ')
                sampSetChatInputEnabled(true)
            end)
        end
        imgui.SameLine()
              imgui.TextQuestion(u8"Отыграет за вас по РП Мед.Карту.")
              imgui.SameLine(440)
        if imgui.Button(u8'РП лицензии.') then
            lua_thread.create(function()
                sampSendChat("/me достал из нагрудного карманчика, и открыл 1-у страницу")
                wait(1200)
                sampSendChat("/todo Вот держите* говорит передаваю лицензии человеку напротив.")
                wait(1200)
                sampSendChat("/me передал лицензии человеку напротив")
                wait(1200)
                sampSetChatInputText('/showlic ')
                sampSetChatInputEnabled(true)
            end)
        end
        imgui.SameLine()
        imgui.TextQuestion(u8"Отыграет за вас по РП лицензии.")
        imgui.Text(u8'Роле Плей топ.')
        imgui.Separator(10)
        imgui.SameLine(8)
        if imgui.Button('Disconnect') then
            sampDisconnectWithReason(0)
        end
        imgui.SameLine()
        imgui.TextQuestion(u8'По нажатию вас сразу дисконектит от сервера.')
        imgui.SameLine(220)
        if imgui.Button(u8'Репорт') then
            activation = not activation
            sampSendChat('/report')
        end
        imgui.SameLine()
           imgui.TextQuestion(u8"Как только вы нажмете сюда, то в репорт отправится фраза,'Фаст следите'")
        imgui.Separator()
             if imgui.Button('rprprprprprp') then
             sampAddChatMessage('</3', -1)
             end
             imgui.SameLine(220)
              if imgui.Button('rprprprprprprprprp') then
              sampSendChat("Џривет")
              end  
               imgui.SameLine(420)
               if imgui.Button('prosto rp') then
                sampAddChatMessage('ты кросс нажал на prosto rp', -1)
                 end
               if imgui.Button('1') then sampSendChat('MQ') end
                    imgui.SameLine()
                         imgui.TextQuestion(u8'ЦЕ КНОПКА 1')          
        imgui.End()
    end
end

function hook.onShowDialog(dialogId, style, title ,button1, button2, text)
    lua_thread.create(function()
        if activation then
            wait(100)
            if dialogId == (32) and ac then
                sampSendDialogResponse(dialogId, 1, sampGetCurrentDialogListItem(), 'Фаст следите, требуется помощь')
                ac = false
                return false
            end
        end
    end)
end

function main()
  while true do
    wait(0)
    if wasKeyPressed(key.VK_R) then -- активация по нажатию клавиши X
        main_window_state.v = not main_window_state.v -- переключаем статус активности окна, не забываем про .v
    end
    imgui.Process = main_window_state.v -- теперь значение imgui.Process всегда будет задаваться в зависимости от активности основного окна
  end
end
Ты похоже удалил функцию с imgui.TextQuestion
 
  • Нравится
Реакции: Fabregoo

paulohardy

вы еще постите говно? тогда я иду к вам
Всефорумный модератор
1,909
1,286
Что за imgui.TestQuestion?
Было все хорошо.Но я установил новый стиль умгуи, убрал его.
И теперь при активации скрипта ( он в imgui ) вылазит курсор, и скрипт прекращает роботу.
мун лог
sdfffffs.lua: D:\GTA San Andreas - копия\moonloader\sdfffffs.lua:50: attempt to call field 'TextQuestion' (a nil value)
stack traceback:
D:\GTA San Andreas - копия\moonloader\sdfffffs.lua:50: in function 'OnDrawFrame'
D:\GTA San Andreas - копия\moonloader\lib\imgui.lua:1378: in function <D:\GTA San Andreas - копия\moonloader\lib\imgui.lua:1367>
[ML] (error) sdfffffs.lua: Script died due to an error. (id:9)

Код скрипта
Lua:
require 'moonloader'
local ev = require 'lib.samp.events'
local ac = true
local imgui = require 'imgui'
local key = require 'vkeys'
local inicfg = require 'inicfg'
local directini = "moonloader\\sdff.ini"
local mainini = inicfg.load(nil, directini)
local hook = require("lib.samp.events")
local encoding = require 'encoding'
local CheckBox = imgui.ImBool(false)
encoding.default = 'CP1251'
u8 = encoding.UTF8
activation = false

local main_window_state = imgui.ImBool(false)
function imgui.OnDrawFrame()
    if main_window_state.v then
        imgui.SetNextWindowSize(imgui.ImVec2(1200, 600), imgui.Cond.FirstUseEver)
        imgui.Begin('Mini_Helper', main_window_state)
        imgui.Text(u8'РП Документы.')
        if imgui.Button(u8"РП паспорт.") then
            lua_thread.create(function()
                sampSendChat("/me снЯл портфель с плечей, положил на землю, и открыл его")
                wait(1200)
                sampSendChat("/me достал из откротого портфеля, и открыл первую страницу")
                wait(1200)
                sampSendChat("/me передал паспорт человеку напротив")
                wait(1200)
                sampSetChatInputText('/showpass ')
                sampSetChatInputEnabled(true)
            end)
        end
                    imgui.SameLine()
                         imgui.TextQuestion(u8'Отыграет за вас паспорт по РП')
                imgui.SameLine(220)
            if imgui.Button(u8"РП Мед.Карта.") then
            lua_thread.create(function()
                sampSendChat("/me достал из левого кармана штанов мед.книжку")
                wait(1200)
                sampSendChat("/me открыл мед.книжку на 1 странице, и передал человеку напротив")
                wait(1200)
                sampSendChat("/todo Вот держите*говорит передаваю документ человеку напротив.")
                wait(1200)
                sampSetChatInputText('/showmc ')
                sampSetChatInputEnabled(true)
            end)
        end
        imgui.SameLine()
              imgui.TextQuestion(u8"Отыграет за вас по РП Мед.Карту.")
              imgui.SameLine(440)
        if imgui.Button(u8'РП лицензии.') then
            lua_thread.create(function()
                sampSendChat("/me достал из нагрудного карманчика, и открыл 1-у страницу")
                wait(1200)
                sampSendChat("/todo Вот держите* говорит передаваю лицензии человеку напротив.")
                wait(1200)
                sampSendChat("/me передал лицензии человеку напротив")
                wait(1200)
                sampSetChatInputText('/showlic ')
                sampSetChatInputEnabled(true)
            end)
        end
        imgui.SameLine()
        imgui.TextQuestion(u8"Отыграет за вас по РП лицензии.")
        imgui.Text(u8'Роле Плей топ.')
        imgui.Separator(10)
        imgui.SameLine(8)
        if imgui.Button('Disconnect') then
            sampDisconnectWithReason(0)
        end
        imgui.SameLine()
        imgui.TextQuestion(u8'По нажатию вас сразу дисконектит от сервера.')
        imgui.SameLine(220)
        if imgui.Button(u8'Репорт') then
            activation = not activation
            sampSendChat('/report')
        end
        imgui.SameLine()
           imgui.TextQuestion(u8"Как только вы нажмете сюда, то в репорт отправится фраза,'Фаст следите'")
        imgui.Separator()
             if imgui.Button('rprprprprprp') then
             sampAddChatMessage('</3', -1)
             end
             imgui.SameLine(220)
              if imgui.Button('rprprprprprprprprp') then
              sampSendChat("Џривет")
              end  
               imgui.SameLine(420)
               if imgui.Button('prosto rp') then
                sampAddChatMessage('ты кросс нажал на prosto rp', -1)
                 end
               if imgui.Button('1') then sampSendChat('MQ') end
                    imgui.SameLine()
                         imgui.TextQuestion(u8'ЦЕ КНОПКА 1')          
        imgui.End()
    end
end

function hook.onShowDialog(dialogId, style, title ,button1, button2, text)
    lua_thread.create(function()
        if activation then
            wait(100)
            if dialogId == (32) and ac then
                sampSendDialogResponse(dialogId, 1, sampGetCurrentDialogListItem(), 'Фаст следите, требуется помощь')
                ac = false
                return false
            end
        end
    end)
end

function main()
  while true do
    wait(0)
    if wasKeyPressed(key.VK_R) then -- активация по нажатию клавиши X
        main_window_state.v = not main_window_state.v -- переключаем статус активности окна, не забываем про .v
    end
    imgui.Process = main_window_state.v -- теперь значение imgui.Process всегда будет задаваться в зависимости от активности основного окна
  end
end
а
 

Fabregoo

Известный
656
128
Как репорт, и Disconnect опустить буквально на очень мало [:)] а то линия немного зачепает их, скрин снизу, код скрипта тоже.

Код
Lua:
require 'moonloader'
local ev = require 'lib.samp.events'
local ac = true
local imgui = require 'imgui'
local key = require 'vkeys'
local inicfg = require 'inicfg'
local directini = "moonloader\\sdff.ini"
local mainini = inicfg.load(nil, directini)
local hook = require("lib.samp.events")
local encoding = require 'encoding'
local CheckBox = imgui.ImBool(false)
encoding.default = 'CP1251'
u8 = encoding.UTF8
activation = false

local main_window_state = imgui.ImBool(false)
function imgui.OnDrawFrame()
    if main_window_state.v then
        imgui.SetNextWindowSize(imgui.ImVec2(1200, 600), imgui.Cond.FirstUseEver)
        imgui.Begin('Mini_Helper', main_window_state)
        imgui.Text(u8'РП Документы.')
        if imgui.Button(u8"РП паспорт.") then
            lua_thread.create(function()
                sampSendChat("/me снЯл портфель с плечей, положил на землю, и открыл его")
                wait(1200)
                sampSendChat("/me достал из откротого портфеля, и открыл первую страницу")
                wait(1200)
                sampSendChat("/me передал паспорт человеку напротив")
                wait(1200)
                sampSetChatInputText('/showpass ')
                sampSetChatInputEnabled(true)
            end)
        end
                    imgui.SameLine()
                         imgui.TextQuestion(u8'Отыграет за вас паспорт по РП')
                imgui.SameLine(220)
            if imgui.Button(u8"РП Мед.Карта.") then
            lua_thread.create(function()
                sampSendChat("/me достал из левого кармана штанов мед.книжку")
                wait(1200)
                sampSendChat("/me открыл мед.книжку на 1 странице, и передал человеку напротив")
                wait(1200)
                sampSendChat("/todo Вот держите*говорит передаваю документ человеку напротив.")
                wait(1200)
                sampSetChatInputText('/showmc ')
                sampSetChatInputEnabled(true)
            end)
        end
        imgui.SameLine()
              imgui.TextQuestion(u8"Отыграет за вас по РП Мед.Карту.")
              imgui.SameLine(440)
        if imgui.Button(u8'РП лицензии.') then
            lua_thread.create(function()
                sampSendChat("/me достал из нагрудного карманчика, и открыл 1-у страницу")
                wait(1200)
                sampSendChat("/todo Вот держите* говорит передаваю лицензии человеку напротив.")
                wait(1200)
                sampSendChat("/me передал лицензии человеку напротив")
                wait(1200)
                sampSetChatInputText('/showlic ')
                sampSetChatInputEnabled(true)
            end)
        end
        imgui.SameLine()
        imgui.TextQuestion(u8"Отыграет за вас по РП лицензии.")
        imgui.Text(u8'Роле Плей топ.')
        imgui.Separator(10)
        imgui.SameLine(8)
        if imgui.Button('Disconnect') then
            sampDisconnectWithReason(0)
        end
        imgui.SameLine()
        imgui.TextQuestion(u8'По нажатию вас сразу дисконектит от сервера.')
        imgui.SameLine(220)
        if imgui.Button(u8'Репорт') then
            activation = not activation
            sampSendChat('/report')
        end
        imgui.SameLine()
           imgui.TextQuestion(u8"Как только вы нажмете сюда, то в репорт отправится фраза,'Фаст следите'")
        imgui.Separator()
             if imgui.Button('rprprprprprp') then
             sampAddChatMessage('</3', -1)
             end
             imgui.SameLine(220)
              if imgui.Button('rprprprprprprprprp') then
              sampSendChat("Џривет")
              end   
               imgui.SameLine(420)
               if imgui.Button('prosto rp') then
                sampAddChatMessage('ты кросс нажал на prosto rp', -1)
                 end
               if imgui.Button('1') then sampSendChat('MQ') end
                    imgui.SameLine()
                         imgui.TextQuestion(u8'ЦЕ КНОПКА 1')           
        imgui.End()
    end
end

function hook.onShowDialog(dialogId, style, title ,button1, button2, text)
    lua_thread.create(function()
        if activation then
            wait(100)
            if dialogId == (32) and ac then
                sampSendDialogResponse(dialogId, 1, sampGetCurrentDialogListItem(), 'Фаст следите, требуется помощь')
                ac = false
                return false
            end
        end
    end)
end

function main()
  while true do
    wait(0)
   if testCheat("HELP") then
        main_window_state.v = not main_window_state.v -- переключаем статус активности окна, не забываем про .v
    end
    imgui.Process = main_window_state.v -- теперь значение imgui.Process всегда будет задаваться в зависимости от активности основного окна
  end
end

function imgui.TextQuestion(text)
    imgui.TextDisabled('( ? )')
    if imgui.IsItemHovered() then
        imgui.BeginTooltip()
        imgui.PushTextWrapPos(450)
        imgui.TextUnformatted(text)
        imgui.PopTextWrapPos()
        imgui.EndTooltip()
    end
end
 

Вложения

  • sa-mp-031.png
    sa-mp-031.png
    60.2 KB · Просмотры: 168

ImPasha

Software Developer & System Administrator
Друг
1,788
2,141
Сделал телепорт по метке , скажите пж как сделать чтобы после комманды /teleport в чат писалось мол "Вы были телепортиованны"



Lua:
script_name("Создатель чита Goldie")


function main()
    while not isSampAvailable() do wait(100) end
    sampAddChatMessage("{01A0E9}[TpMelody] {ffffff} The script was successfully loaded!", -1)
          sampAddChatMessage("{01A0E9}[TpMelody] {ffffff} Author: {Goldie} !", -1)
          sampAddChatMessage("{01A0E9}[TpMelody] {ffffff} Activation /teleport ", -1)
 
    sampRegisterChatCommand('teleport',command)
    while true do wait(0) end end

function command()
    bool,x,y,z = getTargetBlipCoordinates()
    if bool then setCharCoordinates(playerPed,x,y,z) end end
Lua:
sampAddChatMessage("{01A0E9}[TpMelody] {ffffff} Вы были телепортированы", -1)
 

Fabregoo

Известный
656
128
Что за imgui.TestQuestion?

а
Чек боксы.
Мой вопросс:
как крашнуть игру, есть ли такая функция?...
Создавать для каждого стиля свою функцию и в нужный момент их вызывать, они будут меняться в реальном времени без закрытия окна и перезагрузки скрипта
Не подскажешь как реализовать.

Вопросс #1232124532
Как сделать что - то подобное как в аризона хелпер, то есть.
Я ввожу на клавиатуре arm и в чат пишется /armour..
 
Последнее редактирование:

0xNull_Dll

Известный
143
21
Слушайте, такое дело:

Есть кастомный самп клиент, там оффсеты другие (луашные методы, связанные с сампом там не работают)

Нужно как-то ловить функцию SetPlayerHealth (0x15BA0) и игнорировать её посредством чтения памяти, а не какими-либо готовыми функциями sampfuncs'a или луа.

Как это можно сделать?

Как я понял, сначала нужно взять хэндл dll'а сампа
getModuleHandle("samp.dll")

И к этому значению прибавить 0x15BA0?

Как это вообще работает?
 

VEN1LOV

Новичок
9
10
Не подскажешь как реализовать.
Если не изменяет память, всё должно выглядеть примерно вот так.
P.S. Последний раз писал скрипты на Lua с использованием Dear ImGUI где-то в начале лета, поэтому что-нибудь мог забыть
Lua:
local tStyle = { "Blue", "Red" }
local iStyle = imgui.ImInt(1)

--function imgui.OnDrawFrame()
    if imgui.Combo("Choose your preferred style", iStyle, tStyle, #tStyle) then
        SwitchTheStyle(iStyle.v)
    end
--end

function SwitchTheStyle(i)
    if i == 1 then
        -- code of blue style
    elseif i == 2 then
        -- code of red style
    end
end
 
  • Нравится
Реакции: fantavise и Fabregoo

_razor

t.me/sssecretway | ТГК: t.me/razor_code
Всефорумный модератор
1,948
3,212
Слушайте, такое дело:

Есть кастомный самп клиент, там оффсеты другие (луашные методы, связанные с сампом там не работают)

Нужно как-то ловить функцию SetPlayerHealth (0x15BA0) и игнорировать её посредством чтения памяти, а не какими-либо готовыми функциями sampfuncs'a или луа.

Как это можно сделать?

Как я понял, сначала нужно взять хэндл dll'а сампа
getModuleHandle("samp.dll")

И к этому значению прибавить 0x15BA0?

Как это вообще работает?
Lua:
SAMPHandle = sampGetBase()
writeMemory(SAMPHandle + ТВОЙ ОФФСЕТ, 4, 1, 1) -- это для примера
 

VEN1LOV

Новичок
9
10
как крашнуть игру, есть ли такая функция?...
Lua:
callFunction(0x823BDB, 3, 3, 0, 0, 0) -- Меняем значение в памяти игры, чтоб закрыть игру
Как сделать что - то подобное как в аризона хелпер, то есть.
Я ввожу на клавиатуре arm и в чат пишется /armour..
Там, вполне вероятно, сделано на testCheat(), но, если честно, в душе представления не имею о Arizona Helper.
Lua:
if testCheat("arm") then
    -- Some code there
end
 
  • Нравится
Реакции: Fabregoo

Kolbasa241

Известный
213
57
Подскажите как правильно сделать комбинацию клавиш? Вот код

Lua:
if isKeyDown(VK_MENU) and wasKeyPressed(VK_NUMPAD3) then
sampSetChatInputText("/showpass ")
sampSetChatInputEnabled(true)
end

Когда чат открывается с нужной командой у меня появляется вконце этот символ - О.
Как исправить
 

Dmitriy Makarov

25.05.2021
Проверенный
2,500
1,132
Подскажите как правильно сделать комбинацию клавиш? Вот код

Lua:
if isKeyDown(VK_MENU) and wasKeyPressed(VK_NUMPAD3) then
sampSetChatInputText("/showpass ")
sampSetChatInputEnabled(true)
end

Когда чат открывается с нужной командой у меня появляется вконце этот символ - О.
Как исправить
Это Майкрософтская штукенция (вроде)
Когда зажимаешь альт и нажимаешь на кнопку на Нумпаде, то пишется символ
Вот все символы с Alt+Numpad
Перебинди лучше не на нумпад цифры, а обычные, которые над буквами идут (надеюсь понял)
 

Fabregoo

Известный
656
128
Lua:
callFunction(0x823BDB, 3, 3, 0, 0, 0) -- Меняем значение в памяти игры, чтоб закрыть игру

Там, вполне вероятно, сделано на testCheat(), но, если честно, в душе представления не имею о Arizona Helper.
Lua:
if testCheat("arm") then
    -- Some code there
end
Можно пожалуйста функцию, с TestChat()?