コード例 #1
0
ファイル: TMapManager.cs プロジェクト: wnmqaubb08/Mir2Engine
        public TEnvirnoment AddMapInfo(string sMapName, string sMainMapName, string sMapDesc, int nServerNumber, TMapFlag MapFlag, Object QuestNPC)
        {
            TEnvirnoment  result;
            TEnvirnoment  Envir;
            int           nStd = 0;
            List <string> TempList;
            string        sTemp;

            result             = null;
            Envir              = new TEnvirnoment();
            Envir.sMapName     = sMapName;
            Envir.sMainMapName = sMainMapName;
            Envir.sMapDesc     = sMapDesc;
            if (sMainMapName != "")
            {
                Envir.m_boMainMap = true;
            }
            Envir.nServerIndex        = nServerNumber;
            Envir.m_boSAFE            = MapFlag.boSAFE;
            Envir.m_boFightZone       = MapFlag.boFIGHT;
            Envir.m_boFight2Zone      = MapFlag.boFIGHT2; // PK掉装备地图
            Envir.m_boFight3Zone      = MapFlag.boFIGHT3;
            Envir.m_boFight4Zone      = MapFlag.boFIGHT4; // 挑战地图
            Envir.m_boDARK            = MapFlag.boDARK;
            Envir.m_boDAY             = MapFlag.boDAY;
            Envir.m_boQUIZ            = MapFlag.boQUIZ;
            Envir.m_boNORECONNECT     = MapFlag.boNORECONNECT;
            Envir.m_boNEEDHOLE        = MapFlag.boNEEDHOLE;
            Envir.m_boNORECALL        = MapFlag.boNORECALL;
            Envir.m_boNOGUILDRECALL   = MapFlag.boNOGUILDRECALL;
            Envir.m_boNODEARRECALL    = MapFlag.boNODEARRECALL;
            Envir.m_boNOMASTERRECALL  = MapFlag.boNOMASTERRECALL;
            Envir.m_boNORANDOMMOVE    = MapFlag.boNORANDOMMOVE;
            Envir.m_boNODRUG          = MapFlag.boNODRUG;
            Envir.m_boMINE            = MapFlag.boMINE;
            Envir.m_boNOPOSITIONMOVE  = MapFlag.boNOPOSITIONMOVE;
            Envir.m_boNoManNoMon      = MapFlag.boNoManNoMon;    // 无人不刷怪
            Envir.m_boRUNHUMAN        = MapFlag.boRUNHUMAN;      // 可以穿人
            Envir.m_boRUNMON          = MapFlag.boRUNMON;        // 可以穿怪
            Envir.m_boDECHP           = MapFlag.boDECHP;         // 自动减HP值
            Envir.m_boINCHP           = MapFlag.boINCHP;         // 自动加HP值
            Envir.m_boDecGameGold     = MapFlag.boDECGAMEGOLD;   // 自动减游戏币
            Envir.m_boDECGAMEPOINT    = MapFlag.boDECGAMEPOINT;  // 自动减游戏点
            Envir.m_boIncGameGold     = MapFlag.boINCGAMEGOLD;   // 自动加游戏币
            Envir.m_boINCGAMEPOINT    = MapFlag.boINCGAMEPOINT;  // 自动加游戏点
            Envir.m_boNEEDLEVELTIME   = MapFlag.boNEEDLEVELTIME; // 雪域地图传送,判断等级
            Envir.m_nNEEDLEVELPOINT   = MapFlag.nNEEDLEVELPOINT; // 进雪域地图最低等级
            Envir.m_boNOCALLHERO      = MapFlag.boNoCALLHERO;    // 禁止召唤英雄
            Envir.m_boNOHEROPROTECT   = MapFlag.boNOHEROPROTECT; // 禁止英雄守护
            Envir.m_boNODROPITEM      = MapFlag.boNODROPITEM;    // 禁止死亡掉物品
            Envir.m_boKILLFUNC        = MapFlag.boKILLFUNC;      // 地图杀人触发
            Envir.m_nKILLFUNC         = MapFlag.nKILLFUNC;       // 地图杀人触发
            Envir.m_boMISSION         = MapFlag.boMISSION;       // 不允许使用任何物品和技能
            Envir.m_boMUSIC           = MapFlag.boMUSIC;         // 音乐
            Envir.m_boEXPRATE         = MapFlag.boEXPRATE;       // 杀怪经验倍数
            Envir.m_boPKWINLEVEL      = MapFlag.boPKWINLEVEL;    // PK得等级
            Envir.m_boPKWINEXP        = MapFlag.boPKWINEXP;      // PK得经验
            Envir.m_boPKLOSTLEVEL     = MapFlag.boPKLOSTLEVEL;
            Envir.m_boPKLOSTEXP       = MapFlag.boPKLOSTEXP;
            Envir.m_nPKWINLEVEL       = MapFlag.nPKWINLEVEL; // PK得等级数
            Envir.m_nPKWINEXP         = MapFlag.nPKWINEXP;   // PK得经验数
            Envir.m_nPKLOSTLEVEL      = MapFlag.nPKLOSTLEVEL;
            Envir.m_nPKLOSTEXP        = MapFlag.nPKLOSTEXP;
            Envir.m_nPKWINEXP         = MapFlag.nPKWINEXP;         // PK得经验数
            Envir.m_nDECHPTIME        = MapFlag.nDECHPTIME;        // 减HP间隔时间
            Envir.m_nDECHPPOINT       = MapFlag.nDECHPPOINT;       // 一次减点数
            Envir.m_nINCHPTIME        = MapFlag.nINCHPTIME;        // 加HP间隔时间
            Envir.m_nINCHPPOINT       = MapFlag.nINCHPPOINT;       // 一次加点数
            Envir.m_nDECGAMEGOLDTIME  = MapFlag.nDECGAMEGOLDTIME;  // 减游戏币间隔时间
            Envir.m_nDecGameGold      = (int)MapFlag.nDECGAMEGOLD; // 一次减数量
            Envir.m_nINCGAMEGOLDTIME  = MapFlag.nINCGAMEGOLDTIME;  // 减游戏币间隔时间
            Envir.m_nIncGameGold      = MapFlag.nINCGAMEGOLD;      // 一次减数量
            Envir.m_nINCGAMEPOINTTIME = MapFlag.nINCGAMEPOINTTIME; // 加游戏点间隔时间
            Envir.m_nINCGAMEPOINT     = MapFlag.nINCGAMEPOINT;     // 一次减数量
            Envir.m_nDECGAMEPOINTTIME = MapFlag.nDECGAMEPOINTTIME; // 减游戏点间隔时间
            Envir.m_nDECGAMEPOINT     = MapFlag.nDECGAMEPOINT;     // 一次减数量
            Envir.m_nMUSICID          = MapFlag.nMUSICID;          // 音乐ID
            Envir.m_nEXPRATE          = MapFlag.nEXPRATE;          // 经验倍率
            Envir.m_sMUSICName        = MapFlag.sMUSICName;
            Envir.sNoReconnectMap     = MapFlag.sReConnectMap;
            Envir.QuestNPC            = QuestNPC;
            Envir.nNEEDSETONFlag      = MapFlag.nNEEDSETONFlag;
            Envir.nNeedONOFF          = MapFlag.nNeedONOFF;
            Envir.m_boUnAllowStdItems = MapFlag.boUnAllowStdItems;
            Envir.m_boUnAllowMagics   = MapFlag.boNOTALLOWUSEMAGIC;
            Envir.m_boFIGHTPK         = MapFlag.boFIGHTPK;// PK可以爆装备不红名
            Envir.nThunder            = MapFlag.nThunder;
            Envir.nLava = MapFlag.nLava;
            if ((Envir.nThunder != 0) || (Envir.nLava != 0))
            {
                M2Share.UserEngine.EffectList.Add(Envir);
            }
            unsafe
            {
                if ((Envir.m_boUnAllowStdItems) && (MapFlag.sUnAllowStdItemsText != ""))
                {
                    TempList = new List <string>();
                    fixed(char *Content = MapFlag.sUnAllowStdItemsText.Trim().ToCharArray())
                    {
                        HUtil32.ExtractStrings(new char[] { '|', '\\', '/' }, new char[] { }, Content, TempList);
                    }

                    if (TempList.Count > 0)
                    {
                        for (int I = 0; I < TempList.Count; I++)
                        {
                            nStd = M2Share.UserEngine.GetStdItemIdx(TempList[I].Trim());
                            if (nStd >= 0)
                            {
                                Envir.m_UnAllowStdItemsList.Add(new UnAllowItem()
                                {
                                    Idx      = nStd,
                                    ItemName = TempList[I].Trim()
                                });
                            }
                        }
                    }
                    Dispose(TempList);
                }
                if ((Envir.m_boUnAllowMagics) && (MapFlag.sUnAllowMagicText != ""))
                {
                    TempList = new List <string>();
                    fixed(char *Content = MapFlag.sUnAllowMagicText.Trim().ToCharArray())
                    {
                        HUtil32.ExtractStrings(new char[] { '|', '\\', '/' }, new char[] { }, Content, TempList);
                    }

                    if (TempList.Count > 0)
                    {
                        for (int I = 0; I < TempList.Count; I++)
                        {
                            sTemp = TempList[I].Trim();
                            if (sTemp != "")
                            {
                                Envir.m_UnAllowMagicList.Add(new UnAllowMagic()
                                {
                                    Idx       = nStd,
                                    MagicName = TempList[I].Trim()
                                });
                            }
                        }
                    }
                    Dispose(TempList);
                }
            }
            if (M2Share.MiniMapList.Count > 0)
            {
                foreach (var item in M2Share.MiniMapList)
                {
                    if (string.Compare(item.sMapNO, Envir.sMapName, true) == 0)
                    {
                        Envir.nMinMap = item.nIdx;
                        break;
                    }
                }
            }
            if (sMainMapName != "")
            {
                if (Envir.LoadMapData(M2Share.g_Config.sMapDir + sMainMapName + ".map"))
                {
                    result = Envir;
                    m_MapList.Add(Envir);
                }
                else
                {
                    M2Share.MainOutMessage("地图文件 " + M2Share.g_Config.sMapDir + sMainMapName + ".map" + " 未找到!!!");
                }
            }
            else
            {
                if (Envir.LoadMapData(M2Share.g_Config.sMapDir + sMapName + ".map"))
                {
                    result = Envir;
                    m_MapList.Add(Envir);
                }
                else
                {
                    M2Share.MainOutMessage("地图文件 " + M2Share.g_Config.sMapDir + sMapName + ".map" + " 未找到!!!");
                }
            }
            return(result);
        }