Browse Source

add PtGetNPCByID function for Python

This function returns the real SceneObject of the NPC, so it can be customized by Python.
Christopher Schmidt 12 years ago
parent
commit
41001cbaa3
  1. 16
      Sources/Plasma/FeatureLib/pfPython/cyMisc.cpp
  2. 9
      Sources/Plasma/FeatureLib/pfPython/cyMisc.h
  3. 13
      Sources/Plasma/FeatureLib/pfPython/cyMiscGlue.cpp

16
Sources/Plasma/FeatureLib/pfPython/cyMisc.cpp

@ -960,7 +960,23 @@ PyObject* cyMisc::GetLocalPlayer()
0.0 );
}
/////////////////////////////////////////////////////////////////////////////
//
// Function : GetNPC
// PARAMETERS : npcID - is the ID of an NPC
//
// PURPOSE : Returns a pySceneobject of an NPC
//
PyObject* cyMisc::GetNPC(int npcID)
{
plSceneObject *so = plSceneObject::ConvertNoRef(plNetClientMgr::GetInstance()->GetNPC(npcID));
if ( so )
return pySceneObject::New(so->GetKey());
char* errmsg = "NPC not found";
PyErr_SetString(PyExc_NameError, errmsg);
PYTHON_RETURN_ERROR;
}
#if 1
#include "plStatusLog/plStatusLog.h"

9
Sources/Plasma/FeatureLib/pfPython/cyMisc.h

@ -439,6 +439,15 @@ public:
static uint32_t GetMaxListenListSize();
static float GetMaxListenDistSq();
/////////////////////////////////////////////////////////////////////////////
//
// Function : GetNPC
// PARAMETERS : npcID - is the ID of a NPC
//
// PURPOSE : Returns a pySceneobject of a NPC
//
static PyObject* GetNPC(int npcID);
/////////////////////////////////////////////////////////////////////////////
//
// Function : SendRTChat

13
Sources/Plasma/FeatureLib/pfPython/cyMiscGlue.cpp

@ -188,6 +188,18 @@ PYTHON_GLOBAL_METHOD_DEFINITION(PtGetClientIDFromAvatarKey, args, "Params: avata
return PyInt_FromLong(cyMisc::GetClientIDFromAvatarKey(*key));
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtGetNPCByID, args, "This will return the NPC with a specific ID")
{
int npcID;
if (!PyArg_ParseTuple(args, "i", &npcID))
{
PyErr_SetString(PyExc_TypeError, "PtGetNPCByID expects an integer");
PYTHON_RETURN_ERROR;
}
return cyMisc::GetNPC(npcID);
}
PYTHON_GLOBAL_METHOD_DEFINITION_NOARGS(PtGetNumRemotePlayers, "Returns the number of remote players in this Age with you.")
{
return PyInt_FromLong(cyMisc::GetNumRemotePlayers());
@ -507,6 +519,7 @@ void cyMisc::AddPlasmaMethods(std::vector<PyMethodDef> &methods)
PYTHON_GLOBAL_METHOD_NOARGS(methods, PtMaxListenDistSq);
PYTHON_GLOBAL_METHOD(methods, PtGetAvatarKeyFromClientID);
PYTHON_GLOBAL_METHOD(methods, PtGetClientIDFromAvatarKey);
PYTHON_GLOBAL_METHOD(methods, PtGetNPCByID);
PYTHON_GLOBAL_METHOD_NOARGS(methods, PtGetNumRemotePlayers);
PYTHON_GLOBAL_METHOD(methods, PtValidateKey);

Loading…
Cancel
Save