Не знаю как назвать, но нужна помощь

BizEvgen

Участник
Автор темы
104
10
Версия MoonLoader
.026-beta
Как мне сделать, то что когда я покурю, то после фулл окончения курени]я, персонаж мог /anims 78 использовать?
Именно где вписать что к чему, пожалуйста выручайте, он 4-5 раз курит сигарету, после анимку надо, чтобы вставал
И нужно, чтобы как-то убрать /smk активацию, ну автоматической была без ввода данной cmd

Скрипт взял у чела, с БХ: https://www.blast.hk/threads/57195/page-2#post-573229
local name = "[SMK]" -- Тэг
local white = "{ff0000}" -- Серо-белый цвет
local red = "{ff0000}" -- Красный цвет для тэга
local tag = red .. name .. white -- Готовый тэг

local smoke = false
local stop = false

function main()
repeat wait(0) until isSampAvailable()
wait(2000)
sampRegisterChatCommand("smk", function()
smoke = not smoke
end)

while stop == true do
wait(0)
print('healing...', 2000)
setPlayerControl(PLAYER_HANDLE, false)
end

while true do
wait(0)
local health = getCharHealth(PLAYER_PED)
if smoke then
if health < 80 then
stop = true -- Блокировка движений персонажа
wait(1000)
sampSendChat("/smoke")
stop = false -- Разблокировка движений персонажа
end
end
end
end

function addChatMessage(msg)
sampAddChatMessage(tag .. ' ' .. msg, -1)
end
 

#Kai-

Известный
705
293
Lua:
local name = "[SMK]" -- Тэг
local white = "{ff0000}" -- Серо-белый цвет
local red = "{ff0000}" -- Красный цвет для тэга
local tag = red .. name .. white -- Готовый тэг

local smoke = false
local stop = false

function main()
    repeat wait(0) until isSampAvailable()
    wait(2000)
    sampRegisterChatCommand("smk", function()
        smoke = not smoke
    end)

    while stop == true do
    wait(0)
        print('healing...', 2000)
        setPlayerControl(PLAYER_HANDLE, false)
    end

    while true do
    wait(0)
        local health = getCharHealth(PLAYER_PED)
        if smoke then
            if health < 80 then
                stop = true -- Блокировка движений персонажа
                wait(1000)
                sampSendChat("/smoke")
                stop = false -- Разблокировка движений персонажа
                wait(10*1000) -- Через 10 секунд врубит /anim 78
                sampSendChat("/anim 78")
            end
        end
    end
end

function addChatMessage(msg)
    sampAddChatMessage(tag .. ' ' .. msg, -1)
end
 

BizEvgen

Участник
Автор темы
104
10
Lua:
local name = "[SMK]" -- Тэг
local white = "{ff0000}" -- Серо-белый цвет
local red = "{ff0000}" -- Красный цвет для тэга
local tag = red .. name .. white -- Готовый тэг

local smoke = false
local stop = false

function main()
    repeat wait(0) until isSampAvailable()
    wait(2000)
    sampRegisterChatCommand("smk", function()
        smoke = not smoke
    end)

    while stop == true do
    wait(0)
        print('healing...', 2000)
        setPlayerControl(PLAYER_HANDLE, false)
    end

    while true do
    wait(0)
        local health = getCharHealth(PLAYER_PED)
        if smoke then
            if health < 80 then
                stop = true -- Блокировка движений персонажа
                wait(1000)
                sampSendChat("/smoke")
                stop = false -- Разблокировка движений персонажа
                wait(10*1000) -- Через 10 секунд врубит /anim 78
                sampSendChat("/anim 78")
            end
        end
    end
end

function addChatMessage(msg)
    sampAddChatMessage(tag .. ' ' .. msg, -1)
end
А допустим, что нужно поменять, в плане 10*1000 - если я сменю значение, можно ли? И как это правильно значение вписывать. В плане 10 минут анимки
 

nsevxy

Участник
38
14
Lua:
local name = "[SMK]" -- Тэг
local white = "{ff0000}" -- Серо-белый цвет
local red = "{ff0000}" -- Красный цвет для тэга
local tag = red .. name .. white -- Готовый тэг

local smoke = false
local stop = false

function main()
    repeat wait(0) until isSampAvailable()
    wait(2000)
    sampRegisterChatCommand("smk", function()
        smoke = not smoke
    end)

    while stop == true do
    wait(0)
        print('healing...', 2000)
        setPlayerControl(PLAYER_HANDLE, false)
    end

    while true do
    wait(0)
        local health = getCharHealth(PLAYER_PED)
        if smoke then
            if health < 80 then
                stop = true -- Блокировка движений персонажа
                wait(1000)
                sampSendChat("/smoke")
                stop = false -- Разблокировка движений персонажа
                wait(10*1000) -- Через 10 секунд врубит /anim 78
                sampSendChat("/anim 78")
            end
        end
    end
end

function addChatMessage(msg)
    sampAddChatMessage(tag .. ' ' .. msg, -1)
end
оно вроде не будет работать так, как нужно
хотя бы из за времени
А допустим, что нужно поменять, в плане 10*1000 - если я сменю значение, можно ли? И как это правильно значение вписывать. В плане 10 минут анимки
попробуй, ток тебе время курения нужно узнать теперь)
 

BizEvgen

Участник
Автор темы
104
10
оно вроде не будет работать так, как нужно
хотя бы из за времени

попробуй, ток тебе время курения нужно узнать теперь)
Я не знаю даже как объяснить. По времени я узнаю, но как именно там указано, в милисекундах или секундах или как? 1 секунда - 1000мс вроде, так или иначе? Или 10 поменять на 20 - будет 20 минут?
Lua:
local name = "[SMK]" -- Тэг
local white = "{ff0000}" -- Серо-белый цвет
local red = "{ff0000}" -- Красный цвет для тэга
local tag = red .. name .. white -- Готовый тэг

local smoke = false
local stop = false

function main()
    repeat wait(0) until isSampAvailable()
    wait(2000)
    sampRegisterChatCommand("smk", function()
        smoke = not smoke
    end)

    while stop == true do
    wait(0)
        print('healing...', 2000)
        setPlayerControl(PLAYER_HANDLE, false)
    end

    while true do
    wait(0)
        local health = getCharHealth(PLAYER_PED)
        if smoke then
            if health < 80 then
                stop = true -- Блокировка движений персонажа
                wait(1000)
                sampSendChat("/smoke")
                stop = false -- Разблокировка движений персонажа
                wait(10*1000) -- Через 10 секунд врубит /anim 78
                sampSendChat("/anim 78")
            end
        end
    end
end

function addChatMessage(msg)
    sampAddChatMessage(tag .. ' ' .. msg, -1)
end
 

nsevxy

Участник
38
14
Я не знаю даже как объяснить. По времени я узнаю, но как именно там указано, в милисекундах или секундах или как? 1 секунда - 1000мс вроде, так или иначе? Или 10 поменять на 20 - будет 20 минут?

wait.lua:
wait(10*1000) -- Через 10 секунд врубит /anim 78

1000 мс = 1 сек
и если большие значения сделать, это в принципе легко
 

BizEvgen

Участник
Автор темы
104
10
wait.lua:
wait(10*1000) -- Через 10 секунд врубит /anim 78

1000 мс = 1 сек
и если большие значения сделать, это в принципе легко
Просто хочу уточнить, что значит 10, а 1000 - это 1 секунда, это понятно. А вот сама 10 что значит?
 

BizEvgen

Участник
Автор темы
104
10
* - знак умножения
1000 - 1 секунда
10 * 1000 = 10 секунд
Благодарю, выручили, честно) И ещё вопросик, можно ли как-то, любыми способами прочитать .luac файлы? Тип, чтобы всякое, всякое не скачивали в тихую)
 

nsevxy

Участник
38
14
Благодарю, выручили, честно) И ещё вопросик, можно ли как-то, любыми способами прочитать .luac файлы? Тип, чтобы всякое, всякое не скачивали в тихую)
К сожалению нормально открыть не получится, .lua - исходный код, а .luac - уже скомпилированный скрипт.

Можно попробовать через - https://www.blast.hk/threads/17276/
Но код в любом случае придётся переписывать
Лучший способ просить у автора исходный код в .lua формате, а если все таки .luac не качать или качать только от самых проверенных)

Ну и еще с автообновлением скрипты от непроверенных качать точно не стоит)
 

BizEvgen

Участник
Автор темы
104
10
Lua:
local name = "[SMK]" -- Тэг
local white = "{ff0000}" -- Серо-белый цвет
local red = "{ff0000}" -- Красный цвет для тэга
local tag = red .. name .. white -- Готовый тэг

local smoke = false
local stop = false

function main()
    repeat wait(0) until isSampAvailable()
    wait(2000)
    sampRegisterChatCommand("smk", function()
        smoke = not smoke
    end)

    while stop == true do
    wait(0)
        print('healing...', 2000)
        setPlayerControl(PLAYER_HANDLE, false)
    end

    while true do
    wait(0)
        local health = getCharHealth(PLAYER_PED)
        if smoke then
            if health < 80 then
                stop = true -- Блокировка движений персонажа
                wait(1000)
                sampSendChat("/smoke")
                stop = false -- Разблокировка движений персонажа
                wait(10*1000) -- Через 10 секунд врубит /anim 78
                sampSendChat("/anim 78")
            end
        end
    end
end

function addChatMessage(msg)
    sampAddChatMessage(tag .. ' ' .. msg, -1)
end
Протестил, он 1 раз закурил, потом всё, и то курение вышло не удачным. Помоги ещё) Чтобы флудило, пока не закурил он конкретно, после анимка включалась(я сделал 20*1000), анимка заработала, а вот 1 раз /smoke использует, плохо так сказать
 

#Kai-

Известный
705
293
Протестил, он 1 раз закурил, потом всё, и то курение вышло не удачным. Помоги ещё) Чтобы флудило, пока не закурил он конкретно, после анимка включалась(я сделал 20*1000), анимка заработала, а вот 1 раз /smoke использует, плохо так сказать
В конец
Lua:
local sampev      = require "lib.samp.events"
function sampev.onServerMessage(color, text)
    if text:find("достал сигарету с зажигалкой и попытался закурить (Неудачно)") then
        sampSend("/smoke")
    end
end
если аризона, правда будет баг, если рядом с тобой человек неудачно закурит ты все равно введешь /smoke xD
UPD:

Lua:
local name = "[SMK]" -- Тэг
local white = "{ff0000}" -- Серо-белый цвет
local red = "{ff0000}" -- Красный цвет для тэга
local tag = red .. name .. white -- Готовый тэг
local sampev    = require "lib.samp.events"

local smoke = false
local stop = false

function main()
    repeat wait(0) until isSampAvailable()
    wait(2000)
    _, myid = sampGetPlayerIdByCharHandle(playerPed)
    myname = sampGetPlayerNickname(myid)
    sampRegisterChatCommand("smk", function()
        smoke = not smoke
    end)

    while stop == true do
    wait(0)
        print('healing...', 2000)
        setPlayerControl(PLAYER_HANDLE, false)
    end

    while true do
    wait(0)
        local health = getCharHealth(PLAYER_PED)
        if smoke then
            if health < 80 then
                stop = true -- Блокировка движений персонажа
                wait(1000)
                sampSendChat("/smoke")
                stop = false -- Разблокировка движений персонажа
                wait(10*1000) -- Через 10 секунд врубит /anim 78
                sampSendChat("/anim 78")
            end
        end
    end
end
function sampev.onServerMessage(color, text)
    if text:find("достал сигарету с зажигалкой и попытался закурить (Неудачно)") and smoke then
        nickname = text:find("(.+)%[")
        if nickname == myname then
            sampSendChat("/smoke")
        end
    end
end
Не уверен что будет работать
Я так понимаю тебе нужна "защита" от балончика в виде /anim 78, столько лет этой проблеме и никто не догадался выключить анимации???
Для тех кто будет пытаться, анимация когда перс задыхается и пятится не серверная, клиенская, можно у себя в сборке её вырезать ( допустим )
 
Последнее редактирование:
  • Нравится
Реакции: BizEvgen