⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dragonserver2.cpp

📁 国内著名网络游戏dragon的服务端完整源码 内附完整数据库结构
💻 CPP
📖 第 1 页 / 共 2 页
字号:
#include "..\stdafx.h"
#include "DefaultHeader.h"
#include "Scrp_int.h"
#include "Scrp_Exe.h"
#include "NPC_Pattern.h"
#include "map.h"
#include "CItem.h"
#include "teambattle.h"		// 010210 YGI
#include "dungeon.h"		// 020620 YGI
#include "ArenaManager.h"
#include "UserManager.h"
// 020620 YGI
extern int MenuFunctions( t_packet *p, short int cn );


int CheckHandleByKein( t_packet *p, t_connection c[], int cn )
{
	switch (p->h.header.type)
	{
	case CMD_RESEND_ITEM:
		{
			RecvResendItem(cn);
			break;
		}						
	case CMD_RESEND_ITEM_EQUIP :	SendItemEquip( c, cn ); break;
	case CMD_RESEND_ITEM_QUICK :	SendItemQuick( c, cn );	break;
		
	case CMD_PUBLIC_NOTICE_TITLE_REQ	:	
	case CMD_RANK_TITLE_REQ				:
	case CMD_FORUM_TITLE_REQ			:
	case CMD_EVENT_TITLE_REQ			:
	case CMD_MYDIARY_TITLE_REQ			:
	case CMD_BBS_TITLE_REQ				:
	case CMD_ETC_TITLE_REQ				:	SendMessageTitle( p->h.header.type, p->u.kein.req_bbs_title.count, c, cn ); break;
		
	case CMD_RESEND_CHARLIST			:	SendCharInfomation( p->h.header.type, c, cn ); break;
	case CMD_OTHER_CH_INV				:	break;
	case CMD_DIVIDE_ITEM				:	RecvDivideItem( &p->u.kein.item_attr_pos, c, cn ); break;
	case REQ_MY_DEPOSIT_INFO			:	RecvBankInfoDeposit(p->u.kein.client_bank_deposit.money, c, cn ); break;
	case CMD_DEFRAYAL					:	RecvBankInfoDefrayal(p->u.kein.client_bank_deposit.money, c, cn ); break;
	case REQ_MY_REPAYMENT_INFO			:	SendBankRepayment( c, cn ); break;
	case CMD_CHAR_INFO_BASIC			:	RecvCharInfoBasic( &p->u.char_info_basic , c, cn ); break;
	case CMD_LEARN_SKILL				:	RecvLearnSkill( &p->u.client_learn_skill, c, cn );	break;
	case CMD_LVUP_POINT_EACH			:	RecvLvUpPointEach( p->u.kein.client_lvup_point_each.type, c, cn );	break;
	case CMD_LVDOWN_POINT_EACH			:	RecvLvDownPointEach( p->u.kein.client_lvup_point_each.type, c, cn );	break;
	case REQ_LEVELUP_POINT:	
		{
			c[cn].chrlst.IncReservedPoint(10); 
			SendLevelUpMsgAndPoint(&c[cn].chrlst); 
			break;
		}
	case CMD_LEARN_ITEM					:	RecvLearnItem( &p->u.kein.client_learn_item, c, cn ); break;
	case CMD_ITEMREPAIR_REQ				:	RecvItemRepair( &p->u.client_item_sell, c, cn ); break;
		
	case CMD_CHAR_INFO_TAC_SKILL_EXP	:	SendCharInfotac_skillEXP( c, cn ); break;
	case CMD_OPEN_STATUS_REQ			:	SendStatusOpen( c, cn ); break;
	case CMD_REQ_CHAR_INFO_PLUS			:	RecvCharInfoPlus( p->u.kein.client_char_info_plus.type, c, cn ); break;
	case CMD_SEND_BANK_INV				:	{for( int i=0; i<15; i++ ) SendBankInventory( i, c, cn ); break; }
	case CMD_DO_PARTY					:	RecvDoParty( &p->u.kein.client_do_party, c, cn ); break;
	case CMD_DELETE_PARTY				:	RecvDeleteParty( &p->u.kein.client_delete_party, c, cn ); break;
	case CMD_REQ_PARTY_MEMBER			:	break; RecvCharInfoPlus(CMD_PARTY , c, cn); break;		// 老窜 哗绊 积阿
	case CMD_PREVENTING					:	RecvPreventing( p->u.kein.client_disease.disease_num, c, cn ); break;
	case CMD_CURE_DISEASE				:	RecvCureDisease( p->u.kein.client_disease.disease_num, c, cn );break;
	case CMD_REQ_ITEM_VALUE				:	SendItemValue( p->u.kein.client_item_no.item_no, cn );	break;
	case CMD_REQ_ITEM_VALUE_SELL		:	SendItemValue_Sell( &p->u.kein.server_delete_item.item_pos, cn ); break;
	case CMD_REQ_ITEM_VALUE_REPAIR		:	SendItemValue_Repair( p->u.kein.client_item_no.item_no, cn ); break;
	case CMD_CLIENT_INN					:	RecvClientInn( p->u.kein.client_inn.type, cn ); break;
	case CMD_SERVER_PARTY:
		{
			CHARLIST* ch = CheckServerId(cn);

			if (!ch)
			{
				break;
			}

			SendPartyInfo(p->u.kein.client_delete_party.type, 
				          p->u.kein.client_delete_party.ct, 
						  c, 
						  ch->Name );
			break;
		}
		
	case CMD_SERVER_WAKE_UP				:	SendServerWeakUp( cn ); break;
	case CMD_REQ_JOIN_GAME				:	SendJoinGameWho( cn ); CheckMyMailOnStartGame( cn ); break;
	case CMD_REQ_MY_PARTY				:	SendMyPartyExist( cn ); break;
	case CMD_OPEN_ABILITY				:	SendAbilityOpen( cn ); break;
	case CMD_LEARN_ALL					:	RecvLearnAll( cn ); break;			
	case CMD_LEARN_ALL_NOT				:	RecvLearnAllNot( cn ); break;
	case CMD_REQ_AC						:	SendServerAc( cn ); break;
	case CMD_REQ_DMG					:	SendServerDmg( cn ); break;
	case CMD_SERVER_KILLMON				:	SendServerKillMon( cn ); break;
	case CMD_PARTY_ACCESS				:	RecvPartyInfoServerToServer( &p->u.kein.server_server_party_info ); break;		// loginserver俊辑 傈价罐绰促.
	case CMD_REQ_PARTY_TOGETHER			:	RecvPartyTogetherByLoginServer( p->u.kein.rep_party_together.server_id, p->u.kein.rep_party_together.party_name ); break;
	case CMD_PARTY_NO_NAME				:	RecvNoParty( p->u.kein.cmd_party_no_name.name, p->u.kein.cmd_party_no_name.server_id ); break;	//肋 给等 捞抚阑 啊瘤绊 乐阑锭... 瘤款促.
	case CMD_REQ_MAGERY					:	SendServerMagery( cn ); break;
	case CMD_PUBLIC_NOTICE_BBS_REQ		:	
	case CMD_RANK_BBS_REQ				:
	case CMD_FORUM_BBS_REQ				:
	case CMD_EVENT_BBS_REQ				:
	case CMD_MYDIARY_BBS_REQ			:
	case CMD_BBS_BBS_REQ				:
	case CMD_ETC_BBS_REQ				:	RecvBbsMessageReq( p->h.header.type, p->u.kein.req_bbs_title.count, cn ); break;// 郴侩 傈价 夸没 览翠
	case CMD_PREACH_NAME				:	SendLoginServerPreachName( &p->u.kein.server_preach_name, cn ); break;
	case CMD_LOGIN_PREACH_NAME			:	RecvAndSendPreachName( &p->u.kein.loginserver_preach_name_result ); break;
	case CMD_GOD_REGIST_OK				:	RecvGodRegistOk( p->u.kein.client_god_regist_ok.type, cn ); break;
	case CMD_GOD_REGIST_CANCEL			:	RecvGodRegistCancel( cn ); break;
	case CMD_PREACH_NAME_OK				:	SendLoginServePreachNameOk( &p->u.kein.server_preach_name, cn ); break;
	case CMD_TOOL_PASSWORD				:	RecvToolPassword( p->u.kein.tool_password.password , cn); break;
	case CMD_GET_CHARINFO_BY_KEIN		:	RecvLoginServerGetCharInfoByKein( &p->u.kein.get_char_info ); break;
	case CMD_CAN_MEMORIZE				:	RecvCanMemorize( c, cn ); break;		// 皋葛扼捞令 且 荐 乐绰瘤 魄窜
	case CMD_SEND_EAR_MESSAGE			:	RecvEarMessage( p->u.kein.send_ear_message.name, p->u.kein.send_ear_message.message, cn ); break;	//1
	case CMD_SEND_EAR_MESSAGE_OTHER		:	FindWhoEarMessageTarget( &p->u.kein.login_to_gameserver_ear_message ); break;		// 蓖加富阑 罐阑 荤恩捞 捞 霸烙 辑滚俊 粮犁窍绰瘤 魄窜
	case CMD_SEND_EAR_MESSAGE_OK		:	SendEarMessageResult( CMD_SEND_EAR_MESSAGE_OK, p->u.kein.loginserver_to_gameserver_ear_message.name, p->u.kein.loginserver_to_gameserver_ear_message.server_id); break;
	case CMD_SEND_EAR_MESSAGE_RESULT	:	SendLoginEarMessageResult( &p->u.kein.send_ear_message_result, cn ); break;		// 努扼捞攫飘俊辑 罐篮 皋矫瘤 焊辰 搬苞
	case CMD_LOGIN2GAME_EAR_MESSAGE_RESULT	:	RecvLoginToGameEarMessageResult( p->u.kein.login2game_ear_message_result.send_server_id, p->u.kein.login2game_ear_message_result.ret ); break;		// 雀脚捞 靛诞 吭促.
	case CMD_ISTHERE_CHARNAME				:	SendGameToLoginExistName( p->u.client_isthere_charname.name, cn ); break;
	case CMD_GAME2LOGIN_CHECK_NAME			:	CallClient( p->u.kein.login2game_ear_message_result.send_server_id, p->u.kein.login2game_ear_message_result.send_server_id ); break;
	case CMD_REQ_SKILL_ALL					:	SendSkillAll( cn ); break;
	case CMD_REQ_FAITH_UP					:	RecvAndSendFaithUp( p->u.kein.req_faith_up.name, p->u.kein.req_faith_up.up_point ); break;
	case CMD_DIVINE_UP						:	RecvDivineUp( cn ); break;
	case CMD_OPEN_SUPPER					:	RecvOpenSupper( cn ); break;
	case CMD_I_GET_ITEM_OF_SUPPER			:	RecvGetItemOfSupper( p->u.kein.i_get_item_of_supper.item_no, cn ); break;
	case CMD_CHANGE_MAP_CONFIRM				:	RecvChangeMapConfirm( cn ); break;
	case CMD_REQ_CHAR_INFO					:	RecvReqCharInfo( cn, p->u.debug_client_req_char_info.id );	break;
	case CMD_OH_MY_PARTY					:	RecvOhMyParty( p->u.kein.oh_my_party.my_name, p->u.kein.oh_my_party.party_name ); break;
	case CMD_REQ_PARTY_INFO					:	RecvRepPartyInfo( p->u.kein.req_party_info.party_name, cn ); break;
	case CMD_LOGIN_TO_GAME_PUBLIC_BBS:
		{	//< CSD-CN-031213
			g_pUserManager->SendPacket(p);
			break;
		}	//> CSD-CN-031213
	case CMD_START_GAME_MAIL				:	CallClient( p->u.kein.server_id.server_id, CMD_START_GAME_MAIL ); break;
	case CMD_CALL_PUBLIC_BBS				:	SendToLoginserver( cn ); break;		// 肺弊牢 辑滚肺 弊成 焊辰促.
	case CMD_CALL_PUBLIC_BBS_ONLY_ONE		:	SendLoginToClientPublicBbsOnlyOne( p ); break;
	case CMD_HUNTER_REGIST					:	SendLoginServerHunterRegist( &p->u.kein.hunter_regist, p->h.header.size, cn ); break;
	case CMD_GET_HUNTER_LIST				:	SendLoginServerReqHunterList( p->u.kein.get_hunter_list.list_id, cn ); break;
	case CMD_SEND_HUNTER_LIST				:	RecvLoginServerAndSendHunterList( &p->u.kein.login_game_hunter_list ); break;
	case CMD_KILL_HUNTER_LIST				:	RecvHunterList( p->u.kein.get_hunter_list.list_id, cn ); break;
	case CMD_KILL_HUNTER_LIST_OK			:	RecvHunterListOk( &p->u.kein.send_kill_hunter_list ); break;
	case CMD_KILL_HUNTER_LIST_CANCEL		:	CallClient( p->u.kein.server_id.server_id, CMD_KILL_HUNTER_LIST_CANCEL ); break;
	case CMD_KILLED_BY_HUNTER				:	ReturnResultByName( p->u.kein.kill_who.name, CMD_KILLED_BY_HUNTER ); break;	
	case CMD_DANGER_OF_HUNTER				:	ReturnDangerByHunter( p->u.kein.danger_of_hunter.target_id, p->u.kein.danger_of_hunter.type); break;
	case CMD_REQ_MAN_TO_MAN					:	RecvReqManToMan( p->u.kein.default_short_int, cn ); break;
	case CMD_REQ_MAN_TO_MAN_RESULT			:	SendReqManToManResult( p->u.kein.req_man_to_man_result.ret, p->u.kein.req_man_to_man_result.id ); break;
	case CMD_REQ_MAN_TO_MAN_CONSENT			:	RecvManToManConsent( p->u.kein.default_short_int, cn ); break;
	case CMD_REQ_MAN_TO_MAN_REFUSAL			:	RecvReqManToManRefusal( p->u.kein.default_short_int, cn ); break;		
	case CMD_REQ_QUEST_INDEX				:	RecvReqQuestIndex( p->u.kein.default_char, cn ); break;
	case CMD_SCRIPT_CHANGE					:	RecvChangeScriptValue( p, cn); break;
	case CMD_GUILD_EXIT_COMMAND_GLOBAL_OK	:
	case CMD_GUILD_EXIT_COMMAND_GLOBAL_NOT	:
	case CMD_VOTE_NOT						:
	case CMD_VOTE_OK						:
	case CMD_REGIST_CANDIDATE_OK			:
	case CMD_THIS_MAN_IS_CANDIDATE_OK		:	
	case CMD_THIS_MAN_IS_CANDIDATE_NOT		:
	case CMD_THEREIS_CHARNAME				:	
	case CMD_THEREIS_NO_CHARNAME			:	CallClient( p->u.kein.default_short_int, p->h.header.type ); break;
	case CMD_CHECK_VOTE_NOT					:	ReturnCheckVoteNot( p->u.kein.default_short_int, -3 ); break;		// 捞固 急芭 沁促.
	case CMD_ISSAME_MY_NATION				:	SendCheckNameForNation( p->u.kein.default_name, cn ); break;
	case CMD_IS_THIS_MAN_CANDIDATE			:	RecvAndSendLoginCheckRegistCandidate( cn ); break;
	case CMD_CHECK_VOTE						:	CheckVote( cn ); break;
	case CMD_CHECK_VOTE_OK					:	RecvAndSendCheckVote_Ok( p, cn ); break;
	case CMD_REGIST_CANDIDATE				:	RecvRegistCandidate( cn ); break;	// 辑滚肺 殿废且荐 乐绰瘤甫 焊辰促.
	case CMD_REGIST_CANDIDATE_NOT			:	RecvAndSendRegistCandidateResult( p ); break;
	case CMD_SET_VALUE_OF_VOTE				:	RecvSetValueOfVote( p ); break;		// 叼厚 单阁俊霸辑 捧钎包访 函荐 蔼阑 啊廉柯促.
	case CMD_RESET_VOTE_VALUE				:	CallClient( DB_DEMON, CMD_SET_VALUE_OF_VOTE ); break;	// 券版 促矫 佬扁
	case CMD_VOTE_GAME2LOGIN				:	SendVoteGame2Login( p, cn ); break;
	case CMD_REQ_VOTE_SCORE					:	ReqVoteScore( cn); break;
	case CMD_REP_VOTE_SCORE					:	SendClientRepVoteScore( p ); break;
	case CMD_GET_SKILL_INFO					:	RecvGetSkillInfo( p, cn ); break;
	case CMD_SEND_ALL_MSG					:	RecvClienNationMassage( p, cn ); break;	// 努扼捞攫飘俊辑 罐酒辑 肺弊牢 辑滚肺
	case CMD_RECV_ALL_MSG					:	RecvAndSendNationMassage( p ); break;	// 肺弊牢辑滚俊辑 罐酒辑 努扼捞攫飘肺
	case CMD_YOU_ARE_KING_LOG2LOG			:	RecvDemonYouAreKing( p, CMD_YOU_ARE_KING_LOG2CLIENT ); break;		// 5000锅 器飘肺 焊郴滚赴促.
	case CMD_YOU_ARE_KING_LOG2CLIENT		:	RecvLoginYouAreKing( p, CMD_YOU_ARE_KING_LOG2CLIENT ); break;		// 茫酒辑 乐栏搁 努扼捞攫飘肺 焊郴霖促.
	case CMD_YOU_ARE_NO_KING_LOG2LOG		:	RecvDemonYouAreKing( p, CMD_YOU_ARE_NO_KING_LOG2CLIENT ); break;
	case CMD_YOU_ARE_NO_KING_LOG2CLIENT		:	RecvLoginYouAreKing( p, CMD_YOU_ARE_NO_KING_LOG2CLIENT ); break;
	case CMD_GUILD_EXIT_COMMAND				:	RecvGuildExit( p, cn ); break;
	case CMD_GUILD_JOIN_SERVER				:	RecvGuildJoin( p, cn ); break;
	case CMD_GUILD_JOIN_SERVER_OK			:	
	case CMD_GUILD_JOIN_SERVER_NOT			:	RecvGuildJoinResult( p ); break;
	case CMD_GUILD_JOIN_CONFIRM_OK			:	RecvGuildJoinConfirmOk( p, cn ); break; 
	case CMD_GUILD_JOIN_CONFIRM_NOT			:	RecvGuildJoinConfirmNot( p, cn ); break; 
	case CMD_SCAN_TARGET					:	RecvScanTarget( cn ); break;
	case CMD_GUILD_ALL_MSG					:	RecvGuildAllMsg( p, cn ); break;
	case CMD_GUILD_ALL_MSG_RECV				:	RecvGuildAllMsg_FromServer( p ); break;
	case CMD_GUILD_EACH_LEVEL				:	RecvChangeGuildEachLevel( p, cn ); break;
	case CMD_GM_REGIST_GAMEMAKEMODE			:	RecvGmRegist( p, cn, 1 ); break;
	case CMD_GM_REGIST2						:	
	case CMD_GM_REGIST						:	RecvGmRegist( p, cn ); break;
	case CMD_BBS_ALL						:	DirectSend( p ); break;
	case CMD_COME_OUT_GM_FROM_LOGIN			:	DirectSend( p, p->h.header.type ); break;
	case CMD_REQ_STOP_WAR_TO_LOGIN			:	RecvReqStopWarGame2Login( p, cn ); break;
	case CMD_REQ_STOP_WAR_TO_CLIENT			:	RecvReqStopWarGame2Client( p ); break;		// 肺弊牢辑滚俊辑 罐篮 屈怕
	case CMD_REP_STOP_WAR_REFUSAL_TO_LOGIN	:	RecvRepStopWarRefusal( p ); break;		// 绒傈 夸没捞 芭例寸沁促.
	case CMD_REP_STOP_WAR_REFUSAL_TO_CLIENT : 	CallClient( p->u.kein.default_short_int, CMD_REP_STOP_WAR_REFUSAL_TO_CLIENT ); break;		// 努扼捞攫飘肺 焊郴霖促.
	case CMD_REP_STOP_WAR_ACCEPT_TO_LOGIN	:	RecvRepStopWarAccept( p, cn ); break;		// 绒傈 夸没 铰倡
	case CMD_REP_STOP_WAR_ACCEPT_TO_CLIENT	:	RecvRepStopWarGame2Client( p ); break;		// 葛滴俊霸 谎妨林磊
	case CMD_REQ_SALVATION_MONEY			:	RecvAndReqSalvation( cn ); break;			// 努扼捞攫飘俊辑 db肺
	case CMD_SALVATION_MONEY				:	RecvAndSaveSalvation( p, cn ); break;		// 努扼捞攫飘俊辑 db肺
	case CMD_DB2GAME_SALVATION				:	Game2ClinetSalvation( p ); break;
	case CMD_MSG_ALL_SALVATION_TOTAL_MONEY	:	DirectSend( p ); break;
	case CMD_SERVER_EACH_ITEM				:	RecvDB2MapItem( p ); break;
	case CMD_CHANGE_MONEY					:	RecvChangeMoney( p, cn ); break;
	case CMD_EAT_CHOCOLATE_OK				:	RecvEatChocolateOk( p ); break;
	case CMD_PAY_RUMOR						:	RecvPayRumor(cn); break;
	case CMD_PAY_RUMOR_OK					:	RecvAndSendRumor( p ); break;
	case CMD_OPENSCHOOL_DATA_OK				:	RecvOpenSchoolResult( p ); break;
	case CMD_GUILD_EXIT_COMMAND_GLOBAL		:	RecvGuildExitGlobal( p, cn ); break;
	case CMD_GUILD_EXIT_COMMAND_GLOBAL_LET	:	RecvGuildExitGlobalFromDB( p ); break;
	case CMD_EAT_CANDY_OK:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -