shrpnl 1
shrpnl
Fethi Polat 1
Fethi Polat
kralhakan2009 1
kralhakan2009
Vahsi Uzman 1
Vahsi Uzman
Best Studio 1
Best Studio
Agora Metin2 1
Agora Metin2
raderde 1
raderde
Cannn6161 1
Cannn6161
noisiv 1
noisiv
Manwe Work 1
Manwe Work
Mt2Hizmet 1
Mt2Hizmet
Hikaye Ekle
Reklam vermek için turkmmo@gmail.com

Cevaplanmadı Saldırı değerinin serverda işlememesi

aurovex

Level 1
Telefon Numarası Onaylanmış Üye
TM Üye
Katılım
17 Nis 2019
Konular
9
Mesajlar
39
Çözüm
2
Online süresi
10d 2h
Reaksiyon Skoru
5
Altın Konu
0
Başarım Puanı
73
MmoLira
1,917
DevLira
9
Ticaret - 0%
0   0   0

ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ HEMEN TIKLA!

Herkese hayırlı forumlar. İyi günler.

Karakter penceresinde C tuşu saldırı değeri sadece görünüm sorunu var.Hava kılıcı, büyülü keskinlik gibi skilleri kullandığım zaman, simyalar aktifken, mavi şebnem kullanıdığında karakter penceresindeki saldırı değerinde bir artış olmuyor. Verdiği saldırı değeri karaktere etki ediyor sadece C tuşundaki STR değerinde problem var. HP SP DEX sorunsuz çalışıyor.
 
Son düzenleme:

En Çok Reaksiyon Alan Mesajlar

Herkese hayırlı forumlar,

Yaşadığınız sorun oldukça yaygın ve genellikle kaynak kodlardaki merkezi bir hesaplama fonksiyonundaki eksiklikten kaynaklanır. Saldırı değeriniz, üzerine eklenmesi gereken bonusları (efsun, skill, simya vb.) hesaba katmıyor.

Çözüm için sunucunuzun kaynak kodlarındaki (game core) char_point.cpp dosyasını açıp içerisindeki CHARACTER::ComputePoints() fonksiyonunu dikkatle incelemeniz gerekmektedir. Aşağıda, bu fonksiyonun içinde olması gereken ama sizde muhtemelen eksik olan kod bloklarına dair örnekler ve açıklamalar bulunmaktadır.

Kendi ComputePoints fonksiyonunuzu bu örneklerle karşılaştırarak eksik kısımları ekleyip, sunucunuzu yeniden derlediğinizde (build aldığınızda) sorununuz çözülecektir.

1. Efsunlardan Gelen STR (Güç) Bonusunun Saldırı Değerine Etkisi

ComputePoints fonksiyonu içinde, karakterin üzerindeki eşyalardan gelen APPLY_STR bonusunu alıp, bunu saldırı değerine çeviren bir bölüm olmalıdır. Bu bölüm şuna benzer:


[CODE title="C++"]// Örnek Kod Bloğu 1: STR'den gelen saldırı değeri
points.st += GetPoint(APPLY_STR); // Önce toplam STR'yi al

// Sonra bu STR'yi sınıfa göre saldırı değerine çevir
switch (GetJob())
{
case JOB_WARRIOR:
points.atk += points.st * 2; // Savaşçılar için STR başına +2 saldırı değeri
break;

case JOB_SURA:
points.atk += points.st; // Sura için +1
break;

// Diğer sınıflar için de benzer hesaplamalar...
default:
points.atk += points.st;
break;
}[/CODE]

Eğer fonksiyonunuzda buna benzer bir blok yoksa, STR efsunu saldırı değerinizi artırmaz.

2. Hava Kılıcı ve Büyülü Keskinlik Gibi Skill'lerin Etkisi

Yine aynı ComputePoints fonksiyonu içinde, aktif olan büyülü saldırı skillerini kontrol eden bir bölüm olmalıdır. Bu skillerin bonusu genellikle karakterin Zeka (INT) puanına göre hesaplanır.


[CODE title="C++"]// Örnek Kod Bloğu 2: Büyülü Silah Skilleri
if (FindAffect(AFFECT_GWIGEOM)) // Hava Kılıcı (Enchanted Blade) affect'i
{
const CSkill* pkSk = GetSkill(GWIGEOM); // Skill'i ve seviyesini al
if (pkSk)
points.atk += (pkSk->lLevel * 2 + GetPoint(POINT_INT)) * 2 / 5; // Formül sunucuya göre değişebilir
}

if (FindAffect(AFFECT_GEOMGYEONG)) // Büyülü Keskinlik (Enchanted Armour) affect'i
{
const CSkill* pkSk = GetSkill(GEOMGYEONG);
if (pkSk)
points.atk += (pkSk->lLevel + GetPoint(POINT_INT)) / 3; // Formül sunucuya göre değişebilir
}[/CODE]

