📄 myshelldlg8-4back.cpp
字号:
}
}
}
if (pTarget && (pTarget->GetRoleType() == _ROLE_CALL_PET || pTarget->GetRoleType() == _ROLE_MONSTER || pTarget->GetRoleType() == _ROLE_PLAYER || pTarget->GetRoleType() == _ROLE_HERO)) // interact command
{
int nHeroX, nHeroY;
g_objHero.GetPos(nHeroX, nHeroY);
int nTargetX, nTargetY;
pTarget->GetPos(nTargetX, nTargetY);
switch(m_uCmd)
{
case CMD_NORMAL:
case CMD_ATK:
if (nFlags&MK_CONTROL)
{
if (g_objHero.TestStatus(USERSTATUS_XPFULL))
{
if (pTarget)
{
CMyShellDlg::AttackMagicXp();
}
}
else
g_objHero.LockAttack (pTarget, true);
}
else if ( nFlags&MK_SHIFT && !pTarget->IsNpc () )
{
m_DlgMain.m_DlgTalk.SetTalkTarget ( pTarget ) ;
g_objHero.Direction ( nTargetX, nTargetY ) ;
}
else
{
OBJID idItem = ID_NONE;
CMyPos ItemPos;
if (( g_objHero.GetPkMode () != PKMODE_MONSTERONLY || pTarget->IsNpc () ) && !pTarget->TestStatus(USERSTATUS_DIE))
g_objHero.LockAttack (pTarget) ;
else if ( !g_bPickUp && (idItem = g_objGameMap.Get2DFocusMapItem (ItemPos)) != ID_NONE )
{
//CMyPos ItemPos ;
//g_objGameMap.Mouse2Cell(point.x, point.y, ItemPos.x, ItemPos.y);
CMyShellDlg::PickMapItem ( idItem, ItemPos.x, ItemPos.y ) ;
return ;
}
}
break;
case CMD_TRADE:
{
if ( pTarget->IsPlayer() )
{
if (pTarget->IsDead())
{
g_objGameMsg.AddMsg((char*)g_objGameDataSet.GetStr(10713)); //不允许与亡灵进行交易!
}
else
g_objHero.ApplyTrade ( pTarget ) ;
}
}
break ;
case CMD_TEMJOIN:
if ( pTarget->IsPlayer() )
{
if (pTarget->IsDead())
{
g_objGameMsg.AddMsg((char*)g_objGameDataSet.GetStr(100066)); //错误的申请对象!
}
else
g_objHero.TeamApplyJion ( pTarget->GetID () ) ;
}
break ;
case CMD_TEMINVITE:
if ( pTarget->IsPlayer() )
{
if (pTarget->IsDead())
{
g_objGameMsg.AddMsg((char*)g_objGameDataSet.GetStr(100066)); //错误的申请对象!
}
else
g_objHero.TeamInvite ( pTarget->GetID () ) ;
}
break ;
case CMD_FACJOIN:
if ( pTarget->IsPlayer())
{
if (pTarget->IsDead())
{
g_objGameMsg.AddMsg((char*)g_objGameDataSet.GetStr(100066)); //错误的申请对象!
}
else if (pTarget->GetSyndicateRank() != 100)
{
char msg[128]="";
sprintf(msg, (char*)g_objGameDataSet.GetStr(100068), pTarget->GetName());
g_objGameMsg.AddMsg(msg);
}
else
g_objHero.SyndicateApplyJoin ( pTarget->GetID () ) ;
m_DlgMain.OnMainFaction();
}
break ;
case CMD_FACINVITE:
if (pTarget->IsDead())
{
g_objGameMsg.AddMsg((char*)g_objGameDataSet.GetStr(100066)); //错误的申请对象!
}
else if (pTarget->GetSydicateID() != ID_NONE)
{
g_objGameMsg.AddMsg((char*)g_objGameDataSet.GetStr(100073)); //对方已有军团!
}
else
g_objHero.SyndicateApplyInvite ( pTarget->GetID () ) ;
m_DlgMain.OnMainFaction();
break ;
case CMD_MPCCOURT:
g_objHero.Court(pTarget);
break;
case CMD_DIVORCE:
g_objHero.Divorce(pTarget);
break;
case CMD_FRDMAKE:
g_objHero.MakeFriend(pTarget->GetID());
break;
case CMD_FRDBREAK:
g_objHero.BreakOffFriend(pTarget->GetID());
break;
case CMD_NPCEQUIP:
g_objHero.m_objPlayerDummy.LockDummy ( pTarget->GetID () ) ;
break ;
case CMD_TEACHERREQ:
if (pTarget->IsPlayer())
{
if (pTarget->IsDead ())
g_objGameMsg.AddMsg(g_objGameDataSet.GetStr(10775)); //10775=错误对象!
else
g_objHero.TeacherApply(pTarget->GetID());
}
break;
case CMD_STUDENTREQ:
if (pTarget->IsPlayer())
{
if (pTarget->IsDead ())
g_objGameMsg.AddMsg(g_objGameDataSet.GetStr(10775)); //10775=错误对象!
else
g_objHero.StudentApply(pTarget->GetID());
}
break;
case CMD_USEITEMTO:
if (pTarget->IsPlayer() || pTarget->IsMonster() || pTarget->IsPet())
{
CItem* pItem = g_objHero.GetItem(m_IconRealID);
if (pItem)
g_objHero.UseItem(pItem->GetID(),pTarget->GetID());
}
break;
case CMD_ADDALLY:
if (pTarget->IsPlayer() && !pTarget->IsDead())
{
if (pTarget->IsDead())
{
g_objGameMsg.AddMsg((char*)g_objGameDataSet.GetStr(100066)); //错误的申请对象!
}
else if (pTarget->GetSyndicateRank() == RANK_LEADER)
g_objHero.AddAllySyn(pTarget->GetID());
else
g_objGameMsg.AddMsg((char*)g_objGameDataSet.GetStr(100076)); //对方不是军团长!
}
break;
}
// reset cmd now...
m_uCmd =CMD_NORMAL;
return;
}
else
{
if ( m_uCmd == CMD_LAY )
{
g_objHero.FixMousePlayer () ;
m_uCmd = CMD_NORMAL ;
return ;
}
if (m_uCmd == CMD_TEMINVITE)
{
DWORD dwNFlag = PLAYER_NORMAL;
dwNFlag |= PLAYER_INCLUDEDEAD;
CPlayer* pMember = g_objPlayerSet.GetFocusPlayer(dwNFlag);
if (pMember && pMember->GetRoleType() == _ROLE_PLAYER && pMember->IsDead())
{
g_objGameMsg.AddMsg(g_objGameDataSet.GetStr(10703));
if (m_DlgMain.m_DlgGroup.m_bShow)
m_DlgMain.m_DlgGroup.EnableWindow(false);
return;
}
}
if (m_uCmd == CMD_TEMJOIN )
{
DWORD dwNFlag = PLAYER_NORMAL;
dwNFlag |= PLAYER_INCLUDEDEAD;
CPlayer* pMember = g_objPlayerSet.GetFocusPlayer(dwNFlag);
if (pMember && pMember->GetRoleType() == _ROLE_PLAYER && pMember->IsDead())
{
g_objGameMsg.AddMsg(g_objGameDataSet.GetStr(10704));
if (m_DlgMain.m_DlgGroup.m_bShow)
m_DlgMain.m_DlgGroup.EnableWindow(false);
return;
}
}
int nPosX, nPosY;
int nNpcType = 0;
OBJID idNpcFocus = ID_NONE;
g_objGameMap.Mouse2Cell(point.x, point.y, nPosX, nPosY);
CMyPos Pos = { nPosX, nPosY };
if ( nFlags&MK_SHIFT )
{
OBJID idItem = ID_NONE;
CMyPos posItem;
if ( !g_bPickUp && (idItem = g_objGameMap.Get2DFocusMapItem (posItem)) != ID_NONE )
{
CMyShellDlg::PickMapItem ( idItem, posItem.x, posItem.y ) ;
}
else
g_objHero.Direction ( nPosX, nPosY ) ;
return ;
}
else if ((nFlags&MK_CONTROL) &&g_objHero.TestStatus(USERSTATUS_XPFULL))
{
for(int i=0;i<g_objHero.GetXpSkillAmount();i++)
{
CMagic* pXp = g_objHero.GetXpSkillByIndex(i);
if (pXp && pXp->GetIDType() == m_XpID)
{
// if(pXp->TestTarget ( MAGIC_TARGET_NONE ) || pXp->m_infoMagicType.dwActionSort == MAGICSORT_LINE)
CMyShellDlg::AttackMagicXp();
}
}
}
else
{
OBJID idItem = ID_NONE;
CMyPos posItem;
CPlayer* pPlayer = g_objPlayerSet.GetFocusPlayer();
if ( g_bPickUp )
{
switch ( m_PickUpDlgID )
{
case DLG_MONSTEREGG:
CMyShellDlg::DropMapItem ( point.x, point.y ,PACKAGE_EGG);
break;
case DLG_STONEGOODS0:
CMyShellDlg::DropMapItem ( point.x, point.y ,PACKAGE_SOUL);
break;
case DLG_MPCGOODS:
CMyShellDlg::DropMapItem ( point.x, point.y );
break ;
case DLG_EQUIP:
g_bPickUp = false ;
m_DlgMain.m_DlgQuery.m_DlgEquip.FlashEquip();
break ;
case DLG_MAIN:
g_bPickUp = false ;
break ;
default:
break ;
}
return ;
}
else if ( !g_bPickUp && (idItem = g_objGameMap.Get2DFocusMapItem (posItem)) != ID_NONE )
{
CMyPos posHero ;
g_objHero.GetPos ( posHero.x, posHero.y ) ;
if ( nFlags&MK_CONTROL && !( posHero.x == posItem.x && posHero.y == posItem.y ) )
g_objHero.Run(nPosX, nPosY);
else
CMyShellDlg::PickMapItem ( idItem, posItem.x, posItem.y ) ;
return ;
}
else if ( !g_bPickUp && pPlayer)//(idNpcFocus=g_objGameMap.GetFocusNpc ( nNpcType )) != ID_NONE)
{
if (pPlayer)
{
if ( CMD_DELNPC == m_uCmd )
{
m_uCmd = CMD_NORMAL ;
g_objHero.DelNpc ( pPlayer->GetID () ) ;
return ;
}
switch(pPlayer->GetRoleType())
{
case _AUCTION_NPC:
if (g_objHero.GetLastDialogPara() != pPlayer->GetID())
{
m_DlgMain.CloseCurDlg();
m_DlgMain.CloseCurDlg(1);
m_DlgMain.CloseCurDlg(2);
m_DlgMain.CloseNpcDlg();
if (m_DlgTask.m_bShow)
m_DlgTask.EnableWindow(false);
}
if (!m_DlgTask.m_bShow)
g_objHero.ActiveNpc(pPlayer->GetID());
break;
case _ROLE_STONE_MINE:
// case _ROLE_WOOD_NPC:
// case _ROLE_METAL_MINE:
g_objHero.CollectRes(pPlayer->GetID());
break;
case _ROLE_SHOPKEEPER_NPC:
if (g_objHero.GetLastDialogPara() != pPlayer->GetID())
{
m_DlgMain.CloseCurDlg();
m_DlgMain.CloseCurDlg(1);
m_DlgMain.CloseCurDlg(2);
m_DlgMain.CloseNpcDlg();
if (m_DlgTask.m_bShow)
m_DlgTask.EnableWindow(false);
}
if (!m_DlgTask.m_bShow)
g_objHero.ActiveNpc(pPlayer->GetID());
break;
case _ROLE_TASK_NPC:
if (g_objHero.GetLastDialogPara() != pPlayer->GetID())
{
m_DlgMain.CloseCurDlg();
m_DlgMain.CloseCurDlg(1);
m_DlgMain.CloseCurDlg(2);
m_DlgMain.CloseNpcDlg();
if (m_DlgTask.m_bShow)
m_DlgTask.EnableWindow(false);
}
if (!m_DlgTask.m_bShow)
g_objHero.ActiveNpc(pPlayer->GetID());
break;
case _ROLE_NEIGHBOR_DOOR:
if (g_objHero.GetLastDialogPara() != pPlayer->GetID())
{
m_DlgMain.CloseCurDlg();
m_DlgMain.CloseCurDlg(1);
m_DlgMain.CloseCurDlg(2);
m_DlgMain.CloseNpcDlg();
if (m_DlgTask.m_bShow)
m_DlgTask.EnableWindow(false);
}
if (!m_DlgTask.m_bShow)
g_objHero.ActiveNpc(pPlayer->GetID());
break;
case _SYNTRANS_NPC:
if (g_objHero.GetLastDialogPara() != pPlayer->GetID())
{
m_DlgMain.CloseCurDlg();
m_DlgMain.CloseCurDlg(1);
m_DlgMain.CloseCurDlg(2);
m_DlgMain.CloseNpcDlg();
if (m_DlgTask.m_bShow)
m_DlgTask.EnableWindow(false);
}
if (!m_DlgTask.m_bShow)
g_objHero.ActiveNpc(pPlayer->GetID());
break;
case _ROLE_BOOTH_FLAG_NPC:
if ( g_objHero.CanBooth ( pPlayer ) )
{
if (g_objHero.GetLastDialogPara() != pPlayer->GetID())
{
m_DlgMain.CloseCurDlg();
m_DlgMain.CloseCurDlg(1);
m_DlgMain.CloseCurDlg(2);
m_DlgMain.CloseNpcDlg();
if (m_DlgTask.m_bShow)
m_DlgTask.EnableWindow(false);
}
if (!m_DlgTask.m_bShow)
g_objHero.ActiveNpc(pPlayer->GetID());
}
break;
case _TRAINPLACE_NPC:
if (g_objHero.GetLastDialogPara() != pPlayer->GetID())
{
m_DlgMain.CloseCurDlg();
m_DlgMain.CloseCurDlg(1);
m_DlgMain.CloseCurDlg(2);
m_DlgMain.CloseNpcDlg();
if (m_DlgTask.m_bShow)
m_DlgTask.EnableWindow(false);
}
if (!m_DlgTask.m_bShow)
g_objHero.ActiveNpc(pPlayer->GetID());
break;
case _ROLE_STORAGE_NPC:
case _ROLE_TRUNCK_NPC:
if (g_objHero.GetLastDialogPara() != pPlayer->GetID())
{
m_DlgMain.CloseCurDlg();
m_DlgMain.CloseCurDlg(1);
m_DlgMain.CloseCurDlg(2);
m_DlgMain.CloseNpcDlg();
if (m_DlgTask.m_bShow)
m_DlgTask.EnableWindow(false);
}
if (!m_DlgTask.m_bShow)
g_objHero.ActiveNpc(pPlayer->GetID());
break ;
case _ROLE_FACE_NPC:
g_objHero.ActiveNpc(pPlayer->GetID());
break ;
case _ROLE_FORGE_NPC:
if (g_objHero.GetLastDialogPara() != pPlayer->GetID())
{
m_DlgMain.CloseCurDlg();
m_DlgMain.CloseCurDlg(1);
m_DlgMain.CloseCurDlg(2);
m_DlgMain.CloseNpcDlg();
if (m_DlgTask.m_bShow)
m_DlgTask.EnableWindow(false);
}
if (!m_DlgTask.m_bShow)
g_objHero.ActiveNpc(pPlayer->GetID());
break ;
case _ROLE_EMBED_NPC:
if (g_objHero.GetLastDialogPara() != pPlayer->GetID())
{
m_DlgMain.CloseCurDlg();
m_DlgMain.CloseCurDlg(1);
m_DlgMain.CloseCurDlg(2);
m_DlgMain.CloseNpcDlg();
if (m_DlgTask.m_bShow)
m_DlgTask.EnableWindow(false);
}
if (!m_DlgTask.m_bShow)
g_objHero.ActiveNpc(pPlayer->GetID());
break ;
case _ROLE_STATUARY_NPC:
if ( nFlags&MK_CONTROL && g_objHero.GetPkMode() == PKMODE_FREE )
g_objHero.LockAttack (pPlayer, true);
else
g_objGameMsg.AddMsg ( ( char* ) g_objGameDataSet.GetStr ( 10352) ) ;
break ;
case _ROLE_SYNFLAG_NPC:
if ( nFlags&MK_CONTROL )
g_objHero.LockAttack (pPlayer, true);
else if ( !(nFlags&MK_CONTROL) )
{
if (g_objHero.GetLastDialogPara() != pPlayer->GetID())
{
m_DlgMain.CloseCurDlg();
m_DlgMain.CloseCurDlg(1);
m_DlgMain.CloseCurDlg(2);
m_DlgMain.CloseNpcDlg();
if (m_DlgTask.m_bShow)
m_DlgTask.EnableWindow(false);
}
if (!m_DlgTask.m_bShow)
g_objHero.ActiveNpc(pPlayer->GetID());
g_objGameMsg.AddMsg ( ( char* ) g_objGameDataSet.GetStr ( 10349) ) ;
}
else
g_objGameMsg.AddMsg ( ( char* ) g_objGameDataSet.GetStr ( 10349) ) ;
break ;
case _ROLE_BOOTH_NPC:
// g_objHero.ActiveNpc(pPlayer->GetID());
{
// MpcBooth
if ( pPlayer->GetID() == g_objHero.m_objBoothManager.GetID () )
m_DlgMain.OpenBooth ( true ) ;
else
{
if ( m_DlgMain.m_DlgTrade.m_bShow || ( m_DlgMain.m_DlgNpcBooth.m_bShow && g_objHero.GetLastDialogPara() == g_objHero.m_objBooth.GetID () ) )
{
g_objGameMsg.AddMsg ( ( char* ) g_objGameDataSet.GetStr ( 10398) ) ;
}
else
{
if(g_objHero.m_objBooth.Open ( pPlayer->GetID() ))
m_DlgMain.OpenBooth ( false ) ;
}
}
}
break ;
case _ROLE_MAGICGOAL_NPC:
g_objGameMsg.AddMsg ( ( char* ) g_objGameDataSet.GetStr ( 10354 ) ) ;
break ;
case _ROLE_WEAPONGOAL_NPC:
g_objHero.LockAttack (pPlayer, true);
break ;
case _ROLE_DICE_NPC:
if ( !m_DlgMain.m_DlgDice.m_bShow)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -