Çözüldü Dönüşüm kürelerinün sadece belirli bir mapte çalışması ve eğer karakter dönüşmüş halde başka mape ışınlanmış olursa dönüşümü iptal etmek

  • Konuyu açan Konuyu açan Tengrist
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 5
  • Gösterim Gösterim 78
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ı.

Tengrist

MT Üye
MT Üye
Mesaj
691
Çözümler
25
Beğeni
505
Puan
809
Ticaret Puanı
0
Evst arkadaşlar src tabanlı nu polymorph kontrollerini hangi dosyalarda yapmalıyım? Quest ile yapmak istemiyorum
 
Çözüm
Bu durumu birazcık kullanışlı bir şekilde ele almak daha iyi olabilir. Mesela şöyle bir şey yapabilirsin:

char.h içinde bool IsWarp(); satırının altına şunu ekle:
C++:
Genişlet Daralt Kopyala
std::vector<int> kureMaps = {41, 1}; // küre için izin verilen haritalar.

Daha sonra char_item.cpp içinde şu düzenlemeyi yap:
C++:
Genişlet Daralt Kopyala
bool CHARACTER::ItemProcess_Polymorph(LPITEM item)
{
    // Eğer karakterin map indexi, bizim belirlediklerimiz dışındaysa küre kullanılamaz;
    if (std::find(kureMaps.begin(), kureMaps.end(), GetMapIndex()) == kureMaps.end())
    {
        ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Burada yasak."));
        return false;
    }
   
    [...]
}

Işınlandıktan sonra dönüşümün kapatılması için char_affect.cpp:
C++:
Genişlet Daralt Kopyala
bool...
Evst arkadaşlar src tabanlı nu polymorph kontrollerini hangi dosyalarda yapmalıyım? Quest ile yapmak istemiyorum
dönüşmüşken bineğe binemezsin engeli var benim paylaştığım binek sisteminde ordan yola çıkarak bir şeyler yapabilirsin belki
 
Kankam kod problem değil de metin2 de neyi nereye yazacağını öğrenmek sıkınto bakayım senin bineğe ordan bi yol düşünürüm
 
Kankam kod problem değil de metin2 de neyi nereye yazacağını öğrenmek sıkınto bakayım senin bineğe ordan bi yol düşünürüm
engeli oradan al sonra engeli nereye koymak istiyorsan oraya koy gerisi sana kalmış. ışınlandıktan sonra eski haline dönmesini istiyorsan mesela closeshoptaki setpolymorph kodunu kullan. eski haline dönüşsün. nereye koycağın sana kalmış.
 
Bu durumu birazcık kullanışlı bir şekilde ele almak daha iyi olabilir. Mesela şöyle bir şey yapabilirsin:

char.h içinde bool IsWarp(); satırının altına şunu ekle:
C++:
Genişlet Daralt Kopyala
std::vector<int> kureMaps = {41, 1}; // küre için izin verilen haritalar.

Daha sonra char_item.cpp içinde şu düzenlemeyi yap:
C++:
Genişlet Daralt Kopyala
bool CHARACTER::ItemProcess_Polymorph(LPITEM item)
{
    // Eğer karakterin map indexi, bizim belirlediklerimiz dışındaysa küre kullanılamaz;
    if (std::find(kureMaps.begin(), kureMaps.end(), GetMapIndex()) == kureMaps.end())
    {
        ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Burada yasak."));
        return false;
    }
   
    [...]
}

Işınlandıktan sonra dönüşümün kapatılması için char_affect.cpp:
C++:
Genişlet Daralt Kopyala
bool CHARACTER::UpdateAffect()
{
    // Eğer karakterin bulunduğu map index, bizim belirlediklerimizin dışındaysa dönüşümü sil
    if (IsPolymorphed())
    {
        if (std::find(kureMaps.begin(), kureMaps.end(), GetMapIndex()) == kureMaps.end())
        {
            RemoveAffect(AFFECT_POLYMORPH);
            SetPolymorph(0);
        }
    }
   
    [...]
}

Bu düzenlemenin sonucunda:
Dönüşüm küreleri sadece 41 ve 1 indexli haritalarda çalışacak. (Mavi bayrak 1.köy - Kırmızı bayrak 1.köy)
Diğer hiçbir haritada çalışmayıp "Burada yasak." uyarısı verecektir.
Eğer oyuncu bu iki mapten birinde bulunuyorken dönüşürse, ve daha sonra bu iki haritadan farklı bir haritaya ışınlanırsa dönüşüm iptal edilir.
Eğer oyuncu izin verilen haritalar arasında ışınlanırsa dönüşüm iptal edilmez.
Bu düzenlemeyi tek map veya birden fazla map için istediğin şekilde özelleştirebilirsin.

 
Çözüm
Bu durumu birazcık kullanışlı bir şekilde ele almak daha iyi olabilir. Mesela şöyle bir şey yapabilirsin:

char.h içinde bool IsWarp(); satırının altına şunu ekle:
C++:
Genişlet Daralt Kopyala
std::vector<int> kureMaps = {41, 1}; // küre için izin verilen haritalar.

Daha sonra char_item.cpp içinde şu düzenlemeyi yap:
C++:
Genişlet Daralt Kopyala
bool CHARACTER::ItemProcess_Polymorph(LPITEM item)
{
    // Eğer karakterin map indexi, bizim belirlediklerimiz dışındaysa küre kullanılamaz;
    if (std::find(kureMaps.begin(), kureMaps.end(), GetMapIndex()) == kureMaps.end())
    {
        ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Burada yasak."));
        return false;
    }
  
    [...]
}

Işınlandıktan sonra dönüşümün kapatılması için char_affect.cpp:
C++:
Genişlet Daralt Kopyala
bool CHARACTER::UpdateAffect()
{
    // Eğer karakterin bulunduğu map index, bizim belirlediklerimizin dışındaysa dönüşümü sil
    if (IsPolymorphed())
    {
        if (std::find(kureMaps.begin(), kureMaps.end(), GetMapIndex()) == kureMaps.end())
        {
            RemoveAffect(AFFECT_POLYMORPH);
            SetPolymorph(0);
        }
    }
  
    [...]
}

Bu düzenlemenin sonucunda:
Dönüşüm küreleri sadece 41 ve 1 indexli haritalarda çalışacak. (Mavi bayrak 1.köy - Kırmızı bayrak 1.köy)
Diğer hiçbir haritada çalışmayıp "Burada yasak." uyarısı verecektir.
Eğer oyuncu bu iki mapten birinde bulunuyorken dönüşürse, ve daha sonra bu iki haritadan farklı bir haritaya ışınlanırsa dönüşüm iptal edilir.
Eğer oyuncu izin verilen haritalar arasında ışınlanırsa dönüşüm iptal edilmez.
Bu düzenlemeyi tek map veya birden fazla map için istediğin şekilde özelleştirebilirsin.


Tam aradığım olay çok sağolun
 
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.
Üst