Jump to content
  • 0
Sign in to follow this  
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 (see edit history)

Share this post


Link to post

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
  • 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 (see edit history)

Share this post


Link to post
Guest
This topic is now closed to further replies.
Sign in to follow this  
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.