JeuxOnLineForumsPlusConnectés : 697 (sites) | 1149 (forums)Créer un compte
Forum jeux-vidéo>Neverwinter Nights
Maskado
Répondre
Partager Outils Rechercher
yoko
Reine
 
Post

help



est se que quel qu'un pourait me concocter un petit script pour
teleporter un joueur agressant un npc sur un wp dans une prison

qui serai mis je suppose dans le ondamaged ou onataqued du
npc qui serai agresser

le npc demandrais d'arreter cela , si vous continuer a me chatouiller vous irez vous calmer en cellule

et si apres se mot de prevention le joueur continue a l'agresser
op il serai teleporter sur un wp

mais voila je sais pas du tout scripter est se que quel qu'un pourait m'aider

Yoko merci
Lien direct vers le message - Vieux
Avatar de Jaha Effect
Jaha Effect
Alpha & Oméga
 
Avatar de Jaha Effect
 
Tu devrais aller regarder les persistants du forum, y'a plusieurs version de ce genre de chose qui pourrais faire l'affaire

Jaha Effect
Lien direct vers le message - Vieux
yoko
Reine
 
ben voila si j'en avais trouver un mais voila j'arrive pas a le faire marcher il y a peut etre un truc que j'ai pas bien fait
j'en sais rien

je l'ai copier comme sa dans le ondamaged du npc qui sapelle Kilihan

j'ai creer 4 cellule avec le nom wp_taule1 jusque 4
allor se que je comprend pas c'est
cette ligne la
#include "NW_I0_GENERIC"
sa veut dire quoi
c'est un script que je doit ragouter qui est dans nw script ?
si c'est le cas je ne l'ai pas


sur un joueur attaquer un non joueur il se retrouvera teleporter en prison, metre un wp_... dans la prison ou il doit etre teleporter
verifier que dans le script il y aille le meme nom du WP

Mettez le script suivant dans OnDamaged :

#include "NW_I0_GENERIC"

void main()
{
if (!GetFleeToExit())
{
if (!GetSpawnInCondition (NW_FLAG_SET_WARNINGS))
{
if (!GetIsObjectValid (GetAttemptedAttackTarget ()) && (!GetIsObjectValid (GetAttemptedSpellTarget ())))
{
if (GetBehaviorState (NW_FLAG_BEHAVIOR_SPECIAL))
{
DetermineSpecialBehavior (GetLastDamager ());
}
else if (GetIsObjectValid (GetLastDamager ()))
{
DetermineCombatRound ();
if (!GetIsFighting (OBJECT_SELF))
{
object oTarget = GetLastDamager();
if (!GetObjectSeen(oTarget) && GetArea (OBJECT_SELF) == GetArea(oTarget))
{
ActionMoveToLocation (GetLocation (oTarget), TRUE);
ActionDoCommand (DetermineCombatRound ());
}
}
}
}
else if (!GetIsObjectValid (GetAttemptedSpellTarget ()))
{
object oTarget = GetAttackTarget();
object oAttacker = GetLastHostileActor();
if (GetIsObjectValid(oAttacker) && oTarget != oAttacker && GetIsEnemy(oAttacker) &&(GetTotalDamageDealt() > (GetMaxHitPoints(OBJECT_SELF) / 4) ||(GetHitDice(oAttacker) - 2) > GetHitDice(oTarget) ) )
{
DetermineCombatRound (oAttacker);
}
}
}
}
if (GetSpawnInCondition (NW_FLAG_DAMAGED_EVENT))
{
SignalEvent (OBJECT_SELF, EventUserDefined (1006));
}


object oPC=GetLastAttacker(OBJECT_SELF);
if (GetIsPC(oPC))
{
SpeakString ("Allez hop, en taule !");
object oTarget = GetWaypointByTag ("wp_taule1");
int iRandom = Random(4);
if (iRandom==1)
{
object oTarget = GetWaypointByTag ("wp_taule1");
}
else if (iRandom==2)
{
object oTarget = GetWaypointByTag ("wp_taule2");
}
else if (iRandom==3)
{
object oTarget = GetWaypointByTag ("wp_taule3");
}
else
{
object oTarget = GetWaypointByTag ("wp_taule4");
}
DelayCommand(5.0, AssignCommand( oPC, JumpToObject( oTarget)));
}
}

merci a + Yoko
Lien direct vers le message - Vieux
Avatar de Archamedes_Fr
Archamedes_Fr
Alpha & Oméga
 
Avatar de Archamedes_Fr
 
Utilise les balises PHP pour ton code
[+PHP]
TON CODE
[+/PHP]
Sans les +, ça sera beaucoup plus lisible

Code PHP:
#include "NW_I0_GENERIC"

void main()
{
if (!
GetFleeToExit())
{
if (!
GetSpawnInCondition (NW_FLAG_SET_WARNINGS))
{
if (!
GetIsObjectValid (GetAttemptedAttackTarget ()) && (!GetIsObjectValid (GetAttemptedSpellTarget ())))
{
if (
GetBehaviorState (NW_FLAG_BEHAVIOR_SPECIAL))


// ZAP DU CODE POUR FAIRE PLUS COURT


{
object oTarget GetWaypointByTag ("wp_taule4");
}
DelayCommand(5.0AssignCommandoPCJumpToObjectoTarget)));
}

Ca veut juste dire copie tout le code tel quel dans le OnDamaged.

Un include est "en gros" l'intégration d'un autre script sans avoir à le retapper.
Le NW_I0_GENERIC est déjà intégré dans le jeu.
Lien direct vers le message - Vieux
Avatar de eMRaistlin
eMRaistlin
Alpha & Oméga
 
Avatar de eMRaistlin
 
Vi : nw_i0_generic (et autre nw_***) sont deja dans le jeu. Tu les vois pas dans la liste des script de ton module, mais si tu clique sur le radio-bouton en bas, et que tu selectionne la liste de Tous les scripts, il sera dedans.

PS : a noter aussi que si tu le modifie, ca en fera une copie pour ton mod uniquement, et par pour tous les modules, ce qui est extrement mpratique et bien vu de la part de Bioware (surtout pour les modifs de sorts ^^

PPS : a savoir que dans ton cas, t'as juste a coller ce script, ca fonctionnera
Lien direct vers le message - Vieux
Avatar de Fenrhyss
Fenrhyss
Roi
 
Avatar de Fenrhyss
 
Citation:
j'ai creer 4 cellule avec le nom wp_taule1 jusque 4
Je crois que ton problème vient de là... Le nom de tes zones de prison importe peu, mais il faut que tu mettes un waypoint dans chacune d'elle. Le waypoint de ta première zone doit avoir le tag wp_taule1, celui de ta deuxième zone wp_taule2, etc
Lien direct vers le message - Vieux
yoko
Reine
 
Smile
Yoko
eMRaistlin


je cherche tout les cript mais je sais pas ou il son moi je cherche sur la fenaitre ou il y a sur la gauche zone
dialogue
script

et sur les script je trouve pas ? et je vois rien en bas de la fenaitre j'ai une bare entirement grise qui sert a rien

comment on fait pour faire une copie ecran pour vous montrer

autrement j'ai bien crer 4 wp different dans chaqu'une des taules

mais je doit copier le script apres le script de base dans ondamaged ou le remplacer ?

PHP sa veut dire quoi ?

a + Yoko
Lien direct vers le message - Vieux
Avatar de eMRaistlin
eMRaistlin
Alpha & Oméga
 
Avatar de eMRaistlin
 
non : tu vas dans l'editeur de script, et tu choisit Ouvrir, comme pour ouvrir un script que tu as deja fait, et a gauche de ca (tout en bas a gauche de l'editeur de script), tu as un radio-bouton a 3 choix.
Lien direct vers le message - Vieux
yoko
Reine
 
Yoko
puis aussi quand le script est compiler il dit qu'il y a un probleme de } ? je les ai comptee elle on l'air d'etre bonne ?

je l'ai meme fait a 2 reprise
a moj avis je passe a coter d'un truc tout bete



a + Yoko
Lien direct vers le message - Vieux
Avatar de Jedaï
Jedaï
Alpha & Oméga
 
Avatar de Jedaï
 
Tu as redéclaré l'object oTarget à l'intérieur du if(){}, ceci provoque un mauvais fonctionnement du compilateur Bioware qui ne sait pas gérer ce cas de figure (il est un peu c**, j'admets ), change la fin de ton script :
Code PHP:
 object oPC=GetLastAttacker(OBJECT_SELF);
if (
GetIsPC(oPC))
{
SpeakString ("Allez hop, en taule !");
object oTarget GetWaypointByTag ("wp_taule1");
int iRandom Random(4);
if (
iRandom==1)
{
object oTarget GetWaypointByTag ("wp_taule1");
}
else if (
iRandom==2)
{
object oTarget GetWaypointByTag ("wp_taule2");
}
else if (
iRandom==3)
{
object oTarget GetWaypointByTag ("wp_taule3");
}
else
{
object oTarget GetWaypointByTag ("wp_taule4");
}
DelayCommand(5.0AssignCommandoPCJumpToObjectoTarget)));

Par :
Code PHP:
    object oPC=GetLastAttacker(OBJECT_SELF);
    
    if (
GetIsPC(oPC))
    {

        
SpeakString ("Allez hop, en taule !");
        
object oTarget GetWaypointByTag ("wp_taule1");

        Switch(
Random(4))
        {
            case 
object oTarget GetWaypointByTag ("wp_taule1"); break;

            case 
oTarget GetWaypointByTag ("wp_taule2"); break;

            case 
oTarget GetWaypointByTag ("wp_taule3"); break;

            case 
oTarget GetWaypointByTag ("wp_taule4"); break;
        }
        
        
DelayCommand(5.0AssignCommandoPCJumpToObjectoTarget)));
    } 
Ca devrait marcher à condition que les tags soient bons
Lien direct vers le message - Vieux
yoko
Reine
 
Yoko merci
j'ai pas encore essailer mais je le ferais au plus vitte
merci


Jedä
eMRAIstlin
Frenrhyss
Archamedes_fr
Jaha Effect

j'ai trouver pour le script sous nwn NW_I0_generic
il est iper long je comprend pas grand chose mais
je ferais un essai avec celui la

l'autre il met toujour la meme erreur

void main()
{
if (!GetFleeToExit())
{
if (!GetSpawnInCondition (NW_FLAG_SET_WARNINGS))
{
if (!GetIsObjectValid (GetAttemptedAttackTarget ()) && (!GetIsObjectValid (GetAttemptedSpellTarget ())))
{
if (GetBehaviorState (NW_FLAG_BEHAVIOR_SPECIAL))

DetermineSpecialBehavior (GetLastDamager ());
}
else if (GetIsObjectValid (GetLastDamager ()))
{
DetermineCombatRound ();
if (!GetIsFighting (OBJECT_SELF))
{
object oTarget = GetLastDamager();
if (!GetObjectSeen(oTarget) && GetArea (OBJECT_SELF) == GetArea(oTarget))
{
ActionMoveToLocation (GetLocation (oTarget), TRUE);
ActionDoCommand (DetermineCombatRound ());
}
}
}
}
else if (!GetIsObjectValid (GetAttemptedSpellTarget ()))
{
object oTarget = GetAttackTarget();
object oAttacker = GetLastHostileActor();
if (GetIsObjectValid(oAttacker) && oTarget != oAttacker && GetIsEnemy(oAttacker) &&(GetTotalDamageDealt() > (GetMaxHitPoints(OBJECT_SELF) / 4) ||(GetHitDice(oAttacker) - 2) > GetHitDice(oTarget) ) )
{
DetermineCombatRound (oAttacker);
}
}
}
}
if (GetSpawnInCondition (NW_FLAG_DAMAGED_EVENT))
{
SignalEvent (OBJECT_SELF, EventUserDefined (1006));
}


object oPC=GetLastAttacker(OBJECT_SELF);

if (GetIsPC(oPC))
{

SpeakString ("Allez hop, en taule !");
object oTarget = GetWaypointByTag ("wp_taule1");

Switch(Random(4))
{
case 0 : object oTarget = GetWaypointByTag ("wp_taule1"); break;

case 1 : oTarget = GetWaypointByTag ("wp_taule2"); break;

case 2 : oTarget = GetWaypointByTag ("wp_taule3"); break;

case 3 : oTarget = GetWaypointByTag ("wp_taule4"); break;
}

DelayCommand(5.0, AssignCommand( oPC, JumpToObject( oTarget)));
}

ERREUR
20/03/03 16:48:29 : Erreur. 'tuerprison1' n’est pas compilé.
tuerprison1.nss(3): ERREUR : NO RIGHT BRACKET ON EXPRESSION

je vous tiendrai au courant
je croise les doight pour que sa marche c'est pas tres
amusant de faire les petit soldat dans son monde virtuel
a cause de certain joueur peut respectueux

merci a pluche Yoko
Lien direct vers le message - Vieux
Avatar de Reyan
Reyan [L.D.D]
Roi / Reine
 
Avatar de Reyan
 
bon, alors tout d'abord :
met ton script dans les balises php !!!

ensuite :

Code PHP:
void main()
{
if (!
GetFleeToExit()) //<==== la y a pb
{
if (!
GetSpawnInCondition (NW_FLAG_SET_WARNINGS))

ERREUR : NO RIGHT BRACKET ON EXPRESSION

il manque l'include
en fait, tu cherche à utiliser une fonction qui n'éxieste pas de base, il faut la "déclarer" avant, c a d dire au prog e qu'elle fait, c'est fait dans l'include, donc tu le remet, et on passe aupb suivant ^_^


Code PHP:
{
object oTarget GetAttackTarget();
object oAttacker GetLastHostileActor();
if (
GetIsObjectValid(oAttacker) && oTarget != oAttacker && GetIsEnemy(oAttacker) &&(GetTotalDamageDealt() > (GetMaxHitPoints(OBJECT_SELF) / 4) ||(GetHitDice(oAttacker) - 2) > GetHitDice(oTarget) ) )
{
DetermineCombatRound (oAttacker);
}
}
}
}
if (
GetSpawnInCondition (NW_FLAG_DAMAGED_EVENT)) //cete ligne est pointee
{
SignalEvent (OBJECT_SELFEventUserDefined (1006));

ERREUR : INVALID DECLARATION TYPE

comme souvent avec cette erreur, y a un pb ds le nombre d'accolade, ca arrive généralement en fin de script, mais je crois bien que justement tu le ferme le script là enlève un accolade fermante

Code PHP:
object oTarget GetWaypointByTag ("wp_taule1");

Switch(
Random(4)) //pb ici
{
case 
object oTarget GetWaypointByTag ("wp_taule1"); break; 
ERREUR : UNDEFINED IDENTIFIER (Switch)

connait pas Switch, mais simplement switch ^_^

Code PHP:

object oTarget 
GetWaypointByTag ("wp_taule1");
switch(
Random(4))
{
case 
object oTarget GetWaypointByTag ("wp_taule1"); break; //la !!

case oTarget GetWaypointByTag ("wp_taule2"); break;

case 
oTarget GetWaypointByTag ("wp_taule3"); break;

case 
oTarget GetWaypointByTag ("wp_taule4"); break;
}

DelayCommand(5.0AssignCommandoPCJumpToObjectoTarget)));

ERREUR : SKIPPING DECLARATION VIA "case" STATEMENT DISALLOWED.

bon, alors là le pb, c'est un grand classique, le coup du switch ^_^
en fait c un pb du au compileur de nwn, qui n'accepte pas les déclaration dans les switch, quoique ici c'est plutot parce que tu l'as déjà défini avt ...
bref, pas de

Code PHP:
object oTruc;
int ntruc
location lTruc
//etc ... 
dans uns witch, et ne les mettre qu'une fois par script par variable

en plus il manque une accolade a la fin

version qui compile


Code PHP:
#include "NW_I0_GENERIC"



void main()
{
if (!
GetFleeToExit())
{
if (!
GetSpawnInCondition (NW_FLAG_SET_WARNINGS))
{
if (!
GetIsObjectValid (GetAttemptedAttackTarget ()) && (!GetIsObjectValid (GetAttemptedSpellTarget ())))
{
if (
GetBehaviorState (NW_FLAG_BEHAVIOR_SPECIAL))

DetermineSpecialBehavior (GetLastDamager ());
}
else if (
GetIsObjectValid (GetLastDamager ()))
{
DetermineCombatRound ();
if (!
GetIsFighting (OBJECT_SELF))
{
object oTarget GetLastDamager();
if (!
GetObjectSeen(oTarget) && GetArea (OBJECT_SELF) == GetArea(oTarget))
{
ActionMoveToLocation (GetLocation (oTarget), TRUE);
ActionDoCommand (DetermineCombatRound ());
}
}
}
}
else if (!
GetIsObjectValid (GetAttemptedSpellTarget ()))
{
object oTarget GetAttackTarget();
object oAttacker GetLastHostileActor();
if (
GetIsObjectValid(oAttacker) && oTarget != oAttacker && GetIsEnemy(oAttacker) &&(GetTotalDamageDealt() > (GetMaxHitPoints(OBJECT_SELF) / 4) ||(GetHitDice(oAttacker) - 2) > GetHitDice(oTarget) ) )
{
DetermineCombatRound(oAttacker);
}
}
}

if(
GetSpawnInCondition(NW_FLAG_DAMAGED_EVENT))
{
SignalEvent(OBJECT_SELFEventUserDefined (1006));
}


object oPC=GetLastAttacker(OBJECT_SELF);

if (
GetIsPC(oPC))
{

SpeakString ("Allez hop, en taule !");
object oTarget GetWaypointByTag ("wp_taule1");

switch(
Random(4))
   {
   case 
oTarget GetWaypointByTag ("wp_taule1"); break;

   case 
oTarget GetWaypointByTag ("wp_taule2"); break;

   case 
oTarget GetWaypointByTag ("wp_taule3"); break;

   case 
oTarget GetWaypointByTag ("wp_taule4"); break;
   }

DelayCommand(5.0AssignCommandoPCJumpToObject(oTarget) ) );
}

quand tu fais des script, aere l'ecriture, en passant des lignes, en mettant des espaces, etc.
Lien direct vers le message - Vieux
Avatar de Jedaï
Jedaï
Alpha & Oméga
 
Avatar de Jedaï
 
Oh merde, je lui dis qu'il faut pas qu'il redéclare son object et je laisse une déclaration... En plus j'ai écrit Switch !

Bon je vais prendre un peu de repos, ça va passer...
Lien direct vers le message - Vieux
yoko
Reine
 
Unhappy
je comprend pas
toujour une erreur, je suis pas programeuse je n'y comprend rien


void main()
{
if (!GetFleeToExit())
{
if (!GetSpawnInCondition (NW_FLAG_SET_WARNINGS))
{
if (!GetIsObjectValid (GetAttemptedAttackTarget ()) && (!GetIsObjectValid (GetAttemptedSpellTarget ())))
{
if (GetBehaviorState (NW_FLAG_BEHAVIOR_SPECIAL))

DetermineSpecialBehavior (GetLastDamager ());
}
else if (GetIsObjectValid (GetLastDamager ()))
{
DetermineCombatRound ();
if (!GetIsFighting (OBJECT_SELF))
{
object oTarget = GetLastDamager();
if (!GetObjectSeen(oTarget) && GetArea (OBJECT_SELF) == GetArea(oTarget))
{
ActionMoveToLocation (GetLocation (oTarget), TRUE);
ActionDoCommand (DetermineCombatRound ());
}
}
}
}
else if (!GetIsObjectValid (GetAttemptedSpellTarget ()))
{
object oTarget = GetAttackTarget();
object oAttacker = GetLastHostileActor();
if (GetIsObjectValid(oAttacker) && oTarget != oAttacker && GetIsEnemy(oAttacker) &&(GetTotalDamageDealt() > (GetMaxHitPoints(OBJECT_SELF) / 4) ||(GetHitDice(oAttacker) - 2) > GetHitDice(oTarget) ) )
{
DetermineCombatRound(oAttacker);
}
}
}

if(GetSpawnInCondition(NW_FLAG_DAMAGED_EVENT))
{
SignalEvent(OBJECT_SELF, EventUserDefined (1006));
}


object oPC=GetLastAttacker(OBJECT_SELF);

if (GetIsPC(oPC))
{

SpeakString ("Allez hop, en taule !");
object oTarget = GetWaypointByTag ("wp_taule1");

switch(Random(4))
{
case 0 : oTarget = GetWaypointByTag ("wp_taule1"); break;

case 1 : oTarget = GetWaypointByTag ("wp_taule2"); break;

case 2 : oTarget = GetWaypointByTag ("wp_taule3"); break;

case 3 : oTarget = GetWaypointByTag ("wp_taule4"); break;
}

DelayCommand(5.0, AssignCommand( oPC, JumpToObject(oTarget) ) );
}
}

21/03/03 20:18:57 : Erreur. 'tuerprison2' n’est pas compilé.
tuerprison2.nss(4): ERREUR : NO RIGHT BRACKET ON EXPRESSION

je sais pas c'est quoi le truc que l'on me dit de pas repeter je comprend meme pas se que fait se cript a pare que je sais c'est quoi
des WP

j'ai aucune notion de script

a + Yoko
Lien direct vers le message - Vieux
Avatar de Jedaï
Jedaï
Alpha & Oméga
 
Avatar de Jedaï
 
Tu devrais peut-être faire le tutorial de Bioware ou celui qui est disponible dans les persistants ("le script pour les quiches").
Par ailleurs par pitié, met ton code entre deux balises [ PHP ] et [/ PHP ] (sans les espaces), c'est illisible comme ça !!

Et tu as oublié de recopier la première ligne ! Fais au moins des copier-coller corrects !!
Lien direct vers le message - Vieux
Répondre
Les forums JOL > Forum jeux-vidéo > Neverwinter Nights > NWN - Maskado > help
   

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 16h55.
   

© 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