Костыль с хуком

James Hawk

Известный
Автор темы
919
218
При использовании двух команд ничего не получаю. То есть. если юзаю сначала одну команду (здесь "1"), а потом вторую (здесь "2"), то срабатывает только та, которую я использую первую (если сначала запущу "1", то "2" не работает и наоборот). Как это пофиксить?
moonloader 0.25
Lua:
local h = require 'lib.samp.events'

function main()
    if not isSampfuncsLoaded() or not isSampLoaded() then
        return
    end
sampRegisterChatCommand("1", tmp1)
sampRegisterChatCommand("2", tmp2)
while true do
        wait(0)
        if enabled_b then
            ...code...
        end
        if enabled_s then
            ...code...
        end
end

function tmp1(arg_b)
    enabled_b = not enabled_b
end

function tmp2(arg_s)
    enabled_s = not enabled_s
end

function h.onServerMessage(color,text)
if enabled_b or enabled_s then
    if string.find(text,"text1") or string.find(text,"text11") then
        enabled_b = false
    end
    if string.find(text,"text2") or string.find(text,"text22") then
        enabled_s = false
    end
end
end

P.S. И как правильно сделать перезагрузку скрипта?
 
Последнее редактирование:

James Hawk

Известный
Автор темы
919
218
Залез в лог, но легче не стало

Код:
[18:10:33.714973] (error)    RO: D:\Games\GTA SA New One\moonloader\ROscript.lua:82: attempt to yield across C-call boundary
stack traceback:
    [C]: in function 'wait'
    D:\Games\GTA SA New One\moonloader\ROscript.lua:82: in function 'callback'
    D:\Games\GTA SA New One\moonloader\lib\samp\events\core.lua:77: in function 'process_event'
    D:\Games\GTA SA New One\moonloader\lib\samp\events\core.lua:100: in function 'process_packet'
    D:\Games\GTA SA New One\moonloader\lib\samp\events\core.lua:127: in function <D:\Games\GTA SA New One\moonloader\lib\samp\events\core.lua:126>
[18:10:33.744971] (error)    RO: Script died due to error. (0DD9182C)
[18:10:33.745971] (debug)    Remove thread 226A6945 from SCM-thread queue
 

#Northn

Pears Project — уже запущен!
Всефорумный модератор
2,656
2,541
Залез в лог, но легче не стало

Код:
[18:10:33.714973] (error)    RO: D:\Games\GTA SA New One\moonloader\ROscript.lua:82: attempt to yield across C-call boundary
stack traceback:
    [C]: in function 'wait'
    D:\Games\GTA SA New One\moonloader\ROscript.lua:82: in function 'callback'
    D:\Games\GTA SA New One\moonloader\lib\samp\events\core.lua:77: in function 'process_event'
    D:\Games\GTA SA New One\moonloader\lib\samp\events\core.lua:100: in function 'process_packet'
    D:\Games\GTA SA New One\moonloader\lib\samp\events\core.lua:127: in function <D:\Games\GTA SA New One\moonloader\lib\samp\events\core.lua:126>
[18:10:33.744971] (error)    RO: Script died due to error. (0DD9182C)
[18:10:33.745971] (debug)    Remove thread 226A6945 from SCM-thread queue
Использование задержек (wait()) доступно только в функции main() и в https://blast.hk/wiki/lua:luathread
 

#Northn

Pears Project — уже запущен!
Всефорумный модератор
2,656
2,541
Спасибо, мой провтык. Как правильно скрипт перезагрузить? script:reload()?
Lua:
thisScript():reload()
-- script только в случае, если в этой переменной имеется указатель на скрипт, т.е. script = script.find(название из script_name) или script = thisScript()
-- Второй способ перезагружает только скрипт, в которой выполняется эта функция.
 
  • Нравится
Реакции: James Hawk