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'

Nieaktywny

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:

🔐 Ukryta Treść 🔐

 

🔄 Zmieniamy na poprawioną wersję:

🔐 Ukryta Treść 🔐

 

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

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.