xranzei 1
xranzei
Best Studio 1
Best Studio
Bvural41 1
Bvural41
noisiv 1
noisiv
Manwe Work 1
Manwe Work
Hikaye Ekle

Cevaplanmadı Char_Item.cpp Hakkında

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!

Merhabalar, öncelikle yeniden TurkMMO'da konu açmak heyecan verici.

char_item.cpp'de efsun nesneleriyle oynuyorum ancak bir konuda takılı kaldım.

Kullandığım yeni bir efsun itemi "71352" ekledim. Bu efsun nesnesi silah itemine sürüklendiği takdirde belirli bir efsun vermesini istiyorum (Atıyorum Güç efsunu).
Ekrana saatlerdir bakıyorum, bir kaç deneme kodum oldu ama maalesef oyundaki standart efsun nesnesi işlevi sağladı. Bu konu hakkında yardımcı olabilecek varsa ne mutlu bize.



case USE_ADD_ATTRIBUTE :
if (item->GetVnum() == 71352)
{
if (item2->GetType() == ITEM_WEAPON)
{

item2->AddAttribute(5, 5);
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Başarıyla Eklendi."));
}
else
{
ChatPacket(CHAT_TYPE_INFO, "Eklenemedi");
return false;
}
}
 
item2->ClearAttribute();
item2->SetForceAttribute( 0, APPLY_STR, 5); //Güç +5

Bunu dener misin?

Efsun Arrayı yapıp içine efsunlar eklersin bunu random ile arrayın 1 ve 2 .ci kısımlarını alarak

SetForceAttribute(0, random[0], random[1]) gibi yapabilirsin.
 
Son düzenleme:
item2->ClearAttribute();
item2->SetForceAttribute( 0, APPLY_STR, 5); //Güç +5

Bunu dener misin?

Efsun Arrayı yapıp içine efsunlar eklersin bunu random ile arrayın 1 ve 2 .ci kısımlarını alarak

SetForceAttribute(0, random[0], random[1]) gibi yapabilirsin.
Teşekkür ederim. Maalesef itemi kullandığımda sıradan Efsun nesnesi işlevi gösteriyor. Acaba case USE_ADD_ATTRIBUTE veya case USE_CHANGE_ATTRIBUTE kaynaklı olabilir mi?
 
Buraya case USE_ADD_ATTRIBUTE : kodunuzu komple ekler misiniz?
case USE_ADD_ATTRIBUTE3:
if (item2->GetAttributeCount() < 4)
{
// ¿¬Àç°¡ Ư¼öó¸®
// Àı´ë·Î ¿¬Àç°¡ Ãß°¡ ¾ÈµÉ°Å¶ó ÇÏ¿© Çϵå ÄÚµùÇÔ.
if (item->GetVnum() == 71353)
{
if (item2->GetType() == ITEM_WEAPON)
{
bool bCanUse = true;
for (int i = 0; i < ITEM_LIMIT_MAX_NUM; ++i)
{
if (item2->GetLimitType(i) == LIMIT_LEVEL && item2->GetLimitValue(i) > 90)
{
bCanUse = false;
break;
}
}
if (false == bCanUse)
{
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Àû¿ë ·¹º§º¸´Ù ³ô¾Æ »ç¿ëÀÌ ºÒ°¡´ÉÇÕ´Ï´Ù."));
break;
}
}
else
{
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("¹«±â¿Í °©¿Ê¿¡¸¸ »ç¿ë °¡´ÉÇÕ´Ï´Ù."));
break;
}
}
char buf[21];
snprintf(buf, sizeof(buf), "%u", item2->GetID());

if (number(1, 100) <= aiItemAttributeAddPercent[item2->GetAttributeCount()])
{
item2->ClearAttribute();
item2->SetForceAttribute(0, APPLY_STR, 5); //Güç +5
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("¼Ó¼º Ãß°¡¿¡ ¼º°øÇÏ¿´½À´Ï´Ù."));

int iAddedIdx = item2->GetAttributeCount() - 1;
LogManager::instance().ItemLog(
GetPlayerID(),
item2->GetAttributeType(iAddedIdx),
item2->GetAttributeValue(iAddedIdx),
item->GetID(),
"ADD_ATTRIBUTE_SUCCESS",
buf,
GetDesc()->GetHostName(),
item->GetOriginalVnum());
}



else
{
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("¼Ó¼º Ãß°¡¿¡ ½ÇÆĞÇÏ¿´½À´Ï´Ù."));
LogManager::instance().ItemLog(this, item, "ADD_ATTRIBUTE_FAIL", buf);
}

item->SetCount(item->GetCount() - 1);
}
else
{
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("´õÀÌ»ó ÀÌ ¾ÆÀÌÅÛÀ» ÀÌ¿ëÇÏ¿© ¼Ó¼ºÀ» Ãß°¡ÇÒ ¼ö ¾ø½À´Ï´Ù."));
}
break;
item_length.h dosyasında case USE_ADD_ATTRIBUTE3 tanımladım.
kodu 71152 yeşil efsun nesnesi kodundan baz aldım.
 

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

Geri
Üst