- 30
- 7
- Версия MoonLoader
- .026-beta
Не могу понять, что не так черный список не работает
Черный списко был реализован так, что если в массиве blackkist будет ид, который я вкинул через /bl, то он не будет использоваться в скрипте, но что-то он не воркает, хз даже с чем это связано, может сможете подсказать
Черный списко был реализован так, что если в массиве blackkist будет ид, который я вкинул через /bl, то он не будет использоваться в скрипте, но что-то он не воркает, хз даже с чем это связано, может сможете подсказать
Lua:
script_name('test')
script_author('gfgfg')
script_description('hghg')
require "lib.moonloader"
local sampev = require 'lib.samp.events'
local encoding = require 'encoding'
encoding.default = 'CP1251'
u8 = encoding.UTF8
local tag = "[pairs derby]: "
local main_color = "{FFF000}"
local cars = {
400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415,
416, 418, 419, 420, 421, 422, 423, 424, 426, 427, 428, 429, 431, 432, 433, 434,
436, 437, 438, 439, 440, 442, 443, 444, 445, 448, 451, 455, 456, 457, 458, 459,
461, 462, 463, 466, 467, 468, 469, 470, 471, 474, 475, 477, 478, 479, 480, 482,
483, 484, 485, 486, 489, 490, 491, 494, 495, 496, 498, 499, 500, 502, 503, 504,
505, 506, 507, 508, 514, 515, 516, 517, 518, 521, 522, 523, 524, 525, 526, 527,
528, 529, 530, 531, 532, 533, 534, 535, 536, 540, 541, 542, 543, 544, 545, 546,
547, 549, 550, 551, 552, 554, 555, 556, 557, 558, 559, 560, 562, 565, 566, 567,
571, 572, 573, 574, 575, 576, 578, 579, 580, 581, 582, 583, 585, 586, 587, 588,
589, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 609
}
function main()
repeat wait(0) until isSampAvailable()
sampAddChatMessage(tag .. "Скрипт запущен и готов к работе", 0xFFF000)
sampAddChatMessage(tag .. "/dbtwo - Запуск выдачи рандомных каров, автоматической посадки и выдачи оружия", 0xFFF000)
sampAddChatMessage(tag .. "/bl [ID] - Добавление игрока в черный список", 0xFFF000)
sampRegisterChatCommand("dbtwo", cmd_dbtwo)
sampRegisterChatCommand("bl", cmd_bl)
wait(-1)
end
function setMarker(type, x, y, z, radius, color)
deleteCheckpoint(marker)
removeBlip(checkpoint)
checkpoint = addBlipForCoord(x, y, z)
marker = createCheckpoint(type, x, y, z, 1, 1, 1, radius)
changeBlipColour(checkpoint, color)
lua_thread.create(function()
repeat
wait(0)
local x1, y1, z1 = getCharCoordinates(PLAYER_PED)
until getDistanceBetweenCoords3d(x, y, z, x1, y1, z1) < radius or not doesBlipExist(checkpoint)
deleteCheckpoint(marker)
removeBlip(checkpoint)
addOneOffSound(0, 0, 0, 1149)
end)
end
global_cID = nil
used_i_values = {} -- отслеживание использованных id
group_counter = 0 -- номера групп
formed_groups = 0 -- количества сформированных групп
total_participants = 0 -- общее количества участников
blacklist = {} -- Табдица id, тех кого не будет видеть скрипт
function sampev.onServerMessage(color, text)
if text:find("%[A%] .+%[%d+%] выдал временную машину игроку .+%[%d+%] %[%d+%] %- в интерьере") and color == -1347440641 then
local aName, aID, pName, pID, cID = text:match("%[A%] (.+)%[(%d+)%] выдал временную машину игроку (.+)%[(%d+)%] %[(%d+)%] %- в интерьере")
global_cID = cID
-- глобалка cID к global_cID
end
end
function getPlayerName(playerID)
local playerName = sampGetPlayerNickname(playerID)
return playerName or "Unknown"
end
function cmd_bl(playerID)
if tonumber(playerID) then
blacklist[tonumber(playerID)] = true
sampAddChatMessage("Игрок с ID " .. playerID .. " добавлен в черный список.", 0xFFFFFF)
else
sampAddChatMessage("Используйте команду в формате: /bl [ID игрока]", 0xFFFFFF)
end
end
function cmd_dbtwo(arg)
give = not give
lua_thread.create(function()
local radius = arg:match('(%d+)')
if radius then
sampAddChatMessage(give and main_color..tag .. '{FFFFFF}Выдача запущена, ожидайте полного завершения' or main_color..tag .. 'Выдача закончила свою работу и была завершена', -1)
group_counter = 0
formed_groups = 0
total_participants = 0
for i = 0, sampGetMaxPlayerId(false), 1 do
if sampIsPlayerConnected(i) and select(1, sampGetCharHandleBySampPlayerId(i)) then
if give and not used_i_values[i] and not blacklist[i] then
if not isCharInAnyCar(select(2, sampGetCharHandleBySampPlayerId(i))) then
local x, y, z = getCharCoordinates(select(2, sampGetCharHandleBySampPlayerId(i)))
local x1, y1, z1 = getCharCoordinates(PLAYER_PED)
local dist = getDistanceBetweenCoords3d(x, y, z, x1, y1, z1)
if dist < tonumber(radius) then
local rand = math.random(1, #cars)
sampSendChat('/plveh '..i..' '..cars[rand]..' 0')
wait(300)
sampSendChat('/smp Игрок ' ..i.. ' получил транспорт')
used_i_values[i] = true -- отметка id как использованного
total_participants = total_participants + 1
wait(5000)
group_counter = group_counter + 1
local player1_name = getPlayerName(i)
local player2_name = ""
if global_cID then
for j = 0, sampGetMaxPlayerId(false), 1 do
if sampIsPlayerConnected(j) and select(1, sampGetCharHandleBySampPlayerId(j)) then
if not used_i_values[j] and not blacklist[j] then
sampSendChat('/setincar '..j..' '..global_cID..' 1')
wait(300)
sampSendChat('/smp Игрок '..j..' был посажен в кар '..global_cID..)
used_i_values[j] = true -- отметка id как использованного
formed_groups = formed_groups + 1
total_participants = total_participants + 1
player2_name = getPlayerName(j)
break
end
end
end
else
sampAddChatMessage(main_color .. tag .. 'Значение cID ещё не установлено.', 0xFFFFFF)
end
-- вывод сообщения о статусе группы
sampSendChat('/smp tag .. Группа ' .. group_counter .. ' сформирована. В составе группы ' .. player1_name .. ' и ' .. player2_name)
sampAddChatMessage(main_color .. tag .. 'Группа ' .. group_counter .. ' сформирована. В составе группы ' .. player1_name .. ' и ' .. player2_name, 0xFFFFFF)
end
end
end
end
end
-- чистка таблицы used_i_values после завершения функции
used_i_values = {}
sampAddChatMessage(main_color .. tag .. '{FFFFFF}Выдача закончила свою работу и была завершена', -1)
sampAddChatMessage(main_color .. tag .. 'Всего сформировано групп: ' .. formed_groups, 0xFFFFFF)
sampAddChatMessage(main_color .. tag .. 'Всего участвовало человек: ' .. total_participants, 0xFFFFFF)
else
sampAddChatMessage(main_color .. tag .. '{FFFFFF}/dbtwo [radius]', -1)
end
give = false
end)
end
Последнее редактирование: