• 0
Abass

en cours "[C++]: Buff de groupe"

Question

Version des fichiers/ Type d'émulateur : Team Fe 2016 by Saw.


En suivant cette tuto: 


J'ai reussi partie navicat et compilation. mais in-game il buff seulement le groupe.. même sans groupe, il buff personne (sauf moi). x)

mon (char_skill.cpp): 
    

	if (IS_SET(pkSk->dwFlag, SKILL_FLAG_SELFONLY))
		ComputeSkill(dwVnum, this);
	else if (IS_SET(pkSk->dwFlag, SKILL_FLAG_PARTY) && !GetParty())
		ComputeSkill(dwVnum, this);
	else if (IS_SET(pkSk->dwFlag, SKILL_FLAG_PARTY) && GetParty())
	{
		FPartyPIDCollector f;
		GetParty()->ForEachOnMapMember(f, GetMapIndex());
		for (std::vector <DWORD>::iterator it = f.vecPIDs.begin(); it != f.vecPIDs.end(); it++)
		{
			LPCHARACTER ch = CHARACTER_MANAGER::instance().FindByPID(*it);
			ComputeSkill(dwVnum, ch);
		}
	}
	else if (!IS_SET(pkSk->dwFlag, SKILL_FLAG_ATTACK))
		ComputeSkill(dwVnum, pkVictim);
	else if (dwVnum == SKILL_BYEURAK)
		ComputeSkill(dwVnum, pkVictim);
	else if (dwVnum == SKILL_MUYEONG || pkSk->IsChargeSkill())
		ComputeSkill(dwVnum, pkVictim);

	m_dwLastSkillTime = get_dword_time();

	return true;


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

Edited by Kameyu
Amélioration de la lisibilité du code

Share this post


Link to post
Share on other sites

3 answers to this question

Recommended Posts

  • 0

Bonjour,

 

Je présume que tu as la version partagée depuis 2015, dans ce cas c'est un bug assez courant et "Heathcliff™" a trouvé une solution très simple pour corriger ça.

 

Va dans "char_skill.cpp" et cherche cette ligne :

 

GetParty()->ForEachOnMapMember(f, GetMapIndex());

Puis juste après colle cette condition :
 

		if (!pkVictim->GetParty())
			ComputeSkill(dwVnum, pkVictim);

Compile et voilà ! :)

Share this post


Link to post
Share on other sites
  • 0

Merci.. maintenant il buff le groupe et le personnage qui je target (quand je suis dans un groupe).. mais sans groupe il buff personne.. c'est relou x)

 

	if (IS_SET(pkSk->dwFlag, SKILL_FLAG_SELFONLY))
		ComputeSkill(dwVnum, this);
	else if (IS_SET(pkSk->dwFlag, SKILL_FLAG_PARTY) && !GetParty())
		ComputeSkill(dwVnum, this);
	else if (IS_SET(pkSk->dwFlag, SKILL_FLAG_PARTY) && GetParty())
	{
		FPartyPIDCollector f;
		GetParty()->ForEachOnMapMember(f, GetMapIndex());
		if (!pkVictim->GetParty())
			ComputeSkill(dwVnum, pkVictim);
		for (std::vector <DWORD>::iterator it = f.vecPIDs.begin(); it != f.vecPIDs.end(); it++)
		{
			LPCHARACTER ch = CHARACTER_MANAGER::instance().FindByPID(*it);
			ComputeSkill(dwVnum, ch);
		}
	}
	else if (!IS_SET(pkSk->dwFlag, SKILL_FLAG_ATTACK))
		ComputeSkill(dwVnum, pkVictim);
	else if (dwVnum == SKILL_BYEURAK)
		ComputeSkill(dwVnum, pkVictim);
	else if (dwVnum == SKILL_MUYEONG || pkSk->IsChargeSkill())
		ComputeSkill(dwVnum, pkVictim);

	m_dwLastSkillTime = get_dword_time();

	return true;

 

Edited by Kameyu
Amélioration de la lisibilité du code

Share this post


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

  • Recently Browsing   0 members

    No registered users viewing this page.