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

Nieaktywny

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

Przejdź do rozwiązania
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
2 godziny temu, 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

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

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.