Помогите с скриптом

h0los

Активный
Автор темы
235
40
Из за моего скрипта на .lua крашит весь самп нахуй

помогите пжжпжпжп

Lua:
local encoding = require 'encoding'
encoding.default = 'CP1251'
local u8 = encoding.UTF8
local imgui = require('mimgui')
local faicons = require('fAwesome6')
local ffi = require('ffi')
local inicfg = require('inicfg')
local settings = inicfg.load({
    script =
    {
        trueatools = false,
    }}, 'atools.ini')

local new = imgui.new
local win = new.bool()
local win2 = new.bool()
local nakaz = new.bool()
local nakaz1 = new.bool()
local nakaz2 = new.bool()
local nakaz3 = new.bool()
local nakaz4 = new.bool()
local flags = imgui.WindowFlags
local trueatools = new.bool(settings.script.trueatools)
local inputidre = new.char[256]()
local inputgun = new.char[256]()
local inputidban = new.char[256]()
local inputdayban = new.char[256]()
local inputreasonban = new.char[256]()
local inputidkick = new.char[256]()
local inputdaykick = new.char[256]()
local inputreasonkick = new.char[256]()
local inputidmute = new.char[256]()
local inputdaymute = new.char[256]()
local inputreasonmute = new.char[256]()
local inputidjail = new.char[256]()
local inputdayjail = new.char[256]()
local inputreasonjail = new.char[256]()
local inputidwarn = new.char[256]()
local inputreasonwarn = new.char[256]()
local target = getCharPlayerIsTargeting(playerHandle)
local result, playerid = sampGetPlayerIdByCharHandle(PLAYER_PED)

imgui.OnFrame(function() return win[0] end, function(player)
    imgui.Begin('A-Tools', win, flags.NoResize + flags.AlwaysAutoResize)
    imgui.Text(faicons('user')..u8' Ваш ник: '..sampGetPlayerNickname(playerid))
    if imgui.Checkbox(faicons('bug')..u8' Включить скрипт', trueatools) then
        settings.script.trueatools = trueatools[0]
        inicfg.save(settings, 'atools.ini')
    end
    imgui.Text(faicons('wrench')..u8' Настройки A-Tools внизу')
    imgui.Separator()
    imgui.Text(faicons('shuffle')..u8' Следить за игроком (Введите ID игрока в строчку ниже)')
    imgui.InputText(u8'##1', inputidre, 256)
    imgui.SameLine()
    if imgui.Button(u8'Начать слежку') then
        sampSendChat('/re '..ffi.string(inputidre))
        win[0] = not win[0]
        win2[0] = not win2[0]
    end
    imgui.SameLine()
    if imgui.Button(u8'Прекратить слежку') then
        sampSendChat('/reoff')
    end
    imgui.Separator()
    imgui.Text(faicons('gun')..u8' Выдать себе оружие')
    imgui.InputText(u8'##16', inputgun, 256)
    imgui.SameLine()
    if imgui.Button(u8"Выдать оружие себе") then
        sampSendChat("/givegun "..playerid.." "..ffi.string(inputgun).." 500")
    end
    imgui.TextDisabled('by h0los')
    imgui.End()
end)

imgui.OnFrame(function() return nakaz[0] end, function(player)
    imgui.Begin(u8'BAN', nakaz, flags.NoResize + flags.AlwaysAutoResize)
    imgui.Text(faicons('ban')..u8' Забанить игрока')
    imgui.InputText(u8'##2', inputidban, 256)
    imgui.SameLine()
    imgui.InputText(u8'##3', inputdayban, 256)
    imgui.SameLine()
    imgui.InputText(u8'##4', inputreasonban, 256)
    imgui.SameLine()
    if imgui.Button(u8'Забанить') then
        sampSendChat('/ban '..ffi.string(inputidban)..' '..ffi.string(inputdayban)..' '..ffi.string(inputreasonban))
    end
    imgui.End()
end)

imgui.OnFrame(function() return nakaz1[0] end, function(player)
    imgui.Begin(u8'KICK', nakaz1, flags.NoResize + flags.AlwaysAutoResize)
    imgui.Text(faicons('sickle')..u8' Кикнуть игрока')
    imgui.InputText(u8'##5', inputidkick, 256)
    imgui.SameLine()
    imgui.InputText(u8'##6', inputdaykick, 256)
    imgui.SameLine()
    imgui.InputText(u8'##7', inputreasonkick, 256)
    imgui.SameLine()
    if imgui.Button(u8'Кикнуть') then
        sampSendChat('/kick '..ffi.string(inputidkick)..' '..ffi.string(inputdaykick)..' '..ffi.string(inputreasonkick))
    end
    imgui.End()
end)

imgui.OnFrame(function() return nakaz2[0] end, function(player)
    imgui.Begin(u8'JAIL', nakaz2, flags.NoResize + flags.AlwaysAutoResize)
    imgui.Text(faicons('bong')..u8' Посадить игрока')
    imgui.InputText(u8'##8', inputidjail, 256)
    imgui.SameLine()
    imgui.InputText(u8'##9', inputdayjail, 256)
    imgui.SameLine()
    imgui.InputText(u8'##10', inputreasonjail, 256)
    imgui.SameLine()
    if imgui.Button(u8'Посадить') then
        sampSendChat('/jail '..ffi.string(inputidjail)..' '..ffi.string(inputdayjail)..' '..ffi.string(inputreasonjail))
    end
    imgui.End()
end)

imgui.OnFrame(function() return nakaz3[0] end, function(player)
    imgui.Begin(u8'MUTE', nakaz3, flags.NoResize + flags.AlwaysAutoResize)
    imgui.Separator()
    imgui.Text(faicons('volume_slash')..u8' Замутить игрока')
    imgui.InputText(u8'##13', inputidmute, 256)
    imgui.SameLine()
    imgui.InputText(u8'##14', inputdaymute, 256)
    imgui.SameLine()
    imgui.InputText(u8'##15', inputreasonmute, 256)
    imgui.SameLine()
    if imgui.Button(u8'Замутить') then
        sampSendChat('/mute '..ffi.string(inputidmute)..' '..ffi.string(inputdaymute)..' '..ffi.string(inputreasonmute))
    end
    imgui.End()
end)

imgui.OnFrame(function() return nakaz4[0] end, function(player)
    imgui.Begin(u8'WARN', nakaz4, flags.NoResize + flags.AlwaysAutoResize)
    imgui.Text(faicons('bold')..u8' Заварнить игрока')
    imgui.InputText(u8'##11', inputidwarn, 256)
    imgui.SameLine()
    imgui.InputText(u8'##12', inputreasonwarn, 256)
    imgui.SameLine()
    if imgui.Button(u8'Варн') then
        sampSendChat('/warn '..ffi.string(inputidwarn)..' '..ffi.string(inputreasonwarn))
    end
end)

imgui.OnFrame(function() return win2[0] end, function(player)
    imgui.Begin(u8'Выдача наказаний', win2, flags.NoResize + flags.AlwaysAutoResize)
    if imgui.Button(u8'Забанить') then
        win2[0] = not win2[0]
        nakaz[0] = not nakaz[0]
    end
    if imgui.Button(u8'Кикнуть') then
        win2[0] = not win2[0]
        nakaz1[0] = not nakaz1[0]
    end
    if imgui.Button(u8'Посадить') then
        win2[0] = not win2[0]
        nakaz2[0] = not nakaz2[0]
    end
    if imgui.Button(u8'Замутить') then
        win2[0] = not win2[0]
        nakaz3[0] = not nakaz3[0]
    end
    if imgui.Button(u8'Заварнить') then
        win2[0] = not win2[0]
        nakaz4[0] = not nakaz4[0]
    end
    imgui.End()
end)

function main()
    sampRegisterChatCommand('atset', function() win[0] = not win[0] end)
    while true do wait(0) end
end

imgui.OnInitialize(function()
    imgui.GetIO().IniFilename = nil
    local config = imgui.ImFontConfig()
    config.MergeMode = true
    config.PixelSnapH = true
    iconRanges = imgui.new.ImWchar[3](faicons.min_range, faicons.max_range, 0)
    imgui.GetIO().Fonts:AddFontFromMemoryCompressedBase85TTF(faicons.get_font_data_base85('solid'), 14, config, iconRanges)
end)
 

Maxim25012

Известный
517
242
яхз как это пофиксить, вот ща я удалил скрипт зашел в игру все ок, после восстановил перезагрузил и все норм но при обычном заходе сразу краш
Добавь в функцию "main" проверку на доступность Сампа:
Lua:
while not isSampAvailable() do
    wait()
end
Только после этого регистрируй команду и получай айди игрока.
 
  • Нравится
Реакции: h0los

Trafic

Активный
125
38
Попробуй это

Lua:
local encoding = require 'encoding'
encoding.default = 'CP1251'
local u8 = encoding.UTF8
local imgui = require('mimgui')
local faicons = require('fAwesome6')
local ffi = require('ffi')
local inicfg = require('inicfg')

local settings = inicfg.load({
    script = {
        trueatools = false,
    }
}, 'atools.ini')

local state = {
    win = imgui.new.bool(),
    win2 = imgui.new.bool(),
    trueatools = imgui.new.bool(settings.script.trueatools),
    nakaz = {
        ban = imgui.new.bool(),
        kick = imgui.new.bool(),
        jail = imgui.new.bool(),
        mute = imgui.new.bool(),
        warn = imgui.new.bool()
    },
    input = {
        re = imgui.new.char[256](),
        gun = imgui.new.char[256](),
        ban = { id = imgui.new.char[256](), days = imgui.new.char[256](), reason = imgui.new.char[256]() },
        kick = { id = imgui.new.char[256](), days = imgui.new.char[256](), reason = imgui.new.char[256]() },
        jail = { id = imgui.new.char[256](), days = imgui.new.char[256](), reason = imgui.new.char[256]() },
        mute = { id = imgui.new.char[256](), days = imgui.new.char[256](), reason = imgui.new.char[256]() },
        warn = { id = imgui.new.char[256](), reason = imgui.new.char[256]() }
    }
}

local flags = imgui.WindowFlags
local playerid = -1

-- Main window frame
imgui.OnFrame(function() return state.win[0] and isSampAvailable() end, function()
    if not isSampAvailable() then return end
  
    local result, pid = sampGetPlayerIdByCharHandle(PLAYER_PED)
    if result then playerid = pid end
  
    imgui.Begin('A-Tools', state.win, flags.NoResize + flags.AlwaysAutoResize)
    imgui.Text(faicons('user')..u8' Ваш ник: '..sampGetPlayerNickname(playerid))
    if imgui.Checkbox(faicons('bug')..u8' Включить скрипт', state.trueatools) then
        settings.script.trueatools = state.trueatools[0]
        inicfg.save(settings, 'atools.ini')
    end
    imgui.Text(faicons('wrench')..u8' Настройки A-Tools внизу')
    imgui.Separator()
    imgui.Text(faicons('shuffle')..u8' Следить за игроком (Введите ID игрока в строчку ниже)')
    imgui.InputText(u8'##1', state.input.re, 256)
    imgui.SameLine()
    if imgui.Button(u8'Начать слежку') then
        sampSendChat('/re '..ffi.string(state.input.re))
        state.win[0] = not state.win[0]
        state.win2[0] = not state.win2[0]
    end
    imgui.SameLine()
    if imgui.Button(u8'Прекратить слежку') then
        sampSendChat('/reoff')
    end
    imgui.Separator()
    imgui.Text(faicons('gun')..u8' Выдать себе оружие')
    imgui.InputText(u8'##16', state.input.gun, 256)
    imgui.SameLine()
    if imgui.Button(u8"Выдать оружие себе") then
        sampSendChat("/givegun "..playerid.." "..ffi.string(state.input.gun).." 500")
    end
    imgui.TextDisabled('by h0los')
    imgui.End()
end)

imgui.OnFrame(function() return state.nakaz.ban[0] end, function()
    imgui.Begin(u8'BAN', state.nakaz.ban, flags.NoResize + flags.AlwaysAutoResize)
    imgui.Text(faicons('ban')..u8' Забанить игрока')
    imgui.InputText(u8'##2', state.input.ban.id, 256)
    imgui.SameLine()
    imgui.InputText(u8'##3', state.input.ban.days, 256)
    imgui.SameLine()
    imgui.InputText(u8'##4', state.input.ban.reason, 256)
    imgui.SameLine()
    if imgui.Button(u8'Забанить') then
        sampSendChat('/ban '..ffi.string(state.input.ban.id)..' '..ffi.string(state.input.ban.days)..' '..ffi.string(state.input.ban.reason))
    end
    imgui.End()
end)

function main()
    while not isSampAvailable() do wait(100) end
  
    sampRegisterChatCommand('atset', function()
        state.win[0] = not state.win[0]
    end)
  
    while true do
        wait(0)
    end
end

imgui.OnInitialize(function()
    imgui.GetIO().IniFilename = nil
    local config = imgui.ImFontConfig()
    config.MergeMode = true
    config.PixelSnapH = true
    local iconRanges = imgui.new.ImWchar[3](faicons.min_range, faicons.max_range, 0)
    imgui.GetIO().Fonts:AddFontFromMemoryCompressedBase85TTF(faicons.get_font_data_base85('solid'), 14, config, iconRanges)
end)
Какая-то херь с русским текстом произошла
 
Последнее редактирование:
  • Нравится
Реакции: h0los

Pugovka

Участник
32
4
Пробуй так

Lua:
local encoding = require 'encoding'
encoding.default = 'CP1251'
local u8 = encoding.UTF8
local imgui = require('mimgui')
local faicons = require('fAwesome6')
local ffi = require('ffi')
local inicfg = require('inicfg')

local settings = inicfg.load({
    script = {
        trueatools = false,
    }
}, 'atools.ini')

local state = {
    win = imgui.new.bool(),
    win2 = imgui.new.bool(),
    trueatools = imgui.new.bool(settings.script.trueatools),
    nakaz = {
        ban = imgui.new.bool(),
        kick = imgui.new.bool(),
        jail = imgui.new.bool(),
        mute = imgui.new.bool(),
        warn = imgui.new.bool()
    },
    input = {
        re = imgui.new.char[256](),
        gun = imgui.new.char[256](),
        ban = { id = imgui.new.char[256](), days = imgui.new.char[256](), reason = imgui.new.char[256]() },
        kick = { id = imgui.new.char[256](), days = imgui.new.char[256](), reason = imgui.new.char[256]() },
        jail = { id = imgui.new.char[256](), days = imgui.new.char[256](), reason = imgui.new.char[256]() },
        mute = { id = imgui.new.char[256](), days = imgui.new.char[256](), reason = imgui.new.char[256]() },
        warn = { id = imgui.new.char[256](), reason = imgui.new.char[256]() }
    }
}

local flags = imgui.WindowFlags
local target = getCharPlayerIsTargeting(playerHandle)
local result, playerid = sampGetPlayerIdByCharHandle(PLAYER_PED)

function main()
      while not isSampAvailable() while do wait(1) end
    sampRegisterChatCommand('atset', function() state.win[0] = not state.win[0] end)
    while true do wait(0) end
end

imsampGetPlayerIdByCharHandlegui.OnFrame(function() return state.win[0] end, function()
    imgui.Begin('A-Tools', state.win, flags.NoResize + flags.AlwaysAutoResize)
    imgui.Text(faicons('user')..u8' Ваш ник: '..sampGetPlayerNickname(playerid))
    if imgui.Checkbox(faicons('bug')..u8' Включить скрипт', state.trueatools) then
        settings.script.trueatools = state.trueatools[0]
        inicfg.save(settings, 'atools.ini')
    end
    imgui.Text(faicons('wrench')..u8' Настройки A-Tools внизу')
    imgui.Separator()
    imgui.Text(faicons('shuffle')..u8' Следить за игроком (Введите ID игрока в строчку ниже)')
    imgui.InputText(u8'##1', state.input.re, 256)
    imgui.SameLine()
    if imgui.Button(u8'Начать слежку') then
        sampSendChat('/re '..ffi.string(state.input.re))
        state.win[0] = not state.win[0]
        state.win2[0] = not state.win2[0]
    end
    imgui.SameLine()
    if imgui.Button(u8'Прекратить слежку') then
        sampSendChat('/reoff')
    end
    imgui.Separator()
    imgui.Text(faicons('gun')..u8' Выдать себе оружие')
    imgui.InputText(u8'##16', state.input.gun, 256)
    imgui.SameLine()
    if imgui.Button(u8"Выдать оружие себе") then
        sampSendChat("/givegun "..playerid.." "..ffi.string(state.input.gun).." 500")
    end
    imgui.TextDisabled('by h0los')
    imgui.End()
end)

imgui.OnFrame(function() return state.nakaz.ban[0] end, function()
    imgui.Begin(u8'BAN', state.nakaz.ban, flags.NoResize + flags.AlwaysAutoResize)
    imgui.Text(faicons('ban')..u8' Забанить игрока')
    imgui.InputText(u8'##2', state.input.ban.id, 256)
    imgui.SameLine()
    imgui.InputText(u8'##3', state.input.ban.days, 256)
    imgui.SameLine()
    imgui.InputText(u8'##4', state.input.ban.reason, 256)
    imgui.SameLine()
    if imgui.Button(u8'Забанить') then
        sampSendChat('/ban '..ffi.string(state.input.ban.id)..' '..ffi.string(state.input.ban.days)..' '..ffi.string(state.input.ban.reason))
    end
    imgui.End()
end)

imgui.OnInitialize(function()
    imgui.GetIO().IniFilename = nil
    local config = imgui.ImFontConfig()
    config.MergeMode = true
    config.PixelSnapH = true
    local iconRanges = imgui.new.ImWchar[3](faicons.min_range, faicons.max_range, 0)
    imgui.GetIO().Fonts:AddFontFromMemoryCompressedBase85TTF(faicons.get_font_data_base85('solid'), 14, config, iconRanges)
end)

Привет ещё раз! Исправила ошибку. Теперь всё работает :3
 

Вложения

  • Atools.lua
    3.9 KB · Просмотры: 0
Последнее редактирование: