Jump to content
Araştır
  • Diğer seçenekler ...
Sonuçları bul ...
Sonuçları bul ...

byxox

Kıdemli Üye
  • İçerik sayısı

    616
  • Katılım

  • Son ziyaret

  • Günün Kazananı

    1
  • Puan

    18,053 [ Bağış Yap ]

İletiler : byxox


  1. Alıntı
    void MagicInstance::ReflectDamage(int32 damage, Unit * pTarget)


    işlev yazman lazım


    teşekkurler kardes verdıgın bılgı ıcın

    işlevlerı ekledım söyle yaptım

    1- Magicinstance.h ye

    void ReflectDamage(int32 damage, Unit * pTarget);

    ekledım

    2- Magicinstance.cpp'ye

    void MagicInstance::ReflectDamage(int32 damage, Unit * pTarget)
    {
    if (pSkillCaster == nullptr || pTarget == nullptr)
    return;

    if (damage damage *= -1;

    int16 total_resistance_caster = 0;
    int32 reflect_damage = 0;

    switch (pTarget->m_bReflectArmorType)
    {
    case FIRE_DAMAGE:
    total_resistance_caster = (pSkillCaster->m_sFireR + pSkillCaster->m_bAddFireR) * pTarget->m_bPctFireR / 100;
    reflect_damage = ((230 * damage) / (total_resistance_caster + 250)) / 100 * 35;
    pSkillCaster->HpChange(-damage, pTarget);
    break;

    case ICE_DAMAGE:
    total_resistance_caster = (pSkillCaster->m_sColdR + pSkillCaster->m_bAddColdR) * pTarget->m_bPctColdR / 100;
    reflect_damage = ((230 * damage) / (total_resistance_caster + 250)) / 100 * 35;
    pSkillCaster->HpChange(-damage, pTarget);
    break;

    case LIGHTNING_DAMAGE:
    total_resistance_caster = (pSkillCaster->m_sLightningR + pSkillCaster->m_bAddLightningR) * pTarget->m_bPctLightningR / 100;
    reflect_damage = ((230 * damage) / (total_resistance_caster + 250)) / 100 * 35;
    pSkillCaster->HpChange(-damage, pTarget);
    break;
    }

    CMagicProcess::RemoveType4Buff(BUFF_TYPE_MAGE_ARMOR,pTarget,true);

    ekledım buıldledım problemsız buıld oldu. Ama skıll yine işlevsiz çalışıyor başka nereye bakabılırım

    Tesekkurler

  2. Alıntı
    evet hocam. Benim bildiğim kadarı ile kilitleme zaten client taraflı bir olay. Yani uskoda tbl ler ile oynayarak zaten kilitlenmeyi ortadan da kaldırıyorlar. Belki de yanlış biliyorumdur. Varsa farklı bir bilgisi olan aydınlatırsa daha iyi olur.


    Ben sımdı kontrol ettım staf skıl kodunda 28.yer de 100 yazıyor ama kıtleme yapmıyor magıc tablosunda ıse kıtleme oranını %50 yaptım gene de kıtleme olmuyor

  3. Alıntı
    Bu ekrandan ileriye gitmiyor tüm görevlerde sorun quest_helper tablosundamı, lua dosyasında mı yoksa clientte mi hiç bir fikrim yok. sizce sorun nerden kaynaklanıyor sorun çözümü için forumda hangi konuyu incelemem gerek şimdiden teşekkür ederim :)

    3pjrOM.png


    gunaydın kardesım

    gorevler lua ya bakmaktadır. gorevı almaya calıstıgında game server de lua hatası alman gerekıyor. kontrol edebılırmısın

  4. Alıntı
    SetUserAbility fonksiyonu içerisinde gerçekleşir bu olayların hepsi misal üstündeki maximum ağırlık, maximum hp ve mp, attack, defans olayları bu fonksiyon üzerinden hesaplanır.

    Eline taktığın itemlerin ITEM tablosundaki kind sütununa göre hesaplama yapar onu da kind / 10 olarak tek tek kontrol eder. Örnek verecek olursak Shard kind numarası 11'dir. 11 / 10 = 1 değerine denk gelir gibisinden senin weapon breaker 140 kind numarasını almaktadır. 140 / 10 = 14 değerini alıyor ama SetUserAbility fonksiyonu içerisinde weapon breaker kontrolü yani 14 değerinin kontrolü olmadığı için databasedeki COEFFICIENT tablosudan 14 değerini okuyamıyor ve hesaplamaya ekleyemiyor. Bu da yanlış göstermesine sebebiyet veriyor.

    Yeri gelmişken buraya not olarak eklemek istiyorum.
    Not : Inventory ItemMove işlemlerinin bazılarında ve WAREHOUSE ItemMove olaylarında SetUserAbility fonksiyonunu boşu boşuna çağırmanıza gerek yok. Çünkü Inventory'den Inventory gibi işlemlerde hiç bir değişim olmuyor boşu boşuna hem uzun uzun hesaplatmış hemde paket atmış oluyorsunuz aklınızda bulunsun.


    Bilgilendirme için teşekkurler kardeşim

    kontrol etttiğimde wp nın kınd numarası ıtem tablosunda 340'dı 140 yapıp denedım gene duzelmedı. Source den baktıgımda wp nin kontrolünü SetUserAbility itemhandler.cpp 'yemi eklemem gerekiyor acaba?

    Teşekkurler

  5. Alıntı
    Bunun için türlü türlü şeyler yapabilirsin. Tabi ki her zaman belirttiğimiz gibi işini bilen kişi için bütün yollar geçilebilir durumdadır. Yani aşağıda aklıma gelenleri sayacağım ama bazıları kolay bazıları zor gelecektir sana kalmış.

    1) Port değiştirirsin.
    2) WIZ_VERSION ile gelen version değerini değiştirirsin.
    3) WIZ_VERSION ile gelen g_private_key değiştirirsin.
    4) Paket yapısını kendi oluşturduğun şifreleme ile değiştirirsin.

    Daha eklenebilir ama aklıma şuan bu kadar geldi.


    Teşekkurler özkan arkadasımızın dedıklerını yaptım prıvate key degıstırerek sorunu cozdum

  6. Alıntı
    Hex ile bunu bulup değiştirmek alçılı kolla voleybol oynamak gibi bir şey.
    pfbqxMoCS8i7SIZwJirXBg.png
    Yani bu fonksiyon:

    int CAPISocket::Connect(HWND hWnd, const char* ServerIP, DWORD Port, const char* LanIP);


    Kütüphaneler üzerinden gitsen daha rahat bulabilirsin.
    https://msdn.microsoft.com/en-us/library/windows/desktop/ms737625(v=vs.85).aspx


    Hex editör ile değil ollydbg ile mi yapabilirim sizin kullandıgınız exe nın kenarında x32dbg yazıyor o başka bir program sanırım

    Ben olly ile açtım sızın resımdekı gosterdıgınız yerde 004BC366 stununda yok

    kullandıgım exe 2039'dur. ne olarak arayabılırım acaba

    tesekkurler

  7. Alıntı
    Port değiştirme işlemini Hex Workshop veya Ollydbg kullanarak yapabilirsin.
    Version ve g_private_key değiştirme işlemlerini Ollydbg kullanarak yapabilirsin.
    Paket şifreleme yada değiştirme işlemlerini dll ile yapabilirsin.

    Bunlardan sonra KnightOnLine.exe ve dll dosyanı packlemeyi unutma.


    merhaba kardeşim

    Port değiştirme için hex workshopdan 15001 portu için olan resim şudur :

    https://prntscr.com/gr60sg

    ben bu portu 15009 olarak değişim yaptıgımda hex conventer da 3AA1 oldu ve ben şu şekilde değiştirdim:

    https://prntscr.com/gr61xt

    Daha sonra bu exe ile oyuna giriş yapamadım olması gerektiği gibi. Bende game server.ini dosyasındakı portu 15001 den 15009 a aldıgımda oyuna port değiştirim exe ile girmeye calıstıgımda failed loggin server 100061 hatası alıyorum yardımcı olurmusunuz.

    Teşekkurler

  8. Alıntı
    Bunun için türlü türlü şeyler yapabilirsin. Tabi ki her zaman belirttiğimiz gibi işini bilen kişi için bütün yollar geçilebilir durumdadır. Yani aşağıda aklıma gelenleri sayacağım ama bazıları kolay bazıları zor gelecektir sana kalmış.

    1) Port değiştirirsin.
    2) WIZ_VERSION ile gelen version değerini değiştirirsin.
    3) WIZ_VERSION ile gelen g_private_key değiştirirsin.
    4) Paket yapısını kendi oluşturduğun şifreleme ile değiştirirsin.

    Daha eklenebilir ama aklıma şuan bu kadar geldi.


    Selam kardeşim

    1- v2039 exe nin port değiştirme işlemini yapamadım çok uğraştım.
    2-3-4- Dediklerini deneyeceğim yapamadığım birşey olursa yazarım teşekkürler kardeşim
×
×
  • Yeni Oluştur...