3. Simya ve Diğer Genel Saldırı Değeri Bonusları

Son olarak, fonksiyonun en genel kısmında, karakterin üzerindeki tüm aktif etkileri (affect) bir döngü içinde gezip, doğrudan saldırı değeri veren bonusları (APPLY_ATT_GRADE_BONUS vb.) toplayan bir bölüm olmalıdır.


[CODE title="C++"]// Örnek Kod Bloğu 3: Genel Bonus Döngüsü
// Bu döngü, simya dahil tüm genel efsunları ve etkileri hesaba katar.
for (it = m_list_pkAffect.begin(); it != m_list_pkAffect.end(); ++it)
{
CAffect* pkAffect = *it;
if (pkAffect->lDuration > 0)
{
switch (pkAffect->bType)
{
case APPLY_ATT_GRADE_BONUS: // Sunucunuzda bu APPLY_ATT_VALUE olabilir
points.atk += pkAffect->lApplyValue;
break;

// Buraya diğer bonus türleri de eklenebilir.
// Örneğin: APPLY_ATT_BONUS_TO_MONSTER vb.
}
}
}[/CODE]

Özetleyelim:

Yapmanız gereken, char_point.cpp dosyanızdaki CHARACTER::ComputePoints() fonksiyonunu açıp, yukarıdaki örneklere benzer kod bloklarının eksik olup olmadığını kontrol etmektir. Eksik olanları, kendi sunucu yapınıza uygun formüllerle ekleyip yeniden derlediğinizde, simya, STR ve skillerden gelen tüm saldırı değeri bonuslarının karakterinize doğru bir şekilde yansıdığını göreceksiniz.

İyi çalışmalar dilerim.
 
Herkese hayırlı forumlar,

Yaşadığınız sorun oldukça yaygın ve genellikle kaynak kodlardaki merkezi bir hesaplama fonksiyonundaki eksiklikten kaynaklanır. Saldırı değeriniz, üzerine eklenmesi gereken bonusları (efsun, skill, simya vb.) hesaba katmıyor.

Çözüm için sunucunuzun kaynak kodlarındaki (game core) char_point.cpp dosyasını açıp içerisindeki CHARACTER::ComputePoints() fonksiyonunu dikkatle incelemeniz gerekmektedir. Aşağıda, bu fonksiyonun içinde olması gereken ama sizde muhtemelen eksik olan kod bloklarına dair örnekler ve açıklamalar bulunmaktadır.

Kendi ComputePoints fonksiyonunuzu bu örneklerle karşılaştırarak eksik kısımları ekleyip, sunucunuzu yeniden derlediğinizde (build aldığınızda) sorununuz çözülecektir.

1. Efsunlardan Gelen STR (Güç) Bonusunun Saldırı Değerine Etkisi

ComputePoints fonksiyonu içinde, karakterin üzerindeki eşyalardan gelen APPLY_STR bonusunu alıp, bunu saldırı değerine çeviren bir bölüm olmalıdır. Bu bölüm şuna benzer:


[CODE title="C++"]// Örnek Kod Bloğu 1: STR'den gelen saldırı değeri
points.st += GetPoint(APPLY_STR); // Önce toplam STR'yi al

// Sonra bu STR'yi sınıfa göre saldırı değerine çevir
switch (GetJob())
{
case JOB_WARRIOR:
points.atk += points.st * 2; // Savaşçılar için STR başına +2 saldırı değeri
break;

case JOB_SURA:
points.atk += points.st; // Sura için +1
break;

// Diğer sınıflar için de benzer hesaplamalar...
default:
points.atk += points.st;
break;
}[/CODE]

Eğer fonksiyonunuzda buna benzer bir blok yoksa, STR efsunu saldırı değerinizi artırmaz.

2. Hava Kılıcı ve Büyülü Keskinlik Gibi Skill'lerin Etkisi

Yine aynı ComputePoints fonksiyonu içinde, aktif olan büyülü saldırı skillerini kontrol eden bir bölüm olmalıdır. Bu skillerin bonusu genellikle karakterin Zeka (INT) puanına göre hesaplanır.


[CODE title="C++"]// Örnek Kod Bloğu 2: Büyülü Silah Skilleri
if (FindAffect(AFFECT_GWIGEOM)) // Hava Kılıcı (Enchanted Blade) affect'i
{
const CSkill* pkSk = GetSkill(GWIGEOM); // Skill'i ve seviyesini al
if (pkSk)
points.atk += (pkSk->lLevel * 2 + GetPoint(POINT_INT)) * 2 / 5; // Formül sunucuya göre değişebilir
}

if (FindAffect(AFFECT_GEOMGYEONG)) // Büyülü Keskinlik (Enchanted Armour) affect'i
{
const CSkill* pkSk = GetSkill(GEOMGYEONG);
if (pkSk)
points.atk += (pkSk->lLevel + GetPoint(POINT_INT)) / 3; // Formül sunucuya göre değişebilir
}[/CODE]

