Skocz do zawartości
Opublikowano

Pierwsza sprawa: Z tego co kojarzę to ten problem nie pojawia się pierwszy raz i również dotyczył lub wciąż dotyczy PL-a, korzystam z klienta z 2015 roku i antywirus blokuje mi klienta, bo wykrywa wirusa, mam nadzieję, że ktoś się orientuje w tym temacie i jest w stanie pomóc, source sprzed moich modyfikacji (wtedy również tak było) do pobrania tu: https://mega.nz/file/ALIQQDgL#707iE9j7PYfz63Er4jTmwZz0YNwqsviHD2rIVgjl18Y

Kompilacja w Visual Studio 2013

 

Druga sprawa: Problem z którym się spotykam to jest zmiana wartości w bazie danych po starcie, konkretniej:

Po starcie automatycznie zmieniają się wartości w item_proto specular oraz vnum range na domyślne czyli na 0, niezależnie czy jakakolwiek wartość jest podana wcześniej, czyli jeżeli przed startem zmienię te wartości np. Specular dla zbroi dam na 80, to po starcie zmieni się na 0,

Rozwiązane przez ramzes

Przejdź do rozwiązania

Featured Replies

Opublikowano

Z wykrywaniem pliku binarnego przez antywirusy to normalne większość klientów jest wykrywana jako wirus i ciężko tu zaradzić. Możesz spróbować podjąć różne działania, ale pewności nie ma. 

Jedną z możliwości to podpis pliku .exe, które potwierdzą autentyczność pliku. Druga sprawa to źródło jest napisane w starym standardzie i wykorzystuje niebezpieczne funkcje, które mogą być wykrywane przez wirusy jako zagrożenie. 

 

Odnośnie drugiego problemu to może się tak dziać ze względu na to że item_proto i mob_proto są odczytywane z plików .txt więc zmiany w bazie nic nie dadzą musisz skonwertować do formatu txt te zmiany. 

Inna rozwiązanie to wyłączyć odczytywanie proto z txt i przełączyć na odczyt ze sql tu masz poradnik na ten temat: 

 

Opublikowano
  • Autor
21 minut temu, Sevence napisał(a):

Z wykrywaniem pliku binarnego przez antywirusy to normalne większość klientów jest wykrywana jako wirus i ciężko tu zaradzić. Możesz spróbować podjąć różne działania, ale pewności nie ma. 

Jedną z możliwości to podpis pliku .exe, które potwierdzą autentyczność pliku. Druga sprawa to źródło jest napisane w starym standardzie i wykorzystuje niebezpieczne funkcje, które mogą być wykrywane przez wirusy jako zagrożenie. 

 

Odnośnie drugiego problemu to może się tak dziać ze względu na to że item_proto i mob_proto są odczytywane z plików .txt więc zmiany w bazie nic nie dadzą musisz skonwertować do formatu txt te zmiany. 

Inna rozwiązanie to wyłączyć odczytywanie proto z txt i przełączyć na odczyt ze sql tu masz poradnik na ten temat: 

 

Cóż, co do pierwszego, jeżeli chodzi o stary standard, to przejście na C++17 również nic nie zmieniło w tym temacie, chociaż wciąż bardzo prawdopodobne, że występują owe funkcje.

 

2. item_proto oraz mob_proto mam odczytywane właśnie bezpośrednio z db i w tym sęk, ponieważ za każdym startem automatycznie zamienia wartości na domyślne ustawione np. poprzez Navicat i obecnie po prostu używam query, aby można było uruchomić kanały (wywala kanały z powodu systemu Alchemii, gdy Vnum range jest na 0), z kolei zatrzymania nic takiego nie ma miejsca, podejrzewam, że jest to jakiś problem w kodzie źródłowym db, ale gdy przejrzałem na szybko, to nie rzuciło mi się w oczy nic co by za to odpowiadało. 

Edytowane przez ramzes

Opublikowano

Bardziej miałem na myśli podpisanie pliku CA - Certificate Authority możesz wybrać darmowy certyfikat lub płatny może to coś da. 

 

Możesz wrzucić tu jakieś logi z bazy danych? Jakich plików źródła używasz? 

Jakie masz logi w momencie wywalenia kanałów? Możesz opublikować plik ClientManagerBoot.cpp? 

Opublikowano
  • Autor
11 minut temu, Sevence napisał(a):

Bardziej miałem na myśli podpisanie pliku CA - Certificate Authority możesz wybrać darmowy certyfikat lub płatny może to coś da. 

 

Możesz wrzucić tu jakieś logi z bazy danych? Jakich plików źródła używasz? 

Jakie masz logi w momencie wywalenia kanałów? Możesz opublikować plik ClientManagerBoot.cpp? 

Co do pierwszego, to poczytam i zobaczymy jak się sprawy mają, dzięki.

 

2. Bazuję na plikach mainline, w logach dosłownie nic na ten temat nie ma, odnośnie wywalenia kanałów, to samoczynnie wyłącza wtedy kanały, bo się nie zgadza id z special_item_group.txt, natomiast znalazłem teraz coś takiego w ClientManagerBoot.cpp

bool CClientManager::MirrorItemTableIntoDB()
{
	for (itertype(m_vec_itemTable) it = m_vec_itemTable.begin(); it != m_vec_itemTable.end(); it++)
	{
		if (g_stLocaleNameColumn != "name")
		{
			const TItemTable& t = *it;
			char query[4096];
			snprintf(query, sizeof(query),
				"replace into item_proto%s ("
				"vnum, type, subtype, name, %s, gold, shop_buy_price, weight, size, "
				"flag, wearflag, antiflag, immuneflag, "
				"refined_vnum, refine_set, magic_pct, socket_pct, addon_type, "
				"limittype0, limitvalue0, limittype1, limitvalue1, "
				"applytype0, applyvalue0, applytype1, applyvalue1, applytype2, applyvalue2, "
				"value0, value1, value2, value3, value4, value5 ) "
				"values ("
				"%d, %d, %d, \"%s\", \"%s\", %d, %d, %d, %d, "
				"%d, %d, %d, %d, "
				"%d, %d, %d, %d, %d, "
				"%d, %ld, %d, %ld, "
				"%d, %ld, %d, %ld, %d, %ld, "
				"%ld, %ld, %ld, %ld, %ld, %ld )",
				GetTablePostfix(), g_stLocaleNameColumn.c_str(), 
				t.dwVnum, t.bType, t.bSubType, t.szName, t.szLocaleName, t.dwGold, t.dwShopBuyPrice, t.bWeight, t.bSize,
				t.dwFlags, t.dwWearFlags, t.dwAntiFlags, t.dwImmuneFlag, 
				t.dwRefinedVnum, t.wRefineSet, t.bAlterToMagicItemPct, t.bGainSocketPct, t.sAddonType,
				t.aLimits[0].bType, t.aLimits[0].lValue, t.aLimits[1].bType, t.aLimits[1].lValue,
				t.aApplies[0].bType, t.aApplies[0].lValue, t.aApplies[1].bType, t.aApplies[1].lValue, t.aApplies[2].bType, t.aApplies[2].lValue,
				t.alValues[0], t.alValues[1], t.alValues[2], t.alValues[3], t.alValues[4], t.alValues[5]);
			CDBManager::instance().AsyncQuery(query);
		}
		else
		{
			const TItemTable& t = *it;
			char query[4096];
			snprintf(query, sizeof(query),
				"replace into item_proto%s ("
				"vnum, type, subtype, name, gold, shop_buy_price, weight, size, "
				"flag, wearflag, antiflag, immuneflag, "
				"refined_vnum, refine_set, magic_pct, socket_pct, addon_type, "
				"limittype0, limitvalue0, limittype1, limitvalue1, "
				"applytype0, applyvalue0, applytype1, applyvalue1, applytype2, applyvalue2, "
				"value0, value1, value2, value3, value4, value5 ) "
				"values ("
				"%d, %d, %d, \"%s\", %d, %d, %d, %d, "
				"%d, %d, %d, %d, "
				"%d, %d, %d, %d, %d, "
				"%d, %ld, %d, %ld, "
				"%d, %ld, %d, %ld, %d, %ld, "
				"%ld, %ld, %ld, %ld, %ld, %ld )",
				GetTablePostfix(), 
				t.dwVnum, t.bType, t.bSubType, t.szName, t.dwGold, t.dwShopBuyPrice, t.bWeight, t.bSize,
				t.dwFlags, t.dwWearFlags, t.dwAntiFlags, t.dwImmuneFlag, 
				t.dwRefinedVnum, t.wRefineSet, t.bAlterToMagicItemPct, t.bGainSocketPct, t.sAddonType,
				t.aLimits[0].bType, t.aLimits[0].lValue, t.aLimits[1].bType, t.aLimits[1].lValue,
				t.aApplies[0].bType, t.aApplies[0].lValue, t.aApplies[1].bType, t.aApplies[1].lValue, t.aApplies[2].bType, t.aApplies[2].lValue,
				t.alValues[0], t.alValues[1], t.alValues[2], t.alValues[3], t.alValues[4], t.alValues[5]);
			CDBManager::instance().AsyncQuery(query);
		}
	}
	return true;
}

I podejrzewam, że to właśnie tu tkwi problem... Nie dopisałem w ogóle vnum range, nie ma też specular, socket_pct ani addon_type.

Opublikowano

Musiałbym zobaczyć cały plik ClientManagerBoost bo nie wiem w jaki sposób odczytujesz sql. 

Opublikowano
  • Autor
  • Rozwiązanie
2 godziny temu, Sevence napisał(a):

Musiałbym zobaczyć cały plik ClientManagerBoost bo nie wiem w jaki sposób odczytujesz sql. 

Mialem rację z tym, naprawione, wystarczyło dopisać vnum_range w metodzie mirror, będę musiał zrobić jeszcze specular, ale trochę roboty z tym z racji niepoprawnie ułożonego item_proto, w każdym razie można uznać za naprawione😁

Edytowane przez ramzes

  • Sevence zablokował(a) ten temat
Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.