Aller au contenu

Nouveau membre ?! Pense à te présenter pour accéder au contenu du forum !

New member ?! Introduce yourself to get access to the forum !

Messages recommandés

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.

Modifié par History/Liberty

Partager ce message


Lien à poster
Partager sur d’autres sites

Je t'épouse.

Merci :)

Partager ce message


Lien à poster
Partager sur d’autres sites

Ahah :P

 

Nan je préfère être célibataire ça cause moins de problème voit-tu? xD

 

Cordialement.

Partager ce message


Lien à poster
Partager sur d’autres sites

ça buff tout le monde ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Yep me semblerais qu'il y ai un bug vis à vis du buff pour sois-même.

 

Je vais tenter de corriger cela!

Cependant ça buff bien le groupe.

Cordialement.

Partager ce message


Lien à poster
Partager sur d’autres sites

Ah me semblais que y'avais le bug que ça ne te buffais pas, mais je vais regarder ça et le corriger ^^.

 

Cordialement.

Partager ce message


Lien à poster
Partager sur d’autres 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 !

Partager ce message


Lien à poster
Partager sur d’autres 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.

Partager ce message


Lien à poster
Partager sur d’autres 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

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Ça vient de toi. Moi j'ai aucun problème.

 

Cordialement, Takuma.

Partager ce message


Lien à poster
Partager sur d’autres sites

Mwé c'est bizarre :P je regarderais tranquillement :P

Partager ce message


Lien à poster
Partager sur d’autres sites

Tu as mis le PARTY dans la bonne ligne mysql ?

 

Cordialement, Takuma.

Partager ce message


Lien à poster
Partager sur d’autres sites

Beh déjà de base j'avais pas 27 truck moi dans la base sql donc ...

Partager ce message


Lien à poster
Partager sur d’autres sites

Quelqu'un aurait le correctif pour buff une autre personne sans être en groupe ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Je t'invite à poster ici : https://funky-emu.net/Forum-Aide-Questions-Support--143 ! 

 

@"bachir" 

 

Merci

Partager ce message


Lien à poster
Partager sur d’autres 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 ;)

Partager ce message


Lien à poster
Partager sur d’autres sites

Corrigé.

Partager ce message


Lien à poster
Partager sur d’autres sites

merci Sparkk :D

Partager ce message


Lien à poster
Partager sur d’autres 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.

Modifié par History/Liberty

Partager ce message


Lien à poster
Partager sur d’autres sites

Tu pourrais refaire les TABS et mettre la coloration syntaxique svp?

Partager ce message


Lien à poster
Partager sur d’autres sites

Oulah pour la coloration syntaxique comment fait-ont ? xD

Trouver!

 

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

Fait!

 

Modifié par History/Liberty

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Modifié par #Saw

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut,

 

Je viens de tester ta correction ça n'a rien changé ...

Partager ce message


Lien à poster
Partager sur d’autres sites

×

Information importante

By using this site, you agree to our Conditions d’utilisation.