Skocz do zawartości
Opublikowano

Witam serdecznie, Czy ktoś mógłby jak najprościej wytłumaczyć mechanizm działania i komunikacji tego wszystkiego tak w chłopskich słowach? Przykładowo chciałbym zmienic (lub dodać) nowy bonus ala itemshopowy na zasadzie rekawicy/monety z isu. Chce aby jeden bonus (vip) dawał wszystko na raz - rekawice, trzecią ręke, monetke, oraz np. dodatkowo bonusy silny przeciwko nieumarłym 10%. Ale to najmniej istotne. Na jakiej zasadziec clieent lub też binka komunikuje sie z serwerem.

Skąd pobierany jest czas który jest obliczny po najechaniu na ikonke w lewym górnym roku (np. 3dni 12godzin 3min.) do konca) . W bince funkcja wywołuje odpowiedni pakiet zwracający dane z serwera? Skąd client (python gui) ma te dane? Binka obsługuje dane z serwera i pobiera gui pythona? Czy to gui pythona wywołuje funkcje z binki która wywołuje funkcje z backendu? Struktura jest ogromna i można sobie włosy wyrwać.
 

Rozwiązane przez Sevence

Przejdź do rozwiązania

Featured Replies

Opublikowano
  • Rozwiązanie

Wszystkie czasy pakietów VIP są określone w tabeli account: gold_expire, silver_expire, safebox_expire, fish_mind_expire, mariage_fast_expire, autoloot_expire w nich ustalasz do kiedy ma trwać dany bonus. Te wartości są ładowane podczas logowania na serwer. Czas trwania bonusu i ikona u góry jest określona jako affecty dokładnie: 

AFFECT_PREMIUM_START	= 500,
AFFECT_EXP_BONUS		= 500,	// 경험의 반지
AFFECT_ITEM_BONUS		= 501,	// 도둑의 장갑
AFFECT_SAFEBOX		= 502,  // PREMIUM_SAFEBOX,
AFFECT_AUTOLOOT		= 503,	// PREMIUM_AUTOLOOT,
AFFECT_FISH_MIND		= 504,	// PREMIUM_FISH_MIND,
AFFECT_MARRIAGE_FAST	= 505,	// 원앙의 깃털
AFFECT_GOLD_BONUS		= 506,	// 돈 드롭확률 50%증가
AFFECT_PREMIUM_END		= 509,

 

W binarce w InterfaceBase.h masz określone te same affecty muszą mieć te same identyfikatory i kolejność. W PythonCharacterModule masz określone nazwy modułów dla nich aby móc się odwołać w py. W Python uiaffectshower.py możesz się wtedy odwołać do chr i danego affectu. Pakiety zwykle są jako VIP możliwe do zakupu przez stronę lub ItemShop w grze wtedy po prostu aktualizujesz czas w danym pakiecie. Możesz stworzyć przedmioty na typie USE_AFFECT wykorzystując affecty od VIP. W ten sposób możesz tworzyć również nowe. Jeśli chodzi o logikę działania to masz po prostu warunki, które sprawdzają czy dany typ premium jest aktywny, czyli ma czas. 

 

W length.h masz enum z wszystkimi typami:

enum EPremiumTypes
{
	PREMIUM_EXP,
	PREMIUM_ITEM,
	PREMIUM_SAFEBOX,
	PREMIUM_AUTOLOOT,
	PREMIUM_FISH_MIND ,
	PREMIUM_MARRIAGE_FAST,
	PREMIUM_GOLD,
	PREMIUM_MAX_NUM,
};

 

I przykładowo w funkcji :GiveExp masz warunek tego typu:

if (to->GetPremiumRemainSeconds(PREMIUM_EXP) > 0)
{
	iExp += (iExp * 50 / 100);
}
Opublikowano
  • Autor

Super dzięki wielkie, moglbys jeszcze w wolnej chwili wskazac gdzie dokladnie jest inicjalizacja postaci? Podejrzewam ze wiekszosc rzeczy ladowana jest w pewnym momencie do singletonu aby zmniejszac obciazenie i ruch na bazie danych.

Opublikowano
  • Programista
Godzinę temu, ouiai napisał(a):

Super dzięki wielkie, moglbys jeszcze w wolnej chwili wskazac gdzie dokladnie jest inicjalizacja postaci? Podejrzewam ze wiekszosc rzeczy ladowana jest w pewnym momencie do singletonu aby zmniejszac obciazenie i ruch na bazie danych.

Singleton jest po to, aby odwoływać się do istniejącej już inicjalizacji klasy, więc to nie do końca tak, a postać ładuje się w CHARACTER::Initialize i funkcjach porozrzucanych po reszcie char.cpp

Edytowane przez Thorek

  • Sevence zmienił(a) tytuł na Jak działa mechanizm pakietów VIP?
Opublikowano

@ouiai Czy temat dla Ciebie został wyczerpany i uzyskałeś odpowiedzi, czy nadal masz jakieś pytanie w związku z powyższym? 

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

@ouiai Czy temat dla Ciebie został wyczerpany i uzyskałeś odpowiedzi, czy nadal masz jakieś pytanie w związku z powyższym? 

Tak na ten moment wszystko jasne, dziekuje bardzo. W razie innych pytan otworze nowy temat w przyszlosci, pozdrawiam.

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