Çözüldü At Çağırdığımda Gelmiyor

Bu konu çözüme ulaştırılmıştır. Çözüm için konuya yazılan tüm yorumları okumayı unutmayın. Eğer konudaki yorumlar sorununuzu çözmediyse yeni bir konu açabilirsiniz.
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.

DarkNight

Üye
Üye
Mesaj
98
Çözümler
8
Beğeni
24
Puan
429
Ticaret Puanı
0
Herkese iyi forumlar 21 level iken at asker at kitaba tıklayınca geliyor fakat at seviyesini 1 veya 11 seviye yaptığımda seviyeleri dahilinde olan çağırma kitaplarına tıkladığımda 1 seviye ve 11 seviye at gelmiyor. neyle alakalı olabilir bu?​

quest taraflı mı client src taraflı mı onu anlayamadım
 
Son düzenleme:
o zaman at resmi yada zırhlı at kitabı ile çağıracaksınız. ////
 
En son bir moderatör tarafından düzenlenmiş:
1 leveli at resmi ile 11 leveli zırhlı at kitabı ile çağırıyorum zaten. Konuda da belirttim.Detayladım şimdi konuyu.
quest tarafında eksikdir. Çalışan bir questi al koy object de use item gibi yerleri kontrol et yada asker at kitabındaki quest kodunu diğerleri içinde yap mob çağırma kısmını protona göre değiştir.
 
En son bir moderatör tarafından düzenlenmiş:
horse summon çağırma işlevinin başlamasıyla alakalı bir durum. ki çalışan filesimin questinden ekledim olmadı.
şu an yaşanan problem çağırma komutunu verdiğim mobun yanımaa gelmemesi. bu sebeple client src instancebase.cpp ile alakası olabilir mi bu durumun?
 
horse summon çağırma işlevinin başlamasıyla alakalı bir durum. ki çalışan filesimin questinden ekledim olmadı.
şu an yaşanan problem çağırma komutunu verdiğim mobun yanımaa gelmemesi. bu sebeple client src instancebase.cpp ile alakası olabilir mi bu durumun?
bu kod bloğunu kontrol edermisin ?
instancebase.cpp:
UINT CInstanceBase::SHORSE::GetLevel()

C++:
    if (m_pkActor)
    {
        DWORD mount = m_pkActor->GetRace();
        switch (mount)
        {
            case 20101:
            case 20102:
            case 20103:
                return 1;
            case 20104:
            case 20105:
            case 20106:
                return 2;
            case 20107:
            case 20108:
            case 20109:
            case 20110:
            case 20111:
            case 20112:
            case 20113:
            case 20114:
            case 20115:
            case 20116:
            case 20117:
            case 20118:
            case 20120:
            case 20121:
            case 20122:
            case 20123:
            case 20124:
            case 20125:
            case 34078:
            case 34079:
            case 34080:
            case 34081:
            case 34082:
                return 3;
            case 20119:
            case 20219:
            case 20220:
            case 20221:
            case 20222:
            case 20230:
                return 2;
        }

        {
            if ((20205 <= mount &&  20208 >= mount) ||
                (20214 == mount) || (20217 == mount)
                )
                return 2;

            if ((20209 <= mount &&  20212 >= mount) ||
                (20215 == mount) || (20218 == mount) ||           
                (20220 == mount)
                )
                return 3;
        }
    }
    return 0;
}
 
InstanceBase.cpp:
enum eMountType { MOUNT_TYPE_NONE = 0, MOUNT_TYPE_NORMAL = 1, MOUNT_TYPE_COMBAT = 2, MOUNT_TYPE_MILITARY = 3 };
eMountType GetMountLevelByVnum(DWORD dwMountVnum, bool IsNew)
{
    if (!dwMountVnum)
        return MOUNT_TYPE_NONE;

    switch (dwMountVnum)
    {
        // ### YES SKILL
        // @fixme116 begin
    case 20107: // normal military horse (no guild)
    case 20108: // normal military horse (guild member)
    case 20109: // normal military horse (guild master)
        if (IsNew)
            return MOUNT_TYPE_NONE;
        // @fixme116 end
        // Classic
    case 20110: // Classic Boar
    case 20111: // Classic Wolf
    case 20112: // Classic Tiger
    case 20113: // Classic Lion
    case 20114: // White Lion
    // Special Lv2
    case 20115: // Wild Battle Boar
    case 20116: // Fight Wolf
    case 20117: // Storm Tiger
    case 20118: // Battle Lion (bugged)
    case 20205: // Wild Battle Boar (alternative)
    case 20206: // Fight Wolf (alternative)
    case 20207: // Storm Tiger (alternative)
    case 20208: // Battle Lion (bugged) (alternative)
    // Royal Tigers
    case 20120: // blue
    case 20121: // dark red
    case 20122: // gold
    case 20123: // green
    case 20124: // pied
    case 20125: // white
    // Royal mounts (Special Lv3)
    case 20209: // Royal Boar
    case 20210: // Royal Wolf
    case 20211: // Royal Tiger
    case 20212: // Royal Lion
    //
    case 20215: // Rudolph m Lv3 (yes skill, yes atk)
    case 20218: // Rudolph f Lv3 (yes skill, yes atk)
    case 20225: // Dyno Lv3 (yes skill, yes atk)
    case 20230: // Turkey Lv3 (yes skill, yes atk)
        return MOUNT_TYPE_MILITARY;
        break;
        // ### NO SKILL YES ATK
        // @fixme116 begin
    case 20104: // normal combat horse (no guild)
    case 20105: // normal combat horse (guild member)
    case 20106: // normal combat horse (guild master)
        if (IsNew)
            return MOUNT_TYPE_NONE;
        // @fixme116 end
    case 20119: // Black Horse (no skill, yes atk)
    case 20214: // Rudolph m Lv2 (no skill, yes atk)
    case 20217: // Rudolph f Lv2 (no skill, yes atk)
    case 20219: // Equus Porphyreus (no skill, yes atk)
    case 20220: // Comet (no skill, yes atk)
    case 20221: // Polar Predator (no skill, yes atk)
    case 20222: // Armoured Panda (no skill, yes atk)
    case 20224: // Dyno Lv2 (no skill, yes atk)
    case 20226: // Nightmare (no skill, yes atk)
    case 20227: // Unicorn (no skill, yes atk)
    case 20229: // Turkey Lv2 (no skill, yes atk)
    case 20231: // Leopard (no skill, yes atk)
    case 20232: // Black Panther (no skill, yes atk)
        return MOUNT_TYPE_COMBAT;
        break;
        // ### NO SKILL NO ATK
        // @fixme116 begin
    case 20101: // normal beginner horse (no guild)
    case 20102: // normal beginner horse (guild member)
    case 20103: // normal beginner horse (guild master)
        if (IsNew)
            return MOUNT_TYPE_NONE;
        // @fixme116 end
    case 20213: // Rudolph m Lv1 (no skill, no atk)
    case 20216: // Rudolph f Lv1 (no skill, no atk)
    // Special Lv1
    case 20201: // Boar Lv1 (no skill, no atk)
    case 20202: // Wolf Lv1 (no skill, no atk)
    case 20203: // Tiger Lv1 (no skill, no atk)
    case 20204: // Lion Lv1 (no skill, no atk)
    //
    case 20223: // Dyno Lv1 (no skill, no atk)
    case 20228: // Turkey Lv1 (no skill, no atk)
        return MOUNT_TYPE_NORMAL;
        break;
    default:
        return MOUNT_TYPE_NONE;
        break;
    }
}

UINT CInstanceBase::SHORSE::GetLevel()
{
    if (m_pkActor)
    {
#ifndef ENABLE_NO_MOUNT_CHECK
        return static_cast<UINT>(GetMountLevelByVnum(m_pkActor->GetRace(), false));
#else
        return (m_pkActor->GetRace()) ? MOUNT_TYPE_MILITARY : MOUNT_TYPE_NONE;
#endif
    }
    return 0;
}

MARTY SAMA ALT YAPI KOD BLOĞU BÖYLE
 
Konu içeriğine yardımcı olacaksanız yorum yapınız. İnsanları küçük düşürücü yorum ya da tartışma yaratacak yorumlar atmayın. İlgili yorumlar silinmiş olup gerekli uyarılar verilmiştir.

İyi forumlar.
 
Bu kısım güç binekleri ile ilgili. Yani bunun atın gelmemesiyle ilgisi yok. server taraflı syserr varmı?
 
dikkat ettiğim bir şey var arkadaşın bak dediği kod bloğu bende bu şekilde;

C++:
INT CInstanceBase::SHORSE::GetLevel()
{
    if (m_pkActor)
    {
#ifndef ENABLE_NO_MOUNT_CHECK
        return static_cast<UINT>(GetMountLevelByVnum(m_pkActor->GetRace(), false));
#else
        return (m_pkActor->GetRace()) ? MOUNT_TYPE_MILITARY : MOUNT_TYPE_NONE;
#endif
    }
    return 0;
}
 
syser var şu şekilde 1 seviye at için at resmine tıkladığımda;

C++:
SYSERR: Apr  6 01:52:54 :: RunState: LUA_ERROR: [string "horse_summon"]:22: attempt to call field `get_horse_summon_prob_pct' (a nil value)
SYSERR: Apr  6 01:52:54 :: WriteRunningStateToSyserr: LUA_ERROR: quest horse_summon.start click
 
syser var şu şekilde 1 seviye at için at resmine tıkladığımda;

C++:
SYSERR: Apr  6 01:52:54 :: RunState: LUA_ERROR: [string "horse_summon"]:22: attempt to call field `get_horse_summon_prob_pct' (a nil value)
SYSERR: Apr  6 01:52:54 :: WriteRunningStateToSyserr: LUA_ERROR: quest horse_summon.start click
bu syserr quest ile alakalı lua fonksiyonu yazamıyor farklı bi quest denermisin. sh make.sh çekip
 
legendy de bulunan horse summonu (take_horse.lua) 'ı objeleri silip make yaptım fakat sorun aynı. Elinde questi olan varsa öyle deneyeyim?
 
Bu hiç değiştirilmemiş quest.
Lua (Quest):
quest horse_summon begin
        state start begin

function get_horse_summon_prob_pct()
        local skill_level=pc.get_skill_level(131)
        if skill_level==1 then
                return 15
        elseif skill_level==2 then
                return 20
        elseif skill_level==3 then
                return 30
        elseif skill_level==4 then
                return 40
        elseif skill_level==5 then
                return 50
        elseif skill_level==6 then
                return 60
        elseif skill_level==7 then
                return 70
        elseif skill_level==8 then
                return 80
        elseif skill_level==9 then
                return 90
        elseif skill_level>=10 then
                return 100
        end
        return 10
end


                when 20349.chat."Yeni At Resmi" with horse.get_grade()==1 and pc.countitem("50051")<1 begin
                        say_title("Seyis:")
                        say("")
                        ----"12345678901234567890123456789012345678901234567890"|
                        say("Binici resmini kaybettin.")
                        say("Bana 10.000 Yang verirsen sana ")
                        say("yenisini verebilirim.")
                        say("")
                        local b=select("Al", "Alma")
                        if 1==b then
                                if pc.money>=10000 then
                                        pc.changemoney(-10000)
                                        say_title("Seyis:")
                                        say("")
                                        ----"12345678901234567890123456789012345678901234567890"|
                                        say("Bu yeni binici resmin.")
                                        say("Tekrar kaybetme!")
                                        pc.give_item2("50051", 1)
                                else
                                        say_title("Seyis:")
                                        say("")
                                        ----"12345678901234567890123456789012345678901234567890"|
                                        say("Yeterli Yang'ın yok.")
                                        say("")
                                end
                        elseif 2==b then
                        else
                                say("UNBEKANNTE TASTE ["..b.."]")
                        end
                end
                when 20349.chat."Yeni Zırhlı At Kitabı " with horse.get_grade()==2 and pc.countitem("50052")<1 begin
                        say_title("Seyis:")
                        say("")
                        ----"12345678901234567890123456789012345678901234567890"|
                        say("Zırhlı At Kitabını kaybettin!")
                        say("50.000 Yang'a sana yenisini ")
                        say("verebilirim.")
                        say("")
                        local b=select("Kabul", "Vazgeç ")
                        if 1==b then
                                if pc.money>=50000 then
                                        pc.changemoney(-50000)
                                        say_title("Ahır Görevlisi:")
                                        say("")
                                        -----------"12345678901234567890123456789012345678901234567890"|
                                        say("Bu Yeni Zırhlı At Kitabın.")
                                        say("Tekrar kaybetme!")
                                        pc.give_item2("50052", 1)
                                else
                                        say("Yeterli Yang'ın yok.")
                                end
                        elseif 2==b then
                        else
                                say("UNBEKANNTE TASTE ["..b.."]")
                        end
                end
                when 20349.chat."Yeni Asker At Kitabı " with horse.get_grade()==3 and pc.countitem("50053")<1 begin
                        say_title("Seyis:")
                        say("")
                        ----"12345678901234567890123456789012345678901234567890"|
                        say("Asker At Kitabını kaybettin!")
                        say("100.000 Yang'a sana yenisini verebilirim.")
                        say("")
                        local b=select("Kabul", "Vazgeç ")
                        if 1==b then
                                if pc.money>=100000 then
                                        pc.changemoney(-100000)
                                        say_title("Bilgi:")
                                        say("")
                                        ----"12345678901234567890123456789012345678901234567890"|
                                        say("Bu yeni Asker At Kitabın.")
                                        say("Onu yine kaybetme!")
                                        say("")
                                        pc.give_item2("50053", 1)
                                else
                                        say_title("Seyis:")
                                        say("")
                                        ----"12345678901234567890123456789012345678901234567890"|
                                        say("Yeterli Yang'ın yok.")
                                end
                        elseif 2==b then
                        else
                                say("UNBEKANNTE TASTE ["..b.."]")
                        end
                end
                when 50051.use with horse.get_grade()==0 begin
                        say_title("Bilgi:")
                        say("")
                        ----"12345678901234567890123456789012345678901234567890"|
                        say("Acemi at çağırmak için;")
                        say("önce acemi at görevini yapman gerek.")
                end
                when 50051.use with horse.get_grade()==1 begin
                    if pc.get_map_index() == 113 then
                                say_title("Bilgi:")
                                    say("")
                                    say_reward("O-X yarışmasında bulunduğun sırada")
                                    say_reward("atını çağıramazsın.")
                                    say("")
                        else
                        if pc.getsp()>=100 then
                                if number(1, 100)<=horse_summon.get_horse_summon_prob_pct() then
                                        say_title("Bilgi:")
                                        say("")
                                        say("Acemi at çağrıldı.")
                                        say("")
                                        horse.summon()
                                else
                                        say_title("Bilgi:")
                                        say("")
                                        -----------"12345678901234567890123456789012345678901234567890"|
                                        say_reward("Olmadı - Acemi at çağırma başarısız. At Çağırma")
                                        say_reward("yeteneğini geliştirerek çağırma şansını ")
                                        say_reward("arttırabilirsin.")
                                end
                                pc.change_sp(-100)
                        else
                                say_title("Bilgi:")
                                say("")
                                -----------"12345678901234567890123456789012345678901234567890"|
                                say_reward("Zihinsel gücün az. Acemi atı çağırabilmen için")
                                say_reward("en az 100 Mana Puanına sahip olman gerekir.")
                        end
                end
            end
                when 50051.use with horse.get_grade()==2 begin
                        say_title("Bilgi:")
                        say("")
                        -----------"12345678901234567890123456789012345678901234567890"|
                        say_reward("İleri seviyedeki atı çağırmak için,")
                        say_reward("Zırhlı At Kitabı ")
                        say_reward("lazım.")
                        say("")
                end
                when 50051.use with horse.get_grade()==3 begin
                        say_title("Bilgi:")
                        say("")
                        -----------"12345678901234567890123456789012345678901234567890"|
                        say_reward("Uzman seviyedeki atları çağırmak için")
                        say_reward("Asker At Kitabı ")
                        say_reward("lazım.")
                        say("")
                end
                when 50052.use with horse.get_grade()==0 begin
                        say_title("Bilgi:")
                        say("")
                        -----------"12345678901234567890123456789012345678901234567890"|
                        say_reward("Orta seviyedeki atı çağırman için")
                        say_reward("acemi at görevini")
                        say_reward("yapman lazım.")
                        say("")
                end
                when 50052.use with horse.get_grade()==1 begin
                        say_title("Bilgi:")
                        say("")
                        -----------"12345678901234567890123456789012345678901234567890"|
                        say_reward("Acemi atı çağırman için,")
                        say_reward("at resmi lazım.")
                end
                when 50052.use with horse.get_grade()==2 begin
                        if pc.get_map_index() == 113 then
                                say_title("Bilgi:")
                                    say("")
                                    say_reward("O-X yarışmasında bulunduğun sırada")
                                    say_reward("atını çağıramazsın.")
                                    say("")
                        else
                        if pc.getsp()>=200 then
                                if number(1, 100)<=horse_summon.get_horse_summon_prob_pct() then
                        say_title("Bilgi:")
                        say("")
                        -----------"12345678901234567890123456789012345678901234567890"|
                        say_reward("İleri seviyedeki at çağırıldı.")
                        say("")
                        horse.summon()
                        else
                        say_title("Bilgi:")
                        say("")
                        -----------"12345678901234567890123456789012345678901234567890"|
                       say_reward("Olmadı - Zırhlı at çağırma başarısız. At Çağırma")
                       say_reward("yeteneğini geliştirerek çağırma şansını ")
                       say_reward("arttırabilirsin.")
                                end
                                pc.change_sp(-200)
                        else
                        say_title("Bilgi:")
                        say("")
                        -----------"12345678901234567890123456789012345678901234567890"|
                        say_reward("Zihinsel gücün az. Zırhlı atı çağırabilmen için")
                        say_reward("en az 200 Mana Puanına sahip olman gerekir.")
                        say("")
                        end
                end
            end
                when 50052.use with horse.get_grade()==3 begin
                        say_title("Bilgi:")
                        say("")
                        -----------"12345678901234567890123456789012345678901234567890"|
                        say_reward("Asker atı çağırman için")
                        say_reward("sana Asker At Kitabı ")
                        say_reward("lazım.")
                        say("")
                end
                when 50053.use with horse.get_grade()==0 begin
                        say_title("Bilgi:")
                        say("")
                        -----------"12345678901234567890123456789012345678901234567890"|
                        say_reward("İleri seviyedeki atı çağırman için,")
                        say_reward("acemi at görevini")
                        say_reward("yapman lazım.")
                        say("")
                end
                when 50053.use with horse.get_grade()==1 begin
                        say_title("Bilgi:")
                        say("")
                        -----------"12345678901234567890123456789012345678901234567890"|
                        say_reward("Acemi atı çagirman için,")
                        say_reward("At resmi lazim.")
                        say("")
                end
                when 50053.use with horse.get_grade()==2 begin
                        say_title("Bilgi:")
                        say("")
                        -----------"12345678901234567890123456789012345678901234567890"|
                        say_reward("Orta seviyedeki atı çağırman için")
                        say_reward("sana Zırhlı At Kitabı ")
                        say_reward("lazım.")
                        say("")
                end
                when 50053.use with horse.get_grade()==3 begin
                        if pc.get_map_index() == 113 then
                                say_title("Bilgi:")
                                    say("")
                                    say_reward("O-X yarışmasında bulunduğun sırada")
                                    say_reward("atını çağıramazsın.")
                                    say("")
                        else
                        if pc.getsp()>=300 then
                                if number(1, 100)<=horse_summon.get_horse_summon_prob_pct() then
                        say_title("Bilgi:")
                        say("")
                        -----------"12345678901234567890123456789012345678901234567890"|
                        say_reward("Uzman binici atı çağırıldı.")
                        say("")
                        horse.summon()
                        else
                        say_title("Bilgi:")
                        say("")
                        -----------"12345678901234567890123456789012345678901234567890"|
                        say_reward("Olmadı - Asker at çağırma başarısız. At Çağırma")
                        say_reward("yeteneğini geliştirerek çağırma şansını ")
                        say_reward("arttırabilirsin.")
                        end
                        pc.change_sp(-300)
                        else
                        say_title("Bilgi:")
                        say("")
                        -----------"12345678901234567890123456789012345678901234567890"|
                        say_reward("Zihinsel gücün az. Uzman atı çağırabilmen için")
                        say_reward("en az 300 Mana Puanına sahip olman gerekir.")
                        say("")
                        end
                end
        end
    end
        state __COMPLETE__ begin
                when enter begin
                        q.done()
                end
        end
end
 
aynı syser devam ediyor

Bu hiç değiştirilmemiş quest.
Lua (Quest):
quest horse_summon begin
        state start begin

function get_horse_summon_prob_pct()
        local skill_level=pc.get_skill_level(131)
        if skill_level==1 then
                return 15
        elseif skill_level==2 then
                return 20
        elseif skill_level==3 then
                return 30
        elseif skill_level==4 then
                return 40
        elseif skill_level==5 then
                return 50
        elseif skill_level==6 then
                return 60
        elseif skill_level==7 then
                return 70
        elseif skill_level==8 then
                return 80
        elseif skill_level==9 then
                return 90
        elseif skill_level>=10 then
                return 100
        end
        return 10
end


                when 20349.chat."Yeni At Resmi" with horse.get_grade()==1 and pc.countitem("50051")<1 begin
                        say_title("Seyis:")
                        say("")
                        ----"12345678901234567890123456789012345678901234567890"|
                        say("Binici resmini kaybettin.")
                        say("Bana 10.000 Yang verirsen sana ")
                        say("yenisini verebilirim.")
                        say("")
                        local b=select("Al", "Alma")
                        if 1==b then
                                if pc.money>=10000 then
                                        pc.changemoney(-10000)
                                        say_title("Seyis:")
                                        say("")
                                        ----"12345678901234567890123456789012345678901234567890"|
                                        say("Bu yeni binici resmin.")
                                        say("Tekrar kaybetme!")
                                        pc.give_item2("50051", 1)
                                else
                                        say_title("Seyis:")
                                        say("")
                                        ----"12345678901234567890123456789012345678901234567890"|
                                        say("Yeterli Yang'ın yok.")
                                        say("")
                                end
                        elseif 2==b then
                        else
                                say("UNBEKANNTE TASTE ["..b.."]")
                        end
                end
                when 20349.chat."Yeni Zırhlı At Kitabı " with horse.get_grade()==2 and pc.countitem("50052")<1 begin
                        say_title("Seyis:")
                        say("")
                        ----"12345678901234567890123456789012345678901234567890"|
                        say("Zırhlı At Kitabını kaybettin!")
                        say("50.000 Yang'a sana yenisini ")
                        say("verebilirim.")
                        say("")
                        local b=select("Kabul", "Vazgeç ")
                        if 1==b then
                                if pc.money>=50000 then
                                        pc.changemoney(-50000)
                                        say_title("Ahır Görevlisi:")
                                        say("")
                                        -----------"12345678901234567890123456789012345678901234567890"|
                                        say("Bu Yeni Zırhlı At Kitabın.")
                                        say("Tekrar kaybetme!")
                                        pc.give_item2("50052", 1)
                                else
                                        say("Yeterli Yang'ın yok.")
                                end
                        elseif 2==b then
                        else
                                say("UNBEKANNTE TASTE ["..b.."]")
                        end
                end
                when 20349.chat."Yeni Asker At Kitabı " with horse.get_grade()==3 and pc.countitem("50053")<1 begin
                        say_title("Seyis:")
                        say("")
                        ----"12345678901234567890123456789012345678901234567890"|
                        say("Asker At Kitabını kaybettin!")
                        say("100.000 Yang'a sana yenisini verebilirim.")
                        say("")
                        local b=select("Kabul", "Vazgeç ")
                        if 1==b then
                                if pc.money>=100000 then
                                        pc.changemoney(-100000)
                                        say_title("Bilgi:")
                                        say("")
                                        ----"12345678901234567890123456789012345678901234567890"|
                                        say("Bu yeni Asker At Kitabın.")
                                        say("Onu yine kaybetme!")
                                        say("")
                                        pc.give_item2("50053", 1)
                                else
                                        say_title("Seyis:")
                                        say("")
                                        ----"12345678901234567890123456789012345678901234567890"|
                                        say("Yeterli Yang'ın yok.")
                                end
                        elseif 2==b then
                        else
                                say("UNBEKANNTE TASTE ["..b.."]")
                        end
                end
                when 50051.use with horse.get_grade()==0 begin
                        say_title("Bilgi:")
                        say("")
                        ----"12345678901234567890123456789012345678901234567890"|
                        say("Acemi at çağırmak için;")
                        say("önce acemi at görevini yapman gerek.")
                end
                when 50051.use with horse.get_grade()==1 begin
                    if pc.get_map_index() == 113 then
                                say_title("Bilgi:")
                                    say("")
                                    say_reward("O-X yarışmasında bulunduğun sırada")
                                    say_reward("atını çağıramazsın.")
                                    say("")
                        else
                        if pc.getsp()>=100 then
                                if number(1, 100)<=horse_summon.get_horse_summon_prob_pct() then
                                        say_title("Bilgi:")
                                        say("")
                                        say("Acemi at çağrıldı.")
                                        say("")
                                        horse.summon()
                                else
                                        say_title("Bilgi:")
                                        say("")
                                        -----------"12345678901234567890123456789012345678901234567890"|
                                        say_reward("Olmadı - Acemi at çağırma başarısız. At Çağırma")
                                        say_reward("yeteneğini geliştirerek çağırma şansını ")
                                        say_reward("arttırabilirsin.")
                                end
                                pc.change_sp(-100)
                        else
                                say_title("Bilgi:")
                                say("")
                                -----------"12345678901234567890123456789012345678901234567890"|
                                say_reward("Zihinsel gücün az. Acemi atı çağırabilmen için")
                                say_reward("en az 100 Mana Puanına sahip olman gerekir.")
                        end
                end
            end
                when 50051.use with horse.get_grade()==2 begin
                        say_title("Bilgi:")
                        say("")
                        -----------"12345678901234567890123456789012345678901234567890"|
                        say_reward("İleri seviyedeki atı çağırmak için,")
                        say_reward("Zırhlı At Kitabı ")
                        say_reward("lazım.")
                        say("")
                end
                when 50051.use with horse.get_grade()==3 begin
                        say_title("Bilgi:")
                        say("")
                        -----------"12345678901234567890123456789012345678901234567890"|
                        say_reward("Uzman seviyedeki atları çağırmak için")
                        say_reward("Asker At Kitabı ")
                        say_reward("lazım.")
                        say("")
                end
                when 50052.use with horse.get_grade()==0 begin
                        say_title("Bilgi:")
                        say("")
                        -----------"12345678901234567890123456789012345678901234567890"|
                        say_reward("Orta seviyedeki atı çağırman için")
                        say_reward("acemi at görevini")
                        say_reward("yapman lazım.")
                        say("")
                end
                when 50052.use with horse.get_grade()==1 begin
                        say_title("Bilgi:")
                        say("")
                        -----------"12345678901234567890123456789012345678901234567890"|
                        say_reward("Acemi atı çağırman için,")
                        say_reward("at resmi lazım.")
                end
                when 50052.use with horse.get_grade()==2 begin
                        if pc.get_map_index() == 113 then
                                say_title("Bilgi:")
                                    say("")
                                    say_reward("O-X yarışmasında bulunduğun sırada")
                                    say_reward("atını çağıramazsın.")
                                    say("")
                        else
                        if pc.getsp()>=200 then
                                if number(1, 100)<=horse_summon.get_horse_summon_prob_pct() then
                        say_title("Bilgi:")
                        say("")
                        -----------"12345678901234567890123456789012345678901234567890"|
                        say_reward("İleri seviyedeki at çağırıldı.")
                        say("")
                        horse.summon()
                        else
                        say_title("Bilgi:")
                        say("")
                        -----------"12345678901234567890123456789012345678901234567890"|
                       say_reward("Olmadı - Zırhlı at çağırma başarısız. At Çağırma")
                       say_reward("yeteneğini geliştirerek çağırma şansını ")
                       say_reward("arttırabilirsin.")
                                end
                                pc.change_sp(-200)
                        else
                        say_title("Bilgi:")
                        say("")
                        -----------"12345678901234567890123456789012345678901234567890"|
                        say_reward("Zihinsel gücün az. Zırhlı atı çağırabilmen için")
                        say_reward("en az 200 Mana Puanına sahip olman gerekir.")
                        say("")
                        end
                end
            end
                when 50052.use with horse.get_grade()==3 begin
                        say_title("Bilgi:")
                        say("")
                        -----------"12345678901234567890123456789012345678901234567890"|
                        say_reward("Asker atı çağırman için")
                        say_reward("sana Asker At Kitabı ")
                        say_reward("lazım.")
                        say("")
                end
                when 50053.use with horse.get_grade()==0 begin
                        say_title("Bilgi:")
                        say("")
                        -----------"12345678901234567890123456789012345678901234567890"|
                        say_reward("İleri seviyedeki atı çağırman için,")
                        say_reward("acemi at görevini")
                        say_reward("yapman lazım.")
                        say("")
                end
                when 50053.use with horse.get_grade()==1 begin
                        say_title("Bilgi:")
                        say("")
                        -----------"12345678901234567890123456789012345678901234567890"|
                        say_reward("Acemi atı çagirman için,")
                        say_reward("At resmi lazim.")
                        say("")
                end
                when 50053.use with horse.get_grade()==2 begin
                        say_title("Bilgi:")
                        say("")
                        -----------"12345678901234567890123456789012345678901234567890"|
                        say_reward("Orta seviyedeki atı çağırman için")
                        say_reward("sana Zırhlı At Kitabı ")
                        say_reward("lazım.")
                        say("")
                end
                when 50053.use with horse.get_grade()==3 begin
                        if pc.get_map_index() == 113 then
                                say_title("Bilgi:")
                                    say("")
                                    say_reward("O-X yarışmasında bulunduğun sırada")
                                    say_reward("atını çağıramazsın.")
                                    say("")
                        else
                        if pc.getsp()>=300 then
                                if number(1, 100)<=horse_summon.get_horse_summon_prob_pct() then
                        say_title("Bilgi:")
                        say("")
                        -----------"12345678901234567890123456789012345678901234567890"|
                        say_reward("Uzman binici atı çağırıldı.")
                        say("")
                        horse.summon()
                        else
                        say_title("Bilgi:")
                        say("")
                        -----------"12345678901234567890123456789012345678901234567890"|
                        say_reward("Olmadı - Asker at çağırma başarısız. At Çağırma")
                        say_reward("yeteneğini geliştirerek çağırma şansını ")
                        say_reward("arttırabilirsin.")
                        end
                        pc.change_sp(-300)
                        else
                        say_title("Bilgi:")
                        say("")
                        -----------"12345678901234567890123456789012345678901234567890"|
                        say_reward("Zihinsel gücün az. Uzman atı çağırabilmen için")
                        say_reward("en az 300 Mana Puanına sahip olman gerekir.")
                        say("")
                        end
                end
        end
    end
        state __COMPLETE__ begin
                when enter begin
                        q.done()
                end
        end
end

At 1 level iken /horse summon komutunu girdiğimde at geliyor fakat at resmi ile gelmiyor
 
Questi denedim bir sıkıntı yok. Acaba sendeki eski questi iyi temizleyemedin mi?
 
questlua_horse.cpp:
#include "stdafx.h"

#include "questlua.h"
#include "questmanager.h"
#include "horsename_manager.h"
#include "char.h"
#include "affect.h"
#include "config.h"
#include "utils.h"

#undef sys_err
#ifndef __WIN32__
#define sys_err(fmt, args...) quest::CQuestManager::instance().QuestError(__FUNCTION__, __LINE__, fmt, ##args)
#else
#define sys_err(fmt, ...) quest::CQuestManager::instance().QuestError(__FUNCTION__, __LINE__, fmt, __VA_ARGS__)
#endif

namespace quest
{
    //
    // "horse" Lua functions
    //
    ALUA(horse_is_riding)
    {
        LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();

        if (ch->IsHorseRiding())
            lua_pushnumber(L, 1);
        else
            lua_pushnumber(L, 0);

        return 1;
    }

    ALUA(horse_is_summon)
    {
        LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();

        if (NULL != ch)
        {
            lua_pushboolean(L, (ch->GetHorse() != NULL) ? true : false);
        }
        else
        {
            lua_pushboolean(L, false);
        }

        return 1;
    }

    ALUA(horse_ride)
    {
        LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();
        ch->StartRiding();
        return 0;
    }

    ALUA(horse_unride)
    {
        LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();
        ch->StopRiding();
        return 0;
    }

    ALUA(horse_summon)
    {
        LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();

        // ¼ÒȯÇÏ¸é ¸Ö¸®¼ºÎÅÍ ´Ş·Á¿À´ÂÁö ¿©ºÎ
        bool bFromFar = lua_isboolean(L, 1) ? lua_toboolean(L, 1) : false;

        // ¼Òȯ¼öÀÇ vnum
        DWORD horseVnum= lua_isnumber(L, 2) ? lua_tonumber(L, 2) : 0;

        const char* name = lua_isstring(L, 3) ? lua_tostring(L, 3) : 0;
        ch->HorseSummon(true, bFromFar, horseVnum, name);
        return 0;
    }

    ALUA(horse_unsummon)
    {
        LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();
        ch->HorseSummon(false);
        return 0;
    }

    ALUA(horse_is_mine)
    {
        LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();
        LPCHARACTER horse = CQuestManager::instance().GetCurrentNPCCharacterPtr();

        lua_pushboolean(L, horse && horse->GetRider() == ch);
        return 1;
    }

    ALUA(horse_set_level)
    {
        LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();

        if (!lua_isnumber(L, 1))
            return 0;

        int newlevel = MINMAX(0, (int)lua_tonumber(L, 1), HORSE_MAX_LEVEL);
        ch->SetHorseLevel(newlevel);
        ch->ComputePoints();
        ch->SkillLevelPacket();
        return 0;
    }

    ALUA(horse_get_level)
    {
        LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();
        lua_pushnumber(L, ch->GetHorseLevel());
        return 1;
    }

    ALUA(horse_advance)
    {
        LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();

        if (ch->GetHorseLevel() >= HORSE_MAX_LEVEL)
            return 0;

        ch->SetHorseLevel(ch->GetHorseLevel() + 1);
        ch->ComputePoints();
        ch->SkillLevelPacket();
        return 0;
    }

    ALUA(horse_get_health)
    {
        LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();

        if (ch->GetHorseLevel())
            lua_pushnumber(L, ch->GetHorseHealth());
        else
            lua_pushnumber(L, 0);

        return 1;
    }

    ALUA(horse_get_health_pct)
    {
        LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();

        int pct = MINMAX(0, ch->GetHorseHealth() * 100 / ch->GetHorseMaxHealth(), 100);
        sys_log(1, "horse.get_health_pct %d", pct);

        if (ch->GetHorseLevel())
            lua_pushnumber(L, pct);
        else
            lua_pushnumber(L, 0);

        return 1;
    }

    ALUA(horse_get_stamina)
    {
        LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();

        if (ch->GetHorseLevel())
            lua_pushnumber(L, ch->GetHorseStamina());
        else
            lua_pushnumber(L, 0);

        return 1;
    }

    ALUA(horse_get_stamina_pct)
    {
        LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();
        int pct = MINMAX(0, ch->GetHorseStamina() * 100 / ch->GetHorseMaxStamina(), 100);
        sys_log(1, "horse.get_stamina_pct %d", pct);

        if (ch->GetHorseLevel())
            lua_pushnumber(L, pct);
        else
            lua_pushnumber(L, 0);

        return 1;
    }

    ALUA(horse_get_grade)
    {
        LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();
        lua_pushnumber(L, ch->GetHorseGrade());
        return 1;
    }

    ALUA(horse_is_dead)
    {
        LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();
        lua_pushboolean(L, ch->GetHorseHealth()<=0);
        return 1;
    }

    ALUA(horse_revive)
    {
        LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();
        if (ch->GetHorseLevel() > 0 && ch->GetHorseHealth() <= 0)
        {
            ch->ReviveHorse();
        }
        return 0;
    }

    ALUA(horse_feed)
    {
        LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();
        //DWORD dwHorseFood = ch->GetHorseLevel() + ITEM_HORSE_FOOD_1 - 1;
        if (ch->GetHorseLevel() > 0 && ch->GetHorseHealth() > 0)
        {
            ch->FeedHorse();
        }
        return 0;
    }

    ALUA(horse_set_name)
    {
        // ¸®ÅÏ°ª
        // 0 : ¼ÒÀ¯ÇÑ ¸»ÀÌ ¾ø´Ù
        // 1 : À߸øµÈ À̸§ÀÌ´Ù
        // 2 : À̸§ ¹Ù²Ù±â ¼º°ø

        if ( lua_isstring(L, -1) != true ) return 0;

        LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();

        if ( ch->GetHorseLevel() > 0 )
        {
            const char* pHorseName = lua_tostring(L, -1);

            if ( pHorseName == NULL || check_name(pHorseName) == 0 )
            {
                lua_pushnumber(L, 1);
            }
            else
            {
                int nHorseNameDuration = test_server == true ? 60*5 : 60*60*24*30;

                ch->SetQuestFlag("horse_name.valid_till", get_global_time() + nHorseNameDuration);
                ch->AddAffect(AFFECT_HORSE_NAME, 0, 0, 0, PASSES_PER_SEC(nHorseNameDuration), 0, true);

                CHorseNameManager::instance().UpdateHorseName(ch->GetPlayerID(), lua_tostring(L, -1), true);

                ch->HorseSummon(false, true);
                ch->HorseSummon(true, true);

                lua_pushnumber(L, 2);
            }
        }
        else
        {
            lua_pushnumber(L, 0);
        }

        return 1;
    }

    ALUA(horse_get_name)
    {
        LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();

        if ( ch != NULL )
        {
            const char* pHorseName = CHorseNameManager::instance().GetHorseName(ch->GetPlayerID());

            if ( pHorseName != NULL )
            {
                lua_pushstring(L, pHorseName);
                return 1;
            }
        }

        lua_pushstring(L, "");

        return 1;
    }
// #ifdef ENABLE_NEWSTUFF
    // ALUA(horse_set_stat0)
    // {
        // int m_health = MINMAX(0, lua_tonumber(L, 1), 50);
        // int m_stamina = MINMAX(0, lua_tonumber(L, 2), 200);

        // LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();

        // ch->UpdateHorseHealth(m_health - ch->GetHorseHealth());
        // ch->UpdateHorseStamina(m_stamina - ch->GetHorseStamina());

        // return 0;
    // }
// #endif
    void RegisterHorseFunctionTable()
    {
        luaL_reg horse_functions[] =
        {
            { "is_mine",        horse_is_mine            },
            { "is_riding",        horse_is_riding            },
            { "is_summon",        horse_is_summon            },
            { "ride",            horse_ride                },
            { "unride",            horse_unride            },
            { "summon",            horse_summon            },
            { "unsummon",        horse_unsummon            },
            { "advance",        horse_advance            },
            { "get_level",        horse_get_level            },
            { "set_level",        horse_set_level            },
            { "get_health",        horse_get_health        },
            { "get_health_pct",    horse_get_health_pct    },
            { "get_stamina",    horse_get_stamina        },
            { "get_stamina_pct",horse_get_stamina_pct    },
            { "get_grade",      horse_get_grade         },
            { "is_dead",        horse_is_dead            },
            { "revive",            horse_revive            },
            { "feed",            horse_feed                },
            { "set_name",        horse_set_name            },
            { "get_name",        horse_get_name            },
// #ifdef ENABLE_NEWSTUFF
            // horse.set_stat0(health, stamina) -- /do_horse_set_stat
            // { "set_stat0",        horse_set_stat0            },    // [return nothing]
// #endif
            { NULL,                NULL                    }
        };

        CQuestManager::instance().AddLuaFunctionTable("horse", horse_functions);
    }
}

questlua_horse.cpp böyle. buna bende dikkat ettim. Örneğin buradaki ALUA(horse_is_riding) ile başlıyan yer başka bi game src de int horse_is_riding(lua_State* L) şeklinde başlıyor ve ö yle devam ediyor. alakası olabilir mi?
 
get_horse_summon_prob_pct fonksiyonunu quest üzerinden kaldırılarak atın çağrılmasını %100 yapıp sorunu çözdüm.
 
Son düzenleme:
Çözüm
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.
Geri
Üst