Project

Profile

Help

StarWarsProg » History » Sprint/Milestone 5

Vincent Le Goff, 01/25/2017 07:51 AM

1 1 Vincent Le Goff
h1. Programmes et scripts de Star Wars MUD FR
2
3
Scripter dans un MUD permet aux bâtisseurs de rajouter des fonctionnalités personnalisées à l'univers. Ces scripts, ou programmes (le terme est utilisé indifféremment dans ce document) sont reliés à des évènements précis, souvent déclenchés par les actions des joueurs.
4
5
Par exemple, on peut scripter un mobile de l'univers pour qu'il réagisse si un joueur dit quelque chose de précis dans la salle où il se trouve. Des quêtes relativement complexes, des zones un peu particulières, d'autres moyens de déplacement, tout ceci peut être scripté avec plus ou moins de temps. Ce document est fait pour servir de tutoriel au scripting sur Star Wars MUD FR, ainsi que d'index pour retrouver rapidement une fonctionnalité ou une syntaxe.
6
7
h2. Index des commandes de scripting
8
9
Un programme peut ne contenir que des commandes. Ces commandes sont sous la forme que les joueurs connaissent, comme @say@ ou @emote@, mais il y a des commandes particulières que seuls les mobiles, objes ou salles peuvent faire dans leur script.
10
11
Le tableau ci-dessous décrit la liste des commandes spécifiques au scripting. La première colonne contient le nom de la commande, la seconde sa syntaxe, la troisième une description très courte de son utilisation. Le nom de la commande est un lien, vous pouvez cliquer dessus pour avoir une explication plus détaillée, ainsi qu'un exemple de sa syntaxe.
12
13
| Commande | Syntaxe | Utilité |
14
| [[#mpadvance|mpadvance]] | @mpadvance <nom du joueur> <niveau>@ | Change le niveau d'un joueur. |
15
| [[#mpapply|mpapply]] | @mpapply <nom du joueur>@ | Passe un joueur en statut "non autorisé, en attente d'autorisation". |
16
| [[#mpapplyb|mpapplyb]] | @mpapplyb <nom du joueur>@ | Passe un joueur en statut "autorisé à jouer dans l'univers réel". |
17 2 Vincent Le Goff
| [[#mpasound|mpasound]] | @mpasound <phrase>@ | Envoie un message dans les salles alentour. |
18
| [[#mpat|mpat]] | @mpat <vnum de la salle> <commande>@ | Exécute la commande dans la salle indiquée. |
19 5 Vincent Le Goff
| [[#mpclosepassage|mpclosepassage]] | @mpclosepassage <vnum de la salle> <numéro de la sortie>@ | Détruit la sortie dans la salle. |
20 2 Vincent Le Goff
| [[#mpdamage|mpdamage]] | @mpdamage <victime> <montant>@ | Inflige des dégâts à la victime. |
21
| [[#mpdeposit|mpdeposit]] | @mpdeposit <montant>@ | Dépose de l'argent dans la zone du script |
22
| [[#mpdream|mpdream]] | @mpdream <victime> <phrase>@ | Envoie un message à un joueur qui dort. |
23 1 Vincent Le Goff
| [[#mpecho|mpecho]] | @mpecho <phrase>@ | Affiche une phrase à la salle dans laquelle se trouve le mobile, objet. |
24 2 Vincent Le Goff
| [[#mpechoaround|mpecharound]] | @mpechoaround <nom> <phrase>@ | Envoie un message à la salle, SAUF au joueur précisé. |
25
| [[#mpechoat|mpechoat]] | @mpechoat <nom> <phrase>@ | Envoie un message uniquement à un joueur. |
26 3 Vincent Le Goff
| [[#mpforce|mpforce]] | @mpforce <victime/all> <commande>@ | Force la victime (ou tous ceux présents dans la salle) à faire une commande. |
27
| [[#mpgain|mpgain]] | @mpgain <victime> <niveau> <nombre>@ | Donne de l'XP à la victime dans le niveau indiqué (le niveau est un nombre). |
28
| [[#mpgoto|mpgoto]] | @mpgoto <vnum de salle>@ | Téléporte le mobile du script dans une salle quelconque. |
29
| [[#mpinvis|mpinvis]] | @mpinvis (niveau)@ | Rend le mobile du script invisible. |
30 4 Vincent Le Goff
| [[#mpjunk|mpjunk]] | @mpjunk <objets>@ | Détruit un ou plusieurs objets. |
31
| [[#mpkill|mpkill]] | @mpkill <victime> | Tue un joueur sans utiliser murder. |
32
| [[#mpmload|mpmload]] | @mpmload <vnum du mobile>@ | Charge un mobile. |
33
| [[#mpnothing|mpnothing]] | @mpnothing@ | Cette commande ne fait strictement rien (utile pour les conditions vides). |
34
| [[#mpoload|mpoload]] | @mpoload <vnum de l'objet>@ | Fait apparaître un objet. |
35 5 Vincent Le Goff
| [[#mpopenpassage|mpopenpassage]] | @mpopenpassage <vnum de la salle d'origine> <vnum de la salle de destination> <numéro de la sortie>@ | Crée une sortie temporaire reliant origine à destination. |
36
| [[#mppkset|mppkset]] | @mppkset <victime> yes/no@ | Change le flag PK de la victime. |
37
| [[#mppractice|mppractice]] | @mppractice <victime> <talent/pouvoir/langue> <montant>@ | Change la connaissance de la victime. |
38 1 Vincent Le Goff
39
h2. Aide détaillée des commandes
40
41
h3. mpadvance
42
43
Syntaxe : @mpadvance <nom du joueur> <numéro du niveau>@
44
45
Cette commande fait passer le joueur précisé à un niveau indiqué. Cette commande ne marchera pas si le programme est dans un mobile prototype.
46
47
Exemple d'utilisation :
48
49
<pre>
50
mpadvance $n 3
51
</pre>
52
53
h3. mpapply
54
55
Syntaxe : @mpapply <nom du joueur>@
56
57
Cette commande passe un joueur en statut "non autorisé". Il devra être autorisé pour rentrer dans l'univers réel, ce qui peut se faire par script (voir [[#mpapplyb|mpapplyb]]) ou par la commande *authorize*.
58
59
Exemple d'utilisation :
60
61
<pre>
62
mpapply $n
63
</pre>
64
65
h3. mpapplyb
66
67
Syntaxe : @mpapplyb <nom du joueur>@
68
69
Cette commande autorise un joueur, lui permettant d'entrer dans l'univers réel, au-delà de la zone de départ.
70
71
<pre>
72
mpapplyb $n
73
</pre>
74
75 2 Vincent Le Goff
h2. mpasound
76
77
Syntaxe : @mpasound <phrase>@
78
79
Envoie la phrase passée en paramètre aux salles autour de la salle du programme (la salle dans laquelle se trouve le mobile ou objet, par exemple).
80
81
Exemple d'utilisation :
82
83
<pre>
84
mpasound Il commence à faire froid...
85
</pre>
86
87
h3. mpat
88
89
Syntaxe : @mpat <vnum de la salle> <commande>@
90
91
Cette commande permet d'exécuter une autre commande dans une salle différente. C'est l'équivalent de la commande *at* que les immortels peuvent utiliser : elle peut permettre à un mobile d'exécuter une commande dans une salle distante sans avoir à se déplacer.
92
93
Exemple d'utilisation :
94
95
<pre>
96
mpat 2200 drop all
97
</pre>
98
99
(Cette commande, si exécuté dans un programme de mobile, demandra au dit mobile de poser tous eses objets dans la salle de vnum 2200, et ceci sans quitter la salle où il se trouve.
100
101
*note importante*: on utilise souvent @mpat@ pour "cacher" certaines actions au joueur. Par exemple, on demande au mobile d'aller dans une salle fermée au joueur pour exécuter des commandes sans que le joueur ne le voit. Il existe cependant la commande [[#silence|silence]] qui reste plus lisible.
102
103 5 Vincent Le Goff
h3. mpclosepassage
104
105
Syntaxe : @mpclosepassage <vnum de la salle d'origine> <numéro de la sortie>@
106
107
Cette commande permet de supprimer une sortie créée avec [[#mpopenpassage|mpopenpassage]], c'est-à-dire une sortie temporaire, non-enregistrée par le système. En combinaison avec [[#mpopenpassage|mpopenpassage]], elle permet de créer des systèmes d'ascenseurs, navettes ou autre transports.
108
109
La sortie doit être précisée sous la forme d'un nombre.
110
111
Exemple d'utilisation :
112
113
<pre>
114
mpclosepassage 5000 2
115
</pre>
116
117
Voir aussi :
118
119
* [[#mpopenpassage|mpopenpassage]].
120
121 2 Vincent Le Goff
h3. mpdamage
122
123
Syntaxe : @mpdamage <victime> <montant>@
124
125
Cette commande permet d'infliger des dégâts à la victime précisée en premier argument. L'aide iindique que ces dégâts seront influencés par le sanctuaire, mais pas la protection, saving throws ou résistances.
126
127
Exemple d'utilisation :
128
129
<pre>
130
mpdamage $n 200
131
</pre>
132
133
Il semble que, si le programme inflige des dég6ats au mobile acteur du programme, et si le nombre de dégâts est suffisamment important pour le tuer, le programme fera planter le MUD.
134
135
h3. mpdeposit
136
137
Syntaxe : @mpdeposit <montant>@
138
139
Cette commande permet de déposer de l'argent dans la zone où se trouve le script (la zone de la salle, du mobile ou de l'objet). Elle prend en unique paramètre le montant à déposer dans la zone. Chaque zone a sa propre économie, et les programmes peuvent être utilisés pour influer sur l'économie de zone (par exemple, donner moins d'argent si la zone a moins dans son trésor).
140
141
Exemple d'utilisation :
142
143
<pre>
144
mpdeposit 5000
145
</pre>
146
147
Parmi la plupart des commandes utilisées avec [[#mpat|mpat]], ce..e-ci est peut-être l'une des plus fréquentes. On peut déposer ou retirer de l'argent facilement dans une autre zone :
148
149
<pre>
150
mpat 3311 mpdeposit 5000
151
</pre>
152
153
Voir aussi :
154
155
* [[mpwithdraw|mpdwithdraw]] pour retirer de l'argent de la zone actuelle.
156
157
h3. mpdream
158
159
Syntaxe : @mpdream <victime> <phrase>@
160
161
Cette commande envoie un message à un joueur ou mob qui dort. Par défaut, si on utilise [[#mpecho|mpecho]] o]] par exemple, un joueur qui dort ne voit pas le message. @mpdream@ permet d'envoyer spécifiquement un message à un joueur qui dort.
162
163 1 Vincent Le Goff
h3. mpecho
164
165
Syntaxe : @mpecho <phrase>@
166
167
Cette commande prend en argument une phrase, et affiche cette phrase dans la salle dans laquelle se trouve le programme (la salle du mobile, la salle de l'objet ou la salle-même, pour les programmes de salle). Le message est envoyé sans aucun préfixe, et le joueur n'a pas le moyen de savoir d'où vient le message.
168
169
Exemples d'utilisation :
170
171
<pre>
172
mpecho La vitrine explose dans un vacarme infernal !
173
mpecho $n arrive de nullepart.
174
</pre>
175
176
Voir aussi :
177
178 2 Vincent Le Goff
* [[#mpechoat|mpechoat]] pour afficher un message uniquement à un joueur ;
179 1 Vincent Le Goff
* [[#mpechoaround|mpechoaround]] pour afficher un message pour la salle, à l'exception d'un joueur ;
180
* N'oubliez pas, vous pouvez utiliser les commandes @say@ et @emote@ pour faire dire à un mobile quelque chose, ou le faire agir. Ce sera plus clair qu'utiliser @mpecho@ si c'est tout ce que vous voulez faire ;
181 2 Vincent Le Goff
* Cette commande est identique à la commande d'immortel *recho* que vous ne pouvez pas utiliser dans vos programmes.
182
183
h3. mpechoaround
184
185
Syntaxe : @mpechoaround <nom> <phrase>@
186
187
Cette commande permet d'envoyer un message à la salle du programme, comme [[#mpecho|mpecho]], mais elle permet de ne pas envoyer le message à un joueur précisé en premier paramètre. En combinant [[#mpechoat|mpechoat]] et [[#mpechoaround|mpechoaround]], on peut faire des messages d'ambiance assez personnalisés.
188
189
Exemple d'utilisation :
190
191
<pre>
192
mpdamage $n 30
193
mpechoat $n Vous recevez une fléchette dans la peau, sans doute empoisonnée !
194
mpechoaround $n $n reçoit une fléchette dans la peau, sans doute empoisonnée !
195
</pre>
196
197
Explications :
198
199
# La première ligne inflige 30 de dégâts à @$n@, c'est-à-dire l'acteur du script appelé ;
200
# La ligne 2 envoie le message seulement à @$n@ ;
201
# La ligne 3 envoie un message à toute la salle, sauf à @$n@.
202
203
h3. mpechoat
204
205
Syntaxe : @mpechoat <nom> <phrase>@
206
207
Envoie un message uniquement à la cible passée en premier paramètre. Cette commande peut être utile avec [[#mpechoaround|mpechoaround]] (voir [[#mpechoaround|mpechoaround]] pour un exemple).
208
209
Exemple d'utilisation :
210
211
<pre>
212
mpechoat $n Le jour se lève.
213
</pre>
214 3 Vincent Le Goff
215
h3. mpforce
216
217
Syntaxe : @mpforce <victime/all> <commande>@
218
219
Force une victime à faire une commande. Si le premier paramètre est @all@, force tous ceux présents dans la salle du script à faire la commande.
220
221
Exemples d'utilisation :
222
223
<pre>
224
mpforce $n remove blaster
225
mpforce all drop 5000 credit
226
</pre>
227
228
On peut aussi le faire silencieusement, comme toute commande de programme :
229
230
<pre>
231
silent mpforce $n remove all
232
</pre>
233
234
h3. mpgain
235
236
Syntaxe : @mpgain <victime> <niveau> <nombre>@
237
238
Donne de l'XP à une victime dans le niveau indiqué. Le niveau est à préciser sous la forme d'un nombre entre 0 et 7 (voir le tableau ci-dessous).
239
240
| Nombre | Niveau |
241
| 0 | Combat |
242
| 1 | Pilotage |
243
| 2 | Ingénierie |
244
| 3 | Chasseur de primes |
245
| 4 | Contrebande |
246
| 5 | Diplomatie |
247
| 6 | Commandement |
248
| 7 | Force |
249
250
Exemple d'utilisation :
251
252
<pre>
253
pmgain $n 1 50000
254
</pre>
255
256
Cet exemple donne 50.000 XP à $n dans le niveau pilotage.
257
258
h3. mpgoto
259
260
Syntaxe : @mpgoto <vnum de la salle<@
261
262
Cette commande permet de téléporter le mobile du script dans la salle dont le vnum est passé en paramètre. Cette commande ne marchera pas si la salle dans laquelle on souhaite se déplacer est privée.
263
264
h3. mpinvis
265
266
Syntaxe : @mpinvis (niveau)@
267
268
Cette commande demande au mobile du programme de devenir invisible. On peut passer en paramètre optionnel le niveau qu'il faut avoir pour voir ce mobile. Les mobiles ou joueurs d'un niveau inférieur à celui précisé ne verront pas ce mobile. Si le mobile invisible fait une action visible aux joueurs, ils verront simplement "someone"(quelqu'un) faisant l'action.
269
270
La documentation indique qu'une attaque de zone n'inclut pas les mobiles invisibles.
271
272
Exemple d'utilisation :
273
274
<pre>
275
mpinvis
276
mpinvis 3
277
</pre>
278
279
*Note* : utilisez cette commande une nouvelle fois pour lever le flag d'invisibilité du mobile.
280 4 Vincent Le Goff
281
h3. mpjunk
282
283
Syntaxe : @mpjunk <objets>@
284
285
Détruit un ou plusieurs objets dans l'inventaire ou portés par le mobile. Cette commande attend en argument le nom de l'objet. Dans ce cas, détruit un objet. On peut aussi utiliser la syntaxe @all.@ devant le nom de l'objet, pour détruire tous les objets de ce nom dans l'inventaire/l'équipement du mobile.
286
287
<pre>
288
mpjunk clef
289
mpjunk all.credits
290
</pre>
291
292
h3. mpkill
293
294
Syntaxe : @mpkill <victime>@
295
296
Cette commande permet de demander au mobile d'attaquer la victime indiquée.
297
298
Exemple d'utilisation :
299
300
<pre>
301
mpkill $n
302
</pre>
303
304
h3. mpmload
305
306
Syntaxe : @mpmload <vnum du mobile>@
307
308
Cette commande charge un mobile. Elle permet donc de faire apparaître un mobile dans la salle où vous vous trouvez. Il peut être utile de l'utiliser avec [[#mpat|mpat]] pour faire apparaître un mobile dans une salle distante:
309
310
Exemple d'utilisation :
311
312
<pre>
313
mpmload 500
314
mpat 230 mpmload 512
315
</pre>
316
317
h3. mpnothing
318
319
Syntaxe : @mpnothing@
320
321
Cette commande ne fait rien du tout. Elle semble assez inutile au premier abord. En vérité, sa seule utilité est pour les conditions vides : une condition (définie par @if@ ou @else@) ne peut être vide, c'est une limite de la syntaxe. Le @mpnothing@ permet de faire des conditions contraires. L'exemple ci-dessous affiche un message si $n n'est pas un wookiee.
322
323
Exemple d'utilisation :
324
325
<pre>
326
if race($n) == wookiee:
327
mpnothing
328
else
329
say Tu n'est pas un Wookiee, tant mieux !
330
endif
331
</pre>
332
333
Notez cependant que, dans le cas ci-dessus, on a surchargé la syntaxe inutilement. On aurait pu faire comme ceci (et ça aurait été bien plus lisible) :
334
335
if race($n) != wookiee:
336
say Tu n'est pas un Wookiee, tant mieux !
337
endif
338
</pre>
339
340
Il est possible que @mpnothing@ ait été inventé avant cette liberté dans la syntaxe des conditions contraires. Mais @mpnothing@ peut encore être utile pour les conditions vides imbriquées.
341
342
h3. mpoload
343
344
Syntaxe : @mpoload <vnum de l'objet>@
345
346
Cette commande permet de faire apparaître un objet de vnum indiqué dans l'inventaire du mobile faisant la commande.
347
348
Exemple d'utilisation :
349
350
<pre>
351
mpoload 20000
352
</pre>
353 5 Vincent Le Goff
354
h3. mpopenpassage
355
356
Syntaxe : @mpopenpassage <vnum de la salle d'origine> <vnum de la salle de destination> <numéro de la sortie>@
357
358
Cette commande crée une sortie temporaire (non sauvegardée) reliant la salle d'origine à la salle de destination, via la sortie dont le numéro est indiquée.
359
360
Exemple d'utilisation :
361
362
<pre>
363
mpopenpassage 5000 12088 0
364
</pre>
365
366
h3. mppkset
367
368
Syntaxe : @mppkset <victime> yes/no@
369
370
Change le flag PK de la victime. Le premier paramètre est la victime, le second soit yes (activer le flag) soit no (désactiver le flag).
371
372
Exemple d'utilisation :
373
374
<pre>
375
mppkset $n yes
376
</pre>
377
378
h3. mppractice
379
380
Syntaxe : @mppractice <victime> <talent/pouvoir/langue> <montant>@
381
382
Cette commande change le niveau du talent, pouvoir ou langue de la victime indiquée.