📄 chat.cpp
字号:
p.h.header.size = sizeof( t_chat_set ) - 21 + len;
QueuePacket( &p, 1 );
break;
}
case CHATTYPE_WHISPER :
{
if( name == NULL )
{
len = 0;
}
else
{
len = strlen( name );
if( len > 20 )
{
AddCurrentStatusMessage( 255,0,0, lan->OutputMessage(5,57), name ); //lsw
Lc_ChatType = CHATTYPE_NORMAL;
return;
}
}
char *t = strtok( name, " \t\n" );
if( t == NULL )
temp = NULL;
else
temp = name;
if( chattype == CHATTYPE_WHISPER && temp != NULL )
{
strcpy( Lc_TempChatName, temp );
}
p.h.header.type = CMD_CHAT_SET;
p.u.chat_set.chattype = chattype;
if( temp == NULL )
{
p.u.chat_set.chatname[0] = 0;
len = 0;
}
else
{
strcpy( p.u.chat_set.chatname, temp );
len = strlen( temp );
}
p.h.header.size = sizeof( t_chat_set ) - 21 + len;
QueuePacket( &p, 1 );
break;
}
}
}
void RecvChatSetResult( t_chat_set_result *p )
{
switch( p->result )
{
case 0 : AddCurrentStatusMessage( 255,0,0, lan->OutputMessage(5,91), Lc_TempChatName ); Lc_ChatType = CHATTYPE_NORMAL; break; //010216 lsw
case 1 : AddCurrentStatusMessage( 255,0,255, lan->OutputMessage(5,92), Lc_TempChatName ); Lc_ChatType = CHATTYPE_WHISPER; break;
case 2 : AddCurrentStatusMessage( 255,0,255, lan->OutputMessage(5,93) ); Lc_ChatType = CHATTYPE_NORMAL; break;
case 3 : AddCurrentStatusMessage( 255,0,255, lan->OutputMessage(5,93) ); Lc_ChatType = CHATTYPE_NORMAL; break;
case 10 : AddCurrentStatusMessage( 255,0,210, lan->OutputMessage(5,94) ); Lc_ChatType = CHATTYPE_PARTY; break;
case 11 : AddCurrentStatusMessage( 255,0,150, lan->OutputMessage(5,95) ); Lc_ChatType = CHATTYPE_NORMAL; break;
case 20 : AddCurrentStatusMessage( 100,40,150, lan->OutputMessage(5,96) ); Lc_ChatType = CHATTYPE_NORMAL; break;
case 21 : AddCurrentStatusMessage( 100,40,210, lan->OutputMessage(5,97) ); Lc_ChatType = CHATTYPE_GUILD; break;//010216 lsw
}
}
// 001127 KHS
//010928 lsw
extern Spr *GetSprOfMenu( int type, int nImageNumber );
Spr *chatimage[3*10];
void LoadChatImage()
{
for( int i = 0; i <NEW_CHAT_SPR_MAX ; i ++)
{
chatimage[i] = GetSprOfMenu(NEW_CHAT_IMG, i);
}
}
//011215 lsw
int GetDisplayChatType( LPCHARACTER ch )
{
// return 12;//叼弃飘 陋篮 弊覆 老馆 历肪
if( ch->type ==SPRITETYPE_CHARACTER)
{
if(ch->nChatType == CHATTYPE_MERCHANT_BBS)
{
return CHAT_COLOR_TYPE_MERCHANT_BBS;
}
if(ch->nCurrentAction==ACTION_SITDOWN)
{
return CHAT_COLOR_TYPE_SIT_DOWN;
}
if( CheckGuildMaster( ch ) )
{
return CHAT_COLOR_TYPE_GUILDMASTER;
}
if( ch->call_job_lv == 100)
{
return CHAT_COLOR_TYPE_GM;
}//瘤骏捞匙..
if(ch->lv>61)
{
return CHAT_COLOR_TYPE_HIGHLEVEL;
}//鳖父祸 变芭
}
else
{
if( ch->sprno == 80 || ch->sprno == 22){ return CHAT_COLOR_TYPE_TUTORIAL_NPC; }
if( ch->sprno == 18 || ch->sprno == 20){ return CHAT_COLOR_TYPE_TUTORIAL_NPC; }
return CHAT_COLOR_TYPE_NPC;
}
return CHAT_COLOR_TYPE_DEFAULT;//叼弃飘 陋篮 弊覆 老馆 历肪
}
void DisplayChatMessage( LPCHARACTER ch )//皋技瘤, 漠扼 敲贰弊,
{
if( tool_ViewChat ){return;}
if( 0 >= ch->ChatDelay ){return;}
int iPosMoveX = 0, iPosMoveY = 0;
const int iChatImageType = GetDisplayChatType(ch);
switch(iChatImageType)
{
case CHAT_COLOR_TYPE_MERCHANT_BBS://021126 lsw
case CHAT_COLOR_TYPE_SIT_DOWN :
{
iPosMoveX = -95;
iPosMoveY = -80;
}break;
default:
{
iPosMoveX = +13;
iPosMoveY = -65;
}break;
}
if( ch->viewtype == VIEWTYPE_GHOST_ )
{
iPosMoveY = -90;
}
char *pMsg = ch->szChatMessage;
const int iX = ch->x - Mapx+iPosMoveX;
const int iY = ch->y - Mapy+iPosMoveY;
int iLCt = 0;
int iChatWidth = 0;
int iLGab = CHAT_BG_HEIGHT;//临 埃拜
switch(iChatImageType)
{//硅版 嘛扁
case CHAT_COLOR_TYPE_DEFAULT:
{
iChatWidth = 135;
}break;
case CHAT_COLOR_TYPE_MERCHANT_BBS:
{
iLGab = MERCHANT_CHAT_BG_HEIGHT;
}//break; 绝澜
default:
{
iChatWidth = 180;
}break;
}
const int iGab = 10;//甸咯 静扁
TxtOut.Init(COLOR_BLACK, TXT_BG_NORMAL_WIDTH,12);
::Hcolor(FONT_COLOR_WHITE);
iLCt = TxtOut.RcChatOut(iX, iY, iChatWidth,iGab,iChatImageType,"%s",pMsg);
::Hcolor(FONT_COLOR_GREEN);
TxtOut.RcChatHeaderOut(iX, iY-iLGab*(iLCt+1), iChatWidth,iGab,iChatImageType,"%s",ch->name);//iLCt+1 牢 捞蜡绰 捞抚 锭巩
return;
}
void RecvCMD_LOCALWAR_CHAT(t_packet* p) // LTS NEW LOCALWAR
{
ChatMgr.AddString( NULL, p->u.LocalWar.LocalWarChat.Message, CHATTYPE_LOCAL_WAR ); //020515 lsw//020702 lsw
}
void RecvCMD_SQUAD_CHAT(t_packet* p)
{
// char tempMessage[120];
// char* tempPointer=tempMessage;
// memcpy(tempMessage,p->u.NationWar.SquadChat.Message,p->u.NationWar.SquadChat.Size);
// *(tempPointer+p->u.NationWar.SquadChat.Size)='\0';
p->u.NationWar.SquadChat.Message[MAX_STRING_PK-1] = 0;
ChatMgr.AddString( NULL, p->u.NationWar.SquadChat.Message, CHATTYPE_NATION_WAR ); //020515 lsw//020702 lsw
switch (p->u.NationWar.SquadChat.Type)
{
case 0 :
case 1 :
case 2 :
case 3 :
PlayListAutoSounds(50,0,0,0);
break;
case 4 :
PlayListAutoSounds(64,0,0,0);
break;
}
}
void RecvGuildAllMsg( t_packet *p )
{
MP3( SN_EAR_MESSAGE_RECV );
ChatMgr.AddString("!", p->u.kein.default_msg, CHATTYPE_GUILD_BBS);//021001 lsw
}
void CChatMgr::ReplyWhisper( const WORD dSenderServerIndex, const WORD dSenderCn, const char cResult )// 罐篮 皋矫瘤俊 措茄 搬苞
{
t_packet p;
p.h.header.type = CMD_SEND_EAR_MESSAGE_RESULT;
p.h.header.size = sizeof( k_send_ear_message_result );
p.u.kein.send_ear_message_result.send_game_server = dSenderServerIndex;
p.u.kein.send_ear_message_result.send_server_id = dSenderCn;
p.u.kein.send_ear_message_result.ret = cResult;
QueuePacket( &p, 1 );
}
void CChatMgr::RecvWhisper( const char *szName, char *szMsg, const WORD dSenderServerIndex, const WORD dSenderCn)//庇加富 罐嚼聪促.
{
char cResult = 1;//1篮 己傍 蔼捞促 檬扁摹甫 官操瘤 富巴
if( ::IsHeroDead() )
{
cResult = 2;
}//磷菌扁 锭巩俊
if( IsRefuseAllWhisper() )
{
cResult = 3;
}
if( IsRefuseGuy(szName) )
{
cResult = 3;
}
switch(cResult)
{
case 1:
{
ReplyWhisper( dSenderServerIndex, dSenderCn, cResult );//搬苞 傈价
}break;
default:
{
ReplyWhisper( dSenderServerIndex, dSenderCn, cResult );//搬苞 傈价
return;//府畔 矫难滚覆
}break;
}
::ConvString( szMsg );
::MP3( SN_EAR_MESSAGE_RECV );
AddString(szName,szMsg,CHATTYPE_WHISPER);//021001 lsw
::InsertWisperList(szName);//庇富 焊辰 荤恩狼 捞抚 历厘
}
int GetChatMode()
{
if(g_bCommandMode == CM_MESSAGE)
{
}
else
{
}
return g_bCommandMode;
}
void SetChatMode(const int iMode,bool bIsForce)//碍力肺 器目胶甫 霸烙皋牢栏肺 笛巴牢瘤甫 悸泼 钦聪促.
{
switch(iMode)
{
case CM_MESSAGE://浚磐 茄锅俊 荤咙
{
if( SMenu[MN_SKILLGUILD_REPAIR].bActive
|| SMenu[MN_SKILLGUILD_BUY].bActive
|| SMenu[MN_SKILLGUILD_SELL].bActive
|| SMenu[MN_SKILLGUILD_SKILL].bActive
|| SMenu[MN_MEM_BOOK].bActive
|| SMenu[MN_MAIL_WRITE].bActive
|| SMenu[MN_MAIL_READ].bActive
|| SMenu[MN_MAIL_MENU].bActive
|| SMenu[MN_DIVIDE_ITEM].bActive
|| SMenu[MN_FRIEND_REGIST].bActive
|| SMenu[MN_BANK_REPAYMENT].bActive
|| SMenu[MN_MERCHANT_REGISTER].bActive
)
{
g_bCommandMode = CM_COMMAND;//目膏靛 葛靛肺 父甸绢 霖促
SMenu[MN_MAININTERFACE].nField[44].nType = FT_NONE;
SMenu[MN_MAININTERFACE].nField[47].nType = FT_NONE;
SetFocus2(HWND_GAME_MAIN);//021001 lsw 困 牢磐其捞胶惑怕俊辑绰 盲泼 阂啊瓷捞促.
return;
}
// EWndMgr.ClearAllTxt();//021001 lsw
if(Hero&&Hero->viewtype == VIEWTYPE_OBSERVE_) // 030522 kyo
{
return;
}
g_bCommandMode = iMode;
}break;
case CM_COMMAND://目膏靛 葛靛
{
SMenu[MN_MAININTERFACE].nField[44].nType = FT_NONE;
SMenu[MN_MAININTERFACE].nField[47].nType = FT_NONE;
g_bCommandMode = iMode;
if(bIsForce)
{
SetFocus2(HWND_GAME_MAIN);//021001 lsw
}
return;
}break;
default:
{
}break;
}
}
bool IsChatBoxActive()
{
return (GetChatMode() == CM_MESSAGE)?true:false;
}
int GetChatTarget()//泅犁 盲泼 惑措 啊瘤绊 坷扁
{
const int iType =SMenu[MN_WISPER_LIST].work;
return iType;
}
bool IsAbleChatTargetName(const int iType)//捞沫捞 棵官弗 沫牢啊
{
switch(iType)
{
case CHAT_TARGET_NORMAL :
case CHAT_TARGET_GUILD :
case SELECT_WISPER_MODE :
{
return true;
}break;
case CHAT_TARGET_WISPER1 :
case CHAT_TARGET_WISPER2 :
case CHAT_TARGET_WISPER3 :
case CHAT_TARGET_WISPER4 :
case CHAT_TARGET_WISPER5 :
{
if( SMenu[MN_WISPER_LIST].nField[iType].temp[0] )
{
return true;
}
}break;
default:
{
}break;
}
return false;
}
bool IsChatBoxLock()
{
return (SMenu[MN_MAININTERFACE].nField[47].nWillDo)?true:false;
}
bool SendChatNormal(char* msg)
{
const int iSize = strlen( msg );
if(0 >= iSize ){return true;}
EatRearWhiteChar( msg );//020725 lsw
if( IsLineCommand( msg, iSize ) )
{
EWndMgr.ClearTxt(HWND_CHAT_INPUT);//021001 lsw
return false; // 疙飞绢扼搁 贸府饶 府畔
}
ConvString( msg );// 垮汲 鞘磐 //020725 lsw
Hero->ChatDelay = 60;
strcpy( Hero->szChatMessage, msg );
EWndMgr.ClearTxt(HWND_CHAT_INPUT);//021001 lsw
SendChatData( msg ); // 辑滚俊 皋矫瘤甫 焊辰促.
return true;
}
bool SendChatGuild( char *msg )
{
if( IsDead( Hero ) ){return true;}
EatRearWhiteChar( msg );//020725 lsw
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -