-
Posts
260 -
Joined
-
Last visited
-
Days Won
2 -
Feedback
0%
Content Type
Forums
Store
Third Party - Providers Directory
Feature Plan
Release Notes
Docs
Events
Posts posted by displayjokes
-
-
Anyone knows why this happens?
https://metin2.download/picture/0QZeo2sn8oKxu9k12d3Ukgvna2J3C3A8/.png
(Can't post directly a image..)
- 6
- 1
- 1
- 1
-
On 8/29/2019 at 9:35 PM, Cripplez said:
Thank you, the code is almost the same, I tried 1/2 changes but it still doesn't work
Aug 30 00:30:15 :: QUERY_FLUSH: REPLACE INTO item (id, owner_id, `window`, pos, count, vnum, socket0, socket1, socket2) VALUES(10000052, 6, 1, 17, 1, 85006, 1, 0, 0)
Even in Item of my Mysql doesn't create the apply_max_hp 10000
Huh, ir night vê the system that came incomplete, that's out of my range xb
-
1 hour ago, Fernando said:
thanks for your reply but i fixed, it was problem in uitooltip.
That's what i was thinking ^^
Glad to hear you solve it, maybe you can post the solution if someone falls into the same bug.
-
4 minutes ago, Cripplez said:
Could you send me your item.cpp ? So i will check if there are some difference in CItem::ModifyPoints(bool bAdd) and in the ENABLE_ACCE_SYSTEM
thank you
I can't upload files or images, i don't know why, but here's my function: if you need the whole code from the file i'll put it on pastebin
Spoiler
void CItem::ModifyPoints(bool bAdd)
{
int accessoryGrade;// ¹«±â¿Í °©¿Ê¸¸ ¼ÒÄÏÀ» Àû¿ë½ÃŲ´Ù.
if (false == IsAccessoryForSocket())
{
if (m_pProto->bType == ITEM_WEAPON || m_pProto->bType == ITEM_ARMOR)
{
// ¼ÒÄÏÀÌ ¼Ó¼º°È¿¡ »ç¿ëµÇ´Â °æ¿ì Àû¿ëÇÏÁö ¾Ê´Â´Ù (ARMOR_WRIST ARMOR_NECK ARMOR_EAR)
for (int i = 0; i < ITEM_SOCKET_MAX_NUM; ++i)
{
DWORD dwVnum;if ((dwVnum = GetSocket(i)) <= 2)
continue;TItemTable * p = ITEM_MANAGER::instance().GetTable(dwVnum);
if (!p)
{
sys_err("cannot find table by vnum %u", dwVnum);
continue;
}if (ITEM_METIN == p->bType)
{
//m_pOwner->ApplyPoint(p->alValues[0], bAdd ? p->alValues[1] : -p->alValues[1]);
for (int i = 0; i < ITEM_APPLY_MAX_NUM; ++i)
{
if (p->aApplies.bType == APPLY_NONE)
continue;if (p->aApplies.bType == APPLY_SKILL)
m_pOwner->ApplyPoint(p->aApplies.bType, bAdd ? p->aApplies.lValue : p->aApplies.lValue ^ 0x00800000);
else
m_pOwner->ApplyPoint(p->aApplies.bType, bAdd ? p->aApplies.lValue : -p->aApplies.lValue);
}
}
}
}accessoryGrade = 0;
}
else
{
accessoryGrade = MIN(GetAccessorySocketGrade(), ITEM_ACCESSORY_SOCKET_MAX_NUM);
}
#ifdef __SASH_SYSTEM__
if ((GetType() == ITEM_COSTUME) && (GetSubType() == COSTUME_SASH) && (GetSocket(SASH_ABSORBED_SOCKET)))
{
TItemTable * pkItemAbsorbed = ITEM_MANAGER::instance().GetTable(GetSocket(SASH_ABSORBED_SOCKET));
if (pkItemAbsorbed)
{
if ((pkItemAbsorbed->bType == ITEM_ARMOR) && (pkItemAbsorbed->bSubType == ARMOR_BODY))
{
long lDefGrade = pkItemAbsorbed->alValues[1] + long(pkItemAbsorbed->alValues[5] * 2);
double dValue = lDefGrade * GetSocket(SASH_ABSORPTION_SOCKET);
dValue = (double)dValue / 100;
dValue = (double)dValue + .5;
lDefGrade = (long) dValue;
if ((pkItemAbsorbed->alValues[1] > 0) && (lDefGrade <= 0) || (pkItemAbsorbed->alValues[5] > 0) && (lDefGrade < 1))
lDefGrade += 1;
else if ((pkItemAbsorbed->alValues[1] > 0) || (pkItemAbsorbed->alValues[5] > 0))
lDefGrade += 1;
m_pOwner->ApplyPoint(APPLY_DEF_GRADE_BONUS, bAdd ? lDefGrade : -lDefGrade);
long lDefMagicBonus = pkItemAbsorbed->alValues[0];
dValue = lDefMagicBonus * GetSocket(SASH_ABSORPTION_SOCKET);
dValue = (double)dValue / 100;
dValue = (double)dValue + .5;
lDefMagicBonus = (long) dValue;
if ((pkItemAbsorbed->alValues[0] > 0) && (lDefMagicBonus < 1))
lDefMagicBonus += 1;
else if (pkItemAbsorbed->alValues[0] > 0)
lDefMagicBonus += 1;
m_pOwner->ApplyPoint(APPLY_MAGIC_DEF_GRADE, bAdd ? lDefMagicBonus : -lDefMagicBonus);
}
else if (pkItemAbsorbed->bType == ITEM_WEAPON)
{
long lAttGrade = pkItemAbsorbed->alValues[4] + pkItemAbsorbed->alValues[5];
if (pkItemAbsorbed->alValues[3] > pkItemAbsorbed->alValues[4])
lAttGrade = pkItemAbsorbed->alValues[3] + pkItemAbsorbed->alValues[5];
double dValue = lAttGrade * GetSocket(SASH_ABSORPTION_SOCKET);
dValue = (double)dValue / 100;
dValue = (double)dValue + .5;
lAttGrade = (long) dValue;
if (((pkItemAbsorbed->alValues[3] > 0) && (lAttGrade < 1)) || ((pkItemAbsorbed->alValues[4] > 0) && (lAttGrade < 1)))
lAttGrade += 1;
else if ((pkItemAbsorbed->alValues[3] > 0) || (pkItemAbsorbed->alValues[4] > 0))
lAttGrade += 1;
m_pOwner->ApplyPoint(APPLY_ATT_GRADE_BONUS, bAdd ? lAttGrade : -lAttGrade);
long lAttMagicGrade = pkItemAbsorbed->alValues[2] + pkItemAbsorbed->alValues[5];
if (pkItemAbsorbed->alValues[1] > pkItemAbsorbed->alValues[2])
lAttMagicGrade = pkItemAbsorbed->alValues[1] + pkItemAbsorbed->alValues[5];
dValue = lAttMagicGrade * GetSocket(SASH_ABSORPTION_SOCKET);
dValue = (double)dValue / 100;
dValue = (double)dValue + .5;
lAttMagicGrade = (long) dValue;
if (((pkItemAbsorbed->alValues[1] > 0) && (lAttMagicGrade < 1)) || ((pkItemAbsorbed->alValues[2] > 0) && (lAttMagicGrade < 1)))
lAttMagicGrade += 1;
else if ((pkItemAbsorbed->alValues[1] > 0) || (pkItemAbsorbed->alValues[2] > 0))
lAttMagicGrade += 1;
m_pOwner->ApplyPoint(APPLY_MAGIC_ATT_GRADE, bAdd ? lAttMagicGrade : -lAttMagicGrade);
}
}
}
#endiffor (int i = 0; i < ITEM_APPLY_MAX_NUM; ++i)
{
#ifdef __SASH_SYSTEM__
if ((m_pProto->aApplies.bType == APPLY_NONE) && (GetType() != ITEM_COSTUME) && (GetSubType() != COSTUME_SASH))
#else
if (m_pProto->aApplies.bType == APPLY_NONE)
#endif
continue;#ifdef ENABLE_MOUNT_LIKE_HORSE_SYSTEM
if(IsMountItem())
continue;
#endif
BYTE bType = m_pProto->aApplies.bType;
long value = m_pProto->aApplies.lValue;
#ifdef __SASH_SYSTEM__
if ((GetType() == ITEM_COSTUME) && (GetSubType() == COSTUME_SASH))
{
TItemTable * pkItemAbsorbed = ITEM_MANAGER::instance().GetTable(GetSocket(SASH_ABSORBED_SOCKET));
if (pkItemAbsorbed)
{
if (pkItemAbsorbed->aApplies.bType == APPLY_NONE)
continue;
bType = pkItemAbsorbed->aApplies.bType;
value = pkItemAbsorbed->aApplies.lValue;
if (value < 0)
continue;
double dValue = value * GetSocket(SASH_ABSORPTION_SOCKET);
dValue = (double)dValue / 100;
dValue = (double)dValue + .5;
value = (long) dValue;
if ((pkItemAbsorbed->aApplies.lValue > 0) && (value <= 0))
value += 1;
}
else
continue;
}
#endif
if (bType != APPLY_SKILL)
{
if (accessoryGrade != 0)
value += MAX(accessoryGrade, value * aiAccessorySocketEffectivePct[accessoryGrade] / 100);
m_pOwner->ApplyPoint(bType, bAdd ? value : -value);
}
else
m_pOwner->ApplyPoint(bType, bAdd ? value : value ^ 0x00800000);
}
// Ãʽ´ÞÀÇ ¹ÝÁö, ÇÒ·ÎÀ© »çÅÁ, ÇູÀÇ ¹ÝÁö, ¿µ¿øÇÑ »ç¶ûÀÇ Ææ´øÆ®ÀÇ °æ¿ì
// ±âÁ¸ÀÇ Çϵå ÄÚµùÀ¸·Î °Á¦·Î ¼Ó¼ºÀ» ºÎ¿©ÇßÁö¸¸,
// ±× ºÎºÐÀ» Á¦°ÅÇÏ°í special item group Å×ÀÌºí¿¡¼ ¼Ó¼ºÀ» ºÎ¿©Çϵµ·Ï º¯°æÇÏ¿´´Ù.
// ÇÏÁö¸¸ Çϵå ÄÚµùµÇ¾îÀÖÀ» ¶§ »ý¼ºµÈ ¾ÆÀÌÅÛÀÌ ³²¾ÆÀÖÀ» ¼öµµ ÀÖ¾î¼ Æ¯¼öó¸® Çسõ´Â´Ù.
// ÀÌ ¾ÆÀÌÅÛµéÀÇ °æ¿ì, ¹Ø¿¡ ITEM_UNIQUEÀÏ ¶§ÀÇ Ã³¸®·Î ¼Ó¼ºÀÌ ºÎ¿©µÇ±â ¶§¹®¿¡,
// ¾ÆÀÌÅÛ¿¡ ¹ÚÇôÀÖ´Â attribute´Â Àû¿ëÇÏÁö ¾Ê°í ³Ñ¾î°£´Ù.
if (true == CItemVnumHelper::IsRamadanMoonRing(GetVnum()) || true == CItemVnumHelper::IsHalloweenCandy(GetVnum())
|| true == CItemVnumHelper::IsHappinessRing(GetVnum()) || true == CItemVnumHelper::IsLovePendant(GetVnum()))
{
// Do not anything.
}
else
{
for (int i = 0; i < ITEM_ATTRIBUTE_MAX_NUM; ++i)
{
if (GetAttributeType(i))
{
const TPlayerItemAttribute& ia = GetAttribute(i);
long sValue = ia.sValue;
#ifdef __SASH_SYSTEM__
if ((GetType() == ITEM_COSTUME) && (GetSubType() == COSTUME_SASH))
{
double dValue = sValue * GetSocket(SASH_ABSORPTION_SOCKET);
dValue = (double)dValue / 100;
dValue = (double)dValue + .5;
sValue = (long) dValue;
if ((ia.sValue > 0) && (sValue <= 0))
sValue += 1;
}
#endif
if (ia.bType == APPLY_SKILL)
m_pOwner->ApplyPoint(ia.bType, bAdd ? sValue : sValue ^ 0x00800000);
else
m_pOwner->ApplyPoint(ia.bType, bAdd ? sValue : -sValue);
}
}
}switch (m_pProto->bType)
{
case ITEM_PICK:
case ITEM_ROD:
{
if (bAdd)
{
if (m_wCell == INVENTORY_MAX_NUM + WEAR_WEAPON)
{
#ifdef __CHANGELOOK_SYSTEM__
DWORD dwRes = GetTransmutation() != 0 ? GetTransmutation() : GetVnum();
m_pOwner->SetPart(PART_WEAPON, dwRes);
#else
m_pOwner->SetPart(PART_WEAPON, GetVnum());
#endif
}
}
else
{
if (m_wCell == INVENTORY_MAX_NUM + WEAR_WEAPON)
#ifdef __WEAPON_COSTUME_SYSTEM__
m_pOwner->SetPart(PART_WEAPON, 0);
#else
m_pOwner->SetPart(PART_WEAPON, m_pOwner->GetOriginalPart(PART_WEAPON));
#endif
}
}
break;case ITEM_WEAPON:
{
#ifdef __WEAPON_COSTUME_SYSTEM__
if (m_pOwner->GetWear(WEAR_COSTUME_WEAPON) != 0)
break;
#endif
if (bAdd)
{
if (m_wCell == INVENTORY_MAX_NUM + WEAR_WEAPON)
{
#ifdef __CHANGELOOK_SYSTEM__
DWORD dwRes = GetTransmutation() != 0 ? GetTransmutation() : GetVnum();
m_pOwner->SetPart(PART_WEAPON, dwRes);
#else
m_pOwner->SetPart(PART_WEAPON, GetVnum());
#endif
}
}
else
{
if (m_wCell == INVENTORY_MAX_NUM + WEAR_WEAPON)
#ifdef __WEAPON_COSTUME_SYSTEM__
m_pOwner->SetPart(PART_WEAPON, 0);
#else
m_pOwner->SetPart(PART_WEAPON, m_pOwner->GetOriginalPart(PART_WEAPON));
#endif
}
}
break;case ITEM_ARMOR:
{
// ÄÚ½ºÃõ body¸¦ ÀÔ°íÀÖ´Ù¸é armor´Â ¹þ´ø ÀÔ´ø »ó°ü ¾øÀÌ ºñÁÖ¾ó¿¡ ¿µÇâÀ» ÁÖ¸é ¾È µÊ.
if (0 != m_pOwner->GetWear(WEAR_COSTUME_BODY))
break;if (GetSubType() == ARMOR_BODY || GetSubType() == ARMOR_HEAD || GetSubType() == ARMOR_FOOTS || GetSubType() == ARMOR_SHIELD)
{
if (bAdd)
{
if (GetProto()->bSubType == ARMOR_BODY)
#ifdef __CHANGELOOK_SYSTEM__
{
DWORD dwRes = GetTransmutation() != 0 ? GetTransmutation() : GetVnum();
m_pOwner->SetPart(PART_MAIN, dwRes);
}
#else
m_pOwner->SetPart(PART_MAIN, GetVnum());
#endif
}
else
{
if (GetProto()->bSubType == ARMOR_BODY)
m_pOwner->SetPart(PART_MAIN, m_pOwner->GetOriginalPart(PART_MAIN));
}
}
}
break;// ÄÚ½ºÃõ ¾ÆÀÌÅÛ ÀÔ¾úÀ» ¶§ ij¸¯ÅÍ parts Á¤º¸ ¼¼ÆÃ. ±âÁ¸ ½ºÅ¸ÀÏ´ë·Î Ãß°¡ÇÔ..
case ITEM_COSTUME:
{
DWORD toSetValue = this->GetVnum();
EParts toSetPart = PART_MAX_NUM;// °©¿Ê ÄÚ½ºÃõ
if (GetSubType() == COSTUME_BODY)
{
toSetPart = PART_MAIN;
if (false == bAdd)
{
const CItem* pArmor = m_pOwner->GetWear(WEAR_BODY);
toSetValue = (NULL != pArmor) ? pArmor->GetVnum() : m_pOwner->GetOriginalPart(PART_MAIN);
#ifdef __CHANGELOOK_SYSTEM__
if (pArmor)
toSetValue = pArmor->GetTransmutation() != 0 ? pArmor->GetTransmutation() : pArmor->GetVnum();
#endif
}
#ifdef __CHANGELOOK_SYSTEM__
else
toSetValue = GetTransmutation() != 0 ? GetTransmutation() : GetVnum();
#endif
}// Çì¾î ÄÚ½ºÃõ
else if (GetSubType() == COSTUME_HAIR)
{
toSetPart = PART_HAIR;
if (!bAdd)
toSetValue = 0;
else
{
#ifdef __CHANGELOOK_SYSTEM__
DWORD dwTransmutation = GetTransmutation();
if (dwTransmutation != 0)
{
TItemTable* pItemTable = ITEM_MANAGER::instance().GetTable(dwTransmutation);
toSetValue = (pItemTable != NULL) ? pItemTable->alValues[3] : GetValue(3);
}
else
toSetValue = GetValue(3);
#else
toSetValue = GetValue(3);
#endif
}
}
#ifdef __SASH_SYSTEM__
else if (GetSubType() == COSTUME_SASH)
{
toSetValue -= 85000;
if (GetSocket(SASH_ABSORPTION_SOCKET) >= SASH_EFFECT_FROM_ABS)
toSetValue += 1000;
toSetValue = (bAdd == true) ? toSetValue : 0;
toSetPart = PART_SASH;
}
#endif
#ifdef __WEAPON_COSTUME_SYSTEM__
else if (GetSubType() == COSTUME_WEAPON)
{
toSetPart = PART_WEAPON;
if (!bAdd)
{
const CItem* pWeapon = m_pOwner->GetWear(WEAR_WEAPON);
toSetValue = (NULL != pWeapon) ? pWeapon->GetVnum() : m_pOwner->GetPart(PART_WEAPON);
}
}
#endifif (PART_MAX_NUM != toSetPart)
{
m_pOwner->SetPart((BYTE)toSetPart, toSetValue);
m_pOwner->UpdatePacket();
}
}
break;
case ITEM_UNIQUE:
{
if (0 != GetSIGVnum())
{
const CSpecialItemGroup* pItemGroup = ITEM_MANAGER::instance().GetSpecialItemGroup(GetSIGVnum());
if (NULL == pItemGroup)
break;
DWORD dwAttrVnum = pItemGroup->GetAttrVnum(GetVnum());
const CSpecialAttrGroup* pAttrGroup = ITEM_MANAGER::instance().GetSpecialAttrGroup(dwAttrVnum);
if (NULL == pAttrGroup)
break;
for (itertype (pAttrGroup->m_vecAttrs) it = pAttrGroup->m_vecAttrs.begin(); it != pAttrGroup->m_vecAttrs.end(); it++)
{
m_pOwner->ApplyPoint(it->apply_type, bAdd ? it->apply_value : -it->apply_value);
}
}
}
break;
}
}Hope this helps
-
1 hour ago, Cripplez said:
LOL, I don't understand why it is not working for me ahah
Do you have made any changes on void CItem::ModifyPoints(bool bAdd) function in item.cpp?
I'm not sure if it is from here the problem but.. xD
-
Problem solved, forgot to add transmutation in list of values to save on DB, so i was trying to save 6 values, but only declared 5, this on cache.cpp
-
1 hour ago, Torres said:
I am the same as your file, but the "/u" GM command is not working, I am very upset, thank you for your answer.@displayjokes
Check in cmd.cpp if you have the user command: https://metin2.download/picture/r3F9504x09DVmF8K988YXgTtGTP6KMUj/.gif
If you do have it like that, try to use /user instead of /u
-
4 hours ago, Torres said:
HI devs,I have a error.
when I am Gm,I use "/u" ,ACMD(do_user);,can't work,nothing can show,
How can I fix it?
Thank you for your answer
best wishes to you!This is mine if it helps:
SpoilerACMD(do_user)
{
const DESC_MANAGER::DESC_SET & c_ref_set = DESC_MANAGER::instance().GetClientSet();
user_func func;func.initialize(ch);
std::for_each(c_ref_set.begin(), c_ref_set.end(), func);if (func.count % 4)
ch->ChatPacket(CHAT_TYPE_INFO, func.str);ch->ChatPacket(CHAT_TYPE_INFO, "Total %d", func.count);
}I don't know what that is supost to do but here it is
- 1
-
On 8/20/2019 at 10:51 PM, Fernando said:
Thanks for your reply,but my syserr is empty.
Doest this happen to every item? Or just some? Can you see any tooltips? Like in swords/armors/etc?
-
Hey, so has the title says, i do something like: /i 1009, and the item is not saved if i shut down the server, even after 30 minutes (already had time to refresh the cache and saved it on db), even with /shutdown in game.
The character position is saved, same has the yang, but the items, they all disapear.. i've repaired the table, and still.. Check if it was permissions error but it doesn't seem so..
Any help is appreciated, even if just the place where things are inserted into db, can't find it either to debug
Thanks in advance
-
3 hours ago, Ryukend said:
Hello good afternoon, I have a problem, I turned on the server repair all the problems that may have happened and the client enters the character selector and then returns to the login, the autolog and syserr of the ch, special_ch, auth and db do not give any error, what can cause this problem?
Thank you.
syserr of client and syserr of db?
Try to create a new character and check if does the same behavior
-
17 hours ago, Mimoza said:
do you have a quest?
I don't know if this is what you want, but here's the original quest, let me know if it works, if not, tell me the problem and if i can i will fix it:
- 2
-
23 minutes ago, leonvanilla said:
I said try to return true on that function but it gives me segmentation error.
I did not understand what do you mean
-
22 minutes ago, newhere said:
maybe here: if (ABSORB == GetAcceWindowType())
if (ABSORB == GetAcceWindowType())
{if (m_pointsInstant.pAcceSlots[ACCE_SLOT_RIGHT] != WORD_MAX && m_pointsInstant.pAcceSlots[ACCE_SLOT_LEFT] != WORD_MAX)
{
LPITEM pkAcce = GetItem(TItemPos(INVENTORY, m_pointsInstant.pAcceSlots[ACCE_SLOT_LEFT]));
LPITEM pkWeaponToAbsorb = GetItem(TItemPos(INVENTORY, m_pointsInstant.pAcceSlots[ACCE_SLOT_RIGHT]));
LPITEM pShowItem = ITEM_MANAGER::instance().CreateItem(pkAcce->GetVnum(), 1, 0, false, -1, true);pkWeaponToAbsorb->CopyAttributeTo(pShowItem);
pShowItem->SetSocket(0, pkAcce->GetSocket(0));
pShowItem->SetSocket(1, pkWeaponToAbsorb->GetVnum());TPacketGCAcce pack;
pack.header = HEADER_GC_ACCE;
pack.subheader = ACCE_SUBHEADER_GC_SET_ITEM;
pack.size = sizeof(TPacketGCAcce) + sizeof(TPacketGCItemSet);TPacketGCItemSet pack_sub;
pack_sub.header = 0;
pack_sub.Cell = TItemPos(ACCEREFINE, (WORD)ACCE_SLOT_RESULT);
pack_sub.vnum = pShowItem->GetVnum();
pack_sub.count = (BYTE)pShowItem->GetCount();
pack_sub.flags = pShowItem->GetFlag();
pack_sub.anti_flags = pShowItem->GetAntiFlag();thecore_memcpy(pack_sub.alSockets, pShowItem->GetSockets(), sizeof(pack_sub.alSockets));
thecore_memcpy(pack_sub.aAttr, pShowItem->GetAttributes(), sizeof(pack_sub.aAttr));
GetDesc()->BufferedPacket(&pack, sizeof(TPacketGCAcce));
GetDesc()->Packet(&pack_sub, sizeof(TPacketGCItemSet));M2_DESTROY_ITEM(pShowItem);
}if you comment this line and absorb a weapon, does the sash gain attributtes or no?
comment this and try:
pkWeaponToAbsorb->CopyAttributeTo(pShowItem);If it does not gain any atribute we can do a workaround, setting the attributes by ourselves
-
3 minutes ago, leonvanilla said:
I solved it, but it still tells me it's not online.
Oh okay, that's different, now we need to look for that message, you can try to copy the message to notepad, search for it on translate or locale.lua, i do not remember what file, and check what's the key phrase that's giving you that message, than we can look for that key phrase in this file, because i'm not sure where it tells you the player is not offline, other options is that you can send chatpacket to see where it stops, like this:
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" Test 1 "));than ahead in the functions add a couple more and add +1 to the number after Test, this is how i usually debug
-
-
2 minutes ago, leonvanilla said:
NPC is a function starter in InstanceBase.cpp.
int i=0;
if(c_rkCreateData.m_dwRace == 30122)
{
SetInstanceType(CActorInstance::TYPE_PC);
SetRace(3);
i=1;
}Whatever I do in cmd_emotion tells me that NPC is not online.
I get this error at the function given to you above.You are missing parentesis, but show me that part of the function complete, with the number of the lines please
-
5 minutes ago, leonvanilla said:
I believe what you want to do can be done easier, you are only returning true in that function, on ACMD(do_emotion), find this:
if (!victim->IsPC() || victim == ch)
Change it to:
if ( (!victim->IsPC() && victim->GetRaceNum() != 30122 ) || victim == ch)
I believe it work, if not you can play around that if, this is not tested, plus what MrQuin said, you will need the animations for the NPCs.
-
3 minutes ago, leonvanilla said:
I'm getting this error.
You did not declared ch, you have it rch, change the ch-> to rch-> has it is declared on the begining
-
8 minutes ago, newhere said:
I have no calculation for 1/5 and 6/7 bonus
they just add to the sash like in the weapon. no function for calculation.
so i need to find the item attribute add to sash thing
and write it like
if 25% sash
item_attr /100*25
i think.
Show me the functions where the absorptions happens and we can see where's the problem
- 1
-
7 hours ago, Torres said:
With only that i grabed a pet system from other source i had and inserted it on mine, pet is now working fine, thanks!
I might do a comparsion in the files to understand but problem was solved
- 1
-
2 minutes ago, newhere said:
thanks for help but my problem was that the sash absorbs 100% of the bonus not like 25%.
"Its absorbing the 100% of the 1/5 and 6/7 Bonus."
Where do you have the sash functions? It's not on item.cpp that you posted if i'm not blind xD
- 1
-
Watchout for the bumping rules, @Raylee will slap you
On topic, i belive you are doing this: IF character is NPC equals to 30122, do something, so try to spell it out, you will see the error, you verify if it's an NPC and you want a true or false to be a vnum/id..
I believe you must do GetRaceNum() to get a comparsion to npc vnum/id
Something like:
ch->IsNPC() && ch->GetRaceNum() == 30122
-
On 8/17/2019 at 5:31 PM, Syrex said:
I believe you are trying to say that your shining does not appear if the item is +9 for example? The effects of mini fireflies? xb
If so, problem can be on your binary adding the effect or on python when you are declaring the effect
Render Target Remastered
in Features & Metin2 Systems
Posted · Edited by Metin2 Dev
Core X - External 2 Internal
I did it, same output
13 succeed, 3 failed
Full output with warnings: https://metin2.download/picture/sjg7qJuL5yxUuQid6M6G7WkSG6sPxRhG/.png