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

Jak ustawić drop ryby zależne od poziomu wędki

Featured Replies

Opublikowano

Siema, szukam konkretnie tego, czy da się w jakiś sposób ustawić drop danej ryby np. Dużego Karasia od poziomu wędki np. +4 w jakiś czystych plikach martysamy czy trzeba się bawić w przeróbki. Jeśli ktoś nawet ma jakiś link czy cokolwiek do kodu który to implementuje lub wytłumaczy mi jak zmienić to w podstawie to chętnie się dowiem. :)

Rozwiązane przez gigakox2222

Opublikowano

Tak wszystko w pliku fishing.cpp ;) Polecam pierw sprzątnąć sobie ten burdel co tam jest i uporządkować lepiej i można sie bawić. Wbijasz sie w funkcje która określa jaką rybe masz wyłowić i walisz sobie ifa z twoimi zależnościami co na jakiej wędce można wyłowić, mysle ze spokojnie nawet GPT zrobi Ci to bez najmniejszych problemów i bugów jeśli sie nie znasz a plik nie jest duży.

Opublikowano
  • Autor
W dniu 26.11.2025 o 23:39, ouiai napisał(a):

Tak wszystko w pliku fishing.cpp ;) Polecam pierw sprzątnąć sobie ten burdel co tam jest i uporządkować lepiej i można sie bawić. Wbijasz sie w funkcje która określa jaką rybe masz wyłowić i walisz sobie ifa z twoimi zależnościami co na jakiej wędce można wyłowić, mysle ze spokojnie nawet GPT zrobi Ci to bez najmniejszych problemów i bugów jeśli sie nie znasz a plik nie jest duży.

Faktycznie GPT wygenerował, trzeba się męczyć żeby nie wypisał głupot, ale daje rade ;D

Opublikowano
  • Autor
  • Rozwiązanie

No to podsyłam całe DetermineFish, ogólnie to zrobione jest wszystko w fishing.cpp, wolałbym jednak by była możliwość wyboru od którego poziomu wędki co da się wyłowić w fishing.txt, ale na ten moment zostaje jak jest xD

C++Kod został skopiowany
int DetermineFish(LPCHARACTER ch){	int map_idx = ch->GetMapIndex();	int prob_idx = GetProbIndexByMapIndex(map_idx);	if (prob_idx < 0) 		return 0;	// ADD_PREMIUM	if (ch->GetPremiumRemainSeconds(PREMIUM_FISH_MIND) > 0 ||			ch->IsEquipUniqueGroup(UNIQUE_GROUP_FISH_MIND)) // żů°Łľî˝É Âřżë˝Ă °í±Ţ ą°°í±â Č®·ü »ó˝Â	{		if (quest::CQuestManager::instance().GetEventFlag("manwoo") != 0)			prob_idx = 3;		else			prob_idx = 2;	}	// END_OF_ADD_PREMIUM	int adjust = 0;	if (quest::CQuestManager::instance().GetEventFlag("fish_miss_pct") != 0)	{		int fish_pct_value = MINMAX(0, quest::CQuestManager::instance().GetEventFlag("fish_miss_pct"), 200);		adjust = (100-fish_pct_value) * fish_info[0].prob[prob_idx] / 100;	}	int rv = number(adjust + 1, g_prob_sum[prob_idx]);	int * p = std::lower_bound(g_prob_accumulate[prob_idx], g_prob_accumulate[prob_idx] + MAX_FISH, rv);	int fish_idx = p - g_prob_accumulate[prob_idx];	//if (!g_iUseLocale)	if ( LC_IsYMIR() )	{		if (fish_info[fish_idx].vnum >= 70040 && fish_info[fish_idx].vnum <= 70052)			return 0;	}	if (g_iUseLocale) // Áß±ążˇĽ­´Â ±Ýµ˘ľî¸®, ±Ýż­Ľč, Ŕşż­Ľč łŞżŔÁö ľĘ°Ô ÇÔ	{		DWORD vnum = fish_info[fish_idx].vnum;		if (vnum  50008 || vnum  50009 || vnum == 80008) 			return 0;	}	// LIMIT FISH BY ROD LEVEL	LPITEM rod = ch->GetWear(WEAR_WEAPON);	if (rod && rod->GetType() == ITEM_ROD)	{		int refine = rod->GetRefineLevel();		// 40% dla +1, 90% dla +20 (liniowo)		int chance = 40 + ((refine - 1) * 50) / 19;		chance = MINMAX(0, chance, 100);		if (number(1, 100) > chance)			return 0;		// TABELA: każdy poziom zawiera tylko NOWE ryby.		// Ryby z poziomów niższych są dziedziczone automatycznie.		static std::map<int, std::vector<DWORD>> rod_fish_table =		{			{1, {27803, 27805}},        // +1 › karaś, duży karaś			{2, {27804, 27806}},               // +2 › dodaje karpia			{3, {27807, 27808}},               // +3 › dodaje kolejną			{4, {27809, 27810}},              // +4			{5, {27811, 27812}},              // +5			{6, {27809, 27810}},              // +6			{20, {}}                    // +20 › nic nie trzeba wpisywać, bo dziedziczy wszystko		};		auto it = rod_fish_table.find(refine);		if (it != rod_fish_table.end())		{			// zbuduj listę ryb dostępnych dla tego poziomu			std::vector<DWORD> allowed;			// dodaj wszystkie ryby z poziomów niższych			for (int i = 1; i <= refine; ++i)			{				auto it2 = rod_fish_table.find(i);				if (it2 != rod_fish_table.end())					allowed.insert(allowed.end(), it2->second.begin(), it2->second.end());			}			DWORD caught = fish_info[fish_idx].vnum;			// jeśli złowiona ryba jest dozwolona › zwróć normalnie			if (std::find(allowed.begin(), allowed.end(), caught) != allowed.end())				return fish_idx;			// jeśli nie › przylosuj jedną z dozwolonych			if (!allowed.empty())			{				DWORD forced = allowed[number(0, allowed.size() - 1)];				return GetFishIndexByVnum(forced);			}		}	}	return (fish_idx);}


Trzeba jeszcze dodać GetFishIndexByVnum gdzieś nad int DetermineFishByProbIndex

C++Kod został skopiowany
int GetFishIndexByVnum(DWORD vnum){	for (int i = 0; i < MAX_FISH; ++i)		if (fish_info[i].vnum == vnum)			return i;	return 0;}
Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.

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.