Kodların arasında sessizce duran Metin2 detayları

Mavi Taş Zırhı'nı çok seviyordum ben. Pazarlarda satılan en pahalı zırh olurdu genelde :D Siyah çelik bile daha ucuzdu :p
+9 Mavi Taş ve +9 Kanlı Kılıç kombini için okul harçlıklarımı biriktirip, aç dolaşıp o parayla yang almıştım, seti tamamladıktan sonra 1 yıl boyunca sadece köyde takılmıştım, hey gidi günler. 😄
 
+9 Mavi Taş ve +9 Kanlı Kılıç kombini için okul harçlıklarımı biriktirip, aç dolaşıp o parayla yang almıştım, seti tamamladıktan sonra 1 yıl boyunca sadece köyde takılmıştım, hey gidi günler. 😄
İşte o muazzam soru geliyor: Eskiler mi güzeldi eskiden mi güzeldik
 
İşte o muazzam soru geliyor: Eskiler mi güzeldi eskiden mi güzeldik
Bence ikisi birden, hem eski masumiyet, çocukluk güzeldi hem de eski günler gerçekten güzeldi ya, şimdi ki nesle bakıyorum da her şeyi ne kadar çabuk tüketiyorlar, eskilerde güzeldi, eskiden de güzeldik. :)
 
gameforge developerlerinin ultra mega zekasına şahit olacağınız bir hata göstermek istiyorum size:

adamlar kalkana wear_unique verip yüzüklere wear_shield vermişler. ve bunu protodan düzenlemek yerine de protoreaderden sırasını değiştirmişler. kimse düşünmedi mi niye kalkana unique wearflagı veriyoruz diye acaba? bu adamların zekasına akıl sır ermez vallahi.

bu arada based proto kullanmıyorsanız sizde protolar böyle olmayabilir. ama mainline ve novaline protoların hepsinde durum bu şekilde :D

Kod:
Genişlet Daralt Kopyala
kalkan kodu

13000    ȣ½ň¯Ɛ+0    ITEM_ARMOR    ARMOR_SHIELD    1    NONE    NONE    WEAR_UNIQUE

yüzük kodu

71145    ¿µ¿øǑ »綻ÀǠƒ´øƮ    ITEM_UNIQUE    UNIQUE_NONE    1    NONE    NONE    WEAR_SHIELD
 
gameforge developerlerinin ultra mega zekasına şahit olacağınız bir hata göstermek istiyorum size:

adamlar kalkana wear_unique verip yüzüklere wear_shield vermişler. ve bunu protodan düzenlemek yerine de protoreaderden sırasını değiştirmişler. kimse düşünmedi mi niye kalkana unique wearflagı veriyoruz diye acaba? bu adamların zekasına akıl sır ermez vallahi.

bu arada based proto kullanmıyorsanız sizde protolar böyle olmayabilir. ama mainline ve novaline protoların hepsinde durum bu şekilde :D

Kod:
Genişlet Daralt Kopyala
kalkan kodu

13000    ȣ½ň¯Ɛ+0    ITEM_ARMOR    ARMOR_SHIELD    1    NONE    NONE    WEAR_UNIQUE

yüzük kodu

71145    ¿µ¿øǑ »綻ÀǠƒ´øƮ    ITEM_UNIQUE    UNIQUE_NONE    1    NONE    NONE    WEAR_SHIELD
Ymir devleri
1718012901068.jpeg
 
Ymir Logic:
Genişlet Daralt Kopyala
    int pc_set_another_quest_flag (lua_State* L)
    {
        if (!lua_isstring (L, 1) || !lua_isstring (L, 2) || !lua_isnumber (L, 3))
        {
            sys_err ("QUEST wrong set flag");
            return 0;
        }
        else
        {
            const char* sz = lua_tostring (L, 1);
            const char* sz2 = lua_tostring (L, 2);
            CQuestManager& q = CQuestManager::Instance();
            PC* pPC = q.GetCurrentPC(); // Kontrol eklemeyelim, cunku neden ekleyelim ?? (Ymir)
            pPC->SetFlag (string (sz)+"."+sz2, int (rint (lua_tonumber (L, 3))));
            return 0;
        }
    }

    int pc_get_another_quest_flag (lua_State* L)
    {
        if (!lua_isstring (L, 1) || !lua_isstring (L, 2))
        {
            sys_err ("QUEST wrong get flag");
            return 0;
        }
        else
        {
            const char* sz = lua_tostring (L, 1);
            const char* sz2 = lua_tostring (L, 2);
            CQuestManager& q = CQuestManager::Instance();
            PC* pPC = q.GetCurrentPC();
            if (!pPC) // Kontrol ekleyelim, cunku gerekli... (Aynı zamanda yine Ymir)
            {
                return 0;
            }
            lua_pushnumber (L, pPC->GetFlag (string (sz)+"."+sz2));
            return 1;
        }
    }

Kodlarla vakit geçirdikçe bu projede çalışan neredeyse tüm yazılımcıların profesyonellikten oldukça uzak olduğunu düşünmeye başlamanız oldukça normal, bunun gibi bir sürü örnek var hadi diyelim farklı kişiler farklı fonksiyonları yazdı, sizden önce yapandan hiç mi kopya çekmediniz yahu, bir kontrol koymak bu kadar zor mu ? 🤔
 
Ymir Logic:
Genişlet Daralt Kopyala
    int pc_set_another_quest_flag (lua_State* L)
    {
        if (!lua_isstring (L, 1) || !lua_isstring (L, 2) || !lua_isnumber (L, 3))
        {
            sys_err ("QUEST wrong set flag");
            return 0;
        }
        else
        {
            const char* sz = lua_tostring (L, 1);
            const char* sz2 = lua_tostring (L, 2);
            CQuestManager& q = CQuestManager::Instance();
            PC* pPC = q.GetCurrentPC(); // Kontrol eklemeyelim, cunku neden ekleyelim ?? (Ymir)
            pPC->SetFlag (string (sz)+"."+sz2, int (rint (lua_tonumber (L, 3))));
            return 0;
        }
    }

    int pc_get_another_quest_flag (lua_State* L)
    {
        if (!lua_isstring (L, 1) || !lua_isstring (L, 2))
        {
            sys_err ("QUEST wrong get flag");
            return 0;
        }
        else
        {
            const char* sz = lua_tostring (L, 1);
            const char* sz2 = lua_tostring (L, 2);
            CQuestManager& q = CQuestManager::Instance();
            PC* pPC = q.GetCurrentPC();
            if (!pPC) // Kontrol ekleyelim, cunku gerekli... (Aynı zamanda yine Ymir)
            {
                return 0;
            }
            lua_pushnumber (L, pPC->GetFlag (string (sz)+"."+sz2));
            return 1;
        }
    }

Kodlarla vakit geçirdikçe bu projede çalışan neredeyse tüm yazılımcıların profesyonellikten oldukça uzak olduğunu düşünmeye başlamanız oldukça normal, bunun gibi bir sürü örnek var hadi diyelim farklı kişiler farklı fonksiyonları yazdı, sizden önce yapandan hiç mi kopya çekmediniz yahu, bir kontrol koymak bu kadar zor mu ? 🤔
char_item.cpp içinde gezinirken aynı kontrolün bazı yerde yapıldığını bazı yerde yapılmadığını görmüştüm ve vardır bir bildikleri deyip geçmiştim, yokmuş bir bildikleri 🤣
 
char_item.cpp içinde gezinirken aynı kontrolün bazı yerde yapıldığını bazı yerde yapılmadığını görmüştüm ve vardır bir bildikleri deyip geçmiştim, yokmuş bir bildikleri 🤣
Bir bildikleri vardır diye hiç ellemediğim belli başlı yerler var ama onlarda genelde tahmin ediyorum ki geliştirmenin ilk dönemlerinde yapıyı oluşturan sr. devlerden kalma, yoksa dediğiniz gibi char_xx.cpp dosyalarını questlua_xx.cpp dosyalarını incelemek kriz geçirmeye sebebiyet verebilir. 😄

Sonra core verip duruyor :D
Bu konuya o kadar taktım ki artık kafayı yeme derecesindeyim, dosyaları tek tek okuyup kontrol koymaya başladım, bu ss sadece server tarafı için ve henüz tüm dosyaları bitirmedim muhtemelen 400'ü geçecek. 😄

Adsız.png


Yani derleyiciler zaten artık modern, koyduğunuz ekstra kontrol performansı etkilemeyecek bile, fazladan kontrol ekleyip saçma sapan corelarla uğraşmaktan kurtulmak varken koca şirket neden bunu yapmadı aklım mantığım almıyor. :unsure:
 
Bu konuya o kadar taktım ki artık kafayı yeme derecesindeyim, dosyaları tek tek okuyup kontrol koymaya başladım, bu ss sadece server tarafı için ve henüz tüm dosyaları bitirmedim muhtemelen 400'ü geçecek. 😄

17537 eklentisini görüntüle

Yani derleyiciler zaten artık modern, koyduğunuz ekstra kontrol performansı etkilemeyecek bile, fazladan kontrol ekleyip saçma sapan corelarla uğraşmaktan kurtulmak varken koca şirket neden bunu yapmadı aklım mantığım almıyor. :unsure:
!ch yerine ch == nullptr kullanmışsın
SE.jpeg
 
Sys_err yazarken canı sıkılan Ymir devinden ufak çaplı resital ; :ROFLMAO:

questlua_quest.cpp:
Genişlet Daralt Kopyala
    int quest_coroutine_yield (lua_State* L)
    {
        CQuestManager& q = CQuestManager::instance();
        // other_pc_block 내부에서는 yield가 일어나서는 안된다. 절대로.
        if (q.IsInOtherPCBlock())
        {
            sys_err ("FATAL ERROR! Yield occur in other_pc_block.");
            PC* pPC = q.GetOtherPCBlockRootPC();
            if (NULL == pPC)
            {
                sys_err ("    ... FFFAAATTTAAALLL Error. RootPC is NULL");
                return 0;
            }
            QuestState* pQS = pPC->GetRunningQuestState();
            if (NULL == pQS || NULL == q.GetQuestStateName (pPC->GetCurrentQuestName(), pQS->st))
            {
                sys_err ("    ... WHO AM I? WHERE AM I? I only know QuestName(%s)...", pPC->GetCurrentQuestName().c_str());
            }
            else
            {
                sys_err ("    Current Quest(%s). State(%s)", pPC->GetCurrentQuestName().c_str(), q.GetQuestStateName (pPC->GetCurrentQuestName(), pQS->st));
            }
            return 0;
        }
        return lua_yield (L, lua_gettop (L));
    }
 
Sys_err yazarken canı sıkılan Ymir devinden ufak çaplı resital ; :ROFLMAO:

questlua_quest.cpp:
Genişlet Daralt Kopyala
    int quest_coroutine_yield (lua_State* L)
    {
        CQuestManager& q = CQuestManager::instance();
        // other_pc_block 내부에서는 yield가 일어나서는 안된다. 절대로.
        if (q.IsInOtherPCBlock())
        {
            sys_err ("FATAL ERROR! Yield occur in other_pc_block.");
            PC* pPC = q.GetOtherPCBlockRootPC();
            if (NULL == pPC)
            {
                sys_err ("    ... FFFAAATTTAAALLL Error. RootPC is NULL");
                return 0;
            }
            QuestState* pQS = pPC->GetRunningQuestState();
            if (NULL == pQS || NULL == q.GetQuestStateName (pPC->GetCurrentQuestName(), pQS->st))
            {
                sys_err ("    ... WHO AM I? WHERE AM I? I only know QuestName(%s)...", pPC->GetCurrentQuestName().c_str());
            }
            else
            {
                sys_err ("    Current Quest(%s). State(%s)", pPC->GetCurrentQuestName().c_str(), q.GetQuestStateName (pPC->GetCurrentQuestName(), pQS->st));
            }
            return 0;
        }
        return lua_yield (L, lua_gettop (L));
    }

RootPc :D
 
Üst