游戏乐悠悠网游开发网

 找回密码
 立即注册
查看: 1336|回复: 0
打印 上一主题 下一主题

武侠-右键下拉菜单实现

[复制链接]
  • TA的每日心情
    无聊
    2014-8-8 12:31
  • 签到天数: 37 天

    [LV.5]常住居民I

    鲜花(0) 鸡蛋(0)
    跳转到指定楼层
    楼主
    发表于 2012-2-26 13:39:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    一 右键点击目标头像界面,首先分析是NPC,其他玩家,玩家自己头像。然后判断状态,根据状态,发送不同的命令给lua脚本

    VOID CGameInterface::Object_ShowContexMenu(INT idObj,BOOL showMyself)
    {
        CObject
    * pObject = (CObject*)CObjectManager::GetMe()->FindServerObject(idObj);
       
    if(!pObject) return;

        CHAR szObjId[
    32]; _snprintf(szObjId, 32, "%d", pObject->GetID());

       
    // 得到鼠标位置
        POINT ptMouse = CInputSystem::GetMe()->MouseGetPos();

        CHAR szXPos[
    32]; _snprintf(szXPos, 32, "%d", ptMouse.x);
        CHAR szYPos[
    32]; _snprintf(szYPos, 32, "%d", ptMouse.y);
       
        std::vector
    < STRING > vParam;

       
    // 根据不同物体产生不同右键事件

       
    // 主角自身
        if(g_theKernel.IsKindOf(pObject->GetClass(), GETCLASS(CObject_PlayerMySelf)))
        {
            
    if(showMyself)
            {
                
    // 如果自己已经在队伍中了
                if( CUIDataPool::GetMe()->IsInTeam())
                {
                    vParam.push_back(
    "player_in_team");
                    vParam.push_back(szObjId);
                    vParam.push_back(szXPos);
                    vParam.push_back(szYPos);
                    CEventSystem::GetMe()
    ->PushEvent(GE_SHOW_CONTEXMENU, vParam);
                   
                   
    return;
                }

                
    // 自己没有组队
                vParam.push_back("player");
                vParam.push_back(szObjId);
                vParam.push_back(szXPos);
                vParam.push_back(szYPos);
                CEventSystem::GetMe()
    ->PushEvent(GE_SHOW_CONTEXMENU, vParam);
            }
        }
       
    // 其他玩家
        else if(g_theKernel.IsKindOf(pObject->GetClass(), GETCLASS(CObject_PlayerOther)))
        {
            CObject_PlayerOther
    * pOtherObject = (CObject_PlayerOther*)pObject;

            
    // 是否有帮会
            if( INVALID_ID != CObjectManager::GetMe()->GetMySelf()->GetCharacterData()->Get_Guild() )
            {


    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    小黑屋|手机版|Archiver|Online Game Xingbarking Dev Team  

    GMT+8, 2024-11-24 03:22 , Processed in 0.197964 second(s), 34 queries .

    Powered by Discuz! X3.2 Licensed

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表