To fix that stupid error message that say you can't buy anything with that is 0 bounty when you have no bounty, you would need to make the database stored procedures table do something. If those already knew about this, good for you, pricks. Thanks for not sharing. If this doesn't work for you, all I know is that it is the sources.
You would have this in your dbo.spBuyBountyItemCode:USE [GunzDB] GO /****** Object: StoredProcedure [dbo].[spBuyBountyItem] Script Date: 1/10/2013 3:36:39 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER PROC [dbo].[spBuyBountyItem] -- ALTER PROC dbo.spBuyBountyItem @CID INT, @ItemID INT, @ItemCount INT, @Price INT, @IsSpendableItem INT, @RentHourPeriod INT = NULL AS BEGIN SET NOCOUNT ON DECLARE @Bounty INT; DECLARE @OrderCIID INT; DECLARE @Cnt INT; IF( @RentHourPeriod IS NULL ) BEGIN SET @RentHourPeriod = 0; END DECLARE @CurDate DATETIME; SET @CurDate = GETDATE(); BEGIN TRAN ---------------------------- -- Àܾװ˻ç => Bounty °¨¼Ò UPDATE dbo.Character SET BP = BP - @Price WHERE CID = @CID AND (BP - @Price > 0); IF( 0 <> @@ERROR OR 0 = @@ROWCOUNT ) BEGIN ROLLBACK TRAN SELECT -1 AS 'Ret' RETURN; END IF( @IsSpendableItem = 1 ) BEGIN -- ÀÌ¹Ì °®°í ÀÖ´ÂÁö È®ÀÎÇØº»´Ù. SELECT @OrderCIID = CIID FROM CharacterItem(NOLOCK) WHERE CID = @CID AND ItemID = @ItemID; -- ÀÌ¹Ì °®°í ÀÖÁö ¾Ê´Ù¸é »õ·Î Ãß°¡ÇØÁØ´Ù. IF( @OrderCIID IS NOT NULL ) BEGIN UPDATE dbo.CharacterItem -- Item Ãß°¡ SET Cnt = Cnt + @ItemCount WHERE CIID = @OrderCIID AND CID = @CID; IF( 0 <> @@ERROR OR 0 = @@ROWCOUNT ) BEGIN ROLLBACK TRAN SELECT -2 AS 'Ret' RETURN; END END ELSE BEGIN INSERT INTO CharacterItem (CID, ItemID, RegDate, RentDate, RentHourPeriod, Cnt) Values (@CID, @ItemID, @CurDate, @CurDate, @RentHourPeriod, @ItemCount) IF( 0 <> @@ERROR OR 0 = @@ROWCOUNT ) BEGIN ROLLBACK TRAN SELECT -3 AS 'Ret' RETURN; END SELECT @OrderCIID = @@IDENTITY; END END ELSE BEGIN INSERT dbo.CharacterItem (CID, ItemID, RegDate, RentDate, RentHourPeriod, Cnt) Values (@CID, @ItemID, @CurDate, @CurDate, @RentHourPeriod, @ItemCount) SELECT @OrderCIID = @@IDENTITY; IF( 0 <> @@ERROR OR 0 = @@ROWCOUNT ) BEGIN ROLLBACK TRAN SELECT -4 AS 'Ret' RETURN; END END -- Item ±¸¸Å·Î±× Ãß°¡ INSERT INTO ItemPurchaseLogByBounty (ItemID, CID, Date, Bounty, CharBounty, Type) VALUES (@ItemID, @CID, @CurDate, @Price, @Bounty, '±¸ÀÔ') IF( 0 <> @@ERROR OR 0 = @@ROWCOUNT ) BEGIN ROLLBACK TRAN SELECT -5 AS 'Ret' RETURN; END COMMIT TRAN ---------------------------- SELECT 0 AS 'Ret', @OrderCIID AS 'ORDERCIID' END ---------------------------------------------------------------------------------------------------------------------------------------- -- º¹±¸ Äõ¸® /* DROP PROC spBuyBountyItem EXEC sp_rename 'BackUp_spBuyBountyItem', 'spBuyBountyItem' */
Go to the part where it says "(BP - @Price > 0)" and add a "=" after the ">"
Show it should look something like this:
CreditsCode:USE [GunzDB] GO /****** Object: StoredProcedure [dbo].[spBuyBountyItem] Script Date: 1/10/2013 3:36:39 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER PROC [dbo].[spBuyBountyItem] -- ALTER PROC dbo.spBuyBountyItem @CID INT, @ItemID INT, @ItemCount INT, @Price INT, @IsSpendableItem INT, @RentHourPeriod INT = NULL AS BEGIN SET NOCOUNT ON DECLARE @Bounty INT; DECLARE @OrderCIID INT; DECLARE @Cnt INT; IF( @RentHourPeriod IS NULL ) BEGIN SET @RentHourPeriod = 0; END DECLARE @CurDate DATETIME; SET @CurDate = GETDATE(); BEGIN TRAN ---------------------------- -- Àܾװ˻ç => Bounty °¨¼Ò UPDATE dbo.Character SET BP = BP - @Price WHERE CID = @CID AND (BP - @Price >= 0); IF( 0 <> @@ERROR OR 0 = @@ROWCOUNT ) BEGIN ROLLBACK TRAN SELECT -1 AS 'Ret' RETURN; END IF( @IsSpendableItem = 1 ) BEGIN -- ÀÌ¹Ì °®°í ÀÖ´ÂÁö È®ÀÎÇØº»´Ù. SELECT @OrderCIID = CIID FROM CharacterItem(NOLOCK) WHERE CID = @CID AND ItemID = @ItemID; -- ÀÌ¹Ì °®°í ÀÖÁö ¾Ê´Ù¸é »õ·Î Ãß°¡ÇØÁØ´Ù. IF( @OrderCIID IS NOT NULL ) BEGIN UPDATE dbo.CharacterItem -- Item Ãß°¡ SET Cnt = Cnt + @ItemCount WHERE CIID = @OrderCIID AND CID = @CID; IF( 0 <> @@ERROR OR 0 = @@ROWCOUNT ) BEGIN ROLLBACK TRAN SELECT -2 AS 'Ret' RETURN; END END ELSE BEGIN INSERT INTO CharacterItem (CID, ItemID, RegDate, RentDate, RentHourPeriod, Cnt) Values (@CID, @ItemID, @CurDate, @CurDate, @RentHourPeriod, @ItemCount) IF( 0 <> @@ERROR OR 0 = @@ROWCOUNT ) BEGIN ROLLBACK TRAN SELECT -3 AS 'Ret' RETURN; END SELECT @OrderCIID = @@IDENTITY; END END ELSE BEGIN INSERT dbo.CharacterItem (CID, ItemID, RegDate, RentDate, RentHourPeriod, Cnt) Values (@CID, @ItemID, @CurDate, @CurDate, @RentHourPeriod, @ItemCount) SELECT @OrderCIID = @@IDENTITY; IF( 0 <> @@ERROR OR 0 = @@ROWCOUNT ) BEGIN ROLLBACK TRAN SELECT -4 AS 'Ret' RETURN; END END -- Item ±¸¸Å·Î±× Ãß°¡ INSERT INTO ItemPurchaseLogByBounty (ItemID, CID, Date, Bounty, CharBounty, Type) VALUES (@ItemID, @CID, @CurDate, @Price, @Bounty, '±¸ÀÔ') IF( 0 <> @@ERROR OR 0 = @@ROWCOUNT ) BEGIN ROLLBACK TRAN SELECT -5 AS 'Ret' RETURN; END COMMIT TRAN ---------------------------- SELECT 0 AS 'Ret', @OrderCIID AS 'ORDERCIID' END ---------------------------------------------------------------------------------------------------------------------------------------- -- º¹±¸ Äõ¸® /* DROP PROC spBuyBountyItem EXEC sp_rename 'BackUp_spBuyBountyItem', 'spBuyBountyItem' */
- Me - Figuring it out with a test client
Note: It can be either the database or the source files that doesn't allow you to buy 0 bounty items when you have no bounty. Also this is for those who uses a non-edited dbo.spBuyBountyItem, not dbo.spBuyBountyItem2.






