Yardım bazı quest fonksiyonları çalışmıyor nedendir bakabilirmisiniz

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

ergun66

Yasaklanmış Üye
Cezalı
Mesaj
161
Çözümler
1
Beğeni
32
Puan
71
Ticaret Puanı
0
Lua (Quest):
Genişlet Daralt Kopyala
elseif ((pc.get_weapon() > 0) or (pc.get_armor() > 0) or (pc.get_head() > 0) or (pc.get_costume_body() > 0) or (pc.get_costume_hair() > 0) or (pc.get_arrow() > 0) or (pc.get_belt() > 0)) then
                say_title("Karakter Değişimi -> Hata[ENTER]")
                    say("Karakterinizde giyili olan herşeyi çıkarmalısın.[ENTER]")
                    say_yellow("Silah-Zırh-Kask-Kostüm-Saç-(Ninja)Ok-Kemer[ENTER]Takılı ise çıkartıp tekrar işlem yapınız.[ENTER]")
                return false


şöyle bir kod bloğum var quest_funtionsa eklediğim halde çalışmıyor source ile iglili eklemeler mi yapmam gerekiyor yani anlamadım

peki önceden metin2 nin kendi orjinal serverı hangi kontrol kodlarını kullanıyordu ki giyili itemleri kontrol etttirsin queste

özellikle burada weapon armor çalışıyor ama gerisi çalışmıyor bana get_head custome_body costume_hair get_arrow lazım yani giyili kaskı kostümü kostümün saç stilini ve ok çantasındaki oku kontrol edecek kodlar hangileri acaba
 
get_weapon bu fonksiyonlara kaynak kodunda işlev eklediniz mi?
işte ben bilmiyorum eklemeyi sourceye eklemek gerekiyorsa gösterirseniz sevinirim ekliyeyim hemen dedigim gibi weapon armor için kodlar çalışıyor demekki sourcede ekli ben şu filesi kullanıyorum
Linkleri görebilmek için giriş yap veya kayıt ol.


ama ok çantasındaki okları kostümü ve kostüm saçını kontrol edecek kodları nasıl çalıştıracağım sourceden mi olacak bu iş
 
quest_functions dosyasına sadece var olan fonksiyonları tanımlamak için ekliyoruz. ./qc işlevi yaparken hata vermemesi için.

Mesela kaynak kodundan örnek bir quest fonksiyon;
C++:
Genişlet Daralt Kopyala
    ALUA(pc_getguild)
    {
        LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();
        lua_pushnumber(L, ch->GetGuild() ? ch->GetGuild()->GetID() : 0);
        return 1;
    }

pc.getguild fonksiyonunu kullandığınız zaman kaynak koduna tanımladığını şu fonksiyon çalışır. Diğer kodları incelemek isterseniz questlua_pc.cpp dosyasını incekeyebilirsiniz.

Bu arada item türünü alabilmek için ekstra fonksiyon eklemenize gerek yok. Zaten sistemde bu işleve yarayan fonksiyon var.
Hatta metin2 geliştirici eğitimi 4. ünitesinde item fonksiyonları gösterirken bunu göstermiştim. Buraya bakabilirsiniz;
 
yok olmuyor kod bilgim olmadığı için resmen okyanusun içimde gibi hissettim ne yapacağımı bilemiyorum bana sadece kask kostüm-kostüm saçı ve ok çantasındaki okların giyilip olup olmadığını kontol edecek kodlar gerekli questlua_pc.cpp eke verdim bana bi zahmet kontrol ederseniz birde kodları bana verirseniz ve kodu verseniz bile nereye kopyayacağımı dahi bilemiyorum ben

C++:
Genişlet Daralt Kopyala
int pc_get_weapon(lua_State * L)
    {
        LPITEM item = CQuestManager::instance().GetCurrentCharacterPtr()->GetWear(WEAR_WEAPON);

        if (!item)
            lua_pushnumber(L, 0);
        else
            lua_pushnumber(L, item->GetVnum());

        return 1;
    }

    int pc_get_armor(lua_State * L)
    {
        LPITEM item = CQuestManager::instance().GetCurrentCharacterPtr()->GetWear(WEAR_BODY);

        if (!item)
            lua_pushnumber(L, 0);
        else
            lua_pushnumber(L, item->GetVnum());

        return 1;
    }

    int pc_get_wear(lua_State * L)
    {
        if (!lua_isnumber(L, 1))
        {
            sys_err("QUEST wrong set flag");
            return 0;
        }

        BYTE bCell = (BYTE)lua_tonumber(L, 1);

        LPITEM item = CQuestManager::instance().GetCurrentCharacterPtr()->GetWear(bCell);


        if (!item)
            lua_pushnil(L);
        else
            lua_pushnumber(L, item->GetVnum());

        return 1;
    }
 

Dosya Eklentileri

En son bir moderatör tarafından düzenlenmiş:
Kaynak kodunda doğru tanımlanmış. Eğer olmuyorsa videoda gösterdiğim şekilde de item türlerinin kontrolünü yapabilirsiniz.
 
Kaynak kodunda doğru tanımlanmış. Eğer olmuyorsa videoda gösterdiğim şekilde de item türlerinin kontrolünü yapabilirsiniz.
allahalla o zaman nasıl çalışmıyor bu quest yahu anlam veremiyorum nerede hatası olabilir hayret ona bakacam şimdi teşekkürler geri dönüş yapacam


##ahh baktım ama o yöntem çok uzun utar çünkü item kodlarını girmek zorundasınız birsürü item var bu kodlar nasıl serverımda çalışmıyor yahu adama kafayı yedirtiyor :)
 
Son düzenleme:
İtem kodlarını değil. Kontrol etmek istediğiniz wearflag değerlerini giriyorsunuz. Aslında benim dediğim yöntem daha kısa. :) Her item türü için ayrı fonksiyon eklemek yerine tek fonksiyon ile tüm türleri kontrol etmek daha iyi ^_^

Tabii ki de tercih sizin. :)
 
İtem kodlarını değil. Kontrol etmek istediğiniz wearflag değerlerini giriyorsunuz. Aslında benim dediğim yöntem daha kısa. :) Her item türü için ayrı fonksiyon eklemek yerine tek fonksiyon ile tüm türleri kontrol etmek daha iyi ^_^

Tabii ki de tercih sizin. :)
mükemmel kodları queste döktüm peki kostüm ve kostüm saçı wearflagları kaç acaba ki

##sanırım 0 yanlışım varsa düzeltirsiniz

##queste entegre ettim hiçbir sorunu yok ama kodlar kontrol yapmıyor :( :( :(
 
Son düzenleme:
yok olmuyor kod bilgim olmadığı için resmen okyanusun içimde gibi hissettim ne yapacağımı bilemiyorum bana sadece kask kostüm-kostüm saçı ve ok çantasındaki okların giyilip olup olmadığını kontol edecek kodlar gerekli questlua_pc.cpp eke verdim bana bi zahmet kontrol ederseniz birde kodları bana verirseniz ve kodu verseniz bile nereye kopyayacağımı dahi bilemiyorum ben

C++:
Genişlet Daralt Kopyala
int pc_get_weapon(lua_State * L)
    {
        LPITEM item = CQuestManager::instance().GetCurrentCharacterPtr()->GetWear(WEAR_WEAPON);

        if (!item)
            lua_pushnumber(L, 0);
        else
            lua_pushnumber(L, item->GetVnum());

        return 1;
    }

    int pc_get_armor(lua_State * L)
    {
        LPITEM item = CQuestManager::instance().GetCurrentCharacterPtr()->GetWear(WEAR_BODY);

        if (!item)
            lua_pushnumber(L, 0);
        else
            lua_pushnumber(L, item->GetVnum());

        return 1;
    }

    int pc_get_wear(lua_State * L)
    {
        if (!lua_isnumber(L, 1))
        {
            sys_err("QUEST wrong set flag");
            return 0;
        }

        BYTE bCell = (BYTE)lua_tonumber(L, 1);

        LPITEM item = CQuestManager::instance().GetCurrentCharacterPtr()->GetWear(bCell);


        if (!item)
            lua_pushnil(L);
        else
            lua_pushnumber(L, item->GetVnum());

        return 1;
    }
aa 1 dakka burada sadece silah ve zırh tanımlanmış bana geriye kalan sadece ok çantasındaki okları kostümü ve kostümün saçını tanımlayacak kodlar hem quest hem sourceden çözmem lazım nasıl yapacağım

item.has_wearflag çalışmıyor yada çoklu bi şekilde kontorle izin vermiyor mu oyun acaba sorun oradan mı kaynaklı
 
Üst