JeuxOnLineForumsPlusConnectés : 779 (sites) | 1395 (forums)Créer un compte
Forum jeux-vidéo>Neverwinter Nights
Maskado
Les forums JOL > Forum jeux-vidéo > Neverwinter Nights > NWN - Maskado > Ahouuu! besoin d'aide pour un script de loup-garou! RSS
   
Répondre
Partager Outils Rechercher
Avatar de Elmo
Elmo
Alpha & Oméga
 
Avatar de Elmo
 

Ahouuu! besoin d'aide pour un script de loup-garou!

(je fais bien le loup-garou, hein?? allez je vous le refais AHOUUUUUUUUUUUUUUUUUUUUUUUU)

hem bon sérieusement j'vous explique j'aimerais bieng faire un village peuplé de loup-garous qui se transforment la nuit (mais sans devenir hostiles)

y'a 8 PNj répartis dans 4 zones quelqu'un à une idée?
Lien direct vers le message - Vieux
Avatar de Jaha Effect
Jaha Effect
Alpha & Oméga
 
Avatar de Jaha Effect
 
Tu crée un blueprint de loup-garou avec une faction amicale (marchand ou autre), et a la nuit tu détruit ton PNJ et tu le remplace par ton garou.
Pour ce qui est du test jour/nuit, le problème c'est l'utilisation OnHeartBeat, si quelqu'un a une autre idée a pars le OnEnter de la zone...

Jaha Effect
Lien direct vers le message - Vieux
Avatar de Elmo
Elmo
Alpha & Oméga
 
Avatar de Elmo
 
y'a pas moyen de faire un OnUserDefined ptet?
enfin bon, Jean sait rien (quel con ce jean)
Lien direct vers le message - Vieux
Avatar de Jaha Effect
Jaha Effect
Alpha & Oméga
 
Avatar de Jaha Effect
 
Si mais j'ai l'impression que ça bug un peu les GetIsNight et GetIsDay dans les UD.

Jaha Effect
Lien direct vers le message - Vieux
Avatar de eMRaistlin
eMRaistlin
Alpha & Oméga
 
Avatar de eMRaistlin
 
Citation:
Provient du message de Jaha Effect
Pour ce qui est du test jour/nuit, le problème c'est l'utilisation OnHeartBeat, si quelqu'un a une autre idée a pars le OnEnter de la zone...
Bein, de toute facon, GetIsDay est une interogation, donc, il faut des demande reguliere pour ca. Or, un UDe n'est prevu que pour reagir a un evenement UD qui lui aura été envoyé, et non pas de facon dynamique a l'environnement. Normal que cela ne fonctionne pas.

J'ai bien peur que la solution ne soit dans le OnHeartbeat, ou dans des DelayCommand multiples.

Une autre solution : tu met sur tes PNJ une perception range maximum, afin qu'ils detectent le PJ avant que le PJ ne le detecte. Et c'est a ce moment la que tu fais un GetIsDay/Night...

Cette technique devrait fonctionner tres tres bien, et economiser ton CPU, mais aura un desavantage : si ton PJ et ton PNJ se poursuivent en courant toute la nuit, au lever du jour, il ne se retransformera pas... mais bon...


PS : A mon avis (sans pouvoir faire plus de test que ceux que j'ai put faire), il est bon d'economiser le OnHeartbeat, mais il ne faut pas le negliger non plus ... apres tout, un onheartBeat, et un DelayCommand(executeScript()) on la même charge CPU (enfin, normalement)...
Lien direct vers le message - Vieux
Avatar de Elmo
Elmo
Alpha & Oméga
 
Avatar de Elmo
 
ok alors votre avis:

c'est mieux de déclarer un onheartbeat dans celui du module pour qu'il envoie le signal au 8 lycanthropes?

ou de mettre un onheartbeat sur chaque lycanthrope?

(PS: niveau syntaxe si je pouvais avoir un tit n'exemple ça serait sympa aussi )
Lien direct vers le message - Vieux
Avatar de eMRaistlin
eMRaistlin
Alpha & Oméga
 
Avatar de eMRaistlin
 
Citation:
ok alors votre avis:

c'est mieux de déclarer un onheartbeat dans celui du module pour qu'il envoie le signal au 8 lycanthropes?
ca depens...

Tu nettoie tes zones, derriere toi ?

Perso, je serait plutot pro- OnHeartbeat creature, avec une bouble tres simple, genre :

Code PHP:
void main()
{
if ((
GetTag(OBJECT_SELF)=="garou" && GetIsDay())
    {
    
UDE transfo en homme;
    return;
    }
if ((
GetTag(OBJECT_SELF)=="omo"/*lave plus blanc*/ && GetIsNight())
    {
    
UDE transfo en Tigrou;
    return;
    }

en gros... avec le OnheartBeat commun au deux formes, les tags qui vont bien, et le UDE qui va bien aussi ^^
Lien direct vers le message - Vieux
Avatar de Elmo
Elmo
Alpha & Oméga
 
Avatar de Elmo
 
quoicé UDE ô dieu?

*cherche le tatouage "©Bioware" sur l'épaule de eMR*
Lien direct vers le message - Vieux
Avatar de B L I N G !
B L I N G !
Roi
 
Avatar de B L I N G !
 
EventUserDefined.....un truc dans le genre....

tu les defini dans le OnUserDefined
et les apelle dans ton script avec EventUserDefined(1001,1002,1003.........ect)
je pense que c'est ce qu'a voulu dire eMRaistlin avec ses : UDE
Lien direct vers le message - Vieux
Avatar de eMRaistlin
eMRaistlin
Alpha & Oméga
 
Avatar de eMRaistlin
 
vi

Desole, c'est vrai que parfois, je repond au plus vite, quand je suis au boulot...
Lien direct vers le message - Vieux
Avatar de Jedaï
Jedaï
Alpha & Oméga
 
Avatar de Jedaï
 
Citation:
apres tout, un onheartBeat, et un DelayCommand(executeScript()) on la même charge CPU (enfin, normalement)..
OK, mais uniquement dans le cas où on utilise des DelayCommand() courts, dans ce cas particulier, il n'y a pas de question à se poser : il faut utiliser un DelayCommand()

Sur le OnSpawn du garou :

Code PHP:
//spawn du garou

void main()
{
    if ( ! 
GetLocalInt(OBJECT_SELF"bDeja_spawne"))
    {
    
float fTime HoursToSeconds(GetTimeHour()) + GetTimeMinute()*60.0 GetTimeSecond();
    if(
0.0<fTime && fTime<HoursToSeconds(7))
    {
        
float fFirst HoursToSeconds(7) - fTime;
        
DelayCommand(fFirstSignalEvent(OBJECT_SELFEventUserDefined(666));
    }
    else
    {
        
float fFirst HoursToSeconds(24) - fTime;
        
object oHumain CreateObject(OBJECT_TYPE_CREATURE"res_de_l'homme"GetLocation(OBJECT_SELF));
        
AssignCommand(oHumainDelayCommand(fFirstSignalEvent(oHumainEventUserDefined(666)));
        
DestroyObject(OBJECT_SELF);
    }
    
SetLocalInt(OBJECT_SELF"bDeja_spawne"TRUE);
    }
    
    
//ici évidemment on peut mettre ce qu'on veut

Ensuite l'EventUserDefined du garou :

Code PHP:
//ude du garou

void main()
{
    switch(
GetUserDefinedEventNumber())
    {
        
//...
        
case 666 :
            
object oHumain CreateObject(OBJECT_TYPE_CREATURE"res_de_l'homme"GetLocation(OBJECT_SELF));
            
AssignCommand(oHumainDelayCommand(HoursToSecond(17), SignalEvent(oHumainEventUserDefined(666)));
            
DestroyObject(OBJECT_SELF);
            break;
        
//...
    
}

Et finalement l'EventUserDefined de l'humain :

Code PHP:
//ude de l'humain

void main
{
    switch(
GetUserDefinedEventNumber())
    {
        
//...
        
case 666 :
            
object oGarou CreateObject(OBJECT_TYPE_CREATURE"res_du_garou"GetLocation(OBJECT_SELF));
            
AssignCommand(oGarouDelayCommand(HoursToSecond(7), SignalEvent(oGarouEventUserDefined(666)));
            
DestroyObject(OBJECT_SELF);
            break;
        
//...
    
}

Nyaa [ Croise les doigts pour que ça marche ]

[ EDIT ] pour corriger une erreur grossière...
Lien direct vers le message - Vieux
Avatar de Jedaï
Jedaï
Alpha & Oméga
 
Avatar de Jedaï
 
Je bumpe pour vous demandez ce que vous pensez de mon script.
Alors, vous pensez qu'il marche ?
Lien direct vers le message - Vieux
Avatar de Jaha Effect
Jaha Effect
Alpha & Oméga
 
Avatar de Jaha Effect
 
Le principe a l'air sympa
Pour le test faut demander a Elmo

Jaha Effect
Lien direct vers le message - Vieux
Avatar de Acidamere
Acidamere
Alpha & Oméga
 
Avatar de Acidamere
 


Je me permet de faire une remontée du post car à priori, personne n'a pensé à faire le test sus-cité, et moi, j'en ai grand besoin pour que ma princesse Fiona se transforme en ogresse la nuit...

Or donc, le premier script de Jedaï sur le OnSpawn du garou marche bien (à deux parenthèses près )

Le deuxième fonctionne aussi (au s de Seconds près )

mais pas le troisième (et là je trouve pas pourquoi )

Voici le script :

Code PHP:
//ude de l'humain

void main
{
    switch(
GetUserDefinedEventNumber());
    {
        
//...
        
case 666 :
            
object oGarou CreateObject(OBJECT_TYPE_CREATURE"princessefion003"GetLocation(OBJECT_SELF));
            
AssignCommand(oGarouDelayCommand(HoursToSecond(7), SignalEvent(oGarouEventUserDefined(666)));
            
DestroyObject(OBJECT_SELF);
            break;
        
//...
    
}

et voici ce que cela me donne comme message d'erreur :

Citation:
18/05/2003 14:49:22 : Erreur. 'sc_fionafemude' n’est pas compilé.
sc_fionafemude.nss(4): ERREUR : FUNCTION DEFINITION MISSING PARAMETER LIST
Une bonne âme pour trouver la faille ?
Lien direct vers le message - Vieux
Avatar de Ormus
Ormus
Roi
 
Avatar de Ormus
 
C'est à cause des parenthèses qui manquent après le void main() non ?
Lien direct vers le message - Vieux
Répondre
Les forums JOL > Forum jeux-vidéo > Neverwinter Nights > NWN - Maskado > Ahouuu! besoin d'aide pour un script de loup-garou!
   

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 17h27.
   

© 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