private void TribeOnRanksUpdated(object sender, TribeEventArgs e) { Packet packet = new Packet(Command.TribeChannelRanksUpdate); PacketHelper.AddTribeRanksToPacket(e.Tribe, packet); Global.Current.Channel.Post("/TRIBE/" + e.Tribe.Id, packet); }
private void Create(Session session, Packet packet) { string name; try { name = packet.GetString(); } catch (Exception) { ReplyError(session, packet, Error.Unexpected); return; } locker.Lock(session.Player).Do(() => { if (!session.Player.GetCityList().Any(city => city.Lvl >= 5)) { ReplyError(session, packet, Error.EffectRequirementNotMet); return; } ITribe tribe; Error error = tribeManager.CreateTribe(session.Player, name, out tribe); if (error == Error.Ok) { var reply = new Packet(packet); PacketHelper.AddTribeRanksToPacket(tribe, reply); session.Write(reply); } else { ReplyError(session, packet, error); } }); }
public void Confirm(Session session, Packet packet) { bool isAccepting; try { isAccepting = packet.GetByte() != 0; } catch (Exception) { ReplyError(session, packet, Error.Unexpected); return; } ITribe tribe = null; locker.Lock(session.Player).Do(() => { if (session.Player.TribeRequest == 0) { ReplyError(session, packet, Error.TribesmanNoRequest); return; } var tribeRequestId = session.Player.TribeRequest; session.Player.TribeRequest = 0; dbManager.Save(session.Player); if (!isAccepting) { ReplySuccess(session, packet); return; } if (!world.TryGetObjects(tribeRequestId, out tribe)) { ReplyError(session, packet, Error.TribeNotFound); } }); if (tribe == null) { return; } locker.Lock(session.Player, tribe).Do(() => { if (tribe == null) { ReplyError(session, packet, Error.Unexpected); return; } var tribesman = new Tribesman(tribe, session.Player, tribe.DefaultRank); var error = tribe.AddTribesman(tribesman); if (error != Error.Ok) { ReplyError(session, packet, error); return; } var reply = new Packet(packet); reply.AddInt32(tribeManager.GetIncomingList(tribe).Count()); reply.AddInt16(tribe.AssignmentCount); PacketHelper.AddTribeRanksToPacket(tribe, reply); session.Write(reply); }); }