Бот Болтун с задержкой ответа

Разработка и поиск скриптов, обсуждение PtokaX.
Ответить
Disconnect

Бот Болтун с задержкой ответа

Сообщение Disconnect »

Здраствуйте!
Простите не сильно разбираюсь в скриптах (вообще не разбираюсь), глупый вопрос...
Как поставить задержу на вывод ответа в Говоруне ?..
Пытался втюхивать :
"tmr = TmrMan.AddTimer (5000)
function OnTimer(tmr) "
в разные места основной функции... выходило какоето зацикливание , и бот писал 30 раз ответ в один момент ,и повторял каждые 5 секунд , через 5 секунд после ввода команды ключа.... собственно тело старого доброго говоруна

Код: Выделить всё

BotName = "Bot"		-- имя бота 
BotDesc = "Ня ^^"	-- описание бота
BotEmail = "email"	-- email бота

TableName = {
}

trigs = { 
}

Rus={["А"]="а",["Б"]="б",["В"]="в",["Г"]="г",["Д"]="д",["Е"]="е",["Ё"]="ё",["Ж"]="ж",["З"]="з",["И"]="и",["Й"]="й",["К"]="к",["Л"]="л",["М"]="м",["Н"]="н",["О"]="о",["П"]="п",["Р"]="р",["С"]="с",["Т"]="т",["У"]="у",["Ф"]="ф",["Х"]="х",["Ц"]="ц",["Ч"]="ч",["Ш"]="ш",["Щ"]="щ",["Ъ"]="ъ",["Ы"]="ы",["Ь"]="ь",["Э"]="э",["Ю"]="ю",["Я"]="я"}

function OnStartup()
	if (_VERSION == "Lua 5.1.1") or (_VERSION == "Lua 5.1") then
		TableMaxSize = table.maxn
	elseif (_VERSION == "Lua 5.0.2") then
		TableMaxSize = table.getn
	end

	Core.RegBot(BotName, BotDesc, BotEmail, true)
end
 
function ChatArrival(curUser, data)
	if TableName[curUser.sNick] ~=1 then if string.sub(data, 1, 1) then
		data=string.sub(data,1,string.len(data)-1)
		s,e,cmd,RestOfText = string.find( data, "%b<>%s+(%S+)%s+(.*)" )                          
		if RestOfText == nil then
			RestOfText = ""												 
			s,e,cmd = string.find( data, "%b<>%s+(%S+)" )							 
		end
	end
		s,e,mess = string.find(data, "^%b<>%s(.*)$")
		for key in pairs(trigs) do
			if mess then
				for b,s in pairs(Rus) do
					data=string.gsub(data , b, Rus[b])
					if( string.find(data, key) ) then
					answer, x = string.gsub(trigs[key][math.random(1,TableMaxSize(trigs[key]))], "%b[]", curUser.sNick)
					Core.SendToAll("<"..curUser.sNick.."> "..cmd.." "..RestOfText)
					Core.SendToAll("<"..BotName.."> "..answer )					 
					return true
					end
				end
				if( string.find( string.lower(mess), key) ) then
					answer, x = string.gsub(trigs[key][math.random(1,TableMaxSize(trigs[key]))], "%b[]", curUser.sNick)
					Core.SendToAll("<"..curUser.sNick.."> "..cmd.." "..RestOfText)				 
					Core.SendToAll("<"..BotName.."> "..answer )
					return true
				end
			end
		end
	end
end
Аватара пользователя
Вечный
Сообщения: 1098
Зарегистрирован: 24 авг 2009, 17:27

Сообщение Вечный »

Код: Выделить всё

function ChatArrival(curUser, data)
	if TableName[curUser.sNick] ~=1 then if string.sub(data, 1, 1) then
		data=string.sub(data,1,string.len(data)-1)
		s,e,cmd,RestOfText = string.find( data, "%b<>%s+(%S+)%s+(.*)" )                          
		if RestOfText == nil then
			RestOfText = ""												 
			s,e,cmd = string.find( data, "%b<>%s+(%S+)" )							 
		end
	end
		s,e,mess = string.find(data, "^%b<>%s(.*)$")
		for key in pairs(trigs) do
			if mess then
				for b,s in pairs(Rus) do
					data=string.gsub(data , b, Rus[b])
					if( string.find(data, key) ) then
					answer, x = string.gsub(trigs[key][math.random(1,TableMaxSize(trigs[key]))], "%b[]", curUser.sNick)
					Core.SendToAll("<"..curUser.sNick.."> "..cmd.." "..RestOfText)
					Core.SendToAll("<"..BotName.."> "..answer )					 
					return true
					end
				end
				if( string.find( string.lower(mess), key) ) then
					answer, x = string.gsub(trigs[key][math.random(1,TableMaxSize(trigs[key]))], "%b[]", curUser.sNick)
					Core.SendToAll("<"..curUser.sNick.."> "..cmd.." "..RestOfText)
                                                tmr = TmrMan.AddTimer (5000)
	                                               function OnTimer(tmr)				 
					                      Core.SendToAll("<"..BotName.."> "..answer )
	                                                      TmrMan.RemoveTimer(tmr)
	                                               end
					return true
				end
			end
		end
	end
end
Как-то так.
Disconnect

Сообщение Disconnect »

спс..теперь всё отлично , только поставить это нововведение нужно и в первое условие ответа , обычно срабатывает именно оно...
Аватара пользователя
Вечный
Сообщения: 1098
Зарегистрирован: 24 авг 2009, 17:27

Сообщение Вечный »

Ну да, первое я не заметил просто. :-)
[North]LordWolf
Сообщения: 115
Зарегистрирован: 14 фев 2011, 01:21
Хаб: dchub://angel.karumo.pp.ru
Откуда: Тайга,третье дерево справа.
Контактная информация:

Сообщение [North]LordWolf »

Можно вопрос,а нафига эти говоруны нужны вообще?По сути их щас ставят в стандартной комплектации фраз,ну там пару фраз админы от себя добавят и все,и смысла в них нет,наоборот только мешает когда с кем нить общаешься.
Ответить