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

Proszę o rozkodowanie tego odcinka game w C++.


Rekomendowane odpowiedzi

Opublikowano

Cześć.

 

Proszę o rozkodowanie tego odcinka source:

EVENTINFO(SCharDeadEventInfo)
{
	bool isPC;
	uint32_t dwID;

	SCharDeadEventInfo()
	: isPC(0)
	, dwID(0)
	{
	}
};

EVENTFUNC(dead_event)
{
	const SCharDeadEventInfo* info = dynamic_cast<SCharDeadEventInfo*>(event->info);

	if ( info == NULL )
	{
		sys_err( "dead_event> <Factor> Null pointer" );
		return 0;
	}

	LPCHARACTER ch = NULL;

	if (true == info->isPC)
	{
		ch = CHARACTER_MANAGER::instance().FindByPID( info->dwID );
	}
	else
	{
		ch = CHARACTER_MANAGER::instance().Find( info->dwID );
	}

	if (NULL == ch)
	{
		sys_err("DEAD_EVENT: cannot find char pointer with %s id(%d)", info->isPC ? "PC" : "MOB", info->dwID );
		return 0;
	}

	ch->m_pkDeadEvent = NULL;

	if (ch->GetDesc())
	{
		ch->GetDesc()->SetPhase(PHASE_GAME);

		ch->SetPosition(POS_STANDING);

		PIXEL_POSITION pos;

		if (SECTREE_MANAGER::instance().GetRecallPositionByEmpire(ch->GetMapIndex(), ch->GetEmpire(), pos))
			ch->WarpSet(pos.x, pos.y);
		else
		{
			sys_err("cannot find spawn position (name %s)", ch->GetName());
			ch->WarpSet(EMPIRE_START_X(ch->GetEmpire()), EMPIRE_START_Y(ch->GetEmpire()));
		}

		ch->PointChange(POINT_HP, (ch->GetMaxHP() / 2) - ch->GetHP(), true);

		ch->DeathPenalty(0);

		ch->StartRecoveryEvent();

		ch->ChatPacket(CHAT_TYPE_COMMAND, "CloseRestartWindow");
	}
	else
	{
		if (ch->IsMonster() == true)
		{
			if (ch->IsRevive() == false && ch->HasReviverInParty() == true)
			{
				ch->SetPosition(POS_STANDING);
				ch->SetHP(ch->GetMaxHP());

				ch->ViewReencode();

				ch->SetAggressive();
				ch->SetRevive(true);

				return 0;
			}
		}

		M2_DESTROY_CHARACTER(ch);
	}

	return 0;
}

Opublikowano

	if (true == info->isPC) //Jeśli jest graczem
	{
		ch = CHARACTER_MANAGER::instance().FindByPID( info->dwID );//Wyszukije jego PID
	}
	else
	{
		ch = CHARACTER_MANAGER::instance().Find( info->dwID );//Jeśli nie to też wyszukuje (dla mooba chyba)
	}

	if (NULL == ch) //Jak nic nie znajdzie
	{
		sys_err("DEAD_EVENT: cannot find char pointer with %s id(%d)", info->isPC ? "PC" : "MOB", info->dwID ); //to zapisuje błąd do syserr
		//		"WYDARZENIE ZABICIA": nie znaleziono PC/MOB o id(xxx)
		return 0;//Zwraca zero
	}

Chyba ci o to chodziło.

8910814572903361049127.png

Opublikowano

Więc w syserr jeśli pokaże:

SYSERR: Nov 20 21:25:38 :: dead_event: DEAD_EVENT: cannot find char pointer with MOB id(82485)

To co to znaczy?

Opublikowano

Więc w syserr jeśli pokaże:

SYSERR: Nov 20 21:25:38 :: dead_event: DEAD_EVENT: cannot find char pointer with MOB id(82485)
To co to znaczy?

Ale nie znajduje mi moba o tym id,Ale ja nie przywołuje w quescie za pomocą regenu ani jakąś funkcją moba o id 82168..

id 82485 kolego ;) quest z eventem pewnie event metinów

Pomogłem ? klik up to Like ;D ( Lubię to ! ) xD

300 postów-> 10.10.2013 godz. 9:00
400 postów-> 19.10.2013 godz. 9:00

 

Opublikowano

Ahm no więc wszystko jasne... Wiesz musisz użyć funkcji d.setqf i d.getqf ale jeszcze jest inna funkcja działa tak samo tylko lipa bo jestem w pracy no i nie pamiętam na pamięć bo w pracy oczywiście nie mam laptopa xD ale powiem Ci tak że u mnie funkcja którą masz Ty to mi nie czyta i ja u siebie używam z qf niż samo f. Jak nie uda Ci się rozwiązać problemu do mojego przyjścia do domu czyli około 21 to będę wstanie Ci pomóc

Pomogłem ? klik up to Like ;D ( Lubię to ! ) xD

300 postów-> 10.10.2013 godz. 9:00
400 postów-> 19.10.2013 godz. 9:00

 

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...