[C++ & Quest] Tek NPC'de Birden Fazla Cube Açma

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

Kaiser

Admin
Admin
Geliştirici
Yardımsever Üye
Mesaj
4.402
Çözümler
441
Beğeni
5.012
Puan
2.849
Ticaret Puanı
0

Linkleri görebilmek için giriş yap veya kayıt ol.

queslua_global.cpp içinde aratın:
C++:
Genişlet Daralt Kopyala
int _find_npc_by_vnum (lua_State * L)

Fonksiyonun altına ekleyin:
C++:
Genişlet Daralt Kopyala
    int _select_npc_by_vnum(lua_State* L)
    {
        if (!lua_isnumber(L, 1))
        {
            sys_err("invalid argument");
            return 1;
        }
       
        DWORD race = (DWORD) lua_tonumber(L, 1);    
        CharacterVectorInteractor i;
        if (CHARACTER_MANAGER::instance().GetCharactersByRaceNum(race, i))
        {
            CharacterVectorInteractor::iterator it = i.begin();
            while (it != i.end())
            {
                LPCHARACTER tch = *(it++);
               
                CQuestManager::instance().GetCurrentCharacterPtr()->SetQuestNPCID(tch->GetVID());
                return 1;
            }
        }
       
        //sys_err("not find(race = %d)", race);
       
        lua_pushnumber(L, 0);
        return 1;
    }

Tekrar arayın:
C++:
Genişlet Daralt Kopyala
{    "find_npc_by_vnum",                _find_npc_by_vnum                },

Altına ekleyin:
C++:
Genişlet Daralt Kopyala
{    "select_npc_by_vnum",                _select_npc_by_vnum                },

Ardından eğer varsa cube.cpp içinde şunu bulun ve tamamen yorum satırına çevirin:
C++:
Genişlet Daralt Kopyala
    /*long distance = DISTANCE_APPROX(ch->GetX() - npc->GetX(), ch->GetY() - npc->GetY());
    if (distance >= CUBE_MAX_DISTANCE)
    {
        sys_log(1, "CUBE: TOO_FAR: %s distance %d", ch->GetName(), distance);
        return;
    }*/

Son olarak quest kodları:

Lua (Quest):
Genişlet Daralt Kopyala
when 20383.chat."Cube Ekranı" begin
            setskin(NOWINDOW)
            command("cube open")
end
when 20383.chat."Cube Ekranı 1" begin
            setskin(NOWINDOW)
            select_npc_by_vnum(20017)
            command("cube open")
end
when 20383.chat."Cube Ekranı 2" begin
            setskin(NOWINDOW)
            select_npc_by_vnum(20385)
            command("cube open")
end

20017 ve 20385 gibi yerleri kendinize göre değiştirebilirsiniz.

 
paylaşım için çok sağol
 
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