berkmenoo 1
berkmenoo
mavzermete 1
mavzermete
Mt2Hizmet 1
Mt2Hizmet
xranzei 1
xranzei
Bvural41 1
Bvural41
noisiv 1
noisiv
Manwe Work 1
Manwe Work
Hikaye Ekle

Offline Shop Sistemi

  • Konuyu başlatan Konuyu başlatan Bekir Akdemir
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 686
  • Görüntüleme Görüntüleme 117K
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

HERAKLES Otomatik Avlı kalıcı sunucu. 19 Haziran'da açılıyor. Atius & Wizard güvencesiyle hemen kayıt ol, ön kayıt ödülleri aktif. HEMEN TIKLA!

onun fixsi var buyur char.cpp açılır

char szQuery2[512];
snprintf(szQuery2,sizeof(szQuery2),"INSERT INTO %soffline_shop_npc(owner_id, sign, name, time, x, y, z, mapIndex, channel) VALUES(%u, '%s', '%s', %d, %ld, %ld, %ld, %ld, %d)", get_table_postfix(),GetPlayerID(), c_pszSign,GetName(), iTime,GetX(),GetY(),GetZ(),GetMapIndex(), g_bChannel);
DBManager::Instance().DirectQuery(szQuery2);
değiştir

char szSign2[SHOP_SIGN_MAX_LEN+1];
DBManager::instance().EscapeString(szSign2,sizeof( szSign2), c_pszSign, strlen(c_pszSign));
char szQuery2[512];
snprintf(szQuery2,sizeof(szQuery2),"INSERT INTO %soffline_shop_npc(owner_id, sign, name, time, x, y, z, mapIndex, channel) VALUES(%u, '%s', '%s', %d, %ld, %ld, %ld, %ld, %d)", get_table_postfix(),GetPlayerID(), szSign2,GetName(), iTime,GetX(),GetY(),GetZ(),GetMapIndex(), g_bChannel);
DBManager::Instance().DirectQuery(szQuery2);

Sorunun Çözülmüştür bunun duşunda 2-3 bug daha var onlarıda araştırırsan çözebilirsin.
Teşekkür ederim sanırsam bu sql injection içindi. Mysql engineyi ENGINE=MyISAM böyle yapınca düzeldi :D
Bu sistem sanırsam 4 taş sistemiyle uyumlu değil. Dolunay 30 ve 75lik silahları koyunca socketlere safra ve kılıç yerleştiriyor
 
Arkadaşlar bu sorun 4 taş sisteminden mi kaynaklanıyor? Bilen birisi yanıt verebilirse sevinirim :)

bbDk2b.jpg
 
4 taş için socket arttır öyle dene normal mysql da nsl arttırıyorsak offlineshopda arttır aynı şekilde 4 taşa uyumlu hale getir
Kod:
iLen += snprintf(szColumns + iLen, sizeof(szColumns) - iLen, ",socket0,socket1,socket2, socket3, socket4");
 iUpdateLen += snprintf(szValues + iUpdateLen, sizeof(szValues) - iUpdateLen, ",%ld,%ld,%ld,%ld,%ld", pkItem->GetSocket(0), pkItem->GetSocket(1), pkItem->GetSocket(2), pkItem->GetSocket(3), pkItem->GetSocket(4));


            iLen += snprintf(szColumns + iLen, sizeof(szColumns) - iLen, ",attrtype0,attrvalue0,attrtype1,attrvalue1,attrtype2,attrvalue2,attrtype3,attrvalue3,attrtype4,attrvalue4,attrtype5,attrvalue5,attrtype6,attrvalue6");
            iUpdateLen += snprintf(szValues + iUpdateLen, sizeof(szValues) - iUpdateLen, ",%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d",
                pkItem->GetAttributeType(0), pkItem->GetAttributeValue(0),
                pkItem->GetAttributeType(1), pkItem->GetAttributeValue(1),
                pkItem->GetAttributeType(2), pkItem->GetAttributeValue(2),
                pkItem->GetAttributeType(3), pkItem->GetAttributeValue(3),
                pkItem->GetAttributeType(4), pkItem->GetAttributeValue(4),
                pkItem->GetAttributeType(5), pkItem->GetAttributeValue(5),
                pkItem->GetAttributeType(6), pkItem->GetAttributeValue(6));


            char szInsertQuery[QUERY_MAX_LEN];
            snprintf(szInsertQuery, sizeof(szInsertQuery), "INSERT INTO %soffline_shop_item (%s) VALUES (%s)", get_table_postfix(), szColumns, szValues);
            std::auto_ptr<SQLMsg> pMsg(DBManager::instance().DirectQuery(szInsertQuery));
            pkItem->RemoveFromCharacter();
Böyle yaptım. normalde socket5 isimli sütunda var lakin onu ekleyince kayıt yapmıyor
 
Son düzenleme:
Gerekli ayarları yaptım. socketlere ekleme yapınca taş sorunu ortadan kalktı :) Yalnız ilk efsun gözükmüyor. Böyle oluyor

o73kbm.jpg
 
Son düzenleme:
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst