Name Change Bugları Nelerdir ? , Nasıl Yapılırlar ? Ve Nasıl Önlenirler ?

    Paylaş
    avatar
    Flexy

    Favori Oyun Favori Oyun : WolfTeam
    Nick Nick : Ko-PVP
    Karakter Karakter : Asas
    Irk Irk : El Morad
    Cinsiyet Cinsiyet : Erkek
    Mesaj Sayısı Mesaj Sayısı : 73
    Rep Puanı Rep Puanı : 1
    Kayıt tarihi Kayıt tarihi : 26/12/09
    Lakap Lakap : Asker

    Name Change Bugları Nelerdir ? , Nasıl Yapılırlar ? Ve Nasıl Önlenirler ?

    Mesaj tarafından Flexy Bir Cuma Ocak 15, 2010 10:50 pm

    Name Change Bugu Nedir ? ;

    1-) Name Change Genellikle Moradonda Yapılan EVT Açığıdır.
    2-)
    2. Bir açık ise Bazı Oyun içi ncs olan databaselerde name change
    prosedürünün hatalı olması nedeniyle oluşan zaten dbde olan bir
    karakterin ismini oyun içi yazarak yerine kendi karakterini getirip
    itemlerini vs. alabilmesidir.


    Nasıl Yapılır ?

    1-)
    Bu Bug Program Sayesinde Yapılan Bir Düpe Yöntemidir.Bu Programlar
    Sayesinde isim değiştir fonksiyonu ile herhangi bir karakterin ismini
    yazıp relogda o karakter sizin hesaba aktarılıyor.Bunu kapatmak için
    iki yöntemi aşağıda vericeğimdir.

    2-)
    Kullanıcı NCS yi alır, Name change yapılacağı npc ye gider, İsmini
    değiştirirken zaten olan sağlam bir kullanıcının adını yazar.. İsmi o
    kullanıcı adıyla değişir.. Relog atar ismini yazdığı kullanıcının
    bilgileri itemleri vs. o karakter üzerindedir.


    1-) Nasıl Önlerim ?

    A-) NCS yi tamamen Kaldırma ;
    Server
    Fileslerimizin İçinde Bulunan GameServer(Ebenezer) ve Ai Server
    Klasörlerindeki MAP klasöründe Olan 21.evt Dosyasını Bulup Not Defteri
    İle Açıyoruz.CRTL+F Komutu ile CHANGE_NAME aratıyoruz ve bunu örn
    CHXASD_NASXME Gibi kafamıza göre değiştiriyoruz.Kaydedip Çıkıyoruz Hem
    Ai Server Hemde GameServerdeki Map klasörün içindeki 21.evt editliyoruz.



    B-) NCS yi kaldırmadan düzeltme ; (Programın Girdiği CHANGE_NAME Kodunu
    ebenezer ve evt lerden değiştirerek hem çalışmasını sağlayıp hemde
    programı engellemiş oluruz )



    GameServer.exe mizi hex workshop (decimal) yardımı ile açıyoruz.CRTL+F
    Komutu ile CHANGE_NAME Diye Aratıp Değiştiriyoruz Örn CHXASD_NASXME
    Yaptık, 21.evt lere girip CHANGE_NAME Yazan yerlere CHXASD_NASXME Yazıp
    Kaydedip Oyunu Açıyoruz İşte Bu Kadar Artık Fixlemiş Olduk.


    2-) Nasıl Önlerim ?

    Aşağıdaki Kodu Query Analyzera girin ;

    Kod:
    CREATE PROCEDURE CHANGE_NEW_ID
    @byType char(21),
    @AccountID char(21),
    @OldCharID char(21),
    @NewCharID char(21),
    @nRet smallint output
    AS
    /*
    Author : AKUMA
    */
    DECLARE @CheckUserID int
    SELECT @CheckUserID = COUNT(strUserID) FROM USERDATA WHERE strUserID = @NewCharID
    IF @CheckUserID = 0
    BEGIN
    -- Change Account All Information
    UPDATE ACCOUNT_CHAR SET strCharID1 = @NewCharID WHERE strCharID1 = @OldCharID AND strCharID1 is not null
    UPDATE ACCOUNT_CHAR SET strCharID2 = @NewCharID WHERE strCharID2 = @OldCharID AND strCharID2 is not null
    UPDATE ACCOUNT_CHAR SET strCharID3 = @NewCharID WHERE strCharID3 = @OldCharID AND strCharID3 is not null
    UPDATE USERDATA SET strUserId = @NewCharID WHERE strUserId = @OldCharID AND strUserId is not null
    -- Change Information a User in Knights
    UPDATE KNIGHTS_USER SET strUserId = @NewCharID WHERE strUserId = @OldCharID AND strUserId  is not null
    UPDATE KNIGHTS SET Chief = @NewCharID WHERE Chief = @OldCharID AND Chief is not null
    UPDATE KNIGHTS SET ViceChief_1 = @NewCharID WHERE ViceChief_1 = @OldCharID AND ViceChief_1 is not null
    UPDATE KNIGHTS SET ViceChief_2 = @NewCharID WHERE ViceChief_2 = @OldCharID AND ViceChief_2 is not null
    UPDATE KNIGHTS SET ViceChief_3 = @NewCharID WHERE ViceChief_3 = @OldCharID AND ViceChief_3 is not null
    -- Change Information a User is King
    UPDATE KING_SYSTEM SET strKingName = @NewCharID WHERE strKingName = @OldCharID AND strKingName is not null
    UPDATE KING_ELECTION_LIST SET strName = @NewCharID WHERE strName = @OldCharID AND strName is not null
    -- Change User Friend List Information
    UPDATE FRIEND_LIST SET strUserID = @NewCharID where strUserID = @OldCharID
    -- User Rental Item
    UPDATE RENTAL_ITEM SET strLenderCharID = @NewCharID WHERE strLenderCharID = @OldCharID AND strLenderCharID is not null
    UPDATE RENTAL_ITEM SET strBorrowerCharID = @NewCharID WHERE strBorrowerCharID = @OldCharID AND strBorrowerCharID is not null
    UPDATE RENTAL_ITEM_LIST SET strBorrowerCharID = @NewCharID WHERE strBorrowerCharID = @OldCharID AND strBorrowerCharID is not null
    -- Change CurrentUser
    UPDATE CURRENTUSER SET strCharID = @NewCharID WHERE strCharID = @OldCharID
    -- Change Saved Magic
    UPDATE USER_SAVED_MAGIC SET strCharID = @NewCharID WHERE strCharID = @OldCharID
    -- Change Skill Shorcut
    UPDATE USERDATA_SKILLSHORTCUT SET strCharID = @NewCharID WHERE strCharID = @OldCharID
    -- Name Change is Sucessfull
    SET @nRet = 0
    RETURN
    END
    ELSE
    BEGIN
    -- Entered ID is Already Being Used Another Character
    SET @nRet = 1
    RETURN
    END

    (Kod AKUMA'dan Alıntıdır.)
    Eğer hata alırsanız ( DB de bu prosedür zaten var der ) 'CREATE PROCEDURE' kısmını 'ALTER PROCEDURE' olarak değiştirin.alıntıdır


      Forum Saati Ptsi Ekim 15, 2018 1:28 pm