Ediwiki

Wiki officiel de l'éditeur de carte du jeu Slayers Online

Outils pour utilisateurs

Outils du site


general:astuces

ASTUCES DE L'EDITEUR

Voici quelques astuces que vous pouvez utiliser sur l'éditeur de cartes de Slayers Online qui vous permettront sûrement de gagner du temps.

Veillez tout de même à ne pas en abuser car certaines astuces peuvent rapidement créer des erreurs de programmation.


1. Les raccourcis

Les raccourcis vous permettent d'éviter de cliquer avec la souris pour, par exemple, sauvegarder votre projet. Les raccourcis existants sont les suivants :

  • Ctrl + O → permet d'ouvrir un projet existant.
  • Ctrl + S → permet de sauvegarder le projet actuellement ouvert.
  • Ctrl + Z → permet d'annuler la dernière action effectuée.
  • Ctrl + C → permet de copier l'/les élément(s) sélectionné(s).
    (Pour sélectionner plusieurs éléments, créez un rectangle de sélection autour des éléments que vous souhaitez copier avec votre souris.)
  • Ctrl + V → permet de coller l'/les élément(s) préalablement copié(s) à l'endroit que vous avez désigné sur la map.
  • F9 → permet de lancer le test de votre projet.

2. Le mode "Expert"


Comme vous pouvez le voir sur le haut d'une fenêtre “évènement”, il y a deux cases à cocher nommées :“Expert”. Pour l'activer, il suffit simplement de cocher la ou les cases. Le mode expert activé permet de copier et coller des commandes comme dans un éditeur de texte. Attention à ne pas rentrer des commandes incompatibles avec la zone en question.

Exemple : dans les conditions de déclenchement vous pourrez écrire des commandes n'existant pas dans la liste, l'évènement pourra ou non fonctionner. Les commandes qui n'existent pas dans les conditions de déclenchement ne seront alors pas testées dans votre évènement.

Le mode expert vous permet aussi taper entièrement vos lignes de commande mais prenez garde à ne pas faire d'erreurs ! :-)

3. Les pages


Reprenons l'image vue précédemment et passons aux boutons suivants : “Nouvelle Page”, “Copier page”, et “Supprimer Page”, ainsi que la case à cocher nommée “Avec commande”.

Ces boutons vous permettent de créer, dupliquer et supprimer des pages de vos évènements. Le bouton “Copier page” crée une page ayant pour chiffre NuméroDeLaPageACopier+1 qui aura les mêmes conditions de déclenchement que la page que vous souhaitiez copier. Cette page pourra avoir les mêmes “Commande évènement” si vous avez coché la case “Avec commande” avant de cliquer sur “Copier page”.

Vous pouvez également changer l'ordre des pages de votre évènement grâce aux deux flèches :

4. Les évènement automatiques

Si vous réalisez un évènement automatique vous n'êtes pas obligé d'inscrire toutes les choses qui sont réalisées suivant les conditions de déclenchement. En effet, les pages d'un évènement ne s’exécute que si les conditions de déclenchement de la dite page sont respectées. Dans le cas où toutes les conditions de déclenchement d'une page sont respectées les commandes sont exécutées.

Exemple : si vous souhaitez que votre évènement ne se réalise que lorsque le joueur se nomme “Toto” et si la Variable[7] est à 1.

Page 1
Conditions d'évènementsCommande évènements
Page 2
Conditions d'évènementsCommande évènements

Dans le cas où les conditions de déclenchement de la la première page sont respectées, le serveur va l'exécuter. La page vide représente toutes les autres pages qui pourraient être faites comme, par exemple, si le joueur ne s'appelle pas “Toto” ou si la variable[7] n'est pas à 1.

En résumé, si les deux conditions de la page 1 ne sont pas respectées, on passe à la page suivante qui ne renvoie pas de commande.

NB : lorsque vous avez plusieurs booléens ou variables à modifier dans vos CE, il est vivement conseillé de les inscrire de la façon suivante : Bool[3..6]=0 ou Variable[3..6]=0. Cette solution est bien plus rapide que la modification ligne par ligne.
/!\ Cela ne fonctionne que pour les CE et pas pour les CD /!\

5. Utilisation tolérée de Serveur[] uniques

Dans la majeure partie des cas, vous pourrez vous débrouiller avec des variables simples et des variables serveur classiques.

Cependant, dans des cas très précis de jeux à plusieurs, il vous faudra générer des variables serveur pour chaque joueur / groupe de joueur / … afin que leurs actions soient visibles de tous sans qu'il n'y ait d'interférences dans les actions des joueurs.

Exemple : faire qu'une porte soit ouverte pour un groupe de joueur et fermé pour un autre.

Il faut, dans ce cas précis, utiliser des variables serveur de type Serveur[MiniJeu%Variable%] (où %Variable% peut correspondre à un pseudo ou un join).

En effet, vous avez le droit d'utiliser ce genre de variables serveur auto-générées mais UNIQUEMENT si vous les mettez à zéro le plus tôt possible ! (Serveur[MiniJeu%Variable%]=0) Elles seront alors purgées au bout d'un certains temps et n'occuperont pas de place dans le serveur (contrairement aux variables serveur uniques utilisées pour le mariage qui, elles, ne sont pas remises à zéro.)

A n'utiliser que si vraiment nécessaire et uniquement si vous êtes très à l'aise avec la programmation sur l'éditeur.

6. Vérifications conformes de saisies numériques

Cette astuce permet, grâce à différents tests, de vérifier la conformité d'une saisie numérique.

Exemples : mises, dons à un PNJ, etc.

1 - Saisie de petites valeurs

Sachez, avant de commencer, que pour des saisies numériques n'excédant pas 32768 (valeur maximale d'une variable joueur) vous pouvez simplement utiliser “Variable[..]=InputString('')” pour ensuite travailler avec cette variable.

En effet, la saisie dans une “Variable[]” est conçue pour bloquer la saisie de lettres, de symboles ou de valeur négative.

N'oubliez pas cependant de vérifier que la valeur entrée est bien inférieure à 32768 avant de l'utiliser car si la saisie est supérieure, la variable prendra une valeur négative.

Exemple d'illustration :

Page 1
Conditions d'évènementsCommande évènements

2 - Saisie de valeurs plus libres (de 1 à quelques milliards)

Si vous souhaitez accorder plus de liberté dans les saisies numériques, vous devrez faire la saisie dans une “string” au lieu d'une “Variable[]”.

Cependant, ceci laisse au joueur la possibilité d'entrer des valeurs avec des lettres/symboles et des valeurs négatives. Il faut donc passer par plusieurs tests :

  • Test de validité : n'accepte pas les lettres & symboles.
  • Test de positivité : n'accepte pas les valeurs négatives.
  • (Test porte-monnaie : vérifie que le joueur possède bien la somme dans le cas d'un don ou d'une mise) → Cas d'un don ou d'une mise.
  • Test valeur limite fixe : une limite max car au-delà de quelques milliards saisis de nombreux bugs surviennent.

Variables utilisées pour l'exemple qui suit...

  • Variable[13] → permet, dans cet exemple, le changement de page (pour effectuer les tests dans l'ordre).
  • %String1% → reçoit la saisie du joueur (peut contenir chiffre, lettre, symbole..).
  • Variable[0] → permet, dans cet exemple, de tester si la saisie est bien numérique (si on y met des lettres ou symboles, elle devient = à 0).
  • Serveur[Cagnotte] → permet, dans cet exemple, de contenir le total des dons des joueurs.

Exemple : don de PO à un PNJ

Page 1
Conditions d'évènementsCommande évènements
Page 2
Conditions d'évènementsCommande évènements
Page 3
Conditions d'évènementsCommande évènements
Page 4
Conditions d'évènementsCommande évènements

7. Évènement avec plusieurs restrictions

Si vous désirez créer un event restrictif pour, par exemple; que seul un joueur appartenant à la Guilde “Admin” ou s'appelant “Ophio” ou étant dans le groupe “Slayers” puisse accéder au téléport, 2 pages suffisent ;-)

Page 1
Conditions d'évènementsCommande évènements

Page 2
Conditions d'évènementsCommande évènements

8. Réinitialiser les variables à la déconnexion

Si, en entrant dans une map, “Variable[13]=1” et que dans les propriétés de la carte on met “Si Variable[13]=1 alors Serveur[]=” (c'est-à-dire tout vide en ce qui concerne la variable serveur), quand le joueur se déconnecte et se reconnecte, la Variable[13] reviendra à 0 automatiquement.

Il suffit donc de mettre à l'intérieur de la map:

CD :
Auto une seul fois
Variable[13]=0

CE :
Variable[14]=0
Variable[15]=0
Variable[16]=0

Si les cases de la Variable Serveur sont remplies, la Variable sera tout de même réinitialisée.

9. La division

Lorsque l'on divise un chiffre sur l'éditeur, le résultat est toujours arrondi à l'unité inférieure.
Ainsi 5 divisé par 3 n'est pas égal à 1,666… mais à 1.

Si l'on souhaite arrondir à l'unité supérieure, il suffit d'ajouter 1 après la division.
→ (5/3)+1=2

Et si l'on souhaite arrondir à l'unité supérieure quand la décimale est supérieure ou égale à 5, et à l'unité inférieure quand la décimale est inférieure à 5, il faudrait théoriquement rajouter 0,5 après la division:
→ (5/3)+0,5 = 2
→ (4/3)+0,5 = 1

Mais lorsque l'on rentre 0,5 (ou 1/2) dans l'éditeur, cela ne fonctionne pas.
Il faut donc utiliser une astuce : on multiplie tout par 10, puis on redivise tout par 10.
→ (50/3)+5 = 21
→ 21/10=2

10. Comptage d'objets

Il n'est pas possible de connaitre combien d'objets du même nom (ex: Dague) possède un joueur dans son inventaire directement avec les commandes de l'éditeur. Il n'est possible de connaitre le nombre d'objets total que possède le joueur qu'avec la variable joueur : %NbObjetInventaire%.

Nous allons utiliser une astuce qui consiste à retirer le potentiel maximum de possession de l'objet recherché au joueur (soit 100 exemplaires) puis nous allons regarder combien il possédait d'items avant et après. Le comptage consiste à récupérer la différence. Il ne faut pas oublier de rendre cette différence par la suite !

Attention néanmoins : ce code ne fonctionne pas sur l'éditeur light mais uniquement sur le serveur REEL.

Exemple d'illustration :

Page 1
Conditions d'évènementsCommande évènements

Réécriture de l'exemple pour être utilisable sur l'éditeur light :

Page 1
Conditions d'évènementsCommande évènements

general/astuces.txt · Dernière modification : 2022/09/25 19:11 de 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki