- Mesaj
- 4.043
- Çözümler
- 392
- Beğeni
- 4.168
- Puan
- 1.849
- Ticaret Puanı
- 0
Merhaba, dün @Mali ' nin paylaşmış olduğu shopex renewal sistemini kurmuştum ancak npc ye tıklandığı anda ch1 core veriyordu ve hiç bir syserr yoktu.
Core:
shopEx.cpp:125 diyor fakat 125.satırda } işaretinden başka bir şey yoktu.
Bu sorunun sebebi anlatım dosyasındaki küçük bir yanlışlıktır. Anlatım dosyasında şu şekilde gösterilmiş:
Bu şekilde yaptığımızda core veriyor. Olması gereken, gösterdiği yeri komple değiştirmek değil.
Yukarıda verdiğim koddan sadece şu kısmı değiştirmemiz gerekiyor:
Şöyle:
Ek olarak bu kodların biraz yukarısında şunu bulup:
Şu şekilde değiştirmeniz gerekiyor:
Bu düzenleme sonrasında core hatasından kurtulmuş olacaksınız.
Core:
shopEx.cpp:125 diyor fakat 125.satırda } işaretinden başka bir şey yoktu.
Bu sorunun sebebi anlatım dosyasındaki küçük bir yanlışlıktır. Anlatım dosyasında şu şekilde gösterilmiş:
C++:
//Bul
switch (shop_tab.coinType)
{
case SHOP_COIN_TYPE_GOLD:
if (bOtherEmpire) // no empire price penalty for pc shop
pack_tab.items[i].price = shop_tab.items[i].price * 3;
else
pack_tab.items[i].price = shop_tab.items[i].price;
break;
case SHOP_COIN_TYPE_SECONDARY_COIN:
pack_tab.items[i].price = shop_tab.items[i].price;
break;
}
memset(pack_tab.items[i].aAttr, 0, sizeof(pack_tab.items[i].aAttr));
memset(pack_tab.items[i].alSockets, 0, sizeof(pack_tab.items[i].alSockets));
//Değiştir
#if defined(ENABLE_RENEWAL_SHOPEX)
pack_tab.items[i].price_type = shop_tab.items[i].price_type;
pack_tab.items[i].price_vnum = shop_tab.items[i].price_vnum;
pack_tab.items[i].price = shop_tab.items[i].price;
if (bOtherEmpire && pack_tab.items[i].price_type == SHOPEX_GOLD)
pack_tab.items[i].price *= 3;
thecore_memcpy(pack_tab.items[i].aAttr, shop_tab.items[i].aAttr, sizeof(pack_tab.items[i].aAttr));
thecore_memcpy(pack_tab.items[i].alSockets, shop_tab.items[i].alSockets, sizeof(pack_tab.items[i].alSockets));
#else
switch (shop_tab.coinType)
{
case SHOP_COIN_TYPE_GOLD:
if (bOtherEmpire) // no empire price penalty for pc shop
pack_tab.items[i].price = shop_tab.items[i].price * 3;
else
pack_tab.items[i].price = shop_tab.items[i].price;
break;
case SHOP_COIN_TYPE_SECONDARY_COIN:
pack_tab.items[i].price = shop_tab.items[i].price;
break;
}
memset(pack_tab.items[i].aAttr, 0, sizeof(pack_tab.items[i].aAttr));
memset(pack_tab.items[i].alSockets, 0, sizeof(pack_tab.items[i].alSockets));
#endif
Bu şekilde yaptığımızda core veriyor. Olması gereken, gösterdiği yeri komple değiştirmek değil.
Yukarıda verdiğim koddan sadece şu kısmı değiştirmemiz gerekiyor:
C++:
memset(pack_tab.items[i].aAttr, 0, sizeof(pack_tab.items[i].aAttr));
memset(pack_tab.items[i].alSockets, 0, sizeof(pack_tab.items[i].alSockets));
Şöyle:
C++:
#if defined(ENABLE_RENEWAL_SHOPEX)
pack_tab.items[i].price_type = shop_tab.items[i].price_type;
pack_tab.items[i].price_vnum = shop_tab.items[i].price_vnum;
pack_tab.items[i].price = shop_tab.items[i].price;
if (bOtherEmpire && pack_tab.items[i].price_type == SHOPEX_GOLD)
pack_tab.items[i].price *= 3;
thecore_memcpy(pack_tab.items[i].aAttr, shop_tab.items[i].aAttr, sizeof(pack_tab.items[i].aAttr));
thecore_memcpy(pack_tab.items[i].alSockets, shop_tab.items[i].alSockets, sizeof(pack_tab.items[i].alSockets));
#else
memset(pack_tab.items[i].aAttr, 0, sizeof(pack_tab.items[i].aAttr));
memset(pack_tab.items[i].alSockets, 0, sizeof(pack_tab.items[i].alSockets));
#endif
Ek olarak bu kodların biraz yukarısında şunu bulup:
C++:
char temp[8096]; // ÃÖ´ë 1728 * 3
Şu şekilde değiştirmeniz gerekiyor:
C++:
#if defined(ENABLE_RENEWAL_SHOPEX)
char temp[8096 * 3];
#else
char temp[8096]; // ÃÖ´ë 1728 * 3
#endif
Bu düzenleme sonrasında core hatasından kurtulmuş olacaksınız.