KomNDA
|
• الانـتـسـاب » Jan 2013
|
• رقـم العـضـويـة » 109373
|
• المشـــاركـات » 2,820
|
• الـدولـة » الجيزه )))))))) kOMNDA (((((((((((
|
• الـهـوايـة » مساعده الاعضاء واحترام الاخرين
|
• اسـم الـسـيـرفـر » Private Server
|
• الـجـنـس » Male
|
• نقـاط التقييم » 1574
|
|
|
بوص يا ريس قبل اى حاجه خد باك اب تمام
بعد كده حضرتك شوف الكويرى ده هوا تقريبا شوف كده عدل على الكويرى واعملو وشوف
اتفضل
كود PHP:
USE [SRO_VT_SHARD] GO /****** Object: StoredProcedure [dbo].[_STRG_ADD_PACKAGEITEM_CORE] Script Date: 07/10/2012 15:30:38 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO
--@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -- »أ³أپآ،°³أ†أ* (أƒأ–¼±أˆ£) --@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
ALTER PROCEDURE [dbo].[_STRG_ADD_PACKAGEITEM_CORE] @Operation tinyint, @CharID int, @PaymentDevice int, @RefPackageItemID int, @Count smallint, @RemainGold bigint, @OwnSilkToPay int, @GiftSilkToPay int, @OffsetOptionalPoint int, @MileageToPay int, @createrName varchar(17) AS
declare @PackageItemCodeName varchar(129) declare @RefItemCodeName varchar(129) declare @RefItemID int declare @OptLevel tinyint declare @Variance bigint declare @Data int declare @MagParamNum tinyint declare @MagParam1 bigint declare @MagParam2 bigint declare @MagParam3 bigint declare @MagParam4 bigint declare @MagParam5 bigint declare @MagParam6 bigint declare @MagParam7 bigint declare @MagParam8 bigint declare @MagParam9 bigint declare @MagParam10 bigint declare @MagParam11 bigint declare @MagParam12 bigint declare @ScrapItemCount int declare @EmptySlotCount int declare @InventorySize int declare @PackageItemCount tinyint
-------------------------- --<< 1. ¼أ¶أپ¤ أ€ü أ„أڑµأ¥ >> -- أپأ–أˆ* -------------------------- -- -- #define SP_BUY_ITEM (BYTE)8 -- -- #define SP_BUY_ITEM_COS (BYTE)19 -- -- #define SP_BUY_CASH_ITEM (BYTE)24 -- -- أ‡أ¶أ€ç´أ‚ sp_buy_item, sp_buy_item_cos,sp_buy_cash_item ¸¸ µé¾î آ؟أƒ ¼أ¶ أ€أ–´أ™. -- -- »أ³أپآ،آ؟آ،¼*¸¸ ±¸¸أ… أ‡أ’ ¼أ¶ أ€أ–´أ™. -- if @Operation <> 8 and @Operation <> 19 and @Operation <> 24
-------------------------- --<< 1. ¼أ¶أپ¤ أˆأ„ أ„أڑµأ¥ >> -- أپأ–أˆ* -------------------------- -- #define SP_BUY_ITEM (BYTE)8 -- #define SP_BUY_ITEM_COS (BYTE)19 -- #define SP_BUY_CASH_ITEM (BYTE)24 -- #define SP_BUY_ITEM_WITH_TOKEN (BYTE)43 -- أ‡أ¶أ€ç´أ‚ sp_buy_item, sp_buy_item_cos,sp_buy_cash_item ¸¸ µé¾î آ؟أƒ ¼أ¶ أ€أ–´أ™. -- »أ³أپآ،آ؟آ،¼*¸¸ ±¸¸أ… أ‡أ’ ¼أ¶ أ€أ–´أ™. if @Operation <> 8 and @Operation <> 19 and @Operation <> 24 and @Operation <> 43
begin return -1 end
-- أ€أژآ؛¥أ…أ¤¸®أ€أ‡ ½½·أ” °¹¼أ¶ ¾أ‹¾أ†³»¾أںأپأ¶. -------------------------- --<< 2. ¼أ¶أپ¤ أ€ü أ„أڑµأ¥ >> -- أپأ–أˆ* -------------------------- -- set @InventorySize = 0 -- if @Operation = 8 or @Operation = 24 -------------------------- --<< 2. ¼أ¶أپ¤ أˆأ„ أ„أڑµأ¥ >> -- أپأ–أˆ* -------------------------- -- أ€أژآ؛¥أ…أ¤¸®أ€أ‡ ½½·أ” °¹¼أ¶ ¾أ‹¾أ†³»¾أںأپأ¶. set @InventorySize = 0 if @Operation = 8 or @Operation = 24 or @Operation = 43 begin select @InventorySize = InventorySize from _Char where CharID = @CharID end else if @Operation = 19 begin select @InventorySize = InventorySize from _RefObjChar with (nolock) where id = (select Link from _RefObjCommon with (nolock) where ID = (select RefCharID from _CharCos where id = @CharId))
end
-- أ€أژآ؛¥أ…أ¤¸® ¾أ¸´أ‚³أ°أ€أŒ´أ™. if @InventorySize = 0 begin return -2 end -- أ€أژآ؛¥أ…أ¤¸®آ؟آ،´أ‚ آ؛أ³½½·أ”أ€أŒ ¸î°³³آھ أ€أ–³آھ? -------------------------- --<< 3. ¼أ¶أپ¤ أ€ü أ„أڑµأ¥ >> -- أپأ–أˆ* -------------------------- -- set @EmptySlotCount = 0 -- if @Operation = 8 or @Operation = 24 -------------------------- --<< 3. ¼أ¶أپ¤ أˆأ„ أ„أڑµأ¥ >> -- أپأ–أˆ* -------------------------- set @EmptySlotCount = 0 if @Operation = 8 or @Operation = 24 or @Operation = 43
begin select @EmptySlotCount = count(*) from _Inventory where charid = @CharID AND 13 <= Slot and Slot < @InventorySize and ItemID = 0 end else if @Operation = 19 begin select @EmptySlotCount = count(*) from _InvCos where CosID = @CharID AND Slot < @InventorySize and ItemID = 0 end
select @PackageItemCodeName = CodeName128 from _RefPackageItem where ID = @RefPackageItemID
if @@rowcount = 0 begin return -4 end -- ´أœأ‡°أ€أŒ³أ„? exec @ScrapItemCount = _GetScrapItemCount @PackageItemCodeName -- أ€أژآ؛¥أ…أ¤¸®آ؟آ، أ†أگأ…°أپأ¶ ¾أ†أ€أŒأ…أ› µé¾î °¥¼أ¶ أ€أ–´أڈ? exec @PackageItemCount = _GetNeededSlotCountByBuyPackageItem @PackageItemCodeName, @Count if @PackageItemCount > @EmptySlotCount begin return -3 end
-- أ€أڈ´أœ clear أ‡أ‘¹أ¦ أ‡أکأپأ–°أ* ½أƒأ€أ›أ‡أڈأ€أڑ. delete _ResultOfPackageItemToMappingWithServerSide where CharId = @CharID
BEGIN TRANSACTION t2
declare package_cursor cursor fast_forward for -- أ†أگأ…°أپأ¶ ¾أ†أ€أŒأ…أ›آ؟آ، µé¾î أ€أ–´أ‚ ¾أ†أ€أŒأ…أ›µéأ€» ²¨³»آ؟أ‚´أ™. select RefItemCodeName, OptLevel, Variance, Data, MagParamNum, MagParam1, MagParam2, MagParam3, MagParam4, MagParam5, MagParam6, MagParam7, MagParam8, MagParam9, MagParam10, MagParam11, MagParam12 from _RefScrapOfPackageItem with (nolock) where RefPackageItemCodeName = @PackageItemCodeName AND Service = 1
open package_cursor
fetch next from package_cursor into @RefItemCodeName, @OptLevel, @Variance, @Data, @MagParamNum, @MagParam1, @MagParam2, @MagParam3, @MagParam4, @MagParam5, @MagParam6, @MagParam7, @MagParam8, @MagParam9, @MagParam10, @MagParam11, @MagParam12
while @@fetch_status = 0 begin
-- ¾أ†أ€أŒأ…أ›أ€أ‡ أ…¸أ€أ”أ€» ¾أ²¾îآ؟أچ¶أ³. declare @TypeID1 tinyint declare @TypeID2 tinyint declare @TypeID3 tinyint declare @TypeID4 tinyint
select @RefItemID = id, @TypeID1 = TypeID1, @TypeID2 = TypeID2, @TypeID3 = TypeID3, @TypeID4 = TypeID4 from _RefObjCommon with (nolock) where CodeName128 = @RefItemCodeName -- ¾أ†أ€أŒأ…أ›أ€» أ‡أڈ³آھ¾آ؟ ½½·أ”آ؟آ، ³أ–¾îأپà¶أ³. declare @NewItemID bigint declare @LatestItemSN bigint -- أ†أگأ…°أپأ¶ أ€أڑأƒ¼¸¦ آ؟©·¯°³ »أ¬ ¼أ¶ أ€أ–أ€¸¹أ‡·أژ, declare @PackageCount int set @PackageCount = 0
-- أ†أگأ…°أپأ¶ ¾أ†أ€أŒأ…أ›¾أˆآ؟آ، أ‡أ‘°³¸¸ µé¾î أ€أ–´أ™¸é, آ؟¹أ€ü°أ؛ °°أ€أŒ -- ¾أ†أ€أŒأ…أ› °³¼أ¶¸¦ أپأ¶أپ¤أ‡أ’ ¼أ¶ أ€أ–´أ™. if @ScrapItemCount = 1 begin -- expandable أ€أŒ°أ* ¼أ¶·®أ€أŒ ¼¼أ†أƒ µأ‡¾î أ€أ–أپأ¶ ¾أٹأ€¸¸é ³أ‘¾îآ؟أ‚ °آھأ€¸·أژ ¼أ¶·® ¼¼أ†أƒ أ‡أک¾أںأپأ¶. if @TypeID1 = 3 and @TypeID2 = 3 and @Data = 0 begin set @Data = @Count end end
while (@PackageCount < @PackageItemCount) begin ---------------------------------------------------------- -- Step1. ¹«°أ،¼آ؛ °أ‹»ç ----------------------------------------------------------
-------------------------- --<< 4. ¼أ¶أپ¤ أ€ü أ„أڑµأ¥ >> -- أپأ–أˆ* -------------------------- -- declare @FirstEmptySlotIndex tinyint -- set @FirstEmptySlotIndex = 255 -- أ€أژآ؛¥آ؟آ، ³أ–أ€»°÷أ€» أƒ£¾أ†¶أ³. -- if @Operation = 8 or @Operation = 24
-------------------------- --<< 4. ¼أ¶أپ¤ أˆأ„ أ„أڑµأ¥ >> -- أپأ–أˆ* --------------------------
declare @FirstEmptySlotIndex tinyint set @FirstEmptySlotIndex = 255 -- أ€أژآ؛¥آ؟آ، ³أ–أ€»°÷أ€» أƒ£¾أ†¶أ³. if @Operation = 8 or @Operation = 24 or @Operation = 43
begin exec _Find_First_Empty_Slotindex_Inventory @FirstEmptySlotIndex output, @CharID end else if @Operation = 19 begin exec _Find_First_Empty_Slotindex_Inventory_Cos @FirstEmptySlotIndex output, @CharID end
-- ½½·أ”آ؟آ، °أ¸°£أ€أŒ ¾أ¸أ€أڑ³×? if @FirstEmptySlotIndex = 255 begin ROLLBACK TRANSACTION t2 close package_cursor deallocate package_cursor return -3 end
-- ¾أ†أ€أŒأ…أ›µµ ¾أ†´أ‘µ¥? if @TypeID1 <> 3 begin ROLLBACK TRANSACTION t2 close package_cursor deallocate package_cursor return -4 end
set @NewItemID = 0 set @LatestItemSN = 0
-- expandables or container if @TypeID2 = 3 or @TypeID2 = 2 begin -- EnchantAttrStone and EnchantMagicStone if @TypeID3 = 11 and (@TypeID4 = 2 or @TypeID4 = 1) begin exec _STRG_ADD_ALCHEMYSTONE_NoTX @NewItemID output, @LatestItemSN output, @Operation, @CharID, @FirstEmptySlotIndex, @RefItemID, @OptLevel, @Data end --GachaExchangingCard else if @TypeID3 = 14 and @TypeID4 = 2 begin
exec _STRG_ADD_ITEM_MAGIC_NoTX @NewItemID output, @LatestItemSN output, @Operation, @CharID, @FirstEmptySlotIndex, @RefItemID, @OptLevel, @Variance, @Data, @MagParamNum, @MagParam1, @MagParam2, @MagParam3, @MagParam4, @MagParam5, @MagParam6, @MagParam7, @MagParam8, @MagParam9, @MagParam10, @MagParam11, @MagParam12 end -- Specialty else if @TypeID3 = 8 begin
exec _STRG_ADD_SPECIALTY_NoTX @NewItemID output, @LatestItemSN output, @Operation, @CharID, @FirstEmptySlotIndex, @RefItemID, @Data, @createrName end -- etc else begin exec _STRG_ADD_EXPENDABLE_NoTX @NewItemID output, @LatestItemSN output, @Operation, @CharID, @FirstEmptySlotIndex, @RefItemID, @Data end end -- equip else if @TypeID2 = 1 begin
-- normal if @MagParamNum = 0 begin exec _STRG_ADD_EQUIP_NORMAL_NoTX @NewItemID output, @LatestItemSN output, @Operation, @CharID, @FirstEmptySlotIndex, @RefItemID, @OptLevel, @Variance, @Data end -- magic else begin
exec _STRG_ADD_ITEM_MAGIC_NoTX @NewItemID output, @LatestItemSN output, @Operation, @CharID, @FirstEmptySlotIndex, @RefItemID, @OptLevel, @Variance, @Data, @MagParamNum, @MagParam1, @MagParam2, @MagParam3, @MagParam4, @MagParam5, @MagParam6, @MagParam7, @MagParam8, @MagParam9, @MagParam10, @MagParam11, @MagParam12 end end IF (@NewItemID <= 0) BEGIN ROLLBACK TRANSACTION t2 close package_cursor deallocate package_cursor RETURN -5 END --------------------------------------------------------------- -- Step5. ¼*¹أ¶أ‚أٹآ؟آ،¼* ¸أ¸أ°¸®»أ³أ€أ‡ أ€¯أ€أ؛ أ€أژآ؛¥أ…أ¤¸®آ؟أچ µأ°آ؛أ± أ€¯أ€أ؛ أ€أژآ؛¥أ…أ¤¸®آ؟أچأ€أ‡ -- ¹«°أ،¼آ؛ أƒ¼أ…©¸¦ أ€§أ‡أک ¼*¹أ¶أ‚أٹأ€¸·أژ °أ،°أ؛¸¦ ³أ‘°أœأپأ–±â أ€§أ‡أ‘ أ€أ›¾÷ ---------------------------------------------------------------
-------------------------- --<< 5. ¼أ¶أپ¤ أ€ü أ„أڑµأ¥ >> -- أپأ–أˆ* -------------------------- -- insert into _ResultOfPackageItemToMappingWithServerSide -- values (@Operation, @CharID, @FirstEmptySlotIndex, @LatestItemSN, @NewItemID, @RefItemID, 0) -------------------------- --<< 5. ¼أ¶أپ¤ أˆأ„ أ„أڑµأ¥ >> -- أپأ–أˆ* -------------------------- insert into _ResultOfPackageItemToMappingWithServerSide values (@Operation, @CharID, @FirstEmptySlotIndex, @LatestItemSN, @NewItemID, @RefItemID, 0, 1) IF (@@ERROR <> 0 OR @@ROWCOUNT <= 0) BEGIN ROLLBACK TRANSACTION t2 close package_cursor deallocate package_cursor RETURN -6 END
set @PackageCount = @PackageCount + 1 end
fetch next from package_cursor into @RefItemCodeName, @OptLevel, @Variance, @Data, @MagParamNum, @MagParam1, @MagParam2, @MagParam3, @MagParam4, @MagParam5, @MagParam6, @MagParam7, @MagParam8, @MagParam9, @MagParam10, @MagParam11, @MagParam12 end
close package_cursor deallocate package_cursor
-------------------------- --<< 6. أƒأں°آ،µأ‰ أ„أڑµأ¥ >> -- -------------------------- --@@@@@@@@@@@@@@@@@ -- أپأ–أˆ* ¾أ†أ€أŒأ…أ› أƒأں°آ، by kkongs --@@@@@@@@@@@@@@@@@
-- أپأ–أˆ*·أژ ±¸أ€أ”أ‡أڈ´أ‚ ¾أ†أ€أŒأ…أ›أ€أŒ¸é أ€أڈ´أœ أپأ–أˆ* ¾أ†أ€أŒأ…أ›أ€» »èأپ¦أ‡أکأپأ–أ€أڑ!!! if(@Operation = 43) -- SP_BUY_ITEM_WITH_TOKEN begin -- << TokenType >> -- 1. أˆ²µآ؟ : PAYMENT_DEVICE_TOKEN_BRASS(64) -- 2. °*أƒ¶ : PAYMENT_DEVICE_TOKEN_STEEL(128) -- 3. أپأ¸أ€آ؛ : PAYMENT_DEVICE_TOKEN_SILVER(256) -- 4. أˆ²±أ : PAYMENT_DEVICE_TOKEN_GOLD(512) -- 5. أ„أڑأ€أژ : PAYMENT_DEVICE_TOKEN_MEDAL(1024) -- 5. أ„أڑأ€أژ : PAYMENT_DEVICE_TOKEN_UPGADE(2048)
declare @TokenID int declare @RequireTokenCost int declare @CharTokenCost int declare @Error_Code int declare @TokenType int declare @TokenCodeName varchar(129) declare @CharName16 varchar(64) declare @ID64 bigint declare @Slot tinyint declare @Cost int declare @ItemID int
-- أ„³¸¯أ…أچ¸أ*أ€» ¾أ²¾îآ؟أ€أ€أڑ!!! select @CharName16 = CharName16 from _Char with (nolock) where CharID = @CharID set @TokenType = 64 --PAYMENT_DEVICE_TOKEN_BRASS(أˆ²µآ؟) while(@TokenType in (64, 128, 256, 512,1024,2048)) -- أپأ–أˆ*أ…¸أ€أ”آ؛°·أژ ´أ™ أˆ®أ€أژأ‡أک آ؛¸أ€أڑ!!! begin if(@PaymentDevice & @TokenType <> 0) begin set @TokenID = 0 set @RequireTokenCost = 0 set @CharTokenCost = 0 if(@TokenType = 64) begin set @TokenCodeName = 'ITEM_ETC_SD_TOKEN_01' end else if (@TokenType = 128) begin set @TokenCodeName = 'ITEM_ETC_SD_TOKEN_02' end else if (@TokenType = 256) begin set @TokenCodeName = 'ITEM_ETC_SD_TOKEN_03' end else if (@TokenType = 512) begin set @TokenCodeName = 'ITEM_ETC_SD_TOKEN_04' end else if (@TokenType = 1024) begin set @TokenCodeName = 'ITEM_ETC_ARENA_COIN' end if(@TokenType = 2048) begin set @TokenCodeName = 'ITEM_CH_TBLADE_11_C_RARE' end select @TokenID = ID from _RefObjCommon with(nolock) where CodeName128 = @TokenCodeName --أ‡أک´ç ¾أ†أ€أŒأ…أ›أ€أŒ ¾أ¸´أ™´أ‚ ¼أ’¸®³أ„? ¸»µµ ¾أˆµأˆ´أ™!!! if(@TokenID = 0) begin ROLLBACK TRANSACTION t2 return -100 end -- أ€أژآ؛¥أ…أ¤¸®آ؟آ،¼* أ‡أک´ç أپأ–أˆ* أ…¸أ€أ”أ€أ‡ ¾أ†أ€أŒأ…أ›µéأ€» °أ‹»أ¶أ‡أڈأ€أڑ!!! select I.ID64, I.RefItemID, Inv.slot, I.data into #TokenItem from _Inventory as Inv with (nolock) join _Items as I with (nolock) on Inv.ItemID = I.ID64 join _ItemPool as IP with (nolock) on I.ID64 = IP.ItemID where Inv.CharID = @CharID and IP.Inuse = 1 and I.RefItemID = @TokenID order by Inv.slot --أپأ–أˆ*°آ، ¾أ¸´أ™¸é!!!¸»أ€أŒ ¾أˆµأˆ´أ™!!! °أ”أ€أ“»أ³آ؟آ،´أ‚ أ€أŒ¹أŒ »èأپ¦¸¦ أ‡أکأپأ،´أ‚µ¥, DBآ؟آ،´أ‚ ¾أ¸´أ™°أ*??? if(@@rowcount = 0) begin ROLLBACK TRANSACTION t2 return -101 end -- ¾أ†أ€أŒأ…أ›أ€» ±¸أ€أ”أ‡أڈ´أ‚µ¥ أ‡أٹآ؟أ¤أ‡أ‘ أپأ–أˆ*أ€أ‡ °¹¼أ¶!!! select @RequireTokenCost = Cost * @Count from _RefPricePolicyOfItem with (nolock) where RefPackageItemCodeName = @PackageItemCodeName and PaymentDevice = @TokenType -- ½أ‡أپ¦·أژ أ€¯أ€أ؛°آ، °آ،أپأ¶°أ* أ€أ–´أ‚ أ…أ¤أ…« °¹¼أ¶!!! select @CharTokenCost = sum(data) from #TokenItem if(@RequireTokenCost > @CharTokenCost) begin declare @Result_Slot tinyint declare @Result_RefItemSerial64 bigint declare @Result_RefItemDBID bigint declare @Result_RefItemID int declare @Result_Type tinyint declare @Result_SubType tinyint set @Result_Slot = 0x4a -- error_num ¼*¹أ¶آ؟آ،¼* »çآ؟ëأ‡أڈ´أ‚ آ؟آ،·¯ set @Result_RefItemSerial64 = 0 set @Result_RefItemDBID = 0 set @Result_RefItemID = 0 set @Result_Type = 2 set @Result_SubType = 0
select @Operation, @Result_Slot, @Result_RefItemSerial64, @Result_RefItemDBID, @Result_RefItemID, @Result_Type, @Result_SubType ROLLBACK TRANSACTION t2 return -102 end else begin declare Token_cursor cursor fast_forward for select ID64, RefItemID, Slot, Data from #TokenItem open Token_cursor fetch next from Token_cursor into @ID64, @ItemID, @Slot, @Cost
while @@fetch_status = 0 begin if(@RequireTokenCost >= @Cost) begin --¾أ†أ€أŒأ…أ›أ€» »èأپ¦أ‡أک أپأ–أ€أڑ!!! exec @Error_Code = _STRG_DEL_ITEM 15, @CharID, @Slot, 0 if(@Error_Code < 0) begin ROLLBACK TRANSACTION t2 close Token_cursor deallocate Token_cursor return -103 end set @RequireTokenCost = @RequireTokenCost - @Cost set @Cost = 0 end else begin --°¹¼أ¶¸¸ أ‚÷°¨µأ‡´أ‚ °أچأ€أŒ¹أ‡·أژ, updateأ‡أکأپأ–أ€أڑ!!! set @Cost = @Cost - @RequireTokenCost set @RequireTokenCost = 0 update _Items set Data = @Cost where ID64 = @ID64 end insert into _ResultOfPackageItemToMappingWithServerSide values (@Operation, @CharID, @Slot,@Cost, @TokenType, @ItemID, 0, 2) IF (@@ERROR <> 0 OR @@ROWCOUNT <= 0) BEGIN ROLLBACK TRANSACTION t2 close Token_cursor deallocate Token_cursor RETURN -104 END -- أ‡أٹآ؟أ¤أ‡أ‘ أپأ–أˆ*¸¦ ´أ™ أ‚÷°¨أ‡أں´أ™¸é... if(@RequireTokenCost = 0) begin break end fetch next from Token_cursor into @ID64, @ItemID, @Slot, @Cost end -- ¼³¸¶;;;; if(@RequireTokenCost > 0) begin ROLLBACK TRANSACTION t2 close Token_cursor deallocate Token_cursor RETURN -105 end close Token_cursor deallocate Token_cursor drop table #TokenItem end end --´أ™أ€½ أپأ–أˆ* أ…¸أ€أ”أ€» °أ‹»çأ‡أڈ±â أ€§أ‡أک!!! set @TokenType = @TokenType * 2 end end
---------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------
COMMIT TRANSACTION t2
-- °آ،°أ آ؛أژأ…أچ ±î³أ¶. declare @result int exec @result = _UPDATE_COST @Operation, @CharID, @PaymentDevice, @PackageItemCodeName, @RemainGold, @OwnSilkToPay, @GiftSilkToPay, @OffsetOptionalPoint, @MileageToPay IF (@@ERROR <> 0 OR @result < 0) BEGIN -------------------------------------------------------------------- -- ¼أ¶µآ؟ rollback !!! -------------------------------------------------------------------- -- step 1. inventory أƒ»¼أ’ if (@Operation <> 19) begin -- Type 0: ¾أ†أ€أŒأ…أ› °ü·أƒ record¶أ³´أ‚ °أ…´أ™. (µ·±î´أ‚ أپ¤آ؛¸¸¦ ´أ£´أ‚ record´أ‚ Type: 1 أ€أŒ´أ™) update _Inventory set ItemID = 0 where CharID = @CharID and ItemID in (select RefItemDBID from _ResultOfPackageItemToMappingWithServerSide where CharID = @CharID and Type = 0) end else begin update _InvCOS set ItemID = 0 where COSID = @CharID and ItemID in (select RefItemDBID from _ResultOfPackageItemToMappingWithServerSide where CharID = @CharID and Type = 0) end
-- step 2. Item ¹أ³³ update _Items set Serial64 = 0 where ID64 in (select RefItemDBID from _ResultOfPackageItemToMappingWithServerSide where CharID = @CharID and Type = 0)
update _ItemPool set InUse = 0 where ItemID in (select RefItemDBID from _ResultOfPackageItemToMappingWithServerSide where CharID = @CharID and Type = 0)
-- by novice. 2010-01-15 آ؟آ،·¯أ„أڑµأ¥ µ¥أ€أŒأ…أچأ‡ü أˆ®أ€أ¥ -------------------------- --<< 7. ¼أ¶أپ¤ أ€ü أ„أڑµأ¥ >> -- -------------------------- -- -- declare @temp_Slot tinyint -- declare @temp_Slot int -- declare @temp_RefItemSerial64 bigint -- declare @temp_RefItemDBID bigint -- declare @temp_RefItemID int -- declare @temp_Type tinyint -- declare @temp_SubType tinyint
-- -- by novice. 2010-01-15 آ؟آ،·¯أ„أڑµأ¥ µ¥أ€أŒأ…أچأ‡ü أˆ®أ€أ¥ -- -- 0x00 ¶أ³¼* SRO_SP_ERR °أ؛ SROERR Binding أ€» أ‡أڈأپأ¶ ¾أٹ¾أ’´أ™ -- -- set @temp_Slot = 0x00 -- error_num ¼*¹أ¶آ؟آ،¼* »çآ؟ëأ‡أڈ´أ‚ آ؟آ،·¯ -- set @temp_Slot = 0x00 -- error_num ¼*¹أ¶آ؟آ،¼* »çآ؟ëأ‡أڈ´أ‚ آ؟آ،·¯ -- set @temp_RefItemSerial64 = 0 -- set @temp_RefItemDBID = 0 -- set @temp_RefItemID = 0 -- set @temp_Type = 2 -- set @temp_SubType = 0
-- select @Operation, @temp_Slot, @temp_RefItemSerial64, @temp_RefItemDBID, @temp_RefItemID, @temp_Type -- END -- else -- begin -- select Operation, slot, RefItemSerial64, RefItemDBID, RefItemID, Type -- from _ResultOfPackageItemToMappingWithServerSide -- where CharId = @CharID and Operation = @Operation
-------------------------- --<< 7. ¼أ¶أپ¤ أˆأ„ أ„أڑµأ¥ >> -- -------------------------- declare @temp_Slot tinyint declare @temp_RefItemSerial64 bigint declare @temp_RefItemDBID bigint declare @temp_RefItemID int declare @temp_Type tinyint declare @temp_SubType tinyint
set @temp_Slot = 0x00 -- error_num ¼*¹أ¶آ؟آ،¼* »çآ؟ëأ‡أڈ´أ‚ آ؟آ،·¯ set @temp_RefItemSerial64 = 0 set @temp_RefItemDBID = 0 set @temp_RefItemID = 0 set @temp_Type = 2 set @temp_SubType = 0
select @Operation, @temp_Slot, @temp_RefItemSerial64, @temp_RefItemDBID, @temp_RefItemID, @temp_Type, @temp_SubType END else begin if(@Operation = 43) --أپأ–أˆ* ¾أ†أ€أŒأ…أ› ±¸أ€أ”أ€أŒ¸é.. begin select Operation, slot, RefItemSerial64, RefItemDBID, RefItemID, Type, SubType from _ResultOfPackageItemToMappingWithServerSide where CharId = @CharID and Operation in (15, 43) Order by Operation, RefItemDBID, Slot -- أپأ–أˆ* أ…¸أ€أ”°أ؛ ½½·أ”¹أ¸أˆ£·أژ أپ¤·أ„أ‡أڈأ€أڑ!!! --Operation : أپأ–أˆ*·أژ ¾أ†أ€أŒأ…أ› ±¸أ€أ”(43)°أ؛ أپأ–أˆ*¾أ†أ€أŒأ…أ› »èأپ¦(15) end else begin select Operation, slot, RefItemSerial64, RefItemDBID, RefItemID, Type, SubType from _ResultOfPackageItemToMappingWithServerSide where CharId = @CharID and Operation = @Operation end
----------------------------------------------------------------------------------------------------
end
delete _ResultOfPackageItemToMappingWithServerSide where CharId = @CharID
RETURN @result --@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ --@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
وتقريبا بردو شغلك كلو هيكون هنا ومتعملش حاجه فى المديا
[dbo].[_STRG_ADD_PACKAGEITEM_CORE]
لولسا يبا انتا محتاج تعدل على sr_gameserver and sro_client
|