komnda
16-09-2014, 10:32 PM
بوص يا ريس قبل اى حاجه خد باك اب تمام
بعد كده حضرتك شوف الكويرى ده هوا تقريبا شوف كده عدل على الكويرى واعملو وشوف
اتفضل
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