View Poll Results: Fragmentler Non Trade olsunmu ? olmasınmı ?

Voters
273. You may not vote on this poll
  • EVET

    216 79.12%
  • HAYIR

    57 20.88%
Page 5 of 15 FirstFirst ... 34567 ... LastLast
Results 41 to 50 of 147
  1. #41
    +1+1+1+1+1+1+1+1+1+1+1+1+1

  2. #42
    Quote Originally Posted by dehabb12 View Post
    arkadasın dedigine tamamen katılıyorum oyunun amacı tl oldu. İnşallah bahçe yaratık sistemi komple degişir. Bu sayede private sunuculara kaçan oyuncularında geri dönecegini düsünüyorum. Oyunun amacı pk olmalı tl kasmak için 2 ırkla ittifak olmamalı.
    ittifak olaylarına pek müdahale olma durumu olmuyor fakat biz bu işi tam cozulemesede en azından farm zorlasıcak .

  3. #43
    Junior Member
    Join Date
    May 2016
    Posts
    16
    Quote Originally Posted by gld_NkaMuDmv View Post
    ittifak olaylarına pek müdahale olma durumu olmuyor fakat biz bu işi tam cozulemesede en azından farm zorlasıcak .
    İ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

  4. #44
    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..

  5. #45
    Senior Member DisobedienceX's Avatar
    Join Date
    Jan 2019
    Posts
    244
    Nickname
    Disobedience
    Class
    KO -> Kurian
    Clan
    Artifact
    Server
    KO -> Sirius
    Race
    Karus
    Quote Originally Posted by gld_NkaMuDmv View Post
    Fragmentler Non Trade Olsun farm amacı item olsun .... aylardır belli başlı clanların isimleri gecirilerek oyunun ASIL AMACI sadece paraya yoneltmesi hepimizi derinden etkilemekte artık farm yap item koy pk at yerine item koy kredisini öde sonra taksitleri yatır donemine geçmiştir. her ne kadar biz bu sw pk için geldik diyenler varsada oyunu izleyen görenlerin kafasında her zaman bu farm 'ı TL olarak düşünülmektedir. Oyunumuza el atma sırası geldiğini düşünüyorum sizlerin burda vereceğiniz oylar çok önemli bundan yıllar önce trenleri engellemek için konu açmıştım siz forumu takip eden oyuncular ve bizleri dinleyen nttgame ekibi sayesinde level sınırlaması getirilmişti ve trenlerin önüne geçilmişti.



    burdan'da resme bakabilirsiniz

    şimdi dileğimiz şudur' ki fragmentler non trade olsun para değil item konuşalım.

    eğer cümle hatalarım varsa affola.

    SAMAR !

    Ç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.
    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%)
    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)

    CGameServerDlg.h sınıfı içerisinde koordinatları taşıyacak olan bir struct oluşturalım

    Code:
    struct Coordinate {
        double x, y;
        Coordiate(double paramX, double paramY) : x(paramX), y(paramY) {}
    };
    CGameServerDlg.h sınıfı içerisinde değişkenini tanımlayalım

    Code:
     
    std::vector< Coordinate > coords;
    Daha önceden oluşturduğumuz legal koordinat listesini okuyup coords değişkenine aktaralım.

    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.
    Code:
    Coordinate CGameServerDlg::GetRandomLegalCoordinate() {
    	auto randIt = coords.begin();
    	std::advance(randIt, std::rand() % coords.size());
    	return randIt;
    }
    CGameServerDlg.h içerisinde void InitRandomBfMonsters(); diye bir method tanımlayalım.
    CGameServerDlg.cpp içerisinde random cz bf moblarını doğduran methodu dolduralım.
    Code:
    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);
    	}
    }
    ve bu methodu CGameServerDlg.cpp dosyasındaki "bool CGameServerDlg::Startup()" methodununun en alt satırında return' dan önce çağıralım


    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.

    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.
    	}
    }
    Aşağı yukarı hepsi bundan ibaret. Ula test serverini verin bana 1 tur deneyelim.

    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.

  6. #46
    Senior Member TheTick's Avatar
    Join Date
    Jul 2013
    Posts
    1,289
    Nickname
    MAGEOFDARKKINGDOOM
    Class
    KO -> Mage
    Server
    KO -> Ares
    Race
    El-Morad
    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

  7. #47
    Junior Member
    Join Date
    May 2016
    Posts
    16
    Quote Originally Posted by DisobedienceX View Post
    Ç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.
    Code:
    DELETE FROM K_NPCPOS WHERE ZoneID = 71 and NpcID IN (SELECT id 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%)
    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)

    CGameServerDlg.h sınıfı içerisinde koordinatları taşıyacak olan bir struct oluşturalım

    Code:
    struct Coordinate {
        double x, y;
        Coordiate(double paramX, double paramY) : x(paramX), y(paramY) {}
    };
    CGameServerDlg.h sınıfı içerisinde std::vector coords; değişkenini tanımlayalım

    Daha önceden oluşturduğumuz legal koordinat listesini okuyup coords değişkenine aktaralım.

    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.
    Code:
    Coordinate CGameServerDlg::GetRandomLegalCoordinate() {
    	auto randIt = coords.begin();
    	std::advance(randIt, std::rand() % coords.size());
    	return randIt;
    }
    CGameServerDlg.h içerisinde void InitRandomBfMonsters(); diye bir method tanımlayalım.
    CGameServerDlg.cpp içerisinde random cz bf moblarını doğduran methodu dolduralım.
    Code:
    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);
    	}
    }
    ve bu methodu CGameServerDlg.cpp dosyasındaki "bool CGameServerDlg::Startup()" methodununun en alt satırında return' dan önce çağıralım


    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.

    Code:
    {
    	..
    
    	int[6] bfMobIDs = { 5801, 5901, 6101, 6201, 6301, 6401 };
    	bool isBfMob = std::find(std::begin(bfMobIDs), std::end(bfMobIDsa), 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.
    	}
    }
    Aşağı yukarı hepsi bundan ibaret. Ula test serverini verin bana 1 tur deneyelim.

    Tabi NTTGAME yönetimi bu konuda ne der, bu durum onlar için ne kadar önemli bilmiyorum.
    dostum cz zaten cok büyük böyle bir güncelleme oyuncuyu iyice dagıtır ama bunu bowlun etrafına dagıtırsak bence oyunda şahane pk döner.Herkes bişeyler düsürmek için bowlda olur ittifaklar son bulur diye düsünüyorum

  8. #48
    Senior Member
    Join Date
    Sep 2018
    Posts
    248
    Class
    KO -> Priest
    Server
    KO -> Sirius
    Race
    El-Morad
    Quote Originally Posted by DisobedienceX View Post
    Ç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.
    Code:
    DELETE FROM K_NPCPOS WHERE ZoneID = 71 and NpcID IN (SELECT id 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%)
    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)

    CGameServerDlg.h sınıfı içerisinde koordinatları taşıyacak olan bir struct oluşturalım

    Code:
    struct Coordinate {
        double x, y;
        Coordiate(double paramX, double paramY) : x(paramX), y(paramY) {}
    };
    CGameServerDlg.h sınıfı içerisinde std::vector coords; değişkenini tanımlayalım

    Daha önceden oluşturduğumuz legal koordinat listesini okuyup coords değişkenine aktaralım.

    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.
    Code:
    Coordinate CGameServerDlg::GetRandomLegalCoordinate() {
    	auto randIt = coords.begin();
    	std::advance(randIt, std::rand() % coords.size());
    	return randIt;
    }
    CGameServerDlg.h içerisinde void InitRandomBfMonsters(); diye bir method tanımlayalım.
    CGameServerDlg.cpp içerisinde random cz bf moblarını doğduran methodu dolduralım.
    Code:
    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);
    	}
    }
    ve bu methodu CGameServerDlg.cpp dosyasındaki "bool CGameServerDlg::Startup()" methodununun en alt satırında return' dan önce çağıralım


    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.

    Code:
    {
    	..
    
    	int[6] bfMobIDs = { 5801, 5901, 6101, 6201, 6301, 6401 };
    	bool isBfMob = std::find(std::begin(bfMobIDs), std::end(bfMobIDsa), 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.
    	}
    }
    Aşağı yukarı hepsi bundan ibaret. Ula test serverini verin bana 1 tur deneyelim.

    Tabi NTTGAME yönetimi bu konuda ne der, bu durum onlar için ne kadar önemli bilmiyorum.
    çok kral adamsın, bu kadar zahmete bile gerek yok aslında, mobları kaldırıp fragment droplarını atross riotelere koysalar bile yeterli olur

  9. #49
    Eveeeeeeeeeet oyuncular bu kadar istekli hatta arkadaş kodunu bile ben yazarım diyor yetkili arkadaşlar neden istemiyor bi soralım ?

  10. #50
    Quote Originally Posted by DisobedienceX View Post
    Ç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.
    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%)
    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)

    CGameServerDlg.h sınıfı içerisinde koordinatları taşıyacak olan bir struct oluşturalım

    Code:
    struct Coordinate {
        double x, y;
        Coordiate(double paramX, double paramY) : x(paramX), y(paramY) {}
    };
    CGameServerDlg.h sınıfı içerisinde değişkenini tanımlayalım

    Code:
     
    std::vector< Coordinate > coords;
    Daha önceden oluşturduğumuz legal koordinat listesini okuyup coords değişkenine aktaralım.

    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.
    Code:
    Coordinate CGameServerDlg::GetRandomLegalCoordinate() {
    	auto randIt = coords.begin();
    	std::advance(randIt, std::rand() % coords.size());
    	return randIt;
    }
    CGameServerDlg.h içerisinde void InitRandomBfMonsters(); diye bir method tanımlayalım.
    CGameServerDlg.cpp içerisinde random cz bf moblarını doğduran methodu dolduralım.
    Code:
    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);
    	}
    }
    ve bu methodu CGameServerDlg.cpp dosyasındaki "bool CGameServerDlg::Startup()" methodununun en alt satırında return' dan önce çağıralım


    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.

    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.
    	}
    }
    Aşağı yukarı hepsi bundan ibaret. Ula test serverini verin bana 1 tur deneyelim.

    Tabi NTTGAME yönetimi bu konuda ne der, bu durum onlar için ne kadar önemli bilmiyorum.
    valla helal olsun reis nttgame le alakalı olsa bu durum boyle olmaz developer le alakalı durum sesimizi duyuracağımıza eminim

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
cookie_verity_form