Aller au contenu
  • 0

[C++]Récompenses DR OxEvent


Gloria

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.

Lien à poster

6 réponses à cette question

Messages recommandés

  • 0
  • Premium

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.

« Au commencement, il n’y avait que l’océan puis l’île-mère surgit des eaux… Te Fiti. Son cœur avait un immense pouvoir, celui d’engendrer la vie. L’univers tout entier profitait de ses bienfaits. Mais avec le temps, le cœur de Te Fiti fut très convoité. Certains pensaient que le posséder, c’était posséder le pouvoir de la création… Aujourd’hui encore, Te Ka et les monstres des ténèbres sont toujours à la recherche du cœur. Ils sont cachés dans l’obscurité qui continuera de se propager… ».

Lien à poster
  • 0
  • Bot
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.

Modifié par FBot (Voir l’historique des modifications)
Lien à poster
  • 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

Modifié par Wild (Voir l’historique des modifications)
  • J'adore 1

 

1523238123-banner-468x60-nashalie2-by-we

Lien à poster
Invité
Ce sujet ne peut plus recevoir de nouvelles réponses.


×
×
  • Créer...

Information importante

Conditions d’utilisation / Politique de confidentialité / Règles / Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.