797 lines
39 KiB
C++
797 lines
39 KiB
C++
#include "SunClientPrecompiledHeader.h"
|
|
#ifdef _NA_005026_20120527_CHAOS_ZONE_BATTLE_GROUND
|
|
#include "ChaosSystem/ChaosSystemPacketFunction.h"
|
|
#include "ChaosSystem/ChaosSystemFunction.h"
|
|
#include "ChaosSystem/ChaosSystemData.h"
|
|
#include "ChaosSystem/uiChaosZoneBattle.h"
|
|
#include "ObjectManager.h"
|
|
#include "GlobalFunc.h"
|
|
#include "Map.h"
|
|
#include "BattleGroundFlagInfoParser.h"
|
|
#ifdef _NA_007114_20140313_CHAOSZONE_GOLDRUSH
|
|
#include "ChaosSystem/ChaosSystemMan.h"
|
|
#include "ChaosSystem/uiChaosZoneGoldRush.h"
|
|
#endif // _NA_007114_20140313_CHAOSZONE_GOLDRUSH
|
|
#ifdef _NA_008679_20160202_REWORK_BATTLEGROUND
|
|
#include "itemmanager.h"
|
|
#include "SCSlotContainer.h"
|
|
#include "uiSystemMan/uiSystemMan.h"
|
|
#endif //_NA_008679_20160202_REWORK_BATTLEGROUND
|
|
|
|
namespace ChaosSystem
|
|
{
|
|
namespace Function
|
|
{
|
|
// common functions
|
|
//----------------------------------------------------------------------------
|
|
// 예약 패킷 전송
|
|
void SendReservationPacket()
|
|
{
|
|
#ifdef _NA_007114_20140313_CHAOSZONE_GOLDRUSH
|
|
// 전장 활성화
|
|
if (ChaosSystem::GetBattleGroundData().is_on_reservation() == false &&
|
|
ChaosSystem::GetGoldRushData().is_on_reservation() == false)
|
|
{
|
|
if (ChaosSystem::ChaosZoneData::CheckMutexHandle() == TRUE)
|
|
{
|
|
if (!GENERALPARAM->IsNet())
|
|
{
|
|
DWORD mapcode = ChaosSystem::GetBattleGroundData().select_mapcode();
|
|
ChaosSystem::PacketFunction::SEND_CG_BATTLE_GROUND_RESERVATION_SYN(mapcode);
|
|
}
|
|
|
|
{
|
|
// 맵코드를 기준으로 kind에 따라서 다르게 입장예약 패킷을 보낼 수 있도록 한다.
|
|
// 현재 열려져 있는 카오스존에 한해서 mapcode를 뽑아서 전송
|
|
uiChaosSystemMan* chaos_system_manager_ptr = GET_DIALOG_MANAGER(uiChaosSystemMan, UIMAN_CHAOS);
|
|
|
|
if (chaos_system_manager_ptr)
|
|
{
|
|
DWORD dialog_id = chaos_system_manager_ptr->get_pending_dialog_id();
|
|
if (dialog_id == 0)
|
|
{
|
|
// 잘못됬다.
|
|
assert(!"열려있지 않다.");
|
|
return;
|
|
}
|
|
|
|
if (dialog_id == IM_CHAOS_SYSTEM_MANAGER::CHAOSZONE_BATTLE) // 전장
|
|
{
|
|
// 캐쉬반지 장착하고 들어갈 수 있게 해달라고 요청옴
|
|
//#ifdef _NA_008679_20160202_REWORK_BATTLEGROUND
|
|
// // 캐쉬아이템 장착 중인지 확인
|
|
// BOOL is_equip_cashitem = FALSE;
|
|
// SCSlotContainer* equip_container = ItemManager::Instance()->GetContainer(SI_EQUIPMENT);
|
|
// if (equip_container)
|
|
// {
|
|
// for (int i = 0; i < eEQUIPCONTAINER_CHARGE5 - eEQUIPCONTAINER_CHARGE1; ++i)
|
|
// {
|
|
// if (equip_container->IsEmpty(eEQUIPCONTAINER_CHARGE1 + i) == FALSE)
|
|
// {
|
|
// is_equip_cashitem = TRUE;
|
|
// }
|
|
// }
|
|
//
|
|
// if ((equip_container->IsEmpty(eEQUIPCONTAINER_PC_ROOM1) == FALSE) ||
|
|
// (equip_container->IsEmpty(eEQUIPCONTAINER_PC_ROOM2) == FALSE) ||
|
|
// (equip_container->IsEmpty(eEQUIPCONTAINER_PC_ROOM3) == FALSE))
|
|
// {
|
|
// is_equip_cashitem = TRUE;
|
|
// }
|
|
// }
|
|
//
|
|
// if (is_equip_cashitem == FALSE)
|
|
// {
|
|
// // 캐쉬반지 장착중이 아니면 예약
|
|
// DWORD mapcode = ChaosSystem::GetBattleGroundData().select_mapcode();
|
|
// ChaosSystem::PacketFunction::SEND_CG_BATTLE_GROUND_RESERVATION_SYN(mapcode);
|
|
// }
|
|
// else
|
|
// {
|
|
// // 캐쉬반지 장착중이면 해제 알림창
|
|
// uiSystemMan* system_manager = GET_DIALOG_MANAGER(uiSystemMan, UIMAN_SYSTEM);
|
|
// if (system_manager)
|
|
// {
|
|
// // 3543 전장 입장 예약 시 캐시 반지의 착용이 자동으로 해제 됩니다. 예약 하시겠습니까?
|
|
// TCHAR temp_string[INTERFACE_STRING_LENGTH] = {0,};
|
|
// g_InterfaceManager.GetInterfaceString(3543, temp_string, INTERFACE_STRING_LENGTH);
|
|
// system_manager->Sys_Confirm(temp_string, GlobalFunc::BattleGroundReservationConfirm);
|
|
// }
|
|
// }
|
|
//#else
|
|
DWORD mapcode = ChaosSystem::GetBattleGroundData().select_mapcode();
|
|
ChaosSystem::PacketFunction::SEND_CG_BATTLE_GROUND_RESERVATION_SYN(mapcode);
|
|
//#endif //_NA_008679_20160202_REWORK_BATTLEGROUND
|
|
}
|
|
else if (dialog_id == IM_CHAOS_SYSTEM_MANAGER::CHAOSZONE_GOLDRUSH) // 골드 러쉬
|
|
{
|
|
DWORD mapcode = ChaosSystem::GetGoldRushData().select_mapcode();
|
|
ChaosSystem::PacketFunction::SEND_CG_GOLDRUSH_RESERVATION_SYN(mapcode);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
// 2746 다중 접속 에러
|
|
TCHAR message[INTERFACE_STRING_LENGTH ] = {0,};
|
|
g_InterfaceManager.GetInterfaceString(2746 , message ,INTERFACE_STRING_LENGTH);
|
|
GlobalFunc::OutputMsg_Warning(eOUTPUT_MSG_CHAT, message);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
// 어느 전장이 현재 예약이 되어있는지 판별해서 예약취소 패킷을 전송
|
|
if (ChaosSystem::GetBattleGroundData().is_on_reservation() == true) // 전장
|
|
{
|
|
ChaosSystem::PacketFunction::SEND_CG_BATTLE_GROUND_RESERVATION_CANCEL_SYN();
|
|
}
|
|
else if (ChaosSystem::GetGoldRushData().is_on_reservation() == true) // 골드러쉬
|
|
{
|
|
ChaosSystem::PacketFunction::SEND_CG_GOLDRUSH_RESERVATION_CANCEL_SYN();
|
|
}
|
|
}
|
|
#else // GOLDRUSH #else
|
|
#ifdef _NA_000000_20120914_CHAOS_ZONE_BATTLE_GROUND_ACTIVATION
|
|
// 전장 활성화
|
|
if (ChaosSystem::GetBattleGroundData().is_on_reservation() == false)
|
|
{
|
|
if (ChaosSystem::GetBattleGroundData().CheckMutexHandle() == TRUE)
|
|
{
|
|
if (!GENERALPARAM->IsNet())
|
|
{
|
|
DWORD mapcode = ChaosSystem::GetBattleGroundData().select_mapcode();
|
|
ChaosSystem::PacketFunction::SEND_CG_BATTLE_GROUND_RESERVATION_SYN(mapcode);
|
|
}
|
|
|
|
#if defined(_NA_006538_BATTLE_GROUND_TIME_CONTROL_SYSTEM) || defined(_NA_008679_20160202_REWORK_BATTLEGROUND)
|
|
if (ChaosSystem::GetBattleGroundData().battle_ground_open_type() == kJoinStateNonadmission)
|
|
{
|
|
// 입장 시간이 아닙니다.
|
|
TCHAR message[INTERFACE_STRING_LENGTH ] = {0,};
|
|
g_InterfaceManager.GetInterfaceString(2753 , message ,INTERFACE_STRING_LENGTH);
|
|
GlobalFunc::SysMessageBox(message);
|
|
}
|
|
else
|
|
#endif //_NA_006538_BATTLE_GROUND_TIME_CONTROL_SYSTEM
|
|
{
|
|
DWORD mapcode = ChaosSystem::GetBattleGroundData().select_mapcode();
|
|
ChaosSystem::PacketFunction::SEND_CG_BATTLE_GROUND_RESERVATION_SYN(mapcode);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
// 2746 다중 접속 에러
|
|
TCHAR message[INTERFACE_STRING_LENGTH ] = {0,};
|
|
g_InterfaceManager.GetInterfaceString(2746 , message ,INTERFACE_STRING_LENGTH);
|
|
GlobalFunc::OutputMsg_Warning(eOUTPUT_MSG_CHAT, message);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
ChaosSystem::PacketFunction::SEND_CG_BATTLE_GROUND_RESERVATION_CANCEL_SYN();
|
|
}
|
|
#else
|
|
// 전장 비활성화
|
|
#endif //_NA_000000_20120914_CHAOS_ZONE_BATTLE_GROUND_ACTIVATION
|
|
#endif // _NA_007114_20140313_CHAOSZONE_GOLDRUSH
|
|
};
|
|
//----------------------------------------------------------------------------
|
|
// 전장 예약 버튼 세팅
|
|
void SetBattleGroundReservation(bool is_reservation)
|
|
{
|
|
ChaosSystem::GetBattleGroundData().set_is_on_reservation(is_reservation);
|
|
|
|
uiChaosZoneBattle* chaos_zone_battle = GET_CAST_DIALOG(uiChaosZoneBattle, IM_CHAOS_SYSTEM_MANAGER::CHAOSZONE_BATTLE);
|
|
if (chaos_zone_battle)
|
|
{
|
|
chaos_zone_battle->SetReservationButton(is_reservation);
|
|
}
|
|
|
|
ChaosSystem::GetBattleGroundData().set_reservation_enter_time(
|
|
is_reservation ? clock_function::GetTickCount() : 0);
|
|
};
|
|
#ifdef _NA_007114_20140313_CHAOSZONE_GOLDRUSH
|
|
//----------------------------------------------------------------------------
|
|
// 골드러쉬 / 전장 예약 버튼 세팅
|
|
void SetGoldRushReservation(const bool& is_reservation)
|
|
{
|
|
ChaosSystem::GetGoldRushData().set_is_on_reservation(is_reservation);
|
|
|
|
uiChaosZoneGoldRush* chaos_zone_goldrush_ptr = GET_CAST_DIALOG(uiChaosZoneGoldRush, IM_CHAOS_SYSTEM_MANAGER::CHAOSZONE_GOLDRUSH);
|
|
if (chaos_zone_goldrush_ptr)
|
|
{
|
|
chaos_zone_goldrush_ptr->SetReservationButton(is_reservation);
|
|
}
|
|
|
|
ChaosSystem::GetGoldRushData().set_reservation_enter_time(
|
|
is_reservation ? clock_function::GetTickCount() : 0);
|
|
};
|
|
#endif // _NA_007114_20140313_CHAOSZONE_GOLDRUSH
|
|
//----------------------------------------------------------------------------
|
|
// 전장 팀 갱신
|
|
void RefreshBattleGroundTeam()
|
|
{
|
|
ChaosSystem::BattleGroundData::BattleGroundMemberContainer::iterator itr =
|
|
ChaosSystem::GetBattleGroundData().member_info_vector().begin();
|
|
ChaosSystem::BattleGroundData::BattleGroundMemberContainer::iterator end_itr =
|
|
ChaosSystem::GetBattleGroundData().member_info_vector().end();
|
|
for ( ; itr != end_itr; ++itr)
|
|
{
|
|
Player* player = static_cast<Player*>(g_ObjectManager.GetObject((*itr).character_name));
|
|
if (player != NULL)
|
|
{
|
|
player->SetTeam((*itr).team_key);
|
|
}
|
|
}
|
|
}
|
|
#ifdef _NA_007114_20140313_CHAOSZONE_GOLDRUSH
|
|
// 골드러쉬 팀 갱신
|
|
void RefreshGoldRushTeam()
|
|
{
|
|
ChaosSystem::GoldRushData::GoldRushMemberContainer::iterator itr =
|
|
ChaosSystem::GetGoldRushData().member_info_vector().begin();
|
|
ChaosSystem::GoldRushData::GoldRushMemberContainer::iterator end_itr =
|
|
ChaosSystem::GetGoldRushData().member_info_vector().end();
|
|
for ( ; itr != end_itr; ++itr)
|
|
{
|
|
Player* player = static_cast<Player*>(g_ObjectManager.GetObject((*itr).character_name));
|
|
if (player != NULL)
|
|
{
|
|
player->SetTeam((*itr).team_key);
|
|
}
|
|
}
|
|
}
|
|
#endif // _NA_007114_20140313_CHAOSZONE_GOLDRUSH
|
|
//----------------------------------------------------------------------------
|
|
// 점령 중 이펙트
|
|
void CreateBattleGroundCollectEffect(Player* player, MapObject* map_object)
|
|
{
|
|
// 거점 오브젝트를 채집 하는 중의 이펙트 출력
|
|
// 거점 오브젝트에 이펙트를 입히는게 아니라, 애니메이션을 변경해 주는 방식이여서
|
|
// 채집하는 상황에 따라 거점 오브젝트와 거점 애니메이션을 찾아 바꿔줘야함
|
|
if (GlobalFunc::IsBattleGroundScene() == FALSE)
|
|
{
|
|
return;
|
|
}
|
|
|
|
BattleGroundFlagInfo* flag_info =
|
|
BattleGroundFlagInfoParser::Instance()->GetBattleGroundFlagInfo(g_pMap->GetCurrentFieldID(),
|
|
player->GetCollectID());
|
|
|
|
if (flag_info == NULL) // flag_info 가 NULL 이 아니면 거점오브젝트로 판단
|
|
{
|
|
return;
|
|
}
|
|
|
|
if (player->GetTeam() == INVALID_TEAM)
|
|
{
|
|
// 팀 설정이 안되있으면 전장인포에서 가져와서 저장한다.
|
|
WORD team_code = ChaosSystem::GetBattleGroundData().GetBattleGroundTeamForPlayerName(player->GetName());
|
|
if (team_code != 0)
|
|
{
|
|
player->SetTeam(team_code);
|
|
}
|
|
}
|
|
|
|
WzID object_id = map_object->GetBasePart()->GetWzUnit()->GetType();
|
|
if (object_id == battle_ground_object_type_id[battle_ground_object_red_waypoint]) // 빨 거점이고
|
|
{
|
|
if (player->GetTeam() == kBlue) // 파 팀이 땡겼으면
|
|
{
|
|
map_object->ChangeBattleGroundObjectAnimation(battle_ground_red_waypoint_redfield_blueconquering); // 빨 오오라 + 파 점령중 이펙트
|
|
}
|
|
else
|
|
{
|
|
#ifdef _DEV_VER
|
|
assert(!"자기편 거점을 당겼다!? 확인필요");
|
|
#endif //_DEV_VER
|
|
}
|
|
}
|
|
else if (object_id == battle_ground_object_type_id[battle_ground_object_blue_waypoint]) // 파 거점이고
|
|
{
|
|
if (player->GetTeam() == kRed) // 빨 팀이 땡겼으면
|
|
{
|
|
map_object->ChangeBattleGroundObjectAnimation(battle_ground_blue_waypoint_bluefield_redconquering); // 빨 오오라 + 파 점령중 이펙트
|
|
}
|
|
else
|
|
{
|
|
#ifdef _DEV_VER
|
|
assert(!"자기편 거점을 당겼다!? 확인필요");
|
|
#endif //_DEV_VER
|
|
}
|
|
}
|
|
else if (object_id == battle_ground_object_type_id[battle_ground_object_normal_waypoint]) // 흰 거점이고
|
|
{
|
|
WzID animation_id = map_object->GetCurrentAnimation();
|
|
if (player->GetTeam() == kRed) // 빨 팀이 땡겼으면
|
|
{
|
|
if (animation_id == battle_ground_waypoint_animation_id[battle_ground_normal_waypoint_whitefield]) // 흰색 오오라면
|
|
{
|
|
map_object->ChangeBattleGroundObjectAnimation(battle_ground_normal_waypoint_whitefield_redconquering); // 흰 오오라 + 빨 점령중 이펙트
|
|
}
|
|
else if ((animation_id == battle_ground_waypoint_animation_id[battle_ground_normal_waypoint_bluefield]) ||
|
|
(animation_id == battle_ground_waypoint_animation_id[battle_ground_normal_waypoint_bluefield_blueconquered])) // 파란 오오라면
|
|
{
|
|
map_object->ChangeBattleGroundObjectAnimation(battle_ground_normal_waypoint_bluefield_redconquering); // 파 오오라 + 빨 점령중 이펙트
|
|
}
|
|
}
|
|
else if (player->GetTeam() == kBlue) // 파 팀이 땡겼으면
|
|
{
|
|
if (animation_id == battle_ground_waypoint_animation_id[battle_ground_normal_waypoint_whitefield]) // 흰색 오오라면
|
|
{
|
|
map_object->ChangeBattleGroundObjectAnimation(battle_ground_normal_waypoint_whitefield_blueconquering); // 흰 오오라 + 파 점령중 이펙트
|
|
}
|
|
else if ((animation_id == battle_ground_waypoint_animation_id[battle_ground_normal_waypoint_redfield]) ||
|
|
(animation_id == battle_ground_waypoint_animation_id[battle_ground_normal_waypoint_redfield_redconquered])) // 빨간 오오라면
|
|
{
|
|
map_object->ChangeBattleGroundObjectAnimation(battle_ground_normal_waypoint_redfield_blueconquering); // 빨 오오라 + 파 점령중 이펙트
|
|
}
|
|
}
|
|
}
|
|
}
|
|
void CreateBattleGroundConqeredEffect(Player* player, MapObject* map_object)
|
|
{
|
|
// 거점 오브젝트의 채집 이펙트 제거
|
|
if (GlobalFunc::IsBattleGroundScene() == FALSE)
|
|
{
|
|
return;
|
|
}
|
|
|
|
WzID object_id = map_object->GetBasePart()->GetWzUnit()->GetType();
|
|
WzID animation_id = map_object->GetCurrentAnimation();
|
|
if (object_id == battle_ground_object_type_id[battle_ground_object_red_waypoint]) // 빨 거점이고
|
|
{
|
|
if (animation_id == battle_ground_waypoint_animation_id[battle_ground_red_waypoint_redfield_blueconquering]) // 빨 오오라 + 파 점령중 이펙트면
|
|
{
|
|
map_object->ChangeBattleGroundObjectAnimation(battle_ground_red_waypoint_redfield); // 빨 오오라
|
|
}
|
|
}
|
|
else if (object_id == battle_ground_object_type_id[battle_ground_object_blue_waypoint]) // 파 거점이고
|
|
{
|
|
if (animation_id == battle_ground_waypoint_animation_id[battle_ground_blue_waypoint_bluefield_redconquering]) // 파 오오라 + 빨 점령중 이펙트면
|
|
{
|
|
map_object->ChangeBattleGroundObjectAnimation(battle_ground_blue_waypoint_bluefield); // 파 오오라
|
|
}
|
|
}
|
|
else if (object_id == battle_ground_object_type_id[battle_ground_object_normal_waypoint]) // 흰 거점이고
|
|
{
|
|
if ((animation_id == battle_ground_waypoint_animation_id[battle_ground_normal_waypoint_whitefield_redconquering]) || // 흰 오오라 + 빨/파 점령중 이펙트
|
|
(animation_id == battle_ground_waypoint_animation_id[battle_ground_normal_waypoint_whitefield_blueconquering]))
|
|
{
|
|
map_object->ChangeBattleGroundObjectAnimation(battle_ground_normal_waypoint_whitefield); // 흰 오오라
|
|
}
|
|
else if (animation_id == battle_ground_waypoint_animation_id[battle_ground_normal_waypoint_redfield_blueconquering]) // 빨 오오라 + 파 점령중 이펙트
|
|
{
|
|
map_object->ChangeBattleGroundObjectAnimation(battle_ground_normal_waypoint_redfield); // 빨 오오라
|
|
}
|
|
else if (animation_id == battle_ground_waypoint_animation_id[battle_ground_normal_waypoint_bluefield_redconquering]) // 파 오오라 + 빨 점령중 이펙트
|
|
{
|
|
map_object->ChangeBattleGroundObjectAnimation(battle_ground_normal_waypoint_bluefield); // 파 오오라
|
|
}
|
|
}
|
|
}
|
|
|
|
void InitStrongPointAnimaion(const MAPCODE map_code)
|
|
{
|
|
BATTLE_GROUND_FLAG_INFO_MAP flag_info_hash_map =
|
|
BattleGroundFlagInfoParser::Instance()->GetBattleGroundFlagInfoHashMap();
|
|
|
|
BATTLE_GROUND_FLAG_INFO_MAP_ITER itr;
|
|
std::pair<BATTLE_GROUND_FLAG_INFO_MAP_ITER, BATTLE_GROUND_FLAG_INFO_MAP_ITER> range;
|
|
|
|
range = flag_info_hash_map.equal_range(map_code);
|
|
for (itr = range.first; itr != range.second; ++itr)
|
|
{
|
|
BattleGroundFlagInfo* info_map = itr->second;
|
|
if (info_map)
|
|
{
|
|
MapObject* map_object = static_cast<MapObject*>(g_ObjectManager.GetObject(info_map->strong_point_key));
|
|
if (map_object)
|
|
{
|
|
//map_object->ChangeBattleGroundObjectAppearance(battle_ground_object_normal_waypoint); // 흰 거점
|
|
map_object->ChangeBattleGroundObjectAnimation(battle_ground_normal_waypoint_whitefield); // 흰 오오라
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
int GetStrongPointRadarColor(MapObject* map_object)
|
|
{
|
|
/*
|
|
eRADAR_BATTLE_GROUND_STRONGPOINT_NORMAL = 111, // 전장 거점 아이콘(흰)
|
|
eRADAR_BATTLE_GROUND_STRONGPOINT_HALFRED = 112, // 전장 거점 아이콘(흐린빨)
|
|
eRADAR_BATTLE_GROUND_STRONGPOINT_RED = 113, // 전장 거점 아이콘(빨)
|
|
eRADAR_BATTLE_GROUND_STRONGPOINT_HALFBLUE = 114, // 전장 거점 아이콘(흐린파)
|
|
eRADAR_BATTLE_GROUND_STRONGPOINT_BLUE = 115, // 전장 거점 아이콘(파)
|
|
*/
|
|
BYTE radar_color_index = 0;
|
|
|
|
WzID object_id = map_object->GetBasePart()->GetWzUnit()->GetType();
|
|
WzID animation_id = map_object->GetCurrentAnimation();
|
|
|
|
if (object_id == battle_ground_object_type_id[battle_ground_object_normal_waypoint]) // 흰 거점이고
|
|
{
|
|
if ((animation_id == battle_ground_waypoint_animation_id[battle_ground_normal_waypoint_whitefield]) || // 흰 오오들이면
|
|
(animation_id == battle_ground_waypoint_animation_id[battle_ground_normal_waypoint_whitefield_blueconquering]) ||
|
|
(animation_id == battle_ground_waypoint_animation_id[battle_ground_normal_waypoint_whitefield_redconquering]))
|
|
{
|
|
radar_color_index = 0;
|
|
}
|
|
else if ((animation_id == battle_ground_waypoint_animation_id[battle_ground_normal_waypoint_redfield]) || // 빨 오오라들이면
|
|
(animation_id == battle_ground_waypoint_animation_id[battle_ground_normal_waypoint_redfield_blueconquering]) ||
|
|
(animation_id == battle_ground_waypoint_animation_id[battle_ground_normal_waypoint_redfield_redconquered]))
|
|
{
|
|
radar_color_index = 1;
|
|
}
|
|
else if ((animation_id == battle_ground_waypoint_animation_id[battle_ground_normal_waypoint_bluefield]) || // 파 오오라들이면
|
|
(animation_id == battle_ground_waypoint_animation_id[battle_ground_normal_waypoint_bluefield_redconquering]) ||
|
|
(animation_id == battle_ground_waypoint_animation_id[battle_ground_normal_waypoint_bluefield_blueconquered]))
|
|
{
|
|
radar_color_index = 3;
|
|
}
|
|
}
|
|
else if (object_id == battle_ground_object_type_id[battle_ground_object_red_waypoint]) // 빨 거점이면
|
|
{
|
|
radar_color_index = 2;
|
|
}
|
|
else if (object_id == battle_ground_object_type_id[battle_ground_object_blue_waypoint]) // 파 거점이고
|
|
{
|
|
radar_color_index = 4;
|
|
}
|
|
|
|
return radar_color_index;
|
|
}
|
|
|
|
void OutputResultStringBattleGround(DWORD result_code) // 전장 에러메세지 출력
|
|
{
|
|
TCHAR message[INTERFACE_STRING_LENGTH] = {0,};
|
|
|
|
switch (result_code)
|
|
{
|
|
case RC::RC_BATTLE_GROUND_RESERVATION_FAIL:
|
|
{
|
|
// 2705 전장 입장 예약을 할 수 없습니다.
|
|
g_InterfaceManager.GetInterfaceString(2705, message, INTERFACE_STRING_LENGTH);
|
|
}
|
|
break;
|
|
case RC::RC_BATTLE_GROUND_RESERVATION_ALREADY:
|
|
{
|
|
// 2706 이미 전장 입장 예약 상태입니다.
|
|
g_InterfaceManager.GetInterfaceString(2706, message, INTERFACE_STRING_LENGTH);
|
|
}
|
|
break;
|
|
case RC::RC_BATTLE_GROUND_IS_NOT_QUALIFIED_LEVEL:
|
|
{
|
|
// 2707 전장에 입장하기 위한 레벨 조건이 맞지 않습니다.
|
|
g_InterfaceManager.GetInterfaceString(2707, message, INTERFACE_STRING_LENGTH);
|
|
}
|
|
break;
|
|
case RC::RC_BATTLE_GROUND_IS_NOT_QUALIFIED_ITEM_SCORE:
|
|
{
|
|
// 2708 전장에 입장하기 위한 장비평점 조건이 맞지 않습니다.
|
|
g_InterfaceManager.GetInterfaceString(2708, message, INTERFACE_STRING_LENGTH);
|
|
}
|
|
break;
|
|
case RC::RC_BATTLE_GROUND_EXIST_STATE_FUGITIVE_BUF:
|
|
{
|
|
// 2710 도망자 상태에서는 전장 입장 예약을 할 수 없습니다.
|
|
g_InterfaceManager.GetInterfaceString(2710, message, INTERFACE_STRING_LENGTH);
|
|
}
|
|
break;
|
|
case RC::RC_BATTLE_GROUND_PLAYER_IS_CHAO_STATE:
|
|
{
|
|
// 2711 카오 상태에서는 전장 입장 예약을 할 수 없습니다.
|
|
g_InterfaceManager.GetInterfaceString(2711, message, INTERFACE_STRING_LENGTH);
|
|
}
|
|
break;
|
|
case RC::RC_BATTLE_GROUND_ALREADY_EXIST_PARTY:
|
|
{
|
|
// 2712 파티상태에서는 전장 입장 예약을 할 수 없습니다.
|
|
g_InterfaceManager.GetInterfaceString(2712, message, INTERFACE_STRING_LENGTH);
|
|
}
|
|
break;
|
|
case RC::RC_BATTLE_GROUND_REWARD_WINDOW_OPEN:
|
|
{
|
|
// 2748 미션 클리어 보상이나, 전장 보상을 받지 않은 상태에서는 전장 예약이 불가능 합니다.
|
|
g_InterfaceManager.GetInterfaceString(2748, message, INTERFACE_STRING_LENGTH);
|
|
}
|
|
break;
|
|
case RC::RC_BATTLE_GROUND_NONADMISSION_TIME:
|
|
{
|
|
// 2753 입장 가능 시간이 아닙니다.
|
|
g_InterfaceManager.GetInterfaceString(2753, message, INTERFACE_STRING_LENGTH);
|
|
}
|
|
break;
|
|
#ifdef _NA_006800_20130703_BATTLE_GROUND_VOTE_SYSTEM
|
|
case RC::RC_BATTLE_GROUND_INITIATE_VOTE_FAIL:
|
|
{
|
|
// 2784 투표를 할 수 없는 상황이거나, 대상이 올바르지 않습니다.
|
|
g_InterfaceManager.GetInterfaceString(2784, message, INTERFACE_STRING_LENGTH);
|
|
}
|
|
break;
|
|
case RC::RC_BATTLE_GROUND_INITIATE_VOTE_DO_NOT_SAME_TEAM:
|
|
{
|
|
// 2784 투표를 할 수 없는 상황이거나, 대상이 올바르지 않습니다.
|
|
g_InterfaceManager.GetInterfaceString(2784, message, INTERFACE_STRING_LENGTH);
|
|
}
|
|
break;
|
|
case RC::RC_BATTLE_GROUND_INITIATE_VOTE_DO_NOT_SATISFY_VICTORYPOINT:
|
|
{
|
|
// 2779 지금은 추방투표를 발의 할 수 없습니다. 추방투표는 팀에 관계없이 1000점이 득점되는 순간부터 가능합니다.
|
|
g_InterfaceManager.GetInterfaceString(2779, message, INTERFACE_STRING_LENGTH);
|
|
}
|
|
break;
|
|
case RC::RC_BATTLE_GROUND_INITIATE_VOTE_DO_NOT_SATISFY_MEMBER_COUNT:
|
|
{
|
|
// 2778 추방투표에 필요한 최소인원이 부족하여 추방투표를 진행 할 수 없습니다.
|
|
g_InterfaceManager.GetInterfaceString(2778, message, INTERFACE_STRING_LENGTH);
|
|
}
|
|
break;
|
|
case RC::RC_BATTLE_GROUND_INITIATE_VOTE_DO_NOT_SATISFY_LIMIT_TIME:
|
|
{
|
|
// 2777 추방투표 종료 후 1분간은 해당기능을 사용 할 수 없습니다.
|
|
g_InterfaceManager.GetInterfaceString(2777, message, INTERFACE_STRING_LENGTH);
|
|
}
|
|
break;
|
|
#endif // _NA_006800_20130703_BATTLE_GROUND_VOTE_SYSTEM
|
|
#ifdef _NA_007135_20140402_MODIFY_BATTLE_GROUND_RESERVATION_AVAILABLE_IN_BATTLE_GROUND_CHANNEL
|
|
case RC::RC_BATTLE_GROUND_RESERVATION_NOT_AVAILABLE_CHANNEL:
|
|
{
|
|
// 70676 점령전 채널에서만 예약 가능
|
|
g_InterfaceManager.GetInterfaceString(70676, message, INTERFACE_STRING_LENGTH);
|
|
}
|
|
break;
|
|
#endif //_NA_007135_20140402_MODIFY_BATTLE_GROUND_RESERVATION_AVAILABLE_IN_BATTLE_GROUND_CHANNEL
|
|
#ifdef _NA_008679_20160202_REWORK_BATTLEGROUND
|
|
case RC::RC_BATTLE_GROUND_RESERVATION_FAILED_INVENTORY_FULL:
|
|
{
|
|
// 3544 인벤토리가 가득차서 아이템 해제를 실패 하였습니다.
|
|
g_InterfaceManager.GetInterfaceString(3544, message, INTERFACE_STRING_LENGTH);
|
|
}
|
|
break;
|
|
case RC::RC_BATTLE_GROUND_RESERVATION_FAILED_CASHRING_UNEQUIP:
|
|
{
|
|
// 3545 캐시반지 아이템을 착용하고 있어 전장 예약을 실패 하였습니다.
|
|
g_InterfaceManager.GetInterfaceString(3545, message, INTERFACE_STRING_LENGTH);
|
|
}
|
|
break;
|
|
case RC::RC_BATTLE_GROUND_RESERVATION_FAILED_ADMISSION_TIME:
|
|
{
|
|
// 5597 입장 가능 시간이 아닙니다.
|
|
g_InterfaceManager.GetInterfaceString(5597, message, INTERFACE_STRING_LENGTH);
|
|
}
|
|
break;
|
|
#endif //_NA_008679_20160202_REWORK_BATTLEGROUND
|
|
|
|
default:
|
|
{
|
|
Snprintf(message, INTERFACE_STRING_LENGTH-1, "ChaosZone Error(ErrorCode : %d)", result_code);
|
|
}
|
|
break;
|
|
}
|
|
GlobalFunc::OutputMsg_Warning(eOUTPUT_MSG_CHAT, message);
|
|
}
|
|
|
|
//
|
|
//---------------------------------------------------------------------------
|
|
// 자유전투실
|
|
//---------------------------------------------------------------------------
|
|
// Result code 메세지 출력
|
|
void OutputResultStringFreePVP(DWORD result_code)
|
|
{
|
|
TCHAR message[INTERFACE_STRING_LENGTH] = {0,};
|
|
|
|
switch (result_code)
|
|
{
|
|
case RC::RC_FREE_PVP_CREATE_FAIL:
|
|
{
|
|
// 2616 방 생성에 실패했습니다.
|
|
g_InterfaceManager.GetInterfaceString(2616, message, INTERFACE_STRING_LENGTH);
|
|
}
|
|
break;
|
|
case RC::RC_FREE_PVP_CREATE_FAIL_MAX_ROOM:
|
|
{
|
|
//2615 최대 개설할 수 있는 자유전투실 개수를 초과하였습니다.
|
|
g_InterfaceManager.GetInterfaceString(2615, message, INTERFACE_STRING_LENGTH);
|
|
}
|
|
break;
|
|
case RC::RC_FREE_PVP_CREATE_FAIL_ZONE:
|
|
case RC::RC_FREE_PVP_CREATE_FAIL_TRANSACTION:
|
|
case RC::RC_FREE_PVP_CREATE_FAIL_WAIT_MOVE_ZONE:
|
|
{
|
|
// 2618 현재 방 생성을 할 수 없는 상태입니다.
|
|
g_InterfaceManager.GetInterfaceString(2618, message, INTERFACE_STRING_LENGTH);
|
|
}
|
|
break;
|
|
case RC::RC_FREE_PVP_CREATE_FAIL_INACTIVE:
|
|
case RC::RC_FREE_PVP_JOIN_FAIL_INACTIVE:
|
|
{
|
|
// 2614 자유전투실은 현재 이용할 수 없습니다.
|
|
g_InterfaceManager.GetInterfaceString(2614, message, INTERFACE_STRING_LENGTH);
|
|
}
|
|
break;
|
|
case RC::RC_FREE_PVP_JOIN_FAIL:
|
|
{
|
|
// 2617 방 입장에 실패했습니다.
|
|
g_InterfaceManager.GetInterfaceString(2617, message, INTERFACE_STRING_LENGTH);
|
|
}
|
|
break;
|
|
case RC::RC_FREE_PVP_JOIN_FAIL_ISNOT_ROOM:
|
|
{
|
|
// 2619 방이 존재하지 않습니다.
|
|
g_InterfaceManager.GetInterfaceString(2619, message, INTERFACE_STRING_LENGTH);
|
|
}
|
|
case RC::RC_FREE_PVP_JOIN_FAIL_MAX_USER:
|
|
{
|
|
// 2477 입장 인원이 초과 되었습니다.
|
|
g_InterfaceManager.GetInterfaceString(2477, message, INTERFACE_STRING_LENGTH);
|
|
}
|
|
break;
|
|
case RC::RC_FREE_PVP_JOIN_FAIL_DIFFER_PASSWORD:
|
|
{
|
|
// 2494 비밀 번호를 잘못 입력하였습니다.
|
|
g_InterfaceManager.GetInterfaceString(2494, message, INTERFACE_STRING_LENGTH);
|
|
}
|
|
break;
|
|
case RC::RC_FREE_PVP_CREATE_FAIL_ALREADY_BATTLE_GROUND_RESERVATION:
|
|
{
|
|
// 2703 전장 예약 중에는 해당 동작을 수행 할 수 없습니다.\n전장 예약을 취소하신 후 다시 시도해 주십시오
|
|
g_InterfaceManager.GetInterfaceString(2703, message, INTERFACE_STRING_LENGTH);
|
|
}
|
|
break;
|
|
default:
|
|
{
|
|
// 알수 없는 에러코드
|
|
Snprintf(message, INTERFACE_STRING_LENGTH, "ChaosZone PVP - Invalid Error Code = %d", result_code);
|
|
}
|
|
break;
|
|
}
|
|
|
|
GlobalFunc::OutputMsg_Warning(eOUTPUT_MSG_CHAT, message);
|
|
//GlobalFunc::OutputMsg_Notice(eOUTPUT_MSG_CENTER_SHOW, message);
|
|
}
|
|
|
|
#ifdef _NA_008334_20150608_SONNENSCHEIN
|
|
//---------------------------------------------------------------------------
|
|
//---------------------------------------------------------------------------
|
|
// 소넨샤인 Result code 메세지 출력
|
|
|
|
void OutputResultStringSonnenSchein(DWORD result_code)
|
|
{
|
|
TCHAR message[INTERFACE_STRING_LENGTH] = {0,};
|
|
|
|
switch (result_code)
|
|
{
|
|
case RC::RC_SONNENSCHEIN_FAILED:
|
|
case RC::RC_SONNENSCHEIN_ROOM_CREATE_FAILED:
|
|
case RC::RC_SONNENSCHEIN_ROOM_NO_EXIST:
|
|
case RC::RC_SONNENSCHEIN_NOTEXIST_MISSIONINFO:
|
|
case RC::RC_SONNENSCHEIN_ALREADY_ENTERED:
|
|
{
|
|
// 2617 방 입장에 실패 하였습니다.
|
|
g_InterfaceManager.GetInterfaceString(2617, message, INTERFACE_STRING_LENGTH);
|
|
}
|
|
break;
|
|
case RC::RC_SONNENSCHEIN_STATE_NOT_READY:
|
|
case RC::RC_SONNENSCHEIN_STATE_END:
|
|
{
|
|
// 5597 입장 가능 시간이 아닙니다.
|
|
g_InterfaceManager.GetInterfaceString(5597, message, INTERFACE_STRING_LENGTH);
|
|
}
|
|
break;
|
|
case RC::RC_SONNENSCHEIN_FAIL_TRANSACTION:
|
|
case RC::RC_SONNENSCHEIN_BATTLEGROUND_RESERVATION_STATE:
|
|
{
|
|
// 6429 해당 맵의 입장이 불가능 합니다.
|
|
g_InterfaceManager.GetInterfaceString(6429, message, INTERFACE_STRING_LENGTH);
|
|
}
|
|
break;
|
|
case RC::RC_SONNENSCHEIN_NOTEXIST_ENTERANCE_ITEM:
|
|
case RC::RC_SONNENSCHEIN_CHECK_ENTRANCE_ITEM_FAILED:
|
|
{
|
|
// 2495 방 입장에 필요한 아이템이 없습니다.
|
|
g_InterfaceManager.GetInterfaceString(2495, message, INTERFACE_STRING_LENGTH);
|
|
}
|
|
break;
|
|
case RC::RC_SONNENSCHEIN_NOT_DOMINATION_CHANNEL:
|
|
{
|
|
// 3538 현재 채널에서 참여할 수 없습니다. 1채널에서 시도해 주세요.
|
|
g_InterfaceManager.GetInterfaceString(3538, message, INTERFACE_STRING_LENGTH);
|
|
}
|
|
break;
|
|
default:
|
|
{
|
|
// 알수 없는 에러코드
|
|
Snprintf(message, INTERFACE_STRING_LENGTH, "Guild PVE - Invalid Error Code = %d", result_code);
|
|
}
|
|
break;
|
|
}
|
|
|
|
GlobalFunc::OutputMsg_Notice(eOUTPUT_MSG_CENTER_SHOW, message);
|
|
GlobalFunc::OutputMsg_Warning(eOUTPUT_MSG_CHAT, message);
|
|
}
|
|
#endif //_NA_008334_20150608_SONNENSCHEIN
|
|
|
|
#ifdef _NA_008543_20151027_ONE_DAYS_GUILD_MISSION
|
|
//---------------------------------------------------------------------------
|
|
//---------------------------------------------------------------------------
|
|
// 길드일일미션 Result code 메세지 출력
|
|
|
|
void OutputResultStringOneDaysGuildMission(DWORD result_code)
|
|
{
|
|
TCHAR message[INTERFACE_STRING_LENGTH] = {0,};
|
|
|
|
switch (result_code)
|
|
{
|
|
case RC::RC_ONEDAYSGUILDMISSION_FAILED:
|
|
case RC::RC_ONEDAYSGUILDMISSION_ROOM_CREATE_FAILED:
|
|
case RC::RC_ONEDAYSGUILDMISSION_ROOM_NOT_EXIST:
|
|
case RC::RC_ONEDAYSGUILDMISSION_NOTEXIST_MISSIONINFO:
|
|
case RC::RC_ONEDAYSGUILDMISSION_ALREADY_ENTERED:
|
|
{
|
|
// 2617 방 입장에 실패 하였습니다.
|
|
g_InterfaceManager.GetInterfaceString(2617, message, INTERFACE_STRING_LENGTH);
|
|
}
|
|
break;
|
|
case RC::RC_ONEDAYSGUILDMISSION_STATE_END:
|
|
{
|
|
// 5597 입장 가능 시간이 아닙니다.
|
|
g_InterfaceManager.GetInterfaceString(5597, message, INTERFACE_STRING_LENGTH);
|
|
}
|
|
break;
|
|
case RC::RC_ONEDAYSGUILDMISSION_FAIL_TRANSACTION:
|
|
case RC::RC_ONEDAYSGUILDMISSION_BATTLEGROUND_RESERVATION_STATE:
|
|
{
|
|
// 6429 해당 맵의 입장이 불가능 합니다.
|
|
g_InterfaceManager.GetInterfaceString(6429, message, INTERFACE_STRING_LENGTH);
|
|
}
|
|
break;
|
|
case RC::RC_ONEDAYSGUILDMISSION_NOTEXIST_ENTERANCE_ITEM:
|
|
case RC::RC_ONEDAYSGUILDMISSION_CHECK_ENTRANCE_ITEM_FAILED:
|
|
{
|
|
// 2495 방 입장에 필요한 아이템이 없습니다.
|
|
g_InterfaceManager.GetInterfaceString(2495, message, INTERFACE_STRING_LENGTH);
|
|
}
|
|
break;
|
|
case RC::RC_ONEDAYSGUILDMISSION_NOT_DOMINATION_CHANNEL:
|
|
{
|
|
// 3538 현재 채널에서 참여할 수 없습니다. 1채널에서 시도해 주세요.
|
|
g_InterfaceManager.GetInterfaceString(3538, message, INTERFACE_STRING_LENGTH);
|
|
}
|
|
break;
|
|
case RC::RC_ONEDAYSGUILDMISSION_NOT_GUILD_USER:
|
|
{
|
|
// 5165 길드에 가입되어 있지 않습니다.
|
|
g_InterfaceManager.GetInterfaceString(5165, message, INTERFACE_STRING_LENGTH);
|
|
}
|
|
break;
|
|
case RC::RC_ONEDAYSGUILDMISSION_OVER_MAX_LIMIT_ENTERED_CNT:
|
|
{
|
|
// 3340 참여 제한 인원수가 초과되어 입장하실 수 없습니다.
|
|
g_InterfaceManager.GetInterfaceString(3340, message, INTERFACE_STRING_LENGTH);
|
|
}
|
|
break;
|
|
//_NA_008831_20160520_ONE_DAYS_GUILD_MISSION_BUG_LOGIC_MODIFIED
|
|
case RC::RC_ONEDAYSGUILDMISSION_TRIGGER_ACTIVE_FAILED:
|
|
{
|
|
// 70536 미션 시작에 실패하여 필드로 이동합니다. 잠시 후에 다시 시도해 주십시오.
|
|
g_InterfaceManager.GetInterfaceString(70536, message, INTERFACE_STRING_LENGTH);
|
|
}
|
|
break;
|
|
default:
|
|
{
|
|
// 알수 없는 에러코드
|
|
Snprintf(message, INTERFACE_STRING_LENGTH, "Guild PVE - Invalid Error Code = %d", result_code);
|
|
}
|
|
break;
|
|
}
|
|
GlobalFunc::OutputMsg_Notice(eOUTPUT_MSG_CENTER_SHOW, message);
|
|
GlobalFunc::OutputMsg_Warning(eOUTPUT_MSG_CHAT, message);
|
|
}
|
|
#endif //_NA_008543_20151027_ONE_DAYS_GUILD_MISSION
|
|
|
|
};
|
|
};
|
|
|
|
#endif //_NA_005026_20120527_CHAOS_ZONE_BATTLE_GROUND
|