we1982 26 #1 Oluşturuldu: Mayıs 11, 2018 Merhaba arkadaşlar resimdede görüldüğü gibi ırk değişimi ekranında hata alıyorum sadece bir yol göstermenizi temenni ederim teşekkürler.... Mesajı raporla İletiyi paylaş Link to post Sitelerde Paylaş
infiltrate 42 #2 Mayıs 11, 2018 tarihinde gönderildi Transfer edilebilecek karakter yok diyor.Eğer ortalıkdaki sourceleri kullanıyorsan büyük ihtimal fonksiyonun imzası şu şekildedir.void CUser::NationChange(Packet & pkt)Birde büyük ihtimal SQL SP'si çağırıyordur arkaplanda.onunda imzası şu şekildedir.int8 CDBAgent::NationTransfer(std::string strAccountID, uint16 Race1, uint16 Race2, uint16 Race3, uint16 Race4)if (!dbCommand->Execute(string_format(_T("{? = CALL ACCOUNT_NATION_TRANSFER(?,%d,%d,%d,%d)}"),Race1,Race2,Race3,Race4))) ReportSQLError(m_GameDB->GetError());Bu kısımdaki ACCOUNT_NATION_TRANSFER Stored Procedure'u ile void CUser::NationChange(Packet & pkt)Bu fonksiyonu görmeden bir şey demek zor Mesajı raporla İletiyi paylaş Link to post Sitelerde Paylaş
we1982 26 #3 Konu Sahibi Mayıs 11, 2018 tarihinde gönderildi paketler aynen bahsettiğin gibi kontrolü için tam olarak nereye bakmam lazım pekii?-- mesaja ek olarak --bu bağlamda Presedür ile source arasındaki kodlamadamı bir sıkıntı vardır ?-- mesaja ek olarak --void CUser::NationChange(Packet & pkt) aşağıdaki gibi... Gizli İçerik Gizli içeriği görmek için bu konuya bir mesaj yazın. Mesajı raporla İletiyi paylaş Link to post Sitelerde Paylaş
infiltrate 42 #4 Mayıs 11, 2018 tarihinde gönderildi uint8 nRet = g_DBAgent.NationTransfer(GetAccountName(),nRace[0],nRace[1],nRace[2],nRace[3]);büyük ihtimal bu functionun içinde çağırılan sp ACCOUNT_NATION_TRANSFER nRet olarak 1'den farklı bir değer döndürüp if (nRet != 1) { result Send(&result); return; }Buraya sokuyor işlemi.Database içerisindeki ACCOUNT_NATION_TRANSFER'e bakman gerek.Eğer programlama bilgin varsa uint8 nRet = g_DBAgent.NationTransfer(GetAccountName(),nRace[0],nRace[1],nRace[2],nRace[3]);bu kısıma breakpoint koyarak,step into ile program akışını takip ederek sorunu çözebilirsin. Mesajı raporla İletiyi paylaş Link to post Sitelerde Paylaş
we1982 26 #5 Konu Sahibi Mayıs 11, 2018 tarihinde gönderildi brek point koyduktan sonra bu kodları geldi soru işaretlerinden anladığım kadarı ile kullanıcı adınımı çekmiyor.... Gizli İçerik Gizli içeriği görmek için bu konuya bir mesaj yazın. -- mesaja ek olarak --yok yanlış anlamışım o bölüme geldikten sonra gemserver durdu ''there is no character available for transfer'' hatası gelmedi... Mesajı raporla İletiyi paylaş Link to post Sitelerde Paylaş
we1982 26 #6 Konu Sahibi Mayıs 11, 2018 tarihinde gönderildi Gizli İçerik Gizli içeriği görmek için bu konuya bir mesaj yazın. Her döndüğünde rakamlarda değişekte acaba sorun bundan mı kaynaklanmakta? Mesajı raporla İletiyi paylaş Link to post Sitelerde Paylaş
INSOMNIA 4 #7 Mayıs 11, 2018 tarihinde gönderildi @ we1982 ben hep şey yapıyorum, farklı database deneyip sorun yok ise ondan çekmeyi denerdim malüm bir kaç tane daha paylaşılan db var birinde çözüme kavuşursun Mesajı raporla İletiyi paylaş Link to post Sitelerde Paylaş
we1982 26 #8 Konu Sahibi Mayıs 11, 2018 tarihinde gönderildi Database error: [ ODBC Error - 11.5.2018 22:22:36 ] ] Source: {? = CALL ACCOUNT_NATION_TRANSFER(?,11,0,0,0)} Error: [Microsoft][ODBC SQL Server Driver]Procedure or function ACCOUNT_NATION_TRANSFER has too many arguments specified. Description: Failed to execute statement.SELECT Race FROM USERDATA WHERE strUserID = ?gelen bu hata ile ilgili ACCOUNT_NATION_TRANSFER prosedüründen tam olarak nereye bakmam gerekiyor... Yardım lütfen.... Mesajı raporla İletiyi paylaş Link to post Sitelerde Paylaş
OzkanOzdemir 1.560 Admin #9 Mayıs 11, 2018 tarihinde gönderildi Fonksiyon içerisini komple yorum satırı olarak değiştir ve ardından içerisine sadece denemek için paket gönderme işlemini bırak bunu da şu şekilde yapıyorsun.void CUser::NationChange(Packet & pkt){ Packet result(WIZ_NATION_CHANGE); result Send(&result);}Yukarıdaki bahsettiğim yere breakpoint koyuyorsun daha sonrasında oyuna giriyorsun.Nation Change penceresini açıyorsun işlemi yapmaya başlıyorsun.Client paketi Servera attığında senin bu breakpointin tetiklenecek ardından 0x01 diye belirttiğim yeri değiştirerek böyle denemeye devam ediyorsun.Oyundan çıkmadan breakpoint tetiklediği anda yapabilirsin değiştirme işlemini ve senin bahsettiğin hata hangi değer de çıkıyor buna bakıyorsun.Örnek verelim ki 0x05 değerinde çıktı.Yorum satırı yaptığın fonksiyon içerisinden aynı paket nereye denk geliyor bakıyorsun eğer ki yoksa prosedürden dönen bir 0x05 değeri vardır ona bakıyorsun ve orada ne yanlışlık var anlıyorsun. Bu kadar basit. Mesajı raporla İletiyi paylaş Link to post Sitelerde Paylaş
we1982 26 #10 Konu Sahibi Mayıs 11, 2018 tarihinde gönderildi teşekkürler.... Mesajı raporla İletiyi paylaş Link to post Sitelerde Paylaş
we1982 26 #11 Konu Sahibi Mayıs 12, 2018 tarihinde gönderildi @ OzkanOzdemir Hocam dediğin gibi; Gizli İçerik Gizli içeriği görmek için bu konuya bir mesaj yazın. 0x06) olduğunu anladım kullanmış olduğum National pkt. buna tekabül eden yerler var... ancak nereyer nasıl bakacağımı tam olarak bilmiyorum.. Gizli İçerik Gizli içeriği görmek için bu konuya bir mesaj yazın. şimdi burada nasıl bir yol izlemem gerekiyor. sen yol göster ben giderim... Mesajı raporla İletiyi paylaş Link to post Sitelerde Paylaş
OzkanOzdemir 1.560 Admin #12 Mayıs 12, 2018 tarihinde gönderildi Alıntı@ OzkanOzdemir Hocam dediğin gibi; *** hidden content *** 0x06) olduğunu anladım kullanmış olduğum National pkt. buna tekabül eden yerler var... ancak nereyer nasıl bakacağımı tam olarak bilmiyorum.. *** hidden content *** şimdi burada nasıl bir yol izlemem gerekiyor. sen yol göster ben giderim... Breakpoint biliyor musun bilmiyorsan araştır. Mesajı raporla İletiyi paylaş Link to post Sitelerde Paylaş
we1982 26 #13 Konu Sahibi Mayıs 12, 2018 tarihinde gönderildi @ OzkanOzdemir Hocam paket içerisinde kod sütunlarında eşdeğer gelen alanlara breakpoint koyarak hatanın nereden kaynaklandığını buldum... Lakin hata sonrası hangi yolu izlemeliyim. Gizli İçerik Gizli içeriği görmek için bu konuya bir mesaj yazın. Kusura bakma seninde zamanını alıyorum, bende öğrenmeye çalışıyorum... Mesajı raporla İletiyi paylaş Link to post Sitelerde Paylaş
OzkanOzdemir 1.560 Admin #14 Mayıs 12, 2018 tarihinde gönderildi Alıntı@ OzkanOzdemir Hocam paket içerisinde kod sütunlarında eşdeğer gelen alanlara breakpoint koyarak hatanın nereden kaynaklandığını buldum... Lakin hata sonrası hangi yolu izlemeliyim. *** hidden content *** Kusura bakma seninde zamanını alıyorum, bende öğrenmeye çalışıyorum... nRet değişkenine nerede değer veriliyor o fonksiyonda onu söyle. Mesajı raporla İletiyi paylaş Link to post Sitelerde Paylaş
we1982 26 #15 Konu Sahibi Mayıs 13, 2018 tarihinde gönderildi @ OzkanOzdemir özkan hocam değeri bu fonksiyondan alıyor... Gizli İçerik Gizli içeriği görmek için bu konuya bir mesaj yazın. Mesajı raporla İletiyi paylaş Link to post Sitelerde Paylaş
OzkanOzdemir 1.560 Admin #16 Mayıs 13, 2018 tarihinde gönderildi Alıntı@ OzkanOzdemir özkan hocam değeri bu fonksiyondan alıyor... *** hidden content *** NationTransfer fonksiyonu içerisinde eğer ki prosedür çalışmıyorsa veya veritabanı bağlantısı yoksa gibi olaylarda default döndürdüğü bir değer vardır. Bu değer senin aldığın değer ile aynı mı diye bakacaksın. Eğer ki aynı değilse NationTransfer fonksiyonu içerisinde çağırdığı prosedürü SQL üzerinde açacaksın kontrol edeceksin. Neresinde RETURN 6 yada neresinde bRet 6 değeri alıyorsa orada sorun var demektir. Mesajı raporla İletiyi paylaş Link to post Sitelerde Paylaş
we1982 26 #17 Konu Sahibi Mayıs 13, 2018 tarihinde gönderildi hemen bakıyorum... teşekkürler.... Mesajı raporla İletiyi paylaş Link to post Sitelerde Paylaş
we1982 26 #18 Konu Sahibi Mayıs 14, 2018 tarihinde gönderildi OLAY TAMAMEN PROSEDÜR İLE ALAKALI İMİŞ yeni işlenmiş bir prosedür lazım 20xx i.in .... Mesajı raporla İletiyi paylaş Link to post Sitelerde Paylaş