Naprawa błędu powodującego awarię serwera przez brak pustej linii w pliku index map

image.png

Cześć,

Kolejny problem dość istotny natknąłem się na niego podczas dodawania map z oficjalnego klienta.

Opis problemu

W folderze map na serwerze istnieje plik index, który przypisuje index konkretnemu folderowi map. Jeśli podczas dodawania nowej mapy nie pozostawisz pustego wiersza na samym końcu kanał gry na którym jest ostatni index może już podczas startowania się nie uruchomić, a reszta kanałów dostanie awarii podczas próby zalogowania. W moim przypadku kanał specjalny na którym była mapa ślubna nawet nie wystartował.

Istnieje jeszcze jeden problem na który też się natknąłem podczas dodawania mapy. Dodałem mapkę jak gdyby nigdy nic to była mapa m1 wchodzę do gry i widzę podwójnie respione NPC i miałem lekkie zdziwienie o co chodzi okazuje się że gdy w pliku index na końcu zrobisz przypadkiem 2 puste wiersze (2 entery) ostatnia mapa może się załadować podwójnie.

Prezentacja

2026-10-18 12-16-33.mp4

Rozwiązanie

📁game -> sectree_manager.cpp‎

🔍Szukaj funkcji

int SECTREE_MANAGER::Build(const char * c_pszListFileName, const char* c_pszMapBasePath)
{

🔍Szukaj

char szMapName[256];

♻️Zamień

std::string strMapName;

🔍Szukaj

*strrchr(buf, '\n') = '\0';

♻️Zamień

buf[strcspn(buf, "\r\n")] = '\0';

🔍Szukaj

sscanf(buf, " %d %s ", &iIndex, szMapName);

♻️Zamień

std::istringstream line(buf);
if (!(line >> iIndex >> strMapName))
	continue;

const char * szMapName = strMapName.c_str();

Prezentacja po poprawce

2026-10-18 12-32-06.mp4

Świetny poradnik, teraz wiem jak naprawić błąd powodujący awarię serwera przez brak pustej linii w pliku index map map_index.html