Lua Быстрое открытие дверей на "H" Arz-Rp

Ben Puls

Активный
Автор темы
110
26
Там идет проверка на расстояние до обьекта двери, команда будет вводится только если в упор к двери стоять.
Как диалог или курсор или сам сампфунч или меншюка заправки на это влияет?)
Видимо, ты мало работал в гос организациях. Особенно в ТСР, практика показала, что твой скрипт невозможно использовать там.
Мне вот, например, не нужно, чтобы у меня открывались двери, когда я смотрю диалог, или курсор активен.
 

Luciano_Barbarossa

Новичок
8
0
А не проще просто сделать в любом бинде команду /opengate?, зачем ради одной команды скачивать отдельную программу
 

Cypher

Активный
224
55
xd. вовремя я это заметил
найс переделал скрипт с говнокодом в ещё более гонокодовый скрипт с тучей ненужных функций
представим что функция отключения и выключения полезна, ещё куда не шло, нахуя тут сохранение в ini файл - в душе не чаю

1:
                if isKeyJustPressed(k) then
                    if not sampIsChatInputActive() and not sampIsDialogActive() and not sampIsCursorActive() and not isSampfuncsConsoleActive() then
                        sampSendChat(cmd)
почему нельзя заменить это на
1:
          if not sampIsCursorActive() and isKeyJustPressed(VK_H) and active then
            sampSendChat("opengate")

Даже сказать нечего, вот мой изначальный скрипт переделанный мною сейчас (я с того момента в луа ничего не делал)

мой код:
1:
require 'lib.moonloader'
local active = true

function main()
    while not isSampAvailable() do wait(0) end
    sampRegisterChatCommand('gate',function()
        active = not active
        sampAddChatMessage('[gate]: ' .. (active and 'work' or 'dont work'), -1)
    end)
    while true do
        wait(0)
        if not sampIsCursorActive() and isKeyJustPressed(VK_H) and active then
            sampSendChat('/opengate')
        end
    end
end
Команда /gate


твой код:
1:
script_name('FastOpenGate')
script_author('Ben_Puls')
script_description('FastOpenGate')
require 'lib.moonloader'
local vkeys = require "vkeys"
local ini = require "inicfg"
local nCfg = "FastOpenGate.ini"
local cfg = ini.load({opengate = { lock = true }}, nCfg)
local cmd_opengate = { [VK_H] = '/opengate' }

function main()
    if not isSampfuncsLoaded() or not isSampLoaded() then return end
    while not isSampAvailable() do wait(100) end
        sampAddChatMessage("{58c9b1}[FastOpenGate by Ben Puls] {ffffff}успешно запущен (/gateinfo, /gate)", -1)
        print("Has been started by Ben Puls")
        sampRegisterChatCommand("gate", function()
            cfg.opengate.lock = not cfg.opengate.lock
            if ini.save(cfg, nCfg) then
                sampAddChatMessage("{58c9b1}[FastOpenGate] " .. (cfg.opengate.lock and "{AAFFAA}Включен" or "{FFAAAA}Выключен"), 0xEEEEEE)
            end
        end)
        sampRegisterChatCommand("gateinfo", function ()
            sampShowDialog(6405, 'FastOpenGate by Ben Puls', 'FastOpenGate: ' .. (cfg.opengate.lock and "{AAFFAA}Включен" or "{FFAAAA}Выключен")..'\n\n\n{FFFFFF}Скрипт быстро открывает двери на "H".', 'Закрыть', '', DIALOG_STYLE_MSGBOX)
        end)
    while true do wait(0)
        if cfg.opengate.lock then
            for k, cmd in pairs(cmd_opengate) do
                if isKeyJustPressed(k) then
                    if not sampIsChatInputActive() and not sampIsDialogActive() and not sampIsCursorActive() and not isSampfuncsConsoleActive() then
                        sampSendChat(cmd)
                    end
                end
            end
        end
    end
end
-- Скрипт был переписан и доработан мной но, перевоначальным автором является https://www.blast.hk/threads/157906/ (Cypher)
-- Скрипт изначально делался для себя
 

Вложения

  • opengate (6).lua
    436 байт · Просмотры: 5
Последнее редактирование:

Ben Puls

Активный
Автор темы
110
26
xd. вовремя я это заметил
найс переделал скрипт с говнокодом в ещё более гонокодовый скрипт с тучей ненужных функций
представим что функция отключения и выключения полезна, ещё куда не шло, нахуя тут сохранение в ini файл - в душе не чаю

1:
                if isKeyJustPressed(k) then
                    if not sampIsChatInputActive() and not sampIsDialogActive() and not sampIsCursorActive() and not isSampfuncsConsoleActive() then
                        sampSendChat(cmd)
почему нельзя заменить это на
1:
          if not sampIsCursorActive() and isKeyJustPressed(VK_H) and active then
            sampSendChat("opengate")

Даже сказать нечего, вот мой изначальный скрипт переделанный мною сейчас (я с того момента в луа ничего не делал)

мой код:
1:
require 'lib.moonloader'
local active = true

function main()
    while not isSampAvailable() do wait(0) end
    sampRegisterChatCommand('gate',function()
        active = not active
        sampAddChatMessage('[gate]: ' .. (active and 'work' or 'dont work'), -1)
    end)
    while true do
        wait(0)
        if not sampIsCursorActive() and isKeyJustPressed(VK_H) and active then
            sampSendChat('/opengate')
        end
    end
end
Команда /gate


твой код:
1:
script_name('FastOpenGate')
script_author('Ben_Puls')
script_description('FastOpenGate')
require 'lib.moonloader'
local vkeys = require "vkeys"
local ini = require "inicfg"
local nCfg = "FastOpenGate.ini"
local cfg = ini.load({opengate = { lock = true }}, nCfg)
local cmd_opengate = { [VK_H] = '/opengate' }

function main()
    if not isSampfuncsLoaded() or not isSampLoaded() then return end
    while not isSampAvailable() do wait(100) end
        sampAddChatMessage("{58c9b1}[FastOpenGate by Ben Puls] {ffffff}успешно запущен (/gateinfo, /gate)", -1)
        print("Has been started by Ben Puls")
        sampRegisterChatCommand("gate", function()
            cfg.opengate.lock = not cfg.opengate.lock
            if ini.save(cfg, nCfg) then
                sampAddChatMessage("{58c9b1}[FastOpenGate] " .. (cfg.opengate.lock and "{AAFFAA}Включен" or "{FFAAAA}Выключен"), 0xEEEEEE)
            end
        end)
        sampRegisterChatCommand("gateinfo", function ()
            sampShowDialog(6405, 'FastOpenGate by Ben Puls', 'FastOpenGate: ' .. (cfg.opengate.lock and "{AAFFAA}Включен" or "{FFAAAA}Выключен")..'\n\n\n{FFFFFF}Скрипт быстро открывает двери на "H".', 'Закрыть', '', DIALOG_STYLE_MSGBOX)
        end)
    while true do wait(0)
        if cfg.opengate.lock then
            for k, cmd in pairs(cmd_opengate) do
                if isKeyJustPressed(k) then
                    if not sampIsChatInputActive() and not sampIsDialogActive() and not sampIsCursorActive() and not isSampfuncsConsoleActive() then
                        sampSendChat(cmd)
                    end
                end
            end
        end
    end
end
-- Скрипт был переписан и доработан мной но, перевоначальным автором является https://www.blast.hk/threads/157906/ (Cypher)
-- Скрипт изначально делался для себя
Это был мой первый опыт на Lua, я на нём не работаю. Спасибо за критику, но эти ошибки я уже давно усвоил, просто переделывать я не вижу смысла. Всё равно мой код никому не нужен.
 

Cypher

Активный
224
55
Это был мой первый опыт на Lua, я на нём не работаю. Спасибо за критику, но эти ошибки я уже давно усвоил, просто переделывать я не вижу смысла. Всё равно мой код никому не нужен.
по этому вопросов нет, вопрос в другом
почему твой первый опыт на луа, это переделать чей то код, ухудшить его, и сказать всем что твой лучше, потому что в моем много недоработок?)0
 

Ben Puls

Активный
Автор темы
110
26
по этому вопросов нет, вопрос в другом
почему твой первый опыт на луа, это переделать чей то код, ухудшить его, и сказать всем что твой лучше, потому что в моем много недоработок?)0
Если хочешь, то я могу удалить тему.
 

Ben Puls

Активный
Автор темы
110
26
Рефакторинг кода.
Скажем, по просьбам трудящихся, был произведён рефакторинг кода. Уменьшено количество строк кода, функционал остался прежним.
 

Вложения

  • fastopengate.lua
    1.2 KB · Просмотры: 4