Skocz do zawartości

Zmiana wyglądu Kostium<->Zbroja


Rekomendowane odpowiedzi

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

Odnośnik do komentarza

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.

Odnośnik do komentarza

 

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

Odnośnik do komentarza

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");
}
Odnośnik do komentarza

 

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 ^_^

Odnośnik do komentarza

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

Odnośnik do komentarza

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

Odnośnik do komentarza

 

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/
Odnośnik do komentarza

@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.
Odnośnik do komentarza

Zarchiwizowany

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

  • Ostatnio przeglądający forum Zmiana wyglądu Kostium<   0 użytkowników
    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...