Aller à la page... |
le spawn de pnj
Suivre Répondre |
|
Partager | Rechercher |
Empereur / Impératrice
|
Bah, n'écoutes pas ce vieux barbu (Coucou Laban
![]() Il y a un moteur de spawn super génial la, prêt à l'emploi avec toutes les explications ici : https://forums.jeuxonline.info/showthread.php?t=930375 Le moteur gère l'initialisation de la zone (Les PNJ que tu veux placer dès qu'un joueur y pénètre), les spawns récurent, la vitesse de respawn, la population de PNJ maxi de la zone et le nettoyage en différé lorsque le dernier joueur s'en va en abondant ses paquets de chips vide sur le sol. Il est même en download là avec 2 zones en exemple : http://beckrunes.info/clic.php?url=h..._nettoyeur.rar |
![]() |
|
Empereur / Impératrice
|
Je jetterais un oeil à ces liens voir ce que je peux en tirer, merci.
![]() |
![]() |
|
Héros / Héroïne
|
Définis une variable globale pour le module, par le onDeath de la créature.
Si cette variable est sur 1 (par exemple... du coup True), alors tu spawn l'autre sur l'autre carte. Script à mettre sur le onDeath donc : Code:
void main() { SetGlobalBool("IsMonsterDead",1); } Voici pour l'utilisation des variables Globales (communes à tout ton module), Locales (qui restent définies pour un objet donné), et de Campagne (stockées dans un fichier externe, qui est accessible même en changeant de module). Condition pour le spawn du mob : Code:
void main() { if(GetGlobalBool("IsMonsterDead")) { CreateObject(OBJECT_TYPE_CREATURE, "Chasseur de prime", GetLocation(GetWaypointByTag("spawn_PrimeHunter"))); } } Pas sûr de la syntaxe, mais il n'y a pas de difficulté à celà... Tu devrais peut être regarder cette page pour voir un peu plus les moyens à ta disposition : https://nwn2.jeuxonline.info/articles/4333.html A noter cependant : je viens de chercher, il est impossible de supprimer une variable globale. Donc, tu peux sinon, pour éviter d'avoir une variable inutile qui bouffe la mémoire (il n'y a pas de petite optimisation), l'enregistrer plutôt sur l'objet joueur (marche de plus ainsi en multi), de cette manière : Code:
void main() { object oWhoIsTheChiefHere = GetLastKiller(); SetLocalInt(oWhoIsTheChiefHere,"IsMonsterDead",1); } Code:
void main() { object oJoueur = GetEnteringObject(); if(GetLocalInt(oJoueur,"IsMonsterDead")) { CreateObject(OBJECT_TYPE_CREATURE, "Chasseur de prime", GetLocation(GetWaypointByTag("spawn_PrimeHunter"))); } } Donc, un peu casse-gueule. On peut alors modifier le script onDeath ainsi : Code:
void main() { object oWhoIsTheChiefHere = GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR,1,OBJECT_SELF,1,PLAYER_CHAR_IS_PC,1); SetLocalInt(oWhoIsTheChiefHere,"IsMonsterDead",1); } Cependant, si quelqu'un sait la syntaxe exacte de cette fonction, je serais assez curieux de voir comment l'utiliser dans ce cas de figure... |
![]() |
|
Solange Satanna |
Voir le profil public |
Trouver plus de messages par Solange Satanna |
|
Citation :
|
![]() |
|
|
Merci
![]() |
![]() |
|
Suivre Répondre |
Fil d'ariane
Connectés sur ce fil1 connecté (0 membre et 1 invité)
Afficher la liste détaillée des connectés
|