Welcome!

Join our community of MMO enthusiasts and game developers! By registering, you'll gain access to discussions on the latest developments in MMO server files and collaborate with like-minded individuals. Join us today and unlock the potential of MMO server development!

Join Today!

Treasure point help

Status
Not open for further replies.
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.
 
Newbie Spellweaver
Joined
Mar 29, 2011
Messages
34
Reaction score
7
héhé that was a nice way to do it thanks mate, nice!
 
Status
Not open for further replies.
Back
Top