Archives des forums MMO/MMORPG > Neverwinter Nights > NWN - Maskado > drop random item
drop random item
Par kilvan le 6/7/2002 à 9:40:13 (#1766544)
avant de commencer le random je voudrais deja attribuer une item droppable a mon mob a partir du spawn et la j ai plusieurs problême.
j'ai essayer comme sa mais au dans le spawn du mob mais j ai un probleme de compilation
06/07/2002 09:36:34: Error. 'dropgen' did not compile.
dropgen.nss(19): ERROR: UNKNOWN STATE IN COMPILER
#include "NW_O2_CONINCLUDE"
#include "NW_I0_GENERIC"
void main()
{
//ligne 18 j essaye avec sa mais le probleme
ActionEquipItem(object "blabka",int 1);
SetListeningPatterns(); // Goes through and sets up which shouts the NPC will listen to.
WalkWayPoints(); // Optional Parameter: void WalkWayPoints(int nRun = FALSE, float fPause = 1.0)
// 1. Looks to see if any Way Points in the module have the tag "WP_" + NPC TAG + "_0X", if so walk them
// 2. If the tag of the Way Point is "POST_" + NPC TAG the creature will return this way point after
// combat.
GenerateNPCTreasure(); //* Use this to create a small amount of treasure on the creature
}
j ai aussi essayer avec
object CreateItemOnObject(string sItemTemplate, object oTarget=OBJECT_SELF, int nStackSize=1)
mais même erreur.
Si kkun pourrait m'aider a donner au spawn une item droppable a mon mob , je m'occuperais facilement ensuite d'une routine de random pour que le mob est tant pourcent de chance de dropper cette item.Dans ce cas le joueur pourra looter l'item
sinon reste l'autre solution si c est pas faisable mais la pareil, j'ai besoin d'aide a la mort du mob je crée un objet par terre en random que le joueur pourra ramasser .
Please help me , la je suis desesperer
Par kilvan le 6/7/2002 à 21:02:42 (#1769225)
ou y a moyen de les faire disparaitre au bout de disont 10 minute??
SVP
SInon
voici le code a rajouté dans le void d'un ondeath d 'un mob pour le random item drop
//::Random Drop
//::by allensan
//::6 juillet 2002
location ldied = GetLocation(GetObjectByTag (sTemplate));//lieu de la mort du mob
int randrop=Random(101);
//pour les items vous pouvez en mettre 5 si vous en metter pas laissez le string libre
string sdrop1="barbareaxe1";//blueprint de l item 1
string sdrop2="jewelarmor";//blueprint de l item 2
string sdrop3="jewelhelmet";//blueprint de l item 3
string sdrop4=";//blueprint de l item 4
string sdrop5=";//blueprint de l item 5
//pourcentage entrer un int de pourcentage de chance d'un drop verifiez le calcul pour arriver a 100% ne pas mettre 0
int pcent1 =5;
int pcent2 =pcent1+35;
int pcent3 =pcent2+40;
int pcent4 =pcent3+20;
int pcent5 =pcent4+0;
if((randrop>0)&&(randroppcent1)&&(randroppcent2)&&(randroppcent3)&&(randroppcent4)&&(randrop0)&&(randroppcent1)&&(randroppcent2)&&(randroppcent3)&&(randroppcent4)&&(randrop<=pcent5)&&(sdrop5!="))
{
CreateObject(OBJECT_TYPE_ITEM,sdrop5,ldied, TRUE);
}
SetIsDestroyable(FALSE);
AssignCommand(OBJECT_SELF, DelayCommand(fSeconds, VoidCreateObject(sTemplate,lLoca, TRUE)));
}
}
void VoidCreateObject(string sTemplate, location lLoca, int bUseAppearAnimation=TRUE)
{
CreateObject(OBJECT_TYPE_CREATURE, sTemplate,lLoca,TRUE);
SetIsDestroyable(TRUE);
}
//****************
Si kkun a des idées pour améliorer ce systême je suis interresser.
Par ailleur on peut pas créer de array dans le module de script??
Par Machin le 6/7/2002 à 22:58:19 (#1769630)
par exemple, ici
string sTemplate = "gobos";//blueprint du monstre - same as initial monster - use blueprint name
location ldied = GetLocation(GetObjectByTag (sTemplate));//lieu de la mort du mob
Il est bien dit que sTemplate est le nom du blueprint du monstre, mais apres tu utilise ce nom pour rechercher un objet a partir de son tag :confus:
Tout ca demande quelques éclaicissements ... notamment la signification exacte du parametre sTemplate de la fonction CreateObject. S'agit il du nom du blueprint ou du tag assigné au blueprint ?
De meme pour les items à créer, s'agit il du nom du blueprint ou du tag ?
Sinon, pour répondre a tes questions :
- Si le premier script que tu proposais ne compilait pas, c'est a cause de cette ligne
ActionEquipItem(object "blabka",int 1);
Que ne correspond par du tout à la syntaxe des scripts
tu aurais du mettre :
ActionEquipItem("blabla", 1);
en supposant que les parametres soient corrects.
Je ne sais pas vraiment ce que tu a voulu dire sur cette ligne, mais les types de variables n'apparaissent qu'a la déclaration d'une variable.
Le compilo peut connaitre le type d'une variable grace à sa déclaration, donc inutile de le répéter à l'utilisation. Cela impose bien sur de devoir déclarer les variables à l'avance. Mais bon, consulte un tutoriel sur le langage de script, tu saisira vite le principe.
-
y a moyen de les faire disparaitre au bout de disont 10 minute??
J'ai déjà vu un script faisant office du "garbage collector". C'est a dire qu'il supprimme automatiquement les objets trainant sur le sol depuis trop longtemps.
Fouille sur les sites recenssant des scripts pour nwn, tu va tomber dessus a coup sur.
-
Par ailleur on peut pas créer de array dans le module de script??
Il existe une bibliothèque simulant le fonctionnement des tableaux, mais il ne sont pas prévus par defaut.
Idem, fouille sur les sites de scripts
Par kilvan le 6/7/2002 à 23:50:17 (#1769775)
string sTemplate = "gobos";//blueprint du monstre - same as initial monster - use blueprint name
location ldied = GetLocation(GetObjectByTag (sTemplate));//lieu de la mort du mob
Tout ca demande quelques éclaicissements ... notamment la signification exacte du parametre sTemplate de la fonction CreateObject. S'agit il du nom du blueprint ou du tag assigné au blueprint ?
c'est expliquer dans un autre poste je crois pour le respawn de mob .
La partie que j ai rajouter c est l'autre qui crée un random de 1 a 5 item voir rien pouvant etre donner par le mob a sa mort.
Il est bien dit que sTemplate est le nom du blueprint du monstre, mais apres tu utilise ce nom pour rechercher un objet a partir de son tag
en faite non c est pas un objet en fonction du blueprint que tu cherche mais plutot l'endroit ou est mortle mob donc la location au moment ou le mob est mort d'ou son blue print dans le script
De meme pour les items à créer, s'agit il du nom du blueprint ou du tag ?
En faite il s agit du blueprint de l'item qui existe dans les customs ou items déja existante mais existe pas sur la scène en elle même.
//pour les items vous pouvez en mettre 5 si vous en metter pas laissez le string libre
string sdrop1="barbareaxe1";//blueprint de l item 1
string sdrop2="jewelarmor";//blueprint de l item 2
string sdrop3="jewelhelmet";//blueprint de l item 3
string sdrop4=";//blueprint de l item 4
string sdrop5=";//blueprint de l item 5
//pourcentage entrer un int de pourcentage de chance d'un drop verifiez le calcul pour arriver a 100% ne pas mettre 0
int pcent1 =5;
int pcent2 =pcent1+35;
int pcent3 =pcent2+40;
int pcent4 =pcent3+20;
int pcent5 =pcent4+0;
j'avais bien preciser blueprint justement et pas tag de l'item.
Sinon merci pour les réponses , j'èspère arrive a trouver le truc pour virer les items sur le sol.
Pour les arrays on peut se debrouiller sans, surtout si c est un script lourds qu'il émule les arrays sa risque d'être chiant pour les compilations.
JOL Archives 1.0.1
@ JOL / JeuxOnLine