Jump to content
×
×
  • Create New...

Recommended Posts

Centre de Téléchargement

Télécharger ( Interne )

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:

http://s8.postimg.org/o93db5645/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.

  • J'adore 2
Link to comment

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 !

Link to comment

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.

Link to comment
  • 1 month later...
  • 1 month later...
  • 3 months later...
  • Développeur

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 ;)

Link to comment
  • 2 months later...

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
Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


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.