Yardım Official Quest Sistemi ve Zindan Başlatma Sorunu - Yardım Gerekli

  • Konuyu açan Konuyu açan lucha57
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 2
  • Gösterim Gösterim 103
Konu sahibi bu konuda soru soruyor. Sorusu ile ilgili bilgisi olanların yanıtlamasını bekliyor.

lucha57

Üye
Üye
Mesaj
20
Çözümler
1
Beğeni
10
Puan
693
Ticaret Puanı
0
Merhaba Arkadaşlar,

Martysama alt yapısını kullanarak Azyrah benzeri bir sunucu kurdum. Dosyalarda Şeytan Kulesi'nden Alastor'a kadar tüm sistemler mevcut:
✔ +15 rastgele değerli silahlar
✔ Parlama efektleri ve auralar sorunsuz çalışıyor
✔ Görsel dosyalar (aura01.dds gibi) düzgün yükleniyor
✔ Yohara kıtalarına gm karakteriyle kod yazarak ışınlanabiliyorum
✔ Elementer Dünya slotlarının dropları aktif kahraman ve soylu parçalarını elde edebiliyorum.
Ancak bazı sorunlar var:
• Hiçbir NPC quest çalışmıyor (Meley, Teovahdan, Yohara vb.)
• Zindan başlatamıyorum
• Kuşak emdirme/aura geliştirme pencereleri açılmıyor
• Hidra yüzüğü ile yeni kıtaya geçmek istiyorum fakat heykel ile etkileşime geçilmiyor.
• Elementer Dünyaya geçmek için portala tıklıyorum ve hiçbir şey olmuyor .
• Heykel önündeki soylu ve kahraman set demircileriyle etkileşime geçemiyorum.
Elimdeki Kaynaklar:
/usr/home/Source/Srcs/Server/game/src/ konumunda:

  • Meley Lair: MeleyLair.cpp, .h, questlua_meley_lair.cpp
  • White Dragon: WhiteDragon.cpp, .h, questlua_whitedragon.cpp
  • Snake Lair: SnakeLair.cpp, .h, questlua_snakelair.cpp•
İhtiyacım Olan :

  1. Resmi quest dosyalarına ulaşmanın bir yolu var mı?
  2. Bu sistemlerin çalışması için:
    • Questleri nasıl yazabilirim?
    • Hangi dosyalardan veri çekmem gerekiyor?
  3. NPC-quest entegrasyonu için örnek bir yapı
Özellikle Meley Zindanı ve Hidra için:

  • npc_quests.txt nasıl düzenlenmeli?
  • Temel bir meley_lair.quest örneği paylaşabilir misiniz?
Kaynak kodlar hazır ama quest kısmında tıkandım.
 
Selamlar Alastor ve Nethis zindanları için yabancı forumlarda daha önce bu sistemlerin paylaşıldığını görmüştüm. Belki oralardan yararlanabilirsiniz. Resmi quest dosyalarına erişmek sanırım şu an mümkün değil ancak benzerleri yazılabilir. Questleri yazmak için örnek konular mevcut forumda ancak quest fonksiyonlarını bilmek daha önemli bence.

Kendi sunucu dosyalarımda kullandığım meley questi:

meley_lair.quest:
Genişlet Daralt Kopyala
quest meley_lair begin
    state start begin
        when login with MeleyLair.IsMeleyMap() begin
            MeleyLair.Check()
        end

        when 20419.chat.locale_quest(1828) with MeleyLair.IsMeleyMap() begin
            say_title(mob_name(20419))
            say(locale_quest(1829))
            say(locale_quest(1832))
            if select(locale_quest(4473), locale_quest(3418)) != 1 then
                return
            end

            MeleyLair.Leave()
            setskin(NOWINDOW)
            return
        end

        when 20420.click with MeleyLair.IsMeleyMap() begin
            if select(locale_quest(1795), locale_quest(2426)) == 1 then
                if not MeleyLair.CanGetReward() then
                    say_title(mob_name(20420))
                    say(locale_quest(1796))
                else
                    say_title(mob_name(20420))
                    say(locale_quest(1797))

                    local rewardName = {
                        locale_quest(1799),
                        locale_quest(1800),
                    }
                    table.insert(rewardName, locale_quest(2426))
                    local rewardSelect = select_table(rewardName)

                    if rewardSelect == 1 then
                        say_title(mob_name(20420))
                        say(locale_quest(1801))
                        if select(locale_quest(2625), locale_quest(2600)) == 1 then
                            MeleyLair.Reward(rewardSelect)
                            say_title(mob_name(20420))
                            say(locale_quest(1803))
                        else return end
                    elseif rewardSelect == 2 then
                        say_title(mob_name(20420))
                        say(locale_quest(1802))
                        if select(locale_quest(2625), locale_quest(2600)) == 1 then
                            MeleyLair.Reward(rewardSelect)
                            say_title(mob_name(20420))
                            say(locale_quest(1803))
                        else return end
                    else return end
                end
            else return end
        end

        when 20388.click."" begin
            setskin(NOWINDOW)
            return
        end
    end
end
 
Selamlar Alastor ve Nethis zindanları için yabancı forumlarda daha önce bu sistemlerin paylaşıldığını görmüştüm. Belki oralardan yararlanabilirsiniz. Resmi quest dosyalarına erişmek sanırım şu an mümkün değil ancak benzerleri yazılabilir. Questleri yazmak için örnek konular mevcut forumda ancak quest fonksiyonlarını bilmek daha önemli bence.

Kendi sunucu dosyalarımda kullandığım meley questi:

meley_lair.quest:
Genişlet Daralt Kopyala
quest meley_lair begin
    state start begin
        when login with MeleyLair.IsMeleyMap() begin
            MeleyLair.Check()
        end

        when 20419.chat.locale_quest(1828) with MeleyLair.IsMeleyMap() begin
            say_title(mob_name(20419))
            say(locale_quest(1829))
            say(locale_quest(1832))
            if select(locale_quest(4473), locale_quest(3418)) != 1 then
                return
            end

            MeleyLair.Leave()
            setskin(NOWINDOW)
            return
        end

        when 20420.click with MeleyLair.IsMeleyMap() begin
            if select(locale_quest(1795), locale_quest(2426)) == 1 then
                if not MeleyLair.CanGetReward() then
                    say_title(mob_name(20420))
                    say(locale_quest(1796))
                else
                    say_title(mob_name(20420))
                    say(locale_quest(1797))

                    local rewardName = {
                        locale_quest(1799),
                        locale_quest(1800),
                    }
                    table.insert(rewardName, locale_quest(2426))
                    local rewardSelect = select_table(rewardName)

                    if rewardSelect == 1 then
                        say_title(mob_name(20420))
                        say(locale_quest(1801))
                        if select(locale_quest(2625), locale_quest(2600)) == 1 then
                            MeleyLair.Reward(rewardSelect)
                            say_title(mob_name(20420))
                            say(locale_quest(1803))
                        else return end
                    elseif rewardSelect == 2 then
                        say_title(mob_name(20420))
                        say(locale_quest(1802))
                        if select(locale_quest(2625), locale_quest(2600)) == 1 then
                            MeleyLair.Reward(rewardSelect)
                            say_title(mob_name(20420))
                            say(locale_quest(1803))
                        else return end
                    else return end
                end
            else return end
        end

        when 20388.click."" begin
            setskin(NOWINDOW)
            return
        end
    end
end
teşekkür ederim hocam
 
Geri
Üst