private static void HandleRespondSurvey(GameSession session, PacketReader packet) { packet.ReadByte(); packet.ReadLong(); // character id long surveyId = packet.ReadLong(); byte responseIndex = packet.ReadByte(); Player player = session.Player; Home home = GameServer.HomeManager.GetHomeById(player.VisitingHomeId); HomeSurvey homeSurvey = home.Survey; string option = homeSurvey.Options.Keys.ToList()[responseIndex]; if (!homeSurvey.Started || homeSurvey.Ended || homeSurvey.Id != surveyId || option is null || homeSurvey.Options[option].Contains(player.Name) || !homeSurvey.AvailableCharacters.Contains(player.Name)) { return; } homeSurvey.AvailableCharacters.Remove(player.Name); homeSurvey.Options[option].Add(player.Name); session.Send(HomeActionPacket.SurveyAnswer(player.Name)); homeSurvey.Answers++; if (homeSurvey.Answers < homeSurvey.MaxAnswers) { return; } session.FieldManager.BroadcastPacket(HomeActionPacket.SurveyEnd(homeSurvey)); homeSurvey.End(); }
public static PacketWriter SurveyQuestion(HomeSurvey survey) { PacketWriter pWriter = PacketWriter.Of(SendOp.RESPONSE_HOME_ACTION); pWriter.Write(HomeActionMode.Survey); pWriter.Write(SurveyMode.Question); pWriter.WriteUnicodeString(survey.Question); pWriter.WriteBool(survey.Public); return(pWriter); }
public static PacketWriter SurveyAddOption(HomeSurvey survey) { PacketWriter pWriter = PacketWriter.Of(SendOp.ResponseHomeAction); pWriter.Write(HomeActionMode.Survey); pWriter.Write(SurveyMode.AddOption); pWriter.WriteUnicodeString(survey.Question); pWriter.WriteBool(survey.Public); pWriter.WriteUnicodeString(survey.Options.Keys.Last()); pWriter.WriteByte(1); return(pWriter); }
public static PacketWriter SurveyStart(HomeSurvey survey) { PacketWriter pWriter = PacketWriter.Of(SendOp.RESPONSE_HOME_ACTION); pWriter.Write(HomeActionMode.Survey); pWriter.Write(SurveyMode.Start); pWriter.WriteLong(survey.OwnerId); // character id pWriter.WriteLong(survey.Id); // unk pWriter.WriteBool(survey.Public); pWriter.WriteUnicodeString(survey.Question); pWriter.WriteByte((byte)survey.Options.Count); foreach (string option in survey.Options.Keys) { pWriter.WriteUnicodeString(option); } return(pWriter); }
public static PacketWriter SurveyEnd(HomeSurvey survey) { PacketWriter pWriter = PacketWriter.Of(SendOp.RESPONSE_HOME_ACTION); pWriter.Write(HomeActionMode.Survey); pWriter.Write(SurveyMode.End); pWriter.WriteLong(survey.Id); pWriter.WriteBool(survey.Public); pWriter.WriteUnicodeString(survey.Question); pWriter.WriteByte((byte)survey.Options.Count); foreach ((string option, List <string> characterNames) in survey.Options) { pWriter.WriteUnicodeString(option); pWriter.WriteByte((byte)characterNames.Count); if (!survey.Public) { continue; } foreach (string characterName in characterNames) { pWriter.WriteUnicodeString(characterName); } } pWriter.WriteByte((byte)survey.AvailableCharacters.Count); if (!survey.Public) { return(pWriter); } foreach (string characterName in survey.AvailableCharacters) { pWriter.WriteUnicodeString(characterName); } return(pWriter); }