代码拉取完成,页面将自动刷新
同步操作将从 likecg/kbengine 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
/*
This source file is part of KBEngine
For the latest info, see http://www.kbengine.org/
Copyright (c) 2008-2012 KBEngine.
KBEngine is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
KBEngine is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with KBEngine. If not, see <http://www.gnu.org/licenses/>.
*/
#include "bots.hpp"
#include "pybots.hpp"
#include "clientobject.hpp"
#include "bots_interface.hpp"
#include "resmgr/resmgr.hpp"
#include "network/common.hpp"
#include "network/tcp_packet.hpp"
#include "network/udp_packet.hpp"
#include "network/message_handler.hpp"
#include "thread/threadpool.hpp"
#include "server/componentbridge.hpp"
#include "server/serverconfig.hpp"
#include "helper/console_helper.hpp"
#include "../../../server/baseapp/baseapp_interface.hpp"
#include "../../../server/loginapp/loginapp_interface.hpp"
namespace KBEngine{
PyMappingMethods PyBots::mappingMethods =
{
(lenfunc)mp_length, // mp_length
(binaryfunc)mp_subscript, // mp_subscript
NULL // mp_ass_subscript
};
SCRIPT_METHOD_DECLARE_BEGIN(PyBots)
SCRIPT_METHOD_DECLARE("has_key", pyHas_key, METH_VARARGS, 0)
SCRIPT_METHOD_DECLARE("keys", pyKeys, METH_VARARGS, 0)
SCRIPT_METHOD_DECLARE("values", pyValues, METH_VARARGS, 0)
SCRIPT_METHOD_DECLARE("items", pyItems, METH_VARARGS, 0)
SCRIPT_METHOD_DECLARE("get", pyGet, METH_VARARGS, 0)
SCRIPT_METHOD_DECLARE_END()
SCRIPT_MEMBER_DECLARE_BEGIN(PyBots)
SCRIPT_MEMBER_DECLARE_END()
SCRIPT_GETSET_DECLARE_BEGIN(PyBots)
SCRIPT_GETSET_DECLARE_END()
SCRIPT_INIT(PyBots, 0, 0, &PyBots::mappingMethods, 0, 0)
//-------------------------------------------------------------------------------------
PyBots::PyBots():
ScriptObject(getScriptType(), false)
{
}
//-------------------------------------------------------------------------------------
PyBots::~PyBots()
{
}
//-------------------------------------------------------------------------------------
int PyBots::mp_length(PyObject * self)
{
return Bots::getSingleton().clients().size();
}
//-------------------------------------------------------------------------------------
PyObject * PyBots::mp_subscript(PyObject* self, PyObject* key /*entityID*/)
{
Bots* bots = &Bots::getSingleton();
int32 clientID = PyLong_AsLong(key);
if (PyErr_Occurred())
return NULL;
ClientObject * pyClient = bots->findClientByAppID(clientID);
if(pyClient == NULL)
{
PyErr_Format(PyExc_KeyError, "%d", clientID);
PyErr_PrintEx(0);
return NULL;
}
Py_INCREF(pyClient);
return pyClient;
}
//-------------------------------------------------------------------------------------
PyObject* PyBots::pyHas_key(int32 clientID)
{
return PyLong_FromLong((Bots::getSingleton().findClientByAppID(clientID) != NULL));
}
//-------------------------------------------------------------------------------------
PyObject* PyBots::pyKeys()
{
Bots::CLIENTS& refclients = Bots::getSingleton().clients();
PyObject* pyList = PyList_New(refclients.size());
int i = 0;
Bots::CLIENTS::const_iterator iter = refclients.begin();
while (iter != refclients.end())
{
PyObject* clientID = PyLong_FromLong(iter->second.get()->appID());
PyList_SET_ITEM(pyList, i, clientID);
i++;
iter++;
}
return pyList;
}
//-------------------------------------------------------------------------------------
PyObject* PyBots::pyValues()
{
Bots::CLIENTS& refclients = Bots::getSingleton().clients();
PyObject* pyList = PyList_New(refclients.size());
int i = 0;
Bots::CLIENTS::const_iterator iter = refclients.begin();
while (iter != refclients.end())
{
Py_INCREF(iter->second.get());
PyList_SET_ITEM(pyList, i, iter->second.get());
i++;
iter++;
}
return pyList;
}
//-------------------------------------------------------------------------------------
PyObject* PyBots::pyItems()
{
Bots::CLIENTS& refclients = Bots::getSingleton().clients();
PyObject* pyList = PyList_New(refclients.size());
int i = 0;
Bots::CLIENTS::const_iterator iter = refclients.begin();
while (iter != refclients.end())
{
PyObject * pTuple = PyTuple_New(2);
PyObject* clientID = PyLong_FromLong(iter->second.get()->appID());
Py_INCREF(iter->second.get()); // PyObject Entity* һ
PyTuple_SET_ITEM(pTuple, 0, clientID);
PyTuple_SET_ITEM(pTuple, 1, iter->second.get());
PyList_SET_ITEM(pyList, i, pTuple);
i++;
iter++;
}
return pyList;
}
//-------------------------------------------------------------------------------------
PyObject* PyBots::__py_pyGet(PyObject* self, PyObject * args, PyObject* kwds)
{
Bots* bots = &Bots::getSingleton();
PyObject * pDefault = Py_None;
int32 id = 0;
if (!PyArg_ParseTuple( args, "i|O", &id, &pDefault))
{
return NULL;
}
PyObject* pClient = static_cast<PyObject*>(bots->findClientByAppID(id));
if (!pClient)
{
pClient = pDefault;
}
Py_INCREF(pClient);
return pClient;
}
//-------------------------------------------------------------------------------------
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。