- 105
- 10
- Версия MoonLoader
- .026-beta
Здравствуйте! Написал скрипт по красоте)
(Навсякий отправил целый код)
Проблема в том, что по задумке, в категории "Настройки" если поставить галочку на "Авто принятие в фаму" то скрипт будет отправлять всем команду `/finvite [id]` (там где id - Айди ближайшего игрока в зоне действия команды), Только конечно если игроков рядом нет, скрипт не будет ничего отправлять. Но я подхожу к игроку в притык, а скрипт не пишет /finvite id, Кто может помочь?
Lua:
script_name("Family Helper")
script_version_number("0.0.1")
script_description("Universal helper for the Samp Advance RP Family")
script_author("w99zzl1")
local imgui = require 'mimgui'
local encoding = require 'encoding'
encoding.default = 'CP1251'
u8 = encoding.UTF8
local WinState = imgui.new.bool()
local testCollapsed = imgui.new.bool(true)
local autoAcceptFamily = imgui.new.bool(false)
local inputWindow = imgui.new.int(15)
local inputDelay = imgui.new.int(2000)
local players = {}
local lastInviteTime = 0
function main()
if not isSampLoaded() or not isSampfuncsLoaded() then return end
while not isSampAvailable() do wait(100) end
sampRegisterChatCommand('cmd', function() WinState[0] = not WinState[0] end)
while true do
wait(0)
if autoAcceptFamily[0] then
local nearestPlayerId = getPlayerInRange(15)
local currentTime = os.time()
if nearestPlayerId ~= -1 and nearestPlayerId ~= tonumber(player.id) and currentTime - lastInviteTime >= 5 then
setTimerFunction(function()
sampSendChat(string.format('/finvite %d', nearestPlayerId))
lastInviteTime = os.time()
end, inputDelay[0])
end
end
end
end
imgui.OnFrame(function() return WinState[0] and not isPauseMenuActive() end, function(player)
imgui.SetNextWindowPos(imgui.ImVec2(1500,500), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
imgui.SetNextWindowSize(imgui.ImVec2(1000, 1000), imgui.Cond.Always)
imgui.Begin('Family Helper', WinState,imgui.WindowFlags.NoResize)
imgui.Image(imhandle, imgui.ImVec2(1000, 400))
imgui.Text('----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------')
imgui.Text('HELP')
if imgui.CollapsingHeader(u8'Настройки', imgui.TreeNodeFlags.DefaultOpen, testCollapsed) then
imgui.Checkbox(u8'Автоматическое принятие в семью', autoAcceptFamily)
if autoAcceptFamily[0] then
imgui.Text(u8'Задержка перед отправкой приглашения (в мс):')
imgui.SliderInt('##delay', inputDelay, 1000, 10000)
end
end
imgui.End()
end)
imgui.OnInitialize(function()
if doesFileExist(getWorkingDirectory()..'\\resource\\fon.png') then
imhandle = imgui.CreateTextureFromFile(getWorkingDirectory() .. '\\resource\\fon.png')
end
end)
function getPlayerInRange(range)
if not isSampLoaded() or not isSampfuncsLoaded() or not isSampAvailable() or not player then return -1 end
local playerPos = {getCharCoordinates(PLAYER_PED)}
local nearestPlayerId = -1
local nearestPlayerDistance = range
for i = 0, 1000 do
if sampIsPlayerConnected(i) and i ~= tonumber(player.id) then
local charHandle = sampGetCharHandleBySampPlayerId(i)
if charHandle ~= 0 then
local res, playerPos2 = pcall(getCharCoordinates, charHandle)
if res and playerPos2 then
local distance = getDistanceBetweenCoords3d(playerPos[1], playerPos[2], playerPos[3], playerPos2[1], playerPos2[2], playerPos2[3])
if distance < nearestPlayerDistance then
nearestPlayerId = i
nearestPlayerDistance = distance
end
end
end
end
end
return nearestPlayerId
end
function setTimerFunction(callback, delay)
local timer = os.clock() + delay / 1000
while os.clock() < timer do
wait(0)
end
callback()
end
(Навсякий отправил целый код)
Проблема в том, что по задумке, в категории "Настройки" если поставить галочку на "Авто принятие в фаму" то скрипт будет отправлять всем команду `/finvite [id]` (там где id - Айди ближайшего игрока в зоне действия команды), Только конечно если игроков рядом нет, скрипт не будет ничего отправлять. Но я подхожу к игроку в притык, а скрипт не пишет /finvite id, Кто может помочь?
Последнее редактирование: