コード例 #1
0
void ZGameClient::OnClanAnswerJoinAgreement(const MUID& uidClanAdmin, const char* szJoiner, const bool bAnswer)
{
	if (!IsWaitingClanJoiningAgree()) return;

	if (ZGetGameClient()->GetPlayerUID() != uidClanAdmin) return;


	if (bAnswer)
	{
		if (IsUpperClanGrade(ZGetMyInfo()->GetClanGrade(), MCG_ADMIN))
		{
			char szClanName[256];
			sprintf(szClanName, ZGetMyInfo()->GetClanName());
			ZPostRequestAgreedJoinClan(uidClanAdmin, szClanName, (char*)szJoiner);
		}
	}
	else
	{
		// 동의창 지워줘야 한다.
		ShowClanJoinerAgreeWaitFrame(false);

		m_uidRequestPlayer = MUID(0,0);

		ZApplication::GetGameInterface()->ShowMessage( MSG_CLAN_JOINER_AGREEMENT_REJECT );
	}
}
コード例 #2
0
void ZGameClient::OnClanUpdateCharClanInfo(void* pBlob)
{
	int nCount = MGetBlobArrayCount(pBlob);
	if (nCount != 1) return;

	MTD_CharClanInfo* pClanInfoNode = (MTD_CharClanInfo*)MGetBlobArrayElement(pBlob, 0);

	ZGetMyInfo()->SetClanInfo(pClanInfoNode->szClanName, pClanInfoNode->nGrade);
	ZGetMyInfo()->Serialize();

	// 클랜정보가 변경되었다.
	if (ZGetGameClient()->IsConnected())
		ZPostRequestClanMemberList(ZGetGameClient()->GetPlayerUID());

	ZPlayerListBox *pList = GetProperClanListOutput();
	if(pList) {
		if( !ZGetMyInfo()->IsClanJoined() )
		{
			ZPlayerListBox* pWidget = (ZPlayerListBox*)ZApplication::GetGameInterface()->GetIDLResource()->FindWidget("LobbyChannelPlayerList");
			if(pWidget) {
				pWidget->RemoveAll();
			}
		}

		pList->RefreshUI();
	}
}
コード例 #3
0
void ZShopEquipInterface::DrawCharInfoText()
{
	// 현재 내 상태로 초기화
	DrawCharInfoText(NULL, 0,
		ZGetMyInfo()->GetItemList()->GetEquipedTotalWeight(),
		ZGetMyInfo()->GetItemList()->GetMaxWeight(),
		ZGetMyInfo()->GetHP(),
		ZGetMyInfo()->GetAP(),
		0, 0);
}
コード例 #4
0
void ZGameClient::OnClanAskSponsorAgreement(const int nRequestID, const char* szClanName, MUID& uidMasterObject, const char* szMasterName)
{
	// 받을수 없는 상황이면 무시
	if(!ZGetGameInterface()->IsReadyToPropose()) return;

	m_nRequestID = nRequestID;
	m_uidRequestPlayer = uidMasterObject;

	ZIDLResource* pResource = ZApplication::GetGameInterface()->GetIDLResource();
	MTextArea* pTextEdit = (MTextArea*)pResource->FindWidget("ClanSponsorAgreementConfirm_Textarea");
	if (pTextEdit)
	{
		char szTemp[256];
		ZTransMsg(szTemp, MSG_CLAN_SPONSOR_AGREEMENT_LABEL, 3, szMasterName, ZGetMyInfo()->GetCharName(), szClanName);
		pTextEdit->SetText(szTemp);
	}

	MWidget* pWidget = pResource->FindWidget("ClanSponsorAgreementConfirm");
	if(pWidget!=NULL)
	{
		static ZCOUNTDOWN countDown = {30,"ClanSponsorAgreementConfirm_Remain",
			"ClanSponsorAgreementConfirm",OnClanAskSponsorAgreement_OnExpire};
		countDown.nSeconds=30;	// static 이므로 재설정
		ZApplication::GetTimer()->SetTimerEvent(0, &OnTimer_CountDown, &countDown, true);

		pWidget->Show(true, true);
	}
}
コード例 #5
0
void ZGameClient::AnswerJoinerAgreement(bool bAnswer)
{
	char szCharName[256];
	sprintf(szCharName, ZGetMyInfo()->GetCharName());

	ZPostAnswerJoinAgreement(m_uidRequestPlayer, szCharName, bAnswer);
}
コード例 #6
0
void ZGameClient::RequestCreateClan(char* szClanName, char** ppMemberCharNames)
{
	// 클랜에 이미 가입되어 있으면 안된다.
	if (ZGetMyInfo()->IsClanJoined())
	{
		ZChatOutput(
			ZMsg(MSG_CLAN_JOINED_ALREADY), 
			ZChat::CMT_SYSTEM );
		return;
	}

	// 로비에서만 신청할 수 있다.
	if (ZApplication::GetGameInterface()->GetState() != GUNZ_LOBBY)
	{
		ZChatOutput( ZMsg(MSG_MUST_EXECUTE_LOBBY) );
		return;
	}


	m_nRequestID++;

	memset(&ClanSponsorsTicket, 0, sizeof(Clan_Sponsors_Ticket));
	ClanSponsorsTicket.nRequestID = m_nRequestID;
	strcpy(ClanSponsorsTicket.szClanName, szClanName);
	
	for (int i = 0; i < CLAN_SPONSORS_COUNT; i++)
	{
		strcpy(ClanSponsorsTicket.szSponsorCharName[i], ppMemberCharNames[i]);
	}

	ZPostRequestCreateClan(GetPlayerUID(), m_nRequestID, szClanName, ppMemberCharNames, CLAN_SPONSORS_COUNT);
}
コード例 #7
0
void ZCharacterView::SetParts(MMatchCharItemParts nParts, unsigned int nItemID)
{
	MMatchItemDesc* pItemDesc = MGetMatchItemDescMgr()->GetItemDesc(nItemID);
	if (pItemDesc == NULL)
	{
		if (nItemID != 0)
			return;
	}
	else
	{
		if (IsSuitableItemSlot(pItemDesc->m_nSlot, nParts) == false) return;

		if (pItemDesc->m_nResSex != -1)
		{
			if (pItemDesc->m_nResSex != int(ZGetMyInfo()->GetSex())) return;
		}
	}

	m_ItemSlots[nParts].m_nItemID = nItemID;

	if (nParts == MMCIP_PRIMARY)
	{
		ZChangeCharWeaponMesh(m_pTVisualMesh.GetVMesh(), m_ItemSlots[MMCIP_PRIMARY].m_nItemID);
	}
	else
	{
		u32 itemids[MMCIP_END];
		for (int i = 0; i < MMCIP_END; i++) itemids[i] = m_ItemSlots[i].m_nItemID;
		ZChangeCharParts(m_pTVisualMesh.GetVMesh(), m_Info.nSex, m_Info.nHair, m_Info.nFace, itemids);
	}

	if( Enable_Cloth )
		m_pTVisualMesh.m_pVisualMesh->ChangeChestCloth(0.9f,1);
}
コード例 #8
0
ファイル: ZSurvival.cpp プロジェクト: MagistrAVSH/node3d
bool ZSurvival::OnSectorBonus(MCommand* pCommand)
{
	MUID uidPlayer;
	unsigned long int nExpValue = 0;
	unsigned long int nAddedBP = 0;

	pCommand->GetParameter(&uidPlayer,	0, MPT_UID);
	pCommand->GetParameter(&nExpValue,	1, MPT_UINT);
	pCommand->GetParameter(&nAddedBP,	2, MPT_UINT);


	int nAddedXP = GetExpFromTransData(nExpValue);
	int nExpPercent = GetExpPercentFromTransData(nExpValue);


	if(ZGetCharacterManager()->Find(uidPlayer) == ZGetGame()->m_pMyCharacter)
	{
		m_nRewardXP += nAddedXP;
		m_nRewardBP += nAddedBP;

		//ZGetScreenEffectManager()->AddExpEffect(nAddedXP);		// 획득 경험치 표시 없애기
		ZGetMyInfo()->SetLevelPercent(nExpPercent);
		ZGetScreenEffectManager()->SetGaugeExpFromMyInfo();
	}

	return true;
}
コード例 #9
0
ファイル: ZRoomListBox.cpp プロジェクト: Asunaya/RefinedGunz
void ZRoomListBox::RequestSelStageJoin()
{
	MUID uidChar = ZGetGameClient()->GetPlayerUID();

	if (GetSelRoomUID() != MUID(0,0))
	{
		if ( (ZGetMyInfo()->IsAdminGrade() == false) && (m_pMapInfo[m_Selection].bPrivate) )
		{
			char szStageName[SMI_ROOMNAME_LENGTH] = "";
			MUID uidStage = MUID(0,0);

			const sMapInfo* pSelRoomInfo = GetSelMapInfo();

			if (pSelRoomInfo != NULL)
			{
				strcpy_safe(szStageName, pSelRoomInfo->room_name);
				uidStage = pSelRoomInfo->uidStage;
			}

			SetPrivateStageUID(uidStage);

			// 비밀방
			ZApplication::GetGameInterface()->ShowPrivateStageJoinFrame(szStageName);
		}
		else
		{
			ZPostRequestStageJoin(uidChar, GetSelRoomUID());	// 공개방
			ZApplication::GetGameInterface()->EnableLobbyInterface(false);
		}
	}
}
コード例 #10
0
void ZGameClient::OnClanMemberConnected(const char* szMember)
{
	if (!strcmp(ZGetMyInfo()->GetCharName(), szMember)) return;

	char szMsg[256];
//	ZTransMsg(szMsg, MSG_CLAN_MEMBER_CONNECTED, 1, szMember);
	ZTransMsg(szMsg, MSG_CLAN_MEMBER_CONNECTED, 1, szMember);
	ZChatOutput(MCOLOR(ZCOLOR_CHAT_CLANMSG), szMsg);
}
コード例 #11
0
void ZCombatQuestScreen::OnDraw(CCDrawContext* pDC)
{
	/////////////////////////////////////////////
	list<ZCharacter*>		SortedCharacterList;

	for(ZCharacterManager::iterator itor = ZGetGame()->m_CharacterManager.begin();
		itor != ZGetGame()->m_CharacterManager.end(); ++itor)
	{
		ZCharacter* pCharacter = (*itor).second;
		if (!pCharacter->IsVisible()) continue;

		SortedCharacterList.push_back(pCharacter);
	}

	SortedCharacterList.sort(CompareQuestScreenCharacter);
/*
	int cnt = 0;
	for (list<ZCharacter*>::iterator itor = SortedCharacterList.begin(); itor != SortedCharacterList.end(); ++itor)
	{
		DrawPlayer(pDC, cnt, (*itor));
		cnt++;
	}
*/


	if ( ZGetQuest()->IsRoundClear())
	{
		// 운영자 hide는 제외
		bool bEventHide = false;
		if (ZGetMyInfo()->IsAdminGrade()) 
		{
			CCMatchObjCache* pCache = ZGetGameClient()->FindObjCache(ZGetMyUID());
			if (pCache && pCache->CheckFlag(CCTD_PlayerFlags_AdminHide)) bEventHide = true;
		}

		DWORD dwSec;
		DWORD dwCurrTime = timeGetTime();
		if ( ZGetQuest()->GetRemainedTime() < dwCurrTime)
			dwSec = 0;
		else
			dwSec = (ZGetQuest()->GetRemainedTime() - dwCurrTime) / 1000;

		char szSec[ 10];
		sprintf( szSec, "%d", dwSec);
		char szMsg[ 128];
		ZTransMsg( szMsg, MSG_GAME_NEXT_N_MIN_AFTER, 1, szSec);

		pDC->SetFont( CCFontManager::Get("FONTa10_O2Wht"));
		pDC->SetColor(sColor(0xFFFFFFFF));

		if (!bEventHide)
			TextRelative(pDC,400.f/800.f,500.f/600.f, szMsg, true);
	}
}
コード例 #12
0
void ZCharacterView::SetSelectMyCharacter()
{
	ZMyInfo* pmi = ZGetMyInfo();
	ZMyItemList* pil = ZGetMyInfo()->GetItemList();

	u32 nWeaponID = GetVisualWeaponID(pil->GetEquipedItemID(MMCIP_MELEE),
		pil->GetEquipedItemID(MMCIP_PRIMARY), pil->GetEquipedItemID(MMCIP_SECONDARY),
		pil->GetEquipedItemID(MMCIP_CUSTOM1), pil->GetEquipedItemID(MMCIP_CUSTOM2));

	u32 nItemids[MMCIP_END];

	if(pmi) 
	{
		for (int i = 0; i < MMCIP_END; i++)
		{
			nItemids[i] = pil->GetEquipedItemID(MMatchCharItemParts(i));
		}

		InitCharParts(pmi->GetSex(), pmi->GetHair(), pmi->GetFace(), nItemids);
	}
}
コード例 #13
0
int ZShopEquipInterface::_CheckRestrictBringAccountItem()
{
	// Return -1 : Error
	//		  0 : No restriction
	//		  1 : Sex restricted
	//		  2 : Level restricted

	ZShopEquipListItem* pListItem = GetListCurSelItem("AccountItemList");
	if (pListItem == NULL) return -1;

	if (pListItem->GetItemData()->GetHandleBringAccount())
	{
		int nAIID = pListItem->GetItemData()->GetHandleBringAccount()->GetAIID();
		ZMyItemNode* pMyItemNode = ZGetMyInfo()->GetItemList()->GetAccountItemByAIID(nAIID);
		
		if (!pMyItemNode) return 0;

		unsigned long nItemID = pMyItemNode->GetItemID();
		MMatchItemDesc* pItemDesc = MGetMatchItemDescMgr()->GetItemDesc(nItemID);
		if (!pItemDesc)
		{
			if( ZGetGambleItemDefineMgr().GetGambleItemDefine(nItemID) ) {
				return 0;	// 겜블 아이템은 존재만 확인하면 된다.
			} else {
				return -1;				
			}
		}

		if ((pItemDesc->m_nResSex.Ref() != -1) && (ZGetMyInfo()->GetSex() != pItemDesc->m_nResSex.Ref()))
			return 1;	// Sex restricted
		if (ZGetMyInfo()->GetLevel() < pItemDesc->m_nResLevel.Ref())
			return 2;	// Level restricted

	}

	return 0;	// No Restriction
}
コード例 #14
0
ファイル: ZChatCmd.cpp プロジェクト: MagistrAVSH/node3d
bool ZChatCmdManager::DoCommand(char* szLine, ZChatCmdFlag nCurrFlag, unsigned long nInputFlag)
{
	if ((szLine == 0) || (szLine[0] == 0)) return false;
	
	ZChatCmdArgvInfo ai;
	memset(&ai, 0, sizeof(ZChatCmdArgvInfo));

	ZChatCmd* pCmd = MakeArgv(szLine, &ai);
	if (pCmd != NULL)
	{
		// 관리자 명령어일때 처리
		if (pCmd->GetFlag() & CCF_ADMIN)
		{
			if ((nInputFlag & CIF_ADMIN) == false) return false;
		}
		// 테스트 명령어일때 처리
		else if (pCmd->GetFlag() & CCF_TEST)
		{
			if ((nInputFlag & CIF_TESTER) == false) return false;
		}

		// Common
		if ( pCmd->GetFlag() & nCurrFlag)
		{
			pCmd->OnProc(szLine, ai.cargc, ai.cargv);
			return true;
		}
		// Admin
		else if ( (CIF_ADMIN & nInputFlag) && (pCmd->GetFlag() & CCF_ADMIN))
		{
			if ( IsAdminGrade(ZGetMyInfo()->GetUGradeID()) )
			{
				pCmd->OnProc(szLine, ai.cargc, ai.cargv);
				return true;
			}
		}
		// Test
		else if ( (CIF_TESTER & nInputFlag) && (pCmd->GetFlag() & CCF_TEST))
		{
			pCmd->OnProc(szLine, ai.cargc, ai.cargv);
			return true;
		}
	}

	return false;
}
コード例 #15
0
ファイル: ZSurvival.cpp プロジェクト: MagistrAVSH/node3d
bool ZSurvival::OnRefreshPlayerStatus(MCommand* pCommand)
{
	// 운영자 hide는 제외
	bool bAdminHide = false;
	if (ZGetMyInfo()->IsAdminGrade()) 
	{
		MMatchObjCache* pCache = ZGetGameClient()->FindObjCache(ZGetMyUID());
		if (pCache && pCache->CheckFlag(MTD_PlayerFlags_AdminHide))
			bAdminHide = true;
	}

	if (!bAdminHide)
	{
		// 옵저버이거나 옵저버 예약상태를 푼다.
		ZGetGame()->ReleaseObserver();

		// 죽어있으면 리스폰
		if (ZGetGame()->m_pMyCharacter->IsDie())
		{
			ZGetGame()->GetMatch()->RespawnSolo();
		}
	}


	// 피와 총알을 채운다
	for(ZCharacterManager::iterator i = ZGetCharacterManager()->begin();i!=ZGetCharacterManager()->end();i++)
	{
		ZCharacter* pCharacter = i->second;
		if (!pCharacter->IsAdminHide())	pCharacter->InitStatus();
	}



	ZGetGame()->CancelSuicide();

	return true;
}
コード例 #16
0
void ZShopEquipInterface::SelectEquipmentTab(int nTabIndex)
{
	if (nTabIndex == -1)
		nTabIndex = m_nEquipTabNum;

	ZIDLResource* pResource = GetIDLResource();

	SetKindableItem( MMIST_NONE);

	// Set filter
	MComboBox* pComboBox = (MComboBox*)pResource->FindWidget( "Equip_AllEquipmentFilter");
	if(pComboBox) {
		int sel = pComboBox->GetSelIndex();

		ZMyItemList* pil = ZGetMyInfo()->GetItemList();
		if ( pil) {
			pil->m_ListFilter = sel;
			pil->Serialize();
		}
	}

	// EQUIPMENTLISTBOX
	MWidget* pWidget = pResource->FindWidget("EquipmentList");
	if (pWidget != NULL) pWidget->Show(nTabIndex==0 ? true:false);
	pWidget = pResource->FindWidget("AccountItemList");
	if (pWidget != NULL) pWidget->Show(nTabIndex==0 ? false:true);

	// 탭 버튼
	MButton* pButton = (MButton*)pResource->FindWidget( "Equip");
	if ( pButton)
	{
		pButton->Show( false);
		pButton->Enable( false);
	}

	pButton = (MButton*)pResource->FindWidget( "SendAccountItemBtn");
	if ( pButton)
	{
		pButton->Show( false);
		pButton->Enable( false);
	}

	pButton = (MButton*)pResource->FindWidget( "BringAccountItemBtn");
	if ( pButton)
	{
		pButton->Show( false);
		pButton->Enable( false);
	}

	pButton = (MButton*)pResource->FindWidget( "BringAccountSpendableItemConfirmOpen");
	if ( pButton)
	{
		pButton->Show( false);
		pButton->Enable( false);
	}

	if ( nTabIndex == 0)
	{
		pButton = (MButton*)pResource->FindWidget( "Equip");
		if (pButton) pButton->Show(true);

		pButton = (MButton*)pResource->FindWidget( "SendAccountItemBtn");
		if (pButton) pButton->Show(true);
	}
	else if ( nTabIndex == 1)
	{
		pButton = (MButton*)pResource->FindWidget( "BringAccountItemBtn");
		if ( pButton) pButton->Show( true);

		pButton = (MButton*)pResource->FindWidget( "BringAccountSpendableItemConfirmOpen");
		if ( pButton) pButton->Show( false);
	}

	pButton = (MButton*)pResource->FindWidget("Equipment_CharacterTab");
	if (pButton)
		pButton->Show( nTabIndex==0 ? false : true);
	pButton = (MButton*)pResource->FindWidget("Equipment_AccountTab");
	if (pButton)
		pButton->Show( nTabIndex==1 ? false : true);


	// 탭 라벨
	MLabel* pLabel;
	pLabel = (MLabel*)pResource->FindWidget("Equipment_FrameTabLabel1");
	if ( pLabel)
		pLabel->Show( nTabIndex==0 ? true : false);
	pLabel = (MLabel*)pResource->FindWidget("Equipment_FrameTabLabel2");
	if ( pLabel)
		pLabel->Show( nTabIndex==1 ? true : false);

	// 탭 리스트
	MPicture* pPicture;
	pPicture = (MPicture*)pResource->FindWidget("Equip_ListLabel1");
	if ( pPicture)
		pPicture->Show( nTabIndex==0 ? true : false);
	pPicture = (MPicture*)pResource->FindWidget("Equip_ListLabel2");
	if ( pPicture)
		pPicture->Show( nTabIndex==1 ? true : false);


	// 프레임 탭
	pPicture = (MPicture*)pResource->FindWidget("Equip_TabLabel");
	MBitmap* pBitmap;
	if ( pPicture)
	{
		if ( nTabIndex == 0)
			pBitmap = MBitmapManager::Get( "framepaneltab1.tga");
		else
			pBitmap = MBitmapManager::Get( "framepaneltab2.tga");

		if ( pBitmap)
			pPicture->SetBitmap( pBitmap);
	}

	// 중앙은행
	if (nTabIndex == 1)
	{
		ZGetMyInfo()->GetItemList()->ClearAccountItems();
		ZGetMyInfo()->GetItemList()->SerializeAccountItem();
	}

	// 아이템 슬롯 Enable/Disable
	for(int i = 0;  i < MMCIP_END;  i++)
	{
		ZItemSlotView* pItemSlot = (ZItemSlotView*)GetIDLResource()->FindWidget( GetItemSlotName( "Equip", i));
		if( pItemSlot ) pItemSlot->EnableDragAndDrop( nTabIndex==0 ? true : false);
	}

	m_nEquipTabNum = nTabIndex;

	DrawCharInfoText();
}
コード例 #17
0
// LoadMonsterBookInfo
bool ZMonsterBookInterface::LoadMonsterBookInfo( void)
{
	// 몬스터 도감 페이지 정보 리스트 삭제
	if ( !m_mapMonsterBookPage.empty())
	{
		for ( ZMonsterBookPageItr itr = m_mapMonsterBookPage.begin();  itr != m_mapMonsterBookPage.end();  itr++)
			delete (*itr).second;

		m_mapMonsterBookPage.clear();
	}


	// NPC 정보를 구함
	ZGetQuest()->Load();
	CCQuestNPCCatalogue* pNPCCatalogue = ZGetQuest()->GetNPCCatalogue();
	if ( pNPCCatalogue == NULL)
		return false;


	int nTotalItemCount = 0;
	int nTotalCollectItemCount = 0;
	m_nTotalPageNum = 0;


	for ( map<CCQUEST_NPC, CCQuestNPCInfo*>::iterator itr = pNPCCatalogue->begin();  itr != pNPCCatalogue->end();  itr++)
	{
		// 하드 코드 : 이벤트용 NPC인 경우엔 빼준다
		if ( (*itr).first >= 100)
			continue;


		// 리스트 노드 생성
		CCQuestNPCInfo* pNPCInfo = (*itr).second;
		ZMonsterBookPageInfo* pMonsterBookPageInfo = new ZMonsterBookPageInfo;

		pMonsterBookPageInfo->m_nID			= (*itr).first;
		pMonsterBookPageInfo->m_strName		= pNPCInfo->szName;
		pMonsterBookPageInfo->m_nGrade		= (int)pNPCInfo->nGrade;
		pMonsterBookPageInfo->m_strDesc		= pNPCInfo->szDesc;
		pMonsterBookPageInfo->m_nHP			= pNPCInfo->nMaxHP;


		// 스킬 정보를 구함
		for ( int i = 0;  i < pNPCInfo->nSkills;  i++)
		{
			ZSkillManager* pSkillMgr = ZGetApplication()->GetSkillManager();
			map<int,ZSkillDesc*>::iterator itrSkill = pSkillMgr->find( pNPCInfo->nSkillIDs[ i]);
			if ( itrSkill != pSkillMgr->end())
			{
				string strSkill = (*itrSkill).second->szName;

				pMonsterBookPageInfo->m_Skill.push_back( strSkill);
			}
		}


		// 드롭 아이템 목록을 구함
		CCQuestDropSet* pDropItem = ZGetQuest()->GetDropTable()->Find( pNPCInfo->nDropTableID);
		if ( pDropItem)
		{
			// 드롭 아이템 갯수
			int nDropItemCount = (int)pDropItem->GetQuestItems().size();
			nTotalItemCount += nDropItemCount;


			// 수집한 아이템 갯수
			int nCollectItemCount = 0;


			for ( set<int>::iterator itrItem = pDropItem->GetQuestItems().begin();  itrItem != pDropItem->GetQuestItems().end();  itrItem++)
			{
				ZDropItemInfo* pItemNode = new ZDropItemInfo;

				// 아이템을 획득한적이 있는지 검사
				ZMyQuestItemMap::iterator itr = ZGetMyInfo()->GetItemList()->GetQuestItemMap().find( *itrItem);
				if ( itr != ZGetMyInfo()->GetItemList()->GetQuestItemMap().end())
				{
					// 획득한 아이템 갯수 추가
					nCollectItemCount++;


					// 아이템 정보를 구함
					CCQuestItemDesc* pQItemDesc = GetQuestItemDescMgr().FindQItemDesc( *itrItem);
					if ( pQItemDesc)
					{
						pItemNode->m_strName	= pQItemDesc->m_szQuestItemName;
						pItemNode->m_pIcon		= ZGetGameInterface()->GetQuestItemIcon( *itrItem, false);
					}
					else
					{
						CCMatchItemDesc* pItemDesc = CCGetMatchItemDescMgr()->GetItemDesc( *itrItem);
						if ( pItemDesc)
						{
							pItemNode->m_strName	= pItemDesc->m_pMItemName->Ref().m_szItemName;
							pItemNode->m_pIcon		= GetItemIconBitmap( pItemDesc);
						}
					}
				}
				// 획득한 적이 없으면 ???로 표시
				else
				{
					pItemNode->m_strName	= "?????";
					pItemNode->m_pIcon		= CCBitmapManager::Get( "slot_icon_unknown.tga");
				}


				// 노드 추가
				pMonsterBookPageInfo->m_DropItem.push_back( pItemNode);
			}


			// 전체 수집한 아이템 갯수 추가
			nTotalCollectItemCount += nCollectItemCount;
	
			
			// 페이지 달성률 구함
			if ( nDropItemCount > 0)
				pMonsterBookPageInfo->m_fCompleteRate = (float)nCollectItemCount / (float)nDropItemCount * 100.0f;
		}


		// 노드 추가
		m_mapMonsterBookPage.insert( ZMonsterBookPage::value_type( m_nTotalPageNum + 1, pMonsterBookPageInfo));
		m_nTotalPageNum++;
	}


	// 전체 달성률
	if ( nTotalItemCount > 0)
		m_fCompleteRate	= (float)nTotalCollectItemCount / (float)nTotalItemCount * 100.0f;


	return true;
}
コード例 #18
0
void ZGameClient::OnAskAgreement(const MUID& uidProposer, void* pMemberNamesBlob,
					const MMatchProposalMode nProposalMode, const int nRequestID)
{
	// 응답할 수 없는 상황이면 바로 거절한다.
	if ((IsWaitingRepliersAgreement()) || (!ZGetGameInterface()->IsReadyToPropose()))
	{
		char szCharName[MATCHOBJECT_NAME_LENGTH];
		sprintf(szCharName, ZGetMyInfo()->GetCharName());
		ZPostReplyAgreement(uidProposer, GetPlayerUID(), szCharName, nProposalMode, nRequestID, false);

		return;
	}

	char szMemberNames[MAX_REPLIER][256];		// 0 번째는 제안자

	int nMemberCount = MGetBlobArrayCount(pMemberNamesBlob);
	if (nMemberCount < 1) return;

	for (int i = 0; i < nMemberCount; i++)
	{
		MTD_ReplierNode* pReplierNode = (MTD_ReplierNode*)MGetBlobArrayElement(pMemberNamesBlob, i);
		strcpy(szMemberNames[i], pReplierNode->szName);
	}


	m_nProposalMode = nProposalMode;
	m_nRequestID = nRequestID;
	m_uidRequestPlayer = uidProposer;

	ZIDLResource* pResource = ZApplication::GetGameInterface()->GetIDLResource();
	MTextArea* pTextEdit = (MTextArea*)pResource->FindWidget("ProposalAgreementConfirm_Textarea");
	if (pTextEdit)
	{
		// 여기서 각각의 상황에 맞는 대사를 넣어줘야한다.
		char szTemp[256] = "";

		char szMembers[256] = " (";

		for (int i = 0; i < nMemberCount; i++)
		{
			strcat(szMembers, szMemberNames[i]);
			if (i != nMemberCount-1) strcat(szMembers, ", ");
		}
		strcat(szMembers, ")");

		switch (nProposalMode)
		{
		case MPROPOSAL_LADDER_INVITE:
			{
//				ZTransMsg(szTemp, MSG_LADDER_REPLIER_AGREEMENT_LABEL, 1, szMemberNames[0]);
				ZTransMsg(szTemp, MSG_LADDER_REPLIER_AGREEMENT_LABEL, 1, szMemberNames[0]);
				strcat(szTemp, szMembers);
			}
			break;
		case MPROPOSAL_CLAN_INVITE:
			{
//				ZTransMsg(szTemp, MSG_CLANBATTLE_REPLIER_AGREEMENT_LABEL, 1, szMemberNames[0]);
				ZTransMsg(szTemp, MSG_CLANBATTLE_REPLIER_AGREEMENT_LABEL, 1, szMemberNames[0]);
				strcat(szTemp, szMembers);
			}
			break;
		};

		
		pTextEdit->SetText(szTemp);
	}

	MWidget* pWidget = pResource->FindWidget("ProposalAgreementConfirm");
	if(pWidget!=NULL)
	{
		static ZCOUNTDOWN countDown = {PROPOSAL_AGREEMENT_TIMEOUT_SEC,
										"ProposalAgreementConfirm_Remain",
										"ProposalAgreementConfirm",
										OnAskReplierAgreement_OnExpire};
		countDown.nSeconds=PROPOSAL_AGREEMENT_TIMEOUT_SEC;	// static 이므로 재설정
		ZApplication::GetTimer()->SetTimerEvent(0, &OnTimer_CountDown, &countDown, true);

		pWidget->Show(true, true);
	}
}
コード例 #19
0
void ZGameClient::OnReplyAgreement(const MUID& uidProposer, 
		                const MUID& uidChar, 
						const char* szReplierName, 
						const MMatchProposalMode nProposalMode,
					    const int nRequestID, 
						const bool bAgreement)
{
	if (!IsWaitingRepliersAgreement())
	{
		m_AgreementBuilder.CancelProposal();
		return;
	}

	ZNetAgreementBuilder::_BuildReplyResult nResult;
	nResult = m_AgreementBuilder.BuildReply(szReplierName, nProposalMode, nRequestID, bAgreement);

	if (nResult == ZNetAgreementBuilder::BRR_ALL_AGREED)	// 모두 동의했을경우
	{
		switch (nProposalMode)
		{
		case MPROPOSAL_LADDER_INVITE:
			{
				char szMember[MAX_LADDER_TEAM_MEMBER][MATCHOBJECT_NAME_LENGTH];
				char* ppMember[MAX_LADDER_TEAM_MEMBER];

				for(int i=0; i<MAX_LADDER_TEAM_MEMBER; i++) {
					ppMember[i] = szMember[i];
				}
				int nCount = m_AgreementBuilder.GetReplierNames(&ppMember[1], MAX_LADDER_TEAM_MEMBER-1);

				// 자신도 넣는다.
				strcpy(szMember[0], ZGetMyInfo()->GetCharName());
				nCount++;

				// 여기서 실제로 요청
				ZPostLadderRequestChallenge(ppMember, nCount, 0);
			}
			break;
		case MPROPOSAL_CLAN_INVITE:
			{
				char szMember[MAX_CLANBATTLE_TEAM_MEMBER][MATCHOBJECT_NAME_LENGTH];
				char* ppMember[MAX_CLANBATTLE_TEAM_MEMBER];

				for(int i=0; i<MAX_CLANBATTLE_TEAM_MEMBER; i++) {
					ppMember[i] = szMember[i];
				}
				int nCount = m_AgreementBuilder.GetReplierNames(&ppMember[1], MAX_CLANBATTLE_TEAM_MEMBER-1);

				// 자신도 넣는다.
				strcpy(szMember[0], ZGetMyInfo()->GetCharName());
				nCount++;

				// Balance 옵션
				int nBalancedMatching = 0;
				ZIDLResource* pResource = ZApplication::GetGameInterface()->GetIDLResource();
				MButton* pButton = (MButton*)pResource->FindWidget("BalancedMatchingCheckBox");
				if ((pButton) && (pButton->GetCheck()))
				{
					nBalancedMatching = 1;
				}

				// 여기서 실제로 요청
				ZPostLadderRequestChallenge(ppMember, nCount, nBalancedMatching);
			}
			break;
		};

		ShowProposalWaitFrame(false);
		return;
	}
	else if (nResult == ZNetAgreementBuilder::BRR_DISAGREED)	// 거절했을 경우
	{
		ShowProposalWaitFrame(false);

		char temp[256] = "";
		char szRejecter[64] = "";

		// 거절한 사람 반환, 거절한 사람이 없을 경우는 그냥 마지막에 대답한 사람으로 정한다.
		if (!m_AgreementBuilder.GetRejecter(szRejecter)) strcpy(szRejecter, szReplierName);

		ZTransMsg(temp, MSG_LADDER_REPLIER_AGREEMENT_REJECT, 1, szRejecter);
		ZApplication::GetGameInterface()->ShowMessage(temp, NULL, MSG_LADDER_REPLIER_AGREEMENT_REJECT);
	}
}
コード例 #20
0
void ZGameClient::ReplyAgreement(const MUID& uidProposer, const MMatchProposalMode nProposalMode, bool bAgreement)
{
	char szCharName[MATCHOBJECT_NAME_LENGTH];
	sprintf(szCharName, ZGetMyInfo()->GetCharName());
	ZPostReplyAgreement(uidProposer, GetPlayerUID(), szCharName, nProposalMode, m_nRequestID, bAgreement);
}
コード例 #21
0
ファイル: ZGameInput.cpp プロジェクト: MagistrAVSH/node3d
bool ZGameInput::OnEvent(MEvent* pEvent)
{
	int sel = 0;

	if ((ZGetGameInterface()->GetState() != GUNZ_GAME)) return false;
	if ( ZGetGameInterface()->GetGame() == NULL ) return false;

	MWidget* pMenuWidget = ZGetGameInterface()->GetIDLResource()->FindWidget("CombatMenuFrame");
	if ((pMenuWidget) && (pMenuWidget->IsVisible())) return false;
	MWidget* pChatWidget = ZGetGameInterface()->GetIDLResource()->FindWidget("CombatChatInput");
	if ((pChatWidget) && (pChatWidget->IsVisible())) return false;
	MWidget* p112ConfirmWidget = ZGetGameInterface()->GetIDLResource()->FindWidget("112Confirm");
	if (p112ConfirmWidget->IsVisible()) return false;

#ifndef _PUBLISH
	if (m_pInstance) { 
		if (m_pInstance->OnDebugEvent(pEvent) == true) 
			return true;
	}
#endif

	ZMyCharacter* pMyCharacter = ZGetGameInterface()->GetGame()->m_pMyCharacter;
	if ((!pMyCharacter) || (!pMyCharacter->GetInitialized())) return false;


	////////////////////////////////////////////////////////////////////////////
	switch(pEvent->nMessage){
	case MWM_HOTKEY:
		{
			int nKey = pEvent->nKey;
			ZHOTKEY *hk=ZGetConfiguration()->GetHotkey(nKey);
			//if(ProcessLowLevelCommand(hk->command.c_str())==false)
			
			char buffer[256];
			strcpy(buffer,hk->command.c_str());
			ZApplication::GetGameInterface()->GetChat()->Input(buffer);

//			ConsoleInputEvent(hk->command.c_str());
		}break;

	case MWM_LBUTTONDOWN:
		{
			ZCombatInterface* pCombatInterface = ZGetGameInterface()->GetCombatInterface();

			if ( ZGetCombatInterface()->IsShowResult())
			{
				if ( ((ZGetCombatInterface()->m_nReservedOutTime - timeGetTime()) / 1000) < 13)
				{
					if(ZGetGameClient()->IsLadderGame() || ZGetGameClient()->IsDuelTournamentGame())
						ZChangeGameState(GUNZ_LOBBY);
					else
						ZChangeGameState(GUNZ_STAGE);

					return true;
				}
			}

			if (pCombatInterface->IsChat())
			{
				pCombatInterface->EnableInputChat(false);
			}

			if (pCombatInterface->GetObserver()->IsVisible())
			{
				pCombatInterface->GetObserver()->ChangeToNextTarget();
				return true;
			}

/*			if ((pMyCharacter) && (pMyCharacter->IsDie()))	//// 실서비스에서 스폰안되는 버그유발. 원인불명(_PUBLISH누락) 영구봉쇄.
			{
				// 혼자테스트할때 되살아나기
				if(g_pGame->m_CharacterManager.size()==1)
				{
#ifndef _PUBLISH
					ZGetGameInterface()->RespawnMyCharacter();
					return true;
#endif
				}
			}*/
			if (ZGetGameInterface()->IsCursorEnable())
				return false;
		}
		return true;
	case MWM_RBUTTONDOWN:
		{
			if (ZGetGameInterface()->GetCombatInterface()->IsChat())
			{
				ZGetGameInterface()->GetCombatInterface()->EnableInputChat(false);
			}

			ZCombatInterface* pCombatInterface = ZGetGameInterface()->GetCombatInterface();
			if (pCombatInterface->GetObserver()->IsVisible())
			{
				pCombatInterface->GetObserver()->NextLookMode();
			}
		}
		return true;
	case MWM_MBUTTONDOWN:
		if (ZGetGameInterface()->GetCombatInterface()->IsChat())
		{
			ZGetGameInterface()->GetCombatInterface()->EnableInputChat(false);
		}
		return true;
	case MWM_ACTIONRELEASED:
		{
			switch(pEvent->nKey){
			case ZACTION_FORWARD:
			case ZACTION_BACK:
			case ZACTION_LEFT:
			case ZACTION_RIGHT:
				if (m_pInstance) 
					m_pInstance->m_ActionKeyHistory.push_back(ZACTIONKEYITEM(ZGetGame()->GetTime(),false,pEvent->nKey));
				return true;

			case ZACTION_DEFENCE:
				{
					if(ZGetGame()->m_pMyCharacter)
						ZGetGame()->m_pMyCharacter->m_statusFlags.Ref().m_bGuardKey = false;
				}
				return true;
			}
		}break;
	case MWM_ACTIONPRESSED:
		if ( !ZGetGame()->IsReservedSuicide())		// 자살 예정인 경우 대쉬를 할수없게 막는다
		{
		switch(pEvent->nKey){
			case ZACTION_FORWARD:
			case ZACTION_BACK:
			case ZACTION_LEFT:
			case ZACTION_RIGHT:
			case ZACTION_JUMP:
				if (m_pInstance) 
					m_pInstance->m_ActionKeyHistory.push_back(ZACTIONKEYITEM(ZGetGame()->GetTime(),true,pEvent->nKey));
				return true;
			case ZACTION_MELEE_WEAPON:
				{
					if ( !ZGetGame()->IsReplay())
						ZGetGameInterface()->ChangeWeapon(ZCWT_MELEE);
				}
				return true;
			case ZACTION_PRIMARY_WEAPON:
				{
					if ( !ZGetGame()->IsReplay())
						ZGetGameInterface()->ChangeWeapon(ZCWT_PRIMARY);
				}
				return true;
			case ZACTION_SECONDARY_WEAPON:
				{
					if ( !ZGetGame()->IsReplay())
						ZGetGameInterface()->ChangeWeapon(ZCWT_SECONDARY);
				}
				return true;
			case ZACTION_ITEM1:
			case ZACTION_ITEM2:
				{
					int nIndex = pEvent->nKey - ZACTION_ITEM1 + ZCWT_CUSTOM1;
					if ( !ZGetGame()->IsReplay()) {
						ZGetGameInterface()->ChangeWeapon(ZChangeWeaponType(nIndex));
					}
				}
				return true;
			case ZACTION_COMMUNITYITEM1:	mlog("Community Item1 Selected!\n"); return true;
			case ZACTION_COMMUNITYITEM2:	mlog("Community Item2 Selected!\n"); return true;
			case ZACTION_PREV_WEAPON:
				{
					if ( !ZGetGame()->IsReplay())
						ZGetGameInterface()->ChangeWeapon(ZCWT_PREV);
				}
				return true;
			case ZACTION_NEXT_WEAPON:
				{
					if ( !ZGetGame()->IsReplay())
						ZGetGameInterface()->ChangeWeapon(ZCWT_NEXT);
				}
				return true;
			case ZACTION_RELOAD:
				{
					if ( !ZGetGame()->IsReplay())
						ZGetGameInterface()->Reload();
				}
				return true;
			case ZACTION_DEFENCE:
				{
					if ( ZGetGame()->m_pMyCharacter && !ZGetGame()->IsReplay())
						ZGetGame()->m_pMyCharacter->m_statusFlags.Ref().m_bGuardKey = true;
				}
				return true;

			case ZACTION_TAUNT:		// 틸다키
			case ZACTION_BOW:
			case ZACTION_WAVE:
			case ZACTION_LAUGH:
			case ZACTION_CRY:
			case ZACTION_DANCE:
				{
					if ( ZGetGame()->IsReplay())
						break;
					if ( MEvent::GetShiftState())
						break;
					if(ZGetGameInterface()->GetCombatInterface()->GetObserverMode())
						break;

					ZC_SPMOTION_TYPE mtype;

						 if(pEvent->nKey == ZACTION_TAUNT) mtype = ZC_SPMOTION_TAUNT;
					else if(pEvent->nKey == ZACTION_BOW  ) mtype = ZC_SPMOTION_BOW;
					else if(pEvent->nKey == ZACTION_WAVE ) mtype = ZC_SPMOTION_WAVE;
					else if(pEvent->nKey == ZACTION_LAUGH) mtype = ZC_SPMOTION_LAUGH;
					else if(pEvent->nKey == ZACTION_CRY  ) mtype = ZC_SPMOTION_CRY;
					else if(pEvent->nKey == ZACTION_DANCE) mtype = ZC_SPMOTION_DANCE;
					else 
						return true;

					if(ZGetGame())
						ZGetGame()->PostSpMotion( mtype );	// ZPostSpMotion(mtype);
					
				}
				return true;

			case ZACTION_RECORD:
				{
					if ( ZGetGame() && !ZGetGame()->IsReplay())
						ZGetGame()->ToggleRecording();
				}
				return true;
			case ZACTION_MOVING_PICTURE:
				{	// 동영상 캡쳐...2008.10.02
					if (ZGetGameInterface()->GetBandiCapturer() != NULL)
						ZGetGameInterface()->GetBandiCapturer()->ToggleStart();
				}
				return true;
			case ZACTION_TOGGLE_CHAT:
				{
					if(ZGetCombatInterface()->IsShowUI())
					{ // UI토글이 켜져 있을때만 채팅토글을 처리해준다.
						if (ZGetGame())
						{
							ZCombatInterface* pCombatInterface = ZGetGameInterface()->GetCombatInterface();
							ZGetSoundEngine()->PlaySound("if_error");
							pCombatInterface->ShowChatOutput(!ZGetConfiguration()->GetViewGameChat());
						}
					}
				}
				return true;
			case ZACTION_USE_WEAPON:
			case ZACTION_USE_WEAPON2:
				{
					return true;
				}

			case ZACTION_SENSITIVITY_INC:
			case ZACTION_SENSITIVITY_DEC:
				{
					int nPrev = ZGetConfiguration()->GetMouseSensitivityInInt();
					float senstivity = Z_MOUSE_SENSITIVITY;

					if (pEvent->nKey == ZACTION_SENSITIVITY_INC)
						senstivity += 0.01f;
					else
						senstivity -= 0.01f;

					ZGetConfiguration()->SetMouseSensitivityInFloat(senstivity);

					int nNew = ZGetConfiguration()->GetMouseSensitivityInInt();
					
					ZGetConfiguration()->ReserveSave();
					ZChatOutputMouseSensitivityChanged(nPrev, nNew);
					return true;
				}
			} // switch
		}
		break;

	case MWM_KEYDOWN:
		{
			ZCombatInterface* pCombatInterface = ZGetGameInterface()->GetCombatInterface();

			switch (pEvent->nKey)
			{
			
			case VK_F1:
			case VK_F2:
			case VK_F3:
			case VK_F4:
			case VK_F5:
			case VK_F6:
			case VK_F7:
			case VK_F8:

				if( pEvent->nKey == VK_F1 ) sel = 0;
				else if( pEvent->nKey == VK_F2 ) sel = 1;
				else if( pEvent->nKey == VK_F3 ) sel = 2;
				else if( pEvent->nKey == VK_F4 ) sel = 3;
				else if( pEvent->nKey == VK_F5 ) sel = 4;
				else if( pEvent->nKey == VK_F6 ) sel = 5;
				else if( pEvent->nKey == VK_F7 ) sel = 6;
				else if( pEvent->nKey == VK_F8 ) sel = 7;

				if(ZGetConfiguration()) {

					char* str = ZGetConfiguration()->GetMacro()->GetString( sel );

					if(str) {
						if(ZApplication::GetGameInterface())
							if(ZApplication::GetGameInterface()->GetChat())
								ZApplication::GetGameInterface()->GetChat()->Input(str);
					}
				}
				return true;

			case VK_F9:
				if (ZIsLaunchDevelop())
				{
					ZApplication::GetGameInterface()->GetScreenDebugger()->SwitchDebugInfo();
				}
				else
				{
					// 애들이 어떻게 알고서 쓰길래 막음... -_-;
//					if (pEvent->bCtrl)
//						ZApplication::GetGameInterface()->GetScreenDebugger()->SwitchDebugInfo();
				}

				return true;

			case VK_RETURN:
			case VK_OEM_2:
				{
					if (!ShowCombatInputChat()) return false;
				}
				return true;

			case '0':
			case '1':
			case '2':
			case '3':
			case '4':
			case '5':
			case '6':
			case '7':
			case '8':
			case '9':

			case 'A':
			case 'B':
			case 'C':
			case 'D':
			case 'E':
			case 'F':
			case 'Y':
			case 'N':
				if (pCombatInterface->GetObserver()->IsVisible())
					pCombatInterface->GetObserver()->OnKeyEvent(pEvent->bCtrl, pEvent->nKey);

				if (ZGetGameClient()->CanVote() ||
					ZGetGameInterface()->GetCombatInterface()->GetVoteInterface()->GetShowTargetList() ) 
				{
					ZGetGameInterface()->GetCombatInterface()->GetVoteInterface()->VoteInput(pEvent->nKey);
				}
				break;
			case VK_ESCAPE:		// 메뉴를 부르거나 kick player를 취소한다
				if (ZGetGameInterface()->GetCombatInterface()->GetVoteInterface()->GetShowTargetList()) {
					ZGetGameInterface()->GetCombatInterface()->GetVoteInterface()->CancelVote();
				} else {
					ZGetGameInterface()->ShowMenu(!ZGetGameInterface()->IsMenuVisible());
					ZGetGameInterface()->Show112Dialog(false);
				}

				return true;
			case 'M' : 
				if ( ZGetGame()->IsReplay() && pCombatInterface->GetObserver()->IsVisible())
				{
					if(ZGetGameInterface()->GetCamera()->GetLookMode()==ZCAMERA_FREELOOK)
						ZGetGameInterface()->GetCamera()->SetLookMode(ZCAMERA_MINIMAP);
					else
						ZGetGameInterface()->GetCamera()->SetLookMode(ZCAMERA_FREELOOK);
				}
				break;
			case 'T' :
				if(ZGetGame()->m_pMyCharacter->GetTeamID()==MMT_SPECTATOR &&
					ZGetGame()->GetMatch()->IsTeamPlay() && 
					pCombatInterface->GetObserver()->IsVisible()) {
						ZObserver *pObserver = pCombatInterface->GetObserver();
						pObserver->SetType(pObserver->GetType()==ZOM_BLUE ? ZOM_RED : ZOM_BLUE);
						pObserver->ChangeToNextTarget();

				}
			case 'H':
				if ( ZGetGame()->IsReplay() && pCombatInterface->GetObserver()->IsVisible())
				{
					if ( ZGetGame()->IsShowReplayInfo())
						ZGetGame()->ShowReplayInfo( false);
					else
						ZGetGame()->ShowReplayInfo( true);
				}
				break;
			case 'J':
				{
					#ifdef _CMD_PROFILE
						if ((pEvent->bCtrl) && (ZIsLaunchDevelop()))
						{
							#ifndef _PUBLISH
								ZGetGameClient()->m_CommandProfiler.Analysis();
							#endif
						}
					#endif
				}
				break;
#ifdef _DEBUG
			case 'K':
				{
					rvector pos = ZGetGame()->m_pMyCharacter->GetPosition();
					pos.x+=1;
					ZGetGame()->m_pMyCharacter->SetPosition(pos);
				}
				break;
			case 'L':
				{
					rvector pos = ZGetGame()->m_pMyCharacter->GetPosition();
					pos.x-=1;
					ZGetGame()->m_pMyCharacter->SetPosition(pos);
				}
				break;
			//case 'J':
			//	{
			//		ZGetGame()->m_pMyCharacter->GetPosition().z = ZGetGame()->m_pMyCharacter->GetPosition().z+1;
			//	}
			//	break;
			//case 'M':
			//	{
			//		ZGetGame()->m_pMyCharacter->GetPosition().z = ZGetGame()->m_pMyCharacter->GetPosition().z-1;
			//	}
			//	break;
			case 'U':
				{
					rvector pos = ZGetGame()->m_pMyCharacter->GetPosition();
					pos.x = -3809;
					pos.y = -1330;
					pos.z = 100;
					ZGetGame()->m_pMyCharacter->SetPosition(pos);
					//ZGetGame()->m_pMyCharacter->GetPosition().x = -3809;
					//ZGetGame()->m_pMyCharacter->GetPosition().y = -1337.5;
					//ZGetGame()->m_pMyCharacter->GetPosition().z = 461;
				}
				break;
#endif
			}
		}
		break;

	case MWM_CHAR:
		{
			ZMatch* pMatch = ZGetGame()->GetMatch();
			if (pMatch->IsTeamPlay()) {
				switch(pEvent->nKey) {
				case '\'':
				case '\"':
					{
						ZCombatInterface* pCombatInterface = ZGetGameInterface()->GetCombatInterface();
						pCombatInterface->EnableInputChat(true, true);
					}
					return true;
				};
			}

			// for deutsch, spanish keyboard
			if (pEvent->nKey == '/') {
				if (!ShowCombatInputChat()) return false;
			}
		}
		break;

	case MWM_SYSKEYDOWN:
		{
			// alt+a ~ z(65~90)
			if(pEvent->nKey==90){	// Alt+'Z' // 모든 UI 감추기... by kammir 20081020
				ZGetCombatInterface()->SetIsShowUI(!ZGetCombatInterface()->IsShowUI());
				if (ZGetGame())
				{
					ZCombatInterface* pCombatInterface = ZGetGameInterface()->GetCombatInterface();
					ZGetSoundEngine()->PlaySound("if_error");
					pCombatInterface->ShowChatOutput(ZGetCombatInterface()->IsShowUI());
				}
			}
		}
		break;

	case MWM_MOUSEWHEEL:
		{
			if ( ZGetGame()->IsReplay())
				break;

			int nDelta = pEvent->nDelta;

			if ( (ZGetMyInfo()->IsAdminGrade() && ZGetCombatInterface()->GetObserver()->IsVisible()) ||
				(ZGetGameInterface()->GetScreenDebugger()->IsVisible()) || 
				(!ZGetGameInterface()->m_bViewUI))
			{
				ZCamera* pCamera = ZGetGameInterface()->GetCamera();
				pCamera->m_fDist+=-(float)nDelta;
				pCamera->m_fDist=max(CAMERA_DIST_MIN,pCamera->m_fDist);
				pCamera->m_fDist=min(CAMERA_DIST_MAX,pCamera->m_fDist);
				break;
			}

//			if (nDelta > 0)	ZGetGameInterface()->ChangeWeapon(ZCWT_PREV);
//			else if (nDelta < 0) ZGetGameInterface()->ChangeWeapon(ZCWT_NEXT);
		}break;

	case MWM_MOUSEMOVE:
		{
			if(ZGetGameInterface()->IsCursorEnable()==false)
			{
				return true;
			}
		}
		break;
	} // switch (message)


	return false;
}
コード例 #22
0
void ZShopEquipInterface::DrawCharInfoText(char* szShopOrEquip, int nReqLevel, int nNewWT, int nNewMaxWT, int nNewHP, int nNewAP, int nReqBounty, int nReqCash)
{
	if (szShopOrEquip == NULL) 
	{
		DrawCharInfoText("Shop", nReqLevel, nNewWT, nNewMaxWT, nNewHP, nNewAP, nReqBounty, nReqCash);
		DrawCharInfoText("Equip", nReqLevel, nNewWT, nNewMaxWT, nNewHP, nNewAP, nReqBounty, nReqCash);
		return;
	}

	if (0!=strcmp(szShopOrEquip, "Shop") && 0!=strcmp(szShopOrEquip, "Equip")) return;

	MTextArea* pTextArea[3];
	char sz1[256], sz2[256], szTextArea[64];
	const char* szRed	= "^1";
	const char* szGreen	= "^2";
	const char* szGray	= "^9";
	const char* szColor	= NULL;

	// prefix에 따라서 "Shop_MyInfo1" "Shop_MyInfo2" "Shop_MyInfo3" "Equip_MyInfo1" "Equip_MyInfo2" "Equip_MyInfo3"의 이름을 구성
	// (가로로 늘어놓은 TextArea 세개에 나눠서 표시하기 때문에..)
	for (int i=0; i<3; ++i)
	{
		sprintf(szTextArea, "%s_MyInfo%d", szShopOrEquip, i+1);
		pTextArea[i] = (MTextArea*)GetIDLResource()->FindWidget(szTextArea);
		if (NULL == pTextArea[i])
		{
			_ASSERT(0);
			return;	// 하나라도 못찾으면 리턴해버리자
		}

		pTextArea[i]->Clear();
	}

	// 첫번째 TextArea (레벨, 무게)
	szColor = szGray;
	if (nReqLevel > ZGetMyInfo()->GetLevel())
		szColor = szRed;
	sprintf(sz1, "^9%s : %s%d ^9%s", ZMsg(MSG_CHARINFO_LEVEL), szColor, ZGetMyInfo()->GetLevel(), ZMsg(MSG_CHARINFO_LEVELMARKER));
	pTextArea[0]->AddText(sz1);

	int nCurrMaxWT = ZGetMyInfo()->GetItemList()->GetMaxWeight();
	sprintf(sz1, "^9%s : ", ZMsg(MSG_CHARINFO_WEIGHT));
	szColor = (nNewWT > nNewMaxWT) ? szRed : szGray;
	sprintf(sz2, "%s%d", szColor, nNewWT);
	strcat(sz1, sz2);
	sprintf(sz2, "^9/%d", nCurrMaxWT);
	strcat(sz1, sz2);
	int nDiffMaxWT = nNewMaxWT - nCurrMaxWT;
	if (nDiffMaxWT != 0)
	{
		szColor = (nDiffMaxWT > 0) ? szGreen : szRed;
		sprintf(sz2, "%s%+d", szColor, nDiffMaxWT);
		strcat(sz1, sz2);
	}
	pTextArea[0]->AddText(sz1);



	// 두번째 TextArea (체력, 방어)
	sprintf(sz1, "^9%s : %d ", ZMsg(MSG_CHARINFO_HP), ZGetMyInfo()->GetHP());
	int nDiffHP = nNewHP - ZGetMyInfo()->GetHP();
	if (nDiffHP != 0)
	{
		szColor = (nDiffHP > 0) ? szGreen : szRed;
		sprintf(sz2, "%s%+d", szColor, nDiffHP);
		strcat(sz1, sz2);
	}
	pTextArea[1]->AddText(sz1);

	sprintf(sz1, "^9%s : %d ", ZMsg(MSG_CHARINFO_AP), ZGetMyInfo()->GetAP());
	int nDiffAP = nNewAP - ZGetMyInfo()->GetAP();
	if (nDiffAP != 0)
	{
		szColor = (nDiffAP > 0) ? szGreen : szRed;
		sprintf(sz2, "%s%+d", szColor, nDiffAP);
		strcat(sz1, sz2);
	}
	pTextArea[1]->AddText(sz1);


	// 세번째 TextArea (바운티, 캐시)

	sprintf(sz1, "^9%s : ", ZMsg(MSG_CHARINFO_BOUNTY));
	szColor = (nReqBounty > ZGetMyInfo()->GetBP()) ? szRed : szGray;
	sprintf(sz2, "%s%d", szColor, ZGetMyInfo()->GetBP());
	strcat(sz1, sz2);
	pTextArea[2]->AddText(sz1);

	sprintf(sz1, "^9%s : ", ZMsg(MSG_CHARINFO_CASH));
	szColor = (nReqBounty > ZGetMyInfo()->GetECoins()) ? szRed : szGray;
	sprintf(sz2, "%s%d", szColor, ZGetMyInfo()->GetECoins());
	strcat(sz1, sz2);
	pTextArea[2]->AddText(sz1);

/*	보유 캐쉬는 캐쉬템 구입이 가능해질때 보여주자
	sprintf(sz1, "^9%s : ", ZMsg(MSG_CHARINFO_CASH));
	szColor = (nReqCash > ZGetMyInfo()->GetCash()) ? szRed : szGray;
	sprintf(sz2, "%s%d", szColor, ZGetMyInfo()->GetCash());
	strcat(sz1, sz2);
	pTextArea[2]->AddText(sz1);
	*/
}
コード例 #23
0
// 아이템의 슬롯 정보에 따라 착용할 파츠를 골라준다
// 예를 들어 custom1에 이미 장착된 경우 custom2가 비어있으면 custom2를 골라주고, 둘다 장착중이면 custom1을 골라주는 식
MMatchCharItemParts ZShopEquipInterface::RecommendEquipParts(MMatchItemSlotType slot)
{
	MMatchCharItemParts parts = MMCIP_END;

	if (slot == MMIST_RANGE)
	{
		if (ZGetMyInfo()->GetItemList()->GetEquipedItemID(MMCIP_PRIMARY) == 0)
		{
			parts = MMCIP_PRIMARY;
		}
		else if (ZGetMyInfo()->GetItemList()->GetEquipedItemID(MMCIP_SECONDARY) == 0)
		{
			parts = MMCIP_SECONDARY;
		}
	}
	else if (slot == MMIST_CUSTOM)
	{
		if (ZGetMyInfo()->GetItemList()->GetEquipedItemID(MMCIP_CUSTOM1) == 0)
		{
			parts = MMCIP_CUSTOM1;
		}
		else if (ZGetMyInfo()->GetItemList()->GetEquipedItemID(MMCIP_CUSTOM2) == 0)
		{
			parts = MMCIP_CUSTOM2;
		}
	}
	else if (slot == MMIST_FINGER)
	{
		if (ZGetMyInfo()->GetItemList()->GetEquipedItemID(MMCIP_FINGERL) == 0)
		{
			parts = MMCIP_FINGERL;
		}
		else if (ZGetMyInfo()->GetItemList()->GetEquipedItemID(MMCIP_FINGERR) == 0)
		{
			parts = MMCIP_FINGERR;
		}
	}
	else if (slot == MMIST_AVATAR)
	{
		if (ZGetMyInfo()->GetItemList()->GetEquipedItemID(MMCIP_AVATAR) == 0)
		{
			parts = MMCIP_AVATAR;
		}
	}
	else if (slot == MMIST_COMMUNITY)
	{
		if (ZGetMyInfo()->GetItemList()->GetEquipedItemID(MMCIP_COMMUNITY1) == 0)
		{
			parts = MMCIP_COMMUNITY1;
		}
		else if (ZGetMyInfo()->GetItemList()->GetEquipedItemID(MMCIP_COMMUNITY2) == 0)
		{
			parts = MMCIP_COMMUNITY2;
		}

	}
	else if (slot == MMIST_LONGBUFF)
	{
		if (ZGetMyInfo()->GetItemList()->GetEquipedItemID(MMCIP_LONGBUFF1) == 0)
		{
			parts = MMCIP_LONGBUFF1;
		}
		else if (ZGetMyInfo()->GetItemList()->GetEquipedItemID(MMCIP_LONGBUFF2) == 0)
		{
			parts = MMCIP_LONGBUFF2;
		}
	}

	if (parts == MMCIP_END)
	{
		parts = GetSuitableItemParts(slot);
	}

	return parts;
}
コード例 #24
0
bool ZShopEquipInterface::Equip(void)
{
	static unsigned long int st_LastRequestTime = 0;	///< 막 누르는 것 방지
	unsigned long int nNowTime = timeGetTime();
	if ((nNowTime - st_LastRequestTime) < 1000) return false;

	st_LastRequestTime = nNowTime;

	ZShopEquipListItem* pListItem = GetListCurSelItem("EquipmentList");
	if (!pListItem) 
	{
		ZApplication::GetGameInterface()->ShowErrorMessage( MERR_NO_SELITEM );
		return false;
	}

	// 갬블 아이템
	if (ZSEIT_GAMBLE == pListItem->GetItemData()->GetType())
	{
		ZShopEquipItem_Gamble* pWrapperGItem = (ZShopEquipItem_Gamble*)pListItem->GetItemData();
		const ZGambleItemDefine* pGItemDesc = pWrapperGItem->GetDesc();
		if (pGItemDesc)
		{
			// 이번에 캐시용 겜블아이템 추가로 수정
			// 기존 일본 요청으로 퀘스트용 겜블아이템을 추가했었음 (1000100~1000199사이)
			// 퀘스트용 겜블아이템은 1000100에서 1000200로 제한한다
			if( ZGetGameClient()->GetServerMode() != MSM_TEST && 1000100 <= pGItemDesc->GetGambleItemID()  && pGItemDesc->GetGambleItemID() < 1000200)
			{
				ZApplication::GetGameInterface()->ShowErrorMessage( MERR_CANNOT_CAHNGE_THIS_ITEM );
			}
			else
			{
				if (!pWrapperGItem->GetHandleSell()) { _ASSERT(0); return false; }
				ZPostRequestGamble( pWrapperGItem->GetHandleSell()->GetItemUID() );
				ZPostRequestCharacterItemList( ZGetGameClient()->GetPlayerUID() );
			}
		}
	}

	// 일반 아이템
	if (ZSEIT_MATCH != pListItem->GetItemData()->GetType())
	{
		return false;
	}

	ZShopEquipItem_Match* pWrappedZItem = (ZShopEquipItem_Match*)pListItem->GetItemData();
	if (!pWrappedZItem->GetHandleSell()) { _ASSERT(0); return false; }

	MUID uidItem = pWrappedZItem->GetHandleSell()->GetItemUID();
	MMatchItemDesc* pItemDesc = MGetMatchItemDescMgr()->GetItemDesc(ZGetMyInfo()->GetItemList()->GetItemID(uidItem));
	if (!pItemDesc) return false;

	if (pItemDesc->m_nSlot == MMIST_NONE)
		return false;

	MMatchCharItemParts parts = RecommendEquipParts(pItemDesc->m_nSlot);
	if (parts == MMCIP_END)
		return false;

	WidgetHideDisableShow("Equip");
	WidgetHideDisableShow("SendAccountItemBtn");

	SetKindableItem( MMIST_NONE);

	return Equip(parts, uidItem);
}
コード例 #25
0
ファイル: ZObserver.cpp プロジェクト: Asunaya/RefinedGunz
void ZObserver::OnDraw(MDrawContext* pDC)
{
	if ( g_pGame->IsReplay() && !g_pGame->IsShowReplayInfo())
		return;

	if ( m_pTargetCharacter == NULL)
		return;

	if ( ZGetCamera()->GetLookMode() == ZCAMERA_MINIMAP)
		return;

	if ( ZGetMyInfo()->IsAdminGrade())
	{
		MFont *pFont=MFontManager::Get("FONTb11b");
		if ( pFont == NULL)
			_ASSERT(0);
		pDC->SetFont(pFont);

		MCOLOR backgroundcolor;
		if ( m_pTargetCharacter->GetTeamID() == MMT_RED)
			backgroundcolor = MCOLOR(100,0,0, 150);
		else if ( m_pTargetCharacter->GetTeamID() == MMT_BLUE)
			backgroundcolor = MCOLOR(0,0,100, 150);
		else 
			backgroundcolor = MCOLOR(0,0,0, 150);

		pDC->SetColor(backgroundcolor);
		pDC->FillRectangle( MGetWorkspaceWidth() / 2 - 170, MGetWorkspaceHeight() * (650.0f/800.0f) - 7, 340, 30);

		backgroundcolor = MCOLOR( 255,255,255, 255);
		pDC->SetColor( backgroundcolor);

		char szName[128];
		sprintf_safe( szName, "%s (HP:%d, AP:%d)", m_pTargetCharacter->GetUserName(), m_pTargetCharacter->GetHP(), m_pTargetCharacter->GetAP());
		TextRelative(pDC, 0.5f, 650.0f/800.0f, szName, true);
	}

	else if ( ZApplication::GetGame()->GetMatch()->GetMatchType() == MMATCH_GAMETYPE_DUEL)
	{
		char	charName[3][100];
		charName[0][0] = charName[1][0] = charName[2][0] = 0;
		float	fMaxHP[ 2]={ 0.0f, 0.0f},	fMaxAP[ 2]={ 0.0f, 0.0f};
		int		nHP[ 2]={ 0, 0},			nAP[ 2]={ 0, 0};
		bool	bExistNextChallenger = false;
		bool	bIsChampOserved = false;
		bool	bIsChlngOserved = false;

		ZRuleDuel* pDuel = (ZRuleDuel*)ZGetGameInterface()->GetGame()->GetMatch()->GetRule();

		for (ZCharacterManager::iterator itor = ZGetCharacterManager()->begin(); itor != ZGetCharacterManager()->end(); ++itor)
		{
			ZCharacter* pCharacter = (*itor).second;

			// Champion
			if (pCharacter->GetUID() == pDuel->QInfo.m_uidChampion)
			{
				strcpy_safe(charName[0], pCharacter->GetUserName());
				fMaxHP[ 0] = pCharacter->GetProperty()->fMaxHP;
				fMaxAP[ 0] = pCharacter->GetProperty()->fMaxAP;
				if ( pCharacter->IsDie())
				{
					nHP[ 0] = 0;
					nAP[ 0] = 0;
				}
				else
				{
					nHP[ 0] = pCharacter->GetHP();
					nAP[ 0] = pCharacter->GetAP();
				}

				if ( m_pTargetCharacter)
				{
					if ( pCharacter->GetUID() == m_pTargetCharacter->GetUID())
						bIsChampOserved = true;
				}
			}

			// Challenger
			else if (pCharacter->GetUID() == pDuel->QInfo.m_uidChallenger)
			{
				strcpy_safe(charName[1], pCharacter->GetUserName());
				fMaxHP[ 1] = pCharacter->GetProperty()->fMaxHP;
				fMaxAP[ 1] = pCharacter->GetProperty()->fMaxAP;
				if ( pCharacter->IsDie())
				{
					nHP[ 1] = 0;
					nAP[ 1] = 0;
				}
				else
				{
					nHP[ 1] = pCharacter->GetHP();
					nAP[ 1] = pCharacter->GetAP();
				}

				if ( m_pTargetCharacter)
				{
					if ( pCharacter->GetUID() == m_pTargetCharacter->GetUID())
						bIsChlngOserved = true;
				}
			}

			// Waiting
			else if (pCharacter->GetUID() == pDuel->QInfo.m_WaitQueue[0])
			{
				strcpy_safe(charName[2], pCharacter->GetUserName());
				bExistNextChallenger = true;
			}
		}

		float fRx = (float)MGetWorkspaceWidth()  / 800.0f;
		float fRy = (float)MGetWorkspaceHeight() / 600.0f;

		int nWidth;
		float fPosy;
		float fLength;
		float fHeight;

		// HP
		fPosy = 10.0f*fRy;
		fLength = 163.0f*fRx;
		fHeight = 23.0f*fRy;

		pDC->SetColor( 255, 0, 0, 210);
		nWidth = (int)( (float)nHP[0] / fMaxHP[0] * fLength);
		pDC->FillRectangle( (193.0f+163.0f)*fRx-nWidth, fPosy, nWidth, fHeight);

		nWidth = (int)( (float)nHP[1] / fMaxHP[1] * fLength);
		pDC->FillRectangle( 444.0f*fRx, fPosy, nWidth, fHeight);


		// AP
		pDC->SetColor( 0, 50, 0, 170);
		pDC->FillRectangle( 218.0f*fRx, 37.0f*fRy, 150.0f*fRx, 5.0f*fRy);
		pDC->FillRectangle( 432.0f*fRx, 37.0f*fRy, 150.0f*fRx, 5.0f*fRy);

		pDC->SetColor( 0, 255, 0, 100);
		nWidth = (int)( (float)nAP[0] / fMaxAP[0] * 150.0f * fRx);
		pDC->FillRectangle( (218.0f+150.0f)*fRx-nWidth, 37.0f*fRy, nWidth, 5.0f*fRy);

		nWidth = (int)( (float)nAP[1] / fMaxAP[1] * 150.0f * fRx);
		pDC->FillRectangle( 432.0f*fRx, 37.0f*fRy, nWidth, 5.0f*fRy);


		// °ÔÀÌÁö ÇÁ·¹ÀÓ Ãâ·Â
		MBitmap* pBitmap = MBitmapManager::Get( "duel_score.tga");
		if ( pBitmap)
		{
			pDC->SetBitmap( pBitmap);
			pDC->Draw( 167.0f*fRx, 0, 466.0f*fRx, 49.0f*fRx);
		}


		// À̸§ Ãâ·Â
		MFont *pFont = MFontManager::Get("FONTa10_O2Wht");
		if ( pFont == NULL)
			_ASSERT(0);
		pDC->SetFont( pFont);
		int nTime = GetGlobalTimeMS() % 200;
		if ( bIsChampOserved && (nTime < 100))
			pDC->SetColor(MCOLOR(0xFFFFFF00));
		else
			pDC->SetColor(MCOLOR(0xFFA0A0A0));
		TextRelative(pDC, 0.34f, 0.026f, charName[0], true);

		if ( bIsChlngOserved && (nTime < 100))
			pDC->SetColor(MCOLOR(0xFFFFFF00));
		else
			pDC->SetColor(MCOLOR(0xFFA0A0A0));
		TextRelative(pDC, 0.66f, 0.026f, charName[1], true);

		if ( bExistNextChallenger)
		{
			MBitmap* pBitmap = MBitmapManager::Get( "icon_play.tga");
			if ( pBitmap)
			{
				pDC->SetBitmap( pBitmap);

				int nIcon = 20.0f*fRx;
				pDC->Draw( 646.0f*fRx, 0, nIcon, nIcon);
				pDC->Draw( 640.0f*fRx, 0, nIcon, nIcon);
			}

			pDC->SetColor( MCOLOR(0xFF808080));
			TextRelative( pDC, 0.83f, 0.01f, charName[ 2], false);
		}

		ZGetCombatInterface()->DrawVictory( pDC, 162, 20, pDuel->QInfo.m_nVictory);
	}
	

	else if ( ZApplication::GetGame()->GetMatch()->GetMatchType() != MMATCH_GAMETYPE_DUEL)
	{
		char szName[128];
		sprintf_safe(szName, "%s (HP:%d, AP:%d)", m_pTargetCharacter->GetUserName(), m_pTargetCharacter->GetHP(), m_pTargetCharacter->GetAP());
		if ( m_pTargetCharacter->IsAdmin())
			pDC->SetColor(MCOLOR(ZCOLOR_ADMIN_NAME));
		else
			pDC->SetColor(MCOLOR(0xFFFFFFFF));

		MFont *pFont = MFontManager::Get( "FONTb11b");
		if ( pFont == NULL)
			_ASSERT(0);
		pDC->SetFont( pFont);

		if ( ZApplication::GetGame()->GetMatch()->GetMatchType() == MMATCH_GAMETYPE_DEATHMATCH_TEAM2)
			TextRelative( pDC, 0.5f, 75.0f/800.0f, szName, true);
		else
			TextRelative( pDC, 0.5f, 50.0f/800.0f, szName, true);
	}

	// Ä«¸Þ¶ó Ç¥½Ã
	if ( !ZGetMyInfo()->IsAdminGrade()) {
		ZCamera *pCamera = ZGetGameInterface()->GetCamera();

		const char *szModes[] = { "normal", "user", "free", "minimap" };
//		TextRelative(pDC, 0.9f, 50.0f/800.0f, szModes[pCamera->GetLookMode()], true);

		char szFileName[ 50];
		sprintf_safe( szFileName, "camera_%s.tga", szModes[pCamera->GetLookMode()]);
		pDC->SetBitmap( MBitmapManager::Get( szFileName));

		float fGain = (float)MGetWorkspaceWidth() / 800.0f;
		pDC->Draw( (int)(720.0f * fGain), (int)(7.0f * fGain), (int)(64.0f * fGain), (int)(64.0f * fGain));
	}



	// Admin ¿ÉÁ®¹öÀÏ °æ¿ì¿¡ ³²Àº Àοø¼ö Ç¥½Ã
	if ( ZGetMyInfo()->IsAdminGrade())
	{
		// Àοø¼ö ±¸Çϱâ
		int nNumOfTotal=0, nNumOfRedTeam=0, nNumOfBlueTeam=0;
		ZCharacterManager::iterator itor;
		ZCharacter* pCharacter;
		for (itor = ZGetCharacterManager()->begin(); itor != ZGetCharacterManager()->end(); ++itor)
		{
			pCharacter = (*itor).second;
	
			if ( pCharacter->GetTeamID() == MMT_SPECTATOR)		// ¿ÉÀú¹ö´Â –A´Ù
				continue;

			if(pCharacter->IsAdminHide()) continue;
		
			if ( (pCharacter->GetTeamID()==4) && ( !pCharacter->IsDie()))
				nNumOfTotal++;
			else if ( (pCharacter->GetTeamID()==MMT_RED) && ( !pCharacter->IsDie()))
				nNumOfRedTeam++;
			else if ( (pCharacter->GetTeamID()==MMT_BLUE) && ( !pCharacter->IsDie()))
				nNumOfBlueTeam++;
		}

		// ÆÀ À̹ÌÁö Ç¥½Ã
		float sizex = MGetWorkspaceWidth() / 800.f;
		float sizey = MGetWorkspaceHeight() / 600.f;
		char szText[128];

		// ¹è°æ Ç¥½Ã
		MCOLOR backgroundcolor;

		if (ZApplication::GetGame()->GetMatch()->IsTeamPlay())
		{
			backgroundcolor = MCOLOR(100,0,0, 150);
			pDC->SetColor(backgroundcolor);
			pDC->FillRectangle( 700 * sizex, 37 * sizey, 85 * sizex, 22 * sizey);
			backgroundcolor = MCOLOR(0,0,100, 150);
			pDC->SetColor(backgroundcolor);
			pDC->FillRectangle( 700 * sizex, 62 * sizey, 85 * sizex, 22 * sizey);

			// Àοø¼ö Ç¥½Ã
			backgroundcolor = MCOLOR(255,180,180, 255);
			pDC->SetColor(backgroundcolor);
			sprintf_safe( szText, "%s:%d", ZMsg( MSG_WORD_REDTEAM), nNumOfRedTeam); 
			TextRelative( pDC, 0.92f, 40.0f/600.0f, szText, true);
			backgroundcolor = MCOLOR(180,180,255, 255);
			pDC->SetColor(backgroundcolor);
			sprintf_safe( szText, "%s:%d", ZMsg( MSG_WORD_BLUETEAM), nNumOfBlueTeam); 
			TextRelative( pDC, 0.92f, 65.0f/600.0f, szText, true);
		}
	}

	CheckDeadTarget();
}
コード例 #26
0
void ZShopEquipInterface::SelectShopTab(int nTabIndex)
{
	if (nTabIndex == -1)
		nTabIndex = m_nShopTabNum;

	ZIDLResource* pResource = GetIDLResource();

	// 프리미엄 샵 - 설정되는 국가대로 하나씩 지워나간다
#ifndef _DEBUG
#if defined(LOCALE_BRAZIL) || defined(LOCALE_INDIA) || defined(LOCALE_US) || defined(LOCALE_JAPAN) || defined(LOCALE_KOREA) || defined(LOCALE_NHNUSA)
	{
		if ( nTabIndex == 2)
			return;
	}
#endif
#endif

	MWidget* pWidget = pResource->FindWidget("AllEquipmentList");
	if (pWidget != NULL) pWidget->Show(nTabIndex==0 ? true : false);
	pWidget = pResource->FindWidget("MyAllEquipmentList");
	if (pWidget != NULL) pWidget->Show(nTabIndex==1 ? true : false);
	pWidget = pResource->FindWidget("CashEquipmentList");
	if (pWidget != NULL) pWidget->Show(nTabIndex==2 ? true : false);


	// Set filter
	MComboBox* pComboBox = (MComboBox*)pResource->FindWidget( "Shop_AllEquipmentFilter");
	if(pComboBox) {
		int sel = pComboBox->GetSelIndex();

		ZMyItemList* pil = ZGetMyInfo()->GetItemList();
		if ( pil) {
			pil->m_ListFilter = sel;
			pil->Serialize();
		}
	}

	// 버튼 설정
	MButton* pButton = (MButton*)pResource->FindWidget( "BuyConfirmCaller");
	if ( pButton)
	{
		pButton->Show( false);
		pButton->Enable( false);
	}
	pButton = (MButton*)pResource->FindWidget( "SellConfirmCaller");
	if ( pButton)
	{
		pButton->Show( false);
		pButton->Enable( false);
	}

	if ( nTabIndex == 0)
	{
		pButton = (MButton*)pResource->FindWidget( "BuyConfirmCaller");
		if ( pButton) pButton->Show( true);
	}
	else if ( nTabIndex == 1)
	{
		pButton = (MButton*)pResource->FindWidget( "SellConfirmCaller");
		if ( pButton)
			pButton->Show( true);
	}
	/* 수년전 만들다만 프리미엄 탭(캐쉬템) 코드임. 제거 예정
	else if ( nTabIndex == 2)
	{
		pButton = (MButton*)pResource->FindWidget( "BuyCashConfirmCaller");
		if ( pButton)
			pButton->Show( true);
	}
	*/


	pButton = (MButton*)pResource->FindWidget("AllEquipmentListCaller");
	if (pButton != NULL)
		pButton->Show(nTabIndex!=0 ? true : false);
	pButton = (MButton*)pResource->FindWidget("MyAllEquipmentListCaller");
	if (pButton != NULL)
		pButton->Show(nTabIndex!=1 ? true : false);
	pButton = (MButton*)pResource->FindWidget("CashEquipmentListCaller");
	if (pButton != NULL)
		pButton->Show(nTabIndex!=2 ? true : false);


	// 구입, 판매 라벨
	MPicture* pPicture;
	MBitmap* pBitmap;
	pPicture = (MPicture*)pResource->FindWidget("Shop_FrameTabLabel1");
	if ( pPicture)
		pPicture->Show(nTabIndex==0 ? true : false);
	pPicture = (MPicture*)pResource->FindWidget("Shop_FrameTabLabel2");
	if ( pPicture)
		pPicture->Show(nTabIndex==1 ? true : false);
	pPicture = (MPicture*)pResource->FindWidget("Shop_FrameTabLabel3");
	if ( pPicture)
		pPicture->Show(nTabIndex==2 ? true : false);


	// 프레임 탭
	pPicture = (MPicture*)pResource->FindWidget("Shop_TabLabel");
	if ( pPicture)
	{
		if ( nTabIndex == 0)
			pBitmap = MBitmapManager::Get( "framepaneltab1.tga");
		else if ( nTabIndex == 1)
			pBitmap = MBitmapManager::Get( "framepaneltab2.tga");
		else if ( nTabIndex == 2)
			pBitmap = MBitmapManager::Get( "framepaneltab3.tga");

		if ( pBitmap)
			pPicture->SetBitmap( pBitmap);
	}


	// 프리미엄 샵 - 설정되는 국가대로 하나씩 지워나간다
#ifndef _DEBUG
#if defined(LOCALE_BRAZIL) || defined(LOCALE_INDIA) || defined(LOCALE_US) || defined(LOCALE_JAPAN) || defined(LOCALE_KOREA) || defined(LOCALE_NHNUSA)
	{
		pWidget = pResource->FindWidget( "Shop_TabLabelBg");
		if ( pWidget)  pWidget->Show( false);

		pWidget = pResource->FindWidget( "CashEquipmentListCaller");
		if ( pWidget)  pWidget->Show( false);

		pWidget = pResource->FindWidget( "Shop_FrameTabLabel3");
		if ( pWidget)  pWidget->Show( false);
	}
#endif
#endif

	m_nShopTabNum = nTabIndex;

	DrawCharInfoText();
}