📄 dragonloginserver2.cpp
字号:
#include "StdAfx.h"
#include "MAIN.H"
#include "Scrp_exe.H"
#include "Citem.h"
#include "dragonloginserver2.h"
#include "map.h"
#include <direct.h> // 021008 YGI
#include "ServerTable.h"
#include "MailMgr.h"
/////////////////////////////////////////////////////////////////////////////////////////
char *public_bbs;
extern NPCLev_to_Exp NPC_Lev_Ref[]; // CSD-030306
t_mapinfo MapInfo[ MAX_MAP_];
/////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////
int CheckHandleByKein( t_packet *p, t_connection c[], int cn )
{
switch( p->h.header.type )
{
case CMD_LOGIN_GET_BOX_ITEM : RecvGetBoxItem( p->u.kein.req_login_server_box_open.box_id, p->u.kein.req_login_server_box_open.server_id, cn, c ); break;
case CMD_PUT_BOX_ITEM : ReSendBoxItemEach( &p->u.kein.login_put_box_item ); break;
case CMD_LOGIN_PREACH_NAME : RecvPreachName( &p->u.kein.loginserver_preach_name, cn, c ); break;
case CMD_LOGIN_PREACH_NAME_OK : RecvPreachNameOk( +10, &p->u.kein.loginserver_preach_name ); break;
case CMD_LOGIN_PREACH_NAME_CANCEL : RecvPreachNameOk( -10, &p->u.kein.loginserver_preach_name ); break;
case CMD_LOGIN_EVANGELIST_CREATE : UpdateEvaName( p->u.kein.login_sql_evangelist_create.my_name , p->u.kein.login_sql_evangelist_create.eva_name ); break;
case CMD_LOGIN_EVANGELIST_DELETE : UpdateEvaName( p->u.kein.login_sql_evangelist_delete.my_name, "" ); break;
case CMD_CHECK_NEW_CHAR : SendNewCharResult( p->u.kein.check_new_char.name, cn ); break;
case CMD_GET_GOD_TABLE : SendGodTable( cn ); break;
case CMD_CHAR_UPDATE_DATA_BY_KEIN : RecvUpdateCharByKein( &p->u.kein.char_update_data ); break;
case CMD_GET_CHARINFO_BY_KEIN : SendGetCharInfoByKein( &p->u.kein.req_chr_info_etc, cn ); break;
case CMD_SEND_EAR_MESSAGE_OTHER : SendEachGameServerForEarMessage( &p->u.kein.login_send_ear_message, cn ); break; // 庇加富阑 困秦 阿 霸烙 辑滚肺 傈价 秦夯促.
case CMD_SEND_EAR_MESSAGE_OK : RecvEarMessageOk( &p->u.kein.send_ear_message_ok_to_login ); break;
case CMD_SEND_EAR_MESSAGE_RESULT : RecvEarMessageResult( &p->u.kein.send_ear_message_result ); break;
case CMD_GAME2LOGIN_CHECK_NAME : RecvCheckName( p->u.kein.loginserver_to_gameserver_ear_message.name, p->u.kein.loginserver_to_gameserver_ear_message.server_id, cn ); break; // 备炼眉 喊妨靖
case CMD_GAME2LOGIN_MOVING_ITEM : CheckMoveItem( &p->u.kein.moving_item ); break;
case CMD_CHANGE_MAP_DATA1 :
case CMD_CHANGE_MAP_DATA2 :
case CMD_CHANGE_MAP_DATA3 :
case CMD_CHANGE_MAP_DATA4 :
case CMD_CHANGE_MAP_DATA5 :
case CMD_CHANGE_MAP_DATA6 :
case CMD_CHANGE_MAP_DATA7 :
case CMD_CHANGE_MAP_DATA8 :
case CMD_CHANGE_MAP_DATA9 : RecvChangeMapData1( p ); break;
case CMD_ACCESS_JOIN_KEIN : RecvChangeLogintableByChangemap( p->u.gs_req_insert_userid.id, p->u.gs_req_insert_userid.mapname, p->u.gs_req_insert_userid.server_id, cn ); break;
case CMD_IF_DOUBLE_BOX_THEN_DELETE : RecvDoubleBoxFind( p->u.kein.game2login_recall_box_item.box_id,p->u.kein.game2login_recall_box_item.server_id, cn ); break;
case CMD_REQ_FAITH_UP : RecvFaithUp( p->u.kein.req_faith_up.name, p->u.kein.req_faith_up.up_point ); break;
case CMD_CALL_PUBLIC_BBS : SendPublicBbsEach( p->u.kein.server_id.server_id, cn ); break;
case CMD_HUNTER_REGIST : RecvHunterRegist( &p->u.kein.hunter_regist2 ); break;
case CMD_GET_HUNTER_LIST : RecvGetHunterList( p->u.kein.game_login_hunter_list.list_id, p->u.kein.game_login_hunter_list.server_id, cn); break;
case CMD_KILL_HUNTER_LIST : RecvKillHunter( p->u.kein.kill_hunter_list_login.list_id, p->u.kein.kill_hunter_list_login.hunter_name, p->u.kein.game_login_hunter_list.server_id, cn );break;
case CMD_DELETE_BOX_ITEM : DeleteBox( p->u.kein.default_dword ); break;
case CMD_RESET_JOB : RecvResetJob( p, cn ); break;
case CMD_SELECT_NATION : RecvSelectNation( p, cn ); break;
case CMD_EXIST_NAME : RecvExistName( p, cn ); break;
case CMD_ISSAME_MY_NATION : RecvExistNameForNation( p, cn ); break;
case CMD_REGIST_CANDIDATE : RecvRegistCandidate( p, cn ); break;
case CMD_IS_THIS_MAN_CANDIDATE : isThisManCandidate( p, cn ); break; // 饶焊 殿废啊瓷茄 某腐磐牢瘤 酒囱瘤
case CMD_CHECK_VOTE : CheckVote( p, cn ); break;
case CMD_SET_VALUE_OF_VOTE : GetVoteValue( cn ); break;
case CMD_VOTE_GAME2LOGIN : CheckAndUpdateVote( p, cn ); break;
case CMD_REQ_VOTE_SCORE : RecvVoteScore( p, cn ); break;
case CMD_SEND_ALL_MSG : RecvNationMsg( p, cn ); break;
case CMD_YOU_ARE_KING_LOG2LOG : SendYouAreKingLog2Client( p->u.kein.default_name, CMD_YOU_ARE_KING_LOG2CLIENT ); break;
case CMD_YOU_ARE_NO_KING_LOG2LOG : SendYouAreKingLog2Client( p->u.kein.default_name, CMD_YOU_ARE_NO_KING_LOG2CLIENT ); break;
case CMD_GUILD_JOIN_SERVER : CheckGuildJoin( p, cn ); break;
case CMD_GUILD_ALL_MSG : SendGuildAllMsg( p, cn ); break;
case CMD_GM_REGIST : RecvGmRegist( p ); break;
case CMD_BBS_ALL : RecvReturnGameServer( p ); break; // 绊措肺 霸烙辑滚肺 葛滴 倒妨拎滚赴促.
case CMD_REP_STOP_WAR_REFUSAL_TO_LOGIN : RecvRepStopWarRefusal( p ); break; // 绒傈 夸没 芭例
case CMD_REQ_STOP_WAR_TO_LOGIN : RecvReqStopWar( p, cn ); break; // 绒傈 夸没
case CMD_REP_STOP_WAR_ACCEPT_TO_LOGIN : RecvRepStopWarAccept( p ); break;
case CMD_REQ_SALVATION_MONEY : RecvReqSalvationMoney( p, cn ); break; // 扁何陛 夸没
case CMD_SALVATION_MONEY : RecvInsertSalvation(p, cn ); break; // 扁何茄吧 历沥
case CMD_EAT_CHOCOLATE : RecvEatChocolate( p, cn ); break;
case CMD_PAY_RUMOR : RecvCheckChocolate( p, cn ); break;
case CMD_OPENSCHOOL_DATA : RecvSaveOpenSchoolEvent( p, cn ); break;
case CMD_GUILD_EXIT_COMMAND_GLOBAL : RecvExitGiild( p, cn ); break;
case CMD_EAT_CANDY : RecvCheckCandy( p ); break;
case CMD_UPDATE_LADDER_SCORE : RecvUpdateLadderScore( p ); break;
case CMD_REQ_RANK_LADDER : RecvReqRankLadder( p, cn ); break;
case CMD_REQ_SEARCH_RANK_LADDER : RecvSearchRankLadder( p, cn ); break;
case CMD_SAVE_NATION_INFO : SaveNationInfo_SQL( &p->u.kein.save_nation_info ); break;
// 抛胶飘 侩 菩哦..
case CMD_SAVE_GUILD_MARK_IMAGE : UpdateGuildMark( 1, p->h.header.size-2, (BYTE *)p->u.kein.send_db_direct_map.data ); break;
// 角力 捞固瘤 历厘 菩哦
case CMD_REGIST_GUILD_MARK : RecvRegistGuildMark( p, cn ); break;
case CMD_REGIST_GUILD_IMSI : RecvRegistGuild_DB( p, cn ); break;
case CMD_REQ_GUILD_EXPLAIN : RecvReqGuildExplain( p, cn ); break;
case CMD_REGIST_GUILD : RecvRegistGuild( p, cn ); break;
case CMD_REQ_GUILD_IMAGE : SendGuildImage( p, cn ); break;
case CMD_SAVE_GUILD_MEMBER_LIST : RecvSaveGuildMemberList( p ); break;
case CMD_UPDATE_GUILD_MAIL_ID : RecvUpdateGuildMailId( p ); break;
case CMD_GUILD_MASTER_AND_SUBMASTER : RecvGuildMasterAndSubMaster(p, cn ); break;
case CMD_REGIST_GUILD_CHECK : RecvRegistGuildCheck( p, cn ); break;
case CMD_CHECK_SUB_MASTER : RecvCheckSubMaster( p, cn ); break;
case CMD_CHANGE_GUILD_DEGREE : RecvChangeGuildDegree( p, cn ); break;
case CMD_DELETE_GUILD : RecvChangeDeleteGuild( p ); break;
case CMD_CHANGE_COLOR : RecvChangeColor( p ); break;
case CMD_CHECK_SALVATION_NAME : CheckSalvationName( p, cn ); break;
case CMD_REFRESH_SALVATION_NAME : RecvDeleteSalvation( ); break;
case CMD_GET_NAME_GUILD_MEMBER_LIST : RecvGetNameOfGuildMemberList( p, cn ); break;
case CMD_GET_GUILD_NOTICE : RecvGetGuildNotice( p, cn ); break;
case CMD_SEND_GUILD_NOTICE : RecvRegistGuildNotice( p, cn );break;
case CMD_REGIST_FRIEND : RecvRegistFriend( p, cn );break;
case CMD_GET_FRIEND : RecvGetFriend( p, cn ); break;
case CMD_SERVER_EXIT_GAME : RecvLogout( p ); break;
case CMD_DELETE_FRIEND : DeleteFriend( p, cn ); break;
case CMD_CHECK_GUILD_NAME : RecvCheckGuildName( p, cn ); break;
case CMD_CHECK_GUILD_OTHER_CHARACTER : RecvCheckGuildOthercharacter( p, cn ); break;
case CMD_ADD_EVENT_ITEM : RecvAddEventItem( p, cn ); break;
case CMD_GET_GUILD_ITEM_FIRST : RecvGetGuildItemFirst( p, cn ); break; // 辨靛 酒捞袍 格废
case CMD_GET_GUILD_ITEM : RecvGetGuildItem( p, cn ); break; // 辨靛 酒捞袍 格废 啊廉坷扁
case CMD_PUT_GUILD_ITEM : RecvPutGuildItem( p ); break;
case CMD_GET_GUILD_ITEM_MAP : RecvGetGuildItemMap( p, cn ); break; // 角力 酒捞袍阑 啊廉柯促.
case CMD_GET_GUILD_BOX_MONEY : RecvGetGuildBoxMoney( p, cn ); break;
case CMD_CHECK_GUILD_BOX_MONEY : RecvCheckGuildBoxMoney( p, cn ); break;
case CMD_ADD_GUILD_BOX_MONEY : RecvUpdateGuildBoxMoney(); break;
case CMD_GET_GUILD_ITEM_COUNT : RecvGetGuildItemCount( p, cn ); break;
case CMD_CHANGE_GUILD_MASTER : RecvChangeGuildMaster( p, cn ); break;
case CMD_CHANGE_GUILD_MASTER_SUB : RecvChangeGuildMasterBySubMaster(p, cn ); break;
case CMD_REGIST_SUB_GUILD_MASTER : RecvRegistSubMaster( p, cn ); break;
case CMD_GUILD_HOUSE_INFO : RecvGuildHouseInfo( p, cn ); break;
case CMD_CHANGE_GUILDHOUSE_INFO : RecvChangeGuildHouseInfo( p, cn ); break;
case CMD_CHECK_GUILD_HOUSE : RecvCheckGuildHouse(); break; // 窍风俊 茄锅
//021030 YGI
case CMD_SAVE_AMOUNT_EVENT_NPC_ITEM : RecvSaveAmountEventNpcItem( p ); break;
//021107 YGI
case CMD_CHECK_EVENT_SCRIPT_ITEM : RecvCheckEventScriptItem( p, cn ); break;
case CMD_CHECK_EVENT_MOVE_MAP : RecvCheckEventMoveMap( p, cn ); break;
case CMD_SAVE_EVENT_MAPMOVE_NOW : RecvSaveEventMapMoveNow( p, cn ); break;
case CMD_GET_TREASURE_MAP_DETAIL_DB:
{ // 040105 YGI
RecvGetTreasureMapAttr( p, cn );
break;
}
case CMD_SERVER_KILLPC: break;
break;
default :
{
return(-31);
}
}
return 1;
}
/////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////
void RecvGetBoxItem( DWORD box_id, short int server_id, short int gameserver_id, t_connection c[] )
{
t_packet packet = {0, };
packet.h.header.type = CMD_LOGIN_GET_BOX_ITEM ;
{
packet.u.kein.login_server_box_open.server_id = server_id;
for( int i=0; i<MAX_BOX_ITEM; i++ )
{
int ret = GetBoxItem_SQL( box_id, i, &packet.u.kein.login_server_box_open.box_item[i] ); // 蔼 啊瘤败坷 角菩甫 秦档 傈价秦拎具 茄促.
}
packet.u.kein.login_server_box_open.box_id= box_id;
//AccessBoxData( box_id );
}
packet.h.header.size = sizeof( k_login_server_box_open );
QueuePacket( c, gameserver_id, &packet, 1 );
}
void RecvDoubleBoxFind( DWORD box_id, short int server_id, short int gameserver_id )
{
t_packet packet;
packet.h.header.type = CMD_IF_DOUBLE_BOX_THEN_DELETE ; // 度鞍篮 冠胶啊 乐绰 版快 窍唱甫 瘤况滚赴促.
packet.u.kein.game2login_recall_box_item.box_id= box_id;
packet.u.kein.game2login_recall_box_item.server_id= server_id;
packet.h.header.size = sizeof( k_game2login_recall_box_item );
g_pServerTable->BroadCastToEveryServer( (char *)&packet, (sizeof(t_header)+packet.h.header.size ), SERVER_TYPE_MAP );
}
void RecvPreachName( k_loginserver_preach_name *data, short int gameserver_id, t_connection c[] )
{
int ret;
t_packet packet = {0, };
if( CheckName_SQL( data->name ) )
{
int believe, faith;
ret = GetBelieveAndFaith_SQL( believe, faith, data->name );
if( ret )
{
if( believe == data->believe_god ) packet.u.kein.loginserver_preach_name_result.result = 1; // 己傍
else packet.u.kein.loginserver_preach_name_result.result = 3; // 弊 荤恩篮 弊 脚傈俊 殿废登绢 乐瘤 臼促.
}
else packet.u.kein.loginserver_preach_name_result.result = 4; // 孽府巩捞 角青捞 救 等惑怕
}
else
packet.u.kein.loginserver_preach_name_result.result = 2; // 弊繁 荤恩 绝促.
packet.h.header.type = CMD_LOGIN_PREACH_NAME ;
{
packet.u.kein.loginserver_preach_name_result.server_id= data->server_id;
// packet.u.kein.loginserver_preach_name_result.result= data->server_id;
packet.u.kein.loginserver_preach_name_result.believe_god= data->believe_god;
sprintf( packet.u.kein.loginserver_preach_name_result.name ,data->name );
}
packet.h.header.size = sizeof( k_loginserver_preach_name_result);
QueuePacket( c, gameserver_id, &packet, 1 );
}
void RecvPreachNameOk( int plus, k_loginserver_preach_name *data ) // 傈档茄 荤恩 脚居缴 棵妨林扁
{
int ret;
int faith, believe;
ret = GetBelieveAndFaith_SQL( believe, faith, data->name );
if( ret )
{
if( believe == data->believe_god )
{
faith += plus; // 歹秦林绰 扁夯 荐摹
if( faith > 1000 ) faith = 1000;
if( faith < 0 ) faith = 0 ;
UpdateFaith_SQL( (short int )faith, data->name );
}
}
return;
}
void SendNewCharResult( char *name, short int cn )
{
int is_new;
int ret;
ret = GetCharNew( is_new, name );
t_packet packet;
if( is_new || ret == 0) // 1篮 备 某腐磐, 0篮 货肺款 某腐磐
packet.h.header.type = CMD_CHECK_NEW_CHAR_NOT;
else
packet.h.header.type = CMD_CHECK_NEW_CHAR_OK;
packet.h.header.size = 0;
QueuePacket( connections, cn, &packet, 1 );
}
void SendGodTable( short int cn )
{
t_packet packet;
packet.h.header.type = CMD_GET_GOD_TABLE ;
packet.h.header.size = sizeof( k_get_god_table );
{
for( int i=0; i<MAX_GOD; i++ )
{
int ret;
ret = GetGodMeetingTime( packet.u.kein.get_god_table.day,
packet.u.kein.get_god_table.month,
packet.u.kein.get_god_table.year, i );
if( ret ) QueuePacket( connections, cn, &packet, 1 );
}
}
}
void RecvUpdateCharByKein( k_char_update_data *p )
{
UpdateCharStatusByKein( p );
}
void SendGetCharInfoByKein( k_req_chr_info_etc *p, short int cn )
{
k_get_char_info t;
GetCharDataStatusByKein( &t, p->name );
t_packet packet;
packet.h.header.type = CMD_GET_CHARINFO_BY_KEIN;
{
strcpy( packet.u.kein.get_char_info.name, p->name ); // 030923 HK YGI
packet.u.kein.get_char_info.server_id = p->server_id;
packet.u.kein.get_char_info.believe_god = t.believe_god;
packet.u.kein.get_char_info.faith = t.faith;
packet.u.kein.get_char_info.god_cast_level = t.god_cast_level;
}
packet.h.header.size = sizeof( k_get_char_info );
QueuePacket( connections, cn, &packet, 1 );
}
void SendEachGameServerForEarMessage( k_login_send_ear_message *p, short int game_server )
{
if( !CheckName_SQL( p->recv_name ) ) return; // 弊繁 仇 粮犁窍瘤 臼澜.
t_packet packet;
packet.h.header.type = CMD_SEND_EAR_MESSAGE_OTHER;
{
packet.u.kein.login_to_gameserver_ear_message.server_id = p->server_id;
packet.u.kein.login_to_gameserver_ear_message.nation = p->nation;
strcpy( packet.u.kein.login_to_gameserver_ear_message.recv_name, p->recv_name );
strcpy( packet.u.kein.login_to_gameserver_ear_message.send_name, p->send_name );
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -