PVP Belohnung

05/18/2015 22:15 Claan#1
Hallo alle zusammen,

und zwar wollte ich mich mal mehr mit der PVP Arena auseinander setzen und würde gerne:

Wenn man einen in der Arena killt, dass man eine Belohnung in das Inventar bekommt, und als Sicherheits fix, wenn das Inventar voll ist eine Post Nachricht bekommt.

Nur kenne ich mich nicht aus mit der Source, habe zwar Java und C++ Grundkenntnisse aber die helfen da nicht viel weiter ^^


Pseudocode:

Ich weiss die Befehle sind falsch, dachte mir nur das es so in der Art vom Aufbau funktionieren könnte.
Wüsste nur gerne wo ich dieses implementieren muss und mit welchen Code.


Danke im Vorraus

LG Claan
05/18/2015 23:27 Sedrika#2
WorldServer -> AttakArbiter.cpp -> CAttackArbiter::OnDied()

Dort könntest du ganz einfach das lösen. Hier ein kleines Beispiel:

Code:
if (m_pAttacker->IsPlayer() && m_pDefender->IsPlayer() && m_pDefender->GetWorld()->GetID() == WI_WORLD_ARENA)
{
	CItemElem itemElem;
	itemElem.m_dwItemId = II_WEA_SWO_WOODEN; // Item Id
	itemElem.m_nItemNum = (short)1; // Item Anzahl
	itemElem.m_bCharged = FALSE; // Premium oder nicht
	//itemElem.SetFlag(itemElem.binds); // Event Item / Binded
	BYTE nId;
	BOOL bCreate = ((CUser*)m_pAttacker)->CreateItem(&itemElem, &nId);
	if (bCreate)
	{
		CItemElem* pItemElem = ((CUser*)m_pAttacker)->m_Inventory.GetAtId(nId);
		if (pItemElem)
		{
			((CUser*)m_pAttacker)->AddDefinedText(TID_EVE_REAPITEM, "\"%s\"", itemElem.GetName());
		}
	}
	else
	{
		LogItemInfo aLogItem;
		aLogItem.Action = "S";
		aLogItem.SendName = m_pAttacker->GetName();
		aLogItem.WorldId = m_pAttacker->GetWorld()->GetID();
		aLogItem.Gold = aLogItem.Gold2 = m_pAttacker->GetGold();

		g_dpDBClient.SendQueryPostMail(m_pAttacker->m_idPlayer, 0, itemElem, 0, "PvPItem", "");
		aLogItem.RecvName = "PVP_ITEM";
		g_DPSrvr.OnLogItem(aLogItem, &itemElem, itemElem.m_nItemNum);
	}
	g_dpDBClient.SavePlayer((CUser*)m_pAttacker, m_pAttacker->GetWorld()->GetID(), m_pAttacker->GetPos(), m_pAttacker->GetLayer());
}
05/19/2015 17:19 Claan#3
Besten Dank probier es mal aus :)