قسم الشروحات و البرامج المستخدمة في عمل السيرفرات الخاصة[ قسم متخصص فى شروحات و البرامج في عمل السيرفرات الخاصة ] [ يرجى عدم وضع الأسئلة والاستفسارات في هذا القسم ]
ندخل ف الموضوع علطول اكيد الموضوع مفهوم من العنوان وهيفيد السيرفرات ال Based On Job وهيبقا كويس لما تفتح Job Lv ل 120 مثلا مش هطول عليكوو الموضوع كلة عبارة عن 2 Query هتعملهم ومبروك عليك
_TRAINING_CAMP_UPDATEHONORRANK
كود:
USE SRO_VT_SHARD
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[_TRAINING_CAMP_UPDATEHONORRANK]
AS
Declare @CampID int
Declare @CharID int
declare @index int
declare @Rank int
declare @ID int
SET @index =0
SET @ID =0
update _TrainingCampHonorRank set Rank =null,CampID =null
/* --------------------Trader------------------*/
DECLARE RankCursor CURSOR FAST_FORWARD FOR
SELECT TOP 30 CharID FROM _CharTrijob WITH (NOLOCK)
WHERE JobType =1 and Level >=5
ORDER BY Exp DESC, Level desc
OPEN RankCursor
FETCH NEXT FROM RankCursor INTO @CharID
WHILE @@FETCH_STATUS = 0
BEGIN
select @CampID = CampID from _TrainingCampMember where CharID =@CharID
IF (@@ROWCOUNT > 0)
BEGIN
set @ID = @ID +1
set @index = @index +1
IF (@index between 1 and 5)
BEGIN
SET @Rank = 1
END
ELSE IF(@index between 6 and 10)
BEGIN
SET @Rank = 2
END
ELSE IF(@index between 11 and 20)
BEGIN
SET @Rank = 3
END
ELSE IF(@index between 21 and 30)
BEGIN
SET @Rank = 4
END
update _TrainingCamp set Rank= @Rank where ID =@CampID
update _TrainingCampHonorRank set Rank =@Rank,CampID =@CampID where Ranking = @ID
END
FETCH NEXT FROM RankCursor INTO @CharID
END
CLOSE RankCursor
DEALLOCATE RankCursor
SET @index =0
set @CharID =0
set @CampID =0
/* --------------------Thief------------------*/
DECLARE RankCursor CURSOR FAST_FORWARD FOR
SELECT TOP 30 CharID FROM _CharTrijob WITH (NOLOCK)
WHERE JobType =2 and Level >=5
ORDER BY Exp DESC, Level desc
OPEN RankCursor
FETCH NEXT FROM RankCursor INTO @CharID
WHILE @@FETCH_STATUS = 0
BEGIN
select @CampID = CampID from _TrainingCampMember where CharID =@CharID
IF (@@ROWCOUNT > 0)
BEGIN
set @ID = @ID +1
set @index = @index +1
IF (@index between 1 and 5)
BEGIN
SET @Rank = 1
END
ELSE IF(@index between 6 and 10)
BEGIN
SET @Rank = 2
END
ELSE IF(@index between 11 and 20)
BEGIN
SET @Rank = 3
END
ELSE IF(@index between 21 and 30)
BEGIN
SET @Rank = 4
END
update _TrainingCamp set Rank= @Rank where ID =@CampID
update _TrainingCampHonorRank set Rank =@Rank,CampID =@CampID where Ranking = @ID
END
FETCH NEXT FROM RankCursor INTO @CharID
END
CLOSE RankCursor
DEALLOCATE RankCursor
SET @index =0
set @CharID =0
set @CampID =0
/* --------------------Hunter------------------*/
DECLARE RankCursor CURSOR FAST_FORWARD FOR
SELECT TOP 30 CharID FROM _CharTrijob WITH (NOLOCK)
WHERE JobType =3 and Level >=5
ORDER BY Exp DESC, Level desc
OPEN RankCursor
FETCH NEXT FROM RankCursor INTO @CharID
WHILE @@FETCH_STATUS = 0
BEGIN
select @CampID = CampID from _TrainingCampMember where CharID =@CharID
IF (@@ROWCOUNT > 0)
BEGIN
set @ID = @ID +1
set @index = @index +1
IF (@index between 1 and 5)
BEGIN
SET @Rank = 1
END
ELSE IF(@index between 6 and 10)
BEGIN
SET @Rank = 2
END
ELSE IF(@index between 11 and 20)
BEGIN
SET @Rank = 3
END
ELSE IF(@index between 21 and 30)
BEGIN
SET @Rank = 4
END
update _TrainingCamp set Rank= @Rank where ID =@CampID
update _TrainingCampHonorRank set Rank =@Rank,CampID =@CampID where Ranking = @ID
END
FETCH NEXT FROM RankCursor INTO @CharID
END
CLOSE RankCursor
DEALLOCATE RankCursor
RETURN 1