示例#1
0
        public bool BuyItem(string isGift, string purchaseCode, string packetBody, ref Users.UserInfo info, bool noCredits, ref int newId)
        {
            info = InstanceManager.Game.Users.GetUser(info.userId);

            ClientMessage mMessage = new ClientMessage();

            try
            {
                if (purchaseCode == "special_floor" || purchaseCode == "special_wallpaper")
                {
                    string type = "";
                    if (purchaseCode == "special_floor")
                    {
                        type = "floor";
                    }
                    if (purchaseCode == "special_wallpaper")
                    {
                        type = "wallpaper";
                    }
                    int decorationId = int.Parse(packetBody.Split(Convert.ToChar(13))[4]);
                    int typeId       = InstanceManager.Game.Furni.GetTypeFromSprite(type);

                    if (typeId > 0)
                    {
                        if (info.iCredits >= 2 || noCredits)
                        {
                            if (!noCredits)
                            {
                                info.iCredits -= 2;
                                InstanceManager.Game.Users.UpdateUser(info);
                                info = InstanceManager.Game.Users.GetUser(info.userId);
                            }

                            if (isGift == "1")
                            {
                                string targetUser = packetBody.Split(Convert.ToChar(13))[6];
                                string desc       = SpecialFiltering.FilterChars("2,9,10,13,47", packetBody.Split(Convert.ToChar(13))[7]);
                                if (desc.Length > 202)
                                {
                                    desc = desc.Substring(0, 202);
                                }

                                if (InstanceManager.Game.Users.UserExists(targetUser))
                                {
                                    Users.UserInfo giftUser = InstanceManager.Game.Users.GetUser(targetUser);

                                    newId = InstanceManager.Game.Furni.CreateNewFurni(InstanceManager.Game.Furni.GetRandomPresentDefinition(), giftUser.userId);
                                    Furni.GiftInfo gift = new ThorServer.Game.Furni.GiftInfo();
                                    gift.GiftId       = newId;
                                    gift.PurchaseCode = purchaseCode;
                                    gift.Payload      = packetBody;
                                    InstanceManager.Game.Furni.AddGift(gift);
                                    InstanceManager.Game.Furni.SetStuffDataFloorItem(newId, "!" + desc);

                                    long tmpSession = InstanceManager.Sessions.GetSessionFromUser(giftUser.userId);
                                    if (tmpSession != -1)
                                    {
                                        InstanceManager.Sessions.InvokeReactorMethod(tmpSession, "UpdateHandInvoker");
                                    }
                                    return(true);
                                }
                            }
                            else
                            {
                                int itemId = InstanceManager.Game.Furni.CreateNewFurni(typeId, info.userId);
                                newId = itemId;
                                InstanceManager.Game.Furni.SetStuffDataFloorItem(itemId, decorationId.ToString());
                                return(true);
                            }
                        }
                        else
                        {
                            return(false);
                        }
                    }
                    else
                    {
                        return(true);
                    }
                }
                else
                {
                    CatalogueItemInfo item = InstanceManager.Game.Catalogue.GetCatalogueItem(purchaseCode);
                    if (item != null)
                    {
                        if (!item.StaffOnly || InstanceManager.Game.Roles.HasRight(info.iRole, "fuse_staff_catalogue") || noCredits)
                        {
                            if (info.iCredits >= item.ItemCost || noCredits)
                            {
                                if (!noCredits)
                                {
                                    info.iCredits -= item.ItemCost;
                                    InstanceManager.Game.Users.UpdateUser(info);
                                    info = InstanceManager.Game.Users.GetUser(info.userId);
                                }

                                if (isGift == "1")
                                {
                                    string targetUser = packetBody.Split(Convert.ToChar(13))[6];
                                    string desc       = SpecialFiltering.FilterChars("2,9,10,13,47", packetBody.Split(Convert.ToChar(13))[7]);
                                    if (desc.Length > 202)
                                    {
                                        desc = desc.Substring(0, 202);
                                    }

                                    if (InstanceManager.Game.Users.UserExists(targetUser))
                                    {
                                        Users.UserInfo giftUser = InstanceManager.Game.Users.GetUser(targetUser);

                                        newId = InstanceManager.Game.Furni.CreateNewFurni(InstanceManager.Game.Furni.GetRandomPresentDefinition(), giftUser.userId);
                                        Furni.GiftInfo gift = new ThorServer.Game.Furni.GiftInfo();
                                        gift.GiftId       = newId;
                                        gift.PurchaseCode = purchaseCode;
                                        gift.Payload      = packetBody;
                                        InstanceManager.Game.Furni.AddGift(gift);
                                        InstanceManager.Game.Furni.SetStuffDataFloorItem(newId, "!" + desc);
                                        long tmpSession = InstanceManager.Sessions.GetSessionFromUser(giftUser.userId);
                                        if (tmpSession != -1)
                                        {
                                            InstanceManager.Sessions.InvokeReactorMethod(tmpSession, "UpdateHandInvoker");
                                        }
                                        return(true);
                                    }
                                }
                                else
                                {
                                    int itemId = InstanceManager.Game.Furni.CreateNewFurni(item.FurniType, info.userId);
                                    newId = itemId;
                                    if (purchaseCode.StartsWith("special_teleporter_"))
                                    {
                                        int itemId2 = InstanceManager.Game.Furni.CreateNewFurni(item.FurniType, info.userId);
                                        InstanceManager.Game.Furni.SetTeleportID(itemId, itemId2);
                                        InstanceManager.Game.Furni.SetTeleportID(itemId2, itemId);
                                    }

                                    if (item.Sticky)
                                    {
                                        InstanceManager.Game.Furni.SetStuffDataFloorItem(itemId, "20");
                                    }

                                    return(true);
                                }
                            }
                            else
                            {
                                return(false);
                            }
                        }
                    }
                    else
                    {
                        return(false);
                    }
                }
            }
            catch
            {
                return(false);
            }

            return(false);
        }
        public bool BuyItem(string isGift, string purchaseCode, string packetBody, ref Users.UserInfo info, bool noCredits, ref int newId)
        {
            info = InstanceManager.Game.Users.GetUser(info.userId);

            ClientMessage mMessage = new ClientMessage();

            try
            {
                if (purchaseCode == "special_floor" || purchaseCode == "special_wallpaper")
                {

                    string type = "";
                    if (purchaseCode == "special_floor") type = "floor";
                    if (purchaseCode == "special_wallpaper") type = "wallpaper";
                    int decorationId = int.Parse(packetBody.Split(Convert.ToChar(13))[4]);
                    int typeId = InstanceManager.Game.Furni.GetTypeFromSprite(type);

                    if (typeId > 0)
                    {
                        if (info.iCredits >= 2 || noCredits)
                        {

                            if (!noCredits)
                            {
                                info.iCredits -= 2;
                                InstanceManager.Game.Users.UpdateUser(info);
                                info = InstanceManager.Game.Users.GetUser(info.userId);
                            }

                            if (isGift == "1")
                            {
                                string targetUser = packetBody.Split(Convert.ToChar(13))[6];
                                string desc = SpecialFiltering.FilterChars("2,9,10,13,47", packetBody.Split(Convert.ToChar(13))[7]);
                                if (desc.Length > 202) desc = desc.Substring(0, 202);

                                if (InstanceManager.Game.Users.UserExists(targetUser))
                                {
                                    Users.UserInfo giftUser = InstanceManager.Game.Users.GetUser(targetUser);

                                    newId = InstanceManager.Game.Furni.CreateNewFurni(InstanceManager.Game.Furni.GetRandomPresentDefinition(), giftUser.userId);
                                    Furni.GiftInfo gift = new ThorServer.Game.Furni.GiftInfo();
                                    gift.GiftId = newId;
                                    gift.PurchaseCode = purchaseCode;
                                    gift.Payload = packetBody;
                                    InstanceManager.Game.Furni.AddGift(gift);
                                    InstanceManager.Game.Furni.SetStuffDataFloorItem(newId, "!" + desc);

                                    long tmpSession = InstanceManager.Sessions.GetSessionFromUser(giftUser.userId);
                                    if (tmpSession != -1)
                                    {
                                        InstanceManager.Sessions.InvokeReactorMethod(tmpSession, "UpdateHandInvoker");
                                    }
                                    return true;
                                }

                            }
                            else
                            {

                                int itemId = InstanceManager.Game.Furni.CreateNewFurni(typeId, info.userId);
                                newId = itemId;
                                InstanceManager.Game.Furni.SetStuffDataFloorItem(itemId, decorationId.ToString());
                                return true;
                            }

                        }
                        else
                        {
                            return false;
                        }
                    }
                    else
                    {
                        return true;
                    }
                }
                else
                {

                    CatalogueItemInfo item = InstanceManager.Game.Catalogue.GetCatalogueItem(purchaseCode);
                    if (item != null)
                    {
                        if (!item.StaffOnly || InstanceManager.Game.Roles.HasRight(info.iRole, "fuse_staff_catalogue") || noCredits)
                        {
                            if (info.iCredits >= item.ItemCost || noCredits)
                            {

                                if (!noCredits)
                                {
                                    info.iCredits -= item.ItemCost;
                                    InstanceManager.Game.Users.UpdateUser(info);
                                    info = InstanceManager.Game.Users.GetUser(info.userId);
                                }

                                if (isGift == "1")
                                {
                                    string targetUser = packetBody.Split(Convert.ToChar(13))[6];
                                    string desc = SpecialFiltering.FilterChars("2,9,10,13,47", packetBody.Split(Convert.ToChar(13))[7]);
                                    if (desc.Length > 202) desc = desc.Substring(0, 202);

                                    if (InstanceManager.Game.Users.UserExists(targetUser))
                                    {
                                        Users.UserInfo giftUser = InstanceManager.Game.Users.GetUser(targetUser);

                                        newId = InstanceManager.Game.Furni.CreateNewFurni(InstanceManager.Game.Furni.GetRandomPresentDefinition(), giftUser.userId);
                                        Furni.GiftInfo gift = new ThorServer.Game.Furni.GiftInfo();
                                        gift.GiftId = newId;
                                        gift.PurchaseCode = purchaseCode;
                                        gift.Payload = packetBody;
                                        InstanceManager.Game.Furni.AddGift(gift);
                                        InstanceManager.Game.Furni.SetStuffDataFloorItem(newId, "!" + desc);
                                        long tmpSession = InstanceManager.Sessions.GetSessionFromUser(giftUser.userId);
                                        if (tmpSession != -1)
                                        {
                                            InstanceManager.Sessions.InvokeReactorMethod(tmpSession, "UpdateHandInvoker");
                                        }
                                        return true;
                                    }

                                }
                                else
                                {
                                    int itemId = InstanceManager.Game.Furni.CreateNewFurni(item.FurniType, info.userId);
                                    newId = itemId;
                                    if (purchaseCode.StartsWith("special_teleporter_"))
                                    {
                                        int itemId2 = InstanceManager.Game.Furni.CreateNewFurni(item.FurniType, info.userId);
                                        InstanceManager.Game.Furni.SetTeleportID(itemId, itemId2);
                                        InstanceManager.Game.Furni.SetTeleportID(itemId2, itemId);
                                    }

                                    if (item.Sticky)
                                    {
                                        InstanceManager.Game.Furni.SetStuffDataFloorItem(itemId, "20");
                                    }

                                    return true;
                                }
                            }
                            else
                            {
                                return false;
                            }
                        }
                    }
                    else
                    {
                        return false;
                    }
                }
            }
            catch
            {
                return false;
            }

            return false;
        }