- Mesaj
- 20
- Çözümler
- 1
- Beğeni
- 4
- Puan
- 418
- Ticaret Puanı
- 0
Merhaba,
Öncelikle forumda gördüğüm kadarıyla herkes bir şeyleri öğrenme derdinde olduğunu ve insanların birbirine yardım ettiğini görünce çok etkilendim. Türkiye'nin böyle bir foruma sahip olması beni etkiledi. Bunun için forumda bulunan bütün arkadaşlara teşekkür ederim.
Yardım istediğim konuya gelirsek, bildiğimiz gibi efsun oranları 5 kademe şeklindedir. Benim yapmaya çalıştığım ise bu mantığı kaldırıp oransal bir efsun nesnesi oluşturmak.
Örnek olarak,
HP --> 500 ile 3000 arası herhangi bir oranda gelmesi. (502,515,1920 vs. gibi)
STR --> 3 ile 12 arası gelmesi (3,4,5,6,7,8,9,10,11,12)
Charitem.cpp kullandığım kod.
Yani ortalama zarar gibi efsunların gelmesini istiyorum. Forumda paylaşılan bir konuda spesifik efsun nesnesi oluşturması yapıldı. Bu kodlar üzerinden bunu yapmaya çalışıyorum. Yardımcı olursanız sevinirim.
İyi forumlar.
Öncelikle forumda gördüğüm kadarıyla herkes bir şeyleri öğrenme derdinde olduğunu ve insanların birbirine yardım ettiğini görünce çok etkilendim. Türkiye'nin böyle bir foruma sahip olması beni etkiledi. Bunun için forumda bulunan bütün arkadaşlara teşekkür ederim.
Yardım istediğim konuya gelirsek, bildiğimiz gibi efsun oranları 5 kademe şeklindedir. Benim yapmaya çalıştığım ise bu mantığı kaldırıp oransal bir efsun nesnesi oluşturmak.
Örnek olarak,
HP --> 500 ile 3000 arası herhangi bir oranda gelmesi. (502,515,1920 vs. gibi)
STR --> 3 ile 12 arası gelmesi (3,4,5,6,7,8,9,10,11,12)
Charitem.cpp kullandığım kod.
char_item.cpp USE_ADD_ATTRIBUTE:
case USE_ADD_ATTRIBUTE:
if (item->GetVnum() == 71350)
{
if (item2->GetType() != ITEM_WEAPON) // İtem tipi dışında kullanımı engeller.
return false;
if (item2->GetAttributeCount() >= 7) // 7 efsuna kadar kullanılır.
return false;
if (item2->HasAttr(APPLY_STR)) // Aynı efsun varsa engellenir.
return false;
item2->SetForceAttribute(item2->GetAttributeCount(), APPLY_STR, 5); // Güç +5 verir. 5 yerine istediğiniz miktarı yazabilirsiniz.
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Guc Bonusu Eklendi!")); // Başarılı mesajı.
return false;
}
if (item->GetVnum() == 71351)
{
if (item2->GetType() != ITEM_WEAPON) // İtem tipi dışında kullanımı engeller.
return false;
if (item2->GetAttributeCount() >= 7) // 7 efsuna kadar kullanılır.
return false;
if (item2->HasAttr(APPLY_DEX)) // Aynı efsun varsa engellenir.
return false;
item2->SetForceAttribute(item2->GetAttributeCount(), APPLY_DEX, 5); // Güç +5 verir. 5 yerine istediğiniz miktarı yazabilirsiniz.
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Çeviklik Bonusu Eklendi!")); // Başarılı mesajı.
return false;
}
if (item2->GetAttributeSetIndex() == -1)
{
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("쩌?쩌쨘?쨩 쨘짱째챈?? 쩌철 쩐첩쨈? 쩐???????쨈?쨈?."));
return false;
}
if (item2->GetAttributeCount() < 4)
{
// 쩔짭?챌째징 ?짱쩌철?쨀쨍짰
// ?캇쨈챘쨌? 쩔짭?챌째징 ??째징 쩐?쨉?째?쨋처 ??쩔짤 ??쨉책 ??쨉첫??.
if (item->GetVnum() == 71152 || item->GetVnum() == 76024)
{
if ((item2->GetType() == ITEM_WEAPON)
|| (item2->GetType() == ITEM_ARMOR && item2->GetSubType() == ARMOR_BODY))
{
bool bCanUse = true;
for (int i = 0; i < ITEM_LIMIT_MAX_NUM; ++i)
{
if (item2->GetLimitType(i) == LIMIT_LEVEL && item2->GetLimitValue(i) > 40)
{
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->AddAttribute();
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);
}
break;
Yani ortalama zarar gibi efsunların gelmesini istiyorum. Forumda paylaşılan bir konuda spesifik efsun nesnesi oluşturması yapıldı. Bu kodlar üzerinden bunu yapmaya çalışıyorum. Yardımcı olursanız sevinirim.
İyi forumlar.