Bvural41 1
Bvural41
kralhakan2009 1
kralhakan2009
Vahsi Uzman 1
Vahsi Uzman
mavzermete 1
mavzermete
xranzei 1
xranzei
Hikaye Ekle

Cevaplanmadı 1 level at üzerinde vurma

HERAKLES Otomatik Avlı kalıcı sunucu. 19 Haziran'da açılıyor. Atius & Wizard güvencesiyle hemen kayıt ol, ön kayıt ödülleri aktif. HEMEN TIKLA!

merhabalar herkeze iyi günler dilerim 1 level at üzerinde vurmayı nasıl aktive edebilirim yardımcı olabilirmisiniz ?
 
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 ?
Tekrar merhaba, değerli geri bildirimin ve en önemlisi "Mainline" bilgisi için çok teşekkür ederim. İşte bu bilgiyle artık sorunu tam kalbinden vurabiliriz.

Öncelikle paylaştığın kodla ilgili bir düzeltme yapayım, çünkü bu çok önemli. char.cpp içinde bulduğun o kod satırı, karakter oyuna giriş yaptığında at bilgilerini hafızaya yükleyen ve logoff (çıkış) verilerini güncelleyen bir kısım. Yani dövüş mekaniğiyle bir ilgisi yok. Burayı değiştirmek istediğin sonucu vermeyeceği gibi, ileride atının seviye veya zaman bilgilerinin hatalı kaydedilmesine bile yol açabilir. O yüzden o koda hiç dokunmuyoruz, orası doğru çalışıyor.

Şimdi gelelim doğru adrese...

Mainline yapısında bu kontrol neredeyse her zaman char_battle.cpp dosyasının içindedir. Lütfen bu dosyayı tekrar aç.

Dosyanın içinde, karakterin normal vuruş (atak) yaptığı ana fonksiyonu bulman gerekiyor. Bu fonksiyonun adı genellikle CChar::Attack olarak geçer. Bu fonksiyonun içinde biraz gezindiğinde, at seviyesini kontrol eden bloğu arayacağız.

Lütfen CChar::Attack fonksiyonu içerisinde şuna benzer bir kod bloğu ara:

[CODE title="C++"]// Farklı Mainline sürümlerinde küçük farklılıklar olabilir ama mantık aynıdır.
if (IsRiding())
{
if (GetHorseLevel() < 11) // BAZI SÜRÜMLERDE BU 21 OLABİLİR!
{
ChatPacket(CHAT_TYPE_INFO, "At üzerinde savaşmak için yeterli seviyede değilsin.");
return false;
}
}[/CODE]

İşte sihirli yer burası! Aradığın kod tam olarak bu. Bu kod bloğu, "Eğer karakter bir binek üzerindeyse ve atının seviyesi 11'den küçükse, bir uyarı mesajı gönder ve vuruş işlemini iptal et" diyor.

Yapman gereken tek şey, GetHorseLevel() < 11 satırındaki 11 sayısını 1 olarak değiştirmek.

Eski Hali: if (GetHorseLevel() < 11)Yeni Hali: if (GetHorseLevel() < 1)

Bu değişikliği yapıp dosyayı kaydettikten sonra sunucu kaynak kodlarını yeniden derleyip (compile edip) yeni game dosyasını sunucuna yüklediğinde, sorun %100 çözülmüş olacak.

Bu sefer doğru adreste olduğumuzdan emin olabilirsin.

Kolay gelsin, iyi çalışmalar!
 

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

Geri
Üst