Lua Автоматическая (ну почти) /z

EnterName132

Новичок
Автор темы
7
2
Версия SA-MP
  1. 0.3.7 (R1)
  2. 0.3.7-R2
  3. 0.3.7-R3
  4. 0.3.7-R4
Мега-простенький скрипт, который при активации два раза в секунду флудит командой /z id.
Активация /ez id, деактивация /ez id или /ez
Анти-спам не будет съедать другие команды, ваши сообщения и отыгровки.

Если вы не хотите, чтобы при активации скрипта у вас летел чат, то советую вот этот скрипт -PlusChat-2.​
Screenshot-367.png

Если вам мешает доп. чат, можете просто убрать галочку с опции "Включить дополнительный чат".​
Screenshot-368.png


Установка: Просто перекиньте файл autoz.lua в папку moonloader.​
 

Вложения

  • autoz.lua
    1.1 KB · Просмотры: 17
  • Нравится
Реакции: sherr и Flip Phone twerk

EnterName132

Новичок
Автор темы
7
2
После перезагрузки скриптов ждать 10 секунд, пока он запустится, это имба

Посмотреть вложение 218049
Не думаю, что чем то помешает

мог бы просто нопать сообщения
Я не умею, луа 3 дня назад начал изучать
 
  • Эм
Реакции: MrDorlik и Hinаta

artemizgame

Известный
23
40
Хотел тоже автозет сделать, но через проверку расстояния до цели, а не спам. Есть какие то подводные камни?
 

Hinаta

Известный
784
356
Хотел тоже автозет сделать, но через проверку расстояния до цели, а не спам. Есть какие то подводные камни?
как-то так

Lua:
function sampGetCharsInSphere(radius)
    local inSphere = {}
    if not radius then return {} end
    local Mx, My, Mz = getCharCoordinates(PLAYER_PED)
    for k, v in pairs(getAllChars()) do
        local x, y, z = getCharCoordinates(v)

        if getDistanceBetweenCoords3d(Mx, My, Mz, x, y, z) <= tonumber(radius) and v ~= 1 then
            local result, id = sampGetPlayerIdByCharHandle(v)

            if result then
                inSphere[#inSphere + 1] = id
            end
        end
    end

    return inSphere
end

inSpherePlayers = sampGetCharsInSphere(10)

for i = 1, #inSpherePlayers do
    if inSpherePlayers[i] == id then
        sampSendChat('/z ' .. id)
    end
end
 
  • Нравится
Реакции: EnterName132 и artemizgame

SeregaIvanovis

Активный
118
33
так лучше
 

Вложения

  • Новый текстовый документ.lua
    621 байт · Просмотры: 4

SeregaIvanovis

Активный
118
33
а:
local enabled = false
local ids = nil
function main()
    while not isSampAvailable() do wait(0) end
    sampRegisterChatCommand("ps", function(arg)
        ids = arg
        sampSendChat("/pursuit "..ids)
        enabled = not enabled
    end)
    while true do
        wait(0)
        if enabled then
            for k, v in ipairs(getAllChars()) do
                local res, id = sampGetPlayerIdByCharHandle(v)
                if res then
                    if ids == id then
                        sampSendChat("/z "..ids)
                        enabled = false
                    end
                end
            end
        end
    end
end
 

Hinаta

Известный
784
356
Флудит только когда игрок в радиусе 13 метров. Убирает флуд из чата. После того, как игрок будет помечен как опасный преступник, флуд отключится.
Нельзя начать погоню сразу за несколькими игроками. Активация: /ez ID

Lua:
local samp = require('samp.events')
local active = false

function main()
    repeat wait(0) until isSampAvailable()
    lua_thread.create(z)
    sampRegisterChatCommand('ez', function(arg)
        if active and arg:match('(%d+)') ~= id then
            sampAddChatMessage('Вы уже начали погоню за другим игроком!', -1)
        else
            id = arg:match('(%d+)')
            nick = sampGetPlayerNickname(id)
            if id then
                active = not active
                sampAddChatMessage(
                    'Вы ' .. (active and 'начали ' or 'завершили ') ..
                    'погоню за игроком ' .. nick, -1)
            end
        end
        if not active and not id then
            sampAddChatMessage('Ты не ввёл ID игрока!', -1)
        end
    end)
end

function z()
    while true do
        if active then
            local inSpherePlayers = sampGetCharsInSphere(13)
            for i = 1, #inSpherePlayers do
                if tonumber(inSpherePlayers[i]) == tonumber(id) then
                    sampSendChat('/z ' .. id)
                end
            end
        end
        wait(700)
    end
end

function sampGetCharsInSphere(radius)
    local inSphere = {}
    if not radius then return {} end
    local Mx, My, Mz = getCharCoordinates(PLAYER_PED)
    for k, v in pairs(getAllChars()) do
        local x, y, z = getCharCoordinates(v)

        if getDistanceBetweenCoords3d(Mx, My, Mz, x, y, z) <= tonumber(radius) and v ~= 1 then
            local result, id = sampGetPlayerIdByCharHandle(v)

            if result then
                inSphere[#inSphere + 1] = id
            end
        end
    end
    return inSphere
end

function samp.onServerMessage(_, text)
    if active then
        if text:find('Вы%sне%sполицейский!') then
            return false
        end
        if text:find('Вы%sуспешно%sпометили%sигрока%s' .. tostring(nick) .. '%.') then
            active = false
            sampAddChatMessage('Погоня за игроком ' .. nick .. ' завершена.', -1)
        end
        if text:find('Вы%sдалеко%sот%sигрока!') then
            return false
        end
    end
end
 

Вложения

  • autoz.lua
    2.1 KB · Просмотры: 7