本文整理汇总了C#中Yupi.Game.GameClients.Interfaces.GameClient.?.GetHabbo方法的典型用法代码示例。如果您正苦于以下问题:C# GameClient.?.GetHabbo方法的具体用法?C# GameClient.?.GetHabbo怎么用?C# GameClient.?.GetHabbo使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Yupi.Game.GameClients.Interfaces.GameClient
的用法示例。
在下文中一共展示了GameClient.?.GetHabbo方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: OnTrigger
public override void OnTrigger(GameClient session, RoomItem item, int request, bool hasRights)
{
if (item?.GetRoom() == null || session?.GetHabbo() == null)
return;
RoomUser user = item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(session.GetHabbo().Id);
if (user != null)
{
if (user.Coordinate == item.Coordinate || user.Coordinate == item.SquareInFront)
{
if (item.InteractingUser != 0)
return;
item.InteractingUser = user.GetClient().GetHabbo().Id;
}
else if (user.CanWalk)
user.MoveTo(item.SquareInFront);
}
}
示例2: OnTrigger
public override void OnTrigger(GameClient session, RoomItem item, int request, bool hasRights)
{
if (item?.GetRoom() == null || session?.GetHabbo() == null)
return;
RoomUser roomUserByHabbo = item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(session.GetHabbo().Id);
if (roomUserByHabbo == null)
return;
if (!(roomUserByHabbo.Coordinate == item.Coordinate) && !(roomUserByHabbo.Coordinate == item.SquareInFront))
{
roomUserByHabbo.MoveTo(item.SquareInFront);
return;
}
if (item.InteractingUser != 0)
return;
item.InteractingUser = roomUserByHabbo.GetClient().GetHabbo().Id;
}
示例3: HandlePurchase
/// <summary>
/// Handles the purchase.
/// </summary>
/// <param name="session">The session.</param>
/// <param name="pageId">The page identifier.</param>
/// <param name="itemId">The item identifier.</param>
/// <param name="extraData">The extra data.</param>
/// <param name="priceAmount">The price amount.</param>
/// <param name="isGift">if set to <c>true</c> [is gift].</param>
/// <param name="giftUser">The gift user.</param>
/// <param name="giftMessage">The gift message.</param>
/// <param name="giftSpriteId">The gift sprite identifier.</param>
/// <param name="giftLazo">The gift lazo.</param>
/// <param name="giftColor">Color of the gift.</param>
/// <param name="undef">if set to <c>true</c> [undef].</param>
/// <param name="theGroup">The theGroup.</param>
internal void HandlePurchase(GameClient session, uint pageId, uint itemId, string extraData, uint priceAmount,
bool isGift, string giftUser, string giftMessage, int giftSpriteId, int giftLazo, int giftColor, bool undef,
uint theGroup)
{
priceAmount = priceAmount < 1 || priceAmount > 100 ? 1 : priceAmount;
uint totalPrice = priceAmount, limitedId = 0, limtot = 0;
if (priceAmount >= 6)
totalPrice -= Convert.ToUInt32(Math.Ceiling(Convert.ToDouble(priceAmount)/6))*2 - 1;
if (!Categories.Contains(pageId))
return;
CatalogPage catalogPage = GetPage(pageId);
if (catalogPage == null || !catalogPage.Enabled || !catalogPage.Visible || session?.GetHabbo() == null || catalogPage.MinRank > session.GetHabbo().Rank || catalogPage.Layout == "sold_ltd_items")
return;
CatalogItem item = catalogPage.GetItem(itemId);
if (item == null || session.GetHabbo().Credits < item.CreditsCost || session.GetHabbo().Duckets < item.DucketsCost || session.GetHabbo().Diamonds < item.DiamondsCost || item.Name == "room_ad_plus_badge")
return;
#region Habbo Club Purchase
if (catalogPage.Layout == "vip_buy" || catalogPage.Layout == "club_buy" || HabboClubItems.Contains(item))
{
string[] array = item.Name.Split('_');
double dayLength = 31;
if (item.Name.Contains("DAY"))
dayLength = double.Parse(array[3]);
else if (item.Name.Contains("MONTH"))
dayLength = Math.Ceiling(double.Parse(array[3])*31 - 0.205);
else if (item.Name.Contains("YEAR"))
dayLength = double.Parse(array[3])*31*12;
session.GetHabbo().GetSubscriptionManager().AddSubscription(dayLength);
if (item.CreditsCost > 0)
{
session.GetHabbo().Credits -= item.CreditsCost*totalPrice;
session.GetHabbo().UpdateCreditsBalance();
}
if (item.DucketsCost > 0)
{
session.GetHabbo().Duckets -= item.DucketsCost*totalPrice;
session.GetHabbo().UpdateActivityPointsBalance();
}
if (item.DiamondsCost > 0)
{
session.GetHabbo().Diamonds -= item.DiamondsCost*totalPrice;
session.GetHabbo().UpdateSeasonalCurrencyBalance();
}
return;
}
#endregion
#region Is Only for Habbo Club users Check
if (item.ClubOnly && !session.GetHabbo().GetSubscriptionManager().HasSubscription)
{
ServerMessage serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("CatalogPurchaseNotAllowedMessageComposer"));
serverMessage.AppendInteger(1);
session.SendMessage(serverMessage);
return;
}
#endregion
#region Limited Items Purchase
if (item.IsLimited)
{
totalPrice = 1;
priceAmount = 1;
if (item.LimitedSelled >= item.LimitedStack)
//.........这里部分代码省略.........
示例4: ProgressUserAchievement
/// <summary>
/// Progresses the user achievement.
/// </summary>
/// <param name="session">The session.</param>
/// <param name="achievementGroup">The achievement group.</param>
/// <param name="progressAmount">The progress amount.</param>
/// <param name="fromZero">if set to <c>true</c> [from zero].</param>
/// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns>
internal bool ProgressUserAchievement(GameClient session, string achievementGroup, uint progressAmount,
bool fromZero = false)
{
if (Achievements.ContainsKey(achievementGroup) && session?.GetHabbo() != null)
{
Achievement achievement = Achievements[achievementGroup];
Habbo user = session.GetHabbo();
// Get UserAchievementData, if the user doesn't has the Achievement, create a new.
UserAchievement userAchievement = user.Achievements.ContainsKey(achievementGroup)
? user.GetAchievementData(achievementGroup)
: new UserAchievement(achievementGroup, 0, 0);
// If is a New Achievement is fromZero
if (!user.Achievements.ContainsKey(achievementGroup))
fromZero = true;
// If user hasn't the Achievement, after created the new, Must add in Collections.
if (!user.Achievements.ContainsKey(achievementGroup))
user.Achievements.Add(achievementGroup, userAchievement);
// Get Achievement
userAchievement = user.Achievements[achievementGroup];
// Total Levels from this Achievement
uint achievementLevelsCount = (uint) achievement.Levels.Count;
// Get User Achievement Level
uint achievementCurrentLevel = userAchievement.Level;
// Get User Achievement Progress
uint achievementCurrentProgress = userAchievement.Progress;
// If the next Level is the last level must set to Levels.Count (Ex: 38 Levels => .Count = 37 (Max Level in the Array, but .Count 37 == 38, Soo need put Level - 1)
uint achievementNextLevel = achievementCurrentLevel + 1 > achievementLevelsCount
? achievementLevelsCount
: achievementCurrentLevel + 1;
// Set Achievement Progress
uint achievementProgress = achievementCurrentProgress + progressAmount;
// If he has already the Max, something is wrong.
if (achievementCurrentLevel == achievementLevelsCount)
return false;
// Get Next Level Data
AchievementLevel achievementNextLevelData = achievement.Levels[achievementNextLevel];
// if progress isn't sufficient or, isn't new Achievement
if (achievementProgress < achievementNextLevelData.Requirement || achievementCurrentLevel >= 1)
fromZero = false;
// If progress is sufficient to next level, or is new Achievement
if (achievementProgress >= achievementNextLevelData.Requirement || (achievementCurrentLevel < 1))
fromZero = true;
// if is a new level (but level isn't 0)
if (achievementProgress >= achievementNextLevelData.Requirement)
achievementProgress = 0;
// If is new Level
if (fromZero)
{
// Set Level
userAchievement.SetLevel(achievementNextLevel);
// Set Progress
userAchievement.SetProgress(achievementProgress);
// Give Reward Points
user.AchievementPoints += achievementNextLevelData.RewardPoints;
user.NotifyNewPixels(achievementNextLevelData.RewardPixels);
user.Duckets += achievementNextLevelData.RewardPixels;
// Update Points Balance
user.UpdateActivityPointsBalance();
// Remove old Badge - (Is not problem if is First Level Badge, because if the user hasn't the badg, simply, will not remove.
user.GetBadgeComponent()
.RemoveBadge(Convert.ToString($"{achievementGroup}{achievementNextLevel - 1}"), session);
// Give new Badge
user.GetBadgeComponent().GiveBadge($"{achievementGroup}{achievementNextLevel}", true, session);
// Update in Database
using (IQueryAdapter queryReactor = Yupi.GetDatabaseManager().GetQueryReactor())
queryReactor.RunFastQuery(
$"REPLACE INTO users_achievements VALUES ('{user.Id}', '{achievementGroup}', '{achievementNextLevel}', '{achievementProgress}')");
// Send Unlocked Composer
session.SendMessage(AchievementUnlockedComposer.Compose(achievement, achievementNextLevel,
//.........这里部分代码省略.........
示例5: CompleteUserTalent
/// <summary>
/// Completes the user talent.
/// </summary>
/// <param name="session">The session.</param>
/// <param name="talent">The talent.</param>
internal void CompleteUserTalent(GameClient session, Talent talent)
{
if (session?.GetHabbo() == null || session.GetHabbo().CurrentTalentLevel < talent.Level || session.GetHabbo().Talents.ContainsKey(talent.Id))
return;
if (!LevelIsCompleted(session, talent.Type, talent.Level))
return;
if (!string.IsNullOrEmpty(talent.Prize) && talent.PrizeBaseItem > 0u)
Yupi.GetGame().GetCatalog().DeliverItems(session, Yupi.GetGame().GetItemManager().GetItem(talent.PrizeBaseItem), 1, string.Empty, 0, 0, string.Empty);
session.GetHabbo().Talents.Add(talent.Id, new UserTalent(talent.Id, 1));
using (IQueryAdapter queryReactor = Yupi.GetDatabaseManager().GetQueryReactor())
queryReactor.RunFastQuery($"REPLACE INTO users_talents VALUES ('{session.GetHabbo().Id}', '{talent.Id}', '1');");
session.SendMessage(AchievementTalentComposer.Compose(session, talent));
if (talent.Type == "citizenship")
{
switch (talent.Level)
{
case 3:
Yupi.GetGame().GetAchievementManager().ProgressUserAchievement(session, "ACH_Citizenship", 1);
break;
case 4:
session.GetHabbo().GetSubscriptionManager().AddSubscription(7);
using (IQueryAdapter queryReactor = Yupi.GetDatabaseManager().GetQueryReactor())
queryReactor.RunFastQuery($"UPDATE users SET talent_status = 'helper' WHERE id = '{session.GetHabbo().Id}'");
break;
}
}
}
示例6: UpdateUser
/// <summary>
/// Updates the user.
/// </summary>
internal void UpdateUser()
{
Client = Yupi.GetGame().GetClientManager().GetClientByUserId(Id);
if (Client?.GetHabbo() == null)
return;
CurrentRoom = Client.GetHabbo().CurrentRoom;
_look = Client.GetHabbo().Look;
_motto = Client.GetHabbo().Motto;
}
示例7: SerializeSearchResultListStatics
/// <summary>
/// Serializes the search result list statics.
/// </summary>
/// <param name="staticId">The static identifier.</param>
/// <param name="direct">if set to <c>true</c> [direct].</param>
/// <param name="message">The message.</param>
/// <param name="session">The session.</param>
/// <param name="opened"></param>
/// <param name="showImage"></param>
internal static void SerializeSearchResultListStatics(string staticId, bool direct, ServerMessage message, GameClient session, bool opened = false, bool showImage = false)
{
if (string.IsNullOrEmpty(staticId) || staticId == "official")
staticId = "official_view";
if (staticId != "hotel_view" && staticId != "roomads_view" && staticId != "myworld_view" && !staticId.StartsWith("category__") && staticId != "official_view")
{
message.AppendString(staticId);
message.AppendString(string.Empty);
message.AppendInteger(1);
message.AppendBool(!opened); // staticId != "my" && staticId != "popular" && staticId != "official-root"
message.AppendInteger(showImage ? 1 : 0);
}
KeyValuePair<RoomData, uint>[] rooms;
switch (staticId)
{
case "hotel_view":
{
NavigatorCategory navCategory = Yupi.GetGame().GetNavigator().GetNavigatorCategory(staticId);
foreach (NavigatorSubCategory subCategory in navCategory.SubCategories)
SerializeSearchResultListStatics(subCategory.Caption, false, message, session, subCategory.IsOpened, subCategory.IsImage);
foreach (PublicCategory flat in Yupi.GetGame().GetNavigator().PrivateCategories.Values)
SerializeSearchResultListFlatcats(flat.Id, false, message);
break;
}
case "official_view":
{
NavigatorCategory navCategory = Yupi.GetGame().GetNavigator().GetNavigatorCategory(staticId);
foreach (NavigatorSubCategory subCategory in navCategory.SubCategories)
SerializeSearchResultListStatics(subCategory.Caption, false, message, session, subCategory.IsOpened, subCategory.IsImage);
}
break;
case "myworld_view":
{
NavigatorCategory navCategory = Yupi.GetGame().GetNavigator().GetNavigatorCategory(staticId);
foreach (NavigatorSubCategory subCategory in navCategory.SubCategories)
SerializeSearchResultListStatics(subCategory.Caption, false, message, session, subCategory.IsOpened, subCategory.IsImage);
}
break;
case "roomads_view":
{
foreach (PublicCategory flat in Yupi.GetGame().GetNavigator().PrivateCategories.Values)
SerializePromotionsResultListFlatcats(flat.Id, false, message);
NavigatorCategory navCategory = Yupi.GetGame().GetNavigator().GetNavigatorCategory(staticId);
foreach (NavigatorSubCategory subCategory in navCategory.SubCategories)
SerializeSearchResultListStatics(subCategory.Caption, false, message, session, subCategory.IsOpened, subCategory.IsImage);
break;
}
case "official-root":
{
message.AppendServerMessage(Yupi.GetGame().GetNavigator().NewPublicRooms);
break;
}
case "staffpicks":
{
message.AppendServerMessage(Yupi.GetGame().GetNavigator().NewStaffPicks);
break;
}
case "my":
{
int i = 0;
message.StartArray();
foreach (RoomData data in session.GetHabbo().UsersRooms)
{
if (data != null)
{
data.Serialize(message);
message.SaveArray();
if (i++ == (direct ? 100 : 8))
break;
}
}
//.........这里部分代码省略.........
示例8: SaveFurniture
/// <summary>
/// Saves the furniture.
/// </summary>
/// <param name="dbClient">The database client.</param>
/// <param name="session">The session.</param>
public void SaveFurniture(IQueryAdapter dbClient, GameClient session = null)
{
try
{
if (!_updatedItems.Any() && !_removedItems.Any() && _room.GetRoomUserManager().PetCount <= 0)
return;
foreach (uint itemId in _removedItems)
dbClient.RunFastQuery($"UPDATE items_rooms SET room_id='0', x='0', y='0', z='0', rot='0' WHERE id = {itemId}");
foreach (RoomItem roomItem in _updatedItems.Select(GetItem).Where(roomItem => roomItem != null))
{
if (roomItem.GetBaseItem() != null && roomItem.GetBaseItem().IsGroupItem)
{
try
{
string[] gD = roomItem.GroupData.Split(';');
roomItem.ExtraData = roomItem.ExtraData + ";" + gD[1] + ";" + gD[2] + ";" + gD[3];
}
catch
{
roomItem.ExtraData = string.Empty;
}
}
if (roomItem.RoomId == 0)
continue;
if (roomItem.GetBaseItem().Name.Contains("wallpaper_single") ||
roomItem.GetBaseItem().Name.Contains("floor_single") ||
roomItem.GetBaseItem().Name.Contains("landscape_single"))
{
dbClient.RunFastQuery($"DELETE FROM items_rooms WHERE id = {roomItem.Id} LIMIT 1");
continue;
}
if (roomItem.IsFloorItem)
{
dbClient.SetQuery(
$"UPDATE items_rooms SET room_id={roomItem.RoomId}, [email protected], x={roomItem.X}, y={roomItem.Y}, z='{roomItem.Z.ToString(CultureInfo.InvariantCulture).Replace(',', '.')}', rot={roomItem.Rot} WHERE id={roomItem.Id}");
dbClient.AddParameter("extraData",
!string.IsNullOrEmpty(roomItem.ExtraData) ? roomItem.ExtraData : string.Empty);
dbClient.RunQuery();
}
else
{
dbClient.SetQuery(
$"UPDATE items_rooms SET room_id={roomItem.RoomId}, [email protected], [email protected] WHERE id={roomItem.Id}");
dbClient.AddParameter("extraData",
!string.IsNullOrEmpty(roomItem.ExtraData) ? roomItem.ExtraData : string.Empty);
dbClient.AddParameter("wallPos", roomItem.WallCoord);
dbClient.RunQuery();
}
}
_room.GetRoomUserManager().AppendPetsUpdateString(dbClient);
session?.GetHabbo().GetInventoryComponent().RunDbUpdate();
_updatedItems.Clear();
_removedItems.Clear();
}
catch (Exception ex)
{
ServerLogManager.LogCriticalException("Error during saving furniture for room " + _room.RoomId +
". Stack: " + ex);
}
}