Bienvenue sur JeuxOnLine - MMO, MMORPG et MOBA !
Les sites de JeuxOnLine...
 

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

Drop d'une quantité d'or... + question TAG Vs RESREF

Par Archamedes_Fr le 12/12/2002 à 17:53:24 (#2771458)

Bonjour (Bonsoir, ça dépend )à tous,

j'ai modifié les drops des créatures à l'aide d'un ti script tout nul,

int nTresor = Random(4);
switch (nTresor)
{
case 0: CreateItemOnObject("nw_ashmto011",OBJECT_SELF,1);;break;
case 1: CreateItemOnObject("lamenoire",OBJECT_SELF,1);;break;
case 2: CreateItemOnObject("NW_IT_MSMLMISC23",OBJECT_SELF,1);;break;
case 3: CreateItemOnObject("NW_MCLOTH022",OBJECT_SELF,1);;break;
}


j'aurais bien aimé pouvoir y introduire une possibilité d'or... mais je trouve pas le tag pour de l'or... je suppose qu'il doit bien y avoir une façon de faire, forcément nul, mais comme je la trouve pas, j'appelle à l'aide...

De plus, il y a un truc que je comprends avec mon script...
Pour les dropp d'objet de base, je met le TAG de l'objet.
Mais pour les objets personnalisés, je suis obligé de mettre le RESREF, car si je met le TAG, le monstre fait bien le Dropp, mais le sac disparaît aussitôt... Mystère... mystère.

une bonne âme aurait-elle une petite étincelle à glisser dans ma lanterne bien obscure ?

Par coolstar le 12/12/2002 à 18:08:51 (#2771614)

Hi!


Alors pour ce qui est de l'or : Peindre les objets/Divers/Autres/Pièce(s) d'or... ;)

Par contre, je ne vois pas pourquoi tu scriptes le Dropp alors que tu peux tout simplement les mettre dans l'Inventaire et cocher "Abandon possible" ??? :D

...

Par Archamedes_Fr le 12/12/2002 à 18:19:07 (#2771710)

Heu... pour l'or faut pas rire.. mais.. j'ai regardé 3 fois !!! :monstre: Me disait bien qu'il devait y avoir un truc du style...
Merci.

Si je met dans l'inventaire et que je coche "abandon possible", toutes les créatures lacheront les mêmes objets. Hors, j'aimerais bien que chaque créature rencontré lache qqch de différent de son copain.
Désolé, je suis un vieux MJ avec ses habitude de tirage de trésor pour chaque créature.

D'ailleurs, j'ai presque fini de modifier les créatures pour qu'elles collent davantage aux caractéristiques du Bestiaire DD3.

Qui a dit fou.. qui ? :bouffon:

Par coolstar le 12/12/2002 à 18:40:27 (#2771904)

Je suis un... heeuuu... vieux MJ, moi aussi, et je n'ai jamais aimé Les Règles! :D

;)

Par Tynril le 12/12/2002 à 18:54:52 (#2772031)

Pourquoi le double point-virgule avant le break; ? :doute:

Par Archamedes_Fr le 12/12/2002 à 19:11:03 (#2772134)

Une erreur sur la première ligne et... un très très mauvais copier/collé... :eek:

Par Taern le 12/12/2002 à 21:06:30 (#2772942)

Pour créer de l'or, il existe une commande plus intuitive il me semble : GiveGold() (ou quelque chose comme ça). Ca permet de ne pas avoir à recourir au ResRef.

Ensuite, la distinction entre le Tag et le ResRef (ou blueprint) est simple :
- le tag est une simple étiquette, qui peut être la même pour plusieurs objets et qui ne permet que de "reconnaitre" un objet grâce par exemple à la fonction GetTag.
- le resref est plutôt une carte d'identité; chaque objet en a un unique dans tout le module, et c'est ça et uniquement ça qui te permet d'utiliser CreateObject() et compagnie.

Pour les objets standards de Bioware, je suppose que le tag et le resref sont confondus, d'où le fait que ça marche sans problème. Pour les objets qui n'ont pas un resref et un tag identique, il faut utiliser le resref sans quoi ça ne marchera sûrement pas ;)

Par Jedaï le 12/12/2002 à 22:53:54 (#2773743)

Hum..C'est plus compliqué que ça Taern.:o


*Le tag est effectivement une "étiquette", plusieurs créature peuvent avoir le même tag mais c'est qu'elle ne sont pas censées être traitées de façon différenciée. En effet le créateur du module peut définir un tag personnalisé pour chaque "objet" créé, ces tags lui permettent de récupérer un objet bien défini grâce à la fonction GetObjectByTag(). Il s'agit donc d'un outil de désignation des objets présents dans le module.
*Le blueprint/resref quant à lui a une fonction complètement différente : il s'agit du nom d'un "prototype", chaque type d'objet présent dans la palette a son propre blueprint/resref, et ce blueprint/resref est censé être unique : un pour chaque prototype d'objet. Une fois créé à partir de son blueprint, un objet peut-être modifié, on peut lui attribuer un tag personnalisé, etc... Mais avant cela, cet objet n'avait aucune existence propre, donc il n'avait pas de tag (il n'était pas présent dans le module)! La confusion vient du fait que dans le prototype d'un objet on indique un tag par défaut qui sera automatiquement attribué à notre objet une fois qu'on l'aura créé.


On comprend donc bien qu'il soit obligatoire d'utiliser le Blueprint/ResRef, caractéristique d'un prototype d'objet, pour en créer un, tandis qu'il est impossible d'utiliser ce blueprint pour récupérer un objet déjà créé, caractérisé lui par un tag.

La particularité des objets créés par Bioware s'explique par le fait que ces rapiats ont visiblement créé une table de correspondance entre les tags par défaut des prototypes de leurs objet et les blueprint de ces mêmes objets. Nous n'avons pas ces facilités, c'est pourquoi il est souvent conseillé de créer des tags par défaut identique au blueprint pour nos objets personnalisés (ce qui permet par exemple de créer une copie d'un objet grâce à son tag). :cool:

Par Archamedes_Fr le 13/12/2002 à 0:13:04 (#2774219)

Bhen merci pour tout.

Heu... c'est où le registre de ceux qui se coucheront moins bête ce soir ?

Par Taern le 13/12/2002 à 17:06:54 (#2778697)

Provient du message de Jedaï
Hum..C'est plus compliqué que ça Taern.:o


Ce n'est pas moi qui avait posé la question :rolleyes:

Provient du message de Jedaï
c'est pourquoi il est souvent conseillé de créer des tags par défaut identique au blueprint pour nos objets personnalisés (ce qui permet par exemple de créer une copie d'un objet grâce à son tag).


Ah, c'est bien ce que je pensais ! La fonction GetResRef() donnée par les rapiats de Bioware lors de la 1.26 sert donc bel et bien à faire joli !

:cool:

Par Théranthil le 13/12/2002 à 17:10:20 (#2778730)

Ah, c'est bien ce que je pensais ! La fonction GetResRef() donnée par les rapiats de Bioware lors de la 1.26 sert donc bel et bien à faire joli !


C'est exactement ce que je me disais, mais je n'ai toujours pas trouver le bon emplacement dans ma chambre. :(

Par Jedaï le 13/12/2002 à 18:56:57 (#2779583)

Désolé Taern, mais ton explication manquait singulièrement de clarté, surtout pour les blueprints ;) .
Je n'ai peut-être pas fais mieux, mais j'aurais au moins essayé :D .

Pour la fonction GetResRef(), elle est plutôt controversé : même si je l'utilise personnellement lorsque je donne des scripts qui risquent de "cloner" un objet personnalisé, pour mon usage personnel, je continuerait à faire usage de la convention sus-citée, qui, elle, n'est pas entachée de doute :cool: !
En effet des échos contradictoires m'ont rapporté de nombreux dysfonctionnements de cette fonction :(.

Tu noteras par ailleurs que pour ceux qui ont eu la VO dés le début, cette fonction s'est faite attendre... v1.26 quand même !:rolleyes:

Par Taern le 13/12/2002 à 19:33:21 (#2779872)

Puisqu'elle est là, autant en profiter alors ;)

Elle ne m'a jamais fait faux bond, personnellement. Mais effectivement il me semble avoir entendu (ou lu) quelque part que la fonction retournait une chaîne vide quand l'objet examiné n'appartenait pas à la liste des objets référencés dans la palette. Les instances personnalisées d'objets quoi ;)

Par eMRaistlin le 13/12/2002 à 19:58:38 (#2780103)

Non, c'est plus pointu que ca :

Il faut que l'item ait été crée avant de poouvoir etre repéré par GetResRef...

Je m'explique : il faut qu'il y ait eu un createObject pour que ca marche...


Par contre, je n'ai pas testé, mais je suppose que le CreateObject doit etre effectué dans la session courante du serveur... a priori, meme apres, c'est trop tard... enfin, si j'en ai bien comrpis le fonctionnement, c'est comme ca que ca doit se passer...

Par Tynril le 13/12/2002 à 22:06:58 (#2781027)

Je me permet de contredire tout le monde comme un bourrin, désolé.

GetResRef marche, mais uniquement avec les blueprints personnels.

GetResRef(oObjectDeBaseBioWare) retournera une chaîne vide.
GetResRef(oObjectSuperAncienDeYa3000AnsMaisCreeSurMonModuleDansAuroraAvecMesPetitesMainsPuisFileAuJoueurDeNImporteQuelleFacon) retournera le bon ResRef de l'objet.

Par coolstar le 13/12/2002 à 22:13:35 (#2781068)

:doute:

Par RAT le 14/12/2002 à 4:30:49 (#2783467)

Juste pour prévenir ceux qui ne connaissent pas le resref que ce dernier doit avoir une taille de 16 caractères max :p

Par shadoh le 14/12/2002 à 11:01:33 (#2784228)

Si tu veux créer de l'or, il faut passer par une fonction spéciale. Je te mets mon script que j'utilise sur mon module pour créer de uniquement l'or dans les coffres. Ca marchera de la même manière si celui ci est attaché a un mob.


#include "NW_O2_CONINCLUDE"
void main()
{
//Par défaut, à 5 min de respawn.
int nRandom = Random(10);
float fRespawnTime = 300.0;
object oPC = GetLastOpener();
object oPC2 = GetLastOpenedBy();

if(GetIsPC(oPC))
{
if(GetLoçalInt(OBJECT_SELF,"EMPTY") == 0)
{
CreateGold(OBJECT_SELF,oPC2,OBJECT_TYPE_ITEM,5);// le 5 correspond au modificateur qui s ajoutera
//au lv du PC pour definir le montant d'or qui se trouvera ds le coffre
SetLocalInt(OBJECT_SELF,"EMPTY",1);
DelayCommand(fRespawnTime,SetLocalInt(OBJECT_SELF,"EMPTY",0));
}
}
}


Comme tu peux le voir, je mets une variable pour me permettre de contrôler le temps de réaparition de l'or dans mes contenants. Si tu veux utiliser ca sur le onDeath des monstres, tu pourras donc t'en passer et juste utiliser la fonction.

Par Archamedes_Fr le 18/12/2002 à 21:53:29 (#2826505)

hum... je manque à tout mes devoirs...:eureka:

Je connaissais pas vraiment le ResRef, pas plus que sa taille maxi... * va éviter de faire des boulettes comme ça... *
Merci. pour toutes vos réponses.

Par RAT le 19/12/2002 à 0:27:38 (#2827727)

De rien ça fait toujours plaisir d'aider les autres :):):D.
Bossez bien !!! :) moi j'y retourne :p

Par coolstar le 19/12/2002 à 1:40:30 (#2828156)

Provient du message de RAT
De rien ça fait toujours plaisir d'aider les autres :):):D.
Bossez bien !!! :) moi j'y retourne :p

:p

JOL Archives 1.0.1
@ JOL / JeuxOnLine