[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.038
Çözümler
390
Beğeni
4.159
Puan
1.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
 
Geri
Üst