+Captain Bugunu Fixlemek + SS << ZAGOR >>

AliYaman

New member
Merhaba arkadaşlar Geçenlerde acme bug bildirimlerinde acmede +captain kodunun çalışmadığı yazılmış ve WAR_CAPITAN Prosedürü olsa bile savaş kaptanının seçilmediğini söylemişlerdi. Prosedüre baktım acmeyle veya başka birşeyle alakası olmadığını farkettim.

[HIDE]
Sorunun Olma sebebi :

Knights Tablosunun güncellenmemesi.
Rank_Knights Prosedürünün Bozuk olması[/HIDE]


Sorunu Çözelim :

Önce War_Capitan Prosedürümüzü girelim.[Kodu Girişte Hata Atarsa Create Yazan bölüme ALTER Yazın düzelecektir ! ]



[HIDE]
Kod:
CREATE PROCEDURE WAR_CAPITAN
@UserId varchar(21),
@Nrow int
AS

DECLARE @Race int,@Nation int

Select @Race = Race From USERDATA Where strUserId = @UserId
Select @Nation = Nation From USERDATA Where strUserId = @UserId

--KO-FOX
IF @Race = 1 and @Nrow = 1
BEGIN
Update USERDATA Set Race = 5 Where strUserId = @UserId
END	
ELSE IF @Race = 2 and @Nrow = 1
BEGIN
Update USERDATA Set Race = 6 Where strUserId = @UserId
END	
ELSE IF @Race = 3 and @Nrow = 1
BEGIN
Update USERDATA Set Race = 7 Where strUserId = @UserId
END	
ELSE IF @Race = 4 and @Nrow = 1
BEGIN
Update USERDATA Set Race = 8 Where strUserId = @UserId
END	
ELSE IF @Race = 11 and @Nrow = 1
BEGIN
Update USERDATA Set Race = 14 Where strUserId = @UserId
END
ELSE IF @Race = 12 and @Nrow = 1
BEGIN
Update USERDATA Set Race = 15 Where strUserId = @UserId
END
ELSE IF @Race = 13 and @Nrow = 1
BEGIN
Update USERDATA Set Race = 16 Where strUserId = @UserId
END
--KO-FOX
IF @Race = 5 and @Nrow = 2
BEGIN
Update USERDATA Set Race = 1 Where strUserId = @UserId
END	
ELSE IF @Race = 6 and @Nrow = 2
BEGIN
Update USERDATA Set Race = 2 Where strUserId = @UserId
END	
ELSE IF @Race = 7 and @Nrow = 2
BEGIN
Update USERDATA Set Race = 3 Where strUserId = @UserId
END	
ELSE IF @Race = 8 and @Nrow = 2
BEGIN
Update USERDATA Set Race = 4 Where strUserId = @UserId
END	
ELSE IF @Race = 14 and @Nrow = 2
BEGIN
Update USERDATA Set Race = 11 Where strUserId = @UserId
END
ELSE IF @Race = 15 and @Nrow = 2
BEGIN
Update USERDATA Set Race = 12 Where strUserId = @UserId
END
ELSE IF @Race = 16 and @Nrow = 2
BEGIN
Update USERDATA Set Race = 13 Where strUserId = @UserId
END
GO
[/HIDE]

Sorunsuz RANK_KNIGTS Prosedürümüzü girelim [ Girişte Hata atıyorsa Create Yerini Alter olarak değiştirin ]
[HIDE]
Kod:
CREATE PROCEDURE RANK_KNIGHTS
AS
--Procedure By ZaGoR / Smallerko
-- Edit Ko-FoX
SET NOCOUNT ON
DECLARE @KnightsIndex smallint
DECLARE @SumLoyalty int
DECLARE job1 CURSOR FOR
SELECT IDNum FROM KNIGHTS
OPEN job1
FETCH NEXT FROM job1
INTO @KnightsIndex
WHILE @@fetch_status = 0 
BEGIN
if @SumLoyalty is null
begin
    SET @SumLoyalty = 0
end
    SELECT @SumLoyalty=Sum(Loyalty) FROM USERDATA WHERE Knights = @KnightsIndex and City <> 255 
    IF @SumLoyalty <> 0
        UPDATE KNIGHTS SET Points = @SumLoyalty WHERE IDNum = @KnightsIndex
    FETCH NEXT FROM job1
    INTO @KnightsIndex
END
CLOSE job1
DEALLOCATE job1
SET NOCOUNT OFF
UPDATE KNIGHTS SET Ranking=0 WHERE Ranking>0
EXEC KNIGHTS_RATING_UPDATE 
DECLARE @Knights_1 smallint
DECLARE @Knights_2 smallint
DECLARE @Knights_3 smallint
DECLARE @Knights_4 smallint
DECLARE @Knights_5 smallint
SELECT @Knights_1 = shIndex FROM KNIGHTS_RATING WHERE nRank=1
SELECT @Knights_2 = shIndex FROM KNIGHTS_RATING WHERE nRank=2
SELECT @Knights_3 = shIndex FROM KNIGHTS_RATING WHERE nRank=3
SELECT @Knights_4 = shIndex FROM KNIGHTS_RATING WHERE nRank=4
SELECT @Knights_5 = shIndex FROM KNIGHTS_RATING WHERE nRank=5
UPDATE KNIGHTS SET Ranking=1 WHERE [email protected]_1
UPDATE KNIGHTS SET Ranking=2 WHERE [email protected]_2
UPDATE KNIGHTS SET Ranking=3 WHERE [email protected]_3
UPDATE KNIGHTS SET Ranking=4 WHERE [email protected]_4
UPDATE KNIGHTS SET Ranking=5 WHERE [email protected]_5
GO
[/HIDE]

Ve son olarak eğer düzelip düzelmediğini denemek isterseniz

[HIDE]
Kod:
Update knights set points = '999999' where IDNAME = 'Clan İsmi'

Kod:
EXEC RANK_KNIGHTS
[/HIDE]
Bunları girdiğiniz taktirde +captain yazdığınızda captain olduğunu görüceksiniz. Fotolarla Gösteriyim bide :)

Buglu Hali :


Düzelmiş Hali :


Paylaşımlarım devam edecektir ;)
 

Emek Server ExeMT2

Üst