المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : طلب new payment device


Zeka__Egypt
16-09-2014, 12:39 PM
السلام عليكم ....
انا كنت عايز أضيف حاجة في الشوب وعايز اخلي الناس تشتريها بحاجة زي الـ Coins بس مش Coins وطبعاً علشان أعرف أضيفها لازم يبقي ليها رقم في payment device زي الـ Arena = 1024 والـ Gold = 1
فأنا عايز أعرف أزي اخلي الأيتم اللي معايا أعملها payment device خاص بيها علشان لما أضيفها في ال RefPolicy تنضاف صح وتشتغل في السيرفر ..
ياريت اللي يقول الحل يقول حاجة مجربها علشان الغلطة هنا ممكن متشغلش الـ SR_GameServer
Thxxxxxxxxxxxxxxxx

BuiLt4KiLl
16-09-2014, 01:58 PM
بص أنا أعتقد الحجات دي ليها علاقة بالـ ID بتاع الأيتم

Zeka__Egypt
16-09-2014, 03:13 PM
معتقدش أن الحل من RefObjItem
علشان دورت وبرده ماوصلتش لي حاجة

Zeka__Egypt
16-09-2014, 08:07 PM
ايه الصحراااااا ديه ؟

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

komnda
18-09-2014, 12:20 AM
ارجوا الاهتمام ..

komnda
18-09-2014, 09:47 PM
يغلق @@