emoemolizu 1 Posted December 23, 2016 Share Posted December 23, 2016 I found the following errors in game.core and I would ask you to help me solve them. 1. #0 0x0806d010 in CHARACTER::GetPoint (this=0x0, type=6 '\006') at char.cpp:3183 val = <value optimized out> __FUNCTION__ = "GetPoint" Function: int CHARACTER::GetPoint(BYTE type) const { if (type >= POINT_MAX_NUM) { sys_err("Point type overflow (type %u)", type); return 0; } int val = m_pointsInstant.points[type]; int max_val = INT_MAX; switch (type) { case POINT_STEAL_HP: case POINT_STEAL_SP: max_val = 50; break; } if (val > max_val) //xDestroy on Fix Absorbire PV/PM - vechi sys_err("POINT_ERROR: %s type %d val %d (max: %d)", GetName(), val, max_val); //xDestroy off Fix Absorbire PV/PM - vechi return (val); } char.cpp line 3183 int val = m_pointsInstant.points[type]; 2. #1 0x08078b9a in CHARACTER::PointChange (this=0x0, type=6 '\006', amount=2000, bAmount=false, bBroadcast=false) at char.cpp:3565 hp = <value optimized out> add_hp = <value optimized out> val = <value optimized out> __FUNCTION__ = "PointChange" function: case POINT_MAX_HP: { SetPoint(type, GetPoint(type) + amount); //SetMaxHP(GetMaxHP() + amount); // ÃÖ´ë »ý¸í·Â = (±âº» ÃÖ´ë »ý¸í·Â + Ãß°¡) * ÃÖ´ë»ý¸í·Â% int hp = GetRealPoint(POINT_MAX_HP); int add_hp = MIN(3500, hp * GetPoint(POINT_MAX_HP_PCT) / 100); add_hp += GetPoint(POINT_MAX_HP); add_hp += GetPoint(POINT_PARTY_TANKER_BONUS); SetMaxHP(hp + add_hp); val = GetMaxHP(); } char.cpp line 3565 SetPoint(type, GetPoint(type) + amount); 3. #2 0x08079f19 in CHARACTER::ApplyPoint (this=0x0, bApplyType=1 '\001', iVal=2000) at char.cpp:4082 bSkillVnum = <value optimized out> __FUNCTION__ = "ApplyPoint" function: void CHARACTER::ApplyPoint(BYTE bApplyType, int iVal) { switch (bApplyType) { case APPLY_NONE: // 0 break;; case APPLY_CON: PointChange(POINT_HT, iVal); PointChange(POINT_MAX_HP, (iVal * JobInitialPoints[GetJob()].hp_per_ht)); PointChange(POINT_MAX_STAMINA, (iVal * JobInitialPoints[GetJob()].stamina_per_con)); break; case APPLY_INT: PointChange(POINT_IQ, iVal); PointChange(POINT_MAX_SP, (iVal * JobInitialPoints[GetJob()].sp_per_iq)); break; case APPLY_SKILL: // SKILL_DAMAGE_BONUS { // ÃÖ»óÀ§ ºñÆ® ±âÁØÀ¸·Î 8ºñÆ® vnum, 9ºñÆ® add, 15ºñÆ® change // 00000000 00000000 00000000 00000000 // ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ // vnum ^ add change BYTE bSkillVnum = (BYTE) (((DWORD)iVal) >> 24); int iAdd = iVal & 0x00800000; int iChange = iVal & 0x007fffff; sys_log(1, "APPLY_SKILL skill %d add? %d change %d", bSkillVnum, iAdd ? 1 : 0, iChange); if (0 == iAdd) iChange = -iChange; boost::unordered_map<BYTE, int>::iterator iter = m_SkillDamageBonus.find(bSkillVnum); if (iter == m_SkillDamageBonus.end()) m_SkillDamageBonus.insert(std::make_pair(bSkillVnum, iChange)); else iter->second += iChange; } // END_OF_SKILL_DAMAGE_BONUS break; case APPLY_STR: case APPLY_DEX: case APPLY_MAX_HP: case APPLY_MAX_SP: case APPLY_MAX_HP_PCT: case APPLY_MAX_SP_PCT: case APPLY_ATT_SPEED: case APPLY_MOV_SPEED: case APPLY_CAST_SPEED: case APPLY_HP_REGEN: case APPLY_SP_REGEN: case APPLY_POISON_PCT: case APPLY_STUN_PCT: case APPLY_SLOW_PCT: case APPLY_CRITICAL_PCT: case APPLY_PENETRATE_PCT: case APPLY_ATTBONUS_HUMAN: case APPLY_ATTBONUS_ANIMAL: case APPLY_ATTBONUS_ORC: case APPLY_ATTBONUS_MILGYO: case APPLY_ATTBONUS_UNDEAD: case APPLY_ATTBONUS_DEVIL: case APPLY_ATTBONUS_WARRIOR: // 59 case APPLY_ATTBONUS_ASSASSIN: // 60 case APPLY_ATTBONUS_SURA: // 61 case APPLY_ATTBONUS_SHAMAN: // 62 case APPLY_ATTBONUS_MONSTER: // 63 case APPLY_STEAL_HP: case APPLY_STEAL_SP: case APPLY_MANA_BURN_PCT: case APPLY_DAMAGE_SP_RECOVER: case APPLY_BLOCK: case APPLY_DODGE: case APPLY_RESIST_SWORD: case APPLY_RESIST_TWOHAND: case APPLY_RESIST_DAGGER: case APPLY_RESIST_BELL: case APPLY_RESIST_FAN: case APPLY_RESIST_BOW: case APPLY_RESIST_FIRE: case APPLY_RESIST_ELEC: case APPLY_RESIST_MAGIC: case APPLY_RESIST_WIND: case APPLY_RESIST_ICE: case APPLY_RESIST_EARTH: case APPLY_RESIST_DARK: case APPLY_REFLECT_MELEE: case APPLY_REFLECT_CURSE: case APPLY_ANTI_CRITICAL_PCT: case APPLY_ANTI_PENETRATE_PCT: case APPLY_POISON_REDUCE: case APPLY_KILL_SP_RECOVER: case APPLY_EXP_DOUBLE_BONUS: case APPLY_GOLD_DOUBLE_BONUS: case APPLY_ITEM_DROP_BONUS: case APPLY_POTION_BONUS: case APPLY_KILL_HP_RECOVER: case APPLY_IMMUNE_STUN: case APPLY_IMMUNE_SLOW: case APPLY_IMMUNE_FALL: case APPLY_BOW_DISTANCE: case APPLY_ATT_GRADE_BONUS: case APPLY_DEF_GRADE_BONUS: case APPLY_MAGIC_ATT_GRADE: case APPLY_MAGIC_DEF_GRADE: case APPLY_CURSE_PCT: case APPLY_MAX_STAMINA: case APPLY_MALL_ATTBONUS: case APPLY_MALL_DEFBONUS: case APPLY_MALL_EXPBONUS: case APPLY_MALL_ITEMBONUS: case APPLY_MALL_GOLDBONUS: case APPLY_SKILL_DAMAGE_BONUS: case APPLY_NORMAL_HIT_DAMAGE_BONUS: // DEPEND_BONUS_ATTRIBUTES case APPLY_SKILL_DEFEND_BONUS: case APPLY_NORMAL_HIT_DEFEND_BONUS: // END_OF_DEPEND_BONUS_ATTRIBUTES case APPLY_PC_BANG_EXP_BONUS : case APPLY_PC_BANG_DROP_BONUS : case APPLY_RESIST_WARRIOR : case APPLY_RESIST_ASSASSIN : case APPLY_RESIST_SURA : case APPLY_RESIST_SHAMAN : case APPLY_ENERGY: // 82 ±â·Â case APPLY_DEF_GRADE: // 83 ¹æ¾î·Â. DEF_GRADE_BONUS´Â Ŭ¶ó¿¡¼ µÎ¹è·Î º¸¿©Áö´Â ÀǵµµÈ ¹ö±×(...)°¡ ÀÖ´Ù. case APPLY_COSTUME_ATTR_BONUS: // 84 ÄÚ½ºÆ¬ ¾ÆÀÌÅÛ¿¡ ºÙÀº ¼Ó¼ºÄ¡ º¸³Ê½º case APPLY_MAGIC_ATTBONUS_PER: // 85 ¸¶¹ý °ø°Ý·Â +x% case APPLY_MELEE_MAGIC_ATTBONUS_PER: // 86 ¸¶¹ý + ¹Ð¸® °ø°Ý·Â +x% PointChange(aApplyInfo[bApplyType].bPointType, iVal); break; default: sys_err("Unknown apply type %d name %s", bApplyType, GetName()); break; } } char.cpp line 4082 PointChange(aApplyInfo[bApplyType].bPointType, iVal); 4. #3 0x08160084 in CItem::ModifyPoints (this=0x54911100, bAdd=true) at item.cpp:656 value = 2000 i = 0 accessoryGrade = 0 __FUNCTION__ = "ModifyPoints" function: for (int i = 0; i < ITEM_APPLY_MAX_NUM; ++i) { if (m_pProto->aApplies[i].bType == APPLY_NONE) continue; long value = m_pProto->aApplies[i].lValue; if (m_pProto->aApplies[i].bType == APPLY_SKILL) { m_pOwner->ApplyPoint(m_pProto->aApplies[i].bType, bAdd ? value : value ^ 0x00800000); } else { if (0 != accessoryGrade) value += MAX(accessoryGrade, value * aiAccessorySocketEffectivePct[accessoryGrade] / 100); m_pOwner->ApplyPoint(m_pProto->aApplies[i].bType, bAdd ? value : -value); } } item.cpp line 656 m_pOwner->ApplyPoint(m_pProto->aApplies.bType, bAdd ? value : -value); 5. #4 0x080d08bb in CPetActor::GiveBuff (this=0x5444abb0) at PetSystem.cpp:380 item = 0x6 function: void CPetActor::GiveBuff() { // ÆÄȲ Æê ¹öÇÁ´Â ´øÀü¿¡¼¸¸ ¹ß»ýÇÔ. //if (34004 == m_dwVnum || 34009 == m_dwVnum) //{ // if (NULL == m_pkOwner->GetDungeon()) // { // return; // } //} LPITEM item = ITEM_MANAGER::instance().FindByVID(m_dwSummonItemVID); if (NULL != item) item->ModifyPoints(true); return ; } petsystem.cpp line 380 item->ModifyPoints(true); 6. 0x080d13e7 in CPetSystem::RefreshBuff (this=0x5463abb0) ---Type <return> to continue, or q <return> to quit--- at PetSystem.cpp:633 function: void CPetSystem::RefreshBuff() { for (TPetActorMap::const_iterator iter = m_petActorMap.begin(); iter != m_petActorMap.end(); ++iter) { CPetActor* petActor = iter->second; if (0 != petActor) { if (petActor->IsSummoned()) { petActor->GiveBuff(); } } } } petsystem.comm line 633 petActor->GiveBuff(); Please help Link to comment Share on other sites More sharing options...
emoemolizu 1 Posted December 26, 2016 Author Share Posted December 26, 2016 help Link to comment Share on other sites More sharing options...
Alucardo 7 Posted December 26, 2016 Share Posted December 26, 2016 I think you added an attr wrong in length.h and constants.cpp Link to comment Share on other sites More sharing options...
Honorable Member NoFr1ends 751 Posted December 26, 2016 Honorable Member Share Posted December 26, 2016 The problem is that the PC where you try to add the attribute is null (which you can see at this=0x00 at the first stack) The call of the first PC function comes from: m_pOwner->ApplyPoint(m_pProto->aApplies.bType, bAdd ? value : -value); Which means m_pOwner is null Link to comment Share on other sites More sharing options...
emoemolizu 1 Posted December 27, 2016 Author Share Posted December 27, 2016 my constants.cpp https://mega.nz/#!TUJEkL7A!GSHmsGo-mtDdJp60Sm-lTcMa0rMWgZs31G3RLzKouII my constants.h https://mega.nz/#!HJxjiKCK!-63VUQkRs3OlxeVW4xnMWymELjCtUUI_wgt_vNFyNuQ end my length.h https://mega.nz/#!KJwigACA!YHlApRyBEE5xn9KiHZqjV5TOLkM-4geN-frsbgYF_e4 ..... Link to comment Share on other sites More sharing options...
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now