Adding a new payment Device

Results 1 to 10 of 10
  1. #1
    (⌐■_■) NourAyman is offline
    MemberRank
    Feb 2012 Join Date
    Behind you :PLocation
    683Posts

    shout Adding a new payment Device

    I tried to add new payment device

    But No new payment appear when i try to buy an item with that

    My Procedure

    Code:
    USE [SRO_VT_SHARD]
    GO
    /****** Object:  StoredProcedure [dbo].[_STRG_ADD_PACKAGEITEM_CORE]    Script Date: 12/01/2012 07:10:25 ******/
    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. DIA? : PAYMENT_DEVICE_TOKEN_DIAMOND(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
    
    		-- ij¸¯Å͸íÀ» ¾ò¾î¿ÀÀÚ!!!
    		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
    				else if (@TokenType = 2048)
    				begin
    					set @TokenCodeName = 'ITEM_ETC_SD_TOKEN_05'
    				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
    --@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    --@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@


  2. #2
    Banned nemo07 is offline
    BannedRank
    Sep 2011 Join Date
    HomeLocation
    284Posts

    Re: Adding a new payment Device

    Quote Originally Posted by NourAyman View Post
    I tried to add new payment device

    But No new payment appear when i try to buy an item with that

    My Procedure

    Code:
    USE [SRO_VT_SHARD]
    GO
    /****** Object:  StoredProcedure [dbo].[_STRG_ADD_PACKAGEITEM_CORE]    Script Date: 12/01/2012 07:10:25 ******/
    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. DIA? : PAYMENT_DEVICE_TOKEN_DIAMOND(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
    
    		-- ij¸¯Å͸íÀ» ¾ò¾î¿ÀÀÚ!!!
    		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
    				else if (@TokenType = 2048)
    				begin
    					set @TokenCodeName = 'ITEM_ETC_SD_TOKEN_05'
    				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
    --@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    --@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    I think Cuz U should modify it inside the GameServer.

  3. #3
    (⌐■_■) NourAyman is offline
    MemberRank
    Feb 2012 Join Date
    Behind you :PLocation
    683Posts

    Re: Adding a new payment Device

    Any solution ?

  4. #4
    (⌐■_■) NourAyman is offline
    MemberRank
    Feb 2012 Join Date
    Behind you :PLocation
    683Posts

    Re: Adding a new payment Device

    Up Up Up !

  5. #5
    (⌐■_■) NourAyman is offline
    MemberRank
    Feb 2012 Join Date
    Behind you :PLocation
    683Posts

    Re: Adding a new payment Device

    48 views and no helpful replay ? :S

  6. #6
    In the Emperor name Caosfox is offline
    MemberRank
    Jun 2011 Join Date
    Balcora GateLocation
    1,608Posts

    Re: Adding a new payment Device

    is not only a proc, you need to edit gameserver too

  7. #7
    (⌐■_■) NourAyman is offline
    MemberRank
    Feb 2012 Join Date
    Behind you :PLocation
    683Posts

    Re: Adding a new payment Device

    You have offsets ?

  8. #8
    In the Emperor name Caosfox is offline
    MemberRank
    Jun 2011 Join Date
    Balcora GateLocation
    1,608Posts

    Re: Adding a new payment Device

    no, never tried to add new pay system

  9. #9
    (⌐■_■) NourAyman is offline
    MemberRank
    Feb 2012 Join Date
    Behind you :PLocation
    683Posts

    Re: Adding a new payment Device

    okey thank you

    BTW at least how to add Jop Points or like this ?

  10. #10
    Account Upgraded | Title Enabled! CoderWaxy is offline
    MemberRank
    Aug 2012 Join Date
    Russia, SPBurgLocation
    315Posts

    Re: Adding a new payment Device

    nourayman open skype i wait you



Advertisement