Az lenne a problémám hogy ha playersettinsmoduleba +24 meg +25-re teszem az effectet akkor a fegyveren nem látszik az effect de ha megölök egy mobot akkor annak a helyén ott a effect...
instancebase.cpp
[spoiler]
IdézUINT CInstanceBase::__GetRefinedEffect(CItemData* pItem)
{
DWORD refine = max(pItem->GetRefine() + pItem->GetSocketCount(),CItemData::ITEM_SOCKET_MAX_NUM) - CItemData::ITEM_SOCKET_MAX_NUM;
switch (pItem->GetType())
{
case CItemData::ITEM_TYPE_WEAPON:
__ClearWeaponRefineEffect();
if (pItem->GetSubType() == CItemData::WEAPON_SWORD)
{
//NEW WEAPON - [New Effect] - NEW WEAPON
DWORD vnum = pItem->GetIndex();
if (vnum == 300) // Change "ID" to your Weapon ID
{
__ClearWeaponRefineEffect(); // Clear the previous effect
m_swordRefineEffectRight = EFFECT_REFINED + EFFECT_SWORD_REFINED7 + refine - 7; // Normal Weapon Refine-effect
m_swordRefineEffectRight = EFFECT_REFINED + EFFECT_SWORD_REFINED_SPECIAL1; // effect 24 NEW EFFECT
}
//End NEW WEAPON - [New Effect] - NEW WEAPON
}
if (pItem->GetSubType() == CItemData::WEAPON_SWORD)
{
//NEW WEAPON - [New Effect] - NEW WEAPON
DWORD vnum = pItem->GetIndex();
if (vnum == 301) // Change "ID" to your Weapon ID
{
__ClearWeaponRefineEffect(); // Clear the previous effect
m_swordRefineEffectRight = EFFECT_REFINED + EFFECT_SWORD_REFINED7 + refine - 7; // Normal Weapon Refine-effect
m_swordRefineEffectRight = EFFECT_REFINED + EFFECT_SWORD_REFINED_SPECIAL2; // effect 25 NEW EFFECT
}
//End NEW WEAPON - [New Effect] - NEW WEAPON
}
if (refine < 7) //ÇöŔç Á¦·Ăµµ 7 ŔĚ»ó¸¸ ŔĚĆĺĆ®°ˇ ŔÖ˝Ŕ´Ď´Ů.
return 0;
switch(pItem->GetSubType())
{
case CItemData::WEAPON_DAGGER:
m_swordRefineEffectRight = EFFECT_REFINED+EFFECT_SMALLSWORD_REFINED7+refine-7;
m_swordRefineEffectLeft = EFFECT_REFINED+EFFECT_SMALLSWORD_REFINED7_LEFT+refine-7;
break;
case CItemData::WEAPON_FAN:
m_swordRefineEffectRight = EFFECT_REFINED+EFFECT_FANBELL_REFINED7+refine-7;
break;
case CItemData::WEAPON_ARROW:
case CItemData::WEAPON_BELL:
m_swordRefineEffectRight = EFFECT_REFINED+EFFECT_SMALLSWORD_REFINED7+refine-7;
break;
case CItemData::WEAPON_BOW:
m_swordRefineEffectRight = EFFECT_REFINED+EFFECT_BOW_REFINED7+refine-7;
break;
default:
m_swordRefineEffectRight = EFFECT_REFINED+EFFECT_SWORD_REFINED7+refine-7;
}
if (m_swordRefineEffectRight)
m_swordRefineEffectRight = __AttachEffect(m_swordRefineEffectRight);
if (m_swordRefineEffectLeft)
m_swordRefineEffectLeft = __AttachEffect(m_swordRefineEffectLeft);
break;
[/spoiler]
instancebase.h
[spoiler]
Idézenum //ľĆ·ˇ ąřČŁ°ˇ ąŮ˛î¸é registerEffect Âʵµ ąŮ˛Ůľî Áŕľß ÇŃ´Ů.
{
EFFECT_REFINED_NONE,
EFFECT_SWORD_REFINED6,
EFFECT_SWORD_REFINED7,
EFFECT_SWORD_REFINED8,
EFFECT_SWORD_REFINED9,
EFFECT_BOW_REFINED6,
EFFECT_BOW_REFINED7,
EFFECT_BOW_REFINED8,
EFFECT_BOW_REFINED9,
EFFECT_FANBELL_REFINED6,
EFFECT_FANBELL_REFINED7,
EFFECT_FANBELL_REFINED8,
EFFECT_FANBELL_REFINED9,
EFFECT_SMALLSWORD_REFINED6,
EFFECT_SMALLSWORD_REFINED7,
EFFECT_SMALLSWORD_REFINED8,
EFFECT_SMALLSWORD_REFINED9,
EFFECT_SMALLSWORD_REFINED6_LEFT,
EFFECT_SMALLSWORD_REFINED7_LEFT,
EFFECT_SMALLSWORD_REFINED8_LEFT,
EFFECT_SMALLSWORD_REFINED9_LEFT,
EFFECT_BODYARMOR_REFINED7,
EFFECT_BODYARMOR_REFINED8,
EFFECT_BODYARMOR_REFINED9,
EFFECT_SWORD_REFINED_SPECIAL1, // NEW_WEAPON_EFFECT_24
EFFECT_SWORD_REFINED_SPECIAL2, // NEW_WEAPON_EFFECT_24
EFFECT_REFINED_NUM,
};
[/spoiler]
playersettinsmoude.py
[spoiler]
Idézchrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+24, "PART_WEAPON", "D:/ymir work/pc/common/effect/sword/EFFECT_SWORD_REFINED_SPECIAL1.mse") ## Effect for sword
chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+25, "PART_WEAPON", "D:/ymir work/pc/common/effect/sword/EFFECT_SWORD_REFINED_SPECIAL2.mse") ## Effect for sword
[/spoiler]
Szia!
enum //ľĆ·ˇ ąřČŁ°ˇ ąŮ˛î¸é registerEffect Âʵµ ąŮ˛Ůľî Áŕľß ÇŃ´Ů.
Ennek a végére írd oda ezt:
JUST_FOR_CHECK = 150,
Beraktam de nem történt semmi. :/ Mitől függ hogy a vért +7, +8, +9-esen csillog? Meg item_protoba már nem igen tudom hol van. Instance base-be lehet csak megadni?
Magáért beszél, de azért leírom.
Adott az alábbi változó:DWORD refine = max(pItem->GetRefine() + pItem->GetSocketCount(),CItemData::ITEM_SOCKET_MAX_NUM) - CItemData::ITEM_SOCKET_MAX_NUM;
Legyen mondjuk egy tárgyunk +7-es és 2 kő mehet bele.
Megnézzük a tárgy szintjét és hozzáadjuk a foglalatainak számát. (7+2=9)Majd vesszük a nagyobbat, az imént kapott szám és a max foglalatok közül. (9>3)Utána kivonjuk a max foglalatok számát. (9-3=6)A későbbiekben pedig eljutunk az alábbi feltételhez:if (refine < 7)
return 0;
Ami a 7-nél kisebb értékeket kizárja. Remélem már érthető.[spoiler]
Tetszik a code tag használata a kódrészletekben.[/spoiler]