Кто шарит помогите,не работает lua.

MaisaLua

Новичок
Автор темы
2
2
Всех привествую,недавно увлёкся lua скриптингом. Решил написать простенький вывод времени на экран,прощу помощи от вас. Код ниже
Lua:
local timeTextDraw = {}

function createTimeTextDraw(playerid)
    timeTextDraw[playerid] = CreatePlayerTextDraw(playerid, 200.0, 100.0, "_")
    PlayerTextDrawBackgroundColor(playerid, timeTextDraw[playerid], 0)
    PlayerTextDrawFont(playerid, timeTextDraw[playerid], 1)
    PlayerTextDrawLetterSize(playerid, timeTextDraw[playerid], 0.55, 1.5)
    PlayerTextDrawColor(playerid, timeTextDraw[playerid], 0xFFFFFFFF)
    PlayerTextDrawSetOutline(playerid, timeTextDraw[playerid], 1)
    PlayerTextDrawSetProportional(playerid, timeTextDraw[playerid], 1)
    PlayerTextDrawHide(playerid, timeTextDraw[playerid])
end

function updatePlayerTimeTextDraw(playerid)
    if timeTextDraw[playerid] then
        local time = os.date("*t")
        local formattedTime = string.format("Текущее время: %02d:%02d:%02d", time.hour, time.min, time.sec)
        PlayerTextDrawSetString(playerid, timeTextDraw[playerid], formattedTime)
    end
end

function cmd_ttime(playerid, cmdtext)
    if timeTextDraw[playerid] then
        if IsPlayerTextDrawVisible(playerid, timeTextDraw[playerid]) then
            PlayerTextDrawHide(playerid, timeTextDraw[playerid])
        else
            updatePlayerTimeTextDraw(playerid)
            PlayerTextDrawShow(playerid, timeTextDraw[playerid])
            SetTimer("updatePlayerTimeTextDraw", 1000, true, playerid)
        end
    end
end

function onPlayerConnect(playerid)
    createTimeTextDraw(playerid)
end

AddCommandHandler("ttime", cmd_ttime)
RegisterPlayerEvent("OnPlayerConnect", onPlayerConnect)
 
Последнее редактирование модератором:

Maxim25012

Известный
494
223
Чел, ты... Это же – не Pawn.

Самповские функции, предназначенные для серверов, здесь работать не будут. Moonloader, в принципе, не является официальной разработкой, каким-либо образом связанной с разработчиками Сампа.

Но это не значит, что подобных функций нет, просто их названия и реализация отличаются, а для их работы нужен либо SAMPFuncs, либо время, кровь и пот. Список функций Moonloader'а можешь посмотреть здесь: https://wiki.blast.hk/moonloader/scripting-api
 

w99zzl1

Участник
80
7
Всех привествую,недавно увлёкся lua скриптингом. Решил написать простенький вывод времени на экран,прощу помощи от вас. Код ниже
Lua:
local timeTextDraw = {}

function createTimeTextDraw(playerid)
    timeTextDraw[playerid] = CreatePlayerTextDraw(playerid, 200.0, 100.0, "_")
    PlayerTextDrawBackgroundColor(playerid, timeTextDraw[playerid], 0)
    PlayerTextDrawFont(playerid, timeTextDraw[playerid], 1)
    PlayerTextDrawLetterSize(playerid, timeTextDraw[playerid], 0.55, 1.5)
    PlayerTextDrawColor(playerid, timeTextDraw[playerid], 0xFFFFFFFF)
    PlayerTextDrawSetOutline(playerid, timeTextDraw[playerid], 1)
    PlayerTextDrawSetProportional(playerid, timeTextDraw[playerid], 1)
    PlayerTextDrawHide(playerid, timeTextDraw[playerid])
end

function updatePlayerTimeTextDraw(playerid)
    if timeTextDraw[playerid] then
        local time = os.date("*t")
        local formattedTime = string.format("Текущее время: %02d:%02d:%02d", time.hour, time.min, time.sec)
        PlayerTextDrawSetString(playerid, timeTextDraw[playerid], formattedTime)
    end
end

function cmd_ttime(playerid, cmdtext)
    if timeTextDraw[playerid] then
        if IsPlayerTextDrawVisible(playerid, timeTextDraw[playerid]) then
            PlayerTextDrawHide(playerid, timeTextDraw[playerid])
        else
            updatePlayerTimeTextDraw(playerid)
            PlayerTextDrawShow(playerid, timeTextDraw[playerid])
            SetTimer("updatePlayerTimeTextDraw", 1000, true, playerid)
        end
    end
end

function onPlayerConnect(playerid)
    createTimeTextDraw(playerid)
end

AddCommandHandler("ttime", cmd_ttime)
RegisterPlayerEvent("OnPlayerConnect", onPlayerConnect)



Lua:
local encoding = require 'encoding'
encoding.default = 'CP1251'
u8 = encoding.UTF8

function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(2000) end
    
    sampRegisterChatCommand("test", cmd_test) -- Вот как нужно регистрровать команды
    
    while true do
        wait(0)
    end
end


function cmd_test(playerid)
    -- Получаем текущее время
    local hour, minute, second = tonumber(os.date("%H")), tonumber(os.date("%M")), tonumber(os.date("%S"))
    
    -- Форматируем время, чтобы всегда было 2 цифры
    local formattedHour = string.format("%02d", hour) -- Делаем так, чтобы скрипт не писал например, время 04:01, а скрипт (не) напишет 4:1
    local formattedMinute = string.format("%02d", minute)
    local formattedSecond = string.format("%02d", second)

    local time = 2000 -- Время (в мс) показа текста на экране
    local text = u8"Time: " .. formattedHour .. ":" .. formattedMinute .. ":" .. formattedSecond
    
    -- Отправляем сообщение в чат с текущим временем
    printString(text, time)
end
Не доверяй чату ГПТ, туповат он, ему нужно предоставлять примеры хотябы, чтобы он редачил их уже как тебе нужно. Сам коды он писать не умеет)
 
  • Эм
Реакции: qdIbp

qdIbp

Автор темы
Проверенный
1,430
1,172
Lua:
local encoding = require 'encoding'
encoding.default = 'CP1251'
u8 = encoding.UTF8

function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(2000) end
   
    sampRegisterChatCommand("test", cmd_test) -- Вот как нужно регистрровать команды
   
    while true do
        wait(0)
    end
end


function cmd_test(playerid)
    -- Получаем текущее время
    local hour, minute, second = tonumber(os.date("%H")), tonumber(os.date("%M")), tonumber(os.date("%S"))
   
    -- Форматируем время, чтобы всегда было 2 цифры
    local formattedHour = string.format("%02d", hour) -- Делаем так, чтобы скрипт не писал например, время 04:01, а скрипт (не) напишет 4:1
    local formattedMinute = string.format("%02d", minute)
    local formattedSecond = string.format("%02d", second)

    local time = 2000 -- Время (в мс) показа текста на экране
    local text = u8"Time: " .. formattedHour .. ":" .. formattedMinute .. ":" .. formattedSecond
   
    -- Отправляем сообщение в чат с текущим временем
    printString(text, time)
end
Не доверяй чату ГПТ, туповат он, ему нужно предоставлять примеры хотябы, чтобы он редачил их уже как тебе нужно. Сам коды он писать не умеет)
Lua:
function main()
    repeat
        wait(100)
    until isSampAvailable()
    
    sampRegisterChatCommand("test", function()
        local text = string.format('Time: %s', os.date('%H:%M:%S'))
        printString(text, 2000)
    end)
    
    wait(-1)
end

можно еще так
Lua:
    sampRegisterChatCommand("test", function(param) -- /test [секунды]
        local timer = (tonumber(param) or 2) * 1000 -- умножаем на 1к т.к. второй параметр printString в миллисекундах
        local text = string.format('Time: %s', os.date('%H:%M:%S'))
        printString(text, timer)
    end)