Hey you can edit this script
USE [PS_GameData]
GO
/****** Object: StoredProcedure [dbo].[usp_Save_Char_Kills_Rewards] Script Date: 09/20/2012 21:42:42 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER Proc [dbo].[usp_Save_Char_Kills_Rewards]
@

ID tinyint, @

varchar(12),
@K1 int
AS
SET NOCOUNT ON
@DP INT
if(@k1> 999 AND @k1< 1000000)
SET @DP =(
CASE
WHEN @k1 = 1000 THEN 25
WHEN @k1 = 2000 THEN 50
ELSE @DP
END)
BEGIN
UPDATE PS_UserData.dbo.Users_Master SET Point = Point + @DP WHERE UserID = @

END
IF(@@ERROR = 0)
BEGIN
RETURN 1
END
ELSE
BEGIN
RETURN -1
END
SET NOCOUNT OFF
Code:
SET @

= ' 100'
SELECT @

ID=U.UserUID, @

=U.UserID
FROM PS_GameData.dbo.Chars AS C INNER JOIN PS_UserData.dbo.Users_Master AS U
ON C.UserUID = U.UserUID AND C.UserID = U.UserID
WHERE C.CharName = @

AND C.Del=0;
ELSE
BEGIN
SET @

Point=(SELECT Point FROM PS_UserData.dbo.Users_Master WHERE UserUID @

ID)
UPDATE PS_UserData.dbo.Users_Master
SET Point=(Point @

)
WHERE UserUID @

ID
SET @

=(SELECT Point FROM PS_UserData.dbo.Users_Master WHERE UserUID @

ID)SET @

= ' 100'
SELECT @

ID=U.UserUID, @

=U.UserID
FROM PS_GameData.dbo.Chars AS C INNER JOIN PS_UserData.dbo.Users_Master AS U
ON C.UserUID = U.UserUID AND C.UserID = U.UserID
WHERE C.CharName = @

AND C.Del=0;
ELSE
BEGIN
SET @

Point=(SELECT Point FROM PS_UserData.dbo.Users_Master WHERE UserUID @

ID)
UPDATE PS_UserData.dbo.Users_Master
SET Point=(Point @

)
WHERE UserUID @

ID
SET @

=(SELECT Point FROM PS_UserData.dbo.Users_Master WHERE UserUID @

ID)
Credit's To JuuF
You need to add more "if" statements if you want to do it per rank though, this is what you have here:
Code:
@DP INT
if(@k1> 999 AND @k1< 1000000)
SET @DP =(
CASE
WHEN @k1 = 1000 THEN 25
WHEN @k1 = 2000 THEN 50
ELSE @DP
END)
Quote:
Originally Posted by [DEV]Wan
Hey you can edit this script
USE [PS_GameData]
GO
/****** Object: StoredProcedure [dbo].[usp_Save_Char_Kills_Rewards] Script Date: 09/20/2012 21:42:42 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER Proc [dbo].[usp_Save_Char_Kills_Rewards]
@  ID tinyint, @  varchar(12),
@K1 int
AS
SET NOCOUNT ON
@DP INT
if(@k1> 999 AND @k1< 1000000)
SET @DP =(
CASE
WHEN @k1 = 1000 THEN 25
WHEN @k1 = 2000 THEN 50
ELSE @DP
END)
BEGIN
UPDATE PS_UserData.dbo.Users_Master SET Point = Point + @DP WHERE UserID = @ 
END
IF(@@ERROR = 0)
BEGIN
RETURN 1
END
ELSE
BEGIN
RETURN -1
END
SET NOCOUNT OFF
Code:
SET @  = ' 100'
SELECT @  ID=U.UserUID, @  =U.UserID
FROM PS_GameData.dbo.Chars AS C INNER JOIN PS_UserData.dbo.Users_Master AS U
ON C.UserUID = U.UserUID AND C.UserID = U.UserID
WHERE C.CharName = @  AND C.Del=0;
ELSE
BEGIN
SET @  Point=(SELECT Point FROM PS_UserData.dbo.Users_Master WHERE UserUID @  ID)
UPDATE PS_UserData.dbo.Users_Master
SET Point=(Point @  )
WHERE UserUID @  ID
SET @  =(SELECT Point FROM PS_UserData.dbo.Users_Master WHERE UserUID @  ID)SET @  = ' 100'
SELECT @  ID=U.UserUID, @  =U.UserID
FROM PS_GameData.dbo.Chars AS C INNER JOIN PS_UserData.dbo.Users_Master AS U
ON C.UserUID = U.UserUID AND C.UserID = U.UserID
WHERE C.CharName = @  AND C.Del=0;
ELSE
BEGIN
SET @  Point=(SELECT Point FROM PS_UserData.dbo.Users_Master WHERE UserUID @  ID)
UPDATE PS_UserData.dbo.Users_Master
SET Point=(Point @  )
WHERE UserUID @  ID
SET @  =(SELECT Point FROM PS_UserData.dbo.Users_Master WHERE UserUID @  ID)
Credit's To JuuF
You need to add more "if" statements if you want to do it per rank though, this is what you have here:
Code:
@DP INT
if(@k1> 999 AND @k1< 1000000)
SET @DP =(
CASE
WHEN @k1 = 1000 THEN 25
WHEN @k1 = 2000 THEN 50
ELSE @DP
END)
|
If @k1 = 1000
Set @DP = 25
Else if @k1 = 2000
Set @DP = 50T his is a simply arrangement for this, looks better, easier to understand -maybe- and you won't have to worry about the CASE syntax too much; as I see it sort of awkward there.