📄 dragonloginserver.cpp
字号:
{
break;
}// 1: 抗傈 某腐磐 0: 货肺款 某腐磐
}
else
{
break;
}
if( !CheckIsRealName( connections[cn].id, packet->u.client_connect_info.name ) )
{
break;
}
// 010301 khs probide to hacking..
memset(c[cn].name, 0, NM_LENGTH);
strcpy(c[cn].name, packet->u.client_connect_info.name);
StartMap = packet->u.client_connect_info.startmap;
StartPosition = packet->u.client_connect_info.startposition;
if( StartMap < 0 || StartMap > 1 ) StartMap = 0;
if( StartPosition == 99 )
{
}
else if( StartPosition < 1 || StartPosition > 20 )
{
StartPosition = 1;
}
c[cn].chrlst.startmap = StartMap;
c[cn].chrlst.startposition = StartPosition;
memset(packet, 0, sizeof(t_packet));
int ret = GetCharDB_SQL(c, cn);
if( ret )
{
CheckStartMap( c, cn, StartPosition ); // 1004 YGI
ret = GetCharGameDB_SQL(c,cn);
}
if( c[cn].chrlst.Hp == 0 )
{
c[cn].chrlst.bAlive = DEAD_;
c[cn].chrlst.Condition = CON_DEATH;
c[cn].chrlst.viewtype = VIEWTYPE_GHOST_;
}
else
{
c[cn].chrlst.bAlive = ALIVE_;
c[cn].chrlst.Condition = CON_NORMAL;
c[cn].chrlst.viewtype = VIEWTYPE_NORMAL_;
}
if( c[cn].chrlst.startposition != 99 ) // 盔贰狼 困摹俊 甸绢埃促.
{
strcpy( c[cn].mapname, StartMapPosition[ StartMap][ StartPosition ] );
strcpy( c[cn].chrlst.MapName, StartMapPosition[ StartMap][ StartPosition ] );
}
if(ret == 1)
{
//< CSD-030324
extern void CheckNewGuildCode( CHARLIST *ch );
CheckNewGuildCode( &c[cn].chrlst );
//> CSD-030324
packet->h.header.type = CMD_USER_DB;
{
PutPacketCharDB( c, cn, packet );
}
packet->h.header.size = sizeof(t_server_user_db_data);
if(!QueuePacket(c, cn, packet, 1)) break;
}
else // Invalid DB
{
::MyLog(1, "Invalid DB [%s]", c[cn].name);
packet->h.header.type = CMD_INVALID_DB;
packet->h.header.size = 0;
QueuePacket(c, cn, packet, 1);
break;
}
break;
}
case CMD_CHR_ITEM_INFO_0 :
{
//------------------------------------------------------------
// Send Char Binary Data
//------------------------------------------------------------
get_BinaryData_from_Chr_Info( (UCHAR *)c[cn].chrlst.Ws,
(UCHAR *)c[cn].chrlst.Ps,
(UCHAR *)c[cn].chrlst.Skill,
(UCHAR *)c[cn].chrlst.skillexp,
(UCHAR *)c[cn].chrlst.tac_skillEXP,
(UCHAR *)var[c[cn].chrlst.server_id],
(UCHAR *)c[cn].chrlst.inv,
(UCHAR *)c[cn].chrlst.equip,
(UCHAR *)c[cn].chrlst.quick,
(UCHAR *)c[cn].chrlst.party,
(UCHAR *)c[cn].chrlst.relation,
(UCHAR *)c[cn].chrlst.employment,
(UCHAR *)c[cn].chrlst.Item,
c[cn].id, c[cn].name ) ;
// PutEventItem( 1, &c[cn] ); // 捞亥飘侩 酒捞袍 持绢 林扁 // BBD 040308 Map辑滚啊 林扁肺 沁澜
SendItemQuick( c, cn );
// 付过阑 硅快瘤 臼绊 葛电 付过阑 荤侩窍妨搁 捞镑俊辑 Ws/Ps甫 Setting秦林搁 等促.
for( int i = 0 ; i < 1000 ; i ++)
{
if( c[cn].chrlst.Item[i] == 0) break;
}
c[cn].chrlst.ItemMax = i;
SendLearnedItem( c, cn ); // 0730 YGI
break;
}
case CMD_CHR_ITEM_INFO_1 : SendItemEquip( c, cn ); break;
case CMD_CHR_ITEM_INFO_2 : SendItemInventory( packet->u.client_item_inv.count, c, cn ); break;
case CMD_CHAR_INFO_MAGIC : SendCharInfoMagic( c, cn ); break;
case CMD_CHAR_INFO_SKILL :
{
SendCharInfoSkill( c, cn );
::MyLog(0, "Send [%s]Info to [%s]", c[cn].name, c[cn].id);
}break;
case CMD_CHAR_INFO_TAC_SKILL_EXP : SendCharInfotac_skillEXP( c, cn ); break;
case CMD_CONNECT_INFO1 :
{
char *map_name = 0;
int ret = 0;
if( c[cn].chrlst.startposition == 99 )
{
ret = GetMapName_SQL( c, cn); // 001126 KHS
if( ret == 1 ) map_name = c[cn].mapname;
}
else
{
map_name = StartMapPosition[ c[cn].chrlst.startmap][c[cn].chrlst.startposition];
}
if( map_name )
{
ret = 0;
int port = MapPort( map_name );
if( port )
{
ret = 1;
packet->u.kein.server_connect_info_kein.data1.port = port;
ret += CheckEventObject( map_name, &packet->u.kein.server_connect_info_kein.u.data3);
ret += CheckEventSound( map_name, &packet->u.kein.server_connect_info_kein.u.data3);
}
}
if( ret )
{
//-----------------------------------------------------------------
//-----------------------------------------------------------------
packet->h.header.type = CMD_CONNECT_INFO;
packet->h.header.size = sizeof(t_server_connect_info);
if( ret == 4 ) // object + sound
{
packet->h.header.size += sizeof(k_event_object_sound);
}
else if( ret == 3 ) // sound
{
packet->h.header.size += sizeof(k_event_sound);
int sound_no = packet->u.kein.server_connect_info_kein.u.data3.sound_no;
packet->u.kein.server_connect_info_kein.u.data4.sound_no = sound_no;
}
else if( ret == 2 ) // object
{
packet->h.header.size += sizeof(k_event_object);
}
packet->u.server_connect_info.startposition = c[cn].chrlst.startposition;
if(!QueuePacket(c, cn, packet, 1))
{
break;
}
//-----------------------------------------------------------------
c[cn].state = CONNECT_JOIN;
}
else // Invalid DB
{
::MyLog(0, "Invalid User DB [%s]", c[cn].name);
packet->h.header.type = CMD_INVALID_DB;
packet->h.header.size = 0;
QueuePacket(c, cn, packet, 1);
break;
}
break;
}
case CMD_CREATE_CHAR :
{
int ret = CreateChar_SQL(c, cn, packet);
if(ret == 1)
{
packet->h.header.type = CMD_ACCEPT_CREATE;
packet->h.header.size = 1;
packet->u.data[0]= 0 ;
QueuePacket(c, cn, packet, 1);
::MyLog( 0, "%s (ID:%s) is Generated !", c[cn].id, c[cn].chrlst.Name );
break;
}
else
{
int is_delete = 1;
switch( ret )
{
case -100 : ::MyLog( 0, "Fail:Character Generation ( Already character %s, ID:%s :%d)", packet->u.client_create_char.name, c[cn].id, ret );
RecvHackingUser( c[cn].id, packet->u.client_create_char.name, 20009, " ", "Not his Char" );
is_delete = 0; // 瘤快瘤 臼绰促.
break;
case -30 : ::MyLog( 0, "Fail : Try to make Character but NO ID in chr_log_info ( %s, ID:%s )", packet->u.client_create_char.name, c[cn].id );
break;
default : ::MyLog( 0, "Fail : Character Generation( %s, ID:%s :%d)", packet->u.client_create_char.name, c[cn].id, ret );
break;
}
if(is_delete)
{
delete_char_create_fail( packet->u.client_create_char.name );
}
packet->h.header.type = CMD_INVALID_DB;
packet->h.header.size = 1;
packet->u.data[0]= 0 ;
QueuePacket(c, cn, packet, 1);
break;
}
break;
}
case CMD_DELETE_CHAR :
{
const char* szName = packet->u.client_delete_char.szName;
int ret = DeleteChar_SQL( c[cn].id, szName ,packet->u.client_delete_char.szSecretKeyCode );
if(ret == 1)
{
MyLog( LOG_NORMAL, "Success : Character Deleted (%s, ID:%s)", szName, c[cn].id );
RecvHackingUser( c[cn].id, szName, HACKING_DELETE_CHAR_NORMAL_, c[cn].ip_address, "Character Deleted !! Normally.." );
packet->h.header.type = CMD_ACCEPT_DELETE;
packet->h.header.size = 1;
packet->u.data[0]= 0 ;
QueuePacket(c, cn, packet, 1);
break;
}
else
{
MyLog( LOG_NORMAL, "Delete Fail !");
packet->h.header.type = CMD_INVALID_DB;
packet->h.header.size = 1;
packet->u.data[0]= 0 ;
QueuePacket(c, cn, packet, 1);
break;
}
break;
}
case CMD_ISTHERE_CHARNAME : RecvIsThereCharName( cn, packet->u.client_isthere_charname.name );
break;
case CMD_CHECK_BETA_TEST : CheckBetaIdTest( cn, packet->u.kein.beta_check_id.id ); break;
case CMD_SPECIAL_ITEM :
RecvUpdateSpecial( &(packet->u.server_special_item) ); break;
case CMD_UPDATE_CHAR_DB:
{
int iRet = RecvUpdateCharDB( &(packet->u.update_char_db) );
if(iRet != 1)
{
MyLog(0,"RecvUpdateCharDB Failed");
}
}break;
case CMD_UPDATE_BINARY_DATA0 :
{
int iRet = RecvUpdateBinaryData( &(packet->u.server_update_binary_data0) );
if(iRet != 1)
{
MyLog(0,"RecvUpdateBinaryData Failed");
}
}break;
case CMD_UPDATE_BINARY_DATA1 :
{
int iRet = RecvUpdateBinaryData1( &(packet->u.server_update_binary_data1) );
if(iRet != 1)
{
MyLog(0,"RecvUpdateBinaryData1 Failed");
}
}break;
case CMD_UPDATE_SCRIPT_DATA :
{
int iRet = RecvUpdateScriptData( &(packet->u.server_update_script_data) );
if(iRet != 1)
{
MyLog(0,"RecvUpdateScriptData Failed");
}
}break;
case CMD_UPDATE_INV_DATA :
{
int iRet = RecvUpdateInvData( &(packet->u.server_update_inv_data) );
if(iRet != 1)
{
MyLog(0,"RecvUpdateInvData Failed");
}
}break;
case CMD_UPDATE_ITEM_DATA :
{
int iRet = RecvUpdateItemData( &(packet->u.server_update_item_data ) );
if(iRet != 1)
{
MyLog(0,"RecvUpdateItemData Failed");
}
}break;
case CMD_UPDATE_BANKITEM_DATA :
{
int iRet = RecvUpdateBankItemData( c, cn, &(packet->u.server_update_bankitem_data));
if(iRet != 1)
{
MyLog(0,"RecvUpdateBankItemData Failed");
}
}break;
case CMD_REQ_DELETE_USERID :
onepass.DeleteUsedID_SQL_ForPay( packet->u.gs_req_delete_userid.mapname, packet->u.gs_req_delete_userid.id, 0 );
break;
case CMD_REQ_INSERT_USERID :
{
if(!::CheckIsRealName(packet->u.gs_req_insert_userid.id, packet->u.gs_req_insert_userid.name ) )
{
break;
}
t_packet tp;
gs_req_insert_userid* pGRIU = &packet->u.gs_req_insert_userid;
if( ::UpdateLogintablebyChangeMap( pGRIU->id, pGRIU->mapname )) // LoginTable俊 绝澜.. 溜, 甸绢哎荐 乐澜..
{
tp.h.header.type = CMD_JOINABLE;
tp.u.ls_joinable.server_id = packet->u.gs_req_insert_userid.server_id;
tp.h.header.size = sizeof( t_ls_joinable );
}
else
{
tp.h.header.type = CMD_UPDATING;
tp.u.ls_updating.server_id = packet->u.gs_req_insert_userid.server_id;
tp.h.header.size = sizeof( t_ls_updating );
}
::QueuePacket( c, cn, &tp, 1 );
}break;
///////////// network2.h阑 困秦.. 0224 YGI ///////////////
case CMD_CREATE_ABILITY : SendCreateAbility( cn ); break;
case CMD_THROW_DICE : SendThrowDice( packet->u.kein.client_throw_dice.type, cn ); break;
case CMD_HOW_MANY_IN_MAP : UpdateTotalMapConnections( packet->u.how_many_in_map.map, packet->u.how_many_in_map.how );
break;
case CMD_UPDATE_VERY_IMPORTANT_STATUS : RecvUpdateCharacterVeryImportantStatus( &(packet->u.update_very_important_status) );
break;
case CMD_UPDATE_VERY_IMPORTANT_TACTICS : RecvUpdateTacticSkillExpData( &(packet->u.update_very_important_tactics ));
break;
case CMD_ITEM_DURATION_CHANGE :
case CMD_TACTICS_PARRYING_EXP :
case CMD_REQ_PARTY_MEMBER :
case CMD_LEVELUP_POINT :
case CMD_DELETE_ITEM :
MyLog( LOG_NORMAL, "No Useful Protocol...%d from %d", packet->h.header.type, cn) ;
break;
case CMD_SEALSTONEFROMKING :
RecvSealStoneFromKing( packet->u.sealstone_fromking.nation );
break;
case CMD_SEALSTONE_STATUS :
RecvSealStoneStatus( packet );
break;
case CMD_NATION2NATION_RELATION :
RecvNation2NationRelation( cn, &(packet->u.nation2nation_relation) );
break;
case CMD_HACKING_USER :
{
t_hacking_user *tp = &(packet->u.hacking_user );
RecvHackingUser( tp->id, tp->name, tp->type, tp->ip, tp->cause );
}
break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -