public unsafe void ShowUseItem(string[] @Params, TPlayObject PlayObject)
        {
            string     sHumanName = @Params.Length > 0 ? @Params[0] : "";
            TUserItem *UserItem   = null;

            if ((sHumanName == "") || ((sHumanName != "") && (sHumanName[1] == '?')))
            {
                PlayObject.SysMsg(String.Format(GameMsgDef.g_sGameCommandParamUnKnow, this.Attributes.Name, GameMsgDef.g_sGameCommandShowUseItemInfoHelpMsg), TMsgColor.c_Red, TMsgType.t_Hint);
                return;
            }
            TPlayObject m_PlayObject = UserEngine.GetPlayObject(sHumanName);

            if (m_PlayObject == null)
            {
                PlayObject.SysMsg(String.Format(GameMsgDef.g_sNowNotOnLineOrOnOtherServer, sHumanName), TMsgColor.c_Red, TMsgType.t_Hint);
                return;
            }
            for (int I = m_PlayObject.m_UseItems.GetLowerBound(0); I <= m_PlayObject.m_UseItems.GetUpperBound(0); I++)
            {
                UserItem = m_PlayObject.m_UseItems[I];
                if (UserItem->wIndex == 0)
                {
                    continue;
                }
                PlayObject.SysMsg(String.Format("%s[%s]IDX[%d]系列号[%d]持久[%d-%d]", M2Share.GetUseItemName(I), UserEngine.GetStdItemName(UserItem->wIndex), UserItem->wIndex,
                                                UserItem->MakeIndex, UserItem->Dura, UserItem->DuraMax), TMsgColor.c_Blue, TMsgType.t_Hint);
            }
        }
예제 #2
0
        /// <summary>
        /// 鞋子腰带极品
        /// </summary>
        /// <param name="UserItem"></param>
        public unsafe void RandomUpgradeBoots(TUserItem *UserItem)
        {
            int nC;
            int n10;

            nC = GetRandomRange(M2Share.g_Config.nBootsACAddValueMaxLimit, M2Share.g_Config.nBootsACAddValueRate);
            if (HUtil32.Random(M2Share.g_Config.nBootsACAddRate) == 0)
            {
                UserItem->btValue[0] = Convert.ToByte(nC + 1);// 防御
                if (UserItem->btValue[0] > M2Share.g_Config.nBootsACAddValueMaxLimit)
                {
                    UserItem->btValue[0] = M2Share.g_Config.nBootsACAddValueMaxLimit;//限制上限
                }
            }
            nC = GetRandomRange(M2Share.g_Config.nBootsMACAddValueMaxLimit, M2Share.g_Config.nBootsMACAddValueRate);
            if (HUtil32.Random(M2Share.g_Config.nBootsMACAddRate) == 0)
            {
                UserItem->btValue[1] = Convert.ToByte(nC + 1);// 魔御
                if (UserItem->btValue[1] > M2Share.g_Config.nBootsMACAddValueMaxLimit)
                {
                    UserItem->btValue[1] = M2Share.g_Config.nBootsMACAddValueMaxLimit;//限制上限
                }
            }
            nC = GetRandomRange(M2Share.g_Config.nBootsDCAddValueMaxLimit, M2Share.g_Config.nBootsDCAddValueRate);
            if (HUtil32.Random(M2Share.g_Config.nBootsDCAddRate) == 0)
            {
                UserItem->btValue[2] = Convert.ToByte(nC + 1);// 攻击力
                if (UserItem->btValue[2] > M2Share.g_Config.nBootsDCAddValueMaxLimit)
                {
                    UserItem->btValue[2] = M2Share.g_Config.nBootsDCAddValueMaxLimit;//限制上限
                }
            }
            nC = GetRandomRange(M2Share.g_Config.nBootsMCAddValueMaxLimit, M2Share.g_Config.nBootsMCAddValueRate);
            if (HUtil32.Random(M2Share.g_Config.nBootsMCAddRate) == 0)
            {
                UserItem->btValue[3] = Convert.ToByte(nC + 1);// 魔法
                if (UserItem->btValue[3] > M2Share.g_Config.nBootsMCAddValueMaxLimit)
                {
                    UserItem->btValue[3] = M2Share.g_Config.nBootsMCAddValueMaxLimit;//限制上限
                }
            }
            nC = GetRandomRange(M2Share.g_Config.nBootsSCAddValueMaxLimit, M2Share.g_Config.nBootsSCAddValueRate);
            if (HUtil32.Random(M2Share.g_Config.nBootsSCAddRate) == 0)
            {
                UserItem->btValue[4] = Convert.ToByte(nC + 1);// 道术
                if (UserItem->btValue[4] > M2Share.g_Config.nBootsSCAddValueMaxLimit)
                {
                    UserItem->btValue[4] = M2Share.g_Config.nBootsSCAddValueMaxLimit;//限制上限
                }
            }
            nC = GetRandomRange(6, 12);
            if (HUtil32.Random(4) < 3)
            {
                n10 = (nC + 1) * 1000;
                UserItem->DuraMax = (ushort)HUtil32._MIN(65000, UserItem->DuraMax + n10);
                UserItem->Dura    = (ushort)HUtil32._MIN(65000, UserItem->Dura + n10);
            }
        }
예제 #3
0
        /// <summary>
        /// 随机升级-分类19物品(幸运类项链)
        /// </summary>
        /// <param name="UserItem"></param>
        public unsafe void RandomUpgrade19(TUserItem *UserItem)
        {
            int nC;
            int n10;

            nC = GetRandomRange(M2Share.g_Config.nNeckLace19ACAddValueMaxLimit, M2Share.g_Config.nNeckLace19ACAddValueRate);
            if (HUtil32.Random(M2Share.g_Config.nNeckLace19ACAddRate) == 0)
            {
                UserItem->btValue[0] = Convert.ToByte(nC + 1);
                if (UserItem->btValue[0] > M2Share.g_Config.nNeckLace19ACAddValueMaxLimit)
                {
                    UserItem->btValue[0] = M2Share.g_Config.nNeckLace19ACAddValueMaxLimit;//限制上线
                }
            }
            nC = GetRandomRange(M2Share.g_Config.nNeckLace19MACAddValueMaxLimit, M2Share.g_Config.nNeckLace19MACAddValueRate);
            if (HUtil32.Random(M2Share.g_Config.nNeckLace19MACAddRate) == 0)
            {
                UserItem->btValue[1] = Convert.ToByte(nC + 1);
                if (UserItem->btValue[1] > M2Share.g_Config.nNeckLace19MACAddValueMaxLimit)
                {
                    UserItem->btValue[1] = M2Share.g_Config.nNeckLace19MACAddValueMaxLimit;//限制上线
                }
            }
            nC = GetRandomRange(M2Share.g_Config.nNeckLace19DCAddValueMaxLimit, M2Share.g_Config.nNeckLace19DCAddValueRate);
            if (HUtil32.Random(M2Share.g_Config.nNeckLace19DCAddRate) == 0)
            {
                UserItem->btValue[2] = Convert.ToByte(nC + 1);
                if (UserItem->btValue[2] > M2Share.g_Config.nNeckLace19DCAddValueMaxLimit)
                {
                    UserItem->btValue[2] = M2Share.g_Config.nNeckLace19DCAddValueMaxLimit;//限制上线
                }
            }
            nC = GetRandomRange(M2Share.g_Config.nNeckLace19MCAddValueMaxLimit, M2Share.g_Config.nNeckLace19MCAddValueRate);
            if (HUtil32.Random(M2Share.g_Config.nNeckLace19MCAddRate) == 0)
            {
                UserItem->btValue[3] = Convert.ToByte(nC + 1);
                if (UserItem->btValue[3] > M2Share.g_Config.nNeckLace19MCAddValueMaxLimit)
                {
                    UserItem->btValue[3] = M2Share.g_Config.nNeckLace19MCAddValueMaxLimit;//限制上线
                }
            }
            nC = GetRandomRange(M2Share.g_Config.nNeckLace19SCAddValueMaxLimit, M2Share.g_Config.nNeckLace19SCAddValueRate);
            if (HUtil32.Random(M2Share.g_Config.nNeckLace19SCAddRate) == 0)
            {
                UserItem->btValue[4] = Convert.ToByte(nC + 1);
                if (UserItem->btValue[4] > M2Share.g_Config.nNeckLace19SCAddValueMaxLimit)
                {
                    UserItem->btValue[4] = M2Share.g_Config.nNeckLace19SCAddValueMaxLimit;//限制上线
                }
            }
            nC = GetRandomRange(6, 10);
            if (HUtil32.Random(4) < 3)
            {
                n10 = (nC + 1) * 1000;
                UserItem->DuraMax = (ushort)HUtil32._MIN(65000, UserItem->DuraMax + n10);
                UserItem->Dura    = (ushort)HUtil32._MIN(65000, UserItem->Dura + n10);
            }
        }
예제 #4
0
        public unsafe void GiveMine(TPlayObject PlayObject, string[] @Params)
        {
            string     sMINEName  = @Params.Length > 0 ? @Params[0] : "";
            int        nMineCount = @Params.Length > 0 ? int.Parse(@Params[1]) : 0;
            int        nDura      = @Params.Length > 0 ? int.Parse(@Params[2]) : 0;
            TUserItem *UserItem   = null;
            TStdItem * StdItem;

            if ((sMINEName == "") || ((sMINEName != "") && (sMINEName[0] == '?')) || (nMineCount <= 0))
            {
                if (M2Share.g_Config.boGMShowFailMsg)
                {
                    PlayObject.SysMsg(string.Format(GameMsgDef.g_sGameCommandParamUnKnow, this.Attributes.Name, GameMsgDef.g_sGameCommandGIVEMINEHelpMsg), TMsgColor.c_Red, TMsgType.t_Hint);
                }
                return;
            }
            if (nDura <= 0)// 如纯度不填,则随机给纯度
            {
                nDura = HUtil32.Random(18) + 3;
            }
            for (int I = 0; I < nMineCount; I++)
            {
                UserItem = (TUserItem *)Marshal.AllocHGlobal(sizeof(TUserItem));
                if (UserEngine.CopyToUserItemFromName(sMINEName, UserItem))
                {
                    StdItem = UserEngine.GetStdItem(UserItem->wIndex);
                    if ((StdItem != null) && (StdItem->StdMode == 43))
                    {
                        if (PlayObject.IsAddWeightAvailable(StdItem->Weight * nMineCount))
                        {
                            UserItem->Dura = Convert.ToUInt16(Convert.ToInt16(nDura * 1000));
                            if (UserItem->Dura > UserItem->DuraMax)
                            {
                                UserItem->Dura = UserItem->DuraMax;
                            }
                            PlayObject.m_ItemList.Add((IntPtr)UserItem);
                            PlayObject.SendAddItem(UserItem);
                            if (StdItem->NeedIdentify == 1)
                            {
                                M2Share.AddGameDataLog("5" + "\09" + PlayObject.m_sMapName + "\09" + PlayObject.m_nCurrX + "\09" + PlayObject.m_nCurrY + "\09" +
                                                       PlayObject.m_sCharName + "\09" + HUtil32.SBytePtrToString(StdItem->Name, StdItem->NameLen) + "\09" + UserItem->MakeIndex + "\09" + UserItem->Dura + "/" + UserItem->DuraMax + "\09" + PlayObject.m_sCharName);
                            }
                        }
                    }
                }
                else
                {
                    Marshal.FreeHGlobal((IntPtr)UserItem);
                    break;
                }
            }
        }
예제 #5
0
        public unsafe void BindUseItem(string[] @Params, TPlayObject PlayObject)
        {
            string sHumanName = @Params.Length > 0 ? @Params[0] : "";
            string sItem      = @Params.Length > 1 ? @Params[1] : "";
            string sType      = @Params.Length > 2 ? @Params[2] : "";
            string sLight     = @Params.Length > 3 ? @Params[3] : "";

            TUserItem *UserItem = null;
            int        nBind    = -1;
            TItemBind  ItemBind;
            int        nItemIdx;
            int        nMakeIdex;
            string     sBindName;
            bool       boFind;
            bool       boLight;
            int        nItem = M2Share.GetUseItemIdx(sItem);

            if ((sType).ToLower().CompareTo(("帐号").ToLower()) == 0)
            {
                nBind = 0;
            }
            if ((sType).ToLower().CompareTo(("人物").ToLower()) == 0)
            {
                nBind = 1;
            }
            if ((sType).ToLower().CompareTo(("IP").ToLower()) == 0)
            {
                nBind = 2;
            }
            boLight = sLight == "1";
            if ((nItem < 0) || (nBind < 0) || (sHumanName == "") || ((sHumanName != "") && (sHumanName[1] == '?')))
            {
                PlayObject.SysMsg(String.Format(GameMsgDef.g_sGameCommandParamUnKnow, this.Attributes.Name, GameMsgDef.g_sGameCommandBindUseItemHelpMsg), TMsgColor.c_Red, TMsgType.t_Hint);
                return;
            }
            TPlayObject m_PlayObject = UserEngine.GetPlayObject(sHumanName);

            if (m_PlayObject == null)
            {
                PlayObject.SysMsg(String.Format(GameMsgDef.g_sNowNotOnLineOrOnOtherServer, sHumanName), TMsgColor.c_Red, TMsgType.t_Hint);
                return;
            }
            UserItem = m_PlayObject.m_UseItems[nItem];
            if (UserItem->wIndex == 0)
            {
                PlayObject.SysMsg(String.Format(GameMsgDef.g_sGameCommandBindUseItemNoItemMsg, sHumanName, sItem), TMsgColor.c_Red, TMsgType.t_Hint);
                return;
            }
            nItemIdx  = UserItem->wIndex;
            nMakeIdex = UserItem->MakeIndex;
            switch (nBind)
            {
            case 0:
                boFind    = false;
                sBindName = m_PlayObject.m_sUserID;
                HUtil32.EnterCriticalSection(M2Share.g_ItemBindAccount);
                try
                {
                    for (int I = 0; I < M2Share.g_ItemBindAccount.Count; I++)
                    {
                        ItemBind = M2Share.g_ItemBindAccount[I];
                        if ((ItemBind.nItemIdx == nItemIdx) && (ItemBind.nMakeIdex == nMakeIdex))
                        {
                            PlayObject.SysMsg(String.Format(GameMsgDef.g_sGameCommandBindUseItemAlreadBindMsg, sHumanName, sItem), TMsgColor.c_Red, TMsgType.t_Hint);
                            boFind = true;
                            break;
                        }
                    }
                    if (!boFind)
                    {
                        ItemBind           = new TItemBind();
                        ItemBind.nItemIdx  = nItemIdx;
                        ItemBind.nMakeIdex = nMakeIdex;
                        ItemBind.sBindName = sBindName;
                        M2Share.g_ItemBindAccount.Insert(0, ItemBind);
                    }
                }
                finally
                {
                    HUtil32.LeaveCriticalSection(M2Share.g_ItemBindAccount);
                }
                if (boFind)
                {
                    return;
                }
                M2Share.SaveItemBindAccount();
                PlayObject.SysMsg(String.Format("%s[%s]IDX[%d]系列号[%d]持久[%d-%d],绑定到%s成功。", M2Share.GetUseItemName(nItem),
                                                UserEngine.GetStdItemName(UserItem->wIndex), UserItem->wIndex, UserItem->MakeIndex, UserItem->Dura, UserItem->DuraMax, sBindName), TMsgColor.c_Blue, TMsgType.t_Hint);
                m_PlayObject.SysMsg(String.Format("你的%s[%s]已经绑定到%s[%s]上了。", M2Share.GetUseItemName(nItem), UserEngine.GetStdItemName(UserItem->wIndex),
                                                  sType, sBindName), TMsgColor.c_Blue, TMsgType.t_Hint);
                m_PlayObject.SendMsg(m_PlayObject, Grobal2.RM_SENDUSEITEMS, 0, 0, 0, 0, "");
                break;

            case 1:
                sBindName = m_PlayObject.m_sCharName;
                boFind    = false;
                HUtil32.EnterCriticalSection(M2Share.g_ItemBindCharName);
                try
                {
                    for (int I = 0; I < M2Share.g_ItemBindCharName.Count; I++)
                    {
                        ItemBind = M2Share.g_ItemBindCharName[I];
                        if ((ItemBind.nItemIdx == nItemIdx) && (ItemBind.nMakeIdex == nMakeIdex))
                        {
                            PlayObject.SysMsg(String.Format(GameMsgDef.g_sGameCommandBindUseItemAlreadBindMsg, sHumanName, sItem), TMsgColor.c_Red, TMsgType.t_Hint);
                            boFind = true;
                            break;
                        }
                    }
                    if (!boFind)
                    {
                        ItemBind           = new TItemBind();
                        ItemBind.nItemIdx  = nItemIdx;
                        ItemBind.nMakeIdex = nMakeIdex;
                        ItemBind.sBindName = sBindName;
                        M2Share.g_ItemBindCharName.Insert(0, ItemBind);
                    }
                }
                finally
                {
                    HUtil32.LeaveCriticalSection(M2Share.g_ItemBindCharName);
                }
                if (boFind)
                {
                    return;
                }
                M2Share.SaveItemBindCharName();
                PlayObject.SysMsg(String.Format("%s[%s]IDX[%d]系列号[%d]持久[%d-%d],绑定到%s成功。", M2Share.GetUseItemName(nItem),
                                                UserEngine.GetStdItemName(UserItem->wIndex), UserItem->wIndex, UserItem->MakeIndex, UserItem->Dura, UserItem->DuraMax, sBindName), TMsgColor.c_Blue, TMsgType.t_Hint);
                m_PlayObject.SysMsg(String.Format("你的%s[%s]已经绑定到%s[%s]上了。", M2Share.GetUseItemName(nItem), UserEngine.GetStdItemName(UserItem->wIndex),
                                                  sType, sBindName), TMsgColor.c_Blue, TMsgType.t_Hint);

                // PlayObject.SendUpdateItem(UserItem);
                m_PlayObject.SendMsg(m_PlayObject, Grobal2.RM_SENDUSEITEMS, 0, 0, 0, 0, "");
                break;

            case 2:
                boFind    = false;
                sBindName = m_PlayObject.m_sIPaddr;
                HUtil32.EnterCriticalSection(M2Share.g_ItemBindIPaddr);
                try
                {
                    for (int I = 0; I < M2Share.g_ItemBindIPaddr.Count; I++)
                    {
                        ItemBind = M2Share.g_ItemBindIPaddr[I];
                        if ((ItemBind.nItemIdx == nItemIdx) && (ItemBind.nMakeIdex == nMakeIdex))
                        {
                            PlayObject.SysMsg(String.Format(GameMsgDef.g_sGameCommandBindUseItemAlreadBindMsg, sHumanName, sItem), TMsgColor.c_Red, TMsgType.t_Hint);
                            boFind = true;
                            break;
                        }
                    }
                    if (!boFind)
                    {
                        ItemBind           = new TItemBind();
                        ItemBind.nItemIdx  = nItemIdx;
                        ItemBind.nMakeIdex = nMakeIdex;
                        ItemBind.sBindName = sBindName;
                        M2Share.g_ItemBindIPaddr.Insert(0, ItemBind);
                    }
                }
                finally
                {
                    HUtil32.LeaveCriticalSection(M2Share.g_ItemBindIPaddr);
                }
                if (boFind)
                {
                    return;
                }
                M2Share.SaveItemBindIPaddr();
                PlayObject.SysMsg(String.Format("%s[%s]IDX[%d]系列号[%d]持久[%d-%d],绑定到%s成功。", M2Share.GetUseItemName(nItem),
                                                UserEngine.GetStdItemName(UserItem->wIndex), UserItem->wIndex, UserItem->MakeIndex, UserItem->Dura, UserItem->DuraMax, sBindName), TMsgColor.c_Blue, TMsgType.t_Hint);
                m_PlayObject.SysMsg(String.Format("你的%s[%s]已经绑定到%s[%s]上了。", M2Share.GetUseItemName(nItem), UserEngine.GetStdItemName(UserItem->wIndex),
                                                  sType, sBindName), TMsgColor.c_Blue, TMsgType.t_Hint);

                // PlayObject.SendUpdateItem(UserItem);
                m_PlayObject.SendMsg(m_PlayObject, Grobal2.RM_SENDUSEITEMS, 0, 0, 0, 0, "");
                break;
            }
        }
예제 #6
0
        /// <summary>
        /// 建立行会
        /// </summary>
        /// <param name="PlayObject">对象</param>
        /// <param name="sGuildName">名称</param>
        /// <returns></returns>
        private unsafe int ReQuestBuildGuild(TPlayObject PlayObject, string sGuildName)
        {
            int        result   = 0;
            TUserItem *UserItem = null;

            try
            {
                result     = 0;
                sGuildName = sGuildName.Trim();
                if (sGuildName == "")
                {
                    result = -4;
                }
                if (PlayObject.m_MyGuild == null)
                {
                    if (PlayObject.m_nGold >= M2Share.g_Config.nBuildGuildPrice)
                    {
                        UserItem = PlayObject.CheckItems(M2Share.g_Config.sWomaHorn);//检查包裹是否有所需物品
                        if (UserItem == null)
                        {
                            result = -3;// '你没有准备好需要的全部物品。'
                        }
                    }
                    else
                    {
                        result = -2;// '缺少创建费用。'
                    }
                }
                else
                {
                    result = -1;// '您已经加入其它行会。'
                }
                if (result == 0)
                {
                    if (GuildManager.AddGuild(sGuildName, PlayObject.m_sCharName))
                    {
                        UserEngine.SendServerGroupMsg(Grobal2.SS_205, M2Share.nServerIndex, sGuildName + "/" + PlayObject.m_sCharName);
                        PlayObject.SendDelItems(UserItem);
                        PlayObject.DelBagItem(UserItem->MakeIndex, M2Share.g_Config.sWomaHorn);
                        PlayObject.DecGold(M2Share.g_Config.nBuildGuildPrice);
                        PlayObject.GoldChanged();
                        PlayObject.m_MyGuild = GuildManager.MemberOfGuild(PlayObject.m_sCharName);
                        if (PlayObject.m_MyGuild != null)
                        {
                            PlayObject.m_sGuildRankName = PlayObject.m_MyGuild.GetRankName(PlayObject, ref PlayObject.m_nGuildRankNo);
                            this.RefShowName();
                        }
                    }
                    else
                    {
                        result = -4;
                    }
                }
                if (result >= 0)
                {
                    PlayObject.SendMsg(this, Grobal2.RM_BUILDGUILD_OK, 0, 0, 0, 0, "");
                }
                else
                {
                    PlayObject.SendMsg(this, Grobal2.RM_BUILDGUILD_FAIL, 0, result, 0, 0, "");
                }
            }
            catch
            {
                M2Share.MainOutMessage("{异常} TGuildOfficial.ReQuestBuildGuild");
            }
            return(result);
        }
예제 #7
0
        public unsafe void GetUserItems(TPlayObject PlayObject, string[] @Params)
        {
            string sHumanName = @Params.Length > 0 ? @Params[0] : "";
            string sItemName  = @Params.Length > 1 ? @Params[1] : "";
            string sItemCount = @Params.Length > 2 ? @Params[2] : "";
            string sType      = @Params.Length > 3 ? @Params[3] : "";

            int        nItemCount;
            int        nCount;
            int        nType;
            TStdItem * StdItem;
            TUserItem *UserItem = null;

            if ((sHumanName == "") || (sItemName == "") || (sItemCount == "") || (sType == ""))
            {
                PlayObject.SysMsg("命令格式: @" + this.Attributes.Name + " 人物名称 物品名称 数量 类型(0,1,2))", TMsgColor.c_Red, TMsgType.t_Hint);
                return;
            }
            TPlayObject m_PlayObject = UserEngine.GetPlayObject(sHumanName);

            if (m_PlayObject == null)
            {
                PlayObject.SysMsg(String.Format(GameMsgDef.g_sNowNotOnLineOrOnOtherServer, sHumanName), TMsgColor.c_Red, TMsgType.t_Hint);
                return;
            }
            nCount = HUtil32.Str_ToInt(sItemCount, 0);
            nType  = HUtil32.Str_ToInt(sType, 0);
            switch (nType)
            {
            case 0:
                nItemCount = 0;
                for (int I = m_PlayObject.m_UseItems.GetLowerBound(0); I <= m_PlayObject.m_UseItems.GetUpperBound(0); I++)
                {
                    if (m_PlayObject.m_ItemList.Count >= 46)
                    {
                        break;
                    }
                    UserItem = m_PlayObject.m_UseItems[I];
                    StdItem  = UserEngine.GetStdItem(UserItem->wIndex);
                    if ((StdItem != null) && ((sItemName).ToLower().CompareTo((StdItem->ToString()).ToLower()) == 0))
                    {
                        if (!m_PlayObject.IsEnoughBag())
                        {
                            break;
                        }
                        UserItem = (TUserItem *)Marshal.AllocHGlobal(sizeof(TUserItem));
                        for (int i = 0; i < 22; i++)
                        {
                            UserItem->btValue[i] = 0;
                        }
                        *UserItem = *m_PlayObject.m_UseItems[I];
                        m_PlayObject.m_ItemList.Add((IntPtr)UserItem);
                        m_PlayObject.SendAddItem(UserItem);
                        m_PlayObject.m_UseItems[I]->wIndex = 0;
                        nItemCount++;
                        if (nItemCount >= nCount)
                        {
                            break;
                        }
                    }
                }
                m_PlayObject.SendUseitems();
                break;

            case 1:
                nItemCount = 0;
                for (int I = m_PlayObject.m_ItemList.Count - 1; I >= 0; I--)
                {
                    if (m_PlayObject.m_ItemList.Count >= 46)
                    {
                        break;
                    }
                    if (m_PlayObject.m_ItemList.Count <= 0)
                    {
                        break;
                    }
                    UserItem = (TUserItem *)m_PlayObject.m_ItemList[I];
                    StdItem  = UserEngine.GetStdItem(UserItem->wIndex);
                    if ((StdItem != null) && ((sItemName).ToLower().CompareTo((StdItem->ToString()).ToLower()) == 0))
                    {
                        if (!m_PlayObject.IsEnoughBag())
                        {
                            break;
                        }
                        m_PlayObject.SendDelItems(UserItem);
                        m_PlayObject.m_ItemList.RemoveAt(I);
                        m_PlayObject.m_ItemList.Add((IntPtr)UserItem);
                        m_PlayObject.SendAddItem(UserItem);
                        nItemCount++;
                        if (nItemCount >= nCount)
                        {
                            break;
                        }
                    }
                }
                break;

            case 2:
                nItemCount = 0;
                for (int I = m_PlayObject.m_StorageItemList.Count - 1; I >= 0; I--)
                {
                    if (m_PlayObject.m_ItemList.Count >= 46)
                    {
                        break;
                    }
                    if (m_PlayObject.m_StorageItemList.Count <= 0)
                    {
                        break;
                    }
                    UserItem = (TUserItem *)m_PlayObject.m_StorageItemList[I];
                    StdItem  = UserEngine.GetStdItem(UserItem->wIndex);
                    if ((StdItem != null) && ((sItemName).ToLower().CompareTo((StdItem->ToString()).ToLower()) == 0))
                    {
                        if (!m_PlayObject.IsEnoughBag())
                        {
                            break;
                        }
                        m_PlayObject.m_StorageItemList.RemoveAt(I);
                        m_PlayObject.m_ItemList.Add((IntPtr)UserItem);
                        m_PlayObject.SendAddItem(UserItem);
                        nItemCount++;
                        if (nItemCount >= nCount)
                        {
                            break;
                        }
                    }
                }
                break;
            }
        }
예제 #8
0
        public unsafe void UnBindUseItem(TPlayObject PlayObject, string[] @Params)
        {
            if (@Params == null)
            {
                return;
            }
            string sHumanName = @Params.Length > 0 ? @Params[0] : "";
            string sItem      = @Params.Length > 1 ? @Params[1] : "";
            string sType      = @Params.Length > 2 ? @Params[2] : "";

            TPlayObject m_PlayObject;
            TUserItem * UserItem = null;
            int         nItem    = M2Share.GetUseItemIdx(sItem);
            int         nBind    = -1;
            TItemBind   ItemBind;
            int         nItemIdx;
            int         nMakeIdex;
            string      sBindName;

            if ((sType).ToLower().CompareTo(("帐号").ToLower()) == 0)
            {
                nBind = 0;
            }
            if ((sType).ToLower().CompareTo(("人物").ToLower()) == 0)
            {
                nBind = 1;
            }
            if ((sType).ToLower().CompareTo(("IP").ToLower()) == 0)
            {
                nBind = 2;
            }
            if ((sType).ToLower().CompareTo(("死亡").ToLower()) == 0) // 死亡不爆出
            {
                nBind = 3;
            }
            if ((nItem < 0) || (nBind < 0) || (sHumanName == "") || ((sHumanName != "") && (sHumanName[0] == '?')))
            {
                if (M2Share.g_Config.boGMShowFailMsg)
                {
                    PlayObject.SysMsg(string.Format(GameMsgDef.g_sGameCommandParamUnKnow, this.Attributes.Name, GameMsgDef.g_sGameCommandBindUseItemHelpMsg), TMsgColor.c_Red, TMsgType.t_Hint);
                }
                return;
            }
            m_PlayObject = UserEngine.GetPlayObject(sHumanName);
            if (m_PlayObject == null)
            {
                PlayObject.SysMsg(string.Format(GameMsgDef.g_sNowNotOnLineOrOnOtherServer, sHumanName), TMsgColor.c_Red, TMsgType.t_Hint);
                return;
            }
            UserItem = m_PlayObject.m_UseItems[nItem];
            if (UserItem->wIndex == 0)
            {
                PlayObject.SysMsg(string.Format(GameMsgDef.g_sGameCommandBindUseItemNoItemMsg, sHumanName, sItem), TMsgColor.c_Red, TMsgType.t_Hint);
                return;
            }
            nItemIdx  = UserItem->wIndex;
            nMakeIdex = UserItem->MakeIndex;
            switch (nBind)
            {
            case 0:
                sBindName = m_PlayObject.m_sUserID;
                //M2Share.g_ItemBindAccount.__Lock();
                try
                {
                    if (M2Share.g_ItemBindAccount.Count > 0)
                    {
                        for (int I = 0; I < M2Share.g_ItemBindAccount.Count; I++)
                        {
                            ItemBind = M2Share.g_ItemBindAccount[I];
                            if ((ItemBind.nItemIdx == nItemIdx) && (ItemBind.nMakeIdex == nMakeIdex))
                            {
                                PlayObject.SysMsg(string.Format(GameMsgDef.g_sGameCommandBindUseItemAlreadBindMsg, new string[] { sHumanName, sItem }), TMsgColor.c_Red, TMsgType.t_Hint);
                                return;
                            }
                        }
                    }
                    ItemBind           = new TItemBind();
                    ItemBind.nItemIdx  = nItemIdx;
                    ItemBind.nMakeIdex = nMakeIdex;
                    ItemBind.sBindName = sBindName;
                    M2Share.g_ItemBindAccount.Insert(0, ItemBind);
                }
                finally
                {
                    //M2Share.g_ItemBindAccount.UnLock();
                }
                M2Share.SaveItemBindAccount();
                PlayObject.SysMsg(string.Format("%s[%s]IDX[%d]系列号[%d]持久[%d-%d],绑定到%s成功。", M2Share.GetUseItemName(nItem), UserEngine.GetStdItemName(UserItem->wIndex), UserItem->wIndex, UserItem->MakeIndex, UserItem->Dura, UserItem->DuraMax, sBindName), TMsgColor.c_Blue, TMsgType.t_Hint);
                m_PlayObject.SysMsg(string.Format("您的%s[%s]已经绑定到%s[%s]上了。", M2Share.GetUseItemName(nItem), UserEngine.GetStdItemName(UserItem->wIndex), sType, sBindName), TMsgColor.c_Blue, TMsgType.t_Hint);
                break;

            case 1:
                sBindName = m_PlayObject.m_sCharName;
                //M2Share.g_ItemBindCharName.__Lock();
                try
                {
                    if (M2Share.g_ItemBindCharName.Count > 0)
                    {
                        for (int I = 0; I < M2Share.g_ItemBindCharName.Count; I++)
                        {
                            //ItemBind = M2Share.g_ItemBindCharName[I];
                            //if ((ItemBind.nItemIdx == nItemIdx) && (ItemBind.nMakeIdex == nMakeIdex))
                            //{
                            //    this.SysMsg(string.Format(M2Share.g_sGameCommandBindUseItemAlreadBindMsg, new string[] { sHumanName, sItem }), TMsgColor.c_Red, TMsgType.t_Hint);
                            //    return;
                            //}
                        }
                    }
                    ItemBind           = new TItemBind();
                    ItemBind.nItemIdx  = nItemIdx;
                    ItemBind.nMakeIdex = nMakeIdex;
                    ItemBind.sBindName = sBindName;
                    // M2Share.g_ItemBindCharName.InsertText(0, ItemBind);
                }
                finally
                {
                    //M2Share.g_ItemBindCharName.UnLock();
                }
                M2Share.SaveItemBindCharName();
                //this.SysMsg(string.Format("%s[%s]IDX[%d]系列号[%d]持久[%d-%d],绑定到%s成功。", new string[] { M2Share.GetUseItemName(nItem), UserEngine.GetStdItemName(UserItem->wIndex), UserItem->wIndex, UserItem->MakeIndex, UserItem->Dura, UserItem->DuraMax, sBindName }), TMsgColor.c_Blue, TMsgType.t_Hint);
                //PlayObject.SysMsg(string.Format("您的%s[%s]已经绑定到%s[%s]上了。", new string[] { M2Share.GetUseItemName(nItem), UserEngine.GetStdItemName(UserItem->wIndex), sType, sBindName }), TMsgColor.c_Blue, TMsgType.t_Hint);
                break;

            case 2:
                sBindName = m_PlayObject.m_sIPaddr;
                //M2Share.g_ItemBindIPaddr.__Lock();
                try
                {
                    if (M2Share.g_ItemBindIPaddr.Count > 0)
                    {
                        for (int I = 0; I < M2Share.g_ItemBindIPaddr.Count; I++)
                        {
                            //ItemBind = M2Share.g_ItemBindIPaddr[I];
                            //if ((ItemBind.nItemIdx == nItemIdx) && (ItemBind.nMakeIdex == nMakeIdex))
                            //{
                            //    this.SysMsg(string.Format(M2Share.g_sGameCommandBindUseItemAlreadBindMsg, new string[] { sHumanName, sItem }), TMsgColor.c_Red, TMsgType.t_Hint);
                            //    return;
                            //}
                        }
                    }
                    ItemBind           = new TItemBind();
                    ItemBind.nItemIdx  = nItemIdx;
                    ItemBind.nMakeIdex = nMakeIdex;
                    ItemBind.sBindName = sBindName;
                    // M2Share.g_ItemBindIPaddr.InsertText(0, ItemBind);
                }
                finally
                {
                    //M2Share.g_ItemBindIPaddr.UnLock();
                }
                M2Share.SaveItemBindIPaddr();
                //this.SysMsg(string.Format("%s[%s]IDX[%d]系列号[%d]持久[%d-%d],绑定到%s成功。", new string[] { M2Share.GetUseItemName(nItem), UserEngine.GetStdItemName(UserItem->wIndex), UserItem->wIndex, UserItem->MakeIndex, UserItem->Dura, UserItem->DuraMax, sBindName }), TMsgColor.c_Blue, TMsgType.t_Hint);
                //PlayObject.SysMsg(string.Format("您的%s[%s]已经绑定到%s[%s]上了。", new string[] { M2Share.GetUseItemName(nItem), UserEngine.GetStdItemName(UserItem->wIndex), sType, sBindName }), TMsgColor.c_Blue, TMsgType.t_Hint);
                break;

            case 3:    // 人物装备死亡不爆绑定
                sBindName = m_PlayObject.m_sCharName;
                HUtil32.EnterCriticalSection(M2Share.g_ItemBindDieNoDropName);
                try
                {
                    if (M2Share.g_ItemBindDieNoDropName.Count > 0)
                    {
                        for (int I = 0; I < M2Share.g_ItemBindDieNoDropName.Count; I++)
                        {
                            //ItemBind = M2Share.g_ItemBindDieNoDropName[I];
                            //if ((ItemBind.nItemIdx == nItemIdx) && (ItemBind.sBindName == sBindName))
                            //{
                            //    this.SysMsg(string.Format(M2Share.g_sGameCommandBindUseItemAlreadBindMsg, new string[] { sHumanName, sItem }), TMsgColor.c_Red, TMsgType.t_Hint);
                            //    return;
                            //}
                        }
                    }
                    ItemBind           = new TItemBind();
                    ItemBind.nItemIdx  = nItemIdx;
                    ItemBind.nMakeIdex = 0;
                    ItemBind.sBindName = sBindName;
                    //M2Share.g_ItemBindDieNoDropName.InsertText(0, ItemBind);
                }
                finally
                {
                    HUtil32.LeaveCriticalSection(M2Share.g_ItemBindDieNoDropName);
                }
                M2Share.SaveItemBindDieNoDropName();
                // 保存人物装备死亡不爆列表 20081127
                //this.SysMsg(string.Format("%s[%s]IDX[%d]系列号[%d]持久[%d-%d],绑定到%s成功。", new string[] { M2Share.GetUseItemName(nItem), UserEngine.GetStdItemName(UserItem->wIndex), UserItem->wIndex, UserItem->MakeIndex, UserItem->Dura, UserItem->DuraMax, sBindName }), TMsgColor.c_Blue, TMsgType.t_Hint);
                //PlayObject.SysMsg(string.Format("您的%s[%s]已经绑定到%s[%s]上了。", new string[] { M2Share.GetUseItemName(nItem), UserEngine.GetStdItemName(UserItem->wIndex), sType, sBindName }), TMsgColor.c_Blue, TMsgType.t_Hint);
                break;
            }
        }
예제 #9
0
        unsafe public void ExecCmd(TPlayObject Play, TGameCmd Cmd, string sItemName, int nCount)
        {
            TUserItem *UserItem = null;
            TStdItem * StdItem;

            if ((Play.m_btPermission < Cmd.nPermissionMin))
            {
                Play.SysMsg(TMsgConst.g_sGameCommandPermissionTooLow, TMsgColor.c_Red, TMsgType.t_Hint);
                return;
            }
            if ((sItemName == ""))
            {
                if (M2Share.g_Config.boGMShowFailMsg)
                {
                    Play.SysMsg(string.Format(TMsgConst.g_sGameCommandParamUnKnow, Cmd.sCmd, TMsgConst.g_sGamecommandMakeHelpMsg), TMsgColor.c_Red, TMsgType.t_Hint);
                }
                return;
            }
            if ((nCount <= 0))
            {
                nCount = 1;
            }
            if ((nCount > 10))
            {
                nCount = 10;
            }
            if ((Play.m_btPermission < Cmd.nPermissionMax))
            {
                if (!M2Share.CanMakeItem(sItemName))
                {
                    Play.SysMsg(TMsgConst.g_sGamecommandMakeItemNameOrPerMissionNot, TMsgColor.c_Red, TMsgType.t_Hint);
                    return;
                }
                if (M2Share.g_CastleManager.InCastleWarArea(Play) != null) // 攻城区域,禁止使用此功能
                {
                    Play.SysMsg(TMsgConst.g_sGamecommandMakeInCastleWarRange, TMsgColor.c_Red, TMsgType.t_Hint);
                    return;
                }
                if (!Play.InSafeZone())
                {
                    Play.SysMsg(TMsgConst.g_sGamecommandMakeInSafeZoneRange, TMsgColor.c_Red, TMsgType.t_Hint);
                    return;
                }
                nCount = 1;
            }
            for (int I = 0; I < nCount; I++)
            {
                if (Play.m_ItemList.Count >= Grobal2.MAXBAGITEM)
                {
                    return;
                }
                UserItem = (TUserItem *)Marshal.AllocHGlobal(sizeof(TUserItem));
                if (M2Share.UserEngine.CopyToUserItemFromName(sItemName, UserItem))
                {
                    StdItem = M2Share.UserEngine.GetStdItem(UserItem->wIndex);
                    if ((StdItem->Price >= 15000) && !M2Share.g_Config.boTestServer && (Play.m_btPermission < 5))
                    {
                        Marshal.FreeHGlobal((IntPtr)UserItem);
                        UserItem = null;
                    }
                    else
                    {
                        if (HUtil32.Random(M2Share.g_Config.nMakeRandomAddValue) == 0)
                        {
                            M2Share.UserEngine.RandomUpgradeItem(UserItem);
                        }
                    }
                    if (Play.m_btPermission >= Cmd.nPermissionMax)
                    {
                        UserItem->MakeIndex = M2Share.GetItemNumberEx();// 制造的物品另行取得物品ID
                    }
                    Play.m_ItemList.Add((IntPtr)UserItem);
                    Play.SendAddItem(UserItem);
                    if ((Play.m_btPermission >= 6))
                    {
                        M2Share.MainOutMessage("[制造物品] " + Play.m_sCharName + " " + sItemName + "(" + (UserItem->MakeIndex).ToString() + ")");
                    }
                    if (StdItem->NeedIdentify == 1)
                    {
                        M2Share.AddGameDataLog("5" + "\09" + Play.m_sMapName + "\09" + (Play.m_nCurrX).ToString() + "\09" + (Play.m_nCurrY).ToString()
                                               + "\09" + Play.m_sCharName + "\09" + HUtil32.SBytePtrToString(StdItem->Name, StdItem->NameLen) + "\09" + (UserItem->MakeIndex).ToString() + "\09" + "(" +
                                               (HUtil32.LoWord(StdItem->DC)).ToString() + "/" + (HUtil32.HiWord(StdItem->DC)).ToString() + ")" + "(" + (HUtil32.LoWord(StdItem->MC)).ToString()
                                               + "/" + (HUtil32.HiWord(StdItem->MC)).ToString() + ")" + "(" + (HUtil32.LoWord(StdItem->SC)).ToString() + "/" + (HUtil32.HiWord(StdItem->SC)).ToString()
                                               + ")" + "(" + (HUtil32.LoWord(StdItem->AC)).ToString() + "/" + (HUtil32.HiWord(StdItem->AC)).ToString() + ")" + "(" + (HUtil32.LoWord(StdItem->MAC))
                                               .ToString() + "/" + (HUtil32.HiWord(StdItem->MAC)).ToString() + ")" + (UserItem->btValue[0]).ToString()
                                               + "/" + (UserItem->btValue[1]).ToString() + "/" + (UserItem->btValue[2]).ToString() + "/" + (UserItem->btValue[3]).ToString()
                                               + "/" + (UserItem->btValue[4]).ToString() + "/" + (UserItem->btValue[5]).ToString() + "/" + (UserItem->btValue[6]).ToString()
                                               + "/" + (UserItem->btValue[7]).ToString() + "/" + (UserItem->btValue[8]).ToString() + "/" + (UserItem->btValue[14]).ToString()
                                               + "\09" + Play.m_sCharName);
                    }
                }
                else
                {
                    Marshal.FreeHGlobal((IntPtr)UserItem);
                    UserItem = null;
                    Play.SysMsg(string.Format(TMsgConst.g_sGamecommandMakeItemNameNotFound, sItemName), TMsgColor.c_Red, TMsgType.t_Hint);
                    break;
                }
            }
        }
예제 #10
0
        /// <summary>
        /// 取物品的附属属性
        /// </summary>
        /// <param name="UserItem"></param>
        /// <param name="StdItem"></param>
        public unsafe void GetItemAddValue(TUserItem *UserItem, TStdItem *StdItem)
        {
            switch (StdItem->StdMode)
            {
            case 5:
            case 6:
                StdItem->DC  = HUtil32.MakeLong(HUtil32.LoWord(StdItem->DC), HUtil32.HiWord(StdItem->DC) + UserItem->btValue[0]);
                StdItem->MC  = HUtil32.MakeLong(HUtil32.LoWord(StdItem->MC), HUtil32.HiWord(StdItem->MC) + UserItem->btValue[1]);
                StdItem->SC  = HUtil32.MakeLong(HUtil32.LoWord(StdItem->SC), HUtil32.HiWord(StdItem->SC) + UserItem->btValue[2]);
                StdItem->AC  = HUtil32.MakeLong(HUtil32.LoWord(StdItem->AC) + UserItem->btValue[3], HUtil32.HiWord(StdItem->AC) + UserItem->btValue[5]);
                StdItem->MAC = HUtil32.MakeLong(HUtil32.LoWord(StdItem->MAC) + UserItem->btValue[4], HUtil32.HiWord(StdItem->MAC) + UserItem->btValue[6]);
                if (((byte)UserItem->btValue[7] - 1) < 10)     // 神圣
                {
                    StdItem->Source = (sbyte)UserItem->btValue[7];
                }
                if (UserItem->btValue[10] != 0)
                {
                    StdItem->Reserved = Convert.ToByte(StdItem->Reserved | 1);
                }
                break;

            case 10:
            case 11:
                StdItem->AC  = HUtil32.MakeLong(HUtil32.LoWord(StdItem->AC), HUtil32.HiWord(StdItem->AC) + UserItem->btValue[0]);
                StdItem->MAC = HUtil32.MakeLong(HUtil32.LoWord(StdItem->MAC), HUtil32.HiWord(StdItem->MAC) + UserItem->btValue[1]);
                StdItem->DC  = HUtil32.MakeLong(HUtil32.LoWord(StdItem->DC), HUtil32.HiWord(StdItem->DC) + UserItem->btValue[2]);
                StdItem->MC  = HUtil32.MakeLong(HUtil32.LoWord(StdItem->MC), HUtil32.HiWord(StdItem->MC) + UserItem->btValue[3]);
                StdItem->SC  = HUtil32.MakeLong(HUtil32.LoWord(StdItem->SC), HUtil32.HiWord(StdItem->SC) + UserItem->btValue[4]);
                break;

            case 15:
            case 16:
            case 19:
            case 20:
            case 21:
            case 22:
            case 23:
            case 24:
            case 26:
            case 51:
            case 52:
            case 53:
            case 54:
            case 62:
            case 63:
            case 64:
            case 30:     // 加入勋章分类
                StdItem->AC  = HUtil32.MakeLong(HUtil32.LoWord(StdItem->AC), HUtil32.HiWord(StdItem->AC) + UserItem->btValue[0]);
                StdItem->MAC = HUtil32.MakeLong(HUtil32.LoWord(StdItem->MAC), HUtil32.HiWord(StdItem->MAC) + UserItem->btValue[1]);
                StdItem->DC  = HUtil32.MakeLong(HUtil32.LoWord(StdItem->DC), HUtil32.HiWord(StdItem->DC) + UserItem->btValue[2]);
                StdItem->MC  = HUtil32.MakeLong(HUtil32.LoWord(StdItem->MC), HUtil32.HiWord(StdItem->MC) + UserItem->btValue[3]);
                StdItem->SC  = HUtil32.MakeLong(HUtil32.LoWord(StdItem->SC), HUtil32.HiWord(StdItem->SC) + UserItem->btValue[4]);
                if (UserItem->btValue[5] > 0)
                {
                    StdItem->Need = UserItem->btValue[5];
                }
                if (UserItem->btValue[6] > 0)
                {
                    StdItem->NeedLevel = UserItem->btValue[6];
                }
                break;
            }
            if ((UserItem->btValue[20] > 0) || (StdItem->Source > 0))
            {
                switch (StdItem->StdMode) // 吸伤属性
                {
                case 15:
                case 16:
                case 19:
                case 21:
                case 20:
                case 22:
                case 23:
                case 24:
                case 26:
                case 30:
                case 52:
                case 54:
                case 62:
                case 64:
                    // 头盔,项链,戒指,手镯,鞋子,腰带,勋章
                    // 140
                    if (StdItem->Shape == 188)
                    {
                        StdItem->Source = Convert.ToSByte(StdItem->Source + UserItem->btValue[20]);
                        if (StdItem->Source > 100)
                        {
                            StdItem->Source = 100;
                        }
                        StdItem->Reserved = Convert.ToByte(StdItem->Reserved + UserItem->btValue[9]);
                        if (StdItem->Reserved > 5)
                        {
                            StdItem->Reserved = 5;    // 吸伤装备等级
                        }
                    }
                    break;
                }
            }
        }
예제 #11
0
        /// <summary>
        /// 神秘腰带
        /// </summary>
        /// <param name="UserItem"></param>
        public unsafe void UnknowNecklace(TUserItem *UserItem)
        {
            int nC;
            int n10;
            int n14;

            n10 = GetRandomRange(M2Share.g_Config.nUnknowNecklaceACAddValueMaxLimit, M2Share.g_Config.nUnknowNecklaceACAddRate);
            if (n10 > 0)
            {
                UserItem->btValue[0] = Convert.ToByte(n10);
                if (UserItem->btValue[0] > M2Share.g_Config.nUnknowNecklaceACAddValueMaxLimit)
                {
                    UserItem->btValue[0] = M2Share.g_Config.nUnknowNecklaceACAddValueMaxLimit;//限制上限
                }
            }
            n14 = n10;
            n10 = GetRandomRange(M2Share.g_Config.nUnknowNecklaceMACAddValueMaxLimit, M2Share.g_Config.nUnknowNecklaceMACAddRate);
            if (n10 > 0)
            {
                UserItem->btValue[1] = Convert.ToByte(n10);
                if (UserItem->btValue[1] > M2Share.g_Config.nUnknowNecklaceMACAddValueMaxLimit)
                {
                    UserItem->btValue[1] = M2Share.g_Config.nUnknowNecklaceMACAddValueMaxLimit;//限制上限
                }
            }
            n14 += n10;
            n10  = GetRandomRange(M2Share.g_Config.nUnknowNecklaceDCAddValueMaxLimit, M2Share.g_Config.nUnknowNecklaceDCAddRate);
            if (n10 > 0)
            {
                UserItem->btValue[2] = Convert.ToByte(n10);
                if (UserItem->btValue[2] > M2Share.g_Config.nUnknowNecklaceDCAddValueMaxLimit)
                {
                    UserItem->btValue[2] = M2Share.g_Config.nUnknowNecklaceDCAddValueMaxLimit;//限制上限
                }
            }
            n14 += n10;
            n10  = GetRandomRange(M2Share.g_Config.nUnknowNecklaceMCAddValueMaxLimit, M2Share.g_Config.nUnknowNecklaceMCAddRate);
            if (n10 > 0)
            {
                UserItem->btValue[3] = Convert.ToByte(n10);
                if (UserItem->btValue[3] > M2Share.g_Config.nUnknowNecklaceMCAddValueMaxLimit)
                {
                    UserItem->btValue[3] = M2Share.g_Config.nUnknowNecklaceMCAddValueMaxLimit;//限制上限
                }
            }
            n14 += n10;
            n10  = GetRandomRange(M2Share.g_Config.nUnknowNecklaceSCAddValueMaxLimit, M2Share.g_Config.nUnknowNecklaceSCAddRate);
            if (n10 > 0)
            {
                UserItem->btValue[4] = Convert.ToByte(n10);
                if (UserItem->btValue[4] > M2Share.g_Config.nUnknowNecklaceSCAddValueMaxLimit)
                {
                    UserItem->btValue[4] = M2Share.g_Config.nUnknowNecklaceSCAddValueMaxLimit;//限制上限
                }
            }
            n14 += n10;
            n10  = GetRandomRange(6, 30);
            if (n10 > 0)
            {
                nC = (n10 + 1) * 1000;
                UserItem->DuraMax = (ushort)HUtil32._MIN(65000, UserItem->DuraMax + nC);
                UserItem->Dura    = (ushort)HUtil32._MIN(65000, UserItem->Dura + nC);
            }
            if (HUtil32.Random(30) == 0)
            {
                UserItem->btValue[7] = 1;
            }
            UserItem->btValue[8] = 1;
            if (n14 >= 2)
            {
                if (UserItem->btValue[0] >= 3)
                {
                    UserItem->btValue[5] = 1;
                    UserItem->btValue[6] = Convert.ToByte(UserItem->btValue[0] * 3 + 25);
                    return;
                }
                if (UserItem->btValue[2] >= 2)
                {
                    UserItem->btValue[5] = 1;
                    UserItem->btValue[6] = Convert.ToByte(UserItem->btValue[2] * 3 + 30);
                    return;
                }
                if (UserItem->btValue[3] >= 2)
                {
                    UserItem->btValue[5] = 2;
                    UserItem->btValue[6] = Convert.ToByte(UserItem->btValue[3] * 2 + 20);
                    return;
                }
                if (UserItem->btValue[4] >= 2)
                {
                    UserItem->btValue[5] = 3;
                    UserItem->btValue[6] = Convert.ToByte(UserItem->btValue[4] * 2 + 20);
                    return;
                }
                UserItem->btValue[6] = Convert.ToByte(n14 * 2 + 18);
            }
        }
예제 #12
0
        /// <summary>
        /// 神秘头盔
        /// </summary>
        /// <param name="UserItem"></param>
        public unsafe void UnknowHelmet(TUserItem *UserItem)
        {
            int nC;
            int n14;
            int nRandPoint = GetRandomRange(M2Share.g_Config.nUnknowHelMetACAddValueMaxLimit, M2Share.g_Config.nUnknowHelMetACAddRate);

            if (nRandPoint > 0)
            {
                UserItem->btValue[0] = Convert.ToByte(nRandPoint);
                if (UserItem->btValue[0] > M2Share.g_Config.nUnknowHelMetACAddValueMaxLimit)
                {
                    UserItem->btValue[0] = M2Share.g_Config.nUnknowHelMetACAddValueMaxLimit;//限制上限
                }
            }
            n14        = nRandPoint;
            nRandPoint = GetRandomRange(M2Share.g_Config.nUnknowHelMetMACAddValueMaxLimit, M2Share.g_Config.nUnknowHelMetMACAddRate);
            if (nRandPoint > 0)
            {
                UserItem->btValue[1] = Convert.ToByte(nRandPoint);
                if (UserItem->btValue[1] > M2Share.g_Config.nUnknowHelMetMACAddValueMaxLimit)
                {
                    UserItem->btValue[1] = M2Share.g_Config.nUnknowHelMetMACAddValueMaxLimit;//限制上限
                }
            }
            n14       += nRandPoint;
            nRandPoint = GetRandomRange(M2Share.g_Config.nUnknowHelMetDCAddValueMaxLimit, M2Share.g_Config.nUnknowHelMetDCAddRate);
            if (nRandPoint > 0)
            {
                UserItem->btValue[2] = Convert.ToByte(nRandPoint);
                if (UserItem->btValue[2] > M2Share.g_Config.nUnknowHelMetDCAddValueMaxLimit)
                {
                    UserItem->btValue[2] = M2Share.g_Config.nUnknowHelMetDCAddValueMaxLimit;//限制上限
                }
            }
            n14       += nRandPoint;
            nRandPoint = GetRandomRange(M2Share.g_Config.nUnknowHelMetMCAddValueMaxLimit, M2Share.g_Config.nUnknowHelMetMCAddRate);
            if (nRandPoint > 0)
            {
                UserItem->btValue[3] = Convert.ToByte(nRandPoint);
                if (UserItem->btValue[3] > M2Share.g_Config.nUnknowHelMetMCAddValueMaxLimit)
                {
                    UserItem->btValue[3] = M2Share.g_Config.nUnknowHelMetMCAddValueMaxLimit;//限制上限
                }
            }
            n14       += nRandPoint;
            nRandPoint = GetRandomRange(M2Share.g_Config.nUnknowHelMetSCAddValueMaxLimit, M2Share.g_Config.nUnknowHelMetSCAddRate);
            if (nRandPoint > 0)
            {
                UserItem->btValue[4] = Convert.ToByte(nRandPoint);
                if (UserItem->btValue[4] > M2Share.g_Config.nUnknowHelMetSCAddValueMaxLimit)
                {
                    UserItem->btValue[4] = M2Share.g_Config.nUnknowHelMetSCAddValueMaxLimit;//限制上限
                }
            }
            n14       += nRandPoint;
            nRandPoint = GetRandomRange(6, 30);
            if (nRandPoint > 0)
            {
                nC = (nRandPoint + 1) * 1000;
                UserItem->DuraMax = (ushort)HUtil32._MIN(65000, UserItem->DuraMax + nC);
                UserItem->Dura    = (ushort)HUtil32._MIN(65000, UserItem->Dura + nC);
            }
            if (HUtil32.Random(30) == 0)
            {
                UserItem->btValue[7] = 1;
            }
            UserItem->btValue[8] = 1;
            if (n14 >= 3)
            {
                if (UserItem->btValue[0] >= 5)
                {
                    UserItem->btValue[5] = 1;
                    UserItem->btValue[6] = Convert.ToByte(UserItem->btValue[0] * 3 + 25);
                    return;
                }
                if (UserItem->btValue[2] >= 2)
                {
                    UserItem->btValue[5] = 1;
                    UserItem->btValue[6] = Convert.ToByte(UserItem->btValue[2] * 4 + 35);
                    return;
                }
                if (UserItem->btValue[3] >= 2)
                {
                    UserItem->btValue[5] = 2;
                    UserItem->btValue[6] = Convert.ToByte(UserItem->btValue[3] * 2 + 18);
                    return;
                }
                if (UserItem->btValue[4] >= 2)
                {
                    UserItem->btValue[5] = 3;
                    UserItem->btValue[6] = Convert.ToByte(UserItem->btValue[4] * 2 + 18);
                    return;
                }
                UserItem->btValue[6] = Convert.ToByte(n14 * 2 + 18);
            }
        }
예제 #13
0
        /// <summary>
        /// 随机升级武器
        /// </summary>
        /// <param name="UserItem"></param>
        public unsafe void RandomUpgradeWeapon(TUserItem *UserItem)
        {
            int n10;
            int n14;
            int nC = GetRandomRange(M2Share.g_Config.nWeaponDCAddValueMaxLimit, M2Share.g_Config.nWeaponDCAddValueRate);

            if (HUtil32.Random(M2Share.g_Config.nWeaponDCAddRate) == 0)
            {
                UserItem->btValue[0] = Convert.ToByte(nC + 1);
                if (UserItem->btValue[0] > M2Share.g_Config.nWeaponDCAddValueMaxLimit)//限制上限
                {
                    UserItem->btValue[0] = M2Share.g_Config.nWeaponDCAddValueMaxLimit;
                }
            }
            nC = GetRandomRange(12, 15);
            if (HUtil32.Random(15) == 0)
            {
                n14 = (nC + 1) / 3;
                if (n14 > 0)
                {
                    if (HUtil32.Random(3) != 0)
                    {
                        UserItem->btValue[6] = Convert.ToByte(n14);
                    }
                    else
                    {
                        UserItem->btValue[6] = Convert.ToByte(n14 + 10);
                    }
                }
            }
            nC = GetRandomRange(M2Share.g_Config.nWeaponMCAddValueMaxLimit, M2Share.g_Config.nWeaponMCAddValueRate);
            if (HUtil32.Random(M2Share.g_Config.nWeaponMCAddRate) == 0)
            {
                UserItem->btValue[1] = Convert.ToByte(nC + 1);
                if (UserItem->btValue[1] > M2Share.g_Config.nWeaponMCAddValueMaxLimit)//限制上限
                {
                    UserItem->btValue[1] = M2Share.g_Config.nWeaponMCAddValueMaxLimit;
                }
            }
            nC = GetRandomRange(M2Share.g_Config.nWeaponSCAddValueMaxLimit, M2Share.g_Config.nWeaponSCAddValueRate);
            if (HUtil32.Random(M2Share.g_Config.nWeaponSCAddRate) == 0)
            {
                UserItem->btValue[2] = Convert.ToByte(nC + 1);
                if (UserItem->btValue[2] > M2Share.g_Config.nWeaponSCAddValueMaxLimit)
                {
                    UserItem->btValue[2] = M2Share.g_Config.nWeaponSCAddValueMaxLimit;
                }
            }
            nC = GetRandomRange(12, 15);
            if (HUtil32.Random(15) == 0)
            {
                UserItem->btValue[5] = Convert.ToByte(nC / 2 + 1);
            }
            nC = GetRandomRange(12, 12);
            if (HUtil32.Random(3) < 2)
            {
                n10 = (nC + 1) * 2000;
                UserItem->DuraMax = (ushort)HUtil32._MIN(65000, UserItem->DuraMax + n10);
                UserItem->Dura    = (ushort)HUtil32._MIN(65000, UserItem->Dura + n10);
            }
            nC = GetRandomRange(12, 15);
            if (HUtil32.Random(10) == 0)
            {
                UserItem->btValue[7] = Convert.ToByte(nC / 2 + 1);
            }
        }
예제 #14
0
        public unsafe void RandomUpgradeDress(TUserItem *UserItem)
        {
            int n10;
            int nC = GetRandomRange(M2Share.g_Config.nDressACAddValueMaxLimit, M2Share.g_Config.nDressACAddValueRate);

            if (null == UserItem->btValue)
            {
                return;
            }
            if (HUtil32.Random(M2Share.g_Config.nDressACAddRate) == 0)
            {
                UserItem->btValue[0] = Convert.ToByte(nC + 1);
                if (UserItem->btValue[0] > M2Share.g_Config.nDressACAddValueMaxLimit)//限制上限
                {
                    UserItem->btValue[0] = M2Share.g_Config.nDressACAddValueMaxLimit;
                }
            }
            nC = GetRandomRange(M2Share.g_Config.nDressMACAddValueMaxLimit, M2Share.g_Config.nDressMACAddValueRate);
            if (HUtil32.Random(M2Share.g_Config.nDressMACAddRate) == 0)
            {
                UserItem->btValue[1] = Convert.ToByte(nC + 1);
                if (UserItem->btValue[1] > M2Share.g_Config.nDressMACAddValueMaxLimit)
                {
                    UserItem->btValue[1] = M2Share.g_Config.nDressMACAddValueMaxLimit;//限制上限
                }
            }
            nC = GetRandomRange(M2Share.g_Config.nDressDCAddValueMaxLimit, M2Share.g_Config.nDressDCAddValueRate);
            if (HUtil32.Random(M2Share.g_Config.nDressDCAddRate) == 0)
            {
                UserItem->btValue[2] = Convert.ToByte(nC + 1);
                if (UserItem->btValue[2] > M2Share.g_Config.nDressDCAddValueMaxLimit)
                {
                    UserItem->btValue[2] = M2Share.g_Config.nDressDCAddValueMaxLimit;//限制上限
                }
            }
            nC = GetRandomRange(M2Share.g_Config.nDressMCAddValueMaxLimit, M2Share.g_Config.nDressMCAddValueRate);
            if (HUtil32.Random(M2Share.g_Config.nDressMCAddRate) == 0)
            {
                UserItem->btValue[3] = Convert.ToByte(nC + 1);
                if (UserItem->btValue[3] > M2Share.g_Config.nDressMCAddValueMaxLimit)
                {
                    UserItem->btValue[3] = M2Share.g_Config.nDressMCAddValueMaxLimit;//限制上限
                }
            }
            nC = GetRandomRange(M2Share.g_Config.nDressSCAddValueMaxLimit, M2Share.g_Config.nDressSCAddValueRate);
            if (HUtil32.Random(M2Share.g_Config.nDressSCAddRate) == 0)
            {
                UserItem->btValue[4] = Convert.ToByte(nC + 1);
                if (UserItem->btValue[4] > M2Share.g_Config.nDressSCAddValueMaxLimit)
                {
                    UserItem->btValue[4] = M2Share.g_Config.nDressSCAddValueMaxLimit;//限制上限
                }
            }
            nC = GetRandomRange(6, 10);
            if (HUtil32.Random(8) < 6)
            {
                n10 = (nC + 1) * 2000;
                UserItem->DuraMax = (ushort)HUtil32._MIN(65000, UserItem->DuraMax + n10);
                UserItem->Dura    = (ushort)HUtil32._MIN(65000, UserItem->Dura + n10);
            }
        }