📄 exchangemgr.cpp
字号:
if( target->id > 10000 )
{
MP3( SN_WARNING );
AddCurrentStatusMessage( 200, 50, 50, lan->OutputMessage(3,36));//010215 lsw
return;
}
if( target->lv > SCharacterData.nLevel+10 )
{
MP3( SN_WARNING );
AddCurrentStatusMessage( 200, 50, 50, lan->OutputMessage(3,37));//010215 lsw
return;
}
int line_len = (int )( sqrt( pow((target->x - Hero->x), 2)+pow((target->y - Hero->y), 2) ) / TILE_SIZE);
if( line_len > 5 )
{
MP3( SN_WARNING );
AddCurrentStatusMessage( 200, 50, 50, lan->OutputMessage(3,38));//010215 lsw
return;
}
ServerConnectMenuClose(); // 汗荤 规瘤
SMenu[MN_MAN_TO_MAN].key = target->id;
strcpy( SMenu[MN_MAN_TO_MAN].nField[VS_RIGHT_DISPLAY_FIELD_NO].temp, SCharacterData.sCharacterName);
strcpy( SMenu[MN_MAN_TO_MAN].nField[VS_LEFT_DISPLAY_FIELD_NO].temp, name );
SMenu[MN_MAN_TO_MAN].work = 0; // 脚没阑 沁促..
//////////////////////////////////////////////////////
t_packet p; // 辑滚肺 脚没
p.h.header.type = CMD_REQ_MAN_TO_MAN;
p.u.kein.default_short_int = target->id;
p.h.header.size = sizeof( short int );
QueuePacket( &p, 1 );
}
void RecvReqManToMan( short int target_id )
{
char *target_name = NULL;
LPCHARACTER target = ReturnCharacterPoint( target_id );
if( !target )
{
SendReqManToManResult( target_id, 5 );
return;
}
target_name = target->name;
if( SMenu[MN_MAN_TO_MAN].bActive || IsExchangeNow() )//021014 lsw
{
SendReqManToManResult( target_id, 0 );
return;
}
int line_len = (int) (sqrt( pow((target->x - Hero->x), 2)+pow((target->y - Hero->y), 2) ) / TILE_SIZE);
if( line_len > 5 )
{
SendReqManToManResult( target_id, 6 );
return;
}
// 搬捧... 芭何
AddCurrentStatusMessage( 250, 250, 250, lan->OutputMessage(3,39), target_name );//010215 lsw
ExchangeMgr.ClearItemData();//021030 lsw
CallMenu( MN_MAN_TO_MAN );
SMenu[MN_MAN_TO_MAN].key = target_id;
strcpy( SMenu[MN_MAN_TO_MAN].nField[VS_LEFT_DISPLAY_FIELD_NO].temp, target_name );
strcpy( SMenu[MN_MAN_TO_MAN].nField[VS_RIGHT_DISPLAY_FIELD_NO].temp, SCharacterData.sCharacterName);
SMenu[MN_MAN_TO_MAN].work = 1; // 脚没阑 罐酒 甸看促...
}
void SendReqManToManResult( short int target_id, int ret )
{
t_packet p; // 辑滚肺 脚没
p.h.header.type = CMD_REQ_MAN_TO_MAN_RESULT;
p.u.kein.req_man_to_man_result.id = target_id;
p.u.kein.req_man_to_man_result.ret = ret;
p.h.header.size = sizeof( k_req_man_to_man_result );
QueuePacket( &p, 1 );
}
void RecvReqManToManResult( char ret )
{
bool bCanOpen = false;
switch( ret )
{
case 2: {::AddCurrentStatusMessage( 250, 100, 100, lan->OutputMessage(3,23)); }break;//010215 lsw
case 3: {::AddCurrentStatusMessage( 250, 100, 100, lan->OutputMessage(3,24)); }break;//010215 lsw
case 4: {::AddCurrentStatusMessage( 250, 100, 100, lan->OutputMessage(3,25)); }break;//010215 lsw
case 5: {::AddCurrentStatusMessage( 250, 100, 100, lan->OutputMessage(3,26)); }break;//010215 lsw
case 6: {::AddCurrentStatusMessage( 250, 100, 100, lan->OutputMessage(3,27)); }break;//010215 lsw
case 0: {::AddCurrentStatusMessage( 250, 100, 100, lan->OutputMessage(3,22)); }break;//010215 lsw
case 1:
{
::AddCurrentStatusMessage( 250, 250, 250, lan->OutputMessage(3,21));
bCanOpen = true;
}break;//010215 lsw
}
if(bCanOpen)
{
::CallMenu( MN_MAN_TO_MAN );
}
else
{
::CloseAllMenu();
}
}
void SendManToManRefusal( short int target_id )
{
t_packet p;
p.h.header.type = CMD_REQ_MAN_TO_MAN_REFUSAL; // 芭例
p.u.kein.default_short_int = target_id;
p.h.header.size = sizeof( short int );
QueuePacket( &p, 1 );
}
void SendManToManStart( short int target_id )
{
t_packet p; // 辑滚肺 脚没
p.h.header.type = CMD_REQ_MAN_TO_MAN_CONSENT; // 铰倡
p.u.kein.default_short_int = target_id;
p.h.header.size = sizeof( short int );
QueuePacket( &p, 1 );
}
void RecvStartManToMan( int target_id )
{
LPCHARACTER target = ReturnCharacterPoint( target_id );
if( !target ) return;
int x = Hero->x + ( target->x - Hero->x ) / 2;
int y = Hero->y + ( target->y - Hero->y ) / 2;
SmallMenuClose();
MainMenuClose();
//SMenu[MN_MAN_TO_MAN].bActive = false;
///////////////////////
// start 1:1 窃荐 龋免
MP3( SN_START_FIGHT );
man_to_man_start = 80;
SetFightMode( target_id, x, y );
}
void RecvReqManToManRefusal( )
{
AddCurrentStatusMessage( 250, 100, 100, lan->OutputMessage(3,40));//010215 lsw
MenuSoundClose( MN_MAN_TO_MAN );
}
void SendManToManEachItem( short int target_id )
{
t_packet p;
p.h.header.type = CMD_MAN_TO_MAN_ITEM_EACH;
p.u.kein.default_short_int = target_id;
p.h.header.size = sizeof( short int );
QueuePacket( &p, 1 );
}
void SetExchageItemData(const int iExchangeIndex,ItemAttr &item, POS &pos, const bool bSendToServer)//酒捞袍 单捞鸥 悸泼
{
if(!IsExchangeNow())
{
// return;
}
if(ExchangeMgr.GetExchangeType() == EXCHANGE_TYPE_MERCHANT_DIRECT
&& ExchangeMgr.m_bIsIAmMerchant )
{//郴啊 魄概磊搁 酒捞袍 给 棵府霸 贸府 秦具窍绰单..
return;
}
if(ExchangeMgr.IsMySideConformStateOk())
{//if ok state is return
return;
}
int iItemX = 0, iItemY = 0;
::GetXANDYByExchangeItemIndex(iExchangeIndex,iItemX,iItemY);//初阑锭 沥纺阑 困秦辑
DefaultItem *pTarget = &item_give[iExchangeIndex];
pTarget->x = iItemX;
pTarget->y = iItemY;
::SetRect( &pTarget->rect,
pTarget->x-15,pTarget->y-15,
pTarget->x+15,pTarget->y+15 );
pTarget->item.item_attr = item;
pTarget->item.item_pos = pos; // 牢亥配府 郴狼 厘家甫 扁撅茄促.
::ItemSoundOfGetItem( item.item_no );
if(bSendToServer)
{
::SendExchangeItemEach( item, pos, ExchangeMgr.GetExchangeTargetId() );
::CheckFaultExchageItemList();
}
}
void CheckFaultExchageItemList()//林绰 府胶飘吝俊 捞惑茄 痢捞 乐绰啊.
{
for( int t=0; t<MAX_EXCHANGE_ITEM; t++ )
{
// if( t != a && item_give[t].item.item_attr.item_no )
if( item_give[t].item.item_attr.item_no )
{
ItemAttr *ii = ::GetItemByPos( item_give[t].item.item_pos );
if( !ii || !ii->item_no )
{
memset( &item_give[t], 0, sizeof( DefaultItem ) );
}
}
}
}
void GetExplainItemCheckGab(int &iX,int &iY,const int iWillDo)
{
iX = SMenu[MN_EXCHANGE_ITEM].x+15+5+
((RIGHT==iWillDo)?SMenu[MN_EXCHANGE_ITEM].nField[1].x:SMenu[MN_EXCHANGE_ITEM].nField[2].x);
iY = SMenu[MN_EXCHANGE_ITEM].y+15+5+
((RIGHT==iWillDo)?SMenu[MN_EXCHANGE_ITEM].nField[1].y:SMenu[MN_EXCHANGE_ITEM].nField[2].y);
}
void DisplayExchangeItemList(const int iWillDo, const int iIsRectOn)
{
const DefaultItem *pTarget = ((RIGHT==iWillDo)?item_give:item_recv);
int iGabX = 0, iGabY = 0;
::GetExplainItemCheckGab(iGabX ,iGabY,iWillDo);
for( int i=0; i<MAX_EXCHANGE_ITEM; i++ ) // 拳搁 嘛扁
{
const int iItemNo = pTarget[i].item.item_attr.item_no;
if( iItemNo )
{
::PutItemIcon( iGabX+pTarget[i].x, iGabY+pTarget[i].y, iItemNo );
if( !g_MouseItemType
&& iIsRectOn
&& MouseInRectCheak( iGabX, iGabY, pTarget[i].rect ) )
{
::PutItemIcon( iGabX+pTarget[i].x, iGabY+pTarget[i].y, iItemNo, 8);
::ItemExplain( pTarget[i].item.item_attr ); // 酒捞袍 汲疙
}
}
}
}
void DeleteItemAtExchangeGiveItemList(const int iWillDo)
{//窃何肺 龋免 窍搁 救邓聪促. case FT_EXCHANGE_ITEM : 俊辑 迭 茄锅父 龋免 窍技夸
if(!IsExchangeNow())
{
return;
}
if(ExchangeMgr.IsMySideConformStateOk())//My Side Now Ok state
{
return;
}
if(iWillDo != RIGHT)
{
return;
}
DefaultItem *pTarget = item_give;
int iGabX = 0,iGabY = 0;
::GetExplainItemCheckGab(iGabX ,iGabY,iWillDo);
for( int i=0; i<MAX_EXCHANGE_ITEM; i++ )
{
if( !g_MouseItemType//酒捞袍阑 甸绊 乐瘤 臼酒具 窍绊
&& pTarget[i].item.item_attr.item_no
&& ::MouseInRectCheak( iGabX, iGabY, pTarget[i].rect )
) // 郴啊 霖 酒捞袍
{
POS pos_t = pTarget[i].item.item_pos;
ItemAttr *source = ::GetItemByPos( pos_t );
if( !source || !source->item_no ){break;}
g_MouseItemType = 1;//颊俊 甸菌促
HandItemAttr = *source;
IP_base = pos_t;
::SetItemPos(HAND, &pos_t);
::SendMoveItem( HandItemAttr.item_no, IP_base, pos_t );
::SendExchangeItemDel( pTarget[i].item.item_pos, ExchangeMgr.GetExchangeTargetId());
::memset( &pTarget[i], 0, sizeof( DefaultItem ) );
::DeleteItem( IP_base );
break;
}
}
}
void TradeONOFF( char *t )//020808 YGI
{
t_packet p;
p.h.header.type = CMD_TRADE_MODE_CHANGE;
p.h.header.size = sizeof(t_TradeModeChange);
if( _stricmp( t, "ON" ) == 0 )
{
g_Menu_Variable.m_bTradeON = false;
p.u.Hwoa.rang.TradeModeChange.bIsTradeOn = false;
}
else if( _stricmp( t, "OFF" ) == 0 )
{
g_Menu_Variable.m_bTradeON = true;
p.u.Hwoa.rang.TradeModeChange.bIsTradeOn = true;
}
else
{
g_Menu_Variable.m_bTradeON = !g_Menu_Variable.m_bTradeON;
p.u.Hwoa.rang.TradeModeChange.bIsTradeOn = g_Menu_Variable.m_bTradeON;
}
p.u.Hwoa.rang.TradeModeChange.iCn = Hero->id;
::QueuePacket( &p, 1 );
}
void RecvCMD_TRADE_MODE_CHANGE(t_packet *p)//030127 lsw //Trade On/Off 悸泼
{
const bool bIsTradeOn = p->u.Hwoa.rang.TradeModeChange.bIsTradeOn;
Kein_PutMessage( KM_INFO, kein_GetMenuString( 206 ), bIsTradeOn?"OFF":"ON" );
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -