游戏乐悠悠网游开发网

标题: 武侠-CareObject [打印本页]

作者: tianyalanzi    时间: 2012-2-26 13:31
标题: 武侠-CareObject
武侠-CareObject
一 应用:关心与某逻辑Obj的距离(用于商人或者任务窗口/下拉菜单等,当距离超过一定距离后自动关闭)
二 实现
1 首先注册lua接口

INT CUIWindowItem:UA_CareObject(LuaPlus:uaState* pState)
{
    LuaStack args(pState);
   
if(!(args[2].IsInteger()))
    {
        KLThrow(
"LUA: CUIWindowItem:UA_CareObject[2] Wrong Param1");
    }
   
if(!(args[3].IsInteger()))
    {
        KLThrow(
"LUA: CUIWindowItem:UA_CareObject[3] Wrong Param1");
    }
   
if(!(args[4].IsString()))
    {
        KLThrow(
"LUA: CUIWindowItem:UA_CareObject[4] Wrong Param1");
    }

   
// Object的ID
    INT nObjID = args[2].GetInteger();

   
// 是否关心
    INT    bCare = args[3].GetInteger()==1;

   
// 谁在关心
    std::string str = args[4].GetString();

    g_pObjectSystem
->CareObject(nObjID, bCare, str);

   
return 0;
}

复制代码


2 保存到map里面

// 关心某物体的指定事件 id-物体ID,    szSign:关心标志(谁关心)        bCare-关心或者取消关心
// 修改说明:添加一个“是谁关心”的内容
VOID CObjectManager::CareObject(INT id, BOOL bCare, std::string szSign)
{
   
//AxTrace(0,0,"C++ id =%d,bCare =%d,szSign =%s",id,(INT)bCare,szSign.c_str());
   
// 搜索物体
    CObject* pObject = (CObject*)FindObject(id);
   
if(!pObject) return;









欢迎光临 游戏乐悠悠网游开发网 (http://bbs.yxlyy.club/) Powered by Discuz! X3.2