UberEmu Achievements 85% [Dev, Snippets]

Results 1 to 4 of 4
  1. #1
    Member WizardKing is offline
    MemberRank
    Apr 2011 Join Date
    Somewhere on eaLocation
    70Posts

    UberEmu Achievements 85% [Dev, Snippets]

    First, I am developing a R63 achievement system with 100% Process 0/blabla. I all do this by myself.
    Thanks to:
    Toperwin - First Achievement fix
    Someone(don't know his name) - Achievement score
    Me - Need/Have, achievement score (IMPROVED)

    The externals:
    PHP Code:
    inventory.achievements.unit.1=looks changed
    inventory
    .achievements.unit.5=motto changed
    inventory
    .achievements.unit.6=
    inventory.achievements.unit.7=tags added
    inventory
    .achievements.unit.11=beta tested
    inventory
    .achievements.unit.12=rooms visited
    inventory
    .achievements.unit.15=respect earned
    inventory
    .achievements.unit.16=respect given
    inventory
    .achievements.unit.17=gifts given
    inventory
    .achievements.unit.18=gifts received

    and those are not neededbut are my achievement only for Project 935 Emu:
    inventory.achievements.unit.19=expert ranks
    inventory
    .achievements.unit.20=scifi ranks 
    Here's the SQL
    PHP Code:
    INSERT INTO `achievements` (`id`, `levels`, `dynamic_badgelevel`, `badge`, `pixels_base`, `pixels_multiplier`, `points`, `need`, `have`) VALUES
    (11'1''ACH_AvatarLooks'5001010),
    (
    51'1''ACH_Motto'5001010),
    (
    61'1''ACH_Student'5001010),
    (
    71'1''ACH_AvatarTags'5001050),
    (
    111'0''Z63'5001010),
    (
    1210'1''ACH_RoomEntry'501050),
    (
    1510'1''ACH_RespectEarned'5011010),
    (
    161'1''ACH_RespectGiven'201101000),
    (
    1710'1''ACH_GiftGiver'2011010),
    (
    1810'1''ACH_GiftReceiver'2011010),
    (
    199'1''HX'501.251010),
    (
    209'1''SF'501.251090); 
    C# foreach:
    Code:
      foreach (Achievement Achievement in AchievementsToList)
                {
                    int Level = NextAchievementLevels[Achievement.Id];
                    int Pixels = CalculateAchievementValue(Achievement.PixelBase, Achievement.PixelMultiplier, Level);
                
                    Message.AppendUInt(Achievement.Id);
                    Message.AppendInt32(Level);
                    Message.AppendStringWithBreak(FormatBadgeCode(Achievement.BadgeCode, Level, Achievement.DynamicBadgeLevel));
                    Message.AppendInt32(Achievement.Need);
                    Message.AppendInt32(15);
                    Message.AppendInt32(Achievement.Have);
                    Message.AppendInt32(0);
                }
    And the unlock_achievement void
    Code:
        public void UnlockAchievement(GameClient Session, uint AchievementId, int Level)
            {
                // Get the achievement
                Achievement Achievement = Achievements[AchievementId];
    
                // Make sure the achievement is valid and has not already been unlocked
                if (Achievement == null || UserHasAchievement(Session, Achievement.Id, Level) || Level < 1 || Level > Achievement.Levels)
                {
                    return;
                }
    
                // Calculate the pixel value for this achievement
                int Value = CalculateAchievementValue(Achievement.PixelBase, Achievement.PixelMultiplier, Level);
    
                // Remove any previous badges for this achievement (old levels)
                lock (((Session.GetHabbo().GetBadgeComponent().BadgeList)))
                {
                    List<string> BadgesToRemove = new List<string>();
    
                    foreach (Badge Badge in Session.GetHabbo().GetBadgeComponent().BadgeList)
                    {
                        if (Badge.Code.StartsWith(Achievement.BadgeCode))
                        {
                            BadgesToRemove.Add(Badge.Code);
                        }
                    }
    
                    foreach (string Badge in BadgesToRemove)
                    {
                        Session.GetHabbo().GetBadgeComponent().RemoveBadge(Badge);
                    }
                }
    
                // Give the user the new badge
                Session.GetHabbo().GetBadgeComponent().GiveBadge(FormatBadgeCode(Achievement.BadgeCode, Level, Achievement.DynamicBadgeLevel), true);
    
                // Update or set the achievement level for the user
                if (Session.GetHabbo().Achievements.ContainsKey(Achievement.Id))
                {
                    Session.GetHabbo().Achievements[Achievement.Id] = Level;
    
                    using (DatabaseClient dbClient = UberEnvironment.GetDatabase().GetClient())
                    {
                        dbClient.ExecuteQuery("UPDATE user_achievements SET achievement_level = '" + Level + "' WHERE user_id = '" + Session.GetHabbo().Id + "' AND achievement_id = '" + Achievement.Id + "' LIMIT 1");
                    }
                }
                else
                {
                    Session.GetHabbo().Achievements.Add(Achievement.Id, Level);
    
                    using (DatabaseClient dbClient = UberEnvironment.GetDatabase().GetClient())
                    {
                        dbClient.ExecuteQuery("INSERT INTO user_achievements (user_id,achievement_id,achievement_level) VALUES ('" + Session.GetHabbo().Id + "','" + Achievement.Id + "','" + Level + "')");
                    }
                }
    
                // Notify the user of the achievement gain
                Session.GetMessageHandler().GetResponse().Init(437);
                Session.GetMessageHandler().GetResponse().AppendUInt(Achievement.Id);
                Session.GetMessageHandler().GetResponse().AppendInt32(Level);
                Session.GetMessageHandler().GetResponse().AppendStringWithBreak(FormatBadgeCode(Achievement.BadgeCode, Level, Achievement.DynamicBadgeLevel));
                Session.GetMessageHandler().GetResponse().AppendInt32(Achievement.Points); // achievement points
                Session.GetMessageHandler().GetResponse().AppendInt32(Achievement.PixelBase); // pixels
    
                if (Level > 1)
                {
                    Session.GetMessageHandler().GetResponse().AppendStringWithBreak(FormatBadgeCode(Achievement.BadgeCode, (Level - 1), Achievement.DynamicBadgeLevel));
                }
                else
                {
                    Session.GetMessageHandler().GetResponse().AppendStringWithBreak("");
                }
    
                Session.GetMessageHandler().SendResponse();
    
                // Give the user the pixels he deserves
                Session.GetHabbo().ActivityPoints += Value;
                Session.GetHabbo().UpdateActivityPointsBalance(true, Value);
               
                // Gives the user teh ach points.
                Session.GetHabbo().AchPoints += Achievement.Points;
    
                // [13-12-2009 17:03:34 from 62.50.35.181:30000] 
                // FvXXDRB
    
                // [13-12-2009 17:03:34 from 62.50.35.181:30000] 
                // FuQBIACH_Motto1
    
                // FuPBJACH_RoomEntry2ACH_RoomEntry1
            }
    Current bugs:
    - You won't get achievement points.
    - Have is predefined as 0 in achievements, but must be in users.

    I continue this untill it's done.
    Byee <3


  2. #2
    Apprentice HabboRool is offline
    MemberRank
    Jan 2011 Join Date
    20Posts

    Re: UberEmu Achievements 85% [Dev, Snippets]

    Good and nice!

  3. #3
    Proficient Member HabsHotel is offline
    MemberRank
    Jan 2011 Join Date
    CanadaLocation
    167Posts

    Re: UberEmu Achievements 85% [Dev, Snippets]

    This is for the newst Achieve System?

    Edit: Not adding this until the Development is complete :)
    Last edited by HabsHotel; 28-05-11 at 11:41 PM.

  4. #4
    Member WizardKing is offline
    MemberRank
    Apr 2011 Join Date
    Somewhere on eaLocation
    70Posts

    Re: UberEmu Achievements 85% [Dev, Snippets]

    @HabsHotel okay that's ok but it will be complete soon. Maybe I'm gonna develop my emulator, and release it with 100%.



Advertisement