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

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

?? dongle.lua

?? 魔獸世界月光寶盒 感覺挺好
?? LUA
?? 第 1 頁 / 共 3 頁
字號:
--[[-------------------------------------------------------------------------  Copyright (c) 2006-2007, Dongle Development Team  All rights reserved.  Redistribution and use in source and binary forms, with or without  modification, are permitted provided that the following conditions are  met:      * Redistributions of source code must retain the above copyright        notice, this list of conditions and the following disclaimer.      * Redistributions in binary form must reproduce the above        copyright notice, this list of conditions and the following        disclaimer in the documentation and/or other materials provided        with the distribution.      * Neither the name of the Dongle Development Team nor the names of        its contributors may be used to endorse or promote products derived        from this software without specific prior written permission.  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.---------------------------------------------------------------------------]]local major = "DongleStub"local minor = tonumber(string.match("$Revision: 313 $", "(%d+)") or 1)local g = getfenv(0)if not g.DongleStub or g.DongleStub:IsNewerVersion(major, minor) then	local lib = setmetatable({}, {		__call = function(t,k) 			if type(t.versions) == "table" and t.versions[k] then 				return t.versions[k].instance			else				error("Cannot find a library with name '"..tostring(k).."'", 2)			end		end	})	function lib:IsNewerVersion(major, minor)		local versionData = self.versions and self.versions[major]		-- If DongleStub versions have differing major version names		-- such as DongleStub-Beta0 and DongleStub-1.0-RC2 then a second		-- instance will be loaded, with older logic.  This code attempts		-- to compensate for that by matching the major version against		-- "^DongleStub", and handling the version check correctly.		if major:match("^DongleStub") then			local oldmajor,oldminor = self:GetVersion()			if self.versions and self.versions[oldmajor] then				return minor > oldminor			else				return true			end		end		if not versionData then return true end		local oldmajor,oldminor = versionData.instance:GetVersion()		return minor > oldminor	end		local function NilCopyTable(src, dest)		for k,v in pairs(dest) do dest[k] = nil end		for k,v in pairs(src) do dest[k] = v end	end	function lib:Register(newInstance, activate, deactivate)		assert(type(newInstance.GetVersion) == "function",			"Attempt to register a library with DongleStub that does not have a 'GetVersion' method.")		local major,minor = newInstance:GetVersion()		assert(type(major) == "string",			"Attempt to register a library with DongleStub that does not have a proper major version.")		assert(type(minor) == "number",			"Attempt to register a library with DongleStub that does not have a proper minor version.")		-- Generate a log of all library registrations		if not self.log then self.log = {} end		table.insert(self.log, string.format("Register: %s, %s", major, minor))		if not self:IsNewerVersion(major, minor) then return false end		if not self.versions then self.versions = {} end		local versionData = self.versions[major]		if not versionData then			-- New major version			versionData = {				["instance"] = newInstance,				["deactivate"] = deactivate,			}						self.versions[major] = versionData			if type(activate) == "function" then				table.insert(self.log, string.format("Activate: %s, %s", major, minor))				activate(newInstance)			end			return newInstance		end				local oldDeactivate = versionData.deactivate		local oldInstance = versionData.instance				versionData.deactivate = deactivate				local skipCopy		if type(activate) == "function" then			table.insert(self.log, string.format("Activate: %s, %s", major, minor))			skipCopy = activate(newInstance, oldInstance)		end		-- Deactivate the old libary if necessary		if type(oldDeactivate) == "function" then			local major, minor = oldInstance:GetVersion()			table.insert(self.log, string.format("Deactivate: %s, %s", major, minor))			oldDeactivate(oldInstance, newInstance)		end		-- Re-use the old table, and discard the new one		if not skipCopy then			NilCopyTable(newInstance, oldInstance)		end		return oldInstance	end	function lib:GetVersion() return major,minor end	local function Activate(new, old)		-- This code ensures that we'll move the versions table even		-- if the major version names are different, in the case of 		-- DongleStub		if not old then old = g.DongleStub end		if old then			new.versions = old.versions			new.log = old.log		end		g.DongleStub = new	end		-- Actually trigger libary activation here	local stub = g.DongleStub or lib	lib = stub:Register(lib, Activate)end--[[-------------------------------------------------------------------------  Begin Library Implementation---------------------------------------------------------------------------]]local major = "Dongle-1.0"local minor = tonumber(string.match("$Revision: 371 $", "(%d+)") or 1) + 500-- ** IMPORTANT NOTE **-- Due to some issues we had previously with Dongle revision numbers-- we need to artificially inflate the minor revision number, to ensure-- we load sequentially.assert(DongleStub, string.format("%s requires DongleStub.", major))if not DongleStub:IsNewerVersion(major, minor) then return endlocal Dongle = {}local methods = {	"RegisterEvent", "UnregisterEvent", "UnregisterAllEvents", "IsEventRegistered",	"RegisterMessage", "UnregisterMessage", "UnregisterAllMessages", "TriggerMessage", "IsMessageRegistered",	"EnableDebug", "IsDebugEnabled", "Print", "PrintF", "Debug", "DebugF", "Echo", "EchoF",	"InitializeDB",	"InitializeSlashCommand",	"NewModule", "HasModule", "IterateModules",}local registry = {}local lookup = {}local loadqueue = {}local loadorder = {}local events = {}local databases = {}local commands = {}local messages = {}local frame--[[-------------------------------------------------------------------------	Message Localization---------------------------------------------------------------------------]]local L = {	["ADDMESSAGE_REQUIRED"] = "The frame you specify must have an 'AddMessage' method.",	["ALREADY_REGISTERED"] = "A Dongle with the name '%s' is already registered.",	["BAD_ARGUMENT"] = "bad argument #%d to '%s' (%s expected, got %s)",	["BAD_ARGUMENT_DB"] = "bad argument #%d to '%s' (DongleDB expected)",	["CANNOT_DELETE_ACTIVE_PROFILE"] = "You cannot delete your active profile. Change profiles, then attempt to delete.",	["DELETE_NONEXISTANT_PROFILE"] = "You cannot delete a non-existant profile.",	["MUST_CALLFROM_DBOBJECT"] = "You must call '%s' from a Dongle database object.",	["MUST_CALLFROM_REGISTERED"] = "You must call '%s' from a registered Dongle.",	["MUST_CALLFROM_SLASH"] = "You must call '%s' from a Dongle slash command object.",	["PROFILE_DOES_NOT_EXIST"] = "Profile '%s' doesn't exist.",	["REPLACE_DEFAULTS"] = "You are attempting to register defaults with a database that already contains defaults.",	["SAME_SOURCE_DEST"] = "Source/Destination profile cannot be the same profile.",	["EVENT_REGISTER_SPECIAL"] = "You cannot register for the '%s' event. Use the '%s' method instead.",	["Unknown"] = "Unknown",	["INJECTDB_USAGE"] = "Usage: DongleCmd:InjectDBCommands(db, ['copy', 'delete', 'list', 'reset', 'set'])",	["DBSLASH_PROFILE_COPY_DESC"] = "profile copy <name> - Copies profile <name> into your current profile.",	["DBSLASH_PROFILE_COPY_PATTERN"] = "^profile copy (.+)$",	["DBSLASH_PROFILE_DELETE_DESC"] = "profile delete <name> - Deletes the profile <name>.",	["DBSLASH_PROFILE_DELETE_PATTERN"] = "^profile delete (.+)$",	["DBSLASH_PROFILE_LIST_DESC"] = "profile list - Lists all valid profiles.",	["DBSLASH_PROFILE_LIST_PATTERN"] = "^profile list$",	["DBSLASH_PROFILE_RESET_DESC"] = "profile reset - Resets the current profile.",	["DBSLASH_PROFILE_RESET_PATTERN"] = "^profile reset$",	["DBSLASH_PROFILE_SET_DESC"] = "profile set <name> - Sets the current profile to <name>.",	["DBSLASH_PROFILE_SET_PATTERN"] = "^profile set (.+)$",	["DBSLASH_PROFILE_LIST_OUT"] = "Profile List:",}--[[-------------------------------------------------------------------------	Utility functions for Dongle use---------------------------------------------------------------------------]]local function assert(level,condition,message)	if not condition then		error(message,level)	endendlocal function argcheck(value, num, ...)	if type(num) ~= "number" then		error(L["BAD_ARGUMENT"]:format(2, "argcheck", "number", type(num)), 1)	end	for i=1,select("#", ...) do		if type(value) == select(i, ...) then return end	end	local types = strjoin(", ", ...)	local name = string.match(debugstack(2,2,0), ": in function [`<](.-)['>]")	error(L["BAD_ARGUMENT"]:format(num, name, types, type(value)), 3)endlocal function safecall(func,...)	local success,err = pcall(func,...)	if not success then		geterrorhandler()(err)	endend--[[-------------------------------------------------------------------------	Dongle constructor, and DongleModule system---------------------------------------------------------------------------]]function Dongle:New(name, obj)	argcheck(name, 2, "string")	argcheck(obj, 3, "table", "nil")	if not obj then		obj = {}	end	if registry[name] then		error(string.format(L["ALREADY_REGISTERED"], name))	end	local reg = {["obj"] = obj, ["name"] = name}	registry[name] = reg	lookup[obj] = reg	lookup[name] = reg	for k,v in pairs(methods) do		obj[v] = self[v]	end	-- Add this Dongle to the end of the queue	table.insert(loadqueue, obj)	return obj,nameendfunction Dongle:NewModule(name, obj)	local reg = lookup[self]	assert(3, reg, string.format(L["MUST_CALLFROM_REGISTERED"], "NewModule"))	argcheck(name, 2, "string")	argcheck(obj, 3, "table", "nil")	obj,name = Dongle:New(name, obj)	if not reg.modules then reg.modules = {} end	reg.modules[obj] = obj	reg.modules[name] = obj	return obj,nameendfunction Dongle:HasModule(module)	local reg = lookup[self]	assert(3, reg, string.format(L["MUST_CALLFROM_REGISTERED"], "HasModule"))	argcheck(module, 2, "string", "table")	return reg.modules and reg.modules[module]endlocal function ModuleIterator(t, name)	if not t then return end	local obj	repeat		name,obj = next(t, name)	until type(name) == "string" or not name	return name,objendfunction Dongle:IterateModules()	local reg = lookup[self]	assert(3, reg, string.format(L["MUST_CALLFROM_REGISTERED"], "IterateModules"))	return ModuleIterator, reg.modulesend--[[-------------------------------------------------------------------------	Event registration system---------------------------------------------------------------------------]]local function OnEvent(frame, event, ...)	local eventTbl = events[event]	if eventTbl then		for obj,func in pairs(eventTbl) do			if type(func) == "string" then				if type(obj[func]) == "function" then					safecall(obj[func], obj, event, ...)				end			else				safecall(func, event, ...)			end		end	endendlocal specialEvents = {	["PLAYER_LOGIN"] = "Enable",	["PLAYER_LOGOUT"] = "Disable",}function Dongle:RegisterEvent(event, func)	local reg = lookup[self]	assert(3, reg, string.format(L["MUST_CALLFROM_REGISTERED"], "RegisterEvent"))	argcheck(event, 2, "string")	argcheck(func, 3, "string", "function", "nil")	local special = (self ~= Dongle) and specialEvents[event]	if special then		error(string.format(L["EVENT_REGISTER_SPECIAL"], event, special), 3)	end	-- Name the method the same as the event if necessary	if not func then func = event end	if not events[event] then		events[event] = {}		frame:RegisterEvent(event)	end	events[event][self] = funcendfunction Dongle:UnregisterEvent(event)	local reg = lookup[self]	assert(3, reg, string.format(L["MUST_CALLFROM_REGISTERED"], "UnregisterEvent"))	argcheck(event, 2, "string")	local tbl = events[event]	if tbl then		tbl[self] = nil		if not next(tbl) then			events[event] = nil			frame:UnregisterEvent(event)		end	endendfunction Dongle:UnregisterAllEvents()	local reg = lookup[self]	assert(3, reg, string.format(L["MUST_CALLFROM_REGISTERED"], "UnregisterAllEvents"))	for event,tbl in pairs(events) do		tbl[self] = nil		if not next(tbl) then			events[event] = nil			frame:UnregisterEvent(event)		end	endendfunction Dongle:IsEventRegistered(event)	local reg = lookup[self]	assert(3, reg, string.format(L["MUST_CALLFROM_REGISTERED"], "IsEventRegistered"))	argcheck(event, 2, "string")	local tbl = events[event]	return tblend--[[-------------------------------------------------------------------------	Inter-Addon Messaging System---------------------------------------------------------------------------]]function Dongle:RegisterMessage(msg, func)	argcheck(self, 1, "table")	argcheck(msg, 2, "string")	argcheck(func, 3, "string", "function", "nil")	-- Name the method the same as the message if necessary	if not func then func = msg end	if not messages[msg] then		messages[msg] = {}	end	messages[msg][self] = funcendfunction Dongle:UnregisterMessage(msg)	argcheck(self, 1, "table")	argcheck(msg, 2, "string")	local tbl = messages[msg]	if tbl then

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产乱码| 免费视频一区二区| 欧美另类变人与禽xxxxx| 97久久精品人人澡人人爽| 国产麻豆午夜三级精品| 久久成人精品无人区| 日本视频免费一区| 久久精品国内一区二区三区| 99久久久国产精品免费蜜臀| 91精品国产综合久久精品app| 欧美精品欧美精品系列| 综合中文字幕亚洲| 一区二区三区小说| 亚洲第一福利一区| 天天操天天干天天综合网| 青青草一区二区三区| 欧美四级电影网| 欧美成人三级在线| 国产三级精品在线| 国产精品美女久久久久久久久久久| 欧美国产欧美亚州国产日韩mv天天看完整 | 91超碰这里只有精品国产| 亚洲素人一区二区| 成人精品鲁一区一区二区| 久久精品久久精品| 欧美一二三四区在线| 色94色欧美sute亚洲线路二| 欧洲国内综合视频| 欧洲精品一区二区| 一区二区不卡在线播放| 色婷婷久久久亚洲一区二区三区| 欧美日韩在线播| 精品国产乱码久久久久久图片| 久久久久久影视| 一区二区三区欧美| 欧美日韩在线观看一区二区 | 日韩va亚洲va欧美va久久| 欧美性视频一区二区三区| 亚洲色图在线视频| 91视频在线观看免费| 91精品中文字幕一区二区三区| 亚洲国产精品尤物yw在线观看| 狠狠色丁香久久婷婷综合丁香| 国产精品乡下勾搭老头1| 亚洲午夜激情av| 白白色 亚洲乱淫| 欧美精品v国产精品v日韩精品| 亚洲自拍与偷拍| 成人app软件下载大全免费| 欧美激情综合在线| 91在线观看地址| 亚洲福利视频一区| 日韩免费看网站| 午夜久久久久久久久| 91精品国产福利在线观看| 麻豆精品在线看| 欧美丰满嫩嫩电影| 国产在线视频不卡二| 国产精品福利电影一区二区三区四区| 蜜臀久久久99精品久久久久久| 欧美videossexotv100| 成人精品免费看| 亚洲一区二区三区美女| 欧美mv日韩mv亚洲| a4yy欧美一区二区三区| 99re热视频这里只精品 | 亚洲视频一二区| 国产成人精品一区二| 国产精品99久久久久久久vr| 欧美一级一级性生活免费录像| 偷拍日韩校园综合在线| 欧美性大战久久久久久久| 亚洲www啪成人一区二区麻豆| 欧美日韩在线亚洲一区蜜芽| 国产精品私人影院| 日韩精品一区二区三区swag| 国产成人在线看| 亚洲线精品一区二区三区| 久久久久青草大香线综合精品| 色香蕉久久蜜桃| 九九精品视频在线看| 成人免费视频网站在线观看| 国产乱码字幕精品高清av| 欧美成人猛片aaaaaaa| 视频一区欧美日韩| 99精品偷自拍| 久久er99精品| 天天综合天天综合色| 国产精品久久久久久久裸模 | 欧美一区二区免费视频| 成人免费不卡视频| 裸体一区二区三区| 亚洲一区二区三区在线看 | 欧美一级高清片| 色网站国产精品| 成人网在线免费视频| 琪琪一区二区三区| 亚洲国产成人高清精品| 亚洲精品一二三区| 欧美日韩国产精品成人| 男女男精品网站| 亚洲观看高清完整版在线观看| 中文字幕不卡的av| 久久久久久久久久久久久久久99| 91精品欧美综合在线观看最新| 色婷婷综合久久久久中文一区二区| 高清国产午夜精品久久久久久| 亚洲欧美日韩国产手机在线| 在线不卡欧美精品一区二区三区| 91丨porny丨最新| 亚洲最新视频在线播放| 中文一区二区在线观看 | 国产在线精品国自产拍免费| 日韩码欧中文字| 国产精品人妖ts系列视频| 国产亚洲精品免费| 成人短视频下载| 成人国产亚洲欧美成人综合网 | 国产九色精品成人porny| 麻豆精品在线视频| 久久精品久久久精品美女| 韩国精品久久久| 国产精品一二三| 成人福利视频在线看| 色综合久久久久久久久久久| 91色在线porny| 在线观看一区不卡| 8v天堂国产在线一区二区| 91精品国产黑色紧身裤美女| 精品久久国产字幕高潮| 久久久综合九色合综国产精品| 国产日韩精品一区二区浪潮av| 亚洲欧美电影一区二区| 国产高清一区日本| 国产成人精品www牛牛影视| 国产成人免费视频精品含羞草妖精| 精品一区二区三区免费观看| 国产一区二区电影| 国产91精品在线观看| 色婷婷久久一区二区三区麻豆| 91成人看片片| 中文字幕日本乱码精品影院| 日韩欧美www| 国产精品素人一区二区| 亚洲国产成人av网| 国产麻豆成人精品| 色成人在线视频| 日韩免费成人网| 成人免费一区二区三区视频 | 在线综合+亚洲+欧美中文字幕| 欧美一区三区四区| 国产精品少妇自拍| 亚洲电影在线播放| 国产精品99久久久久久久vr| 欧美在线free| 日本一区二区三区电影| 一区免费观看视频| 欧美乱熟臀69xxxxxx| 天堂一区二区在线| 国产成人精品影视| 欧洲在线/亚洲| 日韩精品一区二| 一区二区三区国产| 国产福利电影一区二区三区| 欧美日韩国产欧美日美国产精品| 国产午夜精品一区二区三区四区| 亚洲黄网站在线观看| 精品亚洲成av人在线观看| 欧美性生活影院| 中文字幕在线一区二区三区| 美女网站视频久久| 欧美性视频一区二区三区| 欧美激情一区不卡| 另类综合日韩欧美亚洲| 91美女精品福利| 欧美国产禁国产网站cc| 免费不卡在线观看| 欧美日韩小视频| 天使萌一区二区三区免费观看| 99久久99久久免费精品蜜臀| 亚洲精品在线免费观看视频| 亚洲第一激情av| 色琪琪一区二区三区亚洲区| 国产色产综合色产在线视频| 捆绑紧缚一区二区三区视频 | 欧美一级淫片007| 亚洲欧美在线视频观看| 国产一区啦啦啦在线观看| 在线电影欧美成精品| 亚洲综合成人在线| 色综合一区二区| 91麻豆蜜桃一区二区三区| 国产日韩欧美亚洲| 国产美女一区二区| 精品美女被调教视频大全网站| 日本视频免费一区| 欧美一级片免费看| 日韩国产精品大片| 日韩欧美激情一区| 奇米四色…亚洲|