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.  
  10. std::string loadit((current_path() / "libraries" / "pluginsa" / "scritps" / FileToLoad).string());
  11. Identifier = FileToLoad;
  12. FILE* f = fopen(loadit.c_str(), "rb");
  13. if (!f)
  14. {
  15. this->Initialized = false;
  16. }
  17. else
  18. {
  19. fclose(f);
  20. bool skip = false;
  21. for(std::vector<ScriptInfo>::iterator it = scripts.begin(); it != scripts.end(); ++it)
  22. {
  23. if(lstrcmp(it->Identifier.c_str(),this->Identifier.c_str()) == 0)
  24. {
  25. skip = true;
  26. break;
  27. }
  28. }
  29. if(skip)
  30. {
  31. this->Initialized = false;
  32. }
  33. else
  34. {
  35. memset((void*)&this->amx, 0, sizeof(AMX));
  36. int err = aux_LoadProgram(&amx,loadit.c_str());
  37. if (err != AMX_ERR_NONE)
  38. {
  39. logprintf("Script[%s]: Run time error %d: \"%s\"",// on line %ld\n",
  40. this->Identifier, err, aux_StrError(err));//, (long)amx->curline);
  41. }
  42. else
  43. {
  44. amx_CoreInit(&amx);
  45. amx_FloatInit(&amx);
  46. amx_StringInit(&amx);
  47. amx_FileInit(&amx);
  48. amx_TimeInit(&amx);
  49. amx_CustomInit(&amx);
  50. DoAmxLoad(&amx);
  51.  
  52. cell ret = 0;
  53. err = amx_Exec(&amx, &ret, AMX_EXEC_MAIN);
  54. if (err != AMX_ERR_NONE)
  55. {
  56. logprintf("Script[%s]: Run time error %d: \"%s\"",// on line %ld\n",
  57. this->Identifier, err, aux_StrError(err));//, (long)amx->curline);
  58. }
  59. else
  60. {
  61. this->Initialized = true;
  62. }
  63. }
  64. }
  65. }
  66. }
  67. ~ScriptInfo()
  68. {
  69. if(this->Initialized)
  70. {
  71. int tmp;
  72. if (!amx_FindPublic(&this->amx, "OnScriptExit", &tmp))
  73. amx_Exec(&this->amx, (cell*)&tmp, tmp);
  74. aux_FreeProgram(&this->amx);
  75. DoAmxUnload(&this->amx);
  76. amx_TimeCleanup(&this->amx);
  77. amx_FileCleanup(&this->amx);
  78. amx_StringCleanup(&this->amx);
  79. amx_FloatCleanup(&this->amx);
  80. amx_CoreCleanup(&this->amx);
  81. }
  82. }
  83. };
Not running #stdin #stdout 0s 0KB
stdin
Standard input is empty
stdout
Standard output is empty