本文整理汇总了C++中LPCHARACTER::GetDesc方法的典型用法代码示例。如果您正苦于以下问题:C++ LPCHARACTER::GetDesc方法的具体用法?C++ LPCHARACTER::GetDesc怎么用?C++ LPCHARACTER::GetDesc使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类LPCHARACTER
的用法示例。
在下文中一共展示了LPCHARACTER::GetDesc方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: DetailLoginLog
void LogManager::DetailLoginLog(bool isLogin, LPCHARACTER ch)
{
if (NULL == ch->GetDesc())
return;
if (true == isLogin)
{
Query("INSERT INTO loginlog2(type, is_gm, login_time, channel, account_id, pid, ip, client_version) "
"VALUES('INVALID', %s, NOW(), %d, %u, %u, inet_aton('%s'), '%s')",
ch->IsGM() == true ? "'Y'" : "'N'",
g_bChannel,
ch->GetDesc()->GetAccountTable().id,
ch->GetPlayerID(),
ch->GetDesc()->GetHostName(),
ch->GetDesc()->GetClientVersion());
}
else
{
Query("SET @i = (SELECT MAX(id) FROM loginlog2 WHERE account_id=%u AND pid=%u)",
ch->GetDesc()->GetAccountTable().id,
ch->GetPlayerID());
Query("UPDATE loginlog2 SET type='VALID', logout_time=NOW(), playtime=TIMEDIFF(logout_time,login_time) WHERE [email protected]");
}
}
示例2: SendPartyInfoAllToOne
void CParty::SendPartyInfoAllToOne(LPCHARACTER ch)
{
TMemberMap::iterator it;
TPacketGCPartyUpdate p;
for (it = m_memberMap.begin(); it != m_memberMap.end(); ++it)
{
if (!it->second.pCharacter)
{
DWORD pid = it->first;
memset(&p, 0, sizeof(p));
p.header = HEADER_GC_PARTY_UPDATE;
p.pid = pid;
p.percent_hp = 255;
p.role = it->second.bRole;
ch->GetDesc()->Packet(&p, sizeof(p));
continue;
}
it->second.pCharacter->BuildUpdatePartyPacket(p);
sys_log(2, "PARTY send info %s[%d] to %s[%d]", it->second.pCharacter->GetName(), (DWORD)it->second.pCharacter->GetVID(), ch->GetName(), (DWORD)ch->GetVID());
ch->GetDesc()->Packet(&p, sizeof(p));
}
}
示例3: HackLog
void LogManager::HackLog(const char * c_pszHackName, LPCHARACTER ch)
{
if (ch->GetDesc())
{
HackLog(c_pszHackName,
ch->GetDesc()->GetAccountTable().login,
ch->GetName(),
ch->GetDesc()->GetHostName());
}
}
示例4: operator
void operator()(LPCHARACTER ch)
{
sys_log(0, "CINEMASEND_TRY %s", ch->GetName());
if (ch->GetDesc())
{
sys_log(0, "CINEMASEND %s", ch->GetName());
ch->GetDesc()->BufferedPacket(&pack, sizeof(struct packet_script));
ch->GetDesc()->Packet(data.c_str(),data.size());
}
}
示例5: 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());
}
示例6: CharLog
void LogManager::CharLog(LPCHARACTER ch, DWORD dw, const char * c_pszText, const char * c_pszHint)
{
if (ch)
CharLog(ch->GetPlayerID(), ch->GetX(), ch->GetY(), dw, c_pszText, c_pszHint, ch->GetDesc() ? ch->GetDesc()->GetHostName() : "");
else
CharLog(0, 0, 0, dw, c_pszText, c_pszHint, "");
}
示例7: AddToCharacter
bool CItem::AddToCharacter(LPCHARACTER ch, TItemPos Cell)
{
assert(GetSectree() == NULL);
assert(m_pOwner == NULL);
WORD pos = Cell.cell;
BYTE window_type = Cell.window_type;
if (INVENTORY == window_type)
{
if (m_wCell >= INVENTORY_MAX_NUM && BELT_INVENTORY_SLOT_START > m_wCell)
{
sys_err("CItem::AddToCharacter: cell overflow: %s to %s cell %d", m_pProto->szName, ch->GetName(), m_wCell);
return false;
}
}
else if (DRAGON_SOUL_INVENTORY == window_type)
{
if (m_wCell >= DRAGON_SOUL_INVENTORY_MAX_NUM)
{
sys_err("CItem::AddToCharacter: cell overflow: %s to %s cell %d", m_pProto->szName, ch->GetName(), m_wCell);
return false;
}
}
if (ch->GetDesc())
m_dwLastOwnerPID = ch->GetPlayerID();
event_cancel(&m_pkDestroyEvent);
ch->SetItem(TItemPos(window_type, pos), this);
m_pOwner = ch;
Save();
return true;
}
示例8: Insert
void CPVPManager::Insert(LPCHARACTER pkChr, LPCHARACTER pkVictim)
{
if (pkChr->IsDead() || pkVictim->IsDead())
return;
CPVP kPVP(pkChr->GetPlayerID(), pkVictim->GetPlayerID());
CPVP * pkPVP;
if ((pkPVP = Find(kPVP.m_dwCRC)))
{
// 복수할 수 있으면 바로 싸움!
if (pkPVP->Agree(pkChr->GetPlayerID()))
{
pkVictim->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s님과의 대결 시작!"), pkChr->GetName());
pkChr->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s님과의 대결 시작!"), pkVictim->GetName());
}
return;
}
pkPVP = M2_NEW CPVP(kPVP);
pkPVP->SetVID(pkChr->GetPlayerID(), pkChr->GetVID());
pkPVP->SetVID(pkVictim->GetPlayerID(), pkVictim->GetVID());
m_map_pkPVP.insert(map<DWORD, CPVP *>::value_type(pkPVP->m_dwCRC, pkPVP));
m_map_pkPVPSetByID[pkChr->GetPlayerID()].insert(pkPVP);
m_map_pkPVPSetByID[pkVictim->GetPlayerID()].insert(pkPVP);
pkPVP->Packet();
char msg[CHAT_MAX_LEN + 1];
snprintf(msg, sizeof(msg), LC_TEXT("%s님이 대결신청을 했습니다. 승낙하려면 대결동의를 하세요."), pkChr->GetName());
pkVictim->ChatPacket(CHAT_TYPE_INFO, msg);
pkChr->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s에게 대결신청을 했습니다."), pkVictim->GetName());
// NOTIFY_PVP_MESSAGE
LPDESC pkVictimDesc = pkVictim->GetDesc();
if (pkVictimDesc)
{
TPacketGCWhisper pack;
int len = MIN(CHAT_MAX_LEN, strlen(msg) + 1);
pack.bHeader = HEADER_GC_WHISPER;
pack.wSize = sizeof(TPacketGCWhisper) + len;
pack.bType = WHISPER_TYPE_SYSTEM;
strlcpy(pack.szNameFrom, pkChr->GetName(), sizeof(pack.szNameFrom));
TEMP_BUFFER buf;
buf.write(&pack, sizeof(TPacketGCWhisper));
buf.write(msg, len);
pkVictimDesc->Packet(buf.read_peek(), buf.size());
}
// END_OF_NOTIFY_PVP_MESSAGE
}
示例9: SendPartyJoinAllToOne
void CParty::SendPartyJoinAllToOne(LPCHARACTER ch)
{
if (!ch->GetDesc())
return;
TPacketGCPartyAdd p;
p.header = HEADER_GC_PARTY_ADD;
p.name[CHARACTER_NAME_MAX_LEN] = '\0';
for (TMemberMap::iterator it = m_memberMap.begin();it!= m_memberMap.end(); ++it)
{
p.pid = it->first;
strlcpy(p.name, it->second.strName.c_str(), sizeof(p.name));
ch->GetDesc()->Packet(&p, sizeof(p));
}
}
示例10: HackShieldLog
void LogManager::HackShieldLog(unsigned long ErrorCode, LPCHARACTER ch)
{
struct in_addr st_addr;
#ifndef __WIN32__
if (0 == inet_aton(ch->GetDesc()->GetHostName(), &st_addr))
#else
unsigned long in_address;
in_address = inet_addr(ch->GetDesc()->GetHostName());
st_addr.s_addr = in_address;
if (INADDR_NONE == in_address)
#endif
{
Query( "INSERT INTO hackshield_log(time, account_id, login, pid, name, reason, ip) "
"VALUES(NOW(), %u, '%s', %u, '%s', %u, 0)",
ch->GetDesc()->GetAccountTable().id, ch->GetDesc()->GetAccountTable().login,
ch->GetPlayerID(), ch->GetName(),
ErrorCode);
}
else
{
Query( "INSERT INTO hackshield_log(time, account_id, login, pid, name, reason, ip) "
"VALUES(NOW(), %u, '%s', %u, '%s', %u, inet_aton('%s'))",
ch->GetDesc()->GetAccountTable().id, ch->GetDesc()->GetAccountTable().login,
ch->GetPlayerID(), ch->GetName(),
ErrorCode,
ch->GetDesc()->GetHostName());
}
}
示例11: CheckIpAddress
bool COXEventManager::CheckIpAddress(LPCHARACTER ch)
{
for (itertype(m_map_attender) it = m_map_attender.begin(); it != m_map_attender.end(); ++it)
{
LPCHARACTER tch = CHARACTER_MANAGER::Instance().FindByPID(it->second);
if (!tch || !tch->GetDesc())
continue;
if (!strcmp(ch->GetDesc()->GetHostName(), tch->GetDesc()->GetHostName()) && ch->GetMapIndex() == tch->GetMapIndex())
{
LogManager::Instance().HackLog("MULTI_IP_OX", ch);
ch->GoHome();
return false;
}
}
return true;
}
示例12: Version
void CInputProcessor::Version(LPCHARACTER ch, const char* c_pData)
{
if (!ch)
return;
TPacketCGClientVersion * p = (TPacketCGClientVersion *) c_pData;
sys_log(0, "VERSION: %s %s %s", ch->GetName(), p->timestamp, p->filename);
ch->GetDesc()->SetClientVersion(p->timestamp);
}
示例13: IncMember
void CWarMap::IncMember(LPCHARACTER ch)
{
if (!ch->IsPC())
return;
sys_log(0, "WarMap::IncMember");
DWORD gid = 0;
if (ch->GetGuild())
gid = ch->GetGuild()->GetID();
bool isWarMember = ch->GetQuestFlag("war.is_war_member") > 0 ? true : false;
if (isWarMember && gid != m_TeamData[0].dwID && gid != m_TeamData[1].dwID)
{
ch->SetQuestFlag("war.is_war_member", 0);
isWarMember = false;
}
if (isWarMember)
{
if (gid == m_TeamData[0].dwID)
{
m_TeamData[0].AppendMember(ch);
}
else if (gid == m_TeamData[1].dwID)
{
m_TeamData[1].AppendMember(ch);
}
event_cancel(&m_pkTimeoutEvent);
sys_log(0, "WarMap +m %u(cur:%d, acc:%d) vs %u(cur:%d, acc:%d)",
m_TeamData[0].dwID, m_TeamData[0].GetCurJointerCount(), m_TeamData[0].GetAccumulatedJoinerCount(),
m_TeamData[1].dwID, m_TeamData[1].GetCurJointerCount(), m_TeamData[1].GetAccumulatedJoinerCount());
}
else
{
++m_iObserverCount;
sys_log(0, "WarMap +o %d", m_iObserverCount);
ch->SetObserverMode(true);
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("관전 모드로 길드전에 참가하셨습니다."));
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("자신을 선택하시면 밖으로 나갈 수 있는 <관람 종료> 버튼이 나옵니다."));
}
UpdateUserCount();
m_set_pkChr.insert(ch);
LPDESC d = ch->GetDesc();
SendWarPacket(d);
SendScorePacket(0, d);
SendScorePacket(1, d);
}
示例14: Destroy
void SECTREE::Destroy()
{
if (!m_set_entity.empty())
{
sys_err("Sectree: entity set not empty!!");
ENTITY_SET::iterator it = m_set_entity.begin();
for ( ; it != m_set_entity.end(); ++it)
{
LPENTITY ent = *it;
if (ent->IsType(ENTITY_CHARACTER))
{
LPCHARACTER ch = (LPCHARACTER) ent;
sys_err("Sectree: destroying character: %s is_pc %d", ch->GetName(), ch->IsPC() ? 1 : 0);
if (ch->GetDesc())
DESC_MANAGER::instance().DestroyDesc(ch->GetDesc());
else
M2_DESTROY_CHARACTER(ch);
}
else if (ent->IsType(ENTITY_ITEM))
{
LPITEM item = (LPITEM) ent;
sys_err("Sectree: destroying Item: %s", item->GetName());
M2_DESTROY_ITEM(item);
}
else
sys_err("Sectree: unknown type: %d", ent->GetType());
}
}
m_set_entity.clear();
if (!isClone && m_pkAttribute)
{
M2_DELETE(m_pkAttribute);
m_pkAttribute = NULL;
}
}
示例15: SendPartyLinkAllToOne
void CParty::SendPartyLinkAllToOne(LPCHARACTER ch)
{
if (!ch->GetDesc())
return;
TMemberMap::iterator it;
TPacketGCPartyLink p;
p.header = HEADER_GC_PARTY_LINK;
for (it = m_memberMap.begin();it!= m_memberMap.end(); ++it)
{
if (it->second.pCharacter)
{
p.vid = it->second.pCharacter->GetVID();
p.pid = it->second.pCharacter->GetPlayerID();
ch->GetDesc()->Packet(&p, sizeof(p));
}
}
}