Çok eski bir web tarayıcısı kullanıyorsunuz. Bu veya diğer siteleri görüntülemekte sorunlar yaşayabilirsiniz.. Tarayıcınızı güncellemeli veya alternatif bir tarayıcı kullanmalısınız.
ÇözüldüSunucu üzerinden oyuncuya emoji kullandırma kodu hata nerede?
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ı.
Aşağıda gösterdiğim videodaki örneğe göre; bir karakter bağırma ekranından herhangi bir yazı yazdığında sevinç duygusu çalışacak.
Sanıyorum ki bunu bireysel olarak kullanmak istiyorsun; bu yüzden FindPC veya iter vb. ile arama yapmana gerek yok.
Doğrudan ch->GetVID() ile oyuncunun VID değerini çekmen yeterli olacaktır. Aşağıda verdiğim kodu komple alıp istediğin yerde kullanabilirsin. Sorunsuz çalışacaktır. Ancak yapmak istediğin işlemlere göre gerekli olabilecek ek kontrolleri kendin eklemen gerek.
C++:
char chatbuff[256+1];
int len = snprintf(chatbuff, sizeof(chatbuff),
"%s %u %u", "cheer1", (DWORD)ch->GetVID(), 0);
if (len < 0 || len >= (int) sizeof(chatbuff))...
kodun sonundaki değişken de hata veriyor,ChatPacket(CHAT_TYPE_COMMAND, "dance1"); olarak yaptım şimdilik ama paket yollamak istemiyorum üstteki kodu yapabilirsem yazarım.
OX kısmından aldığınız örneği tekrar inceleyelim, yaptığınız hatayı göstermek için;
C++:
char chatbuf[256];
int len = snprintf (chatbuf, sizeof (chatbuf), "%s %u %u", number (0, 1) == 1 ? "cheer1" : "cheer2", (DWORD)pkChar->GetVID(), 0);
// 리턴값이 sizeof(chatbuf) 이상일 경우 truncate되었다는 뜻..
if (len < 0 || len >= (int) sizeof (chatbuf))
{
len = sizeof (chatbuf) - 1;
}
// \0 문자 포함
++len;
Öncelikle bu kodu alıyorsanız, bu verdiğim şekilde komple almalısınız, alttaki kontroller de buna dahil. Kodu bu şekilde alın, istediğiniz duyguya göre düzenleyin yalnız yaptığınız bir hata var, kodun sonunda mevcut karakterlerin VID değerini alan bir kod var siz bunu silmişsiniz, bu şekilde tabii ki çalışmayacaktır, buna dikkat ederek tekrar deneyebilirsiniz.
OX kısmından aldığınız örneği tekrar inceleyelim, yaptığınız hatayı göstermek için;
C++:
char chatbuf[256];
int len = snprintf (chatbuf, sizeof (chatbuf), "%s %u %u", number (0, 1) == 1 ? "cheer1" : "cheer2", (DWORD)pkChar->GetVID(), 0);
// 리턴값이 sizeof(chatbuf) 이상일 경우 truncate되었다는 뜻..
if (len < 0 || len >= (int) sizeof (chatbuf))
{
len = sizeof (chatbuf) - 1;
}
// \0 문자 포함
++len;
Öncelikle bu kodu alıyorsanız, bu verdiğim şekilde komple almalısınız, alttaki kontroller de buna dahil. Kodu bu şekilde alın, istediğiniz duyguya göre düzenleyin yalnız yaptığınız bir hata var, kodun sonunda mevcut karakterlerin VID değerini alan bir kod var siz bunu silmişsiniz, bu şekilde tabii ki çalışmayacaktır, buna dikkat ederek tekrar deneyebilirsiniz.
pkChar tanımını istiyor aşağıdaki tabi tanımladığımda bu sefer iter tanımını soruyor onuda tanımladığımda için işine gereksiz kodlar giriyor anlamını bilemediğim.
pkChar tanımını istiyor aşağıdaki tabi tanımladığımda bu sefer iter tanımını soruyor onuda tanımladığımda için işine gereksiz kodlar giriyor anlamını bilemediğim.
Benim verdiğim kısımda m_map_attender yok sen anladığım kadarıyla kodun tümünü almayı denedin, OX kısmındaki orijinal kodda bu iter mapte olan ve bu fonksiyondan etkilenmesi istenen oyuncuları konteyner içinden seçmek için kullanılıyor, yani belirli bölümdeki oyuncuları yanlış cevap verdikleri zaman erase ile silip OX'dan atması gibi.
Ne yapmak istediğini tam bilmiyorum ama oyuncuların tamamını dans ettiren bir GM komutu vardı, o konuyu bulursan oradaki kodlardan kopya çekebilirsin, chat_type ile command yollatmak berbat bir seçenek değil, kullanılabilir ama OX tarzında bir yöntem daha sağlıklı olur.
Benim verdiğim kısımda m_map_attender yok sen anladığım kadarıyla kodun tümünü almayı denedin, OX kısmındaki orijinal kodda bu iter mapte olan ve bu fonksiyondan etkilenmesi istenen oyuncuları konteyner içinden seçmek için kullanılıyor, yani belirli bölümdeki oyuncuları yanlış cevap verdikleri zaman erase ile silip OX'dan atması gibi.
Ne yapmak istediğini tam bilmiyorum ama oyuncuların tamamını dans ettiren bir GM komutu vardı, o konuyu bulursan oradaki kodlardan kopya çekebilirsin, chat_type ile command yollatmak berbat bir seçenek değil, kullanılabilir ama OX tarzında bir yöntem daha sağlıklı olur.
Yapmak istediğim baska bir mmo oyununda gördüğüm, + basınca ve sandıktan iyi bir item cıktığında karekter sevinme emojisi yapıyor hoşuma gitti için metin2 de yapmak istedim. Yorum için teşekkürler denemeleri sürdüreceğim çözüm bulana kadar.
Aşağıda gösterdiğim videodaki örneğe göre; bir karakter bağırma ekranından herhangi bir yazı yazdığında sevinç duygusu çalışacak.
Sanıyorum ki bunu bireysel olarak kullanmak istiyorsun; bu yüzden FindPC veya iter vb. ile arama yapmana gerek yok.
Doğrudan ch->GetVID() ile oyuncunun VID değerini çekmen yeterli olacaktır. Aşağıda verdiğim kodu komple alıp istediğin yerde kullanabilirsin. Sorunsuz çalışacaktır. Ancak yapmak istediğin işlemlere göre gerekli olabilecek ek kontrolleri kendin eklemen gerek.
Bu kullanımın herhangi bir zararı veya dezavantajı olmaz. Oyunda hiçbir şey yapmadan sabit dursan bile arka planda onlarca paket sürekli çalışıyor zaten. Ayrıca bu işlem geçicidir, işlem tamamlandığında veriler sıfırlanır. Bu gibi durumlarda paket kullanmak zorundasın.
Çünkü server tarafında harici ve geçici bir bellek oluşturuyorsun, içeriğini dolduruyorsun ve bunu bir şekilde cliente göndermen gerek. Bunun da en pratik yolu mevcut paketlerden uygun olanını seçip kullanmaktır.
Aşağıda gösterdiğim videodaki örneğe göre; bir karakter bağırma ekranından herhangi bir yazı yazdığında sevinç duygusu çalışacak.
Sanıyorum ki bunu bireysel olarak kullanmak istiyorsun; bu yüzden FindPC veya iter vb. ile arama yapmana gerek yok.
Doğrudan ch->GetVID() ile oyuncunun VID değerini çekmen yeterli olacaktır. Aşağıda verdiğim kodu komple alıp istediğin yerde kullanabilirsin. Sorunsuz çalışacaktır. Ancak yapmak istediğin işlemlere göre gerekli olabilecek ek kontrolleri kendin eklemen gerek.
Bu kullanımın herhangi bir zararı veya dezavantajı olmaz. Oyunda hiçbir şey yapmadan sabit dursan bile arka planda onlarca paket sürekli çalışıyor zaten. Ayrıca bu işlem geçicidir, işlem tamamlandığında veriler sıfırlanır. Bu gibi durumlarda paket kullanmak zorundasın.
Çünkü server tarafında harici ve geçici bir bellek oluşturuyorsun, içeriğini dolduruyorsun ve bunu bir şekilde cliente göndermen gerek. Bunun da en pratik yolu mevcut paketlerden uygun olanını seçip kullanmaktır.
Dediğiniz gibi sorunsuz çalıştı zaman ayırdığınız için teşekkür ederim. Diğer yorum yapıp yardımcı olmaya çalışan kişilere de teşekkürler. Yardımlarınız olmasa sorunları çözmem imkansız. Herkese iyi günler dilerim.