JeuxOnLineForumsPlusConnectés : 556 (sites) | 1031 (forums)Créer un compte
Forum jeux-vidéo>Neverwinter Nights
Maskado
Les forums JOL > Forum jeux-vidéo > Neverwinter Nights > NWN - Maskado > Questions pour une arène RSS
   
Répondre
Partager Outils Rechercher
Avatar de Skanzo Sylan
Skanzo Sylan
Empereur
 
Avatar de Skanzo Sylan
 
Autre méthode:
Tu pose un waypoint au milieu de l'arène et tu vérifie la distance entre le PJ et ce waypoint. L'arène est un groupe de tuile de 3x3, elle a donc un rayon de 15 mètres.

Code PHP:
object oPC GetLastPlayerDied();
object oWay GetWaypointByTag"WAY_Arene");
float fDistance GetDistanceBetweenoPCoWay);

if (
fDistance <= 15) { //blablabla 
Franchement, utiliser l'évènement OnPlayerDeath me semble être la meilleure option et je ne dois pô être le seul à le penser
Lien direct vers le message - Vieux
Avatar de xelone
xelone
Dauphin
 
Avatar de xelone
 
et il se met où ce petit script? (et le blabla ca correspond à quoi?)

moi je veux bien utiliser le onplayerdeath. mais tout le monde ne s'y connait pas vraiment. si quelqu'un pouvait me pondre exactement le script à mettre dedans avec explications pas à pas, ça ne me dérangerai pas du tout!

Bon ca va peut-etre en faire rire beaucoup, mais j'ai essayé (je dis bien essayé) de faire un script.
Voila ce que je veux : le gardien voit un PJ mort, il va vers lui et le rezu
Voila ce que ca donne à peu pres

Code PHP:

void main
()
{
//
object oPC,oGardien;
//
oPC GetLastPlayerDied();
oGardien GetObjectByTag("vost");
float fDuree=1.0;

if(
PJmort)// je sais pas quel ligne il faut mettre pour l'action PJ mort!
{
if(
GetDistanceToPC(oPC))<=20.0)//
{

AssignCommand(oGardien,ActionCastSpellAtObject(SPELL_RESURRECTION,oPC,METAMAGIC_ANY,TRUE));

Certains vont surement se dire que ca ressemble à rien. en plus, il met met erreur : à la ligne 14 (if(GetDistanceToPC...)) ERREUR NO RIGHT BRACKET ON EXPRESSION

je sais pas du tout ce que ca veut dire. Mais bon, ca doit pas etre compliqué de faire un mini script "le gardien voit un mort et va le rezu dans la seconde"!
Lien direct vers le message - Vieux
Avatar de RAT
RAT
Alpha & Oméga
 
Avatar de RAT
 
Citation:
Provient du message de xelone
et il se met où ce petit script? (et le blabla ca correspond à quoi?)

moi je veux bien utiliser le onplayerdeath. mais tout le monde ne s'y connait pas vraiment. si quelqu'un pouvait me pondre exactement le script à mettre dedans avec explications pas à pas, ça ne me dérangerai pas du tout!

Bon ca va peut-etre en faire rire beaucoup, mais j'ai essayé (je dis bien essayé) de faire un script.
Voila ce que je veux : le gardien voit un PJ mort, il va vers lui et le rezu
Voila ce que ca donne à peu pres

Code PHP:

void main
()
{
//
object oPC,oGardien;
//
oPC GetLastPlayerDied();
oGardien GetObjectByTag("vost");
float fDuree=1.0;

if(
PJmort)// je sais pas quel ligne il faut mettre pour l'action PJ mort!
{
if(
GetDistanceToPC(oPC))<=20.0)//
{

AssignCommand(oGardien,ActionCastSpellAtObject(SPELL_RESURRECTION,oPC,METAMAGIC_ANY,TRUE));

Certains vont surement se dire que ca ressemble à rien. en plus, il met met erreur : à la ligne 14 (if(GetDistanceToPC...)) ERREUR NO RIGHT BRACKET ON EXPRESSION

je sais pas du tout ce que ca veut dire. Mais bon, ca doit pas etre compliqué de faire un mini script "le gardien voit un mort et va le rezu dans la seconde"!

Hummm c'est qu'en fait, il a une parenthèse de trop .

Code PHP:

void main
()
{
//
object oPC,oGardien;
//
oPC GetLastPlayerDied();
oGardien GetObjectByTag("vost");
float fDuree=1.0;

if(
PJmort)// je sais pas quel ligne il faut mettre pour l'action PJ mort!
{
if(
GetDistanceToPC(oPC)<=20.0)//
{

AssignCommand(oGardien,ActionCastSpellAtObject(SPELL_RESURRECTION,oPC,METAMAGIC_ANY,TRUE));

Lien direct vers le message - Vieux
Avatar de xelone
xelone
Dauphin
 
Avatar de xelone
 
euh non, c'est pas ca. il me met toujours la meme phrase d'erreur.
Lien direct vers le message - Vieux
Avatar de RAT
RAT
Alpha & Oméga
 
Avatar de RAT
 
heuuu si cela venait aussi de là...
Mais as tu rajouté les "}" qui manquent???

Code PHP:
void main()
{
//
object oPC,oGardien;
//
oPC GetLastPlayerDied();
oGardien GetObjectByTag("vost");
float fDuree=1.0;
// déclare au moins ton PJmort
int PJmort;


if(
PJmort)// je sais pas quel ligne il faut mettre pour l'action PJ mort!
{
if(
GetDistanceToPC(oPC)<=20.0)//
{

AssignCommand(oGardien,ActionCastSpellAtObject(SPELL_RESURRECTION,oPC,METAMAGIC_ANY,TRUE));
}

}


Lien direct vers le message - Vieux
Avatar de aldech
aldech
Dauphin
 
Avatar de aldech
 
Il y a autre chose, la fonction "GetDistanceToPC" n'existe pas, il faut la remplacer par :

GetDistanceBetween(oPC,oGardien)
Lien direct vers le message - Vieux
Avatar de RAT
RAT
Alpha & Oméga
 
Avatar de RAT
 
Vi lol si la fonction n'existe pas c'est pas facile pour faire marcher le script . Et moi qui ne vérifie même pas dans la liste des fonctions ^^ Honte à moi
Lien direct vers le message - Vieux
Avatar de xelone
xelone
Dauphin
 
Avatar de xelone
 
bon on avance. c'est bon pour cette ligne.

mais c'est pas tout : j'ai mis "PJ mort" mais je suppose que c'est pas cette ligne qu'il faut mettre

et puis, si quelqu'un pouvait me dire si ce que j'ai fait ressemble un peu à quelque chose. parce que j'ai fait ce script en m'inspirant de plusieurs autres. donc je sais meme pas si toutes les lignes vont me servir!!

et puis je dois le mettre dans quel script? dans le "On HeartBeat"?
Lien direct vers le message - Vieux
Avatar de Ange Musicien
JOL Ange Musicien
Alpha & Oméga
 
Avatar de Ange Musicien
 
Voilà le script corrigé
Code PHP:
//://///////////////////////////
//:// Instructions & Script ////
//://   By Ange Musicien    ////
//://      For Xelone       ////
//://///////////////////////////

/*
    Instructions :
   1- Copier le script OnDeath existant sans le void main()
      et sans les { } au debut et a la fin.
   2- Supprimer dans ce script la phrase

          /*** Tu mets ton script de OnDeath normal ici. ***/
                                                                      /*
      et coller le script OnDeath a la place.
   3- Placer un waypoint de tag "WP_center_arena" au centre de l'arene.
   4- Placer ce script dans le OnDeath.
   5- Créer un gardien de tag "vost"
*/

//://///////////////////////////
//:// Script OnPlayerDeath  ////
//://///////////////////////////

void main()
{
//
int nArena;
object oPC,oGardien,oWP;
location lLoc;
float fDistance;
//
oPC GetLastPlayerDied();
oGardien GetObjectByTag("vost");
SetLocalLocation(oGardien,"location_de_depart",GetLocation(oGardien));
oWP GetWaypointByTag("WP_center_arena");
fDistanceGetDistanceBetween(oWP,oPC);
//
if(fDistance <= 15.0)
 {
 
AssignCommand(oGardien,ActionMoveToLocation (GetLocation(oPC),FALSE) );
 
AssignCommand(oGardien,ActionCastSpellAtObject(SPELL_RESURRECTION,oPC,METAMAGIC_ANY,TRUE));
 
AssignCommand(oGardien,ActionMoveToLocation (GetLocalLocation(oGardien,"location_de_depart"),FALSE) );
 }
//
else
 {
/*** Tu mets ton script de OnDeath normal ici. ***/}

Si tu y arrives pas avec ça, tu es manchot

Ange

PS : il est possible que j'ai oublié des phases dans les instructions ou dans le script... Dites-le moi
Lien direct vers le message - Vieux
Avatar de xelone
xelone
Dauphin
 
Avatar de xelone
 
je vais essayer ca mais...

ça marche :

j'ai mis dans le OnHeartBeat du npc ceci

Code PHP:
void main()
{
//
object oPC,oGardien;
//
oPC GetLastPlayerDied();
oGardien GetObjectByTag("vost");

AssignCommand(oGardien,ActionCastSpellAtObject(SPELL_RESURRECTION,oPC,METAMAGIC_ANY,TRUE));

y a juste un petit problème : une fois qu'il m'a ressucité, il continue à me suivre et à me essayer de me rezu.
je suppose qu'il faut rajouter une petite ligne mais quoi?


edit : c'est nickel ! merci ange, ca fonctionne tres bien! je vais garder ca, mais si quelqu'un pouvait me dire la ligne qu'il manque dans mon script! juste pour savoir.

merci à tous
Lien direct vers le message - Vieux
Avatar de Ange Musicien
JOL Ange Musicien
Alpha & Oméga
 
Avatar de Ange Musicien
 
Fais plutôt mon script, qui marche, et qui ne consomme pas de CPU... Ton script ordonne toutes les six secondes à ton vost de ressusciter le Player en question. Si tu suis mon script, il se déclenchera à la mort, et à la mort uniquement (je ne crois pas que sur ton mod il y ait des joueurs qui meurent toutes les six secondes... ) d'un PJ quelconque. C'est beaucoup plus pratique, plus léger, et la fluidité du gardien est meilleure. En plus mon script le fait revenir à sa place... C'est-y pas beau, ça ?

Sinon, je vais quand même corriger ton script, que tu comprennes tes erreurs. Laisse moi dix minutes
Lien direct vers le message - Vieux
Avatar de Ange Musicien
JOL Ange Musicien
Alpha & Oméga
 
Avatar de Ange Musicien
 
Code PHP:

// Ce script, tu l'as mis dans le OnHeartBeat par conséquent
// il se déclenche toutes les six secondes. Si tu le met dans le
// OnDeath, il se déclenchera à chaque nouvelle mort, alors qu'ici,
// il se déclenche toutes les six secondes... (*)

void main()
{

object oPC,oGardien// déclaration des variables

oPC GetLastPlayerDied(); 
// Toutes les six secondes, oPC ets mis à jour est est égal à la
// la dernière personne morte. Hors dans la plupart des cas, c'est
// soit toujours la même, soit deux personnes sont mortes 
// en six secondes et il ne le fait qu'avec une. (**) 

oGardien GetObjectByTag("vost");

AssignCommand(oGardien,ActionCastSpellAtObject(SPELL_RESURRECTION,oPC,METAMAGIC_ANY,TRUE));
// là tu lui demande de jeter le sort. Sauf que :
// - * il le jetera toutes les six secondes
// - ** sur des personnes qui sont peut-être vivantes
// - sur des personnes qui ne sont pas toujours dans l'arène...
// - et il restera au centre de l'arène, et se prendra des sorts
//   au prochain duel...
// Afin d'éviter ça, tu dois transformer ton script afin qu'il vérifie
// que le PJ est dans l'arène, qu'il vient de mourir, et afin qu'il
// ramène le gardien à son poste. Le script transformé sera alors
// le même que celui que j'ai posté au-dessus ;)
// Je te conseille donc d'utiliser mon script ;)

// Tu as lu les cours de script pour les quiches (persistant de ce forum) ?

Lien direct vers le message - Vieux
Avatar de xelone
xelone
Dauphin
 
Avatar de xelone
 


merci beaucoup ange!

j'ai utilisé ton script et il va très bien

oui j'ai lu le cours pour les quiches, c'est comme ça que j'ai fait cette ébauche de script et en m'inspirant de ce qui était écrit avant. mais je comprend pas encore tout très bien.

bon, j'espère que ca viendra

encore merci
Lien direct vers le message - Vieux
Avatar de Ange Musicien
JOL Ange Musicien
Alpha & Oméga
 
Avatar de Ange Musicien
 
Ca viendra vite, avec un peu de pratique
Et ton script est très bon pour une approche... Pas à s'inquiéter de ce côté-là. Je vais rajouter ce script à la liste des scripts il est facile d'accès et utile pour créer rapidement une arène.
Lien direct vers le message - Vieux
Répondre
Les forums JOL > Forum jeux-vidéo > Neverwinter Nights > NWN - Maskado > Questions pour une arène
   

Outils Rechercher
Rechercher:

Recherche avancée

Les vidéos de Neverwinter Nights RSS
  • Aucune vidéo pour le moment...
Thème visuel : Fuseau horaire GMT +1. Il est actuellement 15h44.
   

© JeuxOnLine, le site des MMO, MMORPG et MOBA. Tous droits réservés. - Conditions générales d'utilisation - Conditions d'utilisation des forums - Traitement des données personnelles - ! Signaler un contenu illicite