Junior Spellweaver
- Joined
- Oct 31, 2007
- Messages
- 192
- Reaction score
- 58
Code:
ALTER PROC [dbo].[USP_TREASURE_POINT] (
@MAP_ID INT --맵아이디
, @SCORE INT --게임 SCORE
, @EQUIP_DROP1 INT --드랍율
, @EQUIP_DROP2 INT
, @INTVAL INT = 1 -- DEFAULT (1 HOUR)
) -- WITH ENCRYPTION
AS
BEGIN
/*******************************************************
** 트레져 포인트 계산
** EXEC DBO.USP_TREASURE_POINT 3, -2, 2.1, 1
*******************************************************/
SET NOCOUNT ON
--
-- SELECT @MAP_ID = 3
-- , @SCORE = -2
-- , @EQUIP_DROP = 2.1
-- , @INTVAL = 1
IF OBJECT_ID('TEMPDB..#TREASURE_STAT') IS NOT NULL
DROP TABLE #TREASURE_STAT
CREATE TABLE #TREASURE_STAT (MAP_ID INT, CT INT, RT NUMERIC(5, 2))
INSERT INTO #TREASURE_STAT (MAP_ID, CT, RT)
EXEC DBO.USP_TREASURE_GAGE 1
-- SELECT
-- MAP_ID, CT, RT
-- FROM
-- DBO.TD_TREASURE_STAT
-- WHERE
-- MOD_SEQ = (SELECT MAX(MOD_SEQ) FROM DBO.TD_TREASURE_STAT WHERE USE_YN = 'Y')
DECLARE @EQUIP_DROP NUMERIC(5,2)
SELECT @EQUIP_DROP = CAST(CAST(@EQUIP_DROP1 AS VARCHAR(2)) + '.' + CAST(@EQUIP_DROP2 AS VARCHAR(2)) AS NUMERIC(5,2))
SELECT
TREASURE_POINT = CAST(ROUND((F.BASIC_TREASURE_POINT + @EQUIP_DROP) * (E.TREASURE_RT + E.TREASURE_ADD_RT), 0) AS INT)
FROM
(
SELECT
C.MAP_ID
, C.DIFFICULT
, C.TREASURE_ADD_RT
, C.TREASURE_BOX
, C.C_RT
, D.TREASURE_RT
FROM
(
SELECT
MAP_ID = A.MAP_NO
, A.DIFFICULT
, A.TREASURE_ADD_RT
, A.TREASURE_BOX
, C_RT = ISNULL(B.C_RT, 0)
FROM
(
SELECT
MAP_NO
, DIFFICULT
, TREASURE_ADD_RT
, TREASURE_BOX
FROM
TA_TREASURE_COURSE
WHERE
MAP_NO = @MAP_ID
AND USE_YN = 'Y'
) A
LEFT OUTER JOIN
(SELECT
MAP_ID
, CT
, RT
, C_RT = CAST(ROUND(RT + .5, 2) AS INT)
FROM #TREASURE_STAT
WHERE MAP_ID = @MAP_ID
) B
ON A.MAP_NO = B.MAP_ID
) C
INNER JOIN UVW_TREASURE_RT D
ON C.C_RT BETWEEN D.S_GAGE AND D.E_GAGE
) E
CROSS JOIN (
SELECT * FROM TA_TREASURE_HOLE
WHERE USE_YN = 'Y'
AND SCORE = @SCORE) F
SET NOCOUNT OFF
END
There you go cody, a workaround. Does work for me though.