Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Zmiana wyglądu Kostium<->Zbroja


Rekomendowane odpowiedzi

Opublikowano

Jeżeli ktoś ma błąd z uiinventory (nie podam już dokładnie syserr bo nie skopiowałem)

 

nad wndEquip = self.GetChild("CostumeSlot"

dodać GetObject = self.GetChild

 

A co do tematu - działa.  :)

would u miss me? 1105814451671351221478.png

 

 

 

Opublikowano

Jeżeli ktoś ma błąd z uiinventory (nie podam już dokładnie syserr bo nie skopiowałem)

 

nad wndEquip = self.GetChild("CostumeSlot"

dodać GetObject = self.GetChild

 

A co do tematu - działa.  :)

 

dziwne, poprawiono

Opublikowano

Coś to nie działa. Wywala cały kanał jak chcę się wylogować albo /g (przy założonym kostiumie - nie ważne czy widoczny czy nie)

 

sysser czysty a db pokazuje tylko :

Process: FDWATCH: peer null in event: ident 20

Nie to nie jest wina żadnego moba ani mapy tylko tego systemu. (po usunięciu go wszystko działa)

Opublikowano

Coś to nie działa. Wywala cały kanał jak chcę się wylogować albo /g (przy założonym kostiumie - nie ważne czy widoczny czy nie)

 

sysser czysty a db pokazuje tylko :

Process: FDWATCH: peer null in event: ident 20

Nie to nie jest wina żadnego moba ani mapy tylko tego systemu. (po usunięciu go wszystko działa)

 

źle go dodajesz, wrzuć char_item.cpp i item.cpp

Opublikowano

To miałeś dodać a nie zakomentować w item.cpp

//if (m_pOwner->GetWear(WEAR_COSTUME_BODY) != 0 && m_pOwner->GetQuestFlag("kostium.zmiana") != 1)

ma być tak

if (m_pOwner->GetWear(WEAR_COSTUME_BODY) != 0 && m_pOwner->GetQuestFlag("kostium.zmiana") != 1)

 

a tego

if (0 != m_pOwner->GetWear(WEAR_COSTUME_BODY))

 

Ma nie być.

 

Poza tym, miałeś dać całe pliki, sorry ale tak ci nikt nie pomoże.

Opublikowano

 

To miałeś dodać a nie zakomentować w item.cpp

//if (m_pOwner->GetWear(WEAR_COSTUME_BODY) != 0 && m_pOwner->GetQuestFlag("kostium.zmiana") != 1)

ma być tak

if (m_pOwner->GetWear(WEAR_COSTUME_BODY) != 0 && m_pOwner->GetQuestFlag("kostium.zmiana") != 1)

 

a tego

if (0 != m_pOwner->GetWear(WEAR_COSTUME_BODY))

 

Ma nie być.

 

Poza tym, miałeś dać całe pliki, sorry ale tak ci nikt nie pomoże.

 

 

Wiem co miałem zrobić i tak zrobiłem... dałem aktualnie wyglądające fragmenty ZAKOMENTOWANE bo skoro to nie działa to po co czekać aż ktoś pomoże lepiej zakomentować NIE USUWAĆ i robić coś innego... (wszystko to co jest w tym temacie jest zakomentowane żebym mógł poruszać się swobodnie po serwerze...)

 

W sumie to nie rozumiem po co całe pliki skoro tylko w tym kodzie jest błąd albo ja go zrobiłem (wszystko inne co dodałem działa).

Opublikowano

Ale to serwer łapie crasha czy wywala postać? logi wyglądają okej, sam kod też wygląda na poprawnie dodany.

Jeszcze pytanie czy używasz ccache do kompilacji?

Opublikowano

Ale to serwer łapie crasha czy wywala postać? logi wyglądają okej, sam kod też wygląda na poprawnie dodany.

Jeszcze pytanie czy używasz ccache do kompilacji?

 

wywala tylko ch1

63758589325264119686.png

Nie używam ccache.

Opublikowano

jak nie masz założonego kostiumu wszystko działa poprawnie jak założysz i zrobisz tp wywala kanał?

 

zrób tak i daj screen do którego momentu dochodzi

WORD CHARACTER::GetPart(BYTE bPartPos) const
{
	assert(bPartPos < PART_MAX_NUM);
	
	ChatPacket(CHAT_TYPE_INFO, "sprawdzam 1");
	
	if(bPartPos == PART_MAIN && GetWear(WEAR_COSTUME_BODY) && GetQuestFlag("kostium.zmiana") == 1)
		ChatPacket(CHAT_TYPE_INFO, "sprawdzam 2");
		
		if(const LPITEM pArmor = GetWear(WEAR_BODY))
			ChatPacket(CHAT_TYPE_INFO, "sprawdzam 3");
			
			return (NULL != pArmor) ? pArmor->GetVnum() : GetOriginalPart(PART_MAIN);
			ChatPacket(CHAT_TYPE_INFO, "nadano");			

	return m_pointsInstant.parts[bPartPos];
	ChatPacket(CHAT_TYPE_INFO, "return");
}
Opublikowano

 

jak nie masz założonego kostiumu wszystko działa poprawnie jak założysz i zrobisz tp wywala kanał?

 

zrób tak i daj screen do którego momentu dochodzi

WORD CHARACTER::GetPart(BYTE bPartPos) const
{
	assert(bPartPos < PART_MAX_NUM);
	
	ChatPacket(CHAT_TYPE_INFO, "sprawdzam 1");
	
	if(bPartPos == PART_MAIN && GetWear(WEAR_COSTUME_BODY) && GetQuestFlag("kostium.zmiana") == 1)
		ChatPacket(CHAT_TYPE_INFO, "sprawdzam 2");
		
		if(const LPITEM pArmor = GetWear(WEAR_BODY))
			ChatPacket(CHAT_TYPE_INFO, "sprawdzam 3");
			
			return (NULL != pArmor) ? pArmor->GetVnum() : GetOriginalPart(PART_MAIN);
			ChatPacket(CHAT_TYPE_INFO, "nadano");			

	return m_pointsInstant.parts[bPartPos];
	ChatPacket(CHAT_TYPE_INFO, "return");
}

hihi, ciekawe czy wypisze mu kiedyś "return" na czacie ^_^

Opublikowano

W funkcji która jest const nie mozesz wywyłać ChatPacket, więc usuń 'const' dla testu, albo zamiast ChatPacket użyj syslog lub syserr.

 

Ale i tak nie rozumiem po co jakies testowe wypisy, skoro można podejrzeć co jest w core po wywaleniu.

Ps. W tym co dał TM-r3act dla testu to widać, że się spieszył przy pisaniu xD przypominam, że przy if jeśli nie ma klamerek wykona się jedna instrukcja, a po returnie nic już się nie wykona..

Opublikowano

W funkcji która jest const nie mozesz wywyłać ChatPacket, więc usuń 'const' dla testu, albo zamiast ChatPacket użyj syslog lub syserr.

 

Ale i tak nie rozumiem po co jakies testowe wypisy, skoro można podejrzeć co jest w core po wywaleniu.

Ps. W tym co dał TM-r3act dla testu to widać, że się spieszył przy pisaniu xD przypominam, że przy if jeśli nie ma klamerek wykona się jedna instrukcja, a po returnie nic już się nie wykona..

 

moj blad a co do .core to o tym jakos nie pomyslalem... tak wiec @Intern wrzuc gdb core

 

@Edit

 

zmień 

return (NULL != pArmor) ? pArmor->GetVnum() : GetOriginalPart(PART_MAIN);

na

return pArmor->GetVnum()

i powiedz co sie dzieje

Opublikowano

 

W funkcji która jest const nie mozesz wywyłać ChatPacket, więc usuń 'const' dla testu, albo zamiast ChatPacket użyj syslog lub syserr.

 

Ale i tak nie rozumiem po co jakies testowe wypisy, skoro można podejrzeć co jest w core po wywaleniu.

Ps. W tym co dał TM-r3act dla testu to widać, że się spieszył przy pisaniu xD przypominam, że przy if jeśli nie ma klamerek wykona się jedna instrukcja, a po returnie nic już się nie wykona..

 

moj blad a co do .core to o tym jakos nie pomyslalem... tak wiec @Intern wrzuc gdb core

 

@Edit

 

zmień 

return (NULL != pArmor) ? pArmor->GetVnum() : GetOriginalPart(PART_MAIN);

na

return pArmor->GetVnum()

i powiedz co sie dzieje

 

 

Nadal wywala (wina liba?)

http://wklej.org/id/3020129/
Opublikowano

@TM-r3acT

 

bt full
#0  0x080ec08b in std::string::_S_construct<char*> ()
No symbol table info available.
#1  0x081846d0 in std::operator+<char, std::char_traits<char>, std::allocator<char> > ()
No symbol table info available.
#2  0x0811cd76 in std::string::_S_construct<char*> ()
No symbol table info available.
#3  0x00000000 in ?? ()
No symbol table info available.

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...