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
//
// Á¢¼Ó½Ã ó¸® ÇÔ¼ö ¼±¾ð
//
//_________________________________________________________________________________
//