Форум HeroesWorld-а - Показать сообщение отдельно - Скрипты
Тема: Скрипты
Показать сообщение отдельно
#2346
Старый 28.07.2017, 22:00
  #2346
^
Dyrman
 
Аватар для Dyrman
📖
Регистрация: 24.06.2008
Адрес: Там, где неба кончается край
Сообщения: 3479
Отправить сообщение для  Dyrman с помощью ICQ
Регистрация: 24.06.2008
Адрес: Там, где неба кончается край
Сообщения: 3479
Отправить сообщение для  Dyrman с помощью ICQ
По умолчанию
Re: Модостроительство

Имеется код:
	local NHF_Trigger_env = {trig = {}}
print("T1:");
NHF_Trigger_env.Trigger = Trigger
function NHF_Trigger_env.tostring(a)
	return a and (a.."" ~= a and a or '"'..a..'"') or "nil"
end;
function NHF_Trigger_env.emptytable(t)
	print("T2:");
	for k,v in t do
		if v then return nil end
	end
	return 1
end;
function NHF_Trigger_env.hasparam(i)
	print("T3:");
	return i ~= 0 and i ~= 10 and i ~= 11
end;
function __HANDLER(trigtype, param)
	print("T4:");
	print("T5:");
	local h = %NHF_Trigger_env.trig[trigtype]
	if not h then return end
	local NHF_Trigger_env = %NHF_Trigger_env
	return function(a, b, c, d)
		a = %NHF_Trigger_env.tostring(a)
		b = %NHF_Trigger_env.tostring(b)
		c = %NHF_Trigger_env.tostring(c)
		d = %NHF_Trigger_env.tostring(d)
		local args = "(" .. a .. "," .. b .. "," .. c .. "," .. d .. ")"
		print("T6:");
		for sender, tab in %h do
			if sender ~= 0 then
				local handler = %NHF_Trigger_env.hasparam(%trigtype) and tab and tab[%param] or tab
				if handler then
					startThread(parse(handler .. args))
				end
			end
		end		
		local tab = %h[0]
		print("T7:");
		if tab then
			local handler = %NHF_Trigger_env.hasparam(%trigtype) and tab and tab[%param] or tab
			if handler then
				print("T8:");
				startThread(parse(handler .. args))
			end
		end
	end
end;
function Trigger(sender, trig, par, handler)
	print("T9:");
	if sender .. "" ~= sender then
		print("T10:");
		sender, trig, par, handler = 0, sender, trig, par
	end
	if not %NHF_Trigger_env.hasparam(trig) then
		print("T11:");
		par, handler = nil, par
	end
	local need_disable = handler ~= nil
	if handler then
		print("T12:");
		%NHF_Trigger_env.trig[trig] = %NHF_Trigger_env.trig[trig] or {}
		if par then
			print("T13:");
			%NHF_Trigger_env.trig[trig][sender] = %NHF_Trigger_env.trig[trig][sender] or {}
			%NHF_Trigger_env.trig[trig][sender][par] = handler
		else
			print("T14:");
			%NHF_Trigger_env.trig[trig][sender] = handler
		end
	else
		print("T15:");
		if %NHF_Trigger_env.trig[trig] then
			if %NHF_Trigger_env.trig[trig][sender] then
				if par then
				print("T16:");
					%NHF_Trigger_env.trig[trig][sender][par] = nil
					need_disable = %NHF_Trigger_env.emptytable(%NHF_Trigger_env.trig[trig][sender])
					if need_disable then %NHF_Trigger_env.trig[trig][sender] = nil end
				else
					%NHF_Trigger_env.trig[trig][sender] = nil
				end
				need_disable = %NHF_Trigger_env.emptytable(%NHF_Trigger_env.trig[trig])
				if need_disable then %NHF_Trigger_env.trig[trig] = nil end
			end
		end
	end
	if not need_disable then return end
	if par then
		print("T17:");
		%NHF_Trigger_env.Trigger(trig, par, handler and "__HANDLER(" .. trig .. "," .. %NHF_Trigger_env.tostring(par) .. ")")
	else
		%NHF_Trigger_env.Trigger(trig, handler and "__HANDLER(" .. trig .. ")")
	end
	print("T18:end");
end;


Выдаёт ошибку:
Нажмите на изображение для увеличения
Название: Безымянный.png
Просмотров: 22
Размер:	33.8 Кбайт
ID:	50081

Есть ли предположения, что тут не так?
Dyrman вне форума
Ответить с цитированием