www.pudn.com > back.rar > appear.cpp


//_________________________________________________________________________________ 
// 
//	Appear.cpp 
// 
//	Á¢¼Ó½Ã ó¸® ÇÔ¼ö ¼±¾ð 
// 
//_________________________________________________________________________________ 
// 
 
#include "base.h" 
#include "Block.H" 
#include "skill.h" 
 
#include "../CUserInfo/UserInfo.H" 
#include "npc.h" 
#include "xblock.h" 
#include "Clock.H" 
#include "MAP.H" 
#include "CWayAi.h" 
#include "xblock_table.h" 
#include "../protocol/Protocol.H"	 
#include "appear.h" 
#include "buy.h" 
#include "sell.h" 
 
#include "party.h" 
//#include "skill.h" 
#include "trade.h" 
#include "guild.h" 
#include "PrivateShop.h"	//ÀÓâ¿ø Ãß°¡. 
 
#include "Server.H" 
#include "Main.H" 
 
#include "broadcast.h" 
 
void Appear( CUserInfo* user ) 
{ 
#ifdef _DEBUG 
	assert( user ); 
#endif 
	// 10-24 Å×À̺í Àû¿ë 
	MAP* tmap = g_GameServer.Return_Map( user->m_map_id ); 
 
	if( tmap->m_property != indoor ) 
	{ 
		SP_Weather weatherpacket; 
		weatherpacket.m_weather = tmap->m_weather; 
		weatherpacket.m_weather2 = tmap->m_sec_weather; 
		user->WriteBuffer( (BYTE*)&weatherpacket, sizeof( SP_Weather ) ); 
	} 
/* 
	int x,y; 
	x = user->Return_Pos() % Line[tmap->m_map_size]; 
	y = user->Return_Pos() / Line[tmap->m_map_size]; 
	tmap->m_use_path[x][y] = (char)PC_TILE; 
	tmap->m_block_table[x][y].bPC = true; 
	tmap->m_block_table[x][y].nArrayNo = -1; 
*/ 
	PItemVector itemvector = g_GameServer.Return_Item( user ); 
	if(( MAX_VECTOR > itemvector.size()) && ( itemvector.size() > 0 )) 
	{ 
		SP_Item_Appear pitem; 
		PItemVector::iterator itemiter; 
		for( itemiter = itemvector.begin(); itemiter != itemvector.end(); ++itemiter ) 
		{ 
			Make_Item_AppearMsg( &pitem, (*itemiter) ); 
			if( user->m_status != CHR_WARP) 
				user->WriteBuffer( (BYTE*)&pitem, sizeof( SP_Item_Appear ) ); 
		} 
		itemvector.clear(); 
	} 
 
	NPCVector npcvector = g_GameServer.Return_NPC( user ); 
	if(( MAX_VECTOR > npcvector.size()) && ( npcvector.size() > 0 )) 
	{ 
		SP_NPC_Appear	npcappear; 
		NPCVector::iterator npciter; 
		for( npciter = npcvector.begin(); npciter != npcvector.end(); ++npciter ) 
		{ 
			NPC *tempnpc; 
			tempnpc = *npciter; 
			Make_NPC_AppearMsg( &npcappear, tempnpc ); 
			user->WriteBuffer( (BYTE*)&npcappear, sizeof( SP_NPC_Appear ) ); 
		} 
		npcvector.clear(); 
	} 
 
	// ¸Þ¼¼Áö ¸¸µé±â 
	SP_Appear appear; 
	 
	Make_User_AppearMsg( &appear, user ); 
	// ÀÚ±âÇÑÅ× Çѹø ½îÀÚ..À¯´ÏÅ© Ç¥½Ã¶§¹®¿¡ 
	user->WriteBuffer( (BYTE*)&appear, sizeof( SP_Appear ) ); 
	 
	//6¿ù22ÀÏ ÀÓâ¿ø °³ÀλóÁ¡ °ü·Ã////////////////////////////////////////////// 
	if( (user->m_nPrivateShop != -1) && 
		(g_UserArray[g_PrivateShop[user->m_nPrivateShop].m_nUser1].Return_Unique() ==  
		user->Return_Unique() ) && ( g_PrivateShop[user->m_nPrivateShop].m_bModify == false ) ) 
	{ 
		SP_PrivateShop shop; 
		shop.m_byCommand = 4; 
		// ItemBill-LIM // 
		shop.m_bySpecialItem = g_PrivateShop[user->m_nPrivateShop].m_nGrade; 
		shop.m_lUnique = user->Return_Unique(); 
		strcpy( shop.m_szShopName1, g_PrivateShop[user->m_nPrivateShop].m_szShopName1 ); 
		strcpy( shop.m_szShopName2, g_PrivateShop[user->m_nPrivateShop].m_szShopName2 ); 
		user->WriteBuffer( (BYTE*)&shop, sizeof(SP_PrivateShop) ); 
	} 
	/////////////////////////////////////////////////////////////////////////// 
 
	// À¯ÀúÀÇ ¹üÀ§³» ij¸¯ÅÍ º¤ÅÍ ¸¸µé¾î¼­ 
	UserVector BroadVector = g_GameServer.Return_Character( user ); 
 
	// ¹üÀ§³» ¾Æ¹«µµ ¾øÀ¸¸é ¹æ¼ÛÇÒ Çʿ䵵 ¾ø´Ù 
	if(( MAX_VECTOR > BroadVector.size()) && ( BroadVector.size() > 0 )) 
	{ 
		// »õ·Îµé¾î¿Â³ð¿¡°Ô ÁÖº¯¿¡ ÀÖ´Â ³Ñµé º¸³»ÁÖ±â.. 
		UserVector::iterator iter; 
		for( iter = BroadVector.begin(); iter != BroadVector.end(); ++iter ) 
		{ 
			CUserInfo *temp_user; 
			temp_user = *iter; 
			SP_Appear temp_appear; 
			if( appear.m_lUnique != temp_user->Return_Unique() ) 
			{ 
				Make_User_AppearMsg( &temp_appear, temp_user ); 
				user->WriteBuffer( (BYTE*)&temp_appear, sizeof( SP_Appear ) );				 
/*			 
				if (!user->WriteBuffer( (BYTE*)&temp_appear, sizeof( SP_Appear ) )) 
				{	 
					char tt[100]; 
					sprintf( tt,"%s", "»õ·Î¿Â³Ñ¿¡°Ô ½ÇÆÐ" ); 
					OutputDebugString(tt); 
				} 
				else 
				{ 
					char tt[100]; 
					sprintf( tt,"%s", "»õ·Î¿Â³Ñ¿¡°Ô ¼º°ø" ); 
					OutputDebugString(tt); 
 
					temp_user->SendBuff( user ); 
				}*/ 
				///////////6.22 ÀÓâ¿ø °³ÀλóÁ¡ °ü·Ã////////////////////////////////////////// 
				if( (temp_user->m_nPrivateShop != -1) && 
					(g_UserArray[g_PrivateShop[temp_user->m_nPrivateShop].m_nUser1].Return_Unique() ==  
					temp_user->Return_Unique() ) && ( g_PrivateShop[temp_user->m_nPrivateShop].m_bModify == false ) ) 
				{ 
					SP_PrivateShop shop; 
					shop.m_byCommand = 4; 
					// ItemBill-LIM // 
					shop.m_bySpecialItem = g_PrivateShop[temp_user->m_nPrivateShop].m_nGrade; 
					shop.m_lUnique = temp_user->Return_Unique(); 
					strcpy( shop.m_szShopName1, g_PrivateShop[temp_user->m_nPrivateShop].m_szShopName1 ); 
					strcpy( shop.m_szShopName2, g_PrivateShop[temp_user->m_nPrivateShop].m_szShopName2 ); 
					user->WriteBuffer( (BYTE*)&shop, sizeof(SP_PrivateShop) ); 
				} 
				////////////////////////////////////////////////////////////////////////////// 
 
			} 
		} 
		// ¹æ¼Û 
		Broadcast( BroadVector, (BYTE*)&appear, sizeof( SP_Appear ) ); 
		//6¿ù22ÀÏ ÀÓâ¿ø °³ÀλóÁ¡ °ü·Ã////////////////////////////////////////////// 
		if( (user->m_nPrivateShop != -1) && 
			(g_UserArray[g_PrivateShop[user->m_nPrivateShop].m_nUser1].Return_Unique() ==  
			user->Return_Unique() ) && ( g_PrivateShop[user->m_nPrivateShop].m_bModify == false ) ) 
		{ 
			SP_PrivateShop shop; 
			shop.m_byCommand = 4; 
			// ItemBill-LIM // 
			shop.m_bySpecialItem = g_PrivateShop[user->m_nPrivateShop].m_nGrade; 
			shop.m_lUnique = user->Return_Unique(); 
			strcpy( shop.m_szShopName1, g_PrivateShop[user->m_nPrivateShop].m_szShopName1 ); 
			strcpy( shop.m_szShopName2, g_PrivateShop[user->m_nPrivateShop].m_szShopName2 ); 
			Broadcast( BroadVector, (BYTE*)&shop, sizeof( SP_PrivateShop ) );			 
		} 
		/////////////////////////////////////////////////////////////////////////// 
 
		BroadVector.clear(); 
	} 
 
	return; 
} 
 
 
//_________________________________________________________________________________ 
// 
//	end of Appear.cpp 
// 
//	Á¢¼Ó½Ã ó¸® ÇÔ¼ö ¼±¾ð 
// 
//_________________________________________________________________________________ 
//