Archives des forums MMO/MMORPG > Neverwinter Nights > NWN - Maskado > Tout mes Problemes! :)
Tout mes Problemes! :)
Par Stritis le 30/10/2002 à 8:41:42 (#2437786)
Bon je vais vous demander des scripts:
Je cherche le script qui permet qu'un garde arrete un PJ lorsqu'il agresse un PNJ et l'envoie en prison s'il accepte ou le tue s'il veut pas.Bon si cela n'est pas integre j'aimerai que le PJ perde beaucoup plus d'XP et de PO qu'une mort normale, voila!
J'aimerai avoir un script tout simple c'est que le personnage ne dise qu'une fois la meme phrase
ex:Bonjour....Je m'apelle et que l'autre fois que je lui parle il dise "Ah vous revoila comment allez-vous..."Je l'ai trouve mais je suis pas sur qu'il marche
J'aimerai qu'une phrase de dialogue ne s'affiche pas lorsque que le PJ ne remplit pas les conditons d'executions et j'aimerai cette exemple avec de l'argent
ex:Mon PNJ veut acheter une cle mais il n'a pas 50 PO j'aimerai que la phrase dialogue "acheter..." ne s'affiche pas et la remplace par "je n'ai pas..." et vice versa que la phrase "je n'ai pas assez" ne s'affiche pas lorsque le PJ a 50PO
Ensuite...Et bein c'est tout...pour l'instant :D
Merci de repondre meme si c'est questions vous paraissent simple (apres il y en aura des plus compliqués)!!:ange:
Par Etienne le 30/10/2002 à 8:51:21 (#2437822)
Par Stritis le 30/10/2002 à 9:05:51 (#2437873)
D'apres ce que j'ai compris tu veux une punition (je capte pas "amaende "...)(Desole si je me trompe mais je comprend pas ta question :cool: )
Je ne peux pas trop penaliser le PJ comme meme mais si j'y arrive j'essayerai de faire plusieurs peine selon les delits
une si le personnage a arrete a la demande du garde il perdra tout son equipement et ira en prison sans perte d'XP. et si il veut pas s'arreter et ben il retourne niveau 1 et sans matos car il est trop reste en prison et cela lui a fait perdre son experience , voila
Bon s'il a tue plein de PNJ il est tue sans respawn ou si il y a recidive , bon et apres je sais pas...
Et bon d'abord j'essaie de faire des scripts et de savoir utiliser l'editeur ensuite je verrai pour le scenario
Par eMRaistlin le 30/10/2002 à 9:39:40 (#2438050)
J'aimerai avoir un script tout simple c'est que le personnage ne dise qu'une fois la meme phrase
ex:Bonjour....Je m'apelle et que l'autre fois que je lui parle il dise "Ah vous revoila comment allez-vous..."Je l'ai trouve
mais je suis pas sur qu'il marche
J'aimerai qu'une phrase de dialogue ne s'affiche pas lorsque que le PJ ne remplit pas les conditons d'executions et j'aimerai
cette exemple avec de l'argent
ex:Mon PNJ veut acheter une cle mais il n'a pas 50 PO j'aimerai que la phrase dialogue "acheter..." ne s'affiche pas et la
remplace par "je n'ai pas..." et vice versa que la phrase "je n'ai pas assez" ne s'affiche pas lorsque le PJ a 50PO
Euh... la, y'a des tutoriaux tres bien fait qui decrivent ca en details.
Je veux bien aider, mais pas faire a ta place.Je cherche le script qui permet qu'un garde arrete un PJ lorsqu'il agresse un PNJ et l'envoie en prison s'il accepte
ou le tue s'il veut pas.Bon si cela n'est pas integre j'aimerai que le PJ perde beaucoup plus d'XP et de PO qu'une mort
normale, voila!
ca va etre un peu plus compliqué, la !
Tout d'abords, tu dois t'arranger pour que tes guardes ne deviebnnent pas hostile en voyant le PJ frapper le passant qui
passe.
Pour cela, c'est tres simple : Faction > Soldat envers passant = 50.
Ensuite, ca se complique. La solution la plus simple pour moi serait de mettre une fonction du style :
void main()
{
object oPC = GetLastKiller(); // Si tu neux veux que des meutrier. Tu peux remplacer par getLastHostilActor()
SetLocalInt(oPC,"nMeutrier",1);
SetLocalLocation(oPC,"lWhere",GetLocation(oPC));
}
Tu met ca dans le OnDeath (ou dans le onphysicallyAttacked si tu as mis lasthostileactor) de TOUS tes npc.
J'insiste bien. En fait, le but n'est pas que les guardes s'apercoivent que le PJ a été aggressif, mais plutot que le NPC
"flaggue" le PC comme ayant été un aggresseur...
Puis, dans le OnPerception des Gardes, tu met ceci :
void main()
{
object oLastPerceived = GetLastPerceived();
if (GetIsPC(oLastPerceived))
{
if (GetLocalInt(oLastPerceived,"meutrier")==1)
{
//if (GetDistanceBetween(GetLocation(oLastPerceived),GetLocalLocation(oLastPerceived,"lWhere"))<= 30.0f) //c'est optionnel
AssignCommand(OBJECT_SELF,ActionStartConversation(oLastPerceived , "resref_de_la_conversation");
//}
}
}
}
Puis, tu crée une conversation qui va laisser le choix au PJ.
(Sans oublier de reinitialiser les valeurs locales sur le PC ("nMeutrier" et "lWhere").
Autre detail, je t'ai laissé dans le szcript la possibilite de considerer (realistement) que au dela d'une certaine distance, les PC n'etaient plus mis en cause. (si tu decommente les commentaire idoines.)
Je te conseille vivement aussi de faire en sorte que l'area transition de la zone ou se trouve le PC nettoie l PC de ses crimes s'il n'a pas été incriminé apres... car comme toute les variables que tu inscrit, elle va rester apres coup, sauf si tu pense bien a la remettre a 0...
Par Stritis le 30/10/2002 à 9:49:54 (#2438117)
Par Zariel le 30/10/2002 à 10:05:19 (#2438198)
Provient du message de Etienne
Une fois en prison, comment le scénar permettra t'il au personnage de faire amaende honnorable ? C'est quand m^me un meurtre ?
Trés pertinent ;)
C'est vrai qu'il est illogique de pouvoir réintégrer un personnage dans une ville aprés un meutre délibéré et une arrestation par les gardes mais tous les gouts sont dans la nature ;)
Par exemple, dans mes villes, si un Pj s'en prend à plus faible que lui, le script de prison se déclenche automatiquement et il se retrouve en taule (enfants, vieux ou passants par exemple) et la partie est terminée pour lui "Ciao". Sil veut se faire du bleu ou même du rouge, c'est la mort obligatoire. (un garde ou un "officiel de la ville" genre un banquier ou un marchand").
Si tes PJ commencent à allumer tous ce qui se trouvent dans la ville, je te raconte pas le bordel ;)
Il faut que les PJ comprennent qu'une ville n'est pas un défouloir, ni une zone ou l'agression est chose courante, comme chez nous quoi ;)(à part si tu incarnes des CM dans une ville ou les CM ont l'habitude de trainer..)
Enfin, moi c'est ma vision des choses :)
Par Stritis le 30/10/2002 à 10:22:34 (#2438288)
Re: Tout mes Problemes! :)
Par TyKeM le 30/10/2002 à 11:30:47 (#2438785)
Provient du message de Stritis
J'aimerai avoir un script tout simple c'est que le personnage ne dise qu'une fois la meme phrase
ex:Bonjour....Je m'apelle et que l'autre fois que je lui parle il dise "Ah vous revoila comment allez-vous..."Je l'ai trouve mais je suis pas sur qu'il marche
J'aimerai qu'une phrase de dialogue ne s'affiche pas lorsque que le PJ ne remplit pas les conditons d'executions et j'aimerai cette exemple avec de l'argent
ex:Mon PNJ veut acheter une cle mais il n'a pas 50 PO j'aimerai que la phrase dialogue "acheter..." ne s'affiche pas et la remplace par "je n'ai pas..." et vice versa que la phrase "je n'ai pas assez" ne s'affiche pas lorsque le PJ a 50PO
pour ces problemes c ds la faq sur les dialogues :)
il faut faire varier les condition dexecution c tout con ...
Par TyKeM le 30/10/2002 à 11:32:41 (#2438802)
Provient du message de Zariel
Trés pertinent ;)
C'est vrai qu'il est illogique de pouvoir réintégrer un personnage dans une ville aprés un meutre délibéré et une arrestation par les gardes mais tous les gouts sont dans la nature ;)
Par exemple, dans mes villes, si un Pj s'en prend à plus faible que lui, le script de prison se déclenche automatiquement et il se retrouve en taule (enfants, vieux ou passants par exemple) et la partie est terminée pour lui "Ciao". Sil veut se faire du bleu ou même du rouge, c'est la mort obligatoire. (un garde ou un "officiel de la ville" genre un banquier ou un marchand").
Si tes PJ commencent à allumer tous ce qui se trouvent dans la ville, je te raconte pas le bordel ;)
Il faut que les PJ comprennent qu'une ville n'est pas un défouloir, ni une zone ou l'agression est chose courante, comme chez nous quoi ;)(à part si tu incarnes des CM dans une ville ou les CM ont l'habitude de trainer..)
Enfin, moi c'est ma vision des choses :)
je suis daccord avec toi mais alors tu ne pe pas faire une q dassasinat : /
moi je cherche un script a mettre sur les GARDES et si EUX te voille il apelle du renfort ...
mais si il y a pas de temoins :)))))
Par Zariel le 30/10/2002 à 12:01:14 (#2439108)
Je pars du principe, qu'une ville est un endroit sécurisant (surtout que mes villes ne sont pas immenses, donc trés bien surveillés) et qu'un malfaiteur ne pourra pas s'enfuir si il tue ou agresse quelqu'un.
En ce moment, je suis sur la construction de Chateau Krag (dans le Valombre) qui est immense et où je devrai revoir ces règles car il y aura plus de chances de commettre des méfaits sans être pris.
Et puis il y a les beaux quartiers et les bas quartiers (ou tu limites l'attention des gardes). Mais il est vrai malheuresement qu'il n'existe pas de demi-mesure dans ce genre de script...
Par Nylou le 30/10/2002 à 12:23:58 (#2439346)
Un garde avec une distance de perception plus grande sera plus attentif à ce qui l'entoure.
Par LeProctophantasmiste le 30/10/2002 à 13:25:39 (#2439960)
Je pense qu'utiliser des "cris silencieux", comme Bio le fait, peut donner de bons résultats. A la place du flag de eMRaistlin, Tu fais crier le PNJ:
SpeakString("ON_M_A_ASSASSINE", TALKVOLUME_SILENT_SHOUT);
Dans l'OnSpawn de tes gardes:
SetListening(OBJECT_SELF,TRUE);
SetListenPattern(OBJECT_SELF,"ON_M_A_ASSASSINE",10);
Dans leur OnConversation tu ajoute (attention je part du script par défaut "nw_c2_default4", donc les variables non déclarées viennent de là):
if(nMatch == 10)
{
if(GetObjectSeen(oShouter))
{
object oAssassin = GetLastHostileActor(oShouter);
SetIsTemporaryEnemy(oAssassin);
//Ici tu peux appeler des renforts
DetermineCombatRound(oAssassin);
}
}
Par eMRaistlin le 30/10/2002 à 13:29:07 (#2439986)
Par LeProctophantasmiste le 30/10/2002 à 13:37:29 (#2440082)
SetIsTemporaryEnemy(oAssassin);
//Ici tu peux appeler des renforts
DetermineCombatRound(oAssassin);
étant donné qu'il reproduit quasiment ce que fait le moteur par défaut si les gardes sont amicaux envers la victime :chut:. Ceci dit en mettant les gardes neutres, à partir de ce script, tout est possible, tu peux leur faire initier une conversation avec le meurtrier, le faire escorter en prison (là, j'exagère peut-être :mdr: )...
Par Stritis le 30/10/2002 à 13:49:11 (#2440198)
//if (GetDistanceBetween(GetLocation(oLastPerceived),GetLocalLocation(oLastPerceived,"lWhere"))<= 30.0f) //c'est optionnel
AssignCommand(OBJECT_SELF,ActionStartConversation(oLastPerceived , "resref_de_la_conversation");
//}
Mais apres je sais pas ce qui faut faire:sanglote: je suppose que je dois mettre un truc que des que mon garde l'apercoit et l'attaque mais je sais pas comment faire:confus:
PS: eMRaistlin
Tu m'as dit de mettre les lignes dans tous les NPCs mais il n'y a pas un moyen pour que je le mette une fois en utilisant le systeme de faction (Je dis ca un peu au pif)
Par Zariel le 30/10/2002 à 14:16:48 (#2440479)
Par eMRaistlin le 30/10/2002 à 14:23:16 (#2440547)
PS: eMRaistlin
Tu m'as dit de mettre les lignes dans tous les NPCs mais il n'y a pas un moyen pour que je le mette une fois en utilisant le systeme de faction (Je dis ca un peu au pif)
Euh... nan...helas, la puissance de l'editeur ne t'empechera pas d'avoir a te galerer a tout faire a la main... desole...//if (GetDistanceBetween(GetLocation(oLastPerceived),GetLocalLocation(oLastPerceived,"lWhere"))<= 30.0f) //c'est optionnel
Attention, si tu decomment ca, ca va au contraire restreindre le champs d'action des guardes qui n'agiront plus qu'a 30m.
Je trouve la solution de procto plus elegante... tu devrait l'essayer...
Par LeProctophantasmiste le 30/10/2002 à 14:49:29 (#2440802)
Ceci ne veut pas dire que tu doive écraser la version par défaut, tu sauvegardes juste la version modifiée sous un autre nom. Pour les deux premiers tu peux même utiliser le système de UserDefinedEvent implémenté par Bio. Pas pour le troisième, ça ne compilera pas, remarque il suffirait d'ajouter en tête:
int nMatch = GetListenPatternNumber();
object oShouter = GetLastSpeaker();
Par Zariel le 30/10/2002 à 15:18:27 (#2441057)
Sinon, la manière de EMraistling est pas mal non plus, il suffit juste de réinclure le script précédent pour ne pas le perdre ;)
Par Stritis le 30/10/2002 à 16:58:56 (#2442010)
Par eMRaistlin le 30/10/2002 à 17:05:26 (#2442069)
:monstre:
Par Stritis le 30/10/2002 à 17:08:59 (#2442094)
Par Zariel le 30/10/2002 à 17:12:29 (#2442124)
JOL Archives 1.0.1
@ JOL / JeuxOnLine