ÇáãæÖæÚ: ãÔßáÉ ÝÇá item mall
ÚÑÖ ãÔÇÑßÉ æÇÍÏÉ
ÞÏíã 06-03-2020, 02:46 PM   #2

forlove2020
ÚÖæ ÌÏíÏ





• ÇáÇäÜÊÜÓÜÇÈ » Nov 2018
• ÑÞÜã ÇáÚÜÖÜæíÜÉ » 139139
• ÇáãÔÜÜÜÇÑßÜÇÊ » 25
• ÇáÜÏæáÜÉ »
• ÇáÜåÜæÇíÜÉ »
• ÇÓÜã ÇáÜÓÜíÜÑÝÜÑ » No Server
• ÇáÜÌÜäÜÓ » Male
• äÞÜÇØ ÇáÊÞííã » 10
forlove2020 ÕÜÇÚÜÏ

forlove2020 ÛíÑ ãÊæÇÌÏ ÍÇáíÇð



ÇÝÊÑÇÖí ÑÏ: ãÔßáÉ ÝÇá item mall



USE [SRO_VT_SHARD]
GO
/****** Object: StoredProcedure [dbo].[_UPDATE_COST] Script Date: 9/24/2019 4:48:11 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

--@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-- ¡Ã*oA¢®Â¡Ã†©Ã¸¨Â¡i (AO¨ù¡¾E¡Ì)
--@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

ALTER PROCEDURE [dbo].[_UPDATE_COST]
@Operation tinyint,
@CharID int,
@PaymentDevice int,
@PackageItemCodeName varchar(129),
@RemainGold bigint,
@OwnSilkToPay int,
@GiftSilkToPay int,
@OffsetOptionalPoint int,
@MileageToPay int
AS

SET NOCOUNT ON

declare @PaymentDeviceTemp int
declare @RemainOwnSilk int
declare @RemainGiftSilk int
declare @RemainMileage int
declare @Result int

set @RemainOwnSilk = 0
set @RemainGiftSilk = 0
set @RemainMileage = 0

IF (@RemainGold < 0 or @MileageToPay < 0 or @OwnSilkToPay < 0 or @GiftSilkToPay < 0 or @OffsetOptionalPoint < 0)
BEGIN
RETURN -2001
END

DECLARE @PC_ID INT
set @PC_ID = @CharID
----------------------------------------------------------
-- Operation¢¯¢® ¥Ã¬u¢Ã’o¨ù* A?Au A©Ã¸¢¬?AI ¨Ãº¨Â¡AI¥Ã¬Ã°Â¡Ã†¢® ©Ã¸N¨Ãºi ¢¯A¨ùo¥Ã¬¥Ã¬ AO¡Æi, cos ¨Ãº¨Â¡AI¥Ã¬Ã°Â¡Ã†¢® ©Ã¸N¨Ãºi ¢¯A ¨ùo¥Ã¬¥Ã¬ AO¢¥U.
-- A©Ã¸¢¬?AI ¨Ãº¨Â¡AI¥Ã¬Ã°¢¬| ¨ÃºiA¢Ã’¢¥©Âª ¨ÃºE¨Ãº¨Â¡©Ã¸Â¡Ã*¨Ãº©¬ CI¡ÆU¢¥U.
----------------------------------------------------------
if (@Operation = 19)
begin
-- COS ¢¯e ©Ã¶Â¡Ã†C¡ÆA¡Ã* ¡¾¢¬AOCN¡ÆA¢¥I¡¾n... A©Ã¸¢¬? A¡Ì¨Ãº¨Â¡¨ù* ¥Ã¬Â¡¤ ¡Ã*¨Ã�Aa¨Ãº©¬Ao...
SELECT @PC_ID = OwnerCharID FROM _CharCOS WHERE ID = @PC_ID
IF (@@ERROR <> 0 OR @@ROWCOUNT = 0)
BEGIN
RETURN -2002
END
end
/*
#define EXPAND_DEVICE_GOLDPRICE 1
#define EXPAND_DEVICE_SILKPRICE 2
#define EXPAND_DEVICE_GIFTSILKPRICE 4
#define EXPAND_DEVICE_GUILDPOINT 8
#define EXPAND_DEVICE_MILEAGE 16
*/

if ((@PaymentDevice & (2 | 4 | 16 )) > 0)
begin
-- ¨Ã¶CA¨Ã�, ¨ù¡¾©Ã¶Â¡Ã†¨Ã¶CA¨Ã�, ¢¬¢Ã’AI¢¬¢çAo¢¬| ¡¾i¨Ãº©¬ CI¢¥A¡¾¢¬¢¬¢¬.
-- ¢¥U, ¢¬¢Ã’AI¢¬¢çAo¢¥A ¢¯E¨ùCAI¢¥U.

-- A©Ã¸¢¬?AIAC JID¢¬| ¨Ãºo¨Ãºi¢¯A©Ã¸E¢Ã’o.
declare @JID int
select top 1 @JID = UserJID from _User
where CharID = @PC_ID
IF (@@ROWCOUNT = 0 OR @@ERROR <> 0)
BEGIN
RETURN -2006
END

DECLARE @PackageItemID int
select @PackageItemID = ID from dbo._RefPackageItem where codename128 = @PackageItemCodeName

DECLARE @rvalue int
-- EXEC @rvalue = SRO_VT_ACCOUNT.DBO._ConsumeSilkByGameServer @JID, @OwnSilkToPay OUTPUT, @GiftSilkToPay OUTPUT, @MileageToPay output, 1, @CharID
EXEC @rvalue = SRO_VT_ACCOUNT.DBO._ConsumeSilkByGameServer @JID, @OwnSilkToPay OUTPUT, @GiftSilkToPay OUTPUT, @MileageToPay output, 0, @CharID, @PackageItemID , 0

IF (@rvalue < 0 OR @@ERROR <> 0)
BEGIN
RETURN -2012
END
--------------------------
--<< 1. ¨ùoA¢´ Au AU¥Ã¬a >> -- AOE*
--------------------------
-- -- ¡ÆOAO ¨ù*©Ã¶oAE¢¯¢®¨ù* ¡Æ¡Ã*¨Ã¶A ©Ã¶ÃžÂ¡¾a A¡×C¨Âª cost ¡Æ¨£A¡Ã* ¡Æa¡Æu A¡¿AI¨¬i¢¯¢® ©Ã¸O¨Ãºi¥Ã¬Ã�¢¥U.
-- insert into _ResultOfPackageItemToMappingWithServerSide
-- values (@Operation, @CharID, 255, @OwnSilkToPay, 2, 0, 1)
--
-- if (@@ERROR <> 0 or @@ROWCOUNT = 0)
-- begin
-- return -2007
-- end
--
-- insert into _ResultOfPackageItemToMappingWithServerSide
-- values (@Operation, @CharID, 254,@GiftSilkToPay, 4, 0, 1)
--
-- if (@@ERROR <> 0 or @@ROWCOUNT = 0)
-- begin
-- return -2007
-- end
--
-- insert into _ResultOfPackageItemToMappingWithServerSide
-- values (@Operation, @CharID, 253,@MileageToPay, 16, 0, 1)
--------------------------
--<< 1. ¨ùoA¢´ EA AU¥Ã¬a >> --
--------------------------
-- ¡ÆOAO ¨ù*©Ã¶oAE¢¯¢®¨ù* ¡Æ¡Ã*¨Ã¶A ©Ã¶ÃžÂ¡¾a A¡×C¨Âª cost ¡Æ¨£A¡Ã* ¡Æa¡Æu A¡¿AI¨¬i¢¯¢® ©Ã¸O¨Ãºi¥Ã¬Ã�¢¥U.
insert into _ResultOfPackageItemToMappingWithServerSide
values (@Operation, @CharID, 255, @OwnSilkToPay, 2, 0, 1, 0)

if (@@ERROR <> 0 or @@ROWCOUNT = 0)
begin
return -2007
end

insert into _ResultOfPackageItemToMappingWithServerSide
values (@Operation, @CharID, 254,@GiftSilkToPay, 4, 0, 1, 0)

if (@@ERROR <> 0 or @@ROWCOUNT = 0)
begin
return -2007
end

insert into _ResultOfPackageItemToMappingWithServerSide
values (@Operation, @CharID, 253,@MileageToPay, 16, 0, 1, 0)


----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------

if (@@ERROR <> 0 or @@ROWCOUNT = 0)
begin
return -2007
end
end

-- gold
if ((@PaymentDevice & 1) > 0)
begin
UPDATE _Char SET RemainGold = @RemainGold WHERE CharID = @PC_ID
IF (@@ERROR <> 0 OR @@ROWCOUNT = 0)
BEGIN
RETURN -2003
END
end

-- guildpoint
if ((@PaymentDevice & 8) > 0)
BEGIN
-- ¡¾©Â¡¥Ã¬a¢¬| ¨ÃºE¨Ãº¨Â¡¢¯I¢Ã’o.
declare @GuildID int
select @GuildID = GuildID from _GuildMember
where CharID = @PC_ID

IF (@@ERROR <> 0 OR @@ROWCOUNT = 0)
BEGIN
RETURN -2004
END

-- ¡¾©Â¡¥Ã¬a ¨Â¡Â¡Ã€AI¨Â¡¢ç ¡¾i¢Ã’o.
update _Guild set GatheredSP = GatheredSP - @OffsetOptionalPoint
where GatheredSP >= @OffsetOptionalPoint and ID = @GuildID

IF (@@ERROR <> 0 OR @@ROWCOUNT = 0)
BEGIN
/*
-- ¨Ãº©ÂªA¡Ã*¨ùo¥Ã¬¥Ã¬ AO¢¥A¡ÆA¢¥U.

-- by novice. 2010-01-15 ¢¯¢®Â¡¤?AU¥Ã¬a ¥Ã¬Â¡Ã�AIAICu E¢çAa
-- ¢¯©ÂªÂ¡¤¢® AO¨ù¢ç¥Ã¬C¨Ãºi AO¢¥©Âª AU¥Ã¬aAIAo¢¬¢¬, A©¬EA ¡Æ©Ã¸©Ã¶©¬CI¢¥A ¡Ã*c¢Ã’¡À¥Ã¬eAI
-- ¨ùoA¢´¥Ã¬CAo ¨ÃºEA¨¬ ©Ã¸Â¡Ã*¢¯eA¡Ã* ¨¬¢¬Â¡Ã†i E¡Ã�¢Ã’o¨Ã¶¨¬Â¡¤?¢¯o CO ¨ùo AO¨Ãºi¨ù*
-- AI ¨¬I¨¬Ã�¡¾iAo ¨ùoA¢´C¨Âª©Ã¶o¢¬©÷!
-- declare @Slot tinyint
declare @Slot int
declare @RefItemSerial64 bigint
declare @RefItemDBID bigint
declare @RefItemID int
declare @Type tinyint

-- by novice. 2010-01-15 ¢¯¢®Â¡¤?AU¥Ã¬a ¥Ã¬Â¡Ã�AIAICu E¢çAa
-- set @Slot = 0xd0 -- error_num ¨ù*©Ã¶o¢¯¢®¨ù* ¡Ã*c¢¯eCI¢¥A ¢¯¢®Â¡¤?

-- MAKE_SRO_SP_ERR_TYPE( _UPDATE_COST, 0x0004);
-- DEFINE_SRO_SP_ERR( SRO_SP_ERR_NOT_ENOUGH_GUILD_POINT, _UPDATE_COST, 0x8001 ); // ==> 0x80010004
-- BIND_SRO_SP_ERR_TO_SRO_ERR( SRO_SP_ERR_NOT_ENOUGH_GUILD_POINT, STRGERR_NOT_ENOUGH_GUILDPOINT );
set @Slot = 0x80010004 -- error_num ¨ù*©Ã¶o¢¯¢®¨ù* ¡Ã*c¢¯eCI¢¥A ¢¯¢®Â¡¤?
set @RefItemSerial64 = 0
set @RefItemDBID = 0
set @RefItemID = 0
set @Type = 2
select @Operation, @Slot, @RefItemSerial64, @RefItemDBID, @RefItemID, @Type
*/
RETURN -2005
END
--------------------------
--<< 2. ¨ùoA¢´ Au AU¥Ã¬a >> --
--------------------------
-- ¡ÆOAO ¨ù*©Ã¶oAE¢¯¢®¨ù* ¡Æ¡Ã*¨Ã¶A ©Ã¶ÃžÂ¡¾a A¡×C¨Âª cost ¡Æ¨£A¡Ã* ¡Æa¡Æu A¡¿AI¨¬i¢¯¢® ©Ã¸O¨Ãºi¥Ã¬Ã�¢¥U.
-- insert into _ResultOfPackageItemToMappingWithServerSide
-- values (@Operation, @CharID, 252, @OffsetOptionalPoint, 8, 0, 1)
--------------------------
--<< 2. ¨ùoA¢´ EA AU¥Ã¬a >> --
--------------------------
-- ¡ÆOAO ¨ù*©Ã¶oAE¢¯¢®¨ù* ¡Æ¡Ã*¨Ã¶A ©Ã¶ÃžÂ¡¾a A¡×C¨Âª cost ¡Æ¨£A¡Ã* ¡Æa¡Æu A¡¿AI¨¬i¢¯¢® ©Ã¸O¨Ãºi¥Ã¬Ã�¢¥U.
insert into _ResultOfPackageItemToMappingWithServerSide
values (@Operation, @CharID, 252, @OffsetOptionalPoint, 8, 0, 1, 0)


----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------

if (@@ERROR <> 0 or @@ROWCOUNT = 0)
begin
return -2007
end
end

-- honorpoint
else if ((@PaymentDevice & 32) > 0)
begin
-- honorpoint ¡¾i¢Ã’o.
update _TrainingCampMember set HonorPoint = HonorPoint - @OffsetOptionalPoint
where HonorPoint >= @OffsetOptionalPoint and CharID = @PC_ID

if (@@ERROR <> 0 or @@ROWCOUNT = 0)
begin
return -2006
end
--------------------------
--<< 3. ¨ùoA¢´ Au AU¥Ã¬a >> --
--------------------------
-- ¡ÆOAO ¨ù*©Ã¶oAE¢¯¢®¨ù* ¡Æ¡Ã*¨Ã¶A ©Ã¶ÃžÂ¡¾a A¡×C¨Âª cost ¡Æ¨£A¡Ã* ¡Æa¡Æu A¡¿AI¨¬i¢¯¢® ©Ã¸O¨Ãºi¥Ã¬Ã�¢¥U.
-- insert into _ResultOfPackageItemToMappingWithServerSide
-- values (@Operation, @CharID, 252, @OffsetOptionalPoint, 32, 0, 1)

--------------------------
--<< 3. ¨ùoA¢´ EA AU¥Ã¬a >> --
--------------------------
-- ¡ÆOAO ¨ù*©Ã¶oAE¢¯¢®¨ù* ¡Æ¡Ã*¨Ã¶A ©Ã¶ÃžÂ¡¾a A¡×C¨Âª cost ¡Æ¨£A¡Ã* ¡Æa¡Æu A¡¿AI¨¬i¢¯¢® ©Ã¸O¨Ãºi¥Ã¬Ã�¢¥U.
insert into _ResultOfPackageItemToMappingWithServerSide
values (@Operation, @CharID, 252, @OffsetOptionalPoint, 32, 0, 1, 0)


----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------

if (@@ERROR <> 0 or @@ROWCOUNT = 0)
begin
return -2007
end
end

SET NOCOUNT OFF


return 1

--@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
--@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@




ÑÏ ãÚ ÇÞÊÈÇÓ