diff --git a/loader/gamedll.cpp b/loader/gamedll.cpp index f9ebdde..1d46c9f 100644 --- a/loader/gamedll.cpp +++ b/loader/gamedll.cpp @@ -213,7 +213,7 @@ public: QueryValveInterface fileSystemFactory, void *pGlobals) { - mm_backend = mm_DetermineBackend(engineFactory, game_name); + mm_backend = mm_DetermineBackend(engineFactory, gamedll_qvi, game_name); char error[255]; if (mm_backend == MMBackend_UNKNOWN) diff --git a/loader/loader.cpp b/loader/loader.cpp index 5e18bf0..8850a7f 100644 --- a/loader/loader.cpp +++ b/loader/loader.cpp @@ -270,7 +270,7 @@ mm_GetGameName(char *buffer, size_t size) } MetamodBackend -mm_DetermineBackend(QueryValveInterface engineFactory, const char *game_name) +mm_DetermineBackend(QueryValveInterface engineFactory, QueryValveInterface serverFactory, const char *game_name) { if (engineFactory("VEngineServer024", NULL) != NULL) { @@ -287,14 +287,16 @@ mm_DetermineBackend(QueryValveInterface engineFactory, const char *game_name) else if (engineFactory("VEngineServer022", NULL) != NULL && engineFactory("VEngineCvar007", NULL) != NULL) { - if (strcmp(game_name, "berimbau") == 0) + if (serverFactory("ServerGameClients004", NULL)) { + if (strcmp(game_name, "portal2") == 0) + { + return MMBackend_Portal2; + } + return MMBackend_Blade; } - if (strcmp(game_name, "portal2") == 0) - { - return MMBackend_Portal2; - } + if (engineFactory("EngineTraceServer004", NULL) != NULL) { return MMBackend_AlienSwarm; @@ -310,6 +312,7 @@ mm_DetermineBackend(QueryValveInterface engineFactory, const char *game_name) return MMBackend_Left4Dead2; } } + return MMBackend_Left4Dead; } else if (engineFactory("VEngineServer021", NULL) != NULL) diff --git a/loader/loader.h b/loader/loader.h index f638023..a39bd23 100644 --- a/loader/loader.h +++ b/loader/loader.h @@ -120,7 +120,7 @@ extern void mm_GetGameName(char *buffer, size_t size); extern MetamodBackend -mm_DetermineBackend(QueryValveInterface qvi, const char *game_name); +mm_DetermineBackend(QueryValveInterface engineFactory, QueryValveInterface serverFactory, const char *game_name); extern MetamodBackend mm_backend; diff --git a/loader/serverplugin.cpp b/loader/serverplugin.cpp index b54d763..2db2435 100644 --- a/loader/serverplugin.cpp +++ b/loader/serverplugin.cpp @@ -90,7 +90,7 @@ public: { mm_GetGameName(game_name, sizeof(game_name)); - mm_backend = mm_DetermineBackend(engineFactory, game_name); + mm_backend = mm_DetermineBackend(engineFactory, gsFactory, game_name); } if (mm_backend == MMBackend_UNKNOWN)