3. Simya ve Diğer Genel Saldırı Değeri Bonusları

Son olarak, fonksiyonun en genel kısmında, karakterin üzerindeki tüm aktif etkileri (affect) bir döngü içinde gezip, doğrudan saldırı değeri veren bonusları (APPLY_ATT_GRADE_BONUS vb.) toplayan bir bölüm olmalıdır.

[CODE title="C++"]// Örnek Kod Bloğu 3: Genel Bonus Döngüsü
// Bu döngü, simya dahil tüm genel efsunları ve etkileri hesaba katar.
for (it = m_list_pkAffect.begin(); it != m_list_pkAffect.end(); ++it)
{
CAffect* pkAffect = *it;
if (pkAffect->lDuration > 0)
{
switch (pkAffect->bType)
{
case APPLY_ATT_GRADE_BONUS: // Sunucunuzda bu APPLY_ATT_VALUE olabilir
points.atk += pkAffect->lApplyValue;
break;

// Buraya diğer bonus türleri de eklenebilir.
// Örneğin: APPLY_ATT_BONUS_TO_MONSTER vb.
}
}
}[/CODE]

Özetleyelim:

Yapmanız gereken, char_point.cpp dosyanızdaki CHARACTER::ComputePoints() fonksiyonunu açıp, yukarıdaki örneklere benzer kod bloklarının eksik olup olmadığını kontrol etmektir. Eksik olanları, kendi sunucu yapınıza uygun formüllerle ekleyip yeniden derlediğinizde, simya, STR ve skillerden gelen tüm saldırı değeri bonuslarının karakterinize doğru bir şekilde yansıdığını göreceksiniz.

İyi çalışmalar dilerim.
char_point.cpp dosyası mevcut değil benim filesimde.
 
char_point.cpp dosyası mevcut değil benim filesimde.
kardeşim o dediğin çok önemli bi detay işte, her şey şimdi yerine oturdu...

senin elindeki hazır bi files paketi, kaynak kodları değil anladığım kadarıyla... o yüzden o char_point.cpp dosyasını boşuna arama, bulamazsın... senin çözümün kodların içinde değil, hazır ayar dosyalarının içinde gizli...

şimdi yapman gereken şu...

sunucu dosyalarının içinde share/locale/turkey/ gibi bi klasör olması lazım... onun içine bi gir bak bakalım... bonus.txt... settings.txt... char_settings.txt gibi dosyalar göreceksin...

o dosyaları bi açıp içine göz at... içinde STR, GÜÇ falan yazar bi yerlerde, saldırı değeri ayarı büyük ihtimalle oralardadır...

ama bak sana en kestirme ve en kolay yolu söyleyeyim mi...

hiç bunlarla uğraşmak istemiyosan, foruma direkt kullandığın filesin adını yaz... fides mi, rubinum mu, maxmi mi ne kullanıyosan artık... onu yazarsan o filesi bilen bi babayiğit çıkar, sana nokta atışı yapar, "kardeşim şu dosyayı aç şu satırı şöyle yap" der, 2 dakikada halledersin işini...

umarım yardımcı olabilmişimdir... kolay gelsin...
 
kardeşim o dediğin çok önemli bi detay işte, her şey şimdi yerine oturdu...

senin elindeki hazır bi files paketi, kaynak kodları değil anladığım kadarıyla... o yüzden o char_point.cpp dosyasını boşuna arama, bulamazsın... senin çözümün kodların içinde değil, hazır ayar dosyalarının içinde gizli...

şimdi yapman gereken şu...

sunucu dosyalarının içinde share/locale/turkey/ gibi bi klasör olması lazım... onun içine bi gir bak bakalım... bonus.txt... settings.txt... char_settings.txt gibi dosyalar göreceksin...

o dosyaları bi açıp içine göz at... içinde STR, GÜÇ falan yazar bi yerlerde, saldırı değeri ayarı büyük ihtimalle oralardadır...

ama bak sana en kestirme ve en kolay yolu söyleyeyim mi...

hiç bunlarla uğraşmak istemiyosan, foruma direkt kullandığın filesin adını yaz... fides mi, rubinum mu, maxmi mi ne kullanıyosan artık... onu yazarsan o filesi bilen bi babayiğit çıkar, sana nokta atışı yapar, "kardeşim şu dosyayı aç şu satırı şöyle yap" der, 2 dakikada halledersin işini...

umarım yardımcı olabilmişimdir... kolay gelsin...
Marty sama v5. 8 kullanıyorum kaynak kodlarına erişimim var game source kaynak kodlarında dediğim gibi char_point.cpp diye bir dosya yok fakat sizin attığınız çözümlerin bir kaçı char.cpp nin içerisinde mevcut. Muhmetemelen diğer bulamadıklarımda farklı bir kod bloğu ile çalışıyor. Çünkü bulduğum fonksiyonlarda farklı şekilde yazılmış durumda.
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst