Jump to content

Recommended Posts

Les Conditions

 

Bonjour,

Je pense que si tu es ici, soit tu ne connais rien aux Conditions soit tu en connais un petit peu mais en tout les cas tu veux en savoir plus!

 

Pour ce tutoriel il te faudras un serveur fonctionne sous TrinityCore ou AzerothCore ainsi qu'un accès à la base de donnée.
Personnellement j'utilise un AzerothCore et l'outil (SGDB) SqlYog Community.


Pré-requis

  • Un serveur ElunaTrinityWotlk ou AzerothCore
  • Une connexion internet
  • Un éditeur de texte / SGDB

 

1 -  Kessecé ?

 

D'après TrinityCore :
0736011.png

 

D'après iThorgrim (c'est moi):

La condition est un système permettant de mettre en place l'ajout de pré-requis (de conditions) pour accéder à un contenu (Loot, Quête, Gossip etc.)
Cela permet, par exemple, de créer des Menu dédiés à une classe ou aux joueurs à conditions d'avoir réussis une quête donnés etc.
 

Les conditions fonctionne aussi à l'inverse vous pouvez cacher des choses une fois une quête effectués.

 

Exemple de Condition 'normal' :
Si le joueur termine la quête 283, il pourras voir le contenu du vendeur à l'entry 85.

Exemple de Condition 'inverse' :
Si le joueur termine la quête 283, il ne pourras plus voir le contenu du vendeur à l'entry 85.
 
Je pense que vous avez compris le concept, l'idée de l'utilité d'une telle table, surtout en SQL.
Le SQL étant un langage qui nous limites de base à quelques modifications, mais via ses nombreux alliés comme la table Conditions le SQL deviens extremement interessant!

 

2 -  La source de tout .. le Wiki

 

Il y a pas de secret, tout s'y trouve et pourtant peu de gens y font attention .. je parle bien sûr des Wiki.
Ils doivent devenir plus proche que vos parents et plus important que respirer(sisi) les Wiki sont et seront votre nouvel/le {Insérer revue religieuse}.

 

Bon .. par contre ils sont sûrement comme votre première copine .. moche et des fois tu comprends rien.
Donc le Wiki qui nous interesse c'est celui de TrinityCore sur les Conditions.

 

Le Wiki se divise en plusieurs partie.

  • - Structure
  • - SourceTypeOrReferenceId
  • - SourceGroup
  • - SourceEntry
  • - ElseGroup
  • - ConditionTypeOrReference
  • - ConditionTarget
  • - ConditionValue1 & Value2 & Value3
  • - NegativeCondition
  • - ErrorType
  • - ErrorTextId
  • - ScriptName
  • - Comment

 

Cela fait beaucoup de choses à expliquer, mais en même temps .. après ça seras plus simple à comprendre.
 

  • Structure :
    • Structure de la table, présente la façon dont elle est ordonnée ainsi que le type de donnée à entrer dans les cellules correspond à chaque colonne.
  • SourceTypeOrReferenceId :
    • Un peu plus hardu à comprendre ..
      C'est un tableau qui vous présente les données possible prise en compte par l'Emulateur, chaque Emulateur peu avoir ajoutés, modifier, supprimés des SourceType. Mais grossièrement c'est toujours les mêmes.
    • Les ID sont ce qui  nous interesse, ce sont eux qui vont nous dire qu'elle source, qu'est ce que l'ont cherche à faire apparaitre ou disparaitre.
    • Et pour mieux comprendre ce que l'ont doit mettre, sur la droite d'ID, vous avez quelques informations qui nous permette de savoir ce que l'ont s'apprette à faire.
    • Il est aussi dit que si nous mettons une valeur négative donc avec un - avant votre ID cela fait appelle à une reference .. ont verras ça un peu plus tard.

 

  • SourceGroup :
    • Permet d'entrer un ID, l'id correspondras à l'Entry du Template de ce nous souhaitons modifier, sur lequel nous souhaitons appliquer une condition (Entry du NPC_Vendor, Loot_Template, Gossip_Menu_Option etc.).
  • SourceEntry :
    • Toujours pareil on entre un ID mais cette fois ci il correspondras lui .. à l'OBJET concernés, son ID.
    • Par exemple : si nous souhaitons modifier un GossipMenuOption et lui appliquer une condition.
    • Je mettrais en SourceGroup l'entry du Gossip_Menu_Option MenuID(63) et je mettrais l'ID de la ligne qui m'interesse vraiment OptionID(1).

 

  • ElseGroup :
    • Très simple cela vous permet de créer des groupes de Conditions, il vous faudras donc le même
  • SourceTypeOrReferenceId & SourceGroup  & SourceEntry :
    • Cela permet de créer des groupes du type OR ou AND.
    •  
    • - Exemple AND : 
      •     - Je souhaite voir le Gossip_Menu_Option MenuID(63) et l'OptionID(1) si je tue le Mob 53. AND (ET) si je tue le Mob 45. Il partagerons donc tout les deux le ElseGroup 1.
    • - Exemple OR:
      •     - Je souhaite voir le Gossip_Menu_Option MenuID(63) et l'OptionID(1) si je tue le Mob 53. OR(OU) si je tue le Mob 45.
      •  
    • Il ne partagerons donc pas tout les deux le même ElseGroup
      • La première condition (Mob 53) devras avoir le ElseGroup 1.
      • La deuxième condition (Mob 45) devras avoir le ElseGroup 2.

 

  • ConditionTypeOrReference :
    • Le vif du sujet .. Tout simplement notre condition en elle même, sous qu'elle condition je vais voir mon Gossip_Menu_Option MenuID(63) ?
    • Le tableau fonctionne exactement pareil que SourceTypeOrReferenceId vous avez une colonne ID pour voir l'ID à entrer, et vous avez à gauche le nom pour comprendre ce que vous vous apprêtez à faire.
  • ConditionTarget :
    • Il sagit de la cible, elle n'est pas toujours demandés mais peut être requise, retenez simplement que 1 = le Joueurs; 2 = L'objet du SourceTypeOrReferenceId
    • D'ailleurs sur le Wiki à la ligne SourceTypeOrReferenceId vous pouvez voir les différentes ConditionTarget.
  • ConditionValue1 & Value2 & Value3 :
    • C'est tout simplement la valeur à entrer. Si vous souhaitez que le joueur tue 58 fois le mob 45, déjà c'est pas très sympas, c'est ici que cela se passe.

 

  • NegativeCondition :
    • Colonne très utile, qui permet de faire des choses plutôt "dynamique". C'est un Booléan (0 ou 1)
    • Le 1 peu se traduire par un TANT QUE
      • Si vous souhaitez dire que TANT QUE le joueurs n'as pas tués 58 fois le mob 45 il peu voir le voir le Gossip_Menu_Option MenuID(63) et l'OptionID (1) et bien vous écrivez votre condition normalement puis à la fin vous mettez tout simple un petit 1 ici.
  • ErrorType & ErrorTextId :
    • Aucune documentation dessus et je ne m'en suis jamais servis.
    • TrinityCore dis : 
      • 0736012.png

 

  • ScriptName :
    • Très simple si vous avez un Script CPP à lier à votre condition vous venez le dire ici.
  • Comment :
    • La partie surement la plus importante.. Le commentaire. S'il vous plaît merci, de commenter correctement.
      • Exemple à ne pas faire : "Gossip 12".
      • Exemple à suivre (à la limite) : "Si le joueur tue 58 fois la creature 45 alors il peu voir le gossip 12".

 

La description du Wiki et des colonnes se termine ici, normalement tu as tout pour créer des Conditions digne de ce nom.
 

3 -  Disparition de Gossip

SET
@SourceTypeOrReferenceId := 15,
@SourceGroup := 435,
@SourceEntry := 1,
@ConditionTypeOrReference := 2,
@ConditionTarget := 0,
@ConditionValue1 := 6948,
@ConditionValue2 := 1,
@ConditionValue3 := 1,
@NegativeCondition := 1,
@Comment := 'Tant que le joueur a sa pierre de foyer il ne peu voir la ligne 1 du gossip 6948';

INSERT INTO `conditions` VALUES(@SourceTypeOrReferenceId,@SourceGroup,@SourceEntry,'0','0',@ConditionTypeOrReference,@ConditionTarget,@ConditionValue1,@ConditionValue2,@ConditionValue3,@NegativeCondition,'0','0','',@Comment);

Bon du coup dans cet exemple, j'ai mis en place une condition negative ou inverse, qui dit que tant que j'ai ma [Pierre de Foyer] dans mon Inventaire ou dans ma banque, je ne peu pas voir la ligne 1 du Gossip 435.


0736013.png

 

Du coup si je détruit ma [Pierre de Foyer].

 

0736014.png

 

 

Merci pour votre attention pour ce tutoriel.
Je vous dis à la prochaine pour justement un prochain tutoriel.

Edited by iThorgrim (see edit history)
  • Like 3
Link to post
  • ASIKOO changed the title to Les Conditions
  • iThorgrim changed the title to Les Conditions

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


  • Flux d'Activité

    1. 18

      serveur Metin2

    2. 1

      Implantation MOB (invisible + error)

    3. 1

      Implantation MOB (invisible + error)

    4. 1

      Mondial2 Remastered - New School International Private Server Open 27/11/2020

    5. 18

      serveur Metin2

    6. 29

      Dump Proto 2014

    7. 18

      serveur Metin2

    8. 15

      Mustang SF - Full - 1.8

  • Recently Browsing

    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.