UberEmu Achievements 80% (Have/Need)
Okay if you think this is copy it isn't I have made it by myself.
I coded the achievement points after unlocking achievement and I coded the have and need in list.
In achievements.cs search
Code:
public bool DynamicBadgeLevel;
After add:
Code:
public int Points;
public int Need;
public int Have;
search:
Code:
uint Id, int Levels, string BadgeCode, int PixelBase, double PixelMultiplier, bool DynamicBadgeLevel
Replace with:
Code:
uint Id, int Levels, string BadgeCode, int PixelBase, double PixelMultiplier, bool DynamicBadgeLevel, int Points, int Need, int Have
Search:
Code:
this.DynamicBadgeLevel = DynamicBadgeLevel;
Add:
Code:
this.Points = Points;
this.Need = Need;
this.Have = Have;
Now go to AchievementManager.cs and search:
Code:
Achievements.Add((uint)Row["id"], new Achievement((uint)Row["id"], (int)Row["levels"], (string)Row["badge"], (int)Row["pixels_base"], (double)Row["pixels_multiplier"], UberEnvironment.EnumToBool(Row["dynamic_badgelevel"].ToString())));
Replace with:
Code:
Achievements.Add((uint)Row["id"], new Achievement((uint)Row["id"], (int)Row["levels"], (string)Row["badge"], (int)Row["pixels_base"], (double)Row["pixels_multiplier"], UberEnvironment.EnumToBool(Row["dynamic_badgelevel"].ToString()),(int)Row["points"], (int)Row["need"], (int)Row["have"]));
Search:
Code:
foreach (Achievement Achievement in AchievementsToList)
Replace WHOLE foreach with:
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);
}
Search:
Code:
public void UnlockAchievement(GameClient Session, uint AchievementId, int Level)
REPLACE WHOLE VOID (better to backup old if you fuck up this code) with:
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
}
In Habbo.cs search:
Code:
public int ActivityPoints;
Add below:
Code:
public int AchPoints;
Credits to:
Meth0d - UberCMS
Toperwin - First R63 achievement fix
Me - For achievement points + have/need
I don't know any emulator (except of Nabbo's) which have this same code. If you know show me the code.
Re: UberEmu Achievements 80% (Have/Need)
thanks for this
note: more needs adding
Re: UberEmu Achievements 80% (Have/Need)
more needs adding what do you mean?
Re: UberEmu Achievements 80% (Have/Need)
i mean it isnt complete and retro owners will need to contribute to this code
Re: UberEmu Achievements 80% (Have/Need)
Re: UberEmu Achievements 80% (Have/Need)
/facepalm
Need = for all users
Re: UberEmu Achievements 80% (Have/Need)
yeah but forgot have cannot be in same db because some users is progress 1/5 and others 4/5 'll update code soon.
Re: UberEmu Achievements 80% (Have/Need)
my server is shutting down -.- when the code in my server
Re: UberEmu Achievements 80% (Have/Need)
add in db achievements:
points
have
need
---------- Post added at 05:18 PM ---------- Previous post was at 05:17 PM ----------
add in db achievements:
points
have
need