ExcelToLua工具

来源:互联网 发布:js dragobject 编辑:程序博客网 时间:2024/06/05 04:10

前言

游戏开发中基本都需要这么一个工具,就是把策划配的excel表转换为我们程序需要的格式读取。刚好公司新项目也有这么个需求:给你一个xml配置,对应配置每张excel表需要读取的字段,需要读取的工作薄,字段名,导出文件名,数据类型等。然后根据这些配置信息去筛选excel对应内容,导出到本地。
项目准备用Lua脚本写,因此这个工具是用C#实现,将excel表转换为Lua的table表。(也是发了几天打LOL的时间,现在无私分享给大家~~~)

资源

  • excle表部分截图
    这里写图片描述

  • xml部分配置信息

<?xml version="1.0" encoding="GB2312"?><database>    <table name="NPC.xls">        <SHEET name="1" filename="NpcBase.tbl" struct="NpcB" index="编号">            <FIELD name="编号" code="id" type="DWORD" />            <FIELD name="名称" code="strName" type="string" />            <FIELD name="类型" code="dwType" type="DWORD" />            <FIELD name="等级" code="dwLevel" type="DWORD" />            <FIELD name="生命值" code="dwBlood" type="DWORD" />            <FIELD name="帧数" code="dwFrames" type="DWORD" />            <FIELD name="方向数" code="dwDirectNum" type="DWORD" />            <FIELD name="图片编号" code="dwPic" type="string" />            <FIELD name="标识" code="npcFlag" type="string" />            <FIELD name="头像编号" code="dwHeaderID" type="DWORD" />            <FIELD name="宠物头像编号" code="dwPetHeaderID" type="DWORD" />            <FIELD name="攻击类型" code="dwAttType" type="DWORD" />            <FIELD name="面积" code="strArea" type="string" />            <FIELD name="客户端访问距离" code="dwVisitDistance" type="DWORD" />            <FIELD name="图片标识" code="dwNpcIcon" type="DWORD" />            <FIELD name="头顶距离" code="headDis" type="DWORD" />                        <FIELD name="影子编号" code="yingzi"  type="string"/>            <FIELD name="基本对话" code="basetask" type="string" />            <FIELD name="被击动作" code="byhitAction" type="string" />            <FIELD name="变色R" code="R" type="DWORD" />            <FIELD name="变色G" code="G" type="DWORD" />            <FIELD name="变色B" code="B" type="DWORD" />            <FIELD name="变色A" code="A" type="DWORD" />            <FIELD name="缩放" code="scale" type="DWORD" />        </SHEET>    </table>    <table name="Skill.xls">        <SHEET name="技能表" filename="SkillBase.tbl" struct="SkillB" index="">            <FIELD name="技能ID" code="id" type="DWORD" />            <FIELD name="技能名称" code="strName" type="string" />            <FIELD name="技能等级" code="dwLev" type="DWORD" />            <FIELD name="武器类型" code="strWeaponType" type="string" />            <FIELD name="技能系别" code="dwGenius" type="DWORD" />            <FIELD name="技能树别" code="dwCareer" type="DWORD" />            <FIELD name="前提技能点数" code="dwRequirePoint" type="DWORD" />            <FIELD name="前提技能" code="strRequireSkill" type="string" />            <FIELD name="消耗MP" code="dwMp" type="DWORD" />            <FIELD name="消耗HP" code="dwHp" type="DWORD" />            <FIELD name="需求等级" code="dwRequireLev" type="DWORD" />            <FIELD name="使用方式" code="dwUseType" type="DWORD" />            <FIELD name="冷却时间" code="dwCoolDownTime" type="DWORD" />            <FIELD name="目标类型" code="dwTargetType" type="DWORD" />            <FIELD name="客户端攻击距离" code="dwDistance" type="DWORD" />            <FIELD name="命中方式" code="dwHitMode" type="DWORD" />            <FIELD name="命中间隔时间" code="dwTimePerGrid" type="DWORD" />            <FIELD name="客户端作用范围" code="dwArea" type="DWORD" />            <FIELD name="伤害加成" code="dwAttackAdd" type="DWORD" />            <FIELD name="所需道具" code="dwGoodID" type="DWORD" />            <FIELD name="消耗物品类型" code="dwGoodsType" type="DWORD" />            <FIELD name="物品消耗数量" code="dwGoodsNum" type="DWORD" />            <FIELD name="效果字段" code="strEffect" type="string" />            <FIELD name="特效" code="dwEffectID" type="DWORD" />            <FIELD name="被击" code="byAttack" type="DWORD" />            <FIELD name="技能图标" code="dwIconID" type="DWORD" />            <FIELD name="技能说明" code="strHint" type="string" />            <FIELD name="选中" code="dwCheck" type="DWORD" />            <FIELD name="需求银币" code="dwMoney" type="DWORD" />            <FIELD name="需求经验" code="dwExp" type="QWORD" />            <FIELD name="技能操作说明" code="strHint1" type="string" />            <FIELD name="附加作用" code="strHint2" type="string" />            <FIELD name="攻击流程" code="dwAttackLine" type="DWORD" />            <FIELD name="技能最大等级" code="maxLevel" type="DWORD" />            <FIELD name="skilltype" code="skilltype" type="DWORD" />            <FIELD name="skillintervaltime" code="skillintervaltime" type="DWORD" />            <FIELD name="技能战斗力" code="sword" type="DWORD" />            <FIELD name="男角色无马匹延迟" code="delayNan" type="DWORD" />            <FIELD name="女性无马匹延迟" code="delayNv" type="DWORD" />            <FIELD name="男角色有马匹延迟" code="delayManHorse" type="DWORD" />            <FIELD name="女性有马匹延迟" code="delayNvHourse" type="DWORD" />            <FIELD name="花费灵石" code="CostLingshi" type="DWORD" />        </SHEET>    </table>    <table name="State.xls">        <SHEET name="状态表" filename="CharacterStateBase.tbl" struct="CharacterStateB" index="状态ID">            <FIELD name="状态ID" code="id" type="DWORD" />            <FIELD name="状态名称" code="strName" type="string" />            <!--<FIELD name="动画编号1" code="dwPicID1" type="DWORD" />            <FIELD name="动画编号2" code="dwPicID2" type="DWORD" />            <FIELD name="动画编号3" code="dwPicID3" type="DWORD" />            <FIELD name="动画编号4" code="dwStateType" type="DWORD" />-->            <FIELD name="状态图标" code="dwStateID" type="DWORD" />            <FIELD name="说明" code="strDesc" type="string" />        </SHEET>    </table>    <table name="map.xls">        <SHEET name="Sheet1" filename="map.tbl" struct="MapB" index="地图id">            <FIELD name="地图id" code="mapId" type="DWORD" />            <FIELD name="阻挡" code="blockFile" type="string" />            <FIELD name="X最大片数" code="XMaxPlane" type="DWORD" />            <FIELD name="Y最大片数" code="YMaxPlane" type="DWORD" />            <FIELD name="状态" code="slice" type="WORD" />            <FIELD name="偏移量X" code="poseX" type="float" />            <FIELD name="偏移量Y" code="poseY" type="float" />            <FIELD name="最大X坐标" code="maxX" type="WORD" />            <FIELD name="最大Y坐标" code="maxY" type="WORD" />            <FIELD name="地图名称" code="mapfileName" type="string" />            <FIELD name="地图显示名称" code="mapName" type="string" />            <FIELD name="是否显示" code="showMap" type="WORD" />            <FIELD name="地图宽度w" code="maxW" type="WORD" />            <FIELD name="地图高度h" code="maxH" type="WORD" />        </SHEET>    </table>        <table name="Quest.xls">        <SHEET name="对话" filename="NpcDialogue.tbl" struct="NpcDialogue" index="任务ID">                  <FIELD name="任务ID" type="DWORD" code="taskid"/>            <FIELD name="任务名称" type="string" code="name"/>            <FIELD name="任务目标" type="string" code="taskTarget"/>            <FIELD name="任务对话{可接}" type="string" code="acceptDia"/>            <FIELD name="任务对话{已接}" type="string" code="alreadyDia"/>            <FIELD name="任务对话{失败}" type="string" code="taskFailedDia" />            <FIELD name="任务对话{完成}" type="string" code="taskScessDia"/>            <FIELD name="任务描述"       type="string" code="taskDis"/>            <FIELD name="剧情对话"   type="string" code="qingjingTips"/>        </SHEET>        <SHEET name="任务" filename="taskB.tbl" struct="taskB" index="任务ID">                  <FIELD name="任务ID" type="DWORD" code="taskid"/>            <FIELD name="任务名称" type="string" code="name"/>            <FIELD name="显示名称" type="string" code="showName"/>            <FIELD name="任务分类" type="DWORD" code="taskType"/>            <FIELD name="接任务npc" type="string" code="acceptNpc"/>            <FIELD name="交任务npc" type="string" code="receivedNpc"/>            <FIELD name="前置脚本开关" type="QWORD" code="frontScript" />            <FIELD name="前提任务" type="DWORD" code="frontTaskID"/>            <FIELD name="最小等级" type="DWORD" code="minLevel" />            <FIELD name="最大等级" type="DWORD" code="maxLevel"/>            <FIELD name="附件属性" type="string" code="property"/>                        <FIELD name="是否显示飞天符" type="WORD" code="flyType"/>            <FIELD name="功能ID" type="WORD" code="NpcFunID"/>        </SHEET>        <SHEET name="子任务" filename="subtasks.tbl" struct="subTasks" index="">                   <FIELD name="任务ID" type="DWORD" code="taskid"/>            <FIELD name="子任务ID" type="DWORD" code="subTaskID"/>            <FIELD name="子任务类型" type="DWORD" code="subType"/>            <FIELD name="目标描述" type="string" code="targetDes"/>            <FIELD name="数量" type="DWORD" code="targetNum"/>            <FIELD name="目标ID" type="QWORD" code="targetID"/>            <FIELD name="场景名称" type="string" code="sceneName" />            <FIELD name="场景限制" type="string" code="sceneCheck" />            <FIELD name="坐标" type="string" code="targetPos"/>            <FIELD name="附加属性" type="string" code="property"/>        </SHEET>        <SHEET name="日常任务" filename="daytasks.tbl" struct="DayTasks" index="日常任务Id">            <FIELD name="日常任务Id" type="DWORD" code="dayTaskid"/>            <!--<FIELD name="任务名称" type="DWORD" code="subTaskID"/>-->            <FIELD name="任务日" type="string" code="dayTask"/>            <FIELD name="开始时间" type="string" code="dayKaishiTime"/>            <FIELD name="结束时间" type="string" code="dayJieshuTime"/>            <FIELD name="可接次数" type="DWORD" code="dayAcceptTime"/>            <FIELD name="附加属性" type="string" code="dayProtShuxing" />        </SHEET>        <SHEET name="环任务" filename="huantasks.tbl" struct="HuanTasks" index="环任务Id">                    <FIELD name="环任务Id" type="DWORD" code="huanTaskid"/>            <!--<FIELD name="任务名称" type="DWORD" code="subTaskID"/>-->            <FIELD name="环轮换算" type="string" code="huanLun"/>            <FIELD name="最大日轮数" type="string" code="maxRiLun"/>            <FIELD name="最大周轮数" type="string" code="maxWeekLun"/>            <FIELD name="环系数" type="string" code="huanIndex"/>            <FIELD name="轮系数" type="string" code="lunIndex" />        </SHEET>        <SHEET name="任务组" filename="taskZu.tbl" struct="taskZu" index="任务组Id">                  <FIELD name="任务组Id" type="DWORD" code="taskID"/>            <FIELD name="任务名" type="string" code="taskShowName"/>            <FIELD name="类型" type="WORD" code="taskType"/>            <FIELD name="任务组列表" type="string" code="taskList"/>        </SHEET>    </table>    <table name="boss.xls">        <SHEET name="基础配置" filename="boss.tbl" struct="boss" index="">            <FIELD name="ID" type="DWORD" code="ID" />             <FIELD name="是否显示" type="DWORD" code="isShow" />             <FIELD name="副本名" type="string" code="fubenName" />            <FIELD name="类型" type="DWORD" code="type" />             <FIELD name="等级" type="DWORD" code="level" />             <FIELD name="战力" type="DWORD" code="power" />             <FIELD name="刷新时间" type="DWORD" code="refreshTime" />             <FIELD name="刷新时间描述" type="string" code="refreshTimeDes" />            <FIELD name="图片ID" type="string" code="picName" />            <FIELD name="掉落描述" type="string" code="DropDes" />        </SHEET>    </table></database>

完整源码

说明:路径使用相对路径,需要对当前工作路径往上找到根目录,从这个根目录开始再分别指定xml,excel,和lua表输出路径。还有excel表分中文(cn),英文(en),纯数据的类别,所以输出lua路径是要和excel表读取路径的最后子目录是一致的。这里只是对自己项目的需求说明,主要核心是解析XML与OleDb数据库读取excel表,其它细节不同需求逻辑都不同。

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Xml;using System.Xml.XPath;using System.Data;using System.ComponentModel;using System.Collections;using System.Data.OleDb;using System.IO;namespace exceltolua{    class Program    {        static string m_outLuaRootPath;                 //输出lua表根目录        static string m_excelRootPath;                  //excel表根目录目录        static string m_xmlPath;                        //xml目录        static String[,] m_cExcelData;                  //完整数据表数据        static String[,] m_rExcelData;                  //实际需要的数据表数据        static int m_nConRow = 0;                       //完整数据表行数        static int m_nConCol = 0;                       //完整数据表列数        static int m_nRealRow = 0;                      //实际数据表行数        static int m_nRealCol = 0;                      //实际数据表列数        static String m_sStructName;                    //lua表对象名        static String m_OutputFileName;                 //lua本地保存名        static String[] m_sStructDataType;              //字段数据类型(number or string)        static String[] m_sStructVariable;              //字段变量名        static String[] m_sStructAnnotation;            //字段注释        /*遍历指定文件目录下的所有文件,包括子目录*/        static List<FileInfo> m_List = new List<FileInfo>();        static int m_count = 0;        static public List<FileInfo> GetFilesByDir(string path)        {            DirectoryInfo di = new DirectoryInfo(path);            //找到该目录下的文件              FileInfo[] fi = di.GetFiles("*.xls");            //把FileInfo[]数组转换为List              List<FileInfo> list = fi.ToList<FileInfo>();            return list;        }        /*读取所有excel文件名,保存至list容器中*/        static public List<FileInfo> GetAllFiles(string path)        {            DirectoryInfo dir = new DirectoryInfo(path);            if (m_count < 1)            {                //找到该目录下的文件                FileInfo[] fi = dir.GetFiles("*.xls");                m_List = fi.ToList<FileInfo>();                m_count = m_count + 1;            }            else            {                List<FileInfo> subList = GetFilesByDir(path);                foreach (FileInfo subFile in subList)                {                    m_List.Add(subFile);                }            }            DirectoryInfo[] subDir = dir.GetDirectories();            string Spath = "";            foreach (DirectoryInfo d in subDir)            {                Spath = path + "\\" + d.ToString() + "\\";                GetAllFiles(Spath);            }            return m_List;        }        /*.xls表是否存在,存在返回对应表iter,否则-1*/        static public int isExistExcel(string name)        {            for (int i = 0; i < m_List.Count; i++)            {                if (m_List[i].Name == name)                {                    return i;                }            }            return -1;        }        /*数据库读取excel表,并保存至数组m_cExcelData*/        static public bool ReadExcel(String sExcelFile, String Sheet)        {            DataTable ExcelTable;            DataSet ds = new DataSet();            //Excel的连接            OleDbConnection objConn;            try            {                objConn = new OleDbConnection("Provider=Microsoft.Jet.Oledb.4.0;Data Source=" + sExcelFile + ";Extended Properties='Excel 8.0;HDR=No;IMEX=1;'");                objConn.Open();            }            catch (Exception ex)            {                Console.WriteLine(ex.Message);                return false;            }            DataTable schemaTable = objConn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, null);            string tableName = Sheet + "$";  //schemaTable.Rows[0][2].ToString().Trim();//获取 Excel 的表名,默认值是sheet1                   string strSql = "select * from [" + tableName + "A:CV" + "]"; //最大列数限定100(小于256)            OleDbCommand objCmd;            OleDbDataAdapter myData;            try            {                objCmd = new OleDbCommand(strSql, objConn);                myData = new OleDbDataAdapter(strSql, objConn);            }            catch (Exception ex)            {                Console.WriteLine(ex.Message);                return false;            }            myData.Fill(ds, tableName);//填充数据            objConn.Close();            ExcelTable = ds.Tables[tableName];            int iColums = ExcelTable.Columns.Count;//列数            int iRows = ExcelTable.Rows.Count;//行数            m_nConRow = iRows;            for (int i = 0; i < iColums;i++ )            {                if (ExcelTable.Rows[0][i].ToString() == "")                {                    m_nConCol = i;                    break;                }                m_nConCol = iColums;            }            //定义二维数组存储 Excel 表中读取的数据            m_cExcelData = new String[m_nConRow, m_nConCol];            for (int i = 0; i < m_nConRow; i++)            {                for (int j = 0; j < m_nConCol; j++)                {                    //将Excel表中的数据存储到数组                    m_cExcelData[i, j] = ExcelTable.Rows[i][j].ToString();                }            }           return true;           }        /*判断是否需要读取此字段*/        static public bool isFieldsExist(string tyte)         {            for (int i = 0; i < m_nRealCol; i++)            {                if (m_sStructAnnotation[i] == tyte)                {                    return true;                }            }            return false;        }        /*将完整数据表转换为需要用到的数据表数组*/        static public void convertToUseExcel()        {            m_rExcelData = new String[m_nRealRow, m_nRealCol];            int n = 0;            int m = 0;            for (int i = 0; i < m_nConRow; i++)            {                for (int j = 0; j < m_nConCol; j++)                {                    if (isFieldsExist(m_cExcelData[0, j]))                    {                        m_rExcelData[n, m] = m_cExcelData[i, j];                        m += 1;                    }                }                n += 1;                m = 0;            }        }        /*将数据表以lua table形式写入本地*/        static void OutLuaTable(int iter)        {            String lastPath = getExcelLastPath(m_List[iter].FullName);            String hPath = m_outLuaRootPath + lastPath + m_OutputFileName + ".lua";            FileStream fs = File.Open(hPath, FileMode.Create, FileAccess.Write);            StreamWriter hFile = new StreamWriter(fs);            hFile.WriteLine("local " + m_sStructName + " = {");            hFile.Write("--");            for (int col = 0; col < m_nRealCol; col++)            {                hFile.Write(m_sStructVariable[col] + "=\"" + m_sStructAnnotation[col] + "\",");            }            hFile.WriteLine("");            for (int row = 1; row < m_nRealRow; row++)            {                hFile.Write("[");                hFile.Write(m_rExcelData[row, 0]);                hFile.Write("]" + "=");                hFile.Write("{ ");                for (int col = 0; col < m_nRealCol; col++)                {                     hFile.Write(m_sStructVariable[col] + "=");                    if (m_sStructDataType[col].Equals("string"))                    {                        hFile.Write("\"" + m_rExcelData[row, col] + "\"");                    }                    else                    {                        hFile.Write(m_rExcelData[row, col]);                    }                    if (col != (m_nRealCol - 1))                    {                        hFile.Write(", ");                    }                }                hFile.Write("}");                if (row != (m_nRealRow - 1))                {                    hFile.Write(", ");                }                hFile.WriteLine("");            }            hFile.WriteLine("}");             hFile.WriteLine("");            hFile.WriteLine("return " + m_sStructName);            //            hFile.Close();            fs.Close();        }        /*得到程序运行目录的nlv上级目录*/        static string getProjectUpPath(int nlv)        {            string projectPath = System.IO.Directory.GetCurrentDirectory();            char[] sp = { '\\' };            string[] str = projectPath.Split(sp);            int length = str.Length;            string usePath = "";            for (int i = 0;i < length - nlv;i++)            {                usePath = usePath + str[i] + "\\";            }            return usePath;        }        /*得到excel表最后子目录名字*/        static string getExcelLastPath(string fullPath)        {            char[] sp = { '\\' };            string[] str = fullPath.Split(sp);            int length = str.Length;            string lastPath = str[length - 2];            if (lastPath == "数据表")            {                return "";            }            return lastPath + "\\";          }        static void Main(string[] args)        {            /*路径设置*/            string root = getProjectUpPath(4);            m_outLuaRootPath = root + "Client\\data\\";            m_excelRootPath = root + "策划\\数据表\\";             m_xmlPath = root + "策划\\数据表\\excelmake_client.xml";                   if (Directory.Exists(m_outLuaRootPath))            {                Directory.Delete(m_outLuaRootPath, true);            }            Directory.CreateDirectory(m_outLuaRootPath);            Directory.CreateDirectory(m_outLuaRootPath + "cn\\");            Directory.CreateDirectory(m_outLuaRootPath + "en\\");            GetAllFiles(m_excelRootPath);            //XML配置信息解析            int count = 0; //标志xml配置的表数量            string file = m_xmlPath;            XmlDocument doc = new XmlDocument();            doc.Load(file);            XmlElement rootElem = doc.DocumentElement;             XmlNodeList excelNodes = rootElem.GetElementsByTagName("table");               foreach (XmlNode table in excelNodes)            {                //excel名                string excelName = ((XmlElement)table).GetAttribute("name");                int listIter = isExistExcel(excelName);                if (listIter == -1)                {                    Console.WriteLine(excelName + "配置表不存在");                    return;                }                XmlNodeList sheetNodes = ((XmlElement)table).GetElementsByTagName("SHEET");                foreach (XmlNode sheet in sheetNodes)                {                    //excel sheet字段与保存本地lua文件名等                    string sheetname = ((XmlElement)sheet).GetAttribute("name");                    string filename = ((XmlElement)sheet).GetAttribute("filename");                    string structs = ((XmlElement)sheet).GetAttribute("struct");                    string index = ((XmlElement)sheet).GetAttribute("index");                    char[] sp = { '.' };                    string[] str = filename.Split(sp);                    m_OutputFileName = str[0];                    m_sStructName = structs;                    if (!ReadExcel(m_List[listIter].FullName, sheetname))                    {                        Console.WriteLine(m_List[listIter].Name + "表Sheet读取失败");                        return;                    }                    XmlNodeList fieldNodes = ((XmlElement)sheet).GetElementsByTagName("FIELD");                    m_nRealCol = fieldNodes.Count;                    m_sStructDataType = new String[m_nRealCol];                    m_sStructVariable = new String[m_nRealCol];                    m_sStructAnnotation = new String[m_nRealCol];                    m_nRealRow = m_nConRow;                    int i = 0;                    foreach (XmlNode field in fieldNodes)                    {                        //具体excel读取字段                        string fieldname = ((XmlElement)field).GetAttribute("name");                        string code = ((XmlElement)field).GetAttribute("code");                        string type = ((XmlElement)field).GetAttribute("type");                        m_sStructAnnotation[i] = fieldname;                        m_sStructVariable[i] = code;                        m_sStructDataType[i] = type;                        i += 1;                    }                    convertToUseExcel();                    OutLuaTable(listIter);                    Console.WriteLine(excelName + " 转换完成...");                    count = count + 1;                }            }            Console.WriteLine("excel表总数:{0 :G},xml已配置表数:{1 :G}, 全部转换成功!", m_List.Count,count);            Console.WriteLine("");        }    }}

  • 导出的lua表示例
local boss = {--ID="ID",isShow="是否显示",fubenName="副本名",type="类型",level="等级",power="战力",refreshTime="刷新时间",refreshTimeDes="刷新时间描述",picName="图片ID",DropDes="掉落描述",[1]={ ID=1, isShow=1, fubenName="炎魔降世", type=1, level=20, power=999, refreshTime=10:30, refreshTimeDes="my", picName="[00FF00]【掉落】经验、装备[-]", DropDes="每日[00FF00]{0}[-]刷新"}, [2]={ ID=2, isShow=1, fubenName="炎魔降世", type=1, level=20, power=999, refreshTime=12:00, refreshTimeDes="my", picName="[00FF00]【掉落】经验、装备[-]", DropDes="每日[00FF00]{0}[-]刷新"}, [3]={ ID=3, isShow=1, fubenName="炎魔降世", type=1, level=20, power=999, refreshTime=14:00, refreshTimeDes="my", picName="[00FF00]【掉落】经验、装备[-]", DropDes="每日[00FF00]{0}[-]刷新"}, [4]={ ID=4, isShow=1, fubenName="炎魔降世", type=1, level=20, power=999, refreshTime=16:00, refreshTimeDes="my", picName="[00FF00]【掉落】经验、装备[-]", DropDes="每日[00FF00]{0}[-]刷新"}, [5]={ ID=5, isShow=1, fubenName="炎魔降世", type=1, level=20, power=999, refreshTime=18:00, refreshTimeDes="my", picName="[00FF00]【掉落】经验、装备[-]", DropDes="每日[00FF00]{0}[-]刷新"}, [6]={ ID=6, isShow=1, fubenName="炎魔降世", type=2, level=20, power=999, refreshTime=0:00, refreshTimeDes="my", picName="[00FF00]【掉落】经验、装备[-]", DropDes="每日[00FF00]{0}[-]刷新"}, [7]={ ID=7, isShow=1, fubenName="炎魔降世", type=2, level=20, power=999, refreshTime=0:00, refreshTimeDes="my", picName="[00FF00]【掉落】经验、装备[-]", DropDes="每日[00FF00]{0}[-]刷新"}, [8]={ ID=8, isShow=1, fubenName="炎魔降世", type=2, level=20, power=999, refreshTime=0:00, refreshTimeDes="my", picName="[00FF00]【掉落】经验、装备[-]", DropDes="每日[00FF00]{0}[-]刷新"}, [9]={ ID=9, isShow=1, fubenName="炎魔降世", type=2, level=20, power=999, refreshTime=0:00, refreshTimeDes="my", picName="[00FF00]【掉落】经验、装备[-]", DropDes="每日[00FF00]{0}[-]刷新"}, [10]={ ID=10, isShow=1, fubenName="炎魔降世", type=2, level=20, power=999, refreshTime=0:00, refreshTimeDes="my", picName="[00FF00]【掉落】经验、装备[-]", DropDes="每日[00FF00]{0}[-]刷新"}, [11]={ ID=11, isShow=1, fubenName="炎魔降世", type=3, level=20, power=999, refreshTime=10:30, refreshTimeDes="my", picName="[00FF00]【掉落】经验、装备[-]", DropDes="每日[00FF00]{0}[-]刷新"}, [12]={ ID=12, isShow=1, fubenName="炎魔降世", type=3, level=20, power=999, refreshTime=12:00, refreshTimeDes="my", picName="[00FF00]【掉落】经验、装备[-]", DropDes="每日[00FF00]{0}[-]刷新"}, [13]={ ID=13, isShow=1, fubenName="炎魔降世", type=3, level=20, power=999, refreshTime=14:00, refreshTimeDes="my", picName="[00FF00]【掉落】经验、装备[-]", DropDes="每日[00FF00]{0}[-]刷新"}, [14]={ ID=14, isShow=1, fubenName="炎魔降世", type=3, level=20, power=999, refreshTime=16:00, refreshTimeDes="my", picName="[00FF00]【掉落】经验、装备[-]", DropDes="每日[00FF00]{0}[-]刷新"}, [15]={ ID=15, isShow=1, fubenName="炎魔降世", type=3, level=20, power=999, refreshTime=18:00, refreshTimeDes="my", picName="[00FF00]【掉落】经验、装备[-]", DropDes="每日[00FF00]{0}[-]刷新"}, [16]={ ID=16, isShow=1, fubenName="炎魔降世", type=4, level=20, power=999, refreshTime=10:30, refreshTimeDes="my", picName="[00FF00]【掉落】经验、装备[-]", DropDes="每日[00FF00]{0}[-]刷新"}, [17]={ ID=17, isShow=1, fubenName="炎魔降世", type=4, level=20, power=999, refreshTime=12:00, refreshTimeDes="my", picName="[00FF00]【掉落】经验、装备[-]", DropDes="每日[00FF00]{0}[-]刷新"}, [18]={ ID=18, isShow=1, fubenName="炎魔降世", type=4, level=20, power=999, refreshTime=14:00, refreshTimeDes="my", picName="[00FF00]【掉落】经验、装备[-]", DropDes="每日[00FF00]{0}[-]刷新"}, [19]={ ID=19, isShow=1, fubenName="炎魔降世", type=4, level=20, power=999, refreshTime=16:00, refreshTimeDes="my", picName="[00FF00]【掉落】经验、装备[-]", DropDes="每日[00FF00]{0}[-]刷新"}, [20]={ ID=20, isShow=1, fubenName="炎魔降世", type=4, level=20, power=999, refreshTime=18:00, refreshTimeDes="my", picName="[00FF00]【掉落】经验、装备[-]", DropDes="每日[00FF00]{0}[-]刷新"}}return boss
0 0
原创粉丝点击