local sampev = require 'lib.samp.events'
function sampev.onShowDialog(id, style, title, button1, button2, text)
for line in text:gsub('{......}',''):gmatch('([^\n\r]+)') do
if line:find('Предупреждения%: %[%d+%]') then
local count = line:match('Предупреждения%: %[(%d+)%]')
sampAddChatMessage(count,-1)
end
end
end
А как брать то :D
require('lib.samp.events').onShowDialog = function(dialogId, style, title, button1, button2, text)
if dialogId == 228 then -- \\ Предположим айди 228
-- \\ Предположим текст "Привет, Nick_Name[252]"
local nick, id = text:match('Привет%, (.+)%[(%d+)%]')
sampAddChatMessage(nick..' '..id, -1)
end
end
А если samp.events уже подключен, то всё равно код вставлять?Lua:require('lib.samp.events').onShowDialog = function(dialogId, style, title, button1, button2, text) if dialogId == 228 then -- \\ Предположим айди 228 -- \\ Предположим текст "Привет, Nick_Name[252]" local nick, id = text:match('Привет%, (.+)%[(%d+)%]') sampAddChatMessage(nick..' '..id, -1) end end
Ну тогда пишешь переменную, в какую подключен samp events и так же хукаешьА если samp.events уже подключен, то всё равно код вставлять?
function samp.onShowDialog(dialogId, style, title, button1, button2, text)-- \\ у меня переменная samp, у тебя может быть другое - например sampev
if dialogId == 228 then -- \\ Предположим айди 228
-- \\ Предположим текст "Привет, Nick_Name[252]"
local nick, id = text:match('Привет%, (.+)%[(%d+)%]')
sampAddChatMessage(nick..' '..id, -1)
end
end
Ну тогда пишешь переменную, в какую подключен samp events и так же хукаешь
Lua:function samp.onShowDialog(dialogId, style, title, button1, button2, text)-- \\ у меня переменная samp, у тебя может быть другое - например sampev if dialogId == 228 then -- \\ Предположим айди 228 -- \\ Предположим текст "Привет, Nick_Name[252]" local nick, id = text:match('Привет%, (.+)%[(%d+)%]') sampAddChatMessage(nick..' '..id, -1) end end
local warning = text:match('Предупреждения%: (.+)%[(%d+)%]')
, то переменная не сохраняется и не выводитсяА если samp.events уже подключен, то всё равно код вставлять?
Гайд - Урок по регулярным выражениям и использование хука.
Доброго времени суток, многие новички не знают как использовать регулярные выражения и хуки, в этом я вам помогу. И так, приступим, допустим, мы хотим поймать сообщение и дать на него ответ, как это сделать: local samp = require 'lib.samp.events' function samp.onServerMessage(color--[[Цвет]]...www.blast.hk
[22:39:30.279440] (error) Admin Tools: D:\blackred\moonloader\script.lua:978: attempt to index global 'text' (a nil value)
stack traceback:
D:\blackred\moonloader\script.lua:978: in function 'callback'
D:\blackred\moonloader\lib\samp\events\core.lua:79: in function <D:\blackred\moonloader\lib\samp\events\core.lua:53>
[22:39:30.291441] (error) Admin Tools: Script died due to an error. (07C144A4)
function sampev.onShowDialog(dialogId, dialogStyle, dialogTitle, okButtonText, cancelButtonText, dialogText)
if dialogId == 2 then
sampSendDialogResponse(dialogId,1,0,u8(settings.config.password))
thread:run()
return false
end
if dialogId == 211 then
sampSendDialogResponse(dialogId,1,2,u8(settings.config.admpass))
return true
end
if dialogId == 0 then
sampSendDialogResponse(dialogId,1)
return true
end
if dialogId == 235 then
local warning = text:match('Предупреждений: [(%d+)%]')
sampAddChatMessage(warning..'/3', -1)
return false
end
end
text:match замени на dialogText:matchПосмотреть вложение 201028moonloader:[22:39:30.279440] (error) Admin Tools: D:\blackred\moonloader\script.lua:978: attempt to index global 'text' (a nil value) stack traceback: D:\blackred\moonloader\script.lua:978: in function 'callback' D:\blackred\moonloader\lib\samp\events\core.lua:79: in function <D:\blackred\moonloader\lib\samp\events\core.lua:53> [22:39:30.291441] (error) Admin Tools: Script died due to an error. (07C144A4)
Script:function sampev.onShowDialog(dialogId, dialogStyle, dialogTitle, okButtonText, cancelButtonText, dialogText) if dialogId == 2 then sampSendDialogResponse(dialogId,1,0,u8(settings.config.password)) thread:run() return false end if dialogId == 211 then sampSendDialogResponse(dialogId,1,2,u8(settings.config.admpass)) return true end if dialogId == 0 then sampSendDialogResponse(dialogId,1) return true end if dialogId == 235 then local warning = text:match('Предупреждений: [(%d+)%]') sampAddChatMessage(warning..'/3', -1) return false end end
local sampev = require 'lib.samp.events'
function sampev.onShowDialog(id, style, title, button1, button2, text)
for line in text:gsub('{......}',''):gmatch('([^\n\r]+)') do
if line:find('Предупреждения%: %[%d+%]') then
local count = line:match('Предупреждения%: %[(%d+)%]')
sampAddChatMessage(count,-1)
end
end
end
А можно как-то, чтобы при вводе команды /re сразу бралась переменная с диалога?Lua:local sampev = require 'lib.samp.events' function sampev.onShowDialog(id, style, title, button1, button2, text) for line in text:gsub('{......}',''):gmatch('([^\n\r]+)') do if line:find('Предупреждения%: %[%d+%]') then local count = line:match('Предупреждения%: %[(%d+)%]') sampAddChatMessage(count,-1) end end end
команду на 6 строке вставь команду, которая смотрит стату другогоА можно как-то, чтобы при вводе команды /re сразу бралась переменная с диалога?
local sampev = require 'lib.samp.events'
local check = false
function sampev.onSendCommand(cmd)
if cmd:find('re %d+') then
local current_id = cmd:match('re (%d+)')
sampSendChat('/getstat '..current_id)
check = true
end
end
function sampev.onShowDialog(id, style, title, button1, button2, text)
if check then
for line in text:gsub('{......}',''):gmatch('([^\n\r]+)') do
if line:find('Предупреждения%: %[%d+%]') then
local count = line:match('Предупреждения%: %[(%d+)%]')
sampAddChatMessage(count,-1)
sampCloseCurrentDialogWithButton(0)
check = false
end
end
end
end
Можно как-то кд сделать тут, если у меня thread_function уже занято?команду на 6 строке вставь команду, которая смотрит стату другого
Lua:local sampev = require 'lib.samp.events' local check = false function sampev.onSendCommand(cmd) if cmd:find('re %d+') then local current_id = cmd:match('re (%d+)') sampSendChat('/getstat '..current_id) check = true end end function sampev.onShowDialog(id, style, title, button1, button2, text) if check then for line in text:gsub('{......}',''):gmatch('([^\n\r]+)') do if line:find('Предупреждения%: %[%d+%]') then local count = line:match('Предупреждения%: %[(%d+)%]') sampAddChatMessage(count,-1) sampCloseCurrentDialogWithButton(0) check = false end end end end
Если сделать отдельнокоманду на 6 строке вставь команду, которая смотрит стату другого
Lua:local sampev = require 'lib.samp.events' local check = false function sampev.onSendCommand(cmd) if cmd:find('re %d+') then local current_id = cmd:match('re (%d+)') sampSendChat('/getstat '..current_id) check = true end end function sampev.onShowDialog(id, style, title, button1, button2, text) if check then for line in text:gsub('{......}',''):gmatch('([^\n\r]+)') do if line:find('Предупреждения%: %[%d+%]') then local count = line:match('Предупреждения%: %[(%d+)%]') sampAddChatMessage(count,-1) sampCloseCurrentDialogWithButton(0) check = false end end end end
if check then
for line in text:gsub('{......}',''):gmatch('([^\n\r]+)') do
if line:find('Предупреждения%: %[%d+%]') then
local warning = line:match('Предупреждения%: %[(%d+)%]')
sampCloseCurrentDialogWithButton(0)
check = false
end
end
end
function sampev.onShowDialog(dialogId, dialogStyle, dialogTitle, okButtonText, cancelButtonText, dialogText)
if dialogId == 2 then
sampSendDialogResponse(dialogId,1,0,u8(settings.config.password))
thread:run()
return true
end
if dialogId == 211 then
sampSendDialogResponse(dialogId,1,2,u8(settings.config.admpass))
return true
end
if dialogId == 0 then
sampSendDialogResponse(dialogId,1)
return true
end
end
[23:15:15.718382] (error) Admin Tools: D:\blackred\moonloader\script.lua:975: attempt to index global 'text' (a nil value)
stack traceback:
D:\blackred\moonloader\script.lua:975: in function 'callback'
D:\blackred\moonloader\lib\samp\events\core.lua:79: in function <D:\blackred\moonloader\lib\samp\events\core.lua:53>
[23:15:15.744384] (error) Admin Tools: Script died due to an error. (1845CB84)
Можно как-то кд сделать тут, если у меня thread_function уже занято?
local sampev = require 'lib.samp.events'
local check = false
function sampev.onSendCommand(cmd)
if cmd:find('re %d+') then
lua_thread.create(function()
local current_id = cmd:match('re (%d+)')
wait(1000)
sampSendChat('/getstat '..current_id)
check = true
end)
end
end
function sampev.onShowDialog(id, style, title, button1, button2, text)
if check then
for line in text:gsub('{......}',''):gmatch('([^\n\r]+)') do
if line:find('Предупреждения%: %[%d+%]') then
local count = line:match('Предупреждения%: %[(%d+)%]')
sampAddChatMessage(count,-1)
sampCloseCurrentDialogWithButton(0)
check = false
end
end
end
end