GuildWar Chips by kill

12/28/2014 22:47 LoscArmy#1
Hello,
Can u tell me how to get red chips by kill. When i kill another player, i get by example 5 red chips.

Thanks so much in advance
01/13/2015 11:11 LoscArmy#2
up
01/13/2015 13:53 Terrat#3
Look when i right think in the guildwar.cpp
01/15/2015 15:45 LoscArmy#4
Isn't in eveschool.cpp?
01/15/2015 16:23 Drabur#5
Quote:
Originally Posted by LoscArmy View Post
Isn't in eveschool.cpp?
yes it is eveschool.cpp
01/15/2015 18:27 LoscArmy#6
Do u know the code to get chip by kill pls? I try lot possibility but doens't work.. thks
01/15/2015 19:09 hanns.g#7
HTML Code:
#if __VER >= 11 // __GUILDCOMBATCHIP
void CGuildCombat::GuildCombatResultRanking()
{
	vector<__REQUESTGUILD> vecGCRanking;
	vecGCRanking = vecRequestRanking;
	
	for( int i=0; i<(int)( vecGCRanking.size()-1 ); i++ )
	{
		if( i >= m_nMaxGuild )
			break;
		// 순위별로 정렬
		for( int j=0; j<(int)( vecGCRanking.size()-1-i ); j++ )
		{
			__REQUESTGUILD RequestGuild1 = vecGCRanking[j];
			__GuildCombatMember* pGCMember1 = FindGuildCombatMember( RequestGuild1.uidGuild );
			__REQUESTGUILD RequestGuild2 = vecGCRanking[j+1];
			__GuildCombatMember* pGCMember2 = FindGuildCombatMember( RequestGuild2.uidGuild );
			
			if( !pGCMember1 || !pGCMember2 )
			{
				Error( "GuildCombatResultRanking() - pGCMember1 or pGCMember2 is NULL" );
				return;
			}

			// 점수가 많은 길드가 높은 순위
			if( pGCMember1->nGuildPoint < pGCMember2->nGuildPoint )
			{
				__REQUESTGUILD temp = vecGCRanking[j];
				vecGCRanking[j] = vecGCRanking[j+1];
				vecGCRanking[j+1] = temp;
			}
			// 점수가 같을 때 생명이 많은쪽이 높은 순위
			else if( pGCMember1->nGuildPoint == pGCMember2->nGuildPoint )
			{
				int nLife1=0, nLife2=0;
				for( int k=0 ; k<(int)( pGCMember1->vecGCSelectMember.size() ); k++ )
				{
					__JOINPLAYER* pJoinPlayer = pGCMember1->vecGCSelectMember[k];
					if( pJoinPlayer )
						nLife1 += pJoinPlayer->nlife;
				}
				for( int k=0 ; k<(int)( pGCMember2->vecGCSelectMember.size() ); k++ )
				{
					__JOINPLAYER* pJoinPlayer = pGCMember2->vecGCSelectMember[k];
					if( pJoinPlayer )
						nLife2 += pJoinPlayer->nlife;
				}
	
				if( nLife1 < nLife2 )
				{
					__REQUESTGUILD temp = vecGCRanking[j];
					vecGCRanking[j] = vecGCRanking[j+1];
					vecGCRanking[j+1] = temp;
				}
				// 생명도 같을 때 생명이 남은 길드원들의 평균레벨이 높은 길드
				else if( nLife1 == nLife2 )
				{
					int nLevel=0, nCount = 0;
					float fAvg1=0, fAvg2=0;
					for( int k=0 ; k<(int)( pGCMember1->vecGCSelectMember.size() ); k++ )
					{
						__JOINPLAYER* pJoinPlayer = pGCMember1->vecGCSelectMember[k];
						if( pJoinPlayer && 0 < pJoinPlayer->nlife )
						{
							CUser* pUsertmp = (CUser*)prj.GetUserByID( pJoinPlayer->uidPlayer );
							if( IsValidObj( pUsertmp ) )
							{
								nLevel += pUsertmp->GetLevel();
								nCount++;
							}
						}
					}
					if( nCount )
						fAvg1 = (float)( nLevel/nCount );
					else
						fAvg1 = 1.0f;
					nLevel = nCount = 0;
					for( int k=0 ; k<(int)( pGCMember2->vecGCSelectMember.size() ); k++ )
					{
						__JOINPLAYER* pJoinPlayer = pGCMember2->vecGCSelectMember[k];
						if( pJoinPlayer && 0 < pJoinPlayer->nlife )
						{
							CUser* pUsertmp = (CUser*)prj.GetUserByID( pJoinPlayer->uidPlayer );
							if( IsValidObj( pUsertmp ) )
							{
								nLevel += pUsertmp->GetLevel();
								nCount++;
							}
						}
					}
					if( nCount )
						fAvg2 = (float)( nLevel/nCount );
					else
						fAvg2 = 1.0f;

					if( fAvg1 < fAvg2 )
					{
						__REQUESTGUILD temp = vecGCRanking[j];
						vecGCRanking[j] = vecGCRanking[j+1];
						vecGCRanking[j+1] = temp;
					}
				} //if 생명
			} //if 점수
		} //for j
	} //for i

	// 아이템(레드칩) 지급
	for( int i=0; i<(int)( vecGCRanking.size() ); i++ )
	{
		if( i >= 3 ) break;

		__REQUESTGUILD RequestGuild = vecGCRanking[i];
		__GuildCombatMember* pGCMember = FindGuildCombatMember( RequestGuild.uidGuild );
		if( !pGCMember )
		{
			Error( "GuildCombatResultRanking() - pGCMember is NULL" );
			continue;
		}

		CItemElem itemElem;
		itemElem.m_dwItemId = II_CHP_RED;
		//float fChipNum = m_nJoinPanya * vecGCRanking.size() * 0.9f * 0.00001f * 0.1f;
		switch( i )
		{
			case 0 :	// 1위 
				itemElem.m_nItemNum = 20;
				break;
			case 1 :	// 2위
				itemElem.m_nItemNum = 10;
				break;
			case 2 :	// 3위
				itemElem.m_nItemNum = 5;
				break;
		}
		//CItemElem itemElem;
		//itemElem.m_nItemNum = (int)fChipNum;
		if( itemElem.m_nItemNum < 1 )
			itemElem.m_nItemNum		= 1;
		itemElem.m_bCharged = itemElem.GetProp()->bCharged;

		LogItemInfo aLogItem;
		aLogItem.Action = "W";
		aLogItem.Gold_1 = i;
					
		for( int j=0 ; j<(int)( pGCMember->vecGCSelectMember.size() ); j++ )
		{
			__JOINPLAYER* pJoinPlayer = pGCMember->vecGCSelectMember[j];
			if( !pJoinPlayer )
			{
				Error( "GuildCombatResultRanking() - pJoinPlayer is NULL" );
				continue;
			}

			CUser* pUsertmp = (CUser*)prj.GetUserByID( pJoinPlayer->uidPlayer );
			if( IsValidObj( pUsertmp ) )
			{
				aLogItem.SendName = pUsertmp->GetName();
				// 아이템 지급
				itemElem.SetSerialNumber();
				if( pUsertmp->CreateItem( &itemElem ) )
				{
					aLogItem.RecvName = "GUILDCOMBAT_CHIP";
					pUsertmp->AddDefinedText( TID_GAME_GUILDCOMBAT1TO1_WARGUILDWINCHIP, "%d", itemElem.m_nItemNum );
				}
				else
				{
					g_dpDBClient.SendQueryPostMail( pUsertmp->m_idPlayer, 0, itemElem, 0, itemElem.GetProp()->szName, itemElem.GetProp()->szName );
					//pUsertmp->AddDefinedText( TID_GAME_MINIGAME_ITEM_POST, "" );
					aLogItem.RecvName = "GUILDCOMBAT_CHIP_POST";
				}
				int cbChip	= pUsertmp->GetItemNum( II_CHP_RED );
				aLogItem.Gold	= cbChip;
				aLogItem.Gold2	= cbChip + itemElem.m_nItemNum;
				aLogItem.Gold_1 = itemElem.m_nItemNum;
				g_DPSrvr.OnLogItem( aLogItem, &itemElem, itemElem.m_nItemNum );
				TRACE( "GC REDCHIP - %s, %d위, %s : %d개\n", pUsertmp->GetName(), i+1, itemElem.GetProp()->szName, itemElem.m_nItemNum );
			}
		}
	}
}
#endif // __GUILDCOMBATCHIP