/// <summary> /// Handles an incoming group invite request (/invite Player) /// </summary> /// <param name="client">the Session the incoming packet belongs to</param> /// <param name="packet">the full packet</param> //[ClientPacketHandler((RealmServerOpCode.CMSG_GROUP_INVITE)] public static void GroupInviteRequest(IRealmClient client, RealmPacketIn packet) { var inviteeName = packet.ReadCString(); var inviter = client.ActiveCharacter; var group = inviter.Group; Character invitee; if (Group.CheckInvite(inviter, out invitee, inviteeName) == GroupResult.NoError) { var listInvitees = Singleton <RelationMgr> .Instance.GetRelations(inviter.EntityId.Low, CharacterRelationType.GroupInvite); if (group == null || listInvitees.Count < group.InvitesLeft) { BaseRelation inviteRelation = RelationMgr.CreateRelation(inviter.EntityId.Low, invitee.EntityId.Low, CharacterRelationType.GroupInvite); Singleton <RelationMgr> .Instance.AddRelation(inviteRelation); // Target has been invited Group.SendResult(inviter.Client, GroupResult.NoError, inviteeName); SendGroupInvite(invitee.Client, inviter.Name); } } }
private static void OnPartyInviteRequest(IRealmClient client, Character destChr) { if (!destChr.EnablePartyRequest) { client.ActiveCharacter.SendSystemMessage(string.Format("Sorry ,but {0} rejects all party requests.", (object)destChr.Name)); } else if (client.ActiveCharacter.Asda2FactionId != (short)-1 && destChr.Asda2FactionId != (short)-1 && (int)destChr.Asda2FactionId != (int)client.ActiveCharacter.Asda2FactionId) { client.ActiveCharacter.SendSystemMessage(string.Format("Sorry ,but {0} is in other faction.", (object)destChr.Name)); } else { string name = destChr.Name; Character activeCharacter = client.ActiveCharacter; Group group = activeCharacter.Group; IBaseRelation relation1 = Singleton <RelationMgr> .Instance .GetPassiveRelations(destChr.EntityId.Low, CharacterRelationType.GroupInvite) .FirstOrDefault <IBaseRelation>(); if (relation1 != null && Environment.TickCount - int.Parse(relation1.Note) > 30000) { Singleton <RelationMgr> .Instance.RemoveRelation(relation1); } Character target; if (Group.CheckInvite(activeCharacter, out target, name) == GroupResult.NoError) { HashSet <IBaseRelation> relations = Singleton <RelationMgr> .Instance.GetRelations(activeCharacter.EntityId.Low, CharacterRelationType.GroupInvite); if (group != null && relations.Count >= (int)group.InvitesLeft) { return; } BaseRelation relation2 = RelationMgr.CreateRelation(activeCharacter.EntityId.Low, target.EntityId.Low, CharacterRelationType.GroupInvite); relation2.Note = Environment.TickCount.ToString((IFormatProvider)CultureInfo.InvariantCulture); Singleton <RelationMgr> .Instance.AddRelation(relation2); Asda2GroupHandler.SendInviteToPartyResponseOrRequestToAnotherPlayerResponse(target.Client, PartyInviteStatusRequest.Invite, client.ActiveCharacter.Name); Asda2GroupHandler.SendPartyIniteResponseResponse(client, activeCharacter, target, PartyInviteStatusResponse.SomeOneRevicingYourInvation); } else { Asda2GroupHandler.SendPartyIniteResponseResponse(client, activeCharacter, target, PartyInviteStatusResponse.ThereIsNoOneToInvite); } } }
private static void OnPartyInviteRequest(IRealmClient client, Character destChr) { if (!destChr.EnablePartyRequest) { client.ActiveCharacter.SendSystemMessage(string.Format("Sorry ,but {0} rejects all party requests.", destChr.Name)); return; } var inviteeName = destChr.Name; var inviter = client.ActiveCharacter; var group = inviter.Group; Character invitee; var listInviters = Singleton <RelationMgr> .Instance.GetPassiveRelations(destChr.EntityId.Low, CharacterRelationType.GroupInvite); var invite = listInviters.FirstOrDefault(); if (invite != null) { var ticks = int.Parse(invite.Note); var timeFromLastInvite = Environment.TickCount - ticks; if (timeFromLastInvite > 30000) { RelationMgr.Instance.RemoveRelation(invite); } } var res = Group.CheckInvite(inviter, out invitee, inviteeName); if (res == GroupResult.NoError) { var listInvitees = Singleton <RelationMgr> .Instance.GetRelations(inviter.EntityId.Low, CharacterRelationType.GroupInvite); if (group == null || listInvitees.Count < group.InvitesLeft) { BaseRelation inviteRelation = RelationMgr.CreateRelation(inviter.EntityId.Low, invitee.EntityId.Low, CharacterRelationType.GroupInvite); inviteRelation.Note = Environment.TickCount.ToString(CultureInfo.InvariantCulture); Singleton <RelationMgr> .Instance.AddRelation(inviteRelation); // Target has been invited //Group.SendResult(inviter.Client, GroupResult.NoError, inviteeName); SendInviteToPartyResponseOrRequestToAnotherPlayerResponse(invitee.Client, PartyInviteStatusRequest.Invite, client.ActiveCharacter.Name); SendPartyIniteResponseResponse(client, inviter, invitee, PartyInviteStatusResponse.SomeOneRevicingYourInvation); } } else { SendPartyIniteResponseResponse(client, inviter, invitee, PartyInviteStatusResponse.ThereIsNoOneToInvite); } }
public override void Calculate() { if (InputPorts[0].Data == null) { return; } relation = InputPorts[0].Data as BaseRelation; if (relation == null) { return; } // Init the ComboBox control.projectSelectionComboBox.Items.Clear(); if (relation.GetType() == typeof(Relation)) { // var relation2 = InputPorts[0]?.Data as Relation; control.projectSelectionComboBox.Items.Add("1"); control.projectSelectionComboBox.Items.Add("2"); } else if (relation.GetType() == typeof(Relation3)) { var relation3 = InputPorts[0]?.Data as Relation3; var relCollection = relation3.Collection as ObservableCollection <Tuple <Guid, Guid, Guid> >; var resRelation = new Relation(relation3.ModelId, relation3.ProjectId); var resCollection = resRelation.Collection as ObservableCollection <Tuple <Guid, Guid> >; foreach (var item in relCollection) { resCollection?.Add(new Tuple <Guid, Guid>(item.Item1, item.Item3)); } OutputPorts[0].Data = resRelation; } }
public void TestRelationAdd() { BaseRelation relation = null; BaseRelation storedRelation = null; int i = 0; foreach (CharacterRelationType type in Enum.GetValues(typeof(CharacterRelationType))) { if (type != CharacterRelationType.Invalid && type != CharacterRelationType.Count) { relation = RelationMgr.CreateRelation(_allianceChars[i].EntityId.Low, _allianceChars[i + 1].EntityId.Low, type); RelationMgr.Instance.AddRelation(relation); storedRelation = RelationMgr.Instance.GetRelation(_allianceChars[i].EntityId.Low, _allianceChars[i + 1].EntityId.Low, type); Assert.AreEqual(relation, storedRelation); i++; } } }
public override void Calculate() { // Input Part if (InputPorts[0].Data.GetType() != typeof(Relation)) { return; } _relation = InputPorts[0].Data as Relation; if (_relation == null) { return; } nodeControl.ListBox.Items.Clear(); foreach (var item in _relation.Collection) { nodeControl.ListBox.Items.Add(item); } BinButton.Visibility = Visibility.Visible; OutputPorts[0].Data = _relation; }