C 1
chengdu
xranzei 1
xranzei
zendor2 1
zendor2
Bvural41 1
Bvural41
noisiv 1
noisiv
Manwe Work 1
Manwe Work
Almira2 1
Almira2
romegames 1
romegames
D 1
delimuratt
melankolıa18 1
melankolıa18
shrpnl 1
shrpnl
Fethi Polat 1
Fethi Polat
Hikaye Ekle
Reklam vermek için turkmmo@gmail.com

Cevaplanmadı 1 level at üzerinde vurma

DarkLions

Level 4
TM Üye
Katılım
6 Mar 2014
Konular
44
Mesajlar
299
Çözüm
1
Online süresi
1mo 25d
Reaksiyon Skoru
58
Altın Konu
0
TM Yaşı
12 Yıl 3 Ay 4 Gün
Başarım Puanı
126
MmoLira
8,006
DevLira
0
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!

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