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

Problemy z implementacją systemu rarity feature

Nieaktywny

Featured Replies

Opublikowano
  • Programista
4 godziny temu, Mizuki napisał(a):

Chciałbym tylko powiedzieć, że kompilowanie source na VPS nawet z 6gb ram jest złym pomysłem. Miałem VPS na webh i nawet support rozkładał ręce, jak wpiszesz gmake -j15 to masz praktycznie 60% szans że za 2-3 kompilacja pod rząd vps się zapcha. Nie wiem czym jest to spowodowane bynajmniej u nich. Ale lokalnie mogę walnąć gmake -j30 i nic się nie dzieje. Jedynie pc zaczyna chodzić jak helikopter.

Pewnie się jakoś da zoptymalizować kompilację, albo walić gmake -j6 ale wtedy kompilacja trwa po 10 minut

Jak się mylę proszę mnie poprawić, bazuję na swoich doświadczeniach

Bez problemu można kompilować serwer na VPS podając komendzie gmake ilość procesów jaką na raz ma wykonać. Zasada jest bardzo prosta - jeśli masz mniej rdzeni niż podajesz komendzie, to scheduler systemu zacznie nimi żonglować przepychając je. Lokalna maszyna da sobie z tym radę, bo te rdzenie są fizycznie Twoje. VPS to współdzielone zasoby na jakimś hypervisorze, więc będzie rzucać błędami. Musiałbyś kupić sobie maszynę bare metal żeby puścić taką komendę, ale wtedy serwer zacznie żreć bardzo dużo CPU i RAM (zupełnie jak Twój lokalny sprzęt). Już lepiej ustawić j$(nproc), ale wtedy będzie wolniej (jeśli masz np. 6 dostępnych rdzeni wspóldzielonych).

Edytowane przez Thorek

  • Odpowiedzi 88
  • Wyświetleń 2,6 tys.
  • Dodano
  • Ostatniej odpowiedzi

Top użytkownicy w tym temacie

Najbardziej popularny wpis

  • Można też używać Worda. Nigdzie nie jest napisane co się używa, a czego nie.

  • Spróbuj skompilować i podrzuć kolejne błędy, ale umieść je poprzez blok kodu w pierwszej opcji menu edytora będą lepiej podświetlone. questlua_pc.cpp

  • Poprawiłem Ci głównie ten błąd, który miałeś na powyższym logu z błędu, sprawdź i daj znać jeśli pojawią się jakieś inne problemy. ui.py

Opublikowane grafiki

Opublikowano
  • Autor

Tak tworzy plik " game.core "

Dodałem wszystko z howto.txt lecz nie znalazłem lini:

self.AppendTextLine(locale.TOOLTIP_ITEM_MAGIC_DEF_POWER % magicDefencePower, self.GetChangeTextLineColor(magicDefencePower)) 

I nie wiem czy dobrze wstawiłem ten kod:

def GetBonusColor(self, attrSlot):
		lista_bonus = [['1','3000'],['2','80'],['3','12'],['4','12'],['5','12'],['6','12'],['7','8'],['8','20'],['9','20'],['10','30'],['11','30'],['12','8'],['13','8'],['14','8'],['15','10'],['16','10'],['17','10'],['18','20'],['19','20'],['20','20'],['21','20'],['22','20'],['23','10'],['24','10'],['25','10'],['26','10'],['27','15'],['28','15'],['29','15'],['30','15'],['31','15'],['32','15'],['33','15'],['34','15'],['35','15'],['36','15'],['37','15'],['38','15'],['39','15'],['41','5'],['43','20'],['44','20'],['45','20'],['48','1'],['53','50'],['71','10'],['72','35']]
		lista_color = [[grp.GenerateColor(051,255,255, 1.0)],[grp.GenerateColor(24,116,205, 1.0)],[grp.GenerateColor(0.63,0.13,0.94, 1.0)],[grp.GenerateColor(0,0.75,1, 1.0)],[grp.GenerateColor(0,0.79,0.34, 1.0)],[grp.GenerateColor(0.9490, 0.9058, 0.7568, 1.0)],[grp.GenerateColor(193,205,193, 1.0)],[grp.GenerateColor(131,139,131, 1.0)]]
		i2 = 0
		right = 0
		for i in xrange(player.ATTRIBUTE_SLOT_MAX_NUM):
			type = attrSlot[i][0]
			value = attrSlot[i][1]
			if 0 == value:
				continue
			else:
				for line in range(len(lista_bonus)):
					if int(lista_bonus[line-1][0]) == int(type):
						if int(lista_bonus[line-1][1]) == int(value) or int(lista_bonus[line-1][1]) < int(value):
							right = right+1
				i2 = i2+1
		for i3 in [0,1,2,3,4,5,6,7]:
			if int(i2) == int(int(right)+int(i3)):
				i2 = i3
		try:
			return lista_color[i2][0]
		except:
			dbg.TraceError("Fallo al cargar la lista de colores By: \~*CaNsErBeRo*~/")

uitooltip.py

Opublikowano

Dobrze w takim razie musisz zdebugować ten plik.

Wpisz w konsoli takie polecenia:

cd /usr/home/mt2/channel_control/channel_11/
gdb -batch -ex "bt full" channel_11 game.core > debug.txt

Po wszystkich tych komendach wciskasz enter, wybacz jeśli to dość trywialne informacje, ale różne osoby tu trafiają i wolę dokładnie opisać. Po wykonaniu tych operacji dostaniesz log błędów w konsoli. Powinien Ci wygenerować plik debug.txt w folderze channel_11 i wrzuć go tu.

Opublikowano
  • Autor

debug.txt:

[New LWP 100146]
[New LWP 100148]
[New LWP 100149]
[New LWP 100153]
Core was generated by `./channel_11'.
Program terminated with signal SIGABRT, Aborted.
Sent by thr_kill() from pid 967 and user 0.
#0  0x00b5f24f in ?? ()
[Current thread is 1 (LWP 100146)]
#0  0x00b5f24f in ?? ()
No symbol table info available.
#1  0x00b1901a in ?? ()
No symbol table info available.
#2  0x00b827fd in ?? ()
No symbol table info available.
#3  0x00b09348 in ?? ()
No symbol table info available.
#4  0x006eca47 in ?? ()
No symbol table info available.
#5  0x006f21a9 in ?? ()
No symbol table info available.
#6  0x0069824a in ?? ()
No symbol table info available.
#7  0x006918ae in ?? ()
No symbol table info available.
#8  0x006e1421 in ?? ()
No symbol table info available.
#9  0x006e5d17 in ?? ()
No symbol table info available.
#10 0x006d6313 in ?? ()
No symbol table info available.
#11 0x006b16d5 in ?? ()
No symbol table info available.
#12 0x007ac594 in ?? ()
No symbol table info available.
#13 0x007ac2dd in ?? ()
No symbol table info available.
#14 0x007ab355 in ?? ()
No symbol table info available.
#15 0x0062e11d in ?? ()
No symbol table info available.
#16 0x0062e23c in ?? ()
No symbol table info available.
#17 0x00000000 in ?? ()
No symbol table info available.
Opublikowano

Okey z logu wynika, że game jest stripowane wtedy nie będziemy mieli informacji z dumpa. Musisz zrobić rekompilację serwera ponownie, ale pierwsze musisz zmienić 1 rzecz. Wejdź do katalogu ze źródłem gry /src/entry-core/game/src/ będzie tam plik Makefile otwórz go i wrzuć tu zawartość. Powinna być tam dodana flaga strip i trzeba ją będzie usunąć następnie skompilować ponownie game.

Opublikowano

Makefile

Wrzuć ten plik podmień go. Następnie wejdź do katalogu /src/entry-core/game/src i wpisz gmake clean następnie gmake -j2 skompiluj ponownie game po tym wyczyść logi serwera, włącz serwer, usuń ten plik debug.txt, wywołaj ponownie ten błąd i powtórz czynności z debug i wrzuć tu plik debug.txt powinien powiedzieć dużo więcej.

Opublikowano
1 minutę temu, Sevence napisał(a):

Masz niepoprawny czas na serwerze musisz ustawić datę bo inaczej zmiany w pliku Makefile mogą nie być uwzględnione.

ntpdate pool.ntp.org

Warto wspomnieć o sposobie wyłączania maszyny. Nawet jeżeli ustawimy datę i godzinę to po wybraniu "Zapisz stan maszyny" czas znowu się rozjedzie.

Opublikowano
Teraz, ExoCarossa napisał(a):

Warto wspomnieć o sposobie wyłączania maszyny. Nawet jeżeli ustawimy datę i godzinę to po wybraniu "Zapisz stan maszyny" czas znowu się rozjedzie.

Wtedy dodaje się synchronizację przy starcie systemu w /etc/rc.conf

ntpd_enable="YES"
ntpd_sync_on_start="YES"
Opublikowano
4 minuty temu, Sevence napisał(a):

Wtedy dodaje się synchronizację przy starcie systemu w /etc/rc.conf

ntpd_enable="YES"
ntpd_sync_on_start="YES"

W moim przypadku nie działało bo system wracał do stanu zapisania maszyny, czyli wszystkie kanały, db, auth były już odpalone.

Opublikowano
1 minutę temu, ExoCarossa napisał(a):

W moim przypadku nie działało bo system wracał do stanu zapisania maszyny, czyli wszystkie kanały, db, auth były już odpalone.

To prawdopodobnie niepoprawnie zamykałeś VM. Jak masz konkretny problem to załóż swój temat tu pracujemy nad rozwiązaniem problemów z implementacją rarity feature. ;p

Opublikowano
  • Autor

Wykonałem wszystkie kroki, lecz jest teraz problem z utworzeniem pliku .txt

root@entry:/usr/home/mt2/channel_control/channel_11 # gdb -batch -ex "bt full" channel_11 game.core > debug.txt                                              /usr/home/mt2/channel_control/channel_11/game.core: No such file or directory.
No stack.
Opublikowano

To wynika z tego że nie został utworzony jeszcze game.core a on jest tworzony w momencie crasha serwera gry. Musisz wyczyścić logi przez panel, włączyć serwer, wejść do niego i wywołać moment kiedy padnie ci kanał gry i wtedy wykonać te czynności bo bez tego nie utworzy się plik game.core i nie masz czego zdebugować bo on nie istnieje.

Opublikowano
  • Autor

To jest nie chore:

root@entry:/usr/home/mt2 # cd /usr/home/mt2/channel_control/channel_11/
root@entry:/usr/home/mt2/channel_control/channel_11 # gdb -batch -ex "bt full" channel_11 game.core > debug.txt

warning: 4      thr_kill.S: No such file or directory
Opublikowano
  • Autor

tak, data aktualna, najpierw zmiana daty, poźniej kompilacja byłaZrzut ekranu 2025-08-17 161220.png

Edytowane przez benio101

Opublikowano

Dobra, chyba widzę w czym jest problem. Game się wywala, bo oryginalnie masz maksymalnie 3 sockety (od 0 do 2). Ten system rozszerza ilość socketów, a podczas tworzenia przedmiotów próbujesz dodawać wartości w socketach, których po prostu nie masz zainicjowanych i z tego wynika crash game. Pisałeś że nie wprowadzałeś żadnych zmian do bazy danych, a są wymagane. Mam wrażenie że pobrałeś jakiś niekompletny system.

Extended Sockets for Rarity Feature.rar

To musisz mieć również zaimplementowane bez tego nie będzie działać.

A tu pełna paczka tego systemu, nie wiem jakiej używasz, ale w nim było również to rozszerzenie ilości socketów pod rarity.

Rarity System.zip

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.