+1+1+1+1+1+1+1+1+1+1+1+1+1
- Forum
- Knight Online World
- Türk Topluluğu
- Genel
- Genel Tartışma Bölümü
- Fragmentler Non Trade Olsun farm amacı item olsun
EVET
HAYIR
+1+1+1+1+1+1+1+1+1+1+1+1+1
İyide dostum cz de ittifak serbest ama jr bdw chaos da yasak o zaman her yerde serbert olsun yada bu etkinliklerde niye yasak . İnşallah zorlaşır en azından şöyle olabilir ego glutton wraith sloth sonrası olmasa belki gerçekten sc parası için kasarlar sonrasını diger oyuncular için bırakır diger türlü adam araba kredisi için bahçe dönüyor
Neden hiç bir GM bu olaya en ufak bir yanıt veya düşüncede bulunmuyor?
Bu foruma girmeyen ve bu konudan dolayı oyunu bırakan,pvp serverlara giden,premium & cash çekmek isteyen(ama çekmeyen) yüzlerce oyuncu var. Sesimize kulak verin.. Biliyoruz bu durumdan gm olmanıza rağmen siz bile rahatsız oluyosunuzdur, bir an önce gerekli herşey yapılacaktır gönülden inanıyoruz.
DİP NOT: Bahçeyi ele geçirmiş olan arkadaşlarla baş etmek imkansıza yakın. Geçen gün BeyazSakal arkadaşımızın canlı yayınında GM’ler ile parti kurulmuş ve o şekilde bile bahçe ile baş edilememiştir..
Çok mantıklı da bu sefer orada kasıp satmak yerine kırdırıp düşenleri satmak zorunda kalacaklar. Pek değişen bir şey olmayacak yani.
Zaten felankor, max 1 saatte chaos stone + günlük kill görevi yeter bowl pksı için.
Yukarıda denildiği gibi Fragment/Gem mobları cz’de sabit bir slotlarda değil, tek tek ücra köşelerde rastgele doğmalı.
Misal karus/human town, oyunun dağları, tepeleri, çukurları yada denizleri sağlayan yani yer şekillerini sağlayan objelerin collisionların dışında yani karakterlerin yasal olmayan, gidememeyeceği koordinatlar dışında kalan tüm serbest alanlarda rastgele atmalı.
Hadi legal olan koordinatlardan rastgele 1 tur bahçe moblarını respawn edelim!
2000x2000 ise cz haritası;
1200x1000 ve 122x1999 koordinatına pride,
412x1313 ve 559x1400 koordinatına glutton,
1551x434 ve 555x440 koordinatına wrath,
412x233 ve 1400x100 koordinatına sloth,
1234x222 ve 602x811 koordinatına lust,
886x1599 ve 1233x855koordinatına envy,
221x1858 ve 768x677 koordinatına greed atmalı ki bulan kessin tekelleşmesin.
Bu geliştirmenin yapılabilmesi için olabilitesine yakın, leak edilen kaynak kodlarından tespit ettiğim kadarıyla aşağıdaki adımlar yeterli olacaktır.
1. Serveri çalıştırmadan önce db'deki cz bf moblarını silelim.
CZ haritasının collisionlarını hesaplattırıp ve ona göre tile çizdirip buradaki koordinatları vectorde tutalım. Buna legal koordinat listesi diyebiliriz ve hesaplamayı sadece cz haritası güncellendiğinde yapılabilir. Buradan çıkan datayı bir .txt e veya dbye yazıp oradan tekrar okuyabiliriz kafamıza göre (Tıpkı wallhack kontrolundeki gibi)Code:DELETE FROM K_NPCPOS WHERE ZoneID = 71 and NpcID IN (SELECT sSid FROM K_MONSTER WHERE strName LIKE ‘%pride%’ OR strName LIKE ‘%glutton%’ OR strName LIKE ‘%wrath%’ OR strName LIKE ‘%sloth%’ OR strName LIKE ‘%lust%’ OR strName LIKE ‘%envy%’ OR strName LIKE ‘%greed%)
CGameServerDlg.h sınıfı içerisinde koordinatları taşıyacak olan bir struct oluşturalım
CGameServerDlg.h sınıfı içerisinde değişkenini tanımlayalımCode:struct Coordinate { double x, y; Coordiate(double paramX, double paramY) : x(paramX), y(paramY) {} };
Daha önceden oluşturduğumuz legal koordinat listesini okuyup coords değişkenine aktaralım.Code:std::vector< Coordinate > coords;
CGameServerDlg.h sınıfı içerisinde Coordinate GetRandomLegalCoordinate(); diye bir method tanımlayalım.
CGameServerDlg.cpp içerisinde her seferinde bize random legal koordinat vectorunu veren methodu dolduralım.
CGameServerDlg.h içerisinde void InitRandomBfMonsters(); diye bir method tanımlayalım.Code:Coordinate CGameServerDlg::GetRandomLegalCoordinate() { auto randIt = coords.begin(); std::advance(randIt, std::rand() % coords.size()); return randIt; }
CGameServerDlg.cpp içerisinde random cz bf moblarını doğduran methodu dolduralım.
ve bu methodu CGameServerDlg.cpp dosyasındaki "bool CGameServerDlg::Startup()" methodununun en alt satırında return' dan önce çağıralımCode:void CGameServerDlg::InitRandomBfMonsters() { Coordinate coord; int[6] bfMobIDs = { 5801, 5901, 6101, 6201, 6301, 6401 }; for(int i = 0; i < size(bfMobIDs); i++) { coord = GetRandomLegalCoordinate(); g_pMain->SpawnEventNpc(bfMobIDs[i], true, 71, coord.x, coord.y, 0, 0); coord = GetRandomLegalCoordinate(); g_pMain->SpawnEventNpc(bfMobIDs[i], true, 71, coord.x, coord.y, 0, 0); } }
Buraya kadar server ilk açıldığında cz bf moblarını random atacaktır. Kesildiğinde yeniden farklı bir yerde çıkmaz.
Aynı mob öldüğünde farklı bir yerde tekrardan spawnlamak içinse;
NPC.cpp içerisindeki onDeath methodunu bulup en altına aşağıdakileri eklediğimizde ise istediğimiz olan czdeki her bf mobu öldüğünde czdeki rastgele alınan legal olan koordinata aynı mob doğacaktır.
Aşağı yukarı hepsi bundan ibaret. Ula test serverini verin bana 1 tur deneyelim.Code:{ .. int[6] bfMobIDs = { 5801, 5901, 6101, 6201, 6301, 6401 }; bool isBfMob = std::find(std::begin(bfMobIDs), std::end(bfMobIDs), m_sSid) != std::end(bfMobIDs); if(GetZoneID() == ZONE_RONARK_LAND && isBfMob) { Coordinate coord = GetRandomLegalCoordinate(); g_pMain->SpawnEventNpc(m_sSid, true, 71, coord.x, coord.y, 0, 0); // burada sadece kesen kullanıcıya doğduğu koordinatı veya slot bilgisi verilebilir. } }
Tabi NTTGAME yönetimi bu konuda ne der, bu durum onlar için ne kadar önemli bilmiyorum.
Last edited by DisobedienceX; 12-27-2019 at 12:13 PM.
Etkinlikten kazanılan tüm hediyelerin non trade olması taraftartıyım her zaman.
Direk paraya dönüşmemeli.
JR
FT
CHAOS
BDW
CZ BOWL TAŞLARI (BİF DAHİL DEĞİL)
Hepsi non trade şeklinde olmalı.
JustInTime
Eveeeeeeeeeet oyuncular bu kadar istekli hatta arkadaş kodunu bile ben yazarım diyor yetkili arkadaşlar neden istemiyor bi soralım ?