Vous devez être connecté et donner une réaction ( Like ) au sujet pour débloquer les liens de téléchargements...

Recommended Posts

Buff de groupe.

1) Qu'est ce c'est?

2) Les prérequis.

3) Le code.

1) Qu'est ce c'est?

Le "buff de groupe" vous permet de "buffer" les personnes de votre groupes ( à partir d'une certaines distance seulement) en même temps que vous vous "buffez" vous-même.

2) Les prérequis.

  • Sources serveur.
  • Un client.
  • Des files.
  • Navicat.

3) Le code.

Server/Game/Src/skill.h

Cherchez:

SKILL_FLAG_FIRE = (1 << 26),
Ajoutez en-dessous ↓:
SKILL_FLAG_PARTY = (1 << 27),

 

 
Server/Game/Scr/char_skill.cpp

Cherchez:

SKILL_RESIST_PENETRATE

 

Ajoutez en-dessous ↓:
struct FPartyPIDCollector
{
	std::vector <DWORD> vecPIDs;
	FPartyPIDCollector()
	{
	}
	void operator () (LPCHARACTER ch)
	{
		vecPIDs.push_back(ch->GetPlayerID());
	}
};

 

Screen de changement:

Untitled.png

Cherchez:

if (IS_SET(pkSk->dwFlag, SKILL_FLAG_SELFONLY))
ComputeSkill(dwVnum, this);

 

Ajoutez en-dessous ↓:
	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);
		}
	}

 

 
Server/Game/Src/guild.cpp

Cherchez:

if ((pkSk->dwFlag & SKILL_FLAG_SELFONLY))
{
	// 이미 걸려 있으므로 사용하지 않음.
	if (ch->FindAffect(pkSk->dwVnum))
	return;

	victim = ch;
}

 

Ajoutez en-dessous ↓:
if ((pkSk->dwFlag & SKILL_FLAG_PARTY))
	{
		if (ch->FindAffect(pkSk->dwVnum))
		return;

		victim = ch;
	}

 

 
Navicat

Ouvrez Navicat et lancez cet query dans player/skill_proto :

UPDATE `skill_proto` SET `setFlag`='PARTY' WHERE (`dwVnum`='94');
UPDATE `skill_proto` SET `setFlag`='PARTY' WHERE (`dwVnum`='95');
UPDATE `skill_proto` SET `setFlag`='PARTY' WHERE (`dwVnum`='96');
UPDATE `skill_proto` SET `setFlag`='REMOVE_BAD_AFFECT,PARTY' WHERE (`dwVnum`='109');
UPDATE `skill_proto` SET `setFlag`='PARTY' WHERE (`dwVnum`='110');
UPDATE `skill_proto` SET `setFlag`='PARTY' WHERE (`dwVnum`='111');

 

 
Si les querys ne fonctionnent pas:

Ouvrez votre database player faites un design table sur skill_proto.

cliquez sur :


setFlag
Vous verrez alors l'encadré "value" cliquez sur les "..."  et ajoutez à la 27 ième position (donc la 28 ième ligne) :

Merci Takuma pour cette remarque!


'PARTY'
 
Correction (pour ceux ayant déjà installé le système) :
Cherchez : 
	if (IS_SET(pkSk->dwFlag, SKILL_FLAG_PARTY) && !GetParty())
		pkVictim = this;

 

Remplacez par ->

	if (IS_SET(pkSk->dwFlag, SKILL_FLAG_SELFONLY))
		pkVictim = this;

Faites le 2 fois car vous l'avez remplacé 2 fois.

 
Sources: Metin2Dev.

Traduction/Tutoriel/Correction: Metin2Dev et moi.

Cordialement, History.

Edited by History/Liberty
  • Like 2

Share this post


Link to post
Share on other sites

Salut, quand j'essaye de faire le Query, ça me met une erreur, et du coup, ça ne marche pas !

Erreur MySQL

[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'UPDATE `skill_proto` SET `setFlag`='PARTY' WHERE (`dwVnum`='95')

UPDATE `skill_' at line 2

 

Je suis sous file 2016 !

Share this post


Link to post
Share on other sites

AQS la prochaine fois ! ^^

 

Autrement tu fais un design table sur skill_proto , tu cherche la ligne :

setFlag

 

Tu regarde dans l'encadré values:

 

et tu ajoute a la 27 ième position PARTY

 

Ensuite pour les skills Sh tu rajoute PARTY en flag.

 

Et le tour est joué!

 

Cordialement, History.

Share this post


Link to post
Share on other sites

après est-ce que buff un joueur sans être dans son groupe est un bug ? Est-ce qu'au contraire, ça ne pourrait pas que favoriser le jeu en groupe ? :D

Share this post


Link to post
Share on other sites

Personnellement je l'ai mis, j'ai aucune erreur mais quand je suis en groupe ça me buff seulement moi

Share this post


Link to post
Share on other sites

Ouvrez Navicat et lancez cet query dans player/skill_proto :

 

UPDATE `skill_proto` SET `setFlag`='PARTY' WHERE (`dwVnum`='94')UPDATE `skill_proto` SET `setFlag`='PARTY' WHERE (`dwVnum`='95')UPDATE `skill_proto` SET `setFlag`='PARTY' WHERE (`dwVnum`='96')UPDATE `skill_proto` SET `setFlag`='REMOVE_BAD_AFFECT,PARTY' WHERE (`dwVnum`='109')UPDATE `skill_proto` SET `setFlag`='PARTY' WHERE (`dwVnum`='110')UPDATE `skill_proto` SET `setFlag`='PARTY' WHERE (`dwVnum`='111')

 

 

 

 

C'est normal que la query ne marche pas. Il manque un point virgule à chaque ligne de commande. Essayez plutôt ceci:

 

UPDATE `skill_proto` SET `setFlag`='PARTY' WHERE (`dwVnum`='94');UPDATE `skill_proto` SET `setFlag`='PARTY' WHERE (`dwVnum`='95');UPDATE `skill_proto` SET `setFlag`='PARTY' WHERE (`dwVnum`='96');UPDATE `skill_proto` SET `setFlag`='REMOVE_BAD_AFFECT,PARTY' WHERE (`dwVnum`='109');UPDATE `skill_proto` SET `setFlag`='PARTY' WHERE (`dwVnum`='110');UPDATE `skill_proto` SET `setFlag`='PARTY' WHERE (`dwVnum`='111');

 

 

Précision également, faites à la fois les queries et les modifications. Les queries ne servent qu'à mettre le setFlag à "PARTY" pour

les skills de la Shaman. Le setFlag ne sera pas rajouté avec ces lignes de commande.

 

Pense à mettre à jour ton tuto ;)

Share this post


Link to post
Share on other sites

Correction des skills qui peux maintenant vous buff vous / les membres du groupe et un personnages de votre choix !

 

Pour la correction vous suffit de chercher :

	if (IS_SET(pkSk->dwFlag, SKILL_FLAG_PARTY) && !GetParty())
		pkVictim = this;

 

et de remettre a l'origine comme ceci ->>

	if (IS_SET(pkSk->dwFlag, SKILL_FLAG_SELFONLY))
		pkVictim = this;

Vous devrez le faire 2 fois.

 

Et voilà pour la correction de ce bug qui était plutôt gênant !

 

Oui je sais ça fait déjà quelques mois que ce système as été publié et qu'il n'y as jamais eu de correction mais voila choses faite !

 

Cordialement, History.

Edited by History/Liberty

Share this post


Link to post
Share on other sites

Oulah pour la coloration syntaxique comment fait-ont ? xD

Trouver!

 

Ensuite pour les Tabs y'en as qu'une à rajouter me semble 

Fait!

 

Edited by History/Liberty

Share this post


Link to post
Share on other sites

Pour les tab's je voulais dire remplacer les [TAB] par de vrai tabulations.

Edited by #Saw

Share this post


Link to post
Share on other sites