Metin2 Dead-die fonksiyonunu ekleme

  • Konuyu açan Konuyu açan hiqermod
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 2
  • Gösterim Gösterim 2K

hiqermod

Üye
Üye
Mesaj
124
Çözümler
14
Beğeni
40
Puan
454
Ticaret Puanı
0
Nasıl Kullanılır:
Genişlet Daralt Kopyala
quest deneme begin
    state start begin
        when dead begin -- die'nin görevini dead üstlenmiş oldu
            syschat("Öldünüz")
        end
    end
end
Merhaba arkadaşlar whistlenin eğitim serisinde lua kısmında ilerlerken oluşturduğumuz filesin die fonksiyonun çalışmadığını öğrendim ve bunun için bir çözüm yolu buldum serideki herkese faydalı olması için paylaşıyorum iyi forumlar.

öncelikle frezilla veya winscp den home/novaline/Srcs/Server/game/src dizinine giriyoruz işlemlerimizi burda yapacağız (Konumu farklı olanlar dikkate almasın!)

daha sonra quest.h ı bulup açıyoruz ve içerisinden aratıyoruz
C++:
Genişlet Daralt Kopyala
QUEST_ITEM_INFORMER_EVENT,
hemen altına ekliyoruz
C++:
Genişlet Daralt Kopyala
QUEST_DEAD_EVENT,
daha sonra questmanager.cpp dosyamızı açıyoruz ve aratıyoruz
C++:
Genişlet Daralt Kopyala
m_mapEventName.insert(TEventNameMap::value_type("item_informer", QUEST_ITEM_INFORMER_EVENT));
hemen altına ekliyoruz
C++:
Genişlet Daralt Kopyala
m_mapEventName.insert(TEventNameMap::value_type("dead", QUEST_DEAD_EVENT));
ve aynı dosyaya şu fonksiyonu ekleyerek devam ediyoruz
C++:
Genişlet Daralt Kopyala
void CQuestManager::Dead(unsigned int pc)

    {
        PC * pPC;

        if ((pPC = GetPC(pc)))
        {
            if (!CheckQuestLoaded(pPC))
                return;

            m_mapNPC[QUEST_NO_NPC].OnDead(*pPC);
        }
        else
            sys_err("QUEST no such pc id : %d", pc);
    }
diğer fonksiyonların yanına herhangi bir yere ekleyebilirsiniz

daha sonra questmanager.h ı açıyoruz ve aratıyoruz
C++:
Genişlet Daralt Kopyala
void        Kill(unsigned int pc, unsigned int npc);
hemen altına ekliyoruz
C++:
Genişlet Daralt Kopyala
void        Dead(unsigned int pc);

questnpc.cpp yi açıyoruz ve fonksiyonu ekliyoruz
C++:
Genişlet Daralt Kopyala
bool NPC::OnDead(PC& pc)

    {
        return HandleReceiveAllEvent(pc, QUEST_DEAD_EVENT);
    }

questnpc.h ı açıyoruz ve aratıyoruz
C++:
Genişlet Daralt Kopyala
bool    OnKill(PC& pc);
altına ekliyoruz
C++:
Genişlet Daralt Kopyala
bool    OnDead(PC& pc);
ve son olarak char_battle.cpp yi açıyoruz ve aratıyoruz
C++:
Genişlet Daralt Kopyala
void CHARACTER::Dead(LPCHARACTER pkKiller, bool bImmediateDead)
ve süslü parantezin( '{ ' ) hemen başına ekliyoruz
C++:
Genişlet Daralt Kopyala
quest::CQuestManager::instance().Dead(GetPlayerID());

biraz uzun fakat adımları takip ederseniz çözüme ulaşırsınız hatam varsa yorumlarda bildirerek düzeltilmesine yardımcı olun lütfen iyi forumlar dilerim.

artık hazırız derleyip kullanıma geçebiliriz eğitim serisinde die olarak geçen komutu bu işlemlerden sonra dead olarak kullanabilirsiniz
 
En son bir moderatör tarafından düzenlenmiş:
Çok güzel içerik olmuş. Sanırsam sıfırdan altyapı filesi için anlatıldı bu. Ana konu altına içeriğinizi ekliyorum. Katkılarınız için teşekkürler :)
 
Çok güzel içerik olmuş. Sanırsam sıfırdan altyapı filesi için anlatıldı bu. Ana konu altına içeriğinizi ekliyorum. Katkılarınız için teşekkürler :)
Evet alt yapı files için anlattım yeni başlayan arkadaşlar için vakit kaybı olmasın diye rastladığım sorunun çözümünü anlatiyim dedim :)
 
Uyarı: Bu konu açıldığından bu yana baya zaman geçmiş.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.
Geri
Üst