本文整理汇总了C++中CPlugin::getStatusCode方法的典型用法代码示例。如果您正苦于以下问题:C++ CPlugin::getStatusCode方法的具体用法?C++ CPlugin::getStatusCode怎么用?C++ CPlugin::getStatusCode使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CPlugin
的用法示例。
在下文中一共展示了CPlugin::getStatusCode方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Finalize
void CPluginMngr::Finalize()
{
if (m_Finalized)
return;
pNatives = BuildNativeTable();
CPlugin *a = head;
while (a)
{
if (a->getStatusCode() == ps_running)
{
amx_Register(a->getAMX(), pNatives, -1);
a->Finalize();
}
a = a->next;
}
m_Finalized = true;
}
示例2: loadPluginsFromFile
int CPluginMngr::loadPluginsFromFile(const char* filename, bool warn)
{
char file[PLATFORM_MAX_PATH];
FILE *fp = fopen(build_pathname_r(file, sizeof(file), "%s", filename), "rt");
if (!fp)
{
if (warn)
{
AMXXLOG_Error("[AMXX] Plugins list not found (file \"%s\")", filename);
}
return 1;
}
// Find now folder
char pluginName[256], error[256], debug[256];
int debugFlag = 0;
const char *pluginsDir = get_localinfo("amxx_pluginsdir", "addons/amxmodx/plugins");
char line[512];
List<ke::AString *>::iterator block_iter;
while (!feof(fp))
{
pluginName[0] = '\0';
debug[0] = '\0';
debugFlag = 0;
line[0] = '\0';
fgets(line, sizeof(line), fp);
/** quick hack */
char *ptr = line;
while (*ptr)
{
if (*ptr == ';')
{
*ptr = '\0';
} else {
ptr++;
}
}
sscanf(line, "%s %s", pluginName, debug);
if (!isalnum(*pluginName))
{
continue;
}
if (isalnum(*debug) && !strcmp(debug, "debug"))
{
debugFlag = 1;
}
bool skip = false;
for (block_iter = m_BlockList.begin();
block_iter != m_BlockList.end();
block_iter++)
{
if ((*block_iter)->compare(pluginName) == 0)
{
skip = true;
break;
}
}
if (skip || !strcmp(debug, "disabled"))
{
continue;
}
if (findPlugin(pluginName) != NULL)
{
continue;
}
CPlugin* plugin = loadPlugin(pluginsDir, pluginName, error, sizeof(error), debugFlag);
if (plugin->getStatusCode() == ps_bad_load)
{
char errorMsg[255];
sprintf(errorMsg, "%s (plugin \"%s\")", error, pluginName);
plugin->setError(errorMsg);
AMXXLOG_Error("[AMXX] %s", plugin->getError());
}
else
{
cell addr;
if (amx_FindPubVar(plugin->getAMX(), "MaxClients", &addr) != AMX_ERR_NOTFOUND)
{
*get_amxaddr(plugin->getAMX(), addr) = gpGlobals->maxClients;
}
if (amx_FindPubVar(plugin->getAMX(), "MapName", &addr) != AMX_ERR_NOTFOUND)
{
set_amxstring(plugin->getAMX(), addr, STRING(gpGlobals->mapname), MAX_MAPNAME_LENGTH - 1);
}
//.........这里部分代码省略.........
示例3: loadPluginsFromFile
int CPluginMngr::loadPluginsFromFile(const char* filename, bool warn)
{
char file[256];
FILE *fp = fopen(build_pathname_r(file, sizeof(file) - 1, "%s", filename), "rt");
if (!fp)
{
if (warn)
{
AMXXLOG_Error("[AMXX] Plugins list not found (file \"%s\")", filename);
}
return 1;
}
// Find now folder
char pluginName[256], error[256], debug[256];
int debugFlag = 0;
const char *pluginsDir = get_localinfo("amxx_pluginsdir", "addons/amxmodx/plugins");
String line;
List<String *>::iterator block_iter;
while (!feof(fp))
{
pluginName[0] = '\0';
debug[0] = '\0';
debugFlag = 0;
line.clear();
line._fread(fp);
/** quick hack */
char *ptr = const_cast<char *>(line.c_str());
while (*ptr)
{
if (*ptr == ';')
{
*ptr = '\0';
} else {
ptr++;
}
}
sscanf(line.c_str(), "%s %s", pluginName, debug);
if (!isalnum(*pluginName))
{
continue;
}
if (isalnum(*debug) && !strcmp(debug, "debug"))
{
debugFlag = 1;
}
bool skip = false;
for (block_iter = m_BlockList.begin();
block_iter != m_BlockList.end();
block_iter++)
{
if ((*block_iter)->compare(pluginName) == 0)
{
skip = true;
break;
}
}
if (skip || !strcmp(debug, "disabled"))
{
continue;
}
if (findPlugin(pluginName) != NULL)
{
continue;
}
CPlugin* plugin = loadPlugin(pluginsDir, pluginName, error, debugFlag);
if (plugin->getStatusCode() == ps_bad_load)
{
char errorMsg[255];
sprintf(errorMsg, "%s (plugin \"%s\")", error, pluginName);
plugin->setError(errorMsg);
AMXXLOG_Error("[AMXX] %s", plugin->getError());
}
}
fclose(fp);
return pCounter;
}
示例4: loadPluginsFromDir
int CPluginMngr::loadPluginsFromDir(const char* dir, bool debug ){
char pluginName[ 256 ],
error[ 256 ],
dirFull[ 256 ];
char * ext = 0;
#if defined WIN32
build_pathname_r( dirFull , sizeof( dirFull ) , "%s\\*" , dir );
_finddata_t fd;
intptr_t handle = _findfirst( dirFull , &fd);
if (handle < 0){
return 0;
}
while (!_findnext(handle, &fd)){
if ( !strcmp ( fd.name , ".") || !strcmp ( fd.name , "..") ){
continue;
}
ext = strrchr( fd.name, '.' );
if( !ext || strcmp( ext , ".amxx" ) ){
continue;
}
*ext = '\0';
strncpy( pluginName , fd.name , ext - ( fd.name ) );
pluginName[ ext - ( fd.name ) ] = '\0';
if ( findPlugin( pluginName ) != NULL ){
continue;
}
CPlugin* plugin = loadPlugin( dir, fd.name, error, debug , pluginName );
if (plugin->getStatusCode() == ps_bad_load){
char errorMsg[255];
sprintf(errorMsg, "%s (plugin \"%s\")", error, pluginName);
plugin->setError(errorMsg);
AMXXLOG_Error("[AMXX] %s", plugin->getError());
}
}
_findclose(handle);
#elif defined(__linux__) || defined(__APPLE__)
build_pathname_r( dirFull , sizeof( dirFull ) , "%s" , dir );
struct dirent *ep;
DIR *dp;
if (( dp = opendir( dirFull ) ) == NULL ){
return 0;
}
while ( ( ep = readdir( dp )) != NULL ){
if ( !strcmp ( ep -> d_name , ".") || !strcmp ( ep -> d_name , "..") ){
continue;
}
ext = strrchr( ep -> d_name, '.' );
if( !ext || strcmp( ext , ".amxx" ) ){
continue;
}
strncpy( pluginName , ep -> d_name , ext - ( ep -> d_name ) );
pluginName[ ext - ( ep -> d_name ) ] = '\0';
if ( findPlugin( pluginName ) != NULL ){
continue;
}
CPlugin* plugin = loadPlugin( dir, ep -> d_name, error, debug , pluginName );
if (plugin->getStatusCode() == ps_bad_load){
char errorMsg[255];
sprintf(errorMsg, "%s (plugin \"%s\")", error, pluginName);
plugin->setError(errorMsg);
AMXXLOG_Error("[AMXX] %s", plugin->getError());
}
}
closedir (dp);
#endif
return pCounter;
}