📄 dragonserver.cpp
字号:
break;
}
case CMD_PLEASE_GIVE_LIFE:
{
Recv_CMD_PLEASE_GIVE_LIFE( cn,0, packet->u.kein.default_char );
break; // 010502 YGI
}
case CMD_PLEASE_GIVE_LIFE1:
{
Recv_CMD_PLEASE_GIVE_LIFE( cn,1, 0 );
break; // 010502 YGI
}
case CMD_QUEST_JOB_FINISH:
{ // lhs 0810 涅胶飘 棱 乔聪浆 流诀牢狼 辑距
Recv_CMD_QUEST_JOB_FINISH( cn,1 );
break;
}
case CMD_SMILE_FACE:
{
RecvSmileFace( cn, packet->u.client_smile_face.smileno );
break;
}
// -----------------款康磊侩 疙飞 packet-> //acer7
case CMD_BLOCK_ATTACK_START:
{
RecvBlockAttack( cn, 1 );
break;
}
case CMD_BLOCK_ATTACK_END:
{
RecvBlockAttack( cn, 0 );
break;
}
case CMD_BLOCK_MOVE_START:
{
RecvBlockMove( cn, 1 );
break;
}
case CMD_BLOCK_MOVE_END:
{
RecvBlockMove( cn, 0 );
break;
}
case CMD_BLOCK_MAGIC_START:
{
RecvBlockMagic ( cn, 1 );
break;
}
case CMD_BLOCK_MAGIC_END:
{
RecvBlockMagic ( cn, 0 );
break;
}
case CMD_BLOCK_GIVE_LIFE_START:
{
RecvBlockGiveLife( cn, 1 );
break;
}
case CMD_BLOCK_GIVE_LIFE_END:
{
RecvBlockGiveLife( cn, 0 );
break;
}
case CMD_BLOCK_SKILL_START:
{
RecvBlockSkill ( cn, 1 );
break;//020821 lsw
}
case CMD_BLOCK_SKILL_END:
{
RecvBlockSkill ( cn, 0 );
break;//020821 lsw
}
case CMD_ABSOLUTE_LOGOUT:
{
RecvAbsoluteLogOut( cn, packet->u.absolute_logout.id );
break;
}
case CMD_MAKE_GHOST:
{
RecvMakeGhost( cn, packet->u.make_ghost.id );
break;
}
case CMD_GIVE_LIFE:
{
Recv_CMD_PLEASE_GIVE_LIFE( packet->u.give_life.id, 1 );
break;
}
case CMD_ABSOLUTE_MOVE_DUNGEON_KEEPER:
{
Recv_CMD_ABSOLUTE_MOVE_DUNGEON_KEEPER( packet );
break;
}
case CMD_BBS:
{
BroadCastBBS_Sub( packet->u.server_bbs.bbs, packet->h.header.size );
break;
}
case CMD_NPC_CHAT_DATA:
{
SendNPCChatArea(packet->u.npc_chat_data.id -10000, packet->u.npc_chat_data.data);
break;
}
case CMD_NPC_MODIFY_POS:
{
RecvNPCModifyPos( cn, packet->u.npc_modify_pos.id, packet->u.npc_modify_pos.mx,packet->u.npc_modify_pos.my );
break;
}
case CMD_SEND_NPC_PARAMETER:
{
RecvNPC_Parameter(packet->u.send_npc_parameter.id,
packet->u.send_npc_parameter.type,
packet->u.send_npc_parameter.data);
break;
}
case CMD_SEND_NPC_STRING_PARAMETER:
{
RecvNPC_StringParameter(packet->u.send_npc_string_parameter.id,
packet->u.send_npc_string_parameter.type,
packet->u.send_npc_string_parameter.data );
break;
}
// Agent->MapServer
case CMD_LOGIN_BBS:
{
BroadCastBBS_Sub( packet->u.login_bbs.bbs, packet->h.header.size);
break;
}
case CMD_CLOSE_LOGIN_ID:
{
RecvAbsLogOut2GameServer( packet->u.login_close_login_id.id );
break;
}
case CMD_SERVER_ITEMTABLE_RELOAD:
{
initItem();
LoadItemJoinTable();
break;
}
case CMD_DEBUG_CHANGE_SKILL_EXP:
{
RecvDebugChangeSkillExp( &packet->u.debug_change_skill_exp );
break;
}
case CMD_SERVER_NPC_ACCESS_TABLE_RELOAD:
{
Recv_CMD_SERVER_NPC_ACCESS_TABLE_RELOAD( cn, packet );
break;
}
case CMD_SERVER_FIGHT_STONE:
{
Recv_fight_stone(cn, *packet);
break;
}
case CMD_SEALSTONE_STATUS:
{
Recv_CMD_SEALSTONE_STATUS(&packet->u.sealstone_status);
break;
}
case CMD_SEALSTONE_WAR_START:
{
Recv_CMD_SEALSTONE_WAR_START(packet->u.sealstone_war_start.nation);
break;
}
case CMD_SEALSTONE_RESULT:
{
Recv_CMD_SEALSTONE_RESULT(&packet->u.sealstone_result);
break;
}
case CMD_SEALSTONE_WAR_LEFTTIME:
{
Recv_CMD_SEALSTONE_WAR_LEFTTIME(packet->u.sealstone_warlefttime.nation,
packet->u.sealstone_warlefttime.lefttime);
break;
}
case CMD_STEALSTONE_BREAKABLE:
{ //< CSD-CN-031213
g_pUserManager->SendPacket(packet);
SealStoneBreakable = CMD_STEALSTONE_BREAKABLE;
g_LocalWarBegin=packet->u.LocalWar.CommonDataC.Data; // 011215 LTS
break;
} //> CSD-CN-031213
case CMD_STEALSTONE_NON_BREAKABLE_PEACE:
{ //< CSD-CN-031213
g_pUserManager->SendPacket(packet);
SealStoneBreakable = CMD_STEALSTONE_NON_BREAKABLE_PEACE;
g_LocalWarBegin=packet->u.LocalWar.CommonDataC.Data; // 011215 LTS
break;
} //> CSD-CN-031213
case CMD_STEALSTONE_NON_BREAKABLE:
{ //< CSD-CN-031213
g_pUserManager->SendPacket(packet);
SealStoneBreakable = CMD_STEALSTONE_NON_BREAKABLE;
g_LocalWarBegin=packet->u.LocalWar.CommonDataC.Data; // 011215 LTS
break;
} //> CSD-CN-031213
case CMD_NATION2NATION_RELATION_RESULT:
{
RecvNation2NationRelationResult(packet);
break;
}
case CMD_NATION2NATION_RELATION:
{
RecvNation2NationRelation(cn, &(packet->u.nation2nation_relation));
break;
}
case CMD_JUST_ANI:
{
Recv_JustAni(packet);
break;
}
case CMD_FACE_DIRECTIONS:
{
CastMe2Other(cn, packet);
break;
}
case CMD_INSTALL_TYPE:
{
connections[ cn].chrlst.installType = packet->u.client_install_type.type;
break;
}
case CMD_CHECK_ACCEL:
{
CrackMgr.ComformAccelator(cn, packet);
break;
}
case CMD_SEND_ACCEL_TYPE:
{ //< CSD-030808
CrackMgr.RecvAccelType(cn,packet);
break;
} //> CSD-030808
case CMD_SKILL_RARE_UPGRADE:
{
RecvCMD_SKILL_RARE_UPGRADE(cn,packet);
break;
}
case CMD_DUAL_ENABLE:
{ //< CSD-021003
g_pDualManager->RecvDualEnable(cn, &packet->u.dual.client_dual_enable);
break;
} //> CSD-021003
case CMD_DUAL_CHANGE:
{
g_pDualManager->RecvDualChange(cn, &packet->u.dual.client_dual_change);
break;
}
case CMD_DUAL_DIVIDE:
{
g_pDualManager->RecvDualDivide(cn, &packet->u.dual.client_dual_divide);
break;
}
case CMD_RESET_ABILITY:
{
g_pDualManager->RecvResetAbility(cn);
break;
}
case CMD_RARE_UPGRADE_BBS_MAP_TO_MAP:
{ //< CSD-CN-031213
packet->h.header.type = CMD_RARE_UPGRADE_BBS;
g_pUserManager->SendPacket(packet);
break;
} //> CSD-CN-031213
case CMD_LOTTERY_BROADCAST:
{ //< CSD-CN-031213
g_pUserManager->SendPacket(packet);
break;
} //> CSD-CN-031213
//<soto-Lotto眠啊.
case CMD_LOTTO_SEEK:
{
if(cn == DB_DEMON)
{
int nCn = ::ExistHe(packet->u.Lotto_Seek.strChrName);
QueuePacket(connections,nCn,packet,1);
}
else
{
char* pName = connections[cn].name;
if(pName)
{
strcpy(packet->u.Lotto_Seek.strChrName,pName);
packet->u.Lotto_Seek.nLottoID = LottoSystem()->GetLottoID();
QueuePacket(connections,DB_DEMON,packet,1);
}
}
}
break;
//>soto-Lotto眠啊.
default:
{
if (1 == CheckHandleByKein(packet, connections, cn))
{
break;
}
if (HandleCommand2(packet, connections, cn))
{
break;
}
if (HandleCommand3(packet, connections, cn))
{
break;
}
if (1 == CheckHandleByNationWar(packet,connections,cn))
{
break;
}
else
{
::MyLog( LOG_NORMAL, "Illegal Packet (type:%d)(size:%d)(cn:%d)", packet->h.header.type, packet->h.header.size, cn );
return 0;
}
break;
}
}
return 1;
}
extern bool DungeonEventTileProc( int event_no, short int cn );
void RecvEvent( t_client_event *pEvent, short int cn )
{ //< CSD-030506
if (!CheckServerId(cn))
{
return;
}
if (sRECALL_SCRP_NO)
{
SendPutMenuString( KM_FAIL, 216, cn ); // 031110 YGI // 侩坷客 惑狼
return; // 泅犁 胶农赋飘啊 柳青吝捞促.
}
EventPC = cn;
switch (pEvent->type)
{
case EVENT_TYPE_NPC:
{
int ttt = pEvent->event_no - 10000;
if (ttt < NPC_LIST_START || ttt >= MAX_NPC_LIST) break;
if (NPCList[ ttt].Race == SEALSTONE) break;
if (NPCList[ ttt].IsTamedNpc()) break;
if (g_EventMgr.CheckScriptNo(ttt, cn)) break; // 捞亥飘俊辑 刚历 利侩凳
EventNPC[EventPC] = ttt;
const int eventno = NPCList[EventNPC[EventPC]].eventno;
if (0 <= eventno && eventno < EVENT_NPC_FUNCTION_TOTAL)
{
Script(eventno + EVENT_NPC_FUCTION_START);
}
break;
}
case EVENT_TYPE_MAPTILE:
{
const int eventno = pEvent->event_no;
if (0 > eventno)
{
break;
}
if (DungeonEventTileProc(eventno, cn))
{
break;
}
Script(eventno + EVENT_MAPTILE_FUCTION_START);
break;
}
default : break;
}
} //> CSD-030506
void RecvNewDay( t_packet *packet )
{
WORD wDay = packet->u.send_map_change_date.wDay;
WORD wMonth = packet->u.send_map_change_date.wMonth;
//朝(Day)啊 函版登菌栏搁 1, 崔(Month)啊 函版登菌栏搁 2, 笛促 函版登菌栏搁 3
BYTE bChanged = packet->u.send_map_change_date.bChanged;
static save_day = 0;
static save_month = 0;
if( wDay == save_day && wMonth == save_month ) return;
save_day = wDay;
save_month = wMonth;
InitDataFromNewDay( wDay, wMonth );
//SendAllProtocal( packet );
RefreshTodayItem();
LoadNationItem( g_wday );
MyLog(0, "Start New Day ^^ : by kein " );
}
WORD g_wCurDay; //泅犁 朝楼甫 历厘 窍绰 傈开函荐
WORD g_wCurMonth; //泅犁 崔(month)阑 历厘 窍绰 傈开函荐
void SetCurrentDate()
{
SYSTEMTIME time;
GetLocalTime(&time);
g_wCurMonth = time.wMonth;
g_wCurDay = time.wDay;
}
void CheckDay()
{
static first;
if( !first )
{
SetCurrentDate();
first = 1;
}
static curr_time = g_curr_time;
if( g_curr_time - curr_time < 300 ) return; // 5盒
curr_time = g_curr_time;
SYSTEMTIME time;
GetLocalTime(&time);
BYTE bChanged = 1; //朝(day)父 函版登菌栏搁 1, 朝苞 崔(month) 笛促 函版 登菌栏搁 2
//崔捞 官差菌阑锭
if(time.wMonth != g_wCurMonth)
{
g_wCurMonth = time.wMonth; //崔(month) 盎脚
bChanged++;
}
// 030929 kyo <<
static bool IsKickoffLimitedUser = false;
if( LocalMgr.IsAbleNation(THAI) )
{
if( g_nLimitedStartTime == time.wHour && false == IsKickoffLimitedUser)
{
CheckLimitedAge();
IsKickoffLimitedUser = true;
}
else
IsKickoffLimitedUser = false;
}
// 030929 kyo >>
//朝楼啊 官差菌阑锭
if(time.wDay != g_wCurDay)
{
t_packet packet;
g_wCurDay = time.wDay;
packet.u.send_map_change_date.wDay = time.wDay;
packet.u.send_map_change_date.wMonth = time.wMonth;
RecvNewDay( &packet ); // 朝磊 府敲饭矫
}
}
void KickOffLimitedUser( const int cn) // 030929 kyo
{//皋矫瘤甫 巢扁绊 蜡历 立加阑 辆丰茄促.
//leave log // add plz......
g_QuestInMap.ShowStateMsg( cn, g_szLimitedUser_Message, 255, 255, 0 ); //yellow
::closeconnection( connections, cn, 100 );
}
void CheckLimitedAge() // 030929 kyo
{ //< CSD-CN-031213 : 葛电 蜡历狼 立加阑 犬牢秦辑 力茄唱捞 固父捞搁 立加阑 辆丰矫挪促.
CUserManager::HASH_USER mpUser = g_pUserManager->GetUserSet();
for (CUserManager::ITOR_USER i = mpUser.begin(); i != mpUser.end(); ++i)
{
CHARLIST* pUser = CheckServerId(i->second);
if (pUser != NULL && pUser->IsLimitedAge(g_nLimitedAge))
{
KickOffLimitedUser(pUser->GetServerID());
}
}
} //> CSD-CN-031213
void InitLimitedTimeAndAge() // 030929 kyo
{// 力茄唱捞客 矫埃, 免仿矫懦 皋矫瘤甫 啊廉柯促.
char NetworkDir[MAX_PATH];
char MapServerConfigFileName[MAX_PATH];
if (GetPrivateProfileString("Network","path","",NetworkDir,MAX_PATH,MAP_SERVER_INI_)<=0)
{
MyLog(0,"Error!! Check Mapserver.ini's Path Set.");
return ;
}
sprintf(MapServerConfigFileName,"%s/data/MapServerConfig.ini",NetworkDir);
g_nLimitedStartTime =::GetPrivateProfileInt("Thai Limited","StartTime",22,MapServerConfigFileName);
g_nLimitedEndTime =::GetPrivateProfileInt("Thai Limited","EndTime",6,MapServerConfigFileName);
g_nLimitedAge =::GetPrivateProfileInt("Thai Limited","Age",18,MapServerConfigFileName);
::GetPrivateProfileString( "Thai Limited", "Message", "", g_szLimitedUser_Message, sizeof( g_szLimitedUser_Message ), MapServerConfigFileName );
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -