MCPcopy Create free account
hub / github.com/NoMercy-ac/NoMercy / LoadPlugins

Method LoadPlugins

Source/Client/NM_Engine/Plugin.cpp:34–104  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

32}
33
34bool CPlugin::LoadPlugins()
35{
36 char* szCurDir = (char*)malloc(MAX_PATH);
37 GetCurrentDirectoryA(MAX_PATH,szCurDir);
38 strcat_s(szCurDir,MAX_PATH / sizeof(char),"\\*");
39 if (!strlen(szCurDir))
40 return false;
41
42 WIN32_FIND_DATAA FindDataw32;
43 auto hFind = g_winapiApiTable->FindFirstFileA(szCurDir,&FindDataw32);
44 if (!hFind || hFind == INVALID_HANDLE_VALUE)
45 return false;
46
47 do
48 {
49 if (!(FindDataw32.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
50 {
51 if(strstr(FindDataw32.cFileName,".nmp") != NULL)
52 {
53 // IsCompressed & Decompress via LZ4
54
55 // Serverside hash == Current hash check
56
57 // Decrypt XOR'd aes key
58
59 // Decrypt via AES256
60
61 // Serverside hash check
62
63 // Load with serverside selected type(LoadLibrary or Manual map)
64
65 auto hPlugin = g_winapiApiTable->LoadLibraryA(FindDataw32.cFileName);
66 if (!hPlugin)
67 {
68 printf("Plugin: %s can NOT loaded! Error: %u\n", FindDataw32.cFileName, GetLastError());
69 continue;
70 }
71
72 auto pPlugin = std::make_shared<SPluginData>();
73 if (!IS_VALID_SMART_PTR(pPlugin))
74 {
75 printf("Plugin data struct can not allocated for: %s. Error: %u\n", FindDataw32.cFileName, GetLastError());
76 continue;
77 }
78
79 pPlugin->hPlugin = hPlugin;
80 pPlugin->dwName = (DWORD_PTR)g_winapiApiTable->GetProcAddress(hPlugin, "PluginName");
81 pPlugin->dwVersion = (DWORD_PTR)g_winapiApiTable->GetProcAddress(hPlugin, "PluginVersion");
82 pPlugin->dwErrorMessage = (DWORD_PTR)g_winapiApiTable->GetProcAddress(hPlugin, "PluginErrorMessage");
83 pPlugin->dwInitRoutine = (DWORD_PTR)g_winapiApiTable->GetProcAddress(hPlugin, "PluginOnInit");
84 pPlugin->dwFinalRoutine = (DWORD_PTR)g_winapiApiTable->GetProcAddress(hPlugin, "PluginOnFinal");
85
86 if (pPlugin->dwName && pPlugin->dwVersion && pPlugin->dwErrorMessage && pPlugin->dwInitRoutine && pPlugin->dwFinalRoutine)
87 {
88 printf("Plugin: %s succesfully loaded!\n", FindDataw32.cFileName);
89
90 m_vLoadedPlugins.push_back(pPlugin);
91 continue;

Callers 1

OnClientInitMethod · 0.80

Calls 1

sizeMethod · 0.45

Tested by

no test coverage detected