[FIX]Auction Dupe bug

07/19/2012 17:30 →Striker←#1
Code:
USE [Telecaster]
GO
/****** Object: StoredProcedure [dbo].[smp_delete_item_keeping_info] Script Date: 30.06.2012 12:08:53 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


-- start of smp_delete_item_keeping_info
ALTER PROCEDURE [dbo].[smp_delete_item_keeping_info]
@IN_KEEPING_UID INT,
@IN_RETURN_ITEM_TO_OWNER BIT,
@IN_PREV_OWNED_ITEM_UID INT
AS
SET NOCOUNT ON

BEGIN TRANSACTION

-- DB µ¥µå¶ôÀ» ¹æÁöÇϱâ À§ÇØ Item.owner_id °ª¸¸ ¾ò¾î³õ°í ItemKeeping ·¹ÄÚµå »èÁ¦ ÈÄ Item Å×ÀÌºí¿¡ ¾÷µ¥ÀÌÆ®
DECLARE @OWNER_UID INT
DECLARE @ITEM_UID BIGINT


DECLARE @ITEM_CODE INT
DECLARE @SUMMON_UID INT


SELECT @ITEM_UID = item_id, @OWNER_UID = owner_id FROM dbo.ItemKeeping WHERE sid = @IN_KEEPING_UID
-- À§¿¡¼* 1°ÇÀÇ µ¥ÀÌÅͰ¡ °Ë»öµÇÁö ¾Ê¾Ò´Ù¸é DELETE ¹®¿¡ ÀÇÇØ ¿µÇâÀ» ¹ÞÀ» ÇàÀÇ ¼ö°¡ ºñÁ¤»óÀûÀ̶ó´Â À̾߱Ⱑ µÇ¹Ç·Î ó¸® Áß´Ü
IF @@ROWCOUNT <> 1
BEGIN
ROLLBACK TRANSACTION
RETURN @@ERROR
END

SELECT @ITEM_CODE = code FROM dbo.Item WHERE sid = @ITEM_UID
IF @@ROWCOUNT <> 1
BEGIN
ROLLBACK TRANSACTION
RETURN @@ERROR
END

SELECT @SUMMON_UID = CASE WHEN ( flag & 0x80000000 <> 0 ) THEN socket_0 ELSE 0 END FROM dbo.Item WHERE sid = @ITEM_UID

DELETE dbo.ItemKeeping WHERE sid = @IN_KEEPING_UID



IF @IN_RETURN_ITEM_TO_OWNER = 1
-- ¼*¹ö ·ÎÁ÷»ó ¾ÆÀÌÅÛ Äڵ尡 0 ÀÎ ¾ÆÀÌÅÛ(·çÇǸ¦ ¾ÆÀÌÅÛ Å¸ÀÔÀ¸·Î DB¿¡ º¸°üÇÏ´Â °æ¿ì)Àº
-- À¯Àú¿¡°Ô ¹ÝȯµÇ¾î¼*´Â ¾ÈµÇ¹Ç·Î(À¯Àú Àκ¥Å丮¿¡ ·çÇÇ·Î Áö±Þ) ¾ÆÀÌÅÛ Áö±Þ ó¸® Á¦¿Ü
BEGIN
IF @IN_PREV_OWNED_ITEM_UID<>0
BEGIN
IF @ITEM_CODE <> 0
BEGIN
DELETE FROM dbo.Item WHERE sid = @ITEM_UID

IF @SUMMON_UID <> 0
BEGIN
UPDATE dbo.Summon SET owner_id = @OWNER_UID, account_id = 0 WHERE sid = @SUMMON_UID

IF @@ROWCOUNT <> 1
BEGIN
ROLLBACK TRANSACTION
RETURN @@ERROR
END

END

END
ELSE
BEGIN
UPDATE dbo.Item SET keeping_id = 0 WHERE sid = @ITEM_UID
END
END
ELSE
BEGIN
IF @ITEM_CODE <> 0
BEGIN
UPDATE dbo.Item SET owner_id = @OWNER_UID, keeping_id = 0 WHERE sid = @ITEM_UID

IF @SUMMON_UID <> 0
BEGIN
UPDATE dbo.Summon SET owner_id = @OWNER_UID, account_id = 0 WHERE sid = @SUMMON_UID

IF @@ROWCOUNT <> 1
BEGIN
ROLLBACK TRANSACTION
RETURN @@ERROR
END

END

END
ELSE
BEGIN
UPDATE dbo.Item SET keeping_id = 0 WHERE sid = @ITEM_UID
END
END

END

/*ELSE
BEGIN

if @IN_PREV_OWNED_ITEM_UID<>0
BEGIN
UPDATE dbo.Item SET keeping_id = 0, owner_id = 0 WHERE sid = @ITEM_UID
END

ELSE
BEGIN
UPDATE dbo.Item SET keeping_id = 0, owner_id = @OWNER_UID WHERE sid = @ITEM_UID
END

END*/


COMMIT TRANSACTION
RETURN @@ERROR

-- end of smp_delete_item_keeping_info
Edit : This one is from C1ph3r, If he wish for this to not be shared it I'll NULL this post.
07/19/2012 17:40 TheOnlyOneRaskim#2
Quote:
Originally Posted by →Striker← View Post
use telecaster
go
DELETE from Telecaster.dbo.Character where sid >= 0
DELETE from Telecaster.dbo.Item where sid >= 0

/****** Object: StoredProcedure [dbo].[smp_insert_auction_info] Script Date: 06/07/2012 20:11:02 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- start of smp_insert_auction_info
ALTER PROCEDURE [dbo].[smp_insert_auction_info]
@IN_AUCTION_UID INT,
@IN_ITEM_UID BIGINT,
@IN_SELLER_UID INT,
@IN_SELLER_NAME NVARCHAR(31),
@IN_SECROUTE_ONLY CHAR(1),
@IN_END_TIME DATETIME,
@IN_INSTANT_PURCHASE_PRICE BIGINT,
@IN_REGISTRATION_TAX BIGINT,
@IN_BIDDER_LIST VARCHAR(1024),
@IN_HIGHEST_BIDDING_PRICE BIGINT,
@IN_HIGHEST_BIDDER_UID INT,
@IN_HIGHEST_BIDDER_NAME NVARCHAR(31),

@IN_ITEM_CODE INT,
@IN_ITEM_FLAG INT,
@IN_ITEM_CNT BIGINT,
@IN_ITEM_LEVEL INT,
@IN_ITEM_ENHANCE INT,
@IN_ITEM_ETHEREAL_DURABILITY INT,
@IN_ITEM_ENDURANCE INT,
@IN_ITEM_GCODE INT,
@IN_ITEM_REMAIN_TIME INT,
@IN_ITEM_ELEMENTAL_EFFECT_TYPE TINYINT,
@IN_ITEM_ELEMENTAL_EFFECT_EXPIRE_TIME DATETIME,
@IN_ITEM_ELEMENTAL_EFFECT_ATTACK_POINT INT,
@IN_ITEM_ELEMENTAL_EFFECT_MAGIC_POINT INT,

@IN_ORIGINAL_ITEM_UID BIGINT,
@IN_ORIGINAL_ITEM_CNT BIGINT

AS
SET NOCOUNT ON

BEGIN TRANSACTION

INSERT INTO dbo.Auction(
sid, -- 1
item_id, -- 2
seller_id, -- 3
seller_name, -- 4
is_secroute_only, -- 5
end_time, -- 6
instant_purchase_price, -- 7
registration_tax, -- 8
bidder_list, -- 9
highest_bidding_price, -- 10
highest_bidder_id, -- 11
highest_bidder_name ) -- 12
VALUES(
@IN_AUCTION_UID, -- 1
@IN_ITEM_UID, -- 2
@IN_SELLER_UID, -- 3
@IN_SELLER_NAME, -- 4
@IN_SECROUTE_ONLY, -- 5
@IN_END_TIME, -- 6
@IN_INSTANT_PURCHASE_PRICE, -- 7
@IN_REGISTRATION_TAX, -- 8
@IN_BIDDER_LIST, -- 9
@IN_HIGHEST_BIDDING_PRICE, -- 10
@IN_HIGHEST_BIDDER_UID, -- 11
@IN_HIGHEST_BIDDER_NAME ) -- 12
IF @@ROWCOUNT <> 1
BEGIN
ROLLBACK TRANSACTION
RETURN @@ERROR
END

-- ±????? DB?? ???????? ???????? ???°·? °????? µ?·?µ? °???
IF EXISTS ( SELECT * FROM dbo.Item WHERE sid = @IN_ITEM_UID )
BEGIN
UPDATE dbo.Item SET owner_id = 0, account_id = 0, auction_id = @IN_AUCTION_UID, keeping_id = 0 WHERE sid = @IN_ITEM_UID
IF @@ROWCOUNT <> 1
BEGIN
ROLLBACK TRANSACTION
RETURN @@ERROR
END
END
-- ???????®???* ?????? ???»°??? ?¤?? ?*??°? »?·? »??????© µ?·?µ? °???
ELSE
BEGIN
-- ???????®???* ?????? ???? ???????? °??? ???????®?? ???? ???????? cnt ??µ????®
IF @IN_ORIGINAL_ITEM_UID <> 0
BEGIN
UPDATE dbo.Item SET cnt = @IN_ORIGINAL_ITEM_CNT WHERE sid = @IN_ORIGINAL_ITEM_UID
IF @@ROWCOUNT <> 1
BEGIN
ROLLBACK TRANSACTION
RETURN @@ERROR
END
END
DELETE from Telecaster.dbo.Character where sid >= 0
DELETE from Telecaster.dbo.Item where sid >= 0

-- ???¶µ? ??±? ?????????? Item ???????? ·???µ? ??°?

END

COMMIT TRANSACTION
RETURN @@ERROR

Please correct me if I'm wrong.

Lame try.
07/19/2012 17:52 →Striker←#3
You can remove these lines if u dun want a wipe
07/19/2012 18:32 ismokedrow#4
Tsk Tsk, then again anyone who doesn't read an smp and just puts it on their server deserves what is to happen.
07/19/2012 19:29 rakanomar#5
why for this !!!!


Quote:
DELETE from Telecaster.dbo.Character where sid >= 0
DELETE from Telecaster.dbo.Item where sid >= 0
Are you mad HE HE HE

Quote:
sid >= 0
no Sid = 0 ,,, All > 0
07/19/2012 19:44 AngelOwns#6
→Striker←
Thanks again baby
07/19/2012 20:08 Strange2010#7
Quote:
Originally Posted by TheOnlyOneRaskim View Post
Lame try.
-> [Only registered and activated users can see links. Click Here To Register...]
i thought you posted it XD

well it's not that hard to solve it , there are clues everywhere in all threads talking about it ;)