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); } }
/// <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); } }
/// <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); } }
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; } } }
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; } }
/// <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); }
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; } }
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; } }
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; } } }
/// <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; } } }
/// <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); } }
/// <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); } }
/// <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); } }
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); } }