Respawn de monstres et dropp d'objet

Répondre
Partager Rechercher
Salut !
Avant de me faire tapper sur le doigts, je précise que j'ai utilisé la fonction recherche mais que je n'ai rien rencontré de vraiment satisfaisant (peut être n'ai-je pas mis les bons mots clefs, mais ca c'est un autre problème).
Ce que j'aimerai savoir, c'est comment faire, pour un monde persistant, un système de respawn de monstre du genre : le gars marche sur une zone et ca fait apparaitre un nombre soit aléatoire de monstres (compris entre une fourchette que j'ai choisi) soit un nombre fixe. J'ai cherché a faire ca avec l'assistant rencontre du toolset, mais en fait le mostre n'apparait qu'une fois. Or j'aimerai que ca fasse un truc comme ca :
joueur1 enclanche le respawn ; s'il s'en sort et que joueur2 marche sur l'endroit en question une fois un certain temps écoulé (admettons 3 minutes), il faut que le respawn se réactive. Mais si les 3 minutes ne sont pas écoulées, rien ne se passe.

Si joueur1 ne s'en sort pas et qu'il reste toujours des monstres du précédents respawn, et que joueur deux marche sur le espawn meme 3 minute après, il faut que rien ne se passe. Une fois que joueur2 à finit le boulot de joueur1, là, le décompte de 3 minutes se remet en place.

C'est faisable qqchose comme ca ?

Autre question : j'aimerai que mes monstres droppent de temps en temps des object qu'ils ont dans leur inventaires ; pour ca, je pense qu'il faut cliquer sur abandon possible. Or en faisant ca, le monstre droppe TOUT le temps ces objets !!! Je préfèrerais pourvoir asocier un pourcentage de chance à ce dropp (admettons 25% de chance de dropper). Comment faire ?
Regarde bien toutes les options de tes "encounters"...

Il y en a notamment une qui permet de redéfinir le fait que ça respawne sans arrêt.
Option de spawn: "continu" dans la combolist
puis, dans l'onglet avancé,
Réactiver rencontres, là tu paramètres le temsp entre deux spawns, et en dessous:
Activation par un joueur. Et hop, ça fait pile poil ce que tu demandes. Sauf qu'au bout du temps défini, s'il y a quelqu'un dans la zone, ça respawnera de toute façon. Là, tu as les points de spawns avec lesquels tu peux finasser.

Les monstres droppent de temps en temps. C'est rare, et c'est n'importe quoi (dans tous les sens du terme). La rareté, c'est plutôt pas mal, par contre, il y a des objets, on se demande des fois où ils iraient les chercher les petits...
Mais y'a pas moyen de faire dropper les objets qu'on veut à un monstre ?
Et appliquer un pourcentage de chance de dropper ? Je suis sur que c'est possible, car sur le serveur où je joue, il y a un pourcentage de dropp par rapport au niveau du PJ ... . Sauf que moi, les conditions, je m'en fout. Je veux juste qu'il droppe aléatoirement l'objet 1, l'objet 2 eou l'objet3, et parfois en couple, comme obj1+obj2.
Et dans ce cas là, faire en sort qu'il y a 25% de chance qu'il lache un seul objet, et 12% qu'il largue un couple d'objet. Ca doit bien être possible ça ?! oO
je vois qu'une seule solution, créer tout tes monstres dans la palette personaliser et écrire un script a mettre dans le OnDeath du monstre avec toutes les conditions et les drops possibles et enlever ainsi l'option treasure mais étant une grosse quiche en script je pourrai pas t'aider.

J'ai le même problème a vrai dire, j'ai beaucoup cherché mais je n'ai pas trouvé de script correspondant nullepart même pas sur le vault où ici.
Le meilleur truc que j'ai vu c'est dans l'add-on HCR

tu pose tes monstres et eux respawn toutes les x secondes,

sur mon mod j'utilisais des "rencontres" avant qu'ils installent ce script, mon module montait facilement à 250mo de RAM


avec le Respawn HCR modif mon module monte à 150Mo de Ram mais entre temps j'ai rajouté des zones, metiers ATS ....

le Pb des rencontres c'est qu'il n'effacerais pas l'ancien monstre des variables avec HCR, il le "ressucite", et tu peux lui faire dropper ses affaires

http://www.rpging.net/nwn/

Certe la c'est en anglais, mais exporte juste ce qui t'interesse et ses dépendance : NW_c2_default7
D'abord:

https://forums.jeuxonline.info/showthread.php?t=225122

Ensuite, oui pas mal de monde essaie de créer des systèmes mieux adaptés. Y compris moi.
J'ai résolu le problème simplement. J'ai supprimé la ligne
Code PHP:

GenerateRandomTreasure() 

Chez moi, plus de drops made by Bioware.

Il n'y a plus qu'à recréer un script gérant la liste complète des objets que tu veux faire dropper et de gérer les pourcentages de drops. Ben oui, y a du boulot... Je sais...

J'ai créé un autre système personnel. Ca ne sera que le Xème. chacun souhaite autre chose.


Bon courage.
Oula non, rassurez-vous, y'a plus simple
Pratiquement toutes les créatures ont un script de OnDeath en commun : nw_c2_default7. Suffit donc de modifier celui-là.

En gros, le bout de script à rajouter donnerait :
Code PHP:

    string sResRef1 "ResRefObjet1";
    
string sResRef2 "ResRefObjet2";

    if(
d100() <= 25)
        
CreateItemOnObject(sResRef1OBJECT_SELF);
    if(
d100() <= 25)
        
CreateItemOnObject(sResRef2OBJECT_SELF); 
(bien sûr il faut que tu remplace mes exemples de Resrefs par les tiens)

Et au final, le script donne :

Code PHP:

//::///////////////////////////////////////////////
//:: Default:On Death
//:: NW_C2_DEFAULT7
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
    Shouts to allies that they have been killed
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: Oct 25, 2001
//:://////////////////////////////////////////////
#include "NW_I0_GENERIC"

void main()
{
    
int nClass GetLevelByClass(CLASS_TYPE_COMMONER);
    
int nAlign GetAlignmentGoodEvil(OBJECT_SELF);
    if(
nClass && (nAlign == ALIGNMENT_GOOD || nAlign == ALIGNMENT_NEUTRAL))
    {
        
object oKiller GetLastKiller();
        
AdjustAlignment(oKillerALIGNMENT_EVIL5);
    }

    
SpeakString("NW_I_AM_DEAD"TALKVOLUME_SILENT_TALK);
    
//Shout Attack my target, only works with the On Spawn In setup
    
SpeakString("NW_ATTACK_MY_TARGET"TALKVOLUME_SILENT_TALK);
    if(
GetSpawnInCondition(NW_FLAG_DEATH_EVENT))
    {
        
SignalEvent(OBJECT_SELFEventUserDefined(1007));
    }

    
string sResRef1 "ResRefObjet1";
    
string sResRef2 "ResRefObjet2";

    if(
d100() <= 25)
        
CreateItemOnObject(sResRef1OBJECT_SELF);
    if(
d100() <= 25)
        
CreateItemOnObject(sResRef2OBJECT_SELF);

C'est testé, et ça a l'air de marcher
Ah ça, on peut pas l'éviter.
Mon script c'était juste pour l'histoire des 2 objets à dropper

En tout cas, si ça intéresse quelqu'un, je suis en train de finaliser un système de génération de trésor aléatoire qui marche avec des 2DAs (à la Baldur's Gate en fait). Dans un jour ou deux je le posterais ici
Par contre, il faudra encore remplir les 2DAs avec les resrefs, mais ça je pense qu'il vaut mieux le faire soi-même.
Répondre

Connectés sur ce fil

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