Взаимодействие с игроками в определенном радиусе

Gat

Участник
Автор темы
52
6
Версия MoonLoader
.026-beta
Привет!

Как сделать так, чтобы при вводе определенной команды можно было взаимодействовать с игроками в радиусе.
Пример: ввожу команду /rjail 6 60 ДМ, где "6" - это радиус в метрах, "60" - время, на которое будет посажен игрок, а "ДМ" - причина деморгана.

Спасибо :)
 
Решение
Привет!

Как сделать так, чтобы при вводе определенной команды можно было взаимодействовать с игроками в радиусе.
Пример: ввожу команду /rjail 6 60 ДМ, где "6" - это радиус в метрах, "60" - время, на которое будет посажен игрок, а "ДМ" - причина деморгана.

Спасибо :)
Lua:
function main()
    repeat wait(0) until isSampAvailable()
    sampRegisterChatCommand('rjail', function(param)
        local rtime = os.clock()
        local radius, time, cause = param:match('(%d+)%s+(%d+)%s+(.+)')
        radius, time = tonumber(radius), tonumber(time)
        if radius and time and cause then
            lua_thread.create(function()
                while true do
                    wait(0)
                    if os.clock() - rtime < 3 then...

Tema05

Известный
1,474
439
Привет!

Как сделать так, чтобы при вводе определенной команды можно было взаимодействовать с игроками в радиусе.
Пример: ввожу команду /rjail 6 60 ДМ, где "6" - это радиус в метрах, "60" - время, на которое будет посажен игрок, а "ДМ" - причина деморгана.

Спасибо :)
Поиши в теме 'Полезные функции и снеппиты' это в разделе lua. Или 2 вариант найди исходник админ тулса и посмотри как там сделано.
 
  • Нравится
Реакции: Gat

Izvinisb

Известный
Проверенный
963
600
Привет!

Как сделать так, чтобы при вводе определенной команды можно было взаимодействовать с игроками в радиусе.
Пример: ввожу команду /rjail 6 60 ДМ, где "6" - это радиус в метрах, "60" - время, на которое будет посажен игрок, а "ДМ" - причина деморгана.

Спасибо :)
Lua:
function main()
    repeat wait(0) until isSampAvailable()
    sampRegisterChatCommand('rjail', function(param)
        local rtime = os.clock()
        local radius, time, cause = param:match('(%d+)%s+(%d+)%s+(.+)')
        radius, time = tonumber(radius), tonumber(time)
        if radius and time and cause then
            lua_thread.create(function()
                while true do
                    wait(0)
                    if os.clock() - rtime < 3 then
                        local x, y, z = getCharCoordinates(1)
                        local _, ped = findAllRandomCharsInSphere(x, y, z, radius, true, true)
                        if _ then
                            local _, pid = sampGetPlayerIdByCharHandle(ped)
                            if _ then
                                sampSendChat(' /jail '..pid..' '..time..' '..cause)
                                wait(500)
                            end
                        end
                    else
                        break
                    end
                end
            end)
        else
            return sampAddChatMessage('/rjail [radius] [time] [cause]', -1)
        end
    end)
    wait(-1)
end
 
  • Нравится
Реакции: Vintik и Gat

enflesh

Новичок
12
2
Lua:
function main()
    repeat wait(0) until isSampAvailable()
    sampRegisterChatCommand('rjail', function(param)
        local rtime = os.clock()
        local radius, time, cause = param:match('(%d+)%s+(%d+)%s+(.+)')
        radius, time = tonumber(radius), tonumber(time)
        if radius and time and cause then
            lua_thread.create(function()
                while true do
                    wait(0)
                    if os.clock() - rtime < 3 then
                        local x, y, z = getCharCoordinates(1)
                        local _, ped = findAllRandomCharsInSphere(x, y, z, radius, true, true)
                        if _ then
                            local _, pid = sampGetPlayerIdByCharHandle(ped)
                            if _ then
                                sampSendChat(' /jail '..pid..' '..time..' '..cause)
                                wait(500)
                            end
                        end
                    else
                        break
                    end
                end
            end)
        else
            return sampAddChatMessage('/rjail [radius] [time] [cause]', -1)
        end
    end)
    wait(-1)
end
А можешь сделать /rslap слап всех в радиусе
 
  • Ха-ха
Реакции: AugustTN