- Mesaj
- 1.081
- Çözümler
- 38
- Beğeni
- 1.179
- Puan
- 1.339
- Ticaret Puanı
- 0
Bence oyunun en güzel 2 savaşçı zırhı demir plaka ve mavi taş.Mavi Taş Zırhı'nı çok seviyordum ben. Pazarlarda satılan en pahalı zırh olurdu genelde Siyah çelik bile daha ucuzdu
Bence oyunun en güzel 2 savaşçı zırhı demir plaka ve mavi taş.Mavi Taş Zırhı'nı çok seviyordum ben. Pazarlarda satılan en pahalı zırh olurdu genelde Siyah çelik bile daha ucuzdu
+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.Mavi Taş Zırhı'nı çok seviyordum ben. Pazarlarda satılan en pahalı zırh olurdu genelde Siyah çelik bile daha ucuzdu
İşte o muazzam soru geliyor: Eskiler mi güzeldi eskiden mi güzeldik+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.
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.İşte o muazzam soru geliyor: Eskiler mi güzeldi eskiden mi güzeldik
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 devlerigameforge 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
Kod: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
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;
}
}
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 bildikleriYmir Logic: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 ?
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.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
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.Sonra core verip duruyor
!ch yerine ch == nullptr kullanmışsınBu 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.
Aslında çoğu yerde !ch şeklinde kullandım sanıyorum sadece cmd dosyalarında böyle kullanmıştım ss'de o çıkmış ama fotoğraf çok yaraladı onları da değiştireceğim gibi.!ch yerine ch == nullptr kullanmışsın
17538 eklentisini görüntüle
Emoji çok iyi, bunu foruma eklemek lazım!ch yerine ch == nullptr kullanmışsın
17538 eklentisini görüntüle
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 ;
questlua_quest.cpp: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)); }
o yazılar bana ait değil xdbu da vatansever srcden @luigina 'nın vatanseverdeki düzenleme başlıklarını okuyun onlar da çok iyi17669 eklentisini görüntüle
17670 eklentisini görüntüle
kime aito yazılar bana ait değil xd
Detaydan çok saçmalık var desem daha doğru olur. Tek tek incelerken o kadar fazla şeye denk geliyorsunuz ki yani bazılarını görünce gerçekten üstümü başımı yırtma aşamasına geldim. Tek tek çok fazla örnek verilebilir ama ben genel olarak metin2 projesinin kaynak kodları hakkında bir yorum yapayım;
Hard-coded bölümlerle dolu (nerdeyse tamamı), yazılım eğitimi alan bir gence okulda gösterecekleri ve "sakın bunu yapma" diyecekleri bütün yanlış teknikleri içeren, projenin başlangıcında yer alan bir iki senior yazılımcının yaptığı işin üstüne ekleme yaparken çalışan hiçbir şeyi değiştirmeyip 20 yıl sonra bile 2004'e uygun yazılan demode her şeyi muhafaza eden (ki o ekipten hala devam edenler var diye biliyorum, onlarda kaçak kat çıkmaya devam ediyor), C++ bir projede C tipi çok fazla referans içeren, null pointer ve overflow kontrollerinin yüzlercesinin eksik olduğu ve bütün bunları göz önünde bulundurup okurken bu oyun bu altyapıyla tüm dünyada nasıl anlık 5 milyon oyuncuya ulaştı diye düşündüren bir proje, hem saygı duyup hem de lanet ettiren cinsten.
anlatta bilelimDünya çapında 7 milyon aktif oyuncu reklamı yalandan ibaret, çinli botların ve easymetin2 ile başlayarak M2Bob'a kadar devam eden serüvenin sorumlusu GF'nin, fazla oyuncu göstermek amacı ile botlarla bizzat anlaştığı ve daha sonra ellerinde patladığı, medyadan özür diledikleri mükemmel bir hikayesi var. Araştırmanı öneririm