Lua [ARZ] Чит-хелпер для медиков

iOS

Активный
Автор темы
131
29
Представляю вашему вниманию мой первый скрипт.
Все функции завязаны вокруг команды /heal, соответственно скрипт не будет работать без организационной аптечки в руке
Функции:
/ahealp - помощь по скрипту
/ahealmyself - когда у вашего персонажа будет меньше 12 хп (значение хп можно изменить в конфиге. Пункт samohillhp), то отправит команду захилить себя и примет диалог. Если в конфиге выставить значение хп побольше и delay 0, то может работать как ГМ.
/ahealprice [от 5000 до 50000] - установить цену хила (сохраняется в конфиге), эта цена будет применяться везде, кроме хила себя.
/aheal - Если в зоне стрима кто-то напишет в чат "лек", "хил" и все в этом роде, то скрипт автоматически отправит ему предложение о лечении. Состояние сохраняется в конфиге.
/h [id] быстро выдать лек, цена вставится из конфига.
/ahealr - Автохил игроков из радиуса с хп меньше 20 (можно изменить в конфиге. Пункт: aroundhp)
Библиотеки: Samp.Lua, Moonloader.
Критика по поводу говнокода приветствуется.
1. Скрипт крашится, если в переменную, которой нужен number ввести string. Проверка через if type(переменная) ~= 'number' end не помогает.
2. Не догоняю как зафиксить флуд (чтоб одному игроку не кидало лек более одного раза) в функции хила в радиусе.
 

Вложения

  • aheal.lua
    5.4 KB · Просмотры: 82

Anarch

Известный
344
75
/ahealmyself - жаль, что тратишь деньги.
/aheal - есть во всех нормальных хелперах мз - юзелесс.
 

Tak

Известный
177
70
(чтоб одному игроку не кидало лек более одного раза)
Просто помещай ник игрока в массив как ключ, а значением установи текущее время (os.time) и усё. Перед хилом проверяешь есть ли такой ник в массиве (ранее созданном), если есть, сравнивай текущее время с ранее записанным. Получается "типо" таймер.

Я сам редко пишу, попросил нейросеть сгенерировать по условию выше (логика думаю понятна):
Код:
-- Инициализация массива для хранения времени последнего хила по каждому игроку
local lastHealTimes = {}

-- Функция для осуществления хила
function healPlayer(playerName)
    -- Проверка наличия записи для игрока в массиве
    if lastHealTimes[playerName] then
        -- Получение текущего времени
        local currentTime = os.time()

        -- Получение времени последнего хила для данного игрока
        local lastHealTime = lastHealTimes[playerName]

        -- Проверка времени прошедшего с последнего хила (например, 10 секунд)
        local timeDiff = currentTime - lastHealTime
        if timeDiff >= 10 then
            -- Осуществление хила
            print("Игрок", playerName, "получает хил!")
            
            -- Обновление времени последнего хила для данного игрока
            lastHealTimes[playerName] = currentTime
        else
            print("Игрок", playerName, "нельзя хилить так часто. Подождите немного.")
        end
    else
        -- Если записи для игрока нет, создаем ее и осуществляем хил
        lastHealTimes[playerName] = os.time()
        print("Игрок", playerName, "получает хил!")
    end
end

-- Пример использования функции хила
healPlayer("Player1")
healPlayer("Player2")
healPlayer("Player1")
healPlayer("Player2")

Описание:
Этот код создает массив lastHealTimes, в котором ключами являются имена игроков, а значениями - время последнего хила для каждого игрока. Функция healPlayer проверяет наличие записи для игрока в массиве, сравнивает текущее время с временем последнего хила и осуществляет хил только в случае прошедшего достаточного времени.

1. Скрипт крашится, если в переменную, которой нужен number ввести string. Проверка через if type(переменная) ~= 'number' end не помогает.
Попробуй так:
tonumber() - преобразование параметра в число. Если параметр уже является числом или строкой, конвертируемой в число, то возвращает это число; иначе, возвращает nil.

Пример:

Код:
local переменная = "строка"
local число = tonumber(переменная)

if число then
    -- Теперь число можно использовать без опасности
    local результат = число + 1
    print(результат)
else
    print("Переменная не является числом.")
end
 
Последнее редактирование:
  • Нравится
Реакции: iOS

arbuzzzaza

Новичок
4
0
помоги пж. Я хочу что-бы
Просто помещай ник игрока в массив как ключ, а значением установи текущее время (os.time) и усё. Перед хилом проверяешь есть ли такой ник в массиве (ранее созданном), если есть, сравнивай текущее время с ранее записанным. Получается "типо" таймер.

Я сам редко пишу, попросил нейросеть сгенерировать по условию выше (логика думаю понятна):
Код:
-- Инициализация массива для хранения времени последнего хила по каждому игроку
local lastHealTimes = {}

-- Функция для осуществления хила
function healPlayer(playerName)
    -- Проверка наличия записи для игрока в массиве
    if lastHealTimes[playerName] then
        -- Получение текущего времени
        local currentTime = os.time()

        -- Получение времени последнего хила для данного игрока
        local lastHealTime = lastHealTimes[playerName]

        -- Проверка времени прошедшего с последнего хила (например, 10 секунд)
        local timeDiff = currentTime - lastHealTime
        if timeDiff >= 10 then
            -- Осуществление хила
            print("Игрок", playerName, "получает хил!")
           
            -- Обновление времени последнего хила для данного игрока
            lastHealTimes[playerName] = currentTime
        else
            print("Игрок", playerName, "нельзя хилить так часто. Подождите немного.")
        end
    else
        -- Если записи для игрока нет, создаем ее и осуществляем хил
        lastHealTimes[playerName] = os.time()
        print("Игрок", playerName, "получает хил!")
    end
end

-- Пример использования функции хила
healPlayer("Player1")
healPlayer("Player2")
healPlayer("Player1")
healPlayer("Player2")

Описание:
Этот код создает массив lastHealTimes, в котором ключами являются имена игроков, а значениями - время последнего хила для каждого игрока. Функция healPlayer проверяет наличие записи для игрока в массиве, сравнивает текущее время с временем последнего хила и осуществляет хил только в случае прошедшего достаточного времени.


Попробуй так:
tonumber() - преобразование параметра в число. Если параметр уже является числом или строкой, конвертируемой в число, то возвращает это число; иначе, возвращает nil.

Пример:

Код:
local переменная = "строка"
local число = tonumber(переменная)

if число then
    -- Теперь число можно использовать без опасности
    local результат = число + 1
    print(результат)
else
    print("Переменная не является числом.")
end
помоги пж. Я хочу что бы кидалось всем в радиусе даже если у чела фулл хп. Как это сделать?
 

iOS

Активный
Автор темы
131
29
/ahealr - Автохил игроков из радиуса с хп меньше 20 (можно изменить в конфиге. Пункт: aroundhp)
помоги пж. Я хочу что бы кидалось всем в радиусе даже если у чела фулл хп. Как это сделать?
ставь там 160 и будет хил с фулл хп
 

arbuzzzaza

Новичок
4
0
ставь там 160 и будет хил с фулл хп
Ставил. Но он всё равно хилит у кого меньше 20

ставь там 160 и будет хил с фулл хп
Можешь пожалуйста сделать что бы хилило всех даже с фулл ХП. И сюда опубликовать. А то у меня ничего не выходит
 
Последнее редактирование: