- Katılım
- 16 Tem 2019
- Konular
- 715
- Mesajlar
- 3,551
- Çözüm
- 47
- Online süresi
- 6mo 20d
- Reaksiyon Skoru
- 2,109
- Altın Konu
- 34
- Başarım Puanı
- 309
- MmoLira
- 19,556
- DevLira
- 122
ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ HEMEN TIKLA!
ComputePoints değerinden farkı nedir ?
- ComputePoints değerinin sonunda Update() fonksiyonu çalıştırılır. Update fonksiyonu yeniden hesaplanılan değerleri eskisiyle karşılaştırıp yenilerini güncelleme paketidir. Bu yapılanda ise update fonksiyonu yoktur.
service.h
char.h
char.cpp
Peki bu kod nerelerde kullanılmalı ?
char_skill.cpp
Her compute gördüğünüz yere kullanmayın ve bilmeyen arkadaşların kullanmasını tavsiye etmiyorum.
SP | Eksikleri buradan giderin ;
cmd_general.cpp açılır ve aratılır
ACMD(do_stat_minus)
şu şekilde değiştirilir
ACMD(do_stat) aratılır ve içerisinde
ch->ComputePoints(); bulunur ve şu şekilde değiştirilir
ch->ComputePoints(); bir kez daha aratılır ve şu şekilde değiştirilir ;
Eğer eksik olduğunu düşündüğünüz birşey varsa konuya yazın halledilir.
- ComputePoints değerinin sonunda Update() fonksiyonu çalıştırılır. Update fonksiyonu yeniden hesaplanılan değerleri eskisiyle karşılaştırıp yenilerini güncelleme paketidir. Bu yapılanda ise update fonksiyonu yoktur.
service.h
Kod:
#define ENABLE_COMPUTE_POINTS_WITHOUT_UPDATE_PACKET
Kod:
//Ara
ComputePoints
// Altına ekle
#ifdef ENABLE_COMPUTE_POINTS_WITHOUT_UPDATE_PACKET
void ComputePointsWithoutUpdatePacket();
#endif
char.cpp
Kod:
#ifdef ENABLE_COMPUTE_POINTS_WITHOUT_UPDATE_PACKET
void CHARACTER::ComputePointsWithoutUpdatePacket()
{
long lStat = GetPoint(POINT_STAT);
long lStatResetCount = GetPoint(POINT_STAT_RESET_COUNT);
long lSkillActive = GetPoint(POINT_SKILL);
long lSkillSub = GetPoint(POINT_SUB_SKILL);
long lSkillHorse = GetPoint(POINT_HORSE_SKILL);
long lLevelStep = GetPoint(POINT_LEVEL_STEP);
long lAttackerBonus = GetPoint(POINT_PARTY_ATTACKER_BONUS);
long lTankerBonus = GetPoint(POINT_PARTY_TANKER_BONUS);
long lBufferBonus = GetPoint(POINT_PARTY_BUFFER_BONUS);
long lSkillMasterBonus = GetPoint(POINT_PARTY_SKILL_MASTER_BONUS);
long lHasteBonus = GetPoint(POINT_PARTY_HASTE_BONUS);
long lDefenderBonus = GetPoint(POINT_PARTY_DEFENDER_BONUS);
long lHPRecovery = GetPoint(POINT_HP_RECOVERY);
long lSPRecovery = GetPoint(POINT_SP_RECOVERY);
memset(m_pointsInstant.points, 0, sizeof(m_pointsInstant.points));
BuffOnAttr_ClearAll();
m_SkillDamageBonus.clear();
SetPoint(POINT_STAT, lStat);
SetPoint(POINT_SKILL, lSkillActive);
SetPoint(POINT_SUB_SKILL, lSkillSub);
SetPoint(POINT_HORSE_SKILL, lSkillHorse);
SetPoint(POINT_LEVEL_STEP, lLevelStep);
SetPoint(POINT_STAT_RESET_COUNT, lStatResetCount);
SetPoint(POINT_ST, GetRealPoint(POINT_ST));
SetPoint(POINT_HT, GetRealPoint(POINT_HT));
SetPoint(POINT_DX, GetRealPoint(POINT_DX));
SetPoint(POINT_IQ, GetRealPoint(POINT_IQ));
SetPart(PART_MAIN, GetOriginalPart(PART_MAIN));
SetPart(PART_WEAPON, GetOriginalPart(PART_WEAPON));
SetPart(PART_HEAD, GetOriginalPart(PART_HEAD));
SetPart(PART_HAIR, GetOriginalPart(PART_HAIR));
#ifdef ENABLE_ACCE_SYSTEM
SetPart(PART_SASH, GetOriginalPart(PART_SASH));
#endif
#ifdef ENABLE_AURA_SYSTEM
SetPart(PART_AURA, GetOriginalPart(PART_AURA));
#endif
SetPoint(POINT_PARTY_ATTACKER_BONUS, lAttackerBonus);
SetPoint(POINT_PARTY_TANKER_BONUS, lTankerBonus);
SetPoint(POINT_PARTY_BUFFER_BONUS, lBufferBonus);
SetPoint(POINT_PARTY_SKILL_MASTER_BONUS, lSkillMasterBonus);
SetPoint(POINT_PARTY_HASTE_BONUS, lHasteBonus);
SetPoint(POINT_PARTY_DEFENDER_BONUS, lDefenderBonus);
SetPoint(POINT_HP_RECOVERY, lHPRecovery);
SetPoint(POINT_SP_RECOVERY, lSPRecovery);
int iMaxHP, iMaxSP;
int iMaxStamina;
if (IsPC())
{
// 최대 생명력/정신력
iMaxHP = JobInitialPoints[GetJob()].max_hp + m_points.iRandomHP + GetPoint(POINT_HT) * JobInitialPoints[GetJob()].hp_per_ht;
iMaxSP = JobInitialPoints[GetJob()].max_sp + m_points.iRandomSP + GetPoint(POINT_IQ) * JobInitialPoints[GetJob()].sp_per_iq;
iMaxStamina = JobInitialPoints[GetJob()].max_stamina + GetPoint(POINT_HT) * JobInitialPoints[GetJob()].stamina_per_con;
{
CSkillProto* pkSk = CSkillManager::instance().Get(SKILL_ADD_HP);
if (nullptr != pkSk)
{
pkSk->SetPointVar("k", 1.0f * GetSkillPower(SKILL_ADD_HP) / 100.0f);
iMaxHP += static_cast<int>(pkSk->kPointPoly.Eval());
}
}
SetPoint(POINT_MOV_SPEED, 111);
SetPoint(POINT_ATT_SPEED, 112);
PointChange(POINT_ATT_SPEED, GetPoint(POINT_PARTY_HASTE_BONUS));
SetPoint(POINT_CASTING_SPEED, 100);
}
else
{
iMaxHP = m_pkMobData->m_table.dwMaxHP;
iMaxSP = 0;
iMaxStamina = 0;
SetPoint(POINT_ATT_SPEED, m_pkMobData->m_table.sAttackSpeed);
SetPoint(POINT_MOV_SPEED, m_pkMobData->m_table.sMovingSpeed);
SetPoint(POINT_CASTING_SPEED, m_pkMobData->m_table.sAttackSpeed);
}
if (IsPC())
{
// 말 타고 있을 때는 기본 스탯이 말의 기준 스탯보다 낮으면 높게 만든다.
// 따라서 말의 기준 스탯이 무사 기준이므로, 수라/무당은 전체 스탯 합이
// 대채적으로 더 올라가게 될 것이다.
#ifdef ENABLE_MOUNT_COSTUME_SYSTEM
if (GetMountVnum() && !GetWear(WEAR_COSTUME_MOUNT))
#else
if (GetMountVnum())
#endif
{
if (GetHorseST() > GetPoint(POINT_ST))
PointChange(POINT_ST, GetHorseST() - GetPoint(POINT_ST));
if (GetHorseDX() > GetPoint(POINT_DX))
PointChange(POINT_DX, GetHorseDX() - GetPoint(POINT_DX));
if (GetHorseHT() > GetPoint(POINT_HT))
PointChange(POINT_HT, GetHorseHT() - GetPoint(POINT_HT));
if (GetHorseIQ() > GetPoint(POINT_IQ))
PointChange(POINT_IQ, GetHorseIQ() - GetPoint(POINT_IQ));
}
}
ComputeBattlePoints();
if (iMaxHP != GetMaxHP())
{
SetRealPoint(POINT_MAX_HP, iMaxHP); // 기본HP를 RealPoint에 저장해 놓는다.
}
PointChange(POINT_MAX_HP, 0);
if (iMaxSP != GetMaxSP())
{
SetRealPoint(POINT_MAX_SP, iMaxSP); // 기본SP를 RealPoint에 저장해 놓는다.
}
PointChange(POINT_MAX_SP, 0);
SetMaxStamina(iMaxStamina);
// @fixme118 part1
int iCurHP = this->GetHP();
int iCurSP = this->GetSP();
m_pointsInstant.dwImmuneFlag = 0;
for (int i = 0; i < WEAR_MAX_NUM; i++)
{
LPITEM pItem = GetWear(i);
if (pItem)
{
pItem->ModifyPoints(true);
SET_BIT(m_pointsInstant.dwImmuneFlag, GetWear(i)->GetImmuneFlag());
}
}
// 용혼석 시스템
// ComputePoints에서는 케릭터의 모든 속성값을 초기화하고,
// 아이템, 버프 등에 관련된 모든 속성값을 재계산하기 때문에,
// 용혼석 시스템도 ActiveDeck에 있는 모든 용혼석의 속성값을 다시 적용시켜야 한다.
if (DragonSoul_IsDeckActivated())
{
for (int i = WEAR_MAX_NUM + DS_SLOT_MAX * DragonSoul_GetActiveDeck();
i < WEAR_MAX_NUM + DS_SLOT_MAX * (DragonSoul_GetActiveDeck() + 1); i++)
{
LPITEM pItem = GetWear(i);
if (pItem)
{
if (DSManager::instance().IsTimeLeftDragonSoul(pItem))
pItem->ModifyPoints(true);
}
}
}
if (GetHP() > GetMaxHP())
PointChange(POINT_HP, GetMaxHP() - GetHP());
if (GetSP() > GetMaxSP())
PointChange(POINT_SP, GetMaxSP() - GetSP());
ComputeSkillPoints();
RefreshAffect();
// @fixme118 part2 (before petsystem stuff)
if (IsPC())
{
if (this->GetHP() != iCurHP)
this->PointChange(POINT_HP, iCurHP - this->GetHP());
if (this->GetSP() != iCurSP)
this->PointChange(POINT_SP, iCurSP - this->GetSP());
}
CPetSystem * pPetSystem = GetPetSystem();
if (nullptr != pPetSystem)
{
pPetSystem->RefreshBuff();
}
for (TMapBuffOnAttrs::iterator it = m_map_buff_on_attrs.begin(); it != m_map_buff_on_attrs.end(); it++)
{
it->second->GiveAllAttributes();
}
}
#endif
Peki bu kod nerelerde kullanılmalı ?
char_skill.cpp
Kod:
// Aratın
void CHARACTER::SkillLevelUp
// Fonkisyonun sonundaki ComputePoints(); bulun
// Değiştirin
#ifdef ENABLE_COMPUTE_POINTS_WITHOUT_UPDATE_PACKET
ComputePointsWithoutUpdatePacket();
#else
ComputePoints();
#endif
Her compute gördüğünüz yere kullanmayın ve bilmeyen arkadaşların kullanmasını tavsiye etmiyorum.
SP | Eksikleri buradan giderin ;
cmd_general.cpp açılır ve aratılır
ACMD(do_stat_minus)
şu şekilde değiştirilir
C++:
ACMD(do_stat_minus)
{
char arg1[256];
one_argument(argument, arg1, sizeof(arg1));
if (!*arg1)
return;
if (ch->IsPolymorphed())
{
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("둔갑 중에는 능력을 올릴 수 없습니다."));
return;
}
if (ch->GetPoint(POINT_STAT_RESET_COUNT) <= 0)
return;
if (!strcmp(arg1, "st"))
{
if (ch->GetRealPoint(POINT_ST) <= JobInitialPoints[ch->GetJob()].st)
return;
ch->SetRealPoint(POINT_ST, ch->GetRealPoint(POINT_ST) - 1);
ch->SetPoint(POINT_ST, ch->GetPoint(POINT_ST) - 1);
#ifdef ENABLE_COMPUTE_POINTS_WITHOUT_UPDATE_PACKET
ch->ComputePointsWithoutUpdatePacket();
#else
ch->ComputePoints();
#endif
ch->PointChange(POINT_ST, 0);
}
else if (!strcmp(arg1, "dx"))
{
if (ch->GetRealPoint(POINT_DX) <= JobInitialPoints[ch->GetJob()].dx)
return;
ch->SetRealPoint(POINT_DX, ch->GetRealPoint(POINT_DX) - 1);
ch->SetPoint(POINT_DX, ch->GetPoint(POINT_DX) - 1);
#ifdef ENABLE_COMPUTE_POINTS_WITHOUT_UPDATE_PACKET
ch->ComputePointsWithoutUpdatePacket();
#else
ch->ComputePoints();
#endif
ch->PointChange(POINT_DX, 0);
}
else if (!strcmp(arg1, "ht"))
{
if (ch->GetRealPoint(POINT_HT) <= JobInitialPoints[ch->GetJob()].ht)
return;
ch->SetRealPoint(POINT_HT, ch->GetRealPoint(POINT_HT) - 1);
ch->SetPoint(POINT_HT, ch->GetPoint(POINT_HT) - 1);
#ifdef ENABLE_COMPUTE_POINTS_WITHOUT_UPDATE_PACKET
ch->ComputePointsWithoutUpdatePacket();
#else
ch->ComputePoints();
#endif
ch->PointChange(POINT_HT, 0);
ch->PointChange(POINT_MAX_HP, 0);
}
else if (!strcmp(arg1, "iq"))
{
if (ch->GetRealPoint(POINT_IQ) <= JobInitialPoints[ch->GetJob()].iq)
return;
ch->SetRealPoint(POINT_IQ, ch->GetRealPoint(POINT_IQ) - 1);
ch->SetPoint(POINT_IQ, ch->GetPoint(POINT_IQ) - 1);
#ifdef ENABLE_COMPUTE_POINTS_WITHOUT_UPDATE_PACKET
ch->ComputePointsWithoutUpdatePacket();
#else
ch->ComputePoints();
#endif
ch->PointChange(POINT_IQ, 0);
ch->PointChange(POINT_MAX_SP, 0);
}
else
return;
ch->PointChange(POINT_STAT, +1);
ch->PointChange(POINT_STAT_RESET_COUNT, -1);
#ifdef ENABLE_COMPUTE_POINTS_WITHOUT_UPDATE_PACKET
ch->ComputePointsWithoutUpdatePacket();
#else
ch->ComputePoints();
#endif
}
ACMD(do_stat) aratılır ve içerisinde
ch->ComputePoints(); bulunur ve şu şekilde değiştirilir
C++:
#ifdef ENABLE_COMPUTE_POINTS_WITHOUT_UPDATE_PACKET
ch->ComputePointsWithoutUpdatePacket();
#else
ch->ComputePoints();
#endif
ch->ComputePoints(); bir kez daha aratılır ve şu şekilde değiştirilir ;
C++:
#ifdef ENABLE_COMPUTE_POINTS_WITHOUT_UPDATE_PACKET
ch->ComputePointsWithoutUpdatePacket();
#else
ch->ComputePoints();
#endif
Eğer eksik olduğunu düşündüğünüz birşey varsa konuya yazın halledilir.
Moderatör tarafında düzenlendi:
En Çok Reaksiyon Alan Mesajlar
ComputePoints in UpdatePacket olmayan halini eklemişsin. Yeni bir fonksiyon yazmak yerine varolan fonksiyona değişken ekleyebilirdin.
ComputePoints(bool UpdatePacket = True)
If(UpdatePacket)
UpdatePacket();
Kullanırken de
ComputePoints(false);
- Katılım
- 29 Eyl 2009
- Konular
- 1,298
- Mesajlar
- 18,700
- Çözüm
- 203
- Online süresi
- 7mo 18h
- Reaksiyon Skoru
- 9,275
- Altın Konu
- 377
- Başarım Puanı
- 426
- Yaş
- 32
- MmoLira
- 51,333
- DevLira
- 74
ComputePoints in UpdatePacket olmayan halini eklemişsin. Yeni bir fonksiyon yazmak yerine varolan fonksiyona değişken ekleyebilirdin.
ComputePoints(bool UpdatePacket = True)
If(UpdatePacket)
UpdatePacket();
Kullanırken de
ComputePoints(false);
ComputePoints(bool UpdatePacket = True)
If(UpdatePacket)
UpdatePacket();
Kullanırken de
ComputePoints(false);
- Katılım
- 3 Ara 2017
- Konular
- 2,165
- Mesajlar
- 11,970
- Çözüm
- 87
- Online süresi
- 1y 2mo
- Reaksiyon Skoru
- 18,274
- Altın Konu
- 91
- TM Yaşı
- 8 Yıl 6 Ay 7 Gün
- Başarım Puanı
- 506
- Yaş
- 28
- MmoLira
- 119,538
- DevLira
- 176
Paylaşım için teşekkürler 

- Katılım
- 22 May 2012
- Konular
- 81
- Mesajlar
- 927
- Çözüm
- 37
- Online süresi
- 1mo 20d
- Reaksiyon Skoru
- 116
- Altın Konu
- 0
- TM Yaşı
- 14 Yıl 18 Gün
- Başarım Puanı
- 141
- MmoLira
- 5,134
- DevLira
- 6
ComputePoints değerinden farkı nedir ?
- ComputePoints değerinin sonunda Update() fonksiyonu çalıştırılır. Update fonksiyonu yeniden hesaplanılan değerleri eskisiyle karşılaştırıp yenilerini güncelleme paketidir. Bu yapılanda ise update fonksiyonu yoktur.
service.h
char.hKod:#define ENABLE_COMPUTE_POINTS_WITHOUT_UPDATE_PACKET
Kod://Ara ComputePoints // Altına ekle #ifdef ENABLE_COMPUTE_POINTS_WITHOUT_UPDATE_PACKET void ComputePointsWithoutUpdatePacket(); #endif
char.cpp
Kod:#ifdef ENABLE_COMPUTE_POINTS_WITHOUT_UPDATE_PACKET void CHARACTER::ComputePointsWithoutUpdatePacket() { long lStat = GetPoint(POINT_STAT); long lStatResetCount = GetPoint(POINT_STAT_RESET_COUNT); long lSkillActive = GetPoint(POINT_SKILL); long lSkillSub = GetPoint(POINT_SUB_SKILL); long lSkillHorse = GetPoint(POINT_HORSE_SKILL); long lLevelStep = GetPoint(POINT_LEVEL_STEP); long lAttackerBonus = GetPoint(POINT_PARTY_ATTACKER_BONUS); long lTankerBonus = GetPoint(POINT_PARTY_TANKER_BONUS); long lBufferBonus = GetPoint(POINT_PARTY_BUFFER_BONUS); long lSkillMasterBonus = GetPoint(POINT_PARTY_SKILL_MASTER_BONUS); long lHasteBonus = GetPoint(POINT_PARTY_HASTE_BONUS); long lDefenderBonus = GetPoint(POINT_PARTY_DEFENDER_BONUS); long lHPRecovery = GetPoint(POINT_HP_RECOVERY); long lSPRecovery = GetPoint(POINT_SP_RECOVERY); memset(m_pointsInstant.points, 0, sizeof(m_pointsInstant.points)); BuffOnAttr_ClearAll(); m_SkillDamageBonus.clear(); SetPoint(POINT_STAT, lStat); SetPoint(POINT_SKILL, lSkillActive); SetPoint(POINT_SUB_SKILL, lSkillSub); SetPoint(POINT_HORSE_SKILL, lSkillHorse); SetPoint(POINT_LEVEL_STEP, lLevelStep); SetPoint(POINT_STAT_RESET_COUNT, lStatResetCount); SetPoint(POINT_ST, GetRealPoint(POINT_ST)); SetPoint(POINT_HT, GetRealPoint(POINT_HT)); SetPoint(POINT_DX, GetRealPoint(POINT_DX)); SetPoint(POINT_IQ, GetRealPoint(POINT_IQ)); SetPart(PART_MAIN, GetOriginalPart(PART_MAIN)); SetPart(PART_WEAPON, GetOriginalPart(PART_WEAPON)); SetPart(PART_HEAD, GetOriginalPart(PART_HEAD)); SetPart(PART_HAIR, GetOriginalPart(PART_HAIR)); #ifdef ENABLE_ACCE_SYSTEM SetPart(PART_SASH, GetOriginalPart(PART_SASH)); #endif #ifdef ENABLE_AURA_SYSTEM SetPart(PART_AURA, GetOriginalPart(PART_AURA)); #endif SetPoint(POINT_PARTY_ATTACKER_BONUS, lAttackerBonus); SetPoint(POINT_PARTY_TANKER_BONUS, lTankerBonus); SetPoint(POINT_PARTY_BUFFER_BONUS, lBufferBonus); SetPoint(POINT_PARTY_SKILL_MASTER_BONUS, lSkillMasterBonus); SetPoint(POINT_PARTY_HASTE_BONUS, lHasteBonus); SetPoint(POINT_PARTY_DEFENDER_BONUS, lDefenderBonus); SetPoint(POINT_HP_RECOVERY, lHPRecovery); SetPoint(POINT_SP_RECOVERY, lSPRecovery); int iMaxHP, iMaxSP; int iMaxStamina; if (IsPC()) { // 최대 생명력/정신력 iMaxHP = JobInitialPoints[GetJob()].max_hp + m_points.iRandomHP + GetPoint(POINT_HT) * JobInitialPoints[GetJob()].hp_per_ht; iMaxSP = JobInitialPoints[GetJob()].max_sp + m_points.iRandomSP + GetPoint(POINT_IQ) * JobInitialPoints[GetJob()].sp_per_iq; iMaxStamina = JobInitialPoints[GetJob()].max_stamina + GetPoint(POINT_HT) * JobInitialPoints[GetJob()].stamina_per_con; { CSkillProto* pkSk = CSkillManager::instance().Get(SKILL_ADD_HP); if (nullptr != pkSk) { pkSk->SetPointVar("k", 1.0f * GetSkillPower(SKILL_ADD_HP) / 100.0f); iMaxHP += static_cast<int>(pkSk->kPointPoly.Eval()); } } SetPoint(POINT_MOV_SPEED, 111); SetPoint(POINT_ATT_SPEED, 112); PointChange(POINT_ATT_SPEED, GetPoint(POINT_PARTY_HASTE_BONUS)); SetPoint(POINT_CASTING_SPEED, 100); } else { iMaxHP = m_pkMobData->m_table.dwMaxHP; iMaxSP = 0; iMaxStamina = 0; SetPoint(POINT_ATT_SPEED, m_pkMobData->m_table.sAttackSpeed); SetPoint(POINT_MOV_SPEED, m_pkMobData->m_table.sMovingSpeed); SetPoint(POINT_CASTING_SPEED, m_pkMobData->m_table.sAttackSpeed); } if (IsPC()) { // 말 타고 있을 때는 기본 스탯이 말의 기준 스탯보다 낮으면 높게 만든다. // 따라서 말의 기준 스탯이 무사 기준이므로, 수라/무당은 전체 스탯 합이 // 대채적으로 더 올라가게 될 것이다. #ifdef ENABLE_MOUNT_COSTUME_SYSTEM if (GetMountVnum() && !GetWear(WEAR_COSTUME_MOUNT)) #else if (GetMountVnum()) #endif { if (GetHorseST() > GetPoint(POINT_ST)) PointChange(POINT_ST, GetHorseST() - GetPoint(POINT_ST)); if (GetHorseDX() > GetPoint(POINT_DX)) PointChange(POINT_DX, GetHorseDX() - GetPoint(POINT_DX)); if (GetHorseHT() > GetPoint(POINT_HT)) PointChange(POINT_HT, GetHorseHT() - GetPoint(POINT_HT)); if (GetHorseIQ() > GetPoint(POINT_IQ)) PointChange(POINT_IQ, GetHorseIQ() - GetPoint(POINT_IQ)); } } ComputeBattlePoints(); if (iMaxHP != GetMaxHP()) { SetRealPoint(POINT_MAX_HP, iMaxHP); // 기본HP를 RealPoint에 저장해 놓는다. } PointChange(POINT_MAX_HP, 0); if (iMaxSP != GetMaxSP()) { SetRealPoint(POINT_MAX_SP, iMaxSP); // 기본SP를 RealPoint에 저장해 놓는다. } PointChange(POINT_MAX_SP, 0); SetMaxStamina(iMaxStamina); // @fixme118 part1 int iCurHP = this->GetHP(); int iCurSP = this->GetSP(); m_pointsInstant.dwImmuneFlag = 0; for (int i = 0; i < WEAR_MAX_NUM; i++) { LPITEM pItem = GetWear(i); if (pItem) { pItem->ModifyPoints(true); SET_BIT(m_pointsInstant.dwImmuneFlag, GetWear(i)->GetImmuneFlag()); } } // 용혼석 시스템 // ComputePoints에서는 케릭터의 모든 속성값을 초기화하고, // 아이템, 버프 등에 관련된 모든 속성값을 재계산하기 때문에, // 용혼석 시스템도 ActiveDeck에 있는 모든 용혼석의 속성값을 다시 적용시켜야 한다. if (DragonSoul_IsDeckActivated()) { for (int i = WEAR_MAX_NUM + DS_SLOT_MAX * DragonSoul_GetActiveDeck(); i < WEAR_MAX_NUM + DS_SLOT_MAX * (DragonSoul_GetActiveDeck() + 1); i++) { LPITEM pItem = GetWear(i); if (pItem) { if (DSManager::instance().IsTimeLeftDragonSoul(pItem)) pItem->ModifyPoints(true); } } } if (GetHP() > GetMaxHP()) PointChange(POINT_HP, GetMaxHP() - GetHP()); if (GetSP() > GetMaxSP()) PointChange(POINT_SP, GetMaxSP() - GetSP()); ComputeSkillPoints(); RefreshAffect(); // @fixme118 part2 (before petsystem stuff) if (IsPC()) { if (this->GetHP() != iCurHP) this->PointChange(POINT_HP, iCurHP - this->GetHP()); if (this->GetSP() != iCurSP) this->PointChange(POINT_SP, iCurSP - this->GetSP()); } CPetSystem * pPetSystem = GetPetSystem(); if (nullptr != pPetSystem) { pPetSystem->RefreshBuff(); } for (TMapBuffOnAttrs::iterator it = m_map_buff_on_attrs.begin(); it != m_map_buff_on_attrs.end(); it++) { it->second->GiveAllAttributes(); } } #endif
Peki bu kod nerelerde kullanılmalı ?
char_skill.cpp
Kod:// Aratın void CHARACTER::SkillLevelUp // Fonkisyonun sonundaki ComputePoints(); bulun // Değiştirin #ifdef ENABLE_COMPUTE_POINTS_WITHOUT_UPDATE_PACKET ComputePointsWithoutUpdatePacket(); #else ComputePoints(); #endif
Her compute gördüğünüz yere kullanmayın ve bilmeyen arkadaşların kullanmasını tavsiye etmiyorum.
@MaviAy44 e peki anladığımız kadarıyla hamle atınca veya hp bonuslu bir item kostüm giyince hpnin aniden düşüp çıkması ile ilgili sorunu çözüyor bunlar değil mi?ComputePoints in UpdatePacket olmayan halini eklemişsin. Yeni bir fonksiyon yazmak yerine varolan fonksiyona değişken ekleyebilirdin.
ComputePoints(bool UpdatePacket = True)
If(UpdatePacket)
UpdatePacket();
Kullanırken de
ComputePoints(false);
@Tungа sizin bu verdiğiniz kodlara bakarak bizim gibi bilmeyenler hiçbirşey yapamıyor yani sizin yorumunuza bakarak anladığımız kadarı ile daha basit kodlarla bu sorun çözülebilecek gibi peki bize hazır kodları verirmisiniz bu sorunu çözecek
- Katılım
- 2 Şub 2015
- Konular
- 230
- Mesajlar
- 2,001
- Çözüm
- 2
- Online süresi
- 3mo 24d
- Reaksiyon Skoru
- 1,027
- Altın Konu
- 0
- Başarım Puanı
- 276
- MmoLira
- 5,721
- DevLira
- 31
O fonksiyon argument kabul etmiyordu sanirim dener misinComputePoints in UpdatePacket olmayan halini eklemişsin. Yeni bir fonksiyon yazmak yerine varolan fonksiyona değişken ekleyebilirdin.
ComputePoints(bool UpdatePacket = True)
If(UpdatePacket)
UpdatePacket();
Kullanırken de
ComputePoints(false);

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)
Benzer konular
- Cevaplar
- 5
- Görüntüleme
- 948
- Cevaplar
- 37
- Görüntüleme
- 2K
- Cevaplar
- 7
- Görüntüleme
- 2K
- Cevaplar
- 14
- Görüntüleme
- 2K











