fork download
  1. struct ScriptInfo
  2. {
  3. AMX amx;
  4. std::string Identifier;
  5. bool Initialized;
  6. ScriptInfo(std::string FileToLoad)
  7. {
  8. this->Initialized = false;
  9. char string[MAX_PATH];
  10. GetCurrentDirectory(MAX_PATH,string);
  11. lstrcat(string,"\\libraries\\pluginsa\\scripts\\");
  12. std::stringstream stream;
  13. stream << string;
  14. stream << FileToLoad;
  15. Identifier = FileToLoad;
  16. FILE* f = fopen(stream.str().c_str(), "rb");
  17. if (!f)
  18. {
  19. for(std::vector<ScriptInfo>::iterator it = scripts.begin(); it != scripts.end(); ++it)
  20. {
  21. if(lstrcmp(it->Identifier.c_str(),this->Identifier.c_str()) == 0)
  22. {
  23. scripts.erase(it);
  24. break;
  25. }
  26. }
  27. }
  28. else
  29. {
  30. fclose(f);
  31. for(std::vector<ScriptInfo>::iterator it = scripts.begin(); it != scripts.end(); ++it)
  32. {
  33. if(lstrcmp(it->Identifier.c_str(),this->Identifier.c_str()) == 0)
  34. {
  35. scripts.erase(it);
  36. break;
  37. }
  38. }
  39. memset((void*)&this->amx, 0, sizeof(AMX));
  40. int err = aux_LoadProgram(&amx,this->Identifier.c_str());
  41. if (err != AMX_ERR_NONE)
  42. {
  43. logprintf("Script[%s]: Run time error %d: \"%s\"",// on line %ld\n",
  44. this->Identifier, err, aux_StrError(err));//, (long)amx->curline);
  45. for(std::vector<ScriptInfo>::iterator it = scripts.begin(); it != scripts.end(); ++it)
  46. {
  47. if(lstrcmp(it->Identifier.c_str(),this->Identifier.c_str()) == 0)
  48. {
  49. scripts.erase(it);
  50. break;
  51. }
  52. }
  53. }
  54. else
  55. {
  56. amx_CoreInit(&amx);
  57. amx_FloatInit(&amx);
  58. amx_StringInit(&amx);
  59. amx_FileInit(&amx);
  60. amx_TimeInit(&amx);
  61. amx_CustomInit(&amx);
  62. DoAmxLoad(&amx);
  63.  
  64. cell ret = 0;
  65. err = amx_Exec(&amx, &ret, AMX_EXEC_MAIN);
  66. if (err != AMX_ERR_NONE)
  67. {
  68. logprintf("Script[%s]: Run time error %d: \"%s\"",// on line %ld\n",
  69. this->Identifier, err, aux_StrError(err));//, (long)amx->curline);
  70. for(std::vector<ScriptInfo>::iterator it = scripts.begin(); it != scripts.end(); ++it)
  71. {
  72. if(lstrcmp(it->Identifier.c_str(),this->Identifier.c_str()) == 0)
  73. {
  74. scripts.erase(it);
  75. break;
  76. }
  77. }
  78. }
  79. else
  80. {
  81. this->Initialized = true;
  82. }
  83. }
  84. }
  85. }
  86. ~ScriptInfo()
  87. {
  88. if(this->Initialized)
  89. {
  90. int tmp;
  91. if (!amx_FindPublic(&this->amx, "OnScriptExit", &tmp))
  92. amx_Exec(&this->amx, (cell*)&tmp, tmp);
  93. }
  94. }
  95. };
Not running #stdin #stdout 0s 0KB
stdin
Standard input is empty
stdout
Standard output is empty