kralhakan2009 1
kralhakan2009
Vahsi Uzman 1
Vahsi Uzman
mavzermete 1
mavzermete
xranzei 1
xranzei
noisiv 1
noisiv
Manwe Work 1
Manwe Work
Hikaye Ekle

Cevaplanmadı Animasyon silah sorunu

  • Konuyu başlatan Konuyu başlatan Graphic Designer
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 3
  • Görüntüleme Görüntüleme 822

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!

Selamun aleyküm arkadaslar shining sistemi ile animasyonlu silah yaptım anlamadıgım şekilde silah kostümlerinde animasyon tek elde gözüküyor diger elde gözükmüyor bilgisi olan yardımcı olabilir mi.


image.png


[CODE lang="python" title="İstanceBase.cpp"]#ifdef ENABLE_SHINING_SYSTEM
//This method checks if the item has shinings and will attach them.
//Weapons are heaving special checks for two sided weapons like daggers or fans while mounting.
//Every itemtype is supported. If no explicit logic is implemented it will be attached to "Bip01".
void CInstanceBase::__GetShiningEffect(CItemData* pItem)
{
//Set this to true if you want to hide the refine effect if there's a shining for this item.
bool removeRefineEffect = false;
CItemData::TItemShiningTable shiningTable = pItem->GetItemShiningTable();
if (pItem->GetType() == CItemData::ITEM_TYPE_WEAPON || (pItem->GetType() == CItemData::ITEM_TYPE_COSTUME && pItem->GetSubType() == CItemData::COSTUME_WEAPON))
{
__ClearWeaponShiningEffect();
if (shiningTable.Any() && removeRefineEffect)
{
__ClearWeaponRefineEffect();
}
for (int i = 0; i < CItemData::ITEM_SHINING_MAX_COUNT; i++)
{
if (strcmp(shiningTable.szShinings, ""))
{
if (pItem->GetSubType() == CItemData::WEAPON_FAN)
{
__AttachWeaponShiningEffect(i, shiningTable.szShinings, "PART_WEAPON_LEFT");
}
else
{
//Check for double sided weapons or fan which is attached on both sides when mounted.
bool twoSidedWeapon = pItem->GetSubType() == CItemData::WEAPON_DAGGER || (IsMountingHorse() && pItem->GetSubType() == CItemData::WEAPON_FAN) || pItem->GetSubType() == CItemData::WEAPON_CLAW;
if (twoSidedWeapon)
{
__AttachWeaponShiningEffect(i, shiningTable.szShinings, "PART_WEAPON_LEFT");
}
__AttachWeaponShiningEffect(i, shiningTable.szShinings, "PART_WEAPON");
}
}
}
}
else if ((pItem->GetType() == CItemData::ITEM_TYPE_ARMOR && pItem->GetSubType() == CItemData::ARMOR_BODY) || (pItem->GetType() == CItemData::ITEM_TYPE_COSTUME && pItem->GetSubType() == CItemData::COSTUME_BODY))
{
__ClearArmorShiningEffect();
if (shiningTable.Any() && removeRefineEffect)
{
__ClearArmorRefineEffect();
}
for (int i = 0; i < CItemData::ITEM_SHINING_MAX_COUNT; i++)
{
if (strcmp(shiningTable.szShinings, ""))
{
__AttachArmorShiningEffect(i, shiningTable.szShinings);
}
}
}
}
//Attaching the shining effect.
//BoneName can be "PART_WEAPON" or "PART_WEAPON_LEFT" to get the attaching bone name dynamically.
//If boneName is not given "Bip01" is used as boneName.
void CInstanceBase::__AttachWeaponShiningEffect(int effectIndex, const char* effectFileName, const char* boneName)
{
if (IsAffect(AFFECT_INVISIBILITY))
{
return;
}
if (effectIndex >= CItemData::ITEM_SHINING_MAX_COUNT)
{
return;
}
CEffectManager::Instance().RegisterEffect(effectFileName, false, false);
if (!strcmp(boneName, "PART_WEAPON"))
{
const char* c_szRightBoneName;
m_GraphicThingInstance.GetAttachingBoneName(CRaceData::PART_WEAPON, &c_szRightBoneName);
if (strcmp(c_szRightBoneName, ""))
{
m_weaponShiningEffects[0][effectIndex] = m_GraphicThingInstance.AttachEffectByName(0, c_szRightBoneName, effectFileName);
}
}
else if (!strcmp(boneName, "PART_WEAPON_LEFT"))
{
const char* c_szLeftBoneName;
m_GraphicThingInstance.GetAttachingBoneName(CRaceData::PART_WEAPON_LEFT, &c_szLeftBoneName);
if (strcmp(c_szLeftBoneName, ""))
{
m_weaponShiningEffects[1][effectIndex] = m_GraphicThingInstance.AttachEffectByName(0, c_szLeftBoneName, effectFileName);
}
}
else
{
Tracef("Invalid partname for getting attaching bone name. %s - %s", effectFileName, boneName);
}
}
//Attaching the armor shining effect.
//If boneName is not given "Bip01" is used as boneName.
void CInstanceBase::__AttachArmorShiningEffect(int effectIndex, const char* effectFileName, const char* boneName)
{
if (IsAffect(AFFECT_INVISIBILITY))
{
return;
}
if (effectIndex >= CItemData::ITEM_SHINING_MAX_COUNT)
{
return;
}
if (!strcmp(boneName, ""))
{
Tracef("Empty bone name for attaching armor shining. Effect Index: %i, EffectFileName: %s", effectIndex, effectFileName);
return;
}
CEffectManager::Instance().RegisterEffect(effectFileName, false, false);
m_armorShiningEffects[effectIndex] = m_GraphicThingInstance.AttachEffectByName(0, boneName, effectFileName);
}
//Clears all weapon shining effects. Left & Right if set.
void CInstanceBase::__ClearWeaponShiningEffect(bool detaching)
{
if (detaching)
{
for (int i = 0; i < CItemData::ITEM_SHINING_MAX_COUNT; i++)
{
if (m_weaponShiningEffects[0])
{
__DetachEffect(m_weaponShiningEffects[0]);
}
if (m_weaponShiningEffects[1])
{
__DetachEffect(m_weaponShiningEffects[1]);
}
}
}
memset(&m_weaponShiningEffects, 0, sizeof(m_weaponShiningEffects));
}
//Clears all armor shining effects.
void CInstanceBase::__ClearArmorShiningEffect(bool detaching)
{
if (detaching)
{
for (int i = 0; i < CItemData::ITEM_SHINING_MAX_COUNT; i++)
{
__DetachEffect(m_armorShiningEffects);
}
}
memset(&m_armorShiningEffects, 0, sizeof(m_armorShiningEffects));
}
#endif[/CODE]
 

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

Geri
Üst