mrblar, simya efsunu değiştirirken istenen ejderha alevi mesela 20 ise ben daha az koyduğumda ve uygula dediğim anda simya bonusları siliniyor ve simya penceresine gidiyor. ben ise ejderha alevi sayısını kontrol ettirip istenen ejderha alevi sayısı düşük ise uygula dediğimde sistem herhangi bir işlem yapmadan hata yazısı vermesini istiyorum. aşağıya kodu ekledim nasıl bir kod eklenirse böyle bir düzen sağlanır. Kodun en altındaki "else ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("DS_ChangeAttr_Error2")) " yazısı hata kodlaması bunu verdiğinde gerçekleşiyor. teşekkürler iyi forumlar.
cmd_general.cpp:
#ifdef ENABLE_DS_CHANGE_ATTR
ACMD(do_ds_change_attr)
{
char arg1[256];
one_argument(argument, arg1, sizeof(arg1));
if (!*arg1)
return;
if (ch->GetExchange() || ch->GetMyShop() || ch->GetShopOwner() || ch->IsOpenSafebox() || ch->IsCubeOpen() || ch->IsCombOpen() || ch->IsOpenMailBox() || ch->isSashOpened(true) || ch->isSashOpened(false))
{
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("´Ù¸¥ °Å·¡Ã¢ÀÌ ¿¸°»óÅ¿¡¼´Â »óÁ¡°Å·¡¸¦ ÇÒ¼ö °¡ ¾ø½À´Ï´Ù."));
return;
}
#ifdef ENABLE_ACCOUNT_LOCK
if (ch->GetAccountLockSize() == 1)
{
ch->ChatPacket(CHAT_TYPE_INFO, "Hesap kilitliyken bu işlemi yapamazsınız.");
return;
}
#endif
DWORD dwPos = 0;
str_to_number(dwPos, arg1);
const BYTE needFireCountList[] = { 1, 3, 5, 10, 20 };
BYTE bNeedFire = -1;
if (dwPos < 0 || dwPos >= DRAGON_SOUL_INVENTORY_MAX_NUM)
return;
LPITEM item = ch->GetItem(TItemPos(DRAGON_SOUL_INVENTORY, dwPos));
if (!item || item->IsExchanging() || item->IsEquipped())
return;
if (item->IsDragonSoul()) {
bNeedFire = needFireCountList[(item->GetVnum() / 100) % 10];
if (bNeedFire != -1) {
if (DSManager::instance().IsActiveDragonSoul(item) == true) {
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("DS_ChangeAttr_Error1"));
return;
}
for (BYTE i = 0; i < 6; i++) { item->SetForceAttribute(i, 0, 0); }
if (ch->CountSpecifyItem(100700) >= bNeedFire) {
bool ret = DSManager::instance().PutAttributes(item);
if (ret == true) {
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("DS_ChangeAttr_Success"));
ch->RemoveSpecifyItem(100700, bNeedFire);
ch->ChatPacket(CHAT_TYPE_COMMAND, "DS_ChangeAttr_Success");
}
else {
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("DS_ChangeAttr_Failed"));
ch->ChatPacket(CHAT_TYPE_COMMAND, "DS_ChangeAttr_Failed");
}
}
else ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("DS_ChangeAttr_Error2"));
}
}
}
#endif
Son düzenleme: