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

Kaiser

⋞ 〈 ☪ 〉 ⋟
Yönetici
Premium Üye
Geliştirici
Yardımsever Üye
Editör
Mesaj
3.659
Çözümler
343
Beğeni
3.499
Puan
1.849

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

queslua_global.cpp içinde aratın:
C++:
int _find_npc_by_vnum (lua_State * L)

Fonksiyonun altına ekleyin:
C++:
    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++:
{    "find_npc_by_vnum",                _find_npc_by_vnum                },

Altına ekleyin:
C++:
{    "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++:
    /*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):
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.

 
Geri
Üst