Çözüldü Global chatte map ismi gösterme kodunda hata.

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

asilords

Üye
Üye
Mesaj
225
Çözümler
8
Beğeni
55
Puan
704
Ticaret Puanı
0
1:
Genişlet Daralt Kopyala
    static const char* colorbuf[] = {"|cFFffa200|H|h[Ada Mapı]|h|r", "|cFFff0000|H|h[Shinsoo]|h|r", "|cFFffc700|H|h[Chunjo]|h|r", "|cFF000bff|H|h[Jinno]|h|r"};
  //int len = snprintf(chatbuf, sizeof(chatbuf), "%s %s : %s", (ch->IsGM()?colorbuf[0]:colorbuf[MINMAX(0, ch->GetEmpire(), 3)]), ch->GetName(), buf);
    int len = snprintf(chatbuf, sizeof(chatbuf), "%s %s : %s", (ch->GetMapIndex() == 50?colorbuf[0]:ch->GetMapIndex() == 1?colorbuf[1]:ch->GetMapIndex() == 21?colorbuf[2]:ch->GetMapIndex() == 41?colorbuf[3]), ch->GetName(), buf);

Bağırma kodunda değişiklik yaptım normalde yorum satırı olan orijinali ben map indexine göre yazmasını istedim ama builtte sorun var ufak bir hatadan dolayı çalışmıyor yardımcı olabilecek?
 
Çözüm
1:
Genişlet Daralt Kopyala
    static const char* colorbuf[] = {"|cFFffa200|H|h[Ada Mapı]|h|r", "|cFFff0000|H|h[Shinsoo]|h|r", "|cFFffc700|H|h[Chunjo]|h|r", "|cFF000bff|H|h[Jinno]|h|r"};
  //int len = snprintf(chatbuf, sizeof(chatbuf), "%s %s : %s", (ch->IsGM()?colorbuf[0]:colorbuf[MINMAX(0, ch->GetEmpire(), 3)]), ch->GetName(), buf);
    int len = snprintf(chatbuf, sizeof(chatbuf), "%s %s : %s", (ch->GetMapIndex() == 50?colorbuf[0]:ch->GetMapIndex() == 1?colorbuf[1]:ch->GetMapIndex() == 21?colorbuf[2]:ch->GetMapIndex() == 41?colorbuf[3]), ch->GetName(), buf);

Bağırma kodunda değişiklik yaptım normalde yorum satırı olan orijinali ben map indexine göre yazmasını istedim ama builtte sorun var ufak bir hatadan dolayı çalışmıyor yardımcı olabilecek?
İşte sana...
C++:
Genişlet Daralt Kopyala
int len = snprintf(chatbuf, sizeof(chatbuf), "%s %s : %s",
    (ch->GetMapIndex() == 50 ? colorbuf[0] :
     ch->GetMapIndex() == 1 ? colorbuf[1] :
     ch->GetMapIndex() == 21 ? colorbuf[2] :
     ch->GetMapIndex() == 41 ? colorbuf[3] :
     ""),
    ch->GetName(),
    buf
);
 
1:
Genişlet Daralt Kopyala
    static const char* colorbuf[] = {"|cFFffa200|H|h[Ada Mapı]|h|r", "|cFFff0000|H|h[Shinsoo]|h|r", "|cFFffc700|H|h[Chunjo]|h|r", "|cFF000bff|H|h[Jinno]|h|r"};
  //int len = snprintf(chatbuf, sizeof(chatbuf), "%s %s : %s", (ch->IsGM()?colorbuf[0]:colorbuf[MINMAX(0, ch->GetEmpire(), 3)]), ch->GetName(), buf);
    int len = snprintf(chatbuf, sizeof(chatbuf), "%s %s : %s", (ch->GetMapIndex() == 50?colorbuf[0]:ch->GetMapIndex() == 1?colorbuf[1]:ch->GetMapIndex() == 21?colorbuf[2]:ch->GetMapIndex() == 41?colorbuf[3]), ch->GetName(), buf);

Bağırma kodunda değişiklik yaptım normalde yorum satırı olan orijinali ben map indexine göre yazmasını istedim ama builtte sorun var ufak bir hatadan dolayı çalışmıyor yardımcı olabilecek?
İşte sana küçük bir örnek:

C++:
Genişlet Daralt Kopyala
//By xapose

static const char* colorbuf[] = {
    "|cFFffa200|H|h[Ada Mapı]|h|r",
    "|cFFff0000|H|h[Shinsoo]|h|r",
    "|cFFffc700|H|h[Chunjo]|h|r",
    "|cFF000bff|H|h[Jinno]|h|r"
};

const char* mapColor;
switch (ch->GetMapIndex()) {
    case 50:
        mapColor = colorbuf[0];
        break;
    case 1:
        mapColor = colorbuf[1];
        break;
    case 21:
        mapColor = colorbuf[2];
        break;
    case 41:
        mapColor = colorbuf[3];
        break;
    default:
        mapColor = ""; // Eğer bunlardan birisi değilse default color atayabilirsin
        break;
}

int len = snprintf(chatbuf, sizeof(chatbuf), "%s %s : %s", mapColor, ch->GetName(), buf);
 
Çözüm
C++:
Genişlet Daralt Kopyala
int len = snprintf(chatbuf, sizeof(chatbuf), "%s %s : %s",
    (ch->GetMapIndex() == 50 ? colorbuf[0] :
     ch->GetMapIndex() == 1 ? colorbuf[1] :
     ch->GetMapIndex() == 21 ? colorbuf[2] :
     ch->GetMapIndex() == 41 ? colorbuf[3] :
     ""),
    ch->GetName(),
    buf
);
Teşekkürler, iki tırnak için uğraşıyorum kaç saatir. Kodlama bilmemektan oluyor :)

İşte sana küçük bir örnek:

C++:
Genişlet Daralt Kopyala
//By xapose

static const char* colorbuf[] = {
    "|cFFffa200|H|h[Ada Mapı]|h|r",
    "|cFFff0000|H|h[Shinsoo]|h|r",
    "|cFFffc700|H|h[Chunjo]|h|r",
    "|cFF000bff|H|h[Jinno]|h|r"
};

const char* mapColor;
switch (ch->GetMapIndex()) {
    case 50:
        mapColor = colorbuf[0];
        break;
    case 1:
        mapColor = colorbuf[1];
        break;
    case 21:
        mapColor = colorbuf[2];
        break;
    case 41:
        mapColor = colorbuf[3];
        break;
    default:
        mapColor = ""; // Eğer bunlardan birisi değilse default color atayabilirsin
        break;
}

int len = snprintf(chatbuf, sizeof(chatbuf), "%s %s : %s", mapColor, ch->GetName(), buf);
Ne ara kodlayıp yanıtladınız :) teşekkür ederim. sizinki daha lüks ve map eklemek için daha ideal :)
 
Yeni konu açmamak için bir sorunum daha cıktı buradan yazıyorum.
1:
Genişlet Daralt Kopyala
    char chatbuf[CHAT_MAX_LEN + 1];
#ifdef ENABLE_GLOBAL_CHAT
    //Hmsg = "|Hmsg:%s|h(#)|h|r";
    Hmsg = "|Hmsg:"ch->GetName()"|h(#)|h|r";
    int len = snprintf(chatbuf, sizeof(chatbuf), "%s %s : %s",
        ch->GetName(),
        Hmsg,
        buf);
#else
    int len = snprintf(chatbuf, sizeof(chatbuf), "%s : %s", ch->GetName(), buf);
#endif


Bağırmadan pm atma sistemi için Hmsg kısmına (#) yaptım ama içerisideki kodta oyuncunun adını çekmesi gerekiyor direkt int len kısmına yazarsam normal chat kısmında (#) gözüküyor o yüzden Hmsg = "|Hmsg:"ch->GetName()"|h(#)|h|r"; düzeltilmesi lazım anlatabildiysem ne mutlu :) yardımlarınızı bekliyorum.
 
Yeni konu açmamak için bir sorunum daha cıktı buradan yazıyorum.
1:
Genişlet Daralt Kopyala
    char chatbuf[CHAT_MAX_LEN + 1];
#ifdef ENABLE_GLOBAL_CHAT
    //Hmsg = "|Hmsg:%s|h(#)|h|r";
    Hmsg = "|Hmsg:"ch->GetName()"|h(#)|h|r";
    int len = snprintf(chatbuf, sizeof(chatbuf), "%s %s : %s",
        ch->GetName(),
        Hmsg,
        buf);
#else
    int len = snprintf(chatbuf, sizeof(chatbuf), "%s : %s", ch->GetName(), buf);
#endif


Bağırmadan pm atma sistemi için Hmsg kısmına (#) yaptım ama içerisideki kodta oyuncunun adını çekmesi gerekiyor direkt int len kısmına yazarsam normal chat kısmında (#) gözüküyor o yüzden Hmsg = "|Hmsg:"ch->GetName()"|h(#)|h|r"; düzeltilmesi lazım anlatabildiysem ne mutlu :) yardımlarınızı bekliyorum.
böyle durumlarda sorunu anlatan uygun bir başlıkla yeni bir konu açman daha sağlıklı, aynı sorunla karşılaşmış diğer insanlarda böylece kolayca sorunla ilgili cevaplara ulaşabilirler ve aynı zamanda gelecekte aynı problemi tekrar yaşayıp çözümü hatırlayamadığın durumda sende çözüme daha kolay ulaşabilirsin.
 
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.
Üst