本文整理汇总了C++中LPITEM类的典型用法代码示例。如果您正苦于以下问题:C++ LPITEM类的具体用法?C++ LPITEM怎么用?C++ LPITEM使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了LPITEM类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: GET_ATTACK_SPEED
DWORD GET_ATTACK_SPEED(LPCHARACTER ch)
{
if (NULL == ch)
return 1000;
LPITEM item = ch->GetWear(WEAR_WEAPON);
DWORD default_bonus = SPEEDHACK_LIMIT_BONUS; // 유두리 공속(기본 80)
DWORD riding_bonus = 0;
if (ch->IsRiding())
{
// 뭔가를 탔으면 추가공속 50
riding_bonus = 50;
}
DWORD ani_speed = ani_attack_speed(ch);
DWORD real_speed = (ani_speed * 100) / (default_bonus + ch->GetPoint(POINT_ATT_SPEED) + riding_bonus);
// 단검의 경우 공속 2배
if (item && item->GetSubType() == WEAPON_DAGGER)
real_speed /= 2;
return real_speed;
}
示例2: Get
LPITEM CSafebox::Remove(DWORD dwPos)
{
LPITEM pkItem = Get(dwPos);
if (!pkItem)
return NULL;
if (!m_pkGrid)
sys_err("Safebox::Remove : nil grid");
else
m_pkGrid->Get(dwPos, 1, pkItem->GetSize());
pkItem->RemoveFromCharacter();
m_pkItems[dwPos] = NULL;
TPacketGCItemDel pack;
pack.header = m_bWindowMode == SAFEBOX ? HEADER_GC_SAFEBOX_DEL : HEADER_GC_MALL_DEL;
pack.pos = dwPos;
m_pkChrOwner->GetDesc()->Packet(&pack, sizeof(pack));
sys_log(1, "SAFEBOX: REMOVE %s %s count %d", m_pkChrOwner->GetName(), pkItem->GetName(), pkItem->GetCount());
return pkItem;
}
示例3: DeactivateDragonSoul
bool DSManager::DeactivateDragonSoul(LPITEM pItem, bool bSkipRefreshOwnerActiveState)
{
if (NULL == pItem)
return false;
LPCHARACTER pOwner = pItem->GetOwner();
if (NULL == pOwner)
return false;
if (!IsActiveDragonSoul(pItem))
return false;
char buf[128];
pItem->StopTimerBasedOnWearExpireEvent();
pItem->SetSocket(ITEM_SOCKET_DRAGON_SOUL_ACTIVE_IDX, 0);
pItem->ModifyPoints(false);
sprintf (buf, "LEFT TIME(%d)", LeftTime(pItem));
LogManager::instance().ItemLog(pOwner, pItem, "DS_DEACTIVATE", buf);
if (false == bSkipRefreshOwnerActiveState)
RefreshDragonSoulState(pOwner);
return true;
}
示例4: TItemPos
bool COver9RefineManager::Over9Refine(LPCHARACTER pChar, LPITEM item)
{
DWORD dwVnum = item->GetRefinedVnum();
if (dwVnum == 0)
return false;
LPITEM over9 = ITEM_MANAGER::instance().CreateItem(dwVnum, 1);
if (over9 == NULL)
return false;
item->CopySocketTo(over9);
item->CopyAttributeTo(over9);
int iEmptyCell = pChar->GetEmptyInventory(over9->GetSize());
if (iEmptyCell == -1)
return false;
item->RemoveFromCharacter();
over9->AddToCharacter(pChar, TItemPos(INVENTORY, iEmptyCell));
char szBuf[256];
snprintf(szBuf, sizeof(szBuf), "SUCCESS %u %s %u", over9->GetID(), over9->GetName(), over9->GetOriginalVnum());
LogManager::instance().ItemLog(pChar, item, "REFINE OVER9", szBuf);
return true;
}
示例5: RemoveBuffFromItem
void CBuffOnAttributes::RemoveBuffFromItem(LPITEM pItem)
{
if (0 == m_bBuffValue)
return ;
if (NULL != pItem)
{
if (pItem->GetCell() < INVENTORY_MAX_NUM)
return;
std::vector <BYTE>::iterator it = find (m_p_vec_buff_wear_targets->begin(), m_p_vec_buff_wear_targets->end(), pItem->GetCell() - INVENTORY_MAX_NUM);
if (m_p_vec_buff_wear_targets->end() == it)
return;
int m = pItem->GetAttributeCount();
for (int j = 0; j < m; j++)
{
TPlayerItemAttribute attr = pItem->GetAttribute(j);
TMapAttr::iterator it = m_map_additional_attrs.find(attr.bType);
// m_map_additional_attrs에서 해당 attribute type에 대한 값을 제거하고,
// 변경된 값의 (m_bBuffValue)%만큼의 버프 효과 감소
if (it != m_map_additional_attrs.end())
{
int& sum_of_attr_value = it->second;
int old_value = sum_of_attr_value * m_bBuffValue / 100;
int new_value = (sum_of_attr_value - attr.sValue) * m_bBuffValue / 100;
m_pBuffOwner->ApplyPoint(attr.bType, new_value - old_value);
sum_of_attr_value -= attr.sValue;
}
else
{
sys_err ("Buff ERROR(type %d). This item(%d) attr_type(%d) was not in buff pool", m_bPointType, pItem->GetVnum(), attr.bType);
return;
}
}
}
}
示例6: ani_attack_speed
DWORD ani_attack_speed(LPCHARACTER ch)
{
DWORD speed = 1000;
if (NULL == ch)
return speed;
LPITEM item = ch->GetWear(WEAR_WEAPON);
if (NULL == item)
return speed;
if (ITEM_WEAPON != item->GetType())
return speed;
int race = ch->GetRaceNum();
int weapon = item->GetSubType();
/*
dev_log(LOG_DEB0, "%s : (race,weapon) = (%s,%s) POINT_ATT_SPEED = %d",
ch->GetName(),
FN_race_name(race),
FN_weapon_type(weapon),
ch->GetPoint(POINT_ATT_SPEED));
*/
/* ЕхЗЪµрµе јТµеАЗ °жїм »пї¬Вь°ш°Э°ъ ЅВё¶ЅГ */
/* їА·щ°Ў ё№ѕЖ ЗСјХ°Л јУµµ·О »э°ўЗПАЪ */
if (weapon == WEAPON_TWO_HANDED)
weapon = WEAPON_SWORD;
return s_ANI.attack_speed(race, weapon);
}
示例7: GET_ATTACK_SPEED
DWORD GET_ATTACK_SPEED(LPCHARACTER ch)
{
if (NULL == ch)
return 1000;
LPITEM item = ch->GetWear(WEAR_WEAPON);
DWORD default_bonus = SPEEDHACK_LIMIT_BONUS; // АЇµОё® °шјУ(±вє» 80)
DWORD riding_bonus = 0;
if (ch->IsRiding())
{
// №є°Ўё¦ ЕААёёй ГЯ°Ў°шјУ 50
riding_bonus = 50;
}
DWORD ani_speed = ani_attack_speed(ch);
DWORD real_speed = (ani_speed * 100) / (default_bonus + ch->GetPoint(POINT_ATT_SPEED) + riding_bonus);
// ґЬ°ЛАЗ °жїм °шјУ 2№и
if (item && item->GetSubType() == WEAPON_DAGGER)
real_speed /= 2;
return real_speed;
}
示例8: battle_hit
int battle_hit(LPCHARACTER pkAttacker, LPCHARACTER pkVictim, int & iRetDam)
{
//PROF_UNIT puHit("Hit");
if (test_server)
sys_log(0, "battle_hit : [%s] attack to [%s] : dam :%d type :%d", pkAttacker->GetName(), pkVictim->GetName(), iRetDam);
int iDam = CalcMeleeDamage(pkAttacker, pkVictim);
if (iDam <= 0)
return (BATTLE_DAMAGE);
NormalAttackAffect(pkAttacker, pkVictim);
// 데미지 계산
//iDam = iDam * (100 - pkVictim->GetPoint(POINT_RESIST)) / 100;
LPITEM pkWeapon = pkAttacker->GetWear(WEAR_WEAPON);
if (pkWeapon)
switch (pkWeapon->GetSubType())
{
case WEAPON_SWORD:
iDam = iDam * (100 - pkVictim->GetPoint(POINT_RESIST_SWORD)) / 100;
break;
case WEAPON_TWO_HANDED:
iDam = iDam * (100 - pkVictim->GetPoint(POINT_RESIST_TWOHAND)) / 100;
break;
case WEAPON_DAGGER:
iDam = iDam * (100 - pkVictim->GetPoint(POINT_RESIST_DAGGER)) / 100;
break;
case WEAPON_BELL:
iDam = iDam * (100 - pkVictim->GetPoint(POINT_RESIST_BELL)) / 100;
break;
case WEAPON_FAN:
iDam = iDam * (100 - pkVictim->GetPoint(POINT_RESIST_FAN)) / 100;
break;
case WEAPON_BOW:
iDam = iDam * (100 - pkVictim->GetPoint(POINT_RESIST_BOW)) / 100;
break;
}
//최종적인 데미지 보정. (2011년 2월 현재 대왕거미에게만 적용.)
float attMul = pkAttacker->GetAttMul();
float tempIDam = iDam;
iDam = attMul * tempIDam + 0.5f;
iRetDam = iDam;
//PROF_UNIT puDam("Dam");
if (pkVictim->Damage(pkAttacker, iDam, DAMAGE_TYPE_NORMAL))
return (BATTLE_DEAD);
return (BATTLE_DAMAGE);
}
示例9: IsDragonSoulRefineMaterial
bool IsDragonSoulRefineMaterial(LPITEM pItem)
{
if (pItem->GetType() != ITEM_MATERIAL)
return false;
return (pItem->GetSubType() == MATERIAL_DS_REFINE_NORMAL ||
pItem->GetSubType() == MATERIAL_DS_REFINE_BLESSED ||
pItem->GetSubType() == MATERIAL_DS_REFINE_HOLLY);
}
示例10: ani_combo_speed
DWORD ani_combo_speed(LPCHARACTER ch, BYTE combo)
{
LPITEM item = ch->GetWear(WEAR_WEAPON);
if (NULL == item || combo > 8)
return 1000;
return s_ANI.attack_speed(ch->GetRaceNum(), item->GetSubType(), combo, ch->IsRiding());
}
示例11: BookUpgrade
bool CPolymorphUtils::BookUpgrade(LPCHARACTER pChar, LPITEM pItem)
{
if (pChar == NULL || pItem == NULL)
return false;
pItem->SetSocket(1, pItem->GetSocket(2) * 50);
pItem->SetSocket(2, pItem->GetSocket(2)+1);
return true;
}
示例12: DragonSoulItemInitialize
bool DSManager::DragonSoulItemInitialize(LPITEM pItem)
{
if (NULL == pItem || !pItem->IsDragonSoul())
return false;
PutAttributes(pItem);
int time = DSManager::instance().GetDuration(pItem);
if (time > 0)
pItem->SetSocket(ITEM_SOCKET_REMAIN_SEC, time);
return true;
}
示例13: IsSameSpecialGroup
bool CItem::IsSameSpecialGroup(const LPITEM item) const
{
// ј·О VNUMАМ °°ґЩёй °°Ає ±Ч·мАО °НАё·О °ЈБЦ
if (this->GetVnum() == item->GetVnum())
return true;
if (GetSpecialGroup() && (item->GetSpecialGroup() == GetSpecialGroup()))
return true;
return false;
}
示例14: UpdateBookPracticeGrade
bool CPolymorphUtils::UpdateBookPracticeGrade(LPCHARACTER pChar, LPITEM pItem)
{
if (pChar == NULL || pItem == NULL)
return false;
if (pItem->GetSocket(1) > 0)
pItem->SetSocket(1, pItem->GetSocket(1) - 1);
else
pChar->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("둔갑서 수련을 마첬습니다. 신선에게 찾아가세요."));
return true;
}
示例15: ItemLog
void LogManager::ItemLog(LPCHARACTER ch, LPITEM item, const char * c_pszText, const char * c_pszHint)
{
if (NULL == ch || NULL == item)
{
sys_err("character or item nil (ch %p item %p text %s)", get_pointer(ch), get_pointer(item), c_pszText);
return;
}
ItemLog(ch->GetPlayerID(), ch->GetX(), ch->GetY(), item->GetID(),
NULL == c_pszText ? "" : c_pszText,
c_pszHint, ch->GetDesc() ? ch->GetDesc()->GetHostName() : "",
item->GetOriginalVnum());
}