Öncelikle değerli geri bildiriminiz için teşekkürler. Kullandığınız sunucu dosyalarının farklı bir yapıda olduğu anlaşılıyor. Lütfen aşağıdaki alternatif yöntemleri deneyin:
Yöntem 1: Alternatif Anahtar Kelimelerle Arama
char_battle.cpp dosyası içinde GetHorseLevel bulunamadıysa, aynı işlevi gören farklı isimlendirilmiş kodlar olabilir. Lütfen dosya içinde (CTRL+F ile) aşağıdaki kelimeleri tek tek aratın:
- GetHorseData
- GetHorse
- IsRiding veya IsOnHorse
- HORSE_LEVEL (Büyük harflerle bir sabit olarak tanımlanmış olabilir)
- Sadece 11 sayısını aratın. Bu sizi doğrudan seviye kontrolünün yapıldığı satırlara götürebilir. Orada at ile ilgili bir kontrol olup olmadığına bakın.
Yöntem 2: Farklı Kod Bloklarını Kontrol Etme
Aşağıda, farklı sunucu dosyalarında karşılaşılan bazı kod örnekleri var. Lütfen bu bloklardan birinin kendi dosyasında olup olmadığını kontrol etsin:
Örnek A:
[CODE title="C++"]if (ch->IsOnHorse() && ch->GetHorseLevel() < 11)
{
// Hata mesajı veya vuruşu engelleme kodu
return;
}[/CODE]
Bu yapıyı bulursa, 11'i 1 yapması yeterlidir.
Örnek B:
[CODE title="C++"]if (pkChar->GetHorseData() && pkChar->GetHorseData()->dwLevel < 11)
{
// Hata mesajı veya vuruşu engelleme kodu
return;
}[/CODE]
Burada da 11'i 1 olarak değiştirmeli.
Örnek C: Bazen bu kontrol, vuruş fonksiyonunun en başında yapılır. CInputMain::Attack gibi bir fonksiyonun içinde char.cpp veya input_main.cpp dosyalarında olabilir.
Yöntem 3: Farklı Dosyaları Kontrol Etme
Eğer bu mantık char_battle.cpp içinde değilse, büyük ihtimalle aşağıdaki dosyalardan birindedir:
- char.cpp: Karakterin genel özelliklerinin ve kontrollerinin yapıldığı ana dosyalardan biridir.
- horse_manager.cpp: Özellikle atlarla ilgili tüm fonksiyonların toplandığı bir dosya olabilir. Bu dosyada Attack veya Skill ile ilgili bir kontrol arayabilir.
Eğer Hiçbiri İşe Yaramazsa: En Önemli Soru
Eğer yukarıdaki adımların hiçbiri sonuç vermezse, sorunun kökünü bulmak için arkadaşına şu soruyu sorman gerekiyor:
"Kullandığınız sunucu dosyalarının adı nedir? (Ör: Martysama, Owsap, Mainline, Fource vb.)"
Bu bilgi, sorunun tam olarak hangi dosyada ve hangi satırda olduğunu nokta atışı bulmamızı sağlar.
Kullandığım Yapı mainline dediiğiniz gibi char.cpp de
if (GetHorseLevel() > 0)
{
UpdateHorseDataByLogoff (t->logoff_interval);
}
thecore_memcpy (m_aiPremiumTimes, t->aiPremiumTimes, sizeof (t->aiPremiumTimes));
m_dwLogOffInterval = t->logoff_interval;
sys_log (0, "PLAYER_LOAD: %s PREMIUM %d %d, LOGGOFF_INTERVAL %u PTR: %p", t->name, m_aiPremiumTimes[0], m_aiPremiumTimes[1], t->logoff_interval, this);
if (GetGMLevel() != GM_PLAYER)
{
LogManager::instance().CharLog (this, GetGMLevel(), "GM_LOGIN", "");
sys_log (0, "GM_LOGIN(gmlevel=%d, name=%s(%d), pos=(%d, %d)", GetGMLevel(), GetName(), GetPlayerID(), GetX(), GetY());
}
Bu Şekilde bir satır var burayı mı düzenlemem gerekir 0 olan kısmı 1 mi yapmalıyım ?