Ejemplo n.º 1
0
bool ZSurvival::OnNPCDead(MCommand* pCommand)
{
	MUID uidPlayer, uidNPC;

	pCommand->GetParameter(&uidPlayer,	0, MPT_UID);
	pCommand->GetParameter(&uidNPC,		1, MPT_UID);

	ZActor* pActor = ZGetObjectManager()->GetNPCObject(uidNPC);
	if (pActor)
	{
		pActor->OnDie();
		ZGetObjectManager()->Delete(pActor);

		m_GameInfo.IncreaseNPCKilled();

		ZCharacter* pCharacter = ZGetCharacterManager()->Find(uidPlayer);
		if (pCharacter)
		{
			ZModule_QuestStatus* pMod = (ZModule_QuestStatus*)pCharacter->GetModule(ZMID_QUESTSTATUS);
			if (pMod)
			{
				pMod->AddKills();
			}
		}
	}

	return true;
}
// NPC 킬수를 기준으로 소팅
bool CompareQuestScreenCharacter(ZCharacter* a, ZCharacter* b) 
{
	ZModule_QuestStatus* pAMod = (ZModule_QuestStatus*)a->GetModule(ZMID_QUESTSTATUS);
	ZModule_QuestStatus* pBMod = (ZModule_QuestStatus*)b->GetModule(ZMID_QUESTSTATUS);

	if ((pAMod) && (pBMod))
	{
		if (pAMod->GetKills() < pBMod->GetKills()) return false;
	}

	return true;
}
void ZCombatQuestScreen::DrawPlayer(CCDrawContext* pDC, int index, ZCharacter* pCharacter)
{
	CCFont *pFont = CCFontManager::Get("FONTa10b");
	pDC->SetFont( pFont );
	sColor color = sColor(0xFFFFFFFF);
	if (pCharacter->IsDie()) color = sColor(0xFF999999);
	else if (pCharacter == ZGetGame()->m_pMyCharacter) color = sColor(0xFFEEEE00);
	pDC->SetColor(color);

	char szMsg[128];
	float x, y;
	x = 10.0f / 800.0f;
	y = (200.0f/600.0f) + ((20.0f / 600.0f) * index);

	int screenx = x * CCGetWorkspaceWidth();
	int screeny = y * CCGetWorkspaceHeight();


	int nKills = 0;
	ZModule_QuestStatus* pMod = (ZModule_QuestStatus*)pCharacter->GetModule(ZMID_QUESTSTATUS);
	if (pMod)
	{
		nKills = pMod->GetKills();
	}

	sprintf(szMsg, "%d. %s / %d K.O.", index+1, pCharacter->GetProperty()->GetName(), nKills);
	pDC->Text(screenx, screeny, szMsg);

/*
	// hp, ap bar
	const int BAR_HEIGHT = 3;
	const int BAR_WIDTH = 80;
	int bar_hp_width = (int)(BAR_WIDTH * ((float)pCharacter->GetHP() / pCharacter->GetProperty()->fMaxHP));
	int bar_ap_width = (int)(BAR_WIDTH * ((float)pCharacter->GetAP() / pCharacter->GetProperty()->fMaxAP));

	color = sColor(0xFFD6290B);
	int bar_y = screeny + pFont->GetHeight()+2;
	pDC->SetColor(color);
	pDC->FillRectangle(screenx, bar_y, bar_hp_width, BAR_HEIGHT);
	pDC->Rectangle(screenx, bar_y, BAR_WIDTH, BAR_HEIGHT);

	color = sColor(0xFF3AAF3A);
	pDC->SetColor(color);
	bar_y += (BAR_HEIGHT + 2);
	pDC->FillRectangle(screenx, bar_y, bar_ap_width, BAR_HEIGHT);
	pDC->Rectangle(screenx, bar_y, BAR_WIDTH, BAR_HEIGHT);
*/
}
Ejemplo n.º 4
0
void ZSurvival::MoveToNextSector()
{
	ZCharacter *pMyChar = ZGetGame()->m_pMyCharacter;
	pMyChar->InitStatus();

	// 새로운 월드로 이동!!
	ZGetWorldManager()->SetCurrent(m_GameInfo.GetCurrSectorIndex());
	// 이번에 이동할 캐릭터의 위치
	int nPosIndex = ZGetCharacterManager()->GetCharacterIndex(pMyChar->GetUID(), false);
	if (nPosIndex < 0) nPosIndex=0;
	ZMapSpawnData* pSpawnData = ZGetWorld()->GetDesc()->GetSpawnManager()->GetSoloData(nPosIndex);
	// 새 좌표로 이동
	if (pSpawnData!=NULL && pMyChar!=NULL)
	{
		pMyChar->SetPosition(pSpawnData->m_Pos);
		pMyChar->SetDirection(pSpawnData->m_Dir);
		ZGetEffectManager()->AddReBirthEffect(pSpawnData->m_Pos);
	}

	// 유저 캐릭터를 보여주지 않는다
	for(ZCharacterManager::iterator i = ZGetCharacterManager()->begin();i!=ZGetCharacterManager()->end();i++)
	{
		i->second->SetVisible(false);
	}
	// 현재 npc, 앞으로 생성될 npc, 이펙트, 탄환 전부 숨긴다 (다음 섹터 시작할때까지)
	ZGetObjectManager()->GetNPCObjectMap()->SetVisibleAll(false);
	ZGetObjectManager()->GetNPCObjectMap()->ForceInvisibleNewNpc(true);
	ZGetEffectManager()->EnableDraw(false);
	ZGetWorldItemManager()->EnableDraw(false);
	ZGetGame()->m_WeaponManager.EnableRender(false);

	// ko수 동기화
	ZModule_QuestStatus* pMod = (ZModule_QuestStatus*)pMyChar->GetModule(ZMID_QUESTSTATUS);
	if (pMod)
	{
		int nKills = pMod->GetKills();
		ZGetScreenEffectManager()->SetKO(nKills);
	}
}