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 !

Galet

 tutoriel / partage [Guide]Les différents Event-flags et comment les utiliser !

Messages recommandés

Salut la compagnie ! Ici Galet et à cette heure tardive (23:49) où l'ennui me submerge, j'ai décidé de vous expliquer en détail les "event flags" et leur utilité.

Nous allons donc sans tarder commencer par les explication de ces derniers ! :hap: (Oui. Le smiley hap est disponible parmi tous les autres et j'en suis satisfait. Trop.)

Je précise d'ailleurs que ceci est un guide et non pas un tutoriel, il va vous aider et vous apprendre à comment utiliser les event flags, à les comprendre mais pas à les créer, pour ça, referez vous à la rubrique "Pour aller plus loin".

 

 

Qu'est-ce qu'un "event flag" ?

 

 

 

Un event flag est tout simplement l'une des méthodes les plus simples pour modifier certains paramètres ou bien activer ou désactiver un système directement en jeu ! C'est quelque chose d'utilisé en général pour les événements (d'où le nom event flag) mais il peut aussi gérer divers paramètres du jeu que je vais expliquer en détail plus bas. Ils ont été nommés ainsi par Ymir eux mêmes, je vais donc proposer l'alternative Française ici pour résoudre un soucis de cohérence et nous allons sans plus attendre voir l'utilisation de ces marqueurs événementiels.

 

 

PS : Excusez le nom, mais malgré mon niveau d'Anglais plus que correct je n'ai pas de traduction littéraire pour Flag autre que Drapeau, Signal ou Marqueur, j'utilise moi aussi le mot "Flag" en Français dans ce genre de cas pour me rapporter à ce genre de mot qui n'a pas d'équivalent réel en Français. Là aussi le mot événementiel reste une modification qui s'accorde en partie sur le nom de base mais qui reste un peu incorrect au vu de l'utilité des marqueurs événementiels qui ne se cantonnent pas à un rôle de gestionnaire d'événement.

 

 

Dans le détail, à quoi servent ces marqueurs événementiels ?

 

 

Globalement, ils servent à créer une condition à divers endroit du jeu, notamment pour la vente de certains objets ou l'apparition de certains PNJ, ils servent aussi à régler des taux (oui !) et à activer ou désactiver des systèmes.

 

 

Y aurait-il un liste de ces marqueurs événementiels ?

 

 

Oui ! En voici une qui date de début 2014, elle a été élaborée par Shogun ainsi que des membres de l'émulation internationale, j'ai par ailleurs participé à son amélioration (je l'ai étoffée) courant 2014, notamment sur les marqueurs relatifs à l'alchimie des pierres dragons. Dans cette liste, il y a le nom du flag, la valeur qui doit être attribuée ainsi que la description de l'effet ! :)

 

Petit spoiler pour éviter de faire un long post (car je n'ai pas spécialement envie de devoir offrir une pomme de terre :hap: ) :

Les différents marqueurs événementiels (La liste sera étoffée plus tard pour une dizaine de marqueurs événementiels de plus)

mob_dam [valeur]

Définir le dégât des monstres (défaut 100)

 

mob_gold, mob_gold_buyer [valeur]

Définir le taux de drop (quantité) de yang pour les joueurs (ps : buyer = utilisateur prémium = boost de base activable dans account, ceux visibles en haut à gauche de l'écran) (défaut 100)

 

mob_gold_pct, mob_gold_pct_buyer [valeur]

Définir le taux de drop des yangs pour les joueurs (ps : buyer = utilisateur prémium = boost de base activable dans account, ceux visibles en haut à gauche de l'écran) (défaut 100)

 

mob_exp, mob_exp_buyer [valeur]

Définir le taux d'exp pour les joueurs (ps : buyer = utilisateur prémium = boost de base activable dans account, ceux visibles en haut à gauche de l'écran) (défaut 100)

 

mob_item, mob_item_buyer [valeur]

Définir le taux de drop d'objet pour les joueurs (ps : buyer = utilisateur prémium = boost de base activable dans account, ceux visibles en haut à gauche de l'écran) (défaut 100)

 

arena_potion_limit [bool]

Activer la limite d'utilisation de potion dans l'arène du Musicien Yu-Hwan

 

arena_potion_limit_count [valeur]

Nombre maximal de potion pouvant être utilisé dans l'arène du Musicien Yu-Hwan si le flag précédant est sur "1"

 

eclipse [bool]

Active ou désactive la nuit

 

gold_drop_limit_time [secondes]

Temps en seconde avant que le joueur ne puisse à nouveau jeter des yangs au sol

 

guild_disband_delay [bool]

Active la durée de 24 heures pour le joueur avant de rejoindre ou recréer une nouvelle guilde après en avoir quitté une (Défaut 1 - Activé)

 

guild_withdraw_delay [bool]

Active la durée de 24 heures pour le joueur avant de rejoindre ou recréer une nouvelle guilde après avoir été exclu d'une (Défaut 1 - Activé)

 

hivalue_item_sell [bool]

Active ou désactive la mise en vente du Cuivre Magique et des Orbes de bénédiction dans un magasin

 

MonarchHealGold [yang]

Nombre de yang requis par le souverain (empereur) pour utiliser la compétence de Soin (argent des caisses de l'empire)

 

personal_shop [taxe en %]

Active la mise en place d'une taxe sur les magasin des joueurs, l'argent ira dans les caisses de l'empire.

 

2006_drop [taux de drop 1/x]

Activer les drops liée à l’évent du Nouvel An Chinois de 2006 - Boîte Hexagonale (id : 50037)

 

2007_drop [taux de drop 1/x]

Activer les drops liée à l’évent du Nouvel An Chinois de 2007 - Boîte Hexagonale (id : 50043)

 

dragon_boat_festival_drop [bool?]

Active le drop de l'objet 50085

 

drop_moon [bool]

Active ou non le drop des Coffrets (boîte) Rayon de Lune. Le taux de drop ne peut pas être changé.

 

easter_drop [bool?]

Active ou non le drop des objets 50160 à 50179 - Oeufs de Pâque.

 

football_drop [bool?]

Active ou non le drop des ballons de foots (id : 50096) - Event Coupe du Monde

 

halloween_drop [bool?]

Active ou non le drop des citrouilles (id : 50095)

 

hc_drop [taux de drop 1/x]

Drop de l'objet 30178 - Event de Gameforge à l'époque de l'ouverture de la grotte de l'éxil

 

horse_skill_book_drop [taux de drop 1/x]

Taux de drop des manuels d'équitation

 

kids_day_drop [taux de drop 1/x]

Taux de drop des boîte de puzzle (id : 50034) pour les joueur de bas niveau.

 

kids_day_drop_high [taux de drop 1/x]

Taux de drop des boîte de puzzle (id : 50034) pour les joueur de haut niveau.

 

lotto_drop [taux de drop 1/x]

Active le drop des Tiquets de Lotterie Aléatoire. Le nombre et les nombres marqué sur les Tiquets qui seront droppés se trouvent dans la table player.lotto_list.

 

lotto_round [valeur]

Choisissez un nombre qui marquera les tiquet de loterie. C'est utile si vous voulez créer plusieurs loteries différentes et éviter qu'un ticket soit utilisé deux fois.

 

mars_drop [taux de drop 1/x]

Active le drop du Cuivre Magique.

 

newyear_fire [bool?]

Active le drop des pétards Chinois. (Event du Nouvel An Chinois)

 

newyear_mob [bool]

Fait spawner aléatoirement Hae-Tae en Map 2. (Event du Nouvel An Chinois)

 

newyear_moon [bool?]

Event du nouvel an Chinois, active le drop des objets 50016~50017~50018~50019.

 

new_xmas_event [bool]

Fait apparaître le nouveau sapin de Noël en ville.

 

 

ramadan_drop [taux de drop 1/x]

Active le drop de l'item 30135 pour l'évent Ramadan.

 

three_skill_item [taux de drop 1/x]

Règle le taux de drop des Pierres d'âmes pour les Boss & Metins

 

threeway_war_boss_count [valeur]

Nombre de Neuf Queues Élites qui vont apparaître pour la nation qui remporte la Guerre inter-empire.

 

threeway_war_pass_idx [mapidx]

Index de la map pour l'event de Guerre Inter Empire (map de passage). C'est rempli automatiquement par une map du fichier "share/locale/france/forkedmapindex.txt" Il est préférable de ne pas toucher à ce marqueur d'événement mais de plutôt changer le fichier texte.

 

threeway_war_sungzi_idx [mapidx]

Index de la map pour l'event de Guerre Inter Empire (map Sungzi). C'est rempli automatiquement par une map du fichier "share/locale/france/forkedmapindex.txt" Il est préférable de ne pas toucher à ce marqueur d'événement mais de plutôt changer le fichier texte.

 

valentine_drop [bool?]

Active le drop des Chocolat et

 

whiteday_drop [bool?]

Active le drop des objets 50031 et 50032

 

xmas_boom [bool]

Active la nuit, les feux d'artifices et l'apparition de L'organisation d'événement en MAP1 (qui vend des feux d'artifices et des pétards)

 

xmas_snow [bool]

Active la neige.

 

xmas_sock [taux de drop 1/x]

Active le drop des chaussettes de Noël.

 

xmas_song [bool]

Joue la musique de noël n'importe où.

 

xmas_tree [0-3]

Active l'apparition du sapin de Noël, trois design différents (1,2,3)

 

Comment utiliser un marqueur événementiel ?

 

 

Pour utiliser ces derniers, c'est excessivement simple ! Vous devez cependant avoir les choses suivantes :

 

  • Un personnage avec des droits situés au minimum sur "HIGH_WIZARD", le niveau juste avant "IMPLEMENTOR".
  • Un event flag à rentrer ainsi que la valeur que vous voulez lui attribuer.
  • La connaissance d'une commande très simple.

C'est bon ? Parfait ! Nous allons prendre un exemple concret et très utile. Il est souvent méconnu des gens mais pourtant il va vous faciliter grandement la tâche. Vous avez deviné ?? Suspense...

La mise en vente des orbes de bénédiction et du cuivre magique dans les shops des PNJ ! Et oui. Vous avez bien compris. Ce n'est pas un bug, ce n'est pas un oubli, ça ne vient pas de votre flag, antiflag ou shop, il n'y a pas besoin de diff ou de sources pour remédier à ce soucis. Vous avez juste besoin d'écrire un ligne de commande. Une seule et le soucis s'en ira de lui-même. C'est pas beau tout ça ?!

 

Brève explication du soucis :

Depuis des années les gens se plaignent de ne pas pouvoir mettre en vente les Orbes de Bénédiction (5ème bonus) dans un magasin de PNJ (comme la Marchande). Des solutions ont été trouvées, comme par exemple créer une boîte et y mettre l'orbe de bénédiction dedans et la vendre, cependant, tout ça était mit en place par Ymir, il limitait donc, par utilisation d'un marqueur événementiel, la mise en vente de deux Objets : L'Orbe de Bénédiction et le Cuivre Magique. Regardons donc la liste précédemment fournie et trouvons le marqueur correspondant et décortiquons le :

 

 

Citation

hivalue_item_sell [bool]

 

  • "hivalue_item_sell" est le nom du marqueur.
  • [bool] est la nature de ce qui va être rentré après le nom du flag dans la commande, donc, une booléenne. (Oui - Non, Vrai - Faux, 1 - 0)

Nous prenons donc notre personnage avec les droits correspondants et nous allons en jeu, nous tapons donc la commande suivante :

 

 

Citation

/e hivalue_item_sell 1

 

 

Explication :

 

  • Le "/e" sert à appeler / envoyer la commande "event_flag" comment la commande "/i" appelle / envoie la commande "item".
  • Comme plus haut, "hivalue_item_sell" est le nom du marqueur qui est appelé à être modifié.
  • Le "1" correspond à la valeur attribuée au marqueur événementiel appelé plus haut, comme c'est une booléenne, c'est soit 1, soit 0, avec 1 nous activons donc le marqueur "hivalue_item_sell".

La commande a donc attribué la nouvelle valeur au marqueur "hivalue_item_sell" et donc vous pourrez désormais acheter ces deux objets précédemment impossibles à acheter.

 

 

Dans le détail, pourquoi faut-il un marqueur événementiel et comment ça fonctionne ?

 

 

 

 

Pour ça, attention les amis, nous allons aller voir du côté des sources pour vous expliquer tout ça, tout du moins, pour rester dans la logique du précédent exemple, nous allons voir pourquoi ce marqueur interfère avec l'achat de ces deux objets. Cependant, je ne peux pas vous expliquer pourquoi Ymir a décidé de faire ainsi, en effet, il suffit juste de ne pas mettre ces objets en vente et d'utiliser des antiflags pour empêcher le joueur de l'acheter et de le mettre en vente. Hors, il est probable qu'à cette époque les antiflags (ou ceux de mise en vente) n'étaient pas encore crées par Ymir et dans ce cas, ceci est un peu plus clair. Notons aussi que "hivalue_item_sell" peut signifier "Mise en vente d'objet de (haute/grande) valeur".

 

Donc, cette parenthèse fermée, rendons nous dans "shop.cpp" où nous allons chercher "hivalue_item_sell", il apparaît deux fois mais j'ai préféré vous commenter qu'une partie, pour éviter de faire un guide trop long, surtout que le principe sera compris.

 

 

		if (quest::CQuestManager::instance().GetEventFlag("hivalue_item_sell") == 0) // Si l'event flag "hivalue_item_sell" est à zéro alors :
	{
		//축복의 구슬 && 만년한철 이벤트
		if (item->GetVnum() == 70024 || item->GetVnum() == 70035) // Si les objets sont les objets 70024 et 70035 - Orbe de bénédiction et Cuivre magique alors :
		{
			return SHOP_SUBHEADER_GC_END; // Envoyer le paquet d'arrêt de "shopping" - En gros, fermer la fenêtre d'achat
		} // Fin de la vérification des orbes & cuivres
	} // Fin de la vérification de l'event flag
 

 

Nous pouvons donc voir que cette vérification ne s'effectue que si le marquent événementiel "hivalue_item_sell" est à zéro. Si il est à 1, ce bout du code est simplement ignoré et la vérification ne s'effectue pas.

 

 

Pour aller plus loin :

 

 

'Galet a dit :

 

 

l'une des méthodes les plus simples pour modifier certains paramètres ou bien activer ou désactiver un système directement en jeu

 

 

 

 

Vous avez pu voir dans la phrase ci-dessus que j'ai parlé de plusieurs méthodes pour activer ou désactiver un système directement en jeu. Et bien sachez qu'il y en a d'autre et que ça sera le sujet d'un futur tutoriel.

Je précise aussi que dans ce guide, une ébauche de l'utilisation des event flags a été utilisée, vous pourrez donc par déduction créer vos propres marqueurs événementiels, cependant, la façon d'en créer un n'est pas expliquée. Vous saurez donc comment créer votre propre event-flag dans le tutoriel futur !

 

 

 

Voilà ! Ce tutoriel touche à sa fin, j’espère que désormais vous en saurez plus sur les marqueurs événementiels et sur les utilisations qui sont possibles ! (PS : Il est 01:49)

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour,

 

Ton guide est accepté ! Merci de ton investissement :)

Partager ce message


Lien à poster
Partager sur d’autres sites

×

Information importante

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