Проблема с активацией скрипта.

Firus20016

Участник
Автор темы
148
15
Версия MoonLoader
.025-beta
Привет всем, помогите со скрипотом пожалуйста. При вводе команды /eda 0 - скрипт выключается, при вводе /eda 1 - скрипт не реагирует, а в сампе пишет шо неизвестная команда, шо делать?
Lua:
local sampev = require 'lib.samp.events'
local active = true -- по дефолту скрипт будет включен

function main()
  if not isSampfuncsLoaded() or not isSampLoaded() then return end
  while not isSampAvailable() do wait(100) end
  sampRegisterChatCommand("eda", activatecmd)
      while true do
        sampSendChat("/house")
        wait(1800000)
     end
end

function activatecmd()
    if active == 0 then -- Если active == 0, то присваиваем ему 1
        active = 1
    else -- Если active == 0, то присваиваем 1
        active = 0
      end
            lua_thread.create(sampev.onShowDialog(dialogId, style, title, button1, button2, text))
 end

function sampev.onShowDialog(dialogId, style, title, button1, button2, text)
     if dialogId == 174 and active then
       sampSendDialogResponse(174, 1, 1, -1)
       return false
     end
     if dialogId == 2431 and active then
       sampSendDialogResponse(2431, 1, 0, -1)
       return false
     end
     if dialogId == 185 and active then
       sampSendDialogResponse(185, 1, 6, -1)
       return false
     end
end
 
Решение
Так твоя функция не принимает параметров, что ты туда передавать собрался?
onShowDialog не нужно создавать поток, это хук.
Короче, на.

Lua:
local events = require 'lib.samp.events'
local active = true
local init = false

function main()
    if not init then
      if not isSampAvailable() then return false end
      sampRegisterChatCommand("EDA", function ()
        active = not active end)
      init = true
    end
    sampSendChat("/house")
    wait(1800000)
    return false
end

function events.onShowDialog(dialogId, style, title, button1, button2, text)
    if dialogId == 174 and active then
      sampSendDialogResponse(174, 1, 1, -1)
      return false
    end
    if dialogId == 2431 and active then...

Carrentine

Потрачен
569
460
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Так твоя функция не принимает параметров, что ты туда передавать собрался?
onShowDialog не нужно создавать поток, это хук.
Короче, на.

Lua:
local events = require 'lib.samp.events'
local active = true
local init = false

function main()
    if not init then
      if not isSampAvailable() then return false end
      sampRegisterChatCommand("EDA", function ()
        active = not active end)
      init = true
    end
    sampSendChat("/house")
    wait(1800000)
    return false
end

function events.onShowDialog(dialogId, style, title, button1, button2, text)
    if dialogId == 174 and active then
      sampSendDialogResponse(174, 1, 1, -1)
      return false
    end
    if dialogId == 2431 and active then
       sampSendDialogResponse(2431, 1, 0, -1)
       return false
    end
    if dialogId == 185 and active then
       sampSendDialogResponse(185, 1, 6, -1)
       return false
    end
end
 
Последнее редактирование:
  • Нравится
Реакции: Firus20016 и Quasper

Quasper

Известный
834
354
Привет всем, помогите со скрипотом пожалуйста. При вводе команды /eda 0 - скрипт выключается, при вводе /eda 1 - скрипт не реагирует, а в сампе пишет шо неизвестная команда, шо делать?
Lua:
local sampev = require 'lib.samp.events'
local active = true -- по дефолту скрипт будет включен

function main()
  if not isSampfuncsLoaded() or not isSampLoaded() then return end
  while not isSampAvailable() do wait(100) end
  sampRegisterChatCommand("eda", activatecmd)
      while true do
        sampSendChat("/house")
        wait(1800000)
     end
end

function activatecmd()
    if active == 0 then -- Если active == 0, то присваиваем ему 1
        active = 1
    else -- Если active == 0, то присваиваем 1
        active = 0
      end
            lua_thread.create(sampev.onShowDialog(dialogId, style, title, button1, button2, text))
end

function sampev.onShowDialog(dialogId, style, title, button1, button2, text)
     if dialogId == 174 and active then
       sampSendDialogResponse(174, 1, 1, -1)
       return false
     end
     if dialogId == 2431 and active then
       sampSendDialogResponse(2431, 1, 0, -1)
       return false
     end
     if dialogId == 185 and active then
       sampSendDialogResponse(185, 1, 6, -1)
       return false
     end
end
потому что у тебя отмирает скрипт после первичного ввода команды из за попытки булевую переменную сменить на намбер. Я же тебе писал код в другой темке, там правда вкл/выкл командой без аргуметов но если ты хочешь сделать с аргументами(по типу "/eda 1" "/eda 0") то это будет выглядеть так
Lua:
local sampev = require 'lib.samp.events'
local active = true -- по дефолту скрипт будет включен


function main()
  if not isSampfuncsLoaded() or not isSampLoaded() then return end
  while not isSampAvailable() do wait(100) end
  sampRegisterChatCommand("eda", activatecmd)
      while true do
        sampSendChat("/house")
        wait(1800000)
     end
end



function activatecmd(arg)
    arg = arg:match("%s+(%d+)%s+") --тут парсим твой аргумент в переменную
    if tonumber(arg) ~= 0 and tonumber(arg) ~= 1 then
        sampAddChatMessage("Вы ввели не верный аргумент!", -1)
    end
    if tonumber(arg) == 0 then
        active = false
        sampAddChatMessage("Скрипт отключен", -1)
    elseif tonumber(arg) == 1 then
        active = true
        sampAddChatMessage("Скрипт включен", -1)
    end
end



function sampev.onShowDialog(dialogId, style, title, button1, button2, text)
     if dialogId == 174 and active then
       sampSendDialogResponse(174, 1, 1, -1)
       return false
     end
     if dialogId == 2431 and active then
       sampSendDialogResponse(2431, 1, 0, -1)
       return false
     end
     if dialogId == 185 and active then
       sampSendDialogResponse(185, 1, 6, -1)
       return false
     end

end
 

Carrentine

Потрачен
569
460
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
потому что у тебя отмирает скрипт после первичного ввода команды из за попытки булевую переменную сменить на намбер. Я же тебе писал код в другой темке, там правда вкл/выкл командой без аргуметов но если ты хочешь сделать с аргументами(по типу "/eda 1" "/eda 0") то это будет выглядеть так
Lua:
local sampev = require 'lib.samp.events'
local active = true -- по дефолту скрипт будет включен


function main()
  if not isSampfuncsLoaded() or not isSampLoaded() then return end
  while not isSampAvailable() do wait(100) end
  sampRegisterChatCommand("eda", activatecmd)
      while true do
        sampSendChat("/house")
        wait(1800000)
     end
end



function activatecmd(arg)
    arg = arg:match("%s+(%d+)%s+") --тут парсим твой аргумент в переменную
    if tonumber(arg) ~= 0 and tonumber(arg) ~= 1 then
        sampAddChatMessage("Вы ввели не верный аргумент!", -1)
    end
    if tonumber(arg) == 0 then
        active = false
        sampAddChatMessage("Скрипт отключен", -1)
    elseif tonumber(arg) == 1 then
        active = true
        sampAddChatMessage("Скрипт включен", -1)
    end
end



function sampev.onShowDialog(dialogId, style, title, button1, button2, text)
     if dialogId == 174 and active then
       sampSendDialogResponse(174, 1, 1, -1)
       return false
     end
     if dialogId == 2431 and active then
       sampSendDialogResponse(2431, 1, 0, -1)
       return false
     end
     if dialogId == 185 and active then
       sampSendDialogResponse(185, 1, 6, -1)
       return false
     end

end

Да и вообще самый правильный и хороший вариант я показал, переменная bool, зачем вводить параметры?
 

Quasper

Известный
834
354
из за чего багнется то?

а вот тут вообще логику не понял
Lua:
if tonumber(arg) ~= 0 else tonumber(arg) ~= 1 then -- and заменить на else
[/QUOTE]

Да и вообще правильный и хороший пример как ты говоришь я ему уже показывал
Вот тут
Да и вообще самый правильный и хороший вариант я показал, переменная bool, зачем вводить параметры?
 

Carrentine

Потрачен
569
460
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
из за чего багнется то?

а вот тут вообще логику не понял
Удалил уже. Какую логику?
из за чего багнется то?

а вот тут вообще логику не понял
Lua:
if tonumber(arg) ~= 0 else tonumber(arg) ~= 1 then -- and заменить на else

Сократил код.
И еще, у меня лучше проверка на загруженность сампа!
 
Последнее редактирование:

Quasper

Известный
834
354
Удалил уже. Какую логику?


Сократил код.
И еще, у меня лучше проверка на загруженность сампа!
Логику кода "если аргумент не равен 0 иначе аргумент не равен 1 то".
Какая проверка?)
 

Carrentine

Потрачен
569
460
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Логику кода "если аргумент не равен 0 иначе аргумент не равен 1 то".
Какая проверка?)
Забей, рофл)
Lua:
if not isSampAvailable() then return false end
Подсказка, когда мейну ретернишь false он начинает новую итерацию, что то в роде continue)
 

Quasper

Известный
834
354
Забей, рофл)
Lua:
if not isSampAvailable() then return false end
Подсказка, когда мейну ретернишь false он начинает новую итерацию, что то в роде continue)
ну так код то не мой, я просто исправил ошибки и привнёс что то новенькое)
 

Carrentine

Потрачен
569
460
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.

Firus20016

Участник
Автор темы
148
15
Так твоя функция не принимает параметров, что ты туда передавать собрался?
onShowDialog не нужно создавать поток, это хук.
Короче, на.

Lua:
local events = require 'lib.samp.events'
local active = true
local init = false

function main()
    if not init then
      if not isSampAvailable() then return false end
      sampRegisterChatCommand("EDA", function ()
        active = not active end)
      init = true
    end
    sampSendChat("/house")
    wait(1800000)
    return false
end

function events.onShowDialog(dialogId, style, title, button1, button2, text)
    if dialogId == 174 and active then
      sampSendDialogResponse(174, 1, 1, -1)
      return false
    end
    if dialogId == 2431 and active then
       sampSendDialogResponse(2431, 1, 0, -1)
       return false
    end
    if dialogId == 185 and active then
       sampSendDialogResponse(185, 1, 6, -1)
       return false
    end
end
я просто не шарю в луа) Пытаюсь просто шо то понять, а так спасибо огромное.)