[Help] Honor Ranking aka Job Ranking

11/23/2016 21:58 Dragonz2105#1
Hello experts

well im doing honor ranking to show the jobbers top kills based on Graduate count

every kill = graduate

but somehow ingame Ranking didnt show the right grad count on the db ?

here is the [_TRAINING_CAMP_UPDATEHONORRANK] SP

PHP Code:
ALTER PROCEDURE [dbo].[_TRAINING_CAMP_UPDATEHONORRANK]
AS
    
SET NOCOUNT ON

    
-- ÀÏ´Ü ·©Å· Å×À̺íÀ» ¼¼ÆÃÇÑ´Ù.
    DECLARE [
MENTION=1452052]ranking[/MENTION]    INT
    SET 
[MENTION=1452052]ranking[/MENTION] = 1

    
DECLARE [MENTION=320029]campi[/MENTION]D    INT
    
DECLARE [MENTION=955363]rank[/MENTION]    TINYINT

BEGIN TRANSACTION

    
    SELECT TOP 10 
[IDFROM _TrainingCamp WITH (NOLOCK)
    
WHERE GraduateCount >= 15
    ORDER BY GraduateCount DESC
EvaluationPoint DESC

    
-- ÀÏ´Ü Àüü ·©Å·À» ¾øÀ½À¸·Î Ç¥½ÃÇÏÀÚ.
    
UPDATE _TrainingCamp SET Rank 5 WHERE Rank <> 5
    
IF (@@ERROR <> 0)
    
BEGIN
        ROLLBACK TRANSACTION

        DEALLOCATE RankCursor
        
RETURN -1
    END

    
-- ·©Å· Å×ÀÌºíµµ ÃʱâÈ*ÇÏÀÚ.
    
UPDATE _TrainingCampHonorRank SET CampID nullRank null
    
IF (@@ERROR <> 0)
    
BEGIN
        ROLLBACK TRANSACTION

        DEALLOCATE RankCursor
        
RETURN -1
    END

    OPEN RankCursor
    FETCH NEXT FROM RankCursor INTO 
[MENTION=320029]campi[/MENTION]D
    
WHILE @@FETCH_STATUS 0
    BEGIN
        
IF [MENTION=1452052]ranking[/MENTION] <= 5
        BEGIN
            SET 
[MENTION=955363]rank[/MENTION] = 1
        END
        
ELSE IF [MENTION=1452052]ranking[/MENTION] <= 15
        BEGIN
            SET 
[MENTION=955363]rank[/MENTION] = 2
        END
        
ELSE IF [MENTION=1452052]ranking[/MENTION] <= 30
        BEGIN
            SET 
[MENTION=955363]rank[/MENTION] = 3
        END
        
ELSE
        
BEGIN
            SET 
[MENTION=955363]rank[/MENTION] = 4
        END

        UPDATE _TrainingCamp SET Rank 
= [MENTION=955363]rank[/MENTIONWHERE [ID] = [MENTION=320029]campi[/MENTION]D    
        
IF (@@ERROR <> OR @@ROWCOUNT 0)
        
BEGIN
            ROLLBACK TRANSACTION
            CLOSE RankCursor
            DEALLOCATE RankCursor

            
RETURN -2
        END
        UPDATE _TrainingCampHonorRank SET CampID 
= [MENTION=320029]campi[/MENTION]DRank = [MENTION=955363]rank[/MENTIONWHERE Ranking = [MENTION=1452052]ranking[/MENTION]    
        IF (@@
ERROR <> OR @@ROWCOUNT 0)
        
BEGIN
            ROLLBACK TRANSACTION
            CLOSE RankCursor
            DEALLOCATE RankCursor

            
RETURN -3
        END 
        
        SET 
[MENTION=1452052]ranking[/MENTION] = [MENTION=1452052]ranking[/MENTION] + 1

        FETCH NEXT FROM RankCursor INTO 
[MENTION=320029]campi[/MENTION]D
    END

    CLOSE RankCursor
    DEALLOCATE RankCursor

    
-- ¸¶Áö¸·À¸·Î °»½ÅÇÑ ³¯Â¥¸¦ Àû¾îº¸ÀÚ!!!
    IF 
EXISTS (SELECT LastUpdateDate FROM _TrainingCampHonorRankUpdateDate)
    
BEGIN
        UPDATE _TrainingCampHonorRankUpdateDate SET LastUpdateDate 
GETDATE()
    
END
    
ELSE
    
BEGIN
        INSERT INTO _TrainingCampHonorRankUpdateDate VALUES 
(GETDATE())
    
END

    
IF (@@ERROR <> OR @@ROWCOUNT 0)
    
BEGIN
        ROLLBACK TRANSACTION
        
RETURN -4
    END

COMMIT TRANSACTION

    SET NOCOUNT OFF

    
RETURN 
12/31/2016 18:04 leo2111#2
up
01/02/2017 23:10 ​Exo#3
As far as I remember the ingame ranking doesn't show up-to-date counts. You have to restart the gs to see the new values. And no, there's no easy solution to that.