Metin2 Dead-die fonksiyonunu ekleme

hiqermod

Üye
Üye
Mesaj
124
Çözümler
14
Beğeni
39
Puan
454
Nasıl Kullanılır:
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++:
QUEST_ITEM_INFORMER_EVENT,
hemen altına ekliyoruz
C++:
QUEST_DEAD_EVENT,
daha sonra questmanager.cpp dosyamızı açıyoruz ve aratıyoruz
C++:
m_mapEventName.insert(TEventNameMap::value_type("item_informer", QUEST_ITEM_INFORMER_EVENT));
hemen altına ekliyoruz
C++:
m_mapEventName.insert(TEventNameMap::value_type("dead", QUEST_DEAD_EVENT));
ve aynı dosyaya şu fonksiyonu ekleyerek devam ediyoruz
C++:
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++:
void        Kill(unsigned int pc, unsigned int npc);
hemen altına ekliyoruz
C++:
void        Dead(unsigned int pc);

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

    {
        return HandleReceiveAllEvent(pc, QUEST_DEAD_EVENT);
    }

questnpc.h ı açıyoruz ve aratıyoruz
C++:
bool    OnKill(PC& pc);
altına ekliyoruz
C++:
bool    OnDead(PC& pc);
ve son olarak openchar.cpp yi açıyoruz ve aratıyoruz
C++:
void CHARACTER::Dead(LPCHARACTER pkKiller, bool bImmediateDead)
ve süslü parantezin( '{ ' ) hemen başına ekliyoruz
C++:
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
 
Ç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 :)
 
Geri
Üst