никнеймы в радиусе

WTC

Известный
Автор темы
6
0
Версия MoonLoader
.026-beta
как вывести никнеймы игроков в радиусе 100 метров от своего персонажа? (не раксамп)
 
Решение
/snick (вкл/выкл)
Вывод игроков в радиусе 100 метров на экран (как вх)

Lua:
require "lib.moonloader"

showNick = false
local radius = 100

function main()
  sampRegisterChatCommand("snick", function() showNick = not showNick end)
  if not isSampfuncsLoaded() or not isSampLoaded() then return end
  local font = renderCreateFont("Arial", 8, 15)
  
  while not isSampAvailable() do wait(100) end
  
  while true do
    wait(0)
    if showNick then
        local playerPed = playerPed
        local mX, mY, mZ = getCharCoordinates(playerPed)
        
        for a = 0, 1000 do
          local result, charhandle = sampGetCharHandleBySampPlayerId(a)
          if result then
            local lvl = sampGetPlayerScore(a)
            local X, Y, Z =...

BestHack

Участник
46
9
/snick (вкл/выкл)
Вывод игроков в радиусе 100 метров на экран (как вх)

Lua:
require "lib.moonloader"

showNick = false
local radius = 100

function main()
  sampRegisterChatCommand("snick", function() showNick = not showNick end)
  if not isSampfuncsLoaded() or not isSampLoaded() then return end
  local font = renderCreateFont("Arial", 8, 15)
  
  while not isSampAvailable() do wait(100) end
  
  while true do
    wait(0)
    if showNick then
        local playerPed = playerPed
        local mX, mY, mZ = getCharCoordinates(playerPed)
        
        for a = 0, 1000 do
          local result, charhandle = sampGetCharHandleBySampPlayerId(a)
          if result then
            local lvl = sampGetPlayerScore(a)
            local X, Y, Z = getOffsetFromCharInWorldCoords(charhandle, 0.0, 0.0, 1.0)

            local distance = calculateDistance(mX, mY, mZ, X, Y, Z)
            if distance <= radius then
                local cposX, cposY = convert3DCoordsToScreen(X, Y, Z)
                if isPointOnScreen(X, Y, Z, 0) then
                renderFontDrawText(font, string.format(sampGetPlayerNickname(a)), cposX, cposY, 0xffffffff)
                end
            end
          end
        end
    end
  end
end

function calculateDistance(x1, y1, z1, x2, y2, z2)
    return math.sqrt((x2 - x1)^2 + (y2 - y1)^2 + (z2 - z1)^2)
end

/findplayer
Вывод ников в радиусе 100 метров в чат

Lua:
require('moonloader')

function main()
    repeat wait(0) until isSampAvailable()
    while not isSampLoaded() or not isSampfuncsLoaded() do wait(80) end
    sampRegisterChatCommand('findplayer', findPlayers)
    while true do
        wait(0)
    end
end

function findPlayers()
    local allPlayers = getAllChars()
    local playerPed = playerPed
    local mX, mY, mZ = getCharCoordinates(playerPed)
    local myId = select(2, sampGetPlayerIdByCharHandle(1))

    for _, charHandle in ipairs(allPlayers) do
        local res, id = sampGetPlayerIdByCharHandle(charHandle)
        if res and id then
            if id == myId then  -- Пропускаем самого себя
                goto continue
            end

            local x, y, z = getCharCoordinates(charHandle)
            local distance = calculateDistance(mX, mY, mZ, x, y, z)

            if distance <= 100 then
                local playerName = sampGetPlayerNickname(id)
                sampAddChatMessage('Игрок в радиусе: ' .. playerName, 0xFFD00000)
            end
        end
        ::continue::
    end
end

function calculateDistance(x1, y1, z1, x2, y2, z2)
    return math.sqrt((x2 - x1)^2 + (y2 - y1)^2 + (z2 - z1)^2)
end

P.S мб и гавно код, но работает
 
Последнее редактирование:
  • Нравится
  • Bug
Реакции: WTC и qdIbp