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ę.

Szybsze podnoszenie przedmiotów

Featured Replies

Opublikowano

Cześć,

 

Przedstawiam zmodyfikowaną funkcję 'SendClickItemPacket', która ma usunięty mechanizm ograniczający wysyłanie pakietów co 500 milisekund. Oznacza to, że teraz przedmioty można podnosić bez żadnego opóźnienia! Jest to ogromna zmiana, która zwiększy komfort gry i sprawi, że zbieranie przedmiotów będzie jeszcze przyjemniejsze.

 

Zmiany:

  • Zmieniłem typ danych z DWORD na uint32_t. 
  • Usunąłem logikę dotyczącą opóźnienia wysyłania pakietu. 
  • Zastosowałem bardziej bezpośrednie porównanie właściciela przedmiotu. 
  • Użyłem std::format dla bardziej czytelnego formatowania ciągu znaków.
  • Zmieniłem nazwy zmiennych na bardziej pasujące 'pItemData' -> 'itemDataPtr'.
  • Proces wysyłania pakietu jest teraz bardziej bezpośredni i niezależny od innych warunków.

 

Domyślna wersja:

instant-pickup-unfast-ex.gif

 

Nowa wersja:

intant-pick-ex.gif

 

 

Implementacja

📁 Lokalizacja pliku: 'UserInterface -> PythonPlayer.cpp'

 

 🔍 Szukaj

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

 

♻️ Zamień:

 

 

📁 Lokalizacja pliku: 'UserInterface -> PythonPlayer.h'

 

 🔍 Szukaj

 

♻️ Zamień:

 

Opublikowano
W dniu 30.09.2023 o 16:03, Sevence napisał(a):

Cześć,

 

Przedstawiam zmodyfikowaną funkcję 'SendClickItemPacket', która ma usunięty mechanizm ograniczający wysyłanie pakietów co 500 milisekund. Oznacza to, że teraz przedmioty można podnosić bez żadnego opóźnienia! Jest to ogromna zmiana, która zwiększy komfort gry i sprawi, że zbieranie przedmiotów będzie jeszcze przyjemniejsze.

 

Zmiany:

  • Zmieniłem typ danych z DWORD na uint32_t. 
  • Usunąłem logikę dotyczącą opóźnienia wysyłania pakietu. 
  • Zastosowałem bardziej bezpośrednie porównanie właściciela przedmiotu. 
  • Użyłem std::format dla bardziej czytelnego formatowania ciągu znaków.
  • Zmieniłem nazwy zmiennych na bardziej pasujące 'pItemData' -> 'itemDataPtr'.
  • Proces wysyłania pakietu jest teraz bardziej bezpośredni i niezależny od innych warunków.

 

Domyślna wersja:

instant-pickup-unfast-ex.gif

 

Nowa wersja:

intant-pick-ex.gif

 

 

Implementacja

📁 Lokalizacja pliku: 'UserInterface -> PythonPlayer.cpp'

 

 🔍 Szukaj

CKod został skopiowany
void CPythonPlayer::SendClickItemPacket(DWORD dwIID){	if (IsObserverMode())		return; 	static DWORD s_dwNextTCPTime = 0; 	DWORD dwCurTime=ELTimer_GetMSec(); 	if (dwCurTime >= s_dwNextTCPTime)	{		s_dwNextTCPTime=dwCurTime + 500; 		const char * c_szOwnerName;		if (!CPythonItem::Instance().GetOwnership(dwIID, &c_szOwnerName))			return; 		if (strlen(c_szOwnerName) > 0)		if (0 != strcmp(c_szOwnerName, GetName()))		{			CItemData * pItemData;			if (!CItemManager::Instance().GetItemDataPointer(CPythonItem::Instance().GetVirtualNumberOfGroundItem(dwIID), &pItemData))			{				Tracenf("CPythonPlayer::SendClickItemPacket(dwIID=%d) : Non-exist item.", dwIID);				return;			}			if (!IsPartyMemberByName(c_szOwnerName) || pItemData->IsAntiFlag(CItemData::ITEM_ANTIFLAG_DROP | CItemData::ITEM_ANTIFLAG_GIVE))			{				PyCallClassMemberFunc(m_ppyGameWindow, "OnCannotPickItem", Py_BuildValue("()"));				return;			}		} 		CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();		rkNetStream.SendItemPickUpPacket(dwIID);	}}

 

♻️ Zamień:

CKod został skopiowany
void CPythonPlayer::SendClickItemPacket(uint32_t itemID){	if (IsObserverMode())	{		return;	} 	// Pobierz właściciela przedmiotu	const char* rawOwnerName; 	if (!CPythonItem::Instance().GetOwnership(itemID, &rawOwnerName))	{		return;	} 	// Sprawdź, czy przedmiot należy do kogoś innego	bool isDifferentOwner = rawOwnerName[0] != '\0' && std::strcmp(rawOwnerName, GetName()) != 0; 	if (isDifferentOwner)	{		// Pobierz dane przedmiotu		CItemData* itemDataPtr;		if (!CItemManager::Instance().GetItemDataPointer(CPythonItem::Instance().GetVirtualNumberOfGroundItem(itemID), &itemDataPtr))		{			Tracenf(std::format("Failed to pick up item with ID {}: Item does not exist.", itemID).c_str());			return;		} 		// Sprawdzenie, czy przedmiot można podnieść		if (!IsPartyMemberByName(rawOwnerName) || itemDataPtr->IsAntiFlag(CItemData::ITEM_ANTIFLAG_DROP | CItemData::ITEM_ANTIFLAG_GIVE))		{			PyCallClassMemberFunc(m_ppyGameWindow, "OnCannotPickItem", Py_BuildValue("()"));			return;		}	}		//Wysyłanie pakietu do podniesienia przedmiotu	auto& rkNetStream = CPythonNetworkStream::Instance();	rkNetStream.SendItemPickUpPacket(itemID);}

 

 

📁 Lokalizacja pliku: 'UserInterface -> PythonPlayer.h'

 

 🔍 Szukaj

CKod został skopiowany
void	SendClickItemPacket(DWORD dwIID);

 

♻️ Zamień:

CKod został skopiowany
void SendClickItemPacket(uint32_t itemID);

 

'format': is not a member of 'std'

Opublikowano
  • Autor
W dniu 30.09.2023 o 20:46, ExoCarossa napisał(a):

'format': is not a member of 'std'

Wymagany standard C++20 - https://en.cppreference.com/w/cpp/utility/format

 

 

Jeśli nie masz możliwości użycia tego standardu to zmień tak:

CKod został skopiowany
Tracenf("Failed to pick up item with ID {}: Item does not exist.", itemID);

 

  • 4 miesiące temu...
  • 2 tygodnie później...
Opublikowano

x

Edytowane przez avilui
przypadkowy komentarz

  • 2 tygodnie później...
Opublikowano

Bardzo Ci dziękuję za pomoc!

 

  • 11 miesięcy temu...

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.