-
İçerik sayısı
616 -
Katılım
-
Son ziyaret
-
Günün Kazananı
1 -
Puan
18,053 [ Bağış Yap ]
İletiler : byxox
-
-
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 -
teşekkurler
-
AlıntıMerhaba %50 yapmak çözüm olmaz oradaki 100 değeri default değerdir yani 100 normal oluyor %50 deger atamak için 150 yapmak gerekiyor.
selem kardes suan 100 degerı ıle denedım 25 kere staf vurdum 1 kere kıtlemedı 150 yapmam bırsey degıstırırmı acaba emın degılım ama deneyım -
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 -
merhabalar 75 skılını basıyorum gorsel calısıyor problem yok ama işlevı calısmıyor mesela ben mageye vurunca benım hp gitmıyor nereye bakmam lazım yardımcı olursanız sevınırım
tesekkurler -
Alıntıhocam Skill_Magic_Main_us içerisindeki 106802 ve 206802 bulup 21xx tbl de 28. stunda yazılı olan 100 ü değiştirin. Büyük olasılıkla sorun ortadan kalkacaktır.
deneyıp bılgı verıyorum pekı mage 72 staf kıtleme yapmıyor ona damı bu sekılde bakmalıyım -
Arkadaslar merhabalar
Database de magıc tablosunda scream kıtleme oranını SuccessRate 20 yaptım ama yınede her vurusta kıtlıyor yardımcı olurmusunuz -
Merhabalar
Database de normal upgrade oranlarını editör ile yapabilmekteyim. Rabith item basma oranını nasıl ayarlayabılırım yardımcı olurmusunuz
tesekkurler -
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 :)
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 -
-
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 -
Merhabalar
Tek ele Weapon Breaker taktıgımda atack normal ama dual taktıgımda atack 600 e düşüyor nasıl bir yol izlemeliyim yardımcı olabılırmısınız
Teşekkurler -
Alıntık_npc de ekli
ben k_monster e ekleyerek benzer sorunu çozmustum denemekte fayda var eklemeyı deneyebılırsın -
Teşekkurler
-
Alıntışuan ortak npcler var ya kahverengi gözüküyor o tarzda tamamen monumente çeviremedim bir türlü
db den monument hangı tabloya eklı bakabılırmısın -
teşekkurler
-
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 -
teşekkurler
-
Alıntı@ byxox 2083 den geç desem ?
Elimdeki 2039 sourceyı yükseltme işini yapamadım yapsam geçecektim :) -
AlıntıHex ile bunu bulup değiştirmek alçılı kolla voleybol oynamak gibi bir şey.
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 -
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 -
Teşekkurler
-
Teşekkurler
-
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
(C++) BetaShield AntiCheat Source!
Forum C++
tarihinde gönderildi
tesekkurler