亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dongle.lua

?? 魔獸世界月光寶盒 感覺挺好
?? LUA
?? 第 1 頁 / 共 3 頁
字號:
							sv[section] = nil						end					end				end			end		end	endendfunction Dongle.SetProfile(db, name)	assert(3, databases[db], string.format(L["MUST_CALLFROM_DBOBJECT"], "SetProfile"))	argcheck(name, 2, "string")	local old = db.profile	local defaults = db.defaults and db.defaults.profile	if defaults then		-- Remove the defaults from the old profile		removeDefaults(old, defaults)	end	db.profile = nil	db.keys["profile"] = name	db.sv.profileKeys[db.keys.char] = name	Dongle:TriggerMessage("DONGLE_PROFILE_CHANGED", db, db.parent, db.sv_name, db.keys.profile)endfunction Dongle.GetProfiles(db, t)	assert(3, databases[db], string.format(L["MUST_CALLFROM_DBOBJECT"], "GetProfiles"))	argcheck(t, 2, "table", "nil")	t = t or {}	local i = 1	for profileKey in pairs(db.sv.profiles) do		t[i] = profileKey		i = i + 1	end	return t, i - 1endfunction Dongle.GetCurrentProfile(db)	assert(e, databases[db], string.format(L["MUST_CALLFROM_DBOBJECT"], "GetCurrentProfile"))	return db.keys.profileendfunction Dongle.DeleteProfile(db, name)	assert(3, databases[db], string.format(L["MUST_CALLFROM_DBOBJECT"], "DeleteProfile"))	argcheck(name, 2, "string")	if db.keys.profile == name then		error(L["CANNOT_DELETE_ACTIVE_PROFILE"], 2)	end	assert(type(db.sv.profiles[name]) == "table", L["DELETE_NONEXISTANT_PROFILE"])	db.sv.profiles[name] = nil	Dongle:TriggerMessage("DONGLE_PROFILE_DELETED", db, db.parent, db.sv_name, name)endfunction Dongle.CopyProfile(db, name)	assert(3, databases[db], string.format(L["MUST_CALLFROM_DBOBJECT"], "CopyProfile"))	argcheck(name, 2, "string")	assert(3, db.keys.profile ~= name, L["SAME_SOURCE_DEST"])	assert(3, type(db.sv.profiles[name]) == "table", string.format(L["PROFILE_DOES_NOT_EXIST"], name))	local profile = db.profile	local source = db.sv.profiles[name]	copyDefaults(profile, source, true)	Dongle:TriggerMessage("DONGLE_PROFILE_COPIED", db, db.parent, db.sv_name, name, db.keys.profile)endfunction Dongle.ResetProfile(db)	assert(3, databases[db], string.format(L["MUST_CALLFROM_DBOBJECT"], "ResetProfile"))	local profile = db.profile	for k,v in pairs(profile) do		profile[k] = nil	end	local defaults = db.defaults and db.defaults.profile	if defaults then		copyDefaults(profile, defaults)	end	Dongle:TriggerMessage("DONGLE_PROFILE_RESET", db, db.parent, db.sv_name, db.keys.profile)endfunction Dongle.ResetDB(db, defaultProfile)	assert(3, databases[db], string.format(L["MUST_CALLFROM_DBOBJECT"], "ResetDB"))		argcheck(defaultProfile, 2, "nil", "string")	local sv = db.sv	for k,v in pairs(sv) do		sv[k] = nil	end	local parent = db.parent	initdb(parent, db.sv_name, db.defaults, defaultProfile, db)	Dongle:TriggerMessage("DONGLE_DATABASE_RESET", db, parent, db.sv_name, db.keys.profile)	Dongle:TriggerMessage("DONGLE_PROFILE_CHANGED", db, db.parent, db.sv_name, db.keys.profile)	return dbendfunction Dongle.RegisterNamespace(db, name, defaults)	assert(3, databases[db], string.format(L["MUST_CALLFROM_DBOBJECT"], "RegisterNamespace"))		argcheck(name, 2, "string")	argcheck(defaults, 3, "nil", "string")	local sv = db.sv	if not sv.namespaces then sv.namespaces = {} end	if not sv.namespaces[name] then		sv.namespaces[name] = {}	end	local newDB = initdb(db, sv.namespaces[name], defaults, db.keys.profile)	-- Remove the :SetProfile method from newDB	newDB.SetProfile = nil	if not db.children then db.children = {} end	table.insert(db.children, newDB)	return newDBend--[[-------------------------------------------------------------------------	Slash Command System---------------------------------------------------------------------------]]local slashCmdMethods = {	"InjectDBCommands",	"RegisterSlashHandler",	"PrintUsage",}local function OnSlashCommand(cmd, cmd_line)	if cmd.patterns then		for idx,tbl in pairs(cmd.patterns) do			local pattern = tbl.pattern			if string.match(cmd_line, pattern) then				local handler = tbl.handler				if type(tbl.handler) == "string" then					local obj					-- Look in the command object before we look at the parent object					if cmd[handler] then obj = cmd end					if cmd.parent[handler] then obj = cmd.parent end					if obj then						obj[handler](obj, string.match(cmd_line, pattern))					end				else					handler(string.match(cmd_line, pattern))				end				return			end		end	end	cmd:PrintUsage()endfunction Dongle:InitializeSlashCommand(desc, name, ...)	local reg = lookup[self]	assert(3, reg, string.format(L["MUST_CALLFROM_REGISTERED"], "InitializeSlashCommand"))	argcheck(desc, 2, "string")	argcheck(name, 3, "string")	argcheck(select(1, ...), 4, "string")	for i = 2,select("#", ...) do		argcheck(select(i, ...), i+2, "string")	end	local cmd = {}	cmd.desc = desc	cmd.name = name	cmd.parent = self	cmd.slashes = { ... }	for idx,method in pairs(slashCmdMethods) do		cmd[method] = Dongle[method]	end	local genv = getfenv(0)	for i = 1,select("#", ...) do		genv["SLASH_"..name..tostring(i)] = "/"..select(i, ...)	end	genv.SlashCmdList[name] = function(...) OnSlashCommand(cmd, ...) end	commands[cmd] = true	return cmdendfunction Dongle.RegisterSlashHandler(cmd, desc, pattern, handler)	assert(3, commands[cmd], string.format(L["MUST_CALLFROM_SLASH"], "RegisterSlashHandler"))	argcheck(desc, 2, "string")	argcheck(pattern, 3, "string")	argcheck(handler, 4, "function", "string")	if not cmd.patterns then		cmd.patterns = {}	end	table.insert(cmd.patterns, {		["desc"] = desc,		["handler"] = handler,		["pattern"] = pattern,	})endfunction Dongle.PrintUsage(cmd)	assert(3, commands[cmd], string.format(L["MUST_CALLFROM_SLASH"], "PrintUsage"))	local parent = cmd.parent	parent:Echo(cmd.desc.."\n".."/"..table.concat(cmd.slashes, ", /")..":\n")	if cmd.patterns then		for idx,tbl in ipairs(cmd.patterns) do			parent:Echo(" - " .. tbl.desc)		end	endendlocal dbcommands = {	["copy"] = {		L["DBSLASH_PROFILE_COPY_DESC"],		L["DBSLASH_PROFILE_COPY_PATTERN"],		"CopyProfile",	},	["delete"] = {		L["DBSLASH_PROFILE_DELETE_DESC"],		L["DBSLASH_PROFILE_DELETE_PATTERN"],		"DeleteProfile",	},	["list"] = {		L["DBSLASH_PROFILE_LIST_DESC"],		L["DBSLASH_PROFILE_LIST_PATTERN"],	},	["reset"] = {		L["DBSLASH_PROFILE_RESET_DESC"],		L["DBSLASH_PROFILE_RESET_PATTERN"],		"ResetProfile",	},	["set"] = {		L["DBSLASH_PROFILE_SET_DESC"],		L["DBSLASH_PROFILE_SET_PATTERN"],		"SetProfile",	},}function Dongle.InjectDBCommands(cmd, db, ...)	assert(3, commands[cmd], string.format(L["MUST_CALLFROM_SLASH"], "InjectDBCommands"))	assert(3, databases[db], string.format(L["BAD_ARGUMENT_DB"], 2, "InjectDBCommands"))	local argc = select("#", ...)	assert(3, argc > 0, L["INJECTDB_USAGE"])	for i=1,argc do		local cmdname = string.lower(select(i, ...))		local entry = dbcommands[cmdname]		assert(entry, L["INJECTDB_USAGE"])		local func = entry[3]		local handler		if cmdname == "list" then			handler = function(...)				local profiles = db:GetProfiles()				db.parent:Print(L["DBSLASH_PROFILE_LIST_OUT"] .. "\n" .. strjoin("\n", unpack(profiles)))			end		else			handler = function(...) db[entry[3]](db, ...) end		end		cmd:RegisterSlashHandler(entry[1], entry[2], handler)	endend--[[-------------------------------------------------------------------------	Internal Message/Event Handlers---------------------------------------------------------------------------]]local function PLAYER_LOGOUT(event)	Dongle:ClearDBDefaults()	for k,v in pairs(registry) do		local obj = v.obj		if type(obj["Disable"]) == "function" then			safecall(obj["Disable"], obj)		end	endendlocal function PLAYER_LOGIN()	Dongle.initialized = true	for i=1, #loadorder do		local obj = loadorder[i]		if type(obj.Enable) == "function" then			safecall(obj.Enable, obj)		end		loadorder[i] = nil	endendlocal function ADDON_LOADED(event, ...)	for i=1, #loadqueue do		local obj = loadqueue[i]		table.insert(loadorder, obj)		if type(obj.Initialize) == "function" then			safecall(obj.Initialize, obj)		end		loadqueue[i] = nil	end	if not Dongle.initialized then		if type(IsLoggedIn) == "function" then			Dongle.initialized = IsLoggedIn()		else			Dongle.initialized = ChatFrame1.defaultLanguage		end	end	if Dongle.initialized then		for i=1, #loadorder do			local obj = loadorder[i]			if type(obj.Enable) == "function" then				safecall(obj.Enable, obj)			end			loadorder[i] = nil		end	endendlocal function DONGLE_PROFILE_CHANGED(msg, db, parent, sv_name, profileKey)	local children = db.children	if children then		for i,namespace in ipairs(children) do			local old = namespace.profile			local defaults = namespace.defaults and namespace.defaults.profile			if defaults then				-- Remove the defaults from the old profile				removeDefaults(old, defaults)			end			namespace.profile = nil			namespace.keys["profile"] = profileKey		end	endend--[[-------------------------------------------------------------------------	DongleStub required functions and registration---------------------------------------------------------------------------]]function Dongle:GetVersion() return major,minor endlocal function Activate(self, old)	if old then		registry = old.registry or registry		lookup = old.lookup or lookup		loadqueue = old.loadqueue or loadqueue		loadorder = old.loadorder or loadorder		events = old.events or events		databases = old.databases or databases		commands = old.commands or commands		messages = old.messages or messages		frame = old.frame or CreateFrame("Frame")	else		frame = CreateFrame("Frame")		local reg = {obj = self, name = "Dongle"}		registry[major] = reg		lookup[self] = reg		lookup[major] = reg	end	self.registry = registry	self.lookup = lookup	self.loadqueue = loadqueue	self.loadorder = loadorder	self.events = events	self.databases = databases	self.commands = commands	self.messages = messages	self.frame = frame	frame:SetScript("OnEvent", OnEvent)	local lib = old or self	-- Lets make sure the lookup table has us.	lookup[lib] = lookup[major]	-- Register for events using Dongle itself	lib:RegisterEvent("ADDON_LOADED", ADDON_LOADED)	lib:RegisterEvent("PLAYER_LOGIN", PLAYER_LOGIN)	lib:RegisterEvent("PLAYER_LOGOUT", PLAYER_LOGOUT)	lib:RegisterMessage("DONGLE_PROFILE_CHANGED", DONGLE_PROFILE_CHANGED)	-- Convert all the modules handles	for name,obj in pairs(registry) do		for k,v in ipairs(methods) do			obj[k] = self[v]		end	end	-- Convert all database methods	for db in pairs(databases) do		for idx,method in ipairs(dbMethods) do			db[method] = self[method]		end	end	-- Convert all slash command methods	for cmd in pairs(commands) do		for idx,method in ipairs(slashCmdMethods) do			cmd[method] = self[method]		end	endend-- Lets nuke any Dongle deactivate functions, please-- I hate nasty hacks.if DongleStub.versions and DongleStub.versions[major] then	local reg = DongleStub.versions[major]	reg.deactivate = nilendDongle = DongleStub:Register(Dongle, Activate)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
极品尤物av久久免费看| 亚洲免费在线视频| 欧美日韩精品三区| 成人中文字幕电影| 国产成人亚洲综合a∨婷婷| 精品一区二区在线观看| 日韩精品成人一区二区在线| 一区二区三区视频在线看| 亚洲精品国产高清久久伦理二区| 国产精品久久久久久久久晋中| 久久先锋资源网| 欧美国产禁国产网站cc| 国产精品私房写真福利视频| 国产精品美女视频| 亚洲视频中文字幕| 伊人色综合久久天天人手人婷| 麻豆一区二区三区| 蜜桃精品视频在线观看| 久久er精品视频| 精油按摩中文字幕久久| 岛国av在线一区| 99r国产精品| 欧美三级韩国三级日本一级| 欧美日韩三级一区二区| 欧美一区二区三级| 国产拍欧美日韩视频二区| 国产精品视频你懂的| 亚洲一区在线电影| 捆绑紧缚一区二区三区视频| 国产不卡在线视频| 色综合欧美在线| 日韩欧美卡一卡二| 国产精品视频你懂的| 亚洲成人精品影院| 国产精品综合久久| 91美女蜜桃在线| 欧美视频一区在线| 日韩精品专区在线影院观看| 国产精品乱码久久久久久| 亚洲一区二区在线播放相泽| 日产国产高清一区二区三区| 国产精品一区在线观看乱码 | 国产精品久久久久aaaa樱花 | 欧日韩精品视频| 欧美va亚洲va| 一区二区三区在线影院| 韩国精品免费视频| 色94色欧美sute亚洲13| 久久嫩草精品久久久久| 一区二区三区 在线观看视频| 麻豆一区二区三| 91一区二区在线| 久久欧美一区二区| 一区二区三区国产豹纹内裤在线| 精品亚洲免费视频| 欧美日本一区二区三区| 欧美国产日韩一二三区| 青娱乐精品在线视频| 色噜噜久久综合| 中文字幕免费不卡| 蜜臀av性久久久久蜜臀aⅴ | 欧美三级在线播放| 国产精品久久久久影院老司| 美日韩一区二区| 国产欧美日韩三区| 精品国产免费一区二区三区四区| 亚洲国产成人av| 中文字幕精品一区| 亚洲天堂网中文字| 日本一区二区视频在线观看| 欧美精品一区二区高清在线观看| 亚洲激情校园春色| 久久66热re国产| 成人性生交大片免费看视频在线 | 麻豆成人久久精品二区三区红| 久久理论电影网| 色综合天天在线| 久久机这里只有精品| 国产精品久久久久影院亚瑟| 欧美区在线观看| 国产精品系列在线观看| 亚洲国产成人porn| 国产午夜精品久久久久久免费视 | 国产激情偷乱视频一区二区三区| 亚洲天堂中文字幕| 精品久久久久久最新网址| 91麻豆成人久久精品二区三区| 日韩av一区二区在线影视| 欧美极品少妇xxxxⅹ高跟鞋 | 中文字幕免费一区| 欧美一二三区精品| 在线亚洲高清视频| 国产精品18久久久久久久久久久久 | 欧美日韩精品一区二区| 国产不卡免费视频| 久久狠狠亚洲综合| 无吗不卡中文字幕| 亚洲黄色性网站| 国产欧美日韩精品在线| 日韩欧美国产一区二区在线播放 | 国产精品嫩草久久久久| 日韩欧美另类在线| 欧美疯狂性受xxxxx喷水图片| 99久久精品国产一区二区三区| 精品一区二区三区免费毛片爱| 亚洲一区免费视频| 亚洲美女淫视频| 中文字幕不卡在线观看| 久久欧美一区二区| 2欧美一区二区三区在线观看视频| 欧美在线观看视频在线| 91色.com| 91亚洲精品一区二区乱码| 国产成人免费视频精品含羞草妖精 | 精品av久久707| 日韩欧美三级在线| 日韩一区二区三区电影在线观看 | 粉嫩高潮美女一区二区三区| 激情亚洲综合在线| 国产麻豆成人精品| 国产一区二区毛片| 国产精品一二二区| 成人精品视频.| 日韩视频在线观看一区二区| 欧美伦理影视网| 欧美精品v日韩精品v韩国精品v| 欧洲一区二区三区在线| 欧美日韩激情在线| 在线综合+亚洲+欧美中文字幕| 欧美三级一区二区| 日韩午夜在线观看视频| 久久综合成人精品亚洲另类欧美 | 4438成人网| 日韩一级二级三级精品视频| 91精品国产日韩91久久久久久| 91精品欧美一区二区三区综合在 | 欧美日本乱大交xxxxx| 91精品国产黑色紧身裤美女| 欧美高清激情brazzers| 日韩三级在线免费观看| 久久精品这里都是精品| 国产精品久久久久影院老司| 亚洲九九爱视频| 婷婷六月综合网| 精品一区二区三区在线播放视频| 国产剧情一区二区三区| 91婷婷韩国欧美一区二区| 欧美色图天堂网| 日韩久久久精品| 中文字幕成人网| 亚洲aⅴ怡春院| 国产一区二区中文字幕| 91一区在线观看| 在线不卡中文字幕播放| 久久精品网站免费观看| 亚洲另类在线一区| 蜜臀久久99精品久久久久宅男 | 国产91对白在线观看九色| 91麻豆免费看| 欧美成人r级一区二区三区| 国产精品三级av| av在线不卡免费看| 欧美日韩国产一区| 中文字幕乱码亚洲精品一区| 天堂久久久久va久久久久| 日本欧美在线观看| 色综合咪咪久久| 国产日韩欧美高清在线| 亚洲一区二区三区国产| 国产一区亚洲一区| 欧美日韩综合在线免费观看| 国产日产亚洲精品系列| 亚洲午夜激情网页| 欧美三级日韩在线| 中文字幕一区二区在线观看| 日本视频中文字幕一区二区三区| 91麻豆精品视频| 国产乱人伦偷精品视频免下载| 麻豆精品国产传媒mv男同| 久久国产婷婷国产香蕉| 日韩**一区毛片| 欧美自拍偷拍一区| 中文字幕电影一区| 九色综合狠狠综合久久| 欧美日韩国产小视频在线观看| 日韩精品一卡二卡三卡四卡无卡| 成人一道本在线| 久久青草国产手机看片福利盒子| 午夜精品久久久久久不卡8050| gogogo免费视频观看亚洲一| 精品国产精品网麻豆系列| 三级在线观看一区二区 | 中文字幕在线不卡国产视频| 久久成人久久爱| 欧美精品三级日韩久久| 亚洲精品免费在线播放| 91亚洲资源网| 亚洲老司机在线| 91社区在线播放| 亚洲免费在线电影|