Skocz do zawartości
Masz już aplikację Sharegon?

Odkryj wszystkie możliwości. Dowiedz się więcej

Sharegon.pl

Zainstaluj aplikację Sharegon i korzystaj z powiadomień push oraz licznika nowych aktywności bezpośrednio z ekranu głównego.

Aby zainstalować tę aplikację na iOS i iPadOS.
  1. Tap the Share icon in Safari
  2. Przewiń menu i stuknij Dodaj do ekranu początkowego.
  3. Stuknij Dodaj w prawym górnym rogu.
Zainstaluj aplikację Sharegon na Androidzie
  1. Otwórz Sklep Google Play na swoim smarfonie.
  2. Wyszukaj „Sharegon” w pasku wyszukiwania.
  3. Stuknij „Zainstaluj”, aby pobrać aplikację.

Naprawa błędu w funkcji 'do_shutdown'

Featured Replies

Opublikowano

Cześć wszystkim,😊

 

Podczas przeglądania kodu znalazłem problem w funkcji 'do_shutdown'. W oryginalnym kodzie nie było sprawdzania, czy wskaźnik postaci (ch) jest nullem, a jednak próbował korzystać z metod związanych z postacią, co mogło prowadzić do niezdefiniowanego zachowania. Co więcej, funkcja nie sprawdzała, czy dana postać posiada uprawnienia GM przed próbą wyłączenia serwera, co stanowiło potencjalne ryzyko związane z bezpieczeństwem.

 

🧩 Rozwiązanie:
📂 Lokalizacja pliku: 'game -> cmd_general.cpp'

 

🔍 Szukamy funkcji:

Tylko zalogowani Zaloguj się, aby wyświetlić chronioną treść Ten post zawiera treści dostępne tylko dla członków. Zaloguj się lub utwórz konto, aby odblokować całą zawartość tego posta. Zaloguj się Utwórz konto

 

🔄 Zmieniamy na poprawioną wersję:

 

W powyższej wersji dokonałem następujących zmian:

  • Zabezpieczyłem kod przed niebezpiecznym dostępem do metody GetName(), jeśli wskaźnik ch jest nullem.
  • Dodałem kontrolę uprawnień GM, aby upewnić się, że tylko postacie z odpowiednimi uprawnieniami mają możliwość wywołania tej funkcji.

 

  • 2 miesiące temu...
  • 2 miesiące temu...
  • 2 miesiące temu...
  • 1 rok później...
Opublikowano

Sorry za odkopanie, ale nie ma tego nigdzie a mega irytuje

C++Kod został skopiowany
w void Shutdown(int iSec) pod SendNotice(buf); dodajesz; if (g_shutdownEvent){	event_cancel(&g_shutdownEvent);	g_shutdownEvent = nullptr;} event_create(shutdown_event, info, 1); zmieniasz na g_shutdownEvent = event_create(shutdown_event, info, 1); ---nizej masz TPacketGGShutdown p; dodajesz nad tym 	// Funkcja od anulowania odliczania	if (g_shutdownEvent)	{		event_cancel(&g_shutdownEvent);		g_shutdownEvent = nullptr;		g_bNoMoreClient = false; // cofamy blokadę nowych klientów, jeśli była ustawiona 		SendNotice(LC_TEXT("Shutdown anulowany."));		sys_log(0, "Shutdown anulowan przez %s", ch->GetName());		return;	}

no i wsio a to sprawdza po prostu czy jest odliczanie jak jest nie nakłada tego jak wcześniej, następna anuluje funkcje.

A i macie LPEVENT g_shutdownEvent = nullptr; jak ktoś tego w ogóle używa xd

image.pngsharegon_storage_chat_uploader_2026-01-13_05-02-58.png

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Konto

Nawigacja

Skonfiguruj powiadomienia push w przeglądarce.

Chrome (Android)
  1. Stuknij ikonę kłódki obok paska adresu.
  2. Wybierz Uprawnienia → Powiadomienia.
  3. Dostosuj swoje preferencje.
Chrome (Desktop)
  1. Kliknij ikonę kłódki na pasku adresu.
  2. Wybierz Ustawienia witryny.
  3. Znajdź Powiadomienia i dostosuj swoje preferencje.