• 0
Gloria

en cours [C++]Récompenses DR OxEvent

Question

Bonjour tout le monde.
 

J'aimerais savoir, si c'etais possible de crée une fonction C++ (Language dont je n'ai aucune connaissance) pour donner les DR directement en récompense de L'OX

J'ai essayée de chercher le code qui associe

 

 oxevent.give_item



J'ai pus éventuellement trouvée ce code dans le fichier OXevent.cpp:

 

bool COXEventManager::GiveItemToAttender(DWORD dwItemVnum, BYTE count)
{
	itertype(m_map_attender) iter = m_map_attender.begin();

	for (; iter != m_map_attender.end(); ++iter)
	{
		LPCHARACTER pkChar = CHARACTER_MANAGER::instance().FindByPID(iter->second);

		if (pkChar)
		{
			pkChar->AutoGiveItem(dwItemVnum, count);
			LogManager::instance().ItemLog(pkChar->GetPlayerID(), 0, count, dwItemVnum, "OXEVENT_REWARD", "", pkChar->GetDesc()->GetHostName(), dwItemVnum);
		}
	}

	return true;
}

Comment l'adapter ou en crée une autre pour que celle-ci donne directement des DR.

Merci pour votre aide :) 

 

En postant ma demande d'aide, j'affirme avoir lu et accepté le Règlement de Funky-Emulation.

Share this post


Link to post
Share on other sites

6 answers to this question

Recommended Posts

  • 0

Bonjour,

 

Y a moyen de faire tout ce que tu veux en CPP mais je te conseillerais de le faire en sql si tu n'as pas les compétences en cpp pour le faire.

Share this post


Link to post
Share on other sites
  • 0

Si une ame charitable pourrais juste me changer la fonction que j'ai posé au dessus, je serais faire le reste ^^

Share this post


Link to post
Share on other sites
  • 0
il y a 26 minutes, Tamatoa a dit :

Bonjour,

 

Y a moyen de faire tout ce que tu veux en CPP mais je te conseillerais de le faire en sql si tu n'as pas les compétences en cpp pour le faire.

Heeeeeeu.... Comment te dire ? 

 

Tu dois obligatoirement passer par SQL. Il faut que tu mettes à jour ta base de données. Cependant aucun cache il me semble n'est appliqué à la colonne "cash". Tu n'as pas besoin de passer par le c++, mais tu peux. Pour cela, il faudrait que tu fasses une fonction qui va exécuter la queries : "UPDATE account.account SET cash=cash+50 WHERE id = 1;" par exemple.

 

Tu peux cependant le faire en lua en activant la fonction qui permet de le faire.

Tu peux par exemple créer une fonction comme celle-ci :

bool AddCash(LPCHARACTER ch, const int * c_cash)
{
	DBManager::instance().DirectQuery("UPDATE account.account SET cash = cash + %d WHERE id = %d", XXXX, c_cash);
	return true;
}

// header :
bool AddCash(PCHARACTER ch, const int* c_cash);

Remplace le XXX par la récupération de l'id, je l'ai plus de tête...

 

Désolé des imperfections de l'écriture, j'écris actuellement avec ma tablette, c'est pas des plus pratique...

En espérant t'avoir aider.

Edited by Drei

Share this post


Link to post
Share on other sites
  • 0
bool COXEventManager::GiveCashToAttender(BYTE count)
{
	itertype(m_map_attender) iter = m_map_attender.begin();

	for (; iter != m_map_attender.end(); ++iter)
	{
		LPCHARACTER pkChar = CHARACTER_MANAGER::instance().FindByPID(iter->second);

		if (pkChar)
		{
			DBManager::instance().DirectQuery("UPDATE account.account SET cash = cash + %d WHERE id = %d", count, pkChar->GetPlayerID());
		}
	}

	return true;
}

T'a juste a changé les fonctions qui donne un item par une query ;) 

 

Sinon tu peut toujours give des bon DC

Edited by Wild
  • Like 1

Share this post


Link to post
Share on other sites
  • 0

Merci beaucoup, etant actuellement en déplacement, je testerais ça une fois rentrée ! 

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.