public TradePartner(Character pOwner, DbBusiness dbBusiness) { m_pOwner = pOwner; m_dbObj = dbBusiness; m_dwIdentity = dbBusiness.Business; m_szName = dbBusiness.Name; m_dwAddDate = dbBusiness.Date; m_pPacket = new MsgTradeBuddy { Identity = m_dwIdentity, Name = m_szName, HoursLeft = HoursLeft, Online = TargetOnline }; }
public bool Create(uint idTarget) { Client target; if (!ServerKernel.Players.TryGetValue(idTarget, out target)) { //m_pOwner.Send("The target is not online."); return(false); } if (target.Character == null) { return(false); } m_dwIdentity = target.Character.Identity; m_szName = target.Character.Name; m_dwAddDate = (uint)UnixTimestamp.Timestamp(); new BusinessRepository().SaveOrUpdate(new DbBusiness { Userid = m_pOwner.Identity, Business = m_dwIdentity, Date = m_dwAddDate, Name = m_szName // target name }); m_pOwner.TradePartners.TryAdd(idTarget, this); m_pPacket = new MsgTradeBuddy { Identity = m_dwIdentity, Name = m_szName, HoursLeft = (int)(((UnixTimestamp.Timestamp() + UnixTimestamp.TIME_SECONDS_DAY * 3) - m_dwAddDate) / 60 / 60), Type = TradePartnerType.ADD_PARTNER, Online = TargetOnline }; m_pOwner.Send(m_pPacket); return(true); }
public static void HandleTradeBuddy(Character pRole, MsgTradeBuddy pMsg) { switch (pMsg.Type) { #region Request Partnership case TradePartnerType.REQUEST_PARTNERSHIP: { Client pTargetUser; if (!ServerKernel.Players.TryGetValue(pMsg.Identity, out pTargetUser)) { pRole.Send(ServerString.STR_TRADE_BUDDY_NOT_FOUND); return; } Character pRoleTarget = pTargetUser.Character; if (pRoleTarget == null) { return; } if (pRole.FetchTradeBuddyRequest(pRoleTarget.Identity)) { if (pRoleTarget.TradePartners.ContainsKey(pRole.Identity) || pRole.TradePartners.ContainsKey(pRoleTarget.Identity)) { pRole.Send(ServerString.STR_TRADE_BUDDY_ALREADY_ADDED); return; } var pSender = new TradePartner(pRole); var pTarget = new TradePartner(pRoleTarget); if (!pSender.Create(pRoleTarget.Identity) || !pTarget.Create(pRole.Identity)) { pRole.Send(ServerString.STR_TRADE_BUDDY_SOMETHING_WRONG); return; } pRole.Screen.Send(string.Format("{0} and {1} accepted a trade partnership that will be approved within 3 days.", pRole.Name, pRoleTarget.Name), true); } else { pRoleTarget.SetTradeBuddyRequest(pRole.Identity); pMsg.Identity = pRole.Identity; pMsg.Name = pRole.Name; pTargetUser.Send(pMsg); pTargetUser.Character.SendRelation(pRole); } break; } #endregion #region Reject Request case TradePartnerType.REJECT_REQUEST: { Client pTarget; if (ServerKernel.Players.TryGetValue(pMsg.Identity, out pTarget)) { pMsg.Identity = pRole.Identity; pMsg.Name = pRole.Name; pMsg.Online = true; pTarget.Character.Send(pMsg); } break; } #endregion #region Break partnership case TradePartnerType.BREAK_PARTNERSHIP: { TradePartner pTarget; if (pRole.TradePartners.TryRemove(pMsg.Identity, out pTarget)) { pTarget.Delete(); if (pTarget.TargetOnline) { TradePartner trash; pTarget.Owner.TradePartners.TryRemove(pRole.Identity, out trash); trash.Delete(); pTarget.Owner.Send(string.Format(ServerString.STR_TRADE_BUDDY_BROKE_PARTNERSHIP0, pRole.Name)); } else { new BusinessRepository().DeleteBusiness(pRole.Identity, pTarget.OwnerIdentity); } pRole.Send(string.Format(ServerString.STR_TRADE_BUDDY_BROKE_PARTNERSHIP1, pTarget.Name)); } break; } #endregion default: { ServerKernel.Log.SaveLog("Missing packet handler for type 2046:" + pMsg.Type, true, LogType.WARNING); GamePacketHandler.Report(pMsg); break; } } }
public TradePartner(Character pOwner) { m_pOwner = pOwner; m_pPacket = new MsgTradeBuddy(); }