Drop d'items non-systématique (2ème édition) !

Répondre
Partager Rechercher
Bon, j'ai déjà posté un topic concernant ce sujet mais c'était sans grande réussite étant donné que je suis une 'pine' en script et qu'il m'arrive de ne pas tout comprendre :
Le topic se trouve ici.

Je vais tout de même reprendre l'idée : gloire à celui qui m'expliquera simplement ce que j'estime être un point très important dans la confection d'un module (persistant qui plus est).

Un PNJ envoie un PJ aller chercher un ingrédient bien spécial dans une zone, un ingrédient qui se trouve sur un monstre bien précis. Bien entendu, je ne veux pas que cet ingrédient soit droppé par le premier monstre venu (même si c'est le type de monstre susceptible de porter l'ingrédient). Je voudrais que après avoir tué un certain nombre de monstre, l'ingrédient tombe sur le cadavre (je ne veux pas que l'item tombe systématiquement). Je ne sais pas par quel système y arriver : Nombre de monstres tués avant ? Facteur chance en % ?

Je vous implore ! AIDEZ-MOI !

PS : Je précise également que les monstres font partie d'un encounter.
Ce qu'il faudrat à ce moment là, bon là je ne peux pas te faire le script maintenant, devant me lever très tot demain...

Par contre, je peux te donner l'idée pour commencer .

Donc ton but c'est de faire un compteur de monstre que tu tueras si j'ai bien suivi.

Et aussi que même si tu as atteint le bon nombre de monstre tué, cela doit passer à une probabilité de laisser tomber l'objet.


Je pense que tout cela doit se passer dans l'encounter ou au moins une grosse partie.

donc en fait dans le onenter.

exemples :

OnEnter :

Code PHP:


object oPC
GetEnteringObject();
int MAX_MONSTER=20;
int PROB_INGREDIENT=20;
object oArea=GetArea(oPC);

if ( (
GetIsObjectValid(oPC) && GetIsPC(oPC))
int nCompt=GetLocalint(oPC,"COMPTEUR_MONSTER");


if (
nCompt>=MAX_MONSTER)
{
      if (
d100()<PROB_INGREDIENT
      
SetLocalInt(oArea,"ACTIVE_INGREDIENT",TRUE);

Dans le Ondeath de tes créatures tu rajoutes juste une ligne.

Code PHP:

object oKiller GetLastKiller();
SetLocalInt(oKiller ,"COMPTEUR_MONSTER",GetLocalInt(oKiller ,"COMPTEUR_MONSTER")+1); 
Dans le OnSpawn de ta créature :

Code PHP:

object oArea=GetArea(OBJECT_SELF);
string sRef="leresrefdetonitem";
if (
GetLocalInt(oArea,"ACTIVE_INGREDIENT")==TRUE)
CreateItemOnObject(sRef); 
Bon voilà vite fait une idée plausible, je ne dis pas du tout que c'est la meilleur et que le script ne contient aucun bug, l'ayant fait directement en écrivant mon post, et en me dépêchant car là je devrai déjà être dans mon lit en train de lire mon livre de programmation depuis au moins 15 minutes lol .

Enfin bon, si cela te convient tant mieux
Heuu excuse moi, mais comment veux tu que je puisse t'aider, si tu ne me donnes pas les erreurs que cela te fais... car moi je n'ai pas l'editeur sur moi là pour tester ://



Code PHP:


object oPC
GetEnteringObject();
int MAX_MONSTER=20;
int PROB_INGREDIENT=20;
object oArea=GetArea(oPC);

if ( (
GetIsObjectValid(oPC)) && (GetIsPC(oPC)))

int nCompt=GetLocalint(oPC,"COMPTEUR_MONSTER");


if (
nCompt>=MAX_MONSTER)
{
      if (
d100()<PROB_INGREDIENT
      
SetLocalInt(oArea,"ACTIVE_INGREDIENT",TRUE);


Et je reprécise qu'il n'y a pas de void main là
Mille excuses ! L'éditeur dit que ce sont des erreurs de déclarations. Notamment avec le premier scripts (en effet, je ne suis pas allé plus loin ) avec la ligne :

Code PHP:

if ( (GetIsObjectValid(oPC) && GetIsPC(oPC)) 

Aussi je voudrais savoir de qu'est exactement que ce COMPTEUR_MONSTRE ? Il faut que je le créé ?

PS : je peux paraître naïf, mais si l'erreur était ridicule, veuillez m'en excuser, je ne m'en sors pas en scripts (je l'aurais assez dit !) !
vivi je viens de le corriger , là normalement cela devrait passer, j'avais oublié une parenthèse.

Par contre le COMPTEUR_MONSTER, c'est à dire le GetLocalInt, tu n'as pas besoin de le déclarer, car au début, il va considérer que la variable est vide, si le PC n'est pas tagué.

Voila.
ACTIVE_INGREDIENT

C'est juste une variable locale que tu initialise à TRUE si toutes les conditions passent pour que le prochain spawn de monstre, cela crée donc l'ingredient que tu désires...

Donc tu n'as même pas à l'initialiser.
Code PHP:

object oPCGetEnteringObject();
int MAX_MONSTER=20;
int PROB_INGREDIENT=20;
object oArea=GetArea(oPC);

if ( (
GetIsObjectValid(oPC)) && (GetIsPC(oPC)))

int nCompt=GetLocalint(oPC,"COMPTEUR_MONSTER");


if (
nCompt>=MAX_MONSTER)
{
      if (
d100()<PROB_INGREDIENT)
      
SetLocalInt(oArea,"ACTIVE_INGREDIENT",TRUE);

17/03/2003 21:21:03 : Erreur. 'onenter' n’est pas compilé.
onenter.nss(6): ERREUR : INVALID DECLARATION TYPE
Donc (je voudrais qu'on se comprenne bien), quand tout ça marchera , et bien la rencontre générera des Monstre sans (le plus souvent) l'item et avec (le moins souvent) l'item ??
C'est ça hein ?
Tu saurais aussi me dire, si c'est le cas, à quel fréquence tomberont ses items et me l'illustrer dans le scripts (pour monter que j'ai de la bonne volonté et que j'essaye de comprendre )
Voila je viens de prendre un peu plus de temps lol maintenant je suis en retard

mais bon plus aucun bug


Code PHP:


object oPC
GetEnteringObject();
int MAX_MONSTER=20;
int PROB_INGREDIENT=20;
object oArea=GetArea(oPC);
int nCompt;

if ( (
GetIsObjectValid(oPC)) && (GetIsPC(oPC)))
nCompt=GetLocalInt(oPC,"COMPTEUR_MONSTER");


if (
nCompt>=MAX_MONSTER)
 {   if (
d100() < PROB_INGREDIENT)
      
SetLocalInt(oArea,"ACTIVE_INGREDIENT",TRUE);

 } 
Dsl,
Citation :
Provient du message de Mel Ethybem
Donc (je voudrais qu'on se comprenne bien), quand tout ça marchera , et bien la rencontre générera des Monstre sans (le plus souvent) l'item et avec (le moins souvent) l'item ??
C'est ça hein ?
Tu saurais aussi me dire, si c'est le cas, à quel fréquence tomberont ses items et me l'illustrer dans le scripts (pour monter que j'ai de la bonne volonté et que j'essaye de comprendre )
Je cite mes propres messages !
Citation :
Provient du message de Mel Ethybem
Donc (je voudrais qu'on se comprenne bien), quand tout ça marchera , et bien la rencontre générera des Monstre sans (le plus souvent) l'item et avec (le moins souvent) l'item ??
C'est ça hein ?
Tu saurais aussi me dire, si c'est le cas, à quel fréquence tomberont ses items et me l'illustrer dans le scripts (pour monter que j'ai de la bonne volonté et que j'essaye de comprendre )

En clair tu auras à partie de 20 montres minimum, 20% de chances que le monstre possède l'item dans son inventaire...

Voilà,
Question
On m'a demandé de mettre ça dans le OnDeath de ma créature :
Code PHP:

object oKiller GetLastKiller();
SetLocalInt(oKiller ,"COMPTEUR_MONSTER",GetLocalInt(oKiller ,"COMPTEUR_MONSTER")+1); 
Je peux vraiment le taper là ou je veux du moment que ça se compile ?
Question
Dites au fait :
J'ai appliquer tout mes scripts sans erreurs. J'ai aussi remplacer l'indice de probabilité (qui était à 20à par 100 pour voir i ça fonctionnait... mais les ours ne lâche rien !!

Comment ça se fait ?
Citation :
Provient du message de Mel Ethybem
Qu'est ce que j'aurais pu faire comme couille ???? Tu sais, toi ? Pas d'erreurs d'alignement ? Je sais quand même faire un copier-coller !
Heuu si je ne m'abuse pas, je préviens d'avance qu'il n'avait pas de void main????

donc hummm.... tu n'as pas lu tout ce que j'ai dis.

Citation :
Heuu excuse moi, mais comment veux tu que je puisse t'aider, si tu ne me donnes pas les erreurs que cela te fais... car moi je n'ai pas l'editeur sur moi là pour tester ://





PHP:--------------------------------------------------------------------------------
object oPC= GetEnteringObject();
int MAX_MONSTER=20;
int PROB_INGREDIENT=20;
object oArea=GetArea(oPC);

if ( (GetIsObjectValid(oPC)) && (GetIsPC(oPC)))

int nCompt=GetLocalint(oPC,"COMPTEUR_MONSTER");


if (nCompt>=MAX_MONSTER)
{
if (d100()<PROB_INGREDIENT)
SetLocalInt(oArea,"ACTIVE_INGREDIENT",TRUE);
}

--------------------------------------------------------------------------------



Et je reprécise qu'il n'y a pas de void main là


Edité par RAT le 17-03-2003 à 20:09

Mais bon je dis ça comme ça moi
Citation :
Provient du message de Mel Ethybem
Dites au fait :
J'ai appliquer tout mes scripts sans erreurs. J'ai aussi remplacer l'indice de probabilité (qui était à 20à par 100 pour voir i ça fonctionnait... mais les ours ne lâche rien !!

Comment ça se fait ?
Normal, c'est rapias un Ours....essaye avec des pingouins, c'est sympa le pingouin.
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés