La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
FAQ
Rechercher
Liste des Membres
Groupes d'utilisateurs
S'enregistrer Se connecter pour vérifier ses messages privés Connexion
S'enregistrer Se connecter pour vérifier ses messages privés Connexion
La date/heure actuelle est 23/11/2024 22:34:47
La Bibliothèque de Neverwinter Nights Index du Forum »
La Bibliothèque Binaire du NWScript - Neverwinter Nights
Voir le sujet précédent ¤ Voir le sujet suivant | |
---|---|
Auteur | Message |
samhuin Ecuyer Messages: 43 |
Voila au debut j'avais penser a mettre les differents joueurs qui venait sur le server par race, puit qu'il soit tous hotile les uns envers les autres.
j'ai donc commencer a cree un script (qui ne fonctione pas) qui mettais toutes les races hotsile envers les autres. c'etait celui la NWScript :
/// A placer dans OnClientEnter ////// Chacune des faction tant hostile entre elle.... ////////////////////////////// //////////////////// object oPC=GetEnteringObject(); int iRace = GetRacialType(oPC); string sSub = GetSubRace(oPC); void main() { if (GetIsPC(oPC)) { int irace=GetRacialType(iRace)(oPC);/// on recupere la race du joueur arrivant object oPlayer=GetFirstPC(); /// on amorce la boucle if (irace==0) /// Cas ou le joueur est nain { while (GetIsObjectValid(oPlayer))/// debut de la boucle qui parcours tout les joueurs de la liste.. { int irace=Getracialtype(oPlayer);/// on recupere la race du joueurs if ((irace==0)||(irace==0)) { SetPCDislike(oPC,oPlayer); /// on change le comportement du joueur vis-avis des autres.. } oPlayer=GetNextPC();/// on continue de parcourir la listes des joueur } } if (irace==1) /// meme chose pour les elfes { while (GetIsObjectValid(oPlayer))/ { int irace=Getracialtype(oPlayer); if ((irace==1)||(irace==1)) { SetPCDislike(oPC,oPlayer); } oPlayer=GetNextPC(); } } if ((irace==2)) /// meme chose pour les gnomes { while (GetIsObjectValid(oPlayer)) { int irace=Getracialtype(oPlayer); if ((irace==2)||(irace==2)) { SetPCDislike(oPC,oPlayer); } oPlayer=GetNextPC(); } } if ((irace==3)) /// meme chose pour les halflin { while (GetIsObjectValid(oPlayer)) { int irace=Getracialtype(oPlayer); if ((irace==3)||(irace==3)) { SetPCDislike(oPC,oPlayer); } oPlayer=GetNextPC(); } if ((irace==4)) /// meme chose pour les demi-elf { while (GetIsObjectValid(oPlayer)) { int irace=Getracialtype(oPlayer); if ((irace==4)||(irace==4)) { SetPCDislike(oPC,oPlayer); } oPlayer=GetNextPC(); } if ((irace==5)) /// meme chose pour les demiorc { while (GetIsObjectValid(oPlayer)) { int irace=Getracialtype(oPlayer); if ((irace==5)||(irace==5)) { SetPCDislike(oPC,oPlayer); } oPlayer=GetNextPC(); } if ((irace==6)) /// meme chose pour les humains { while (GetIsObjectValid(oPlayer)) { int irace=Getracialtype(oPlayer); if ((irace==6)||(irace==6)) { SetPCDislike(oPC,oPlayer); } oPlayer=GetNextPC(); } } } /* warning: 4 unclosed block {} */ mais apres je me suis dit qu'il serai plus facil de mettre les joueurs dans des factions, comme ca en cas d'alliance ou n'importe quoi d'autre il suffirait juste que je modifie les option des factions plutot que tous le script. quelqu'un aurai t'il une idee de comment faire ca? Dernière édition par samhuin le 12/12/2005 15:33:12; édité 1 fois
|
Revenir en haut | |
Black Knight Grand Maître Chanteur du Conseil Messages: 1031 Localisation: Fin fond du trou du cul du monde |
Heu ton script a vraiment bcp mais alors bcp de bug.... Voila je rectifie t'es fautes :
NWScript :
/// A placer dans OnClientEnter ////// Chacune des faction tant hostile entre elle.... ////////////////////////////// //////////////////// //object oPC=GetEnteringObject(); //string sSub = GetSubRace(oPC); //C'est 3 choses ne se mette jamais au dessus d'un "void main" void main() { object oPC=GetEnteringObject(); int iRace = GetRacialType(oPC); string sSub = GetSubRace(oPC); if (GetIsPC(oPC)) { //int irace=GetRacialType(iRace)(oPC );/// Sa ne sert a rien de faire une deuxieme. De plus on ne met jamais 2 choses s'epare avec des parenthese object oPlayer=GetFirstPC(); /// on amorce la boucle while (GetIsObjectValid(oPlayer))/// debut de la boucle qui parcours tout les joueurs de la liste.. { int irace=GetRacialType(oPlayer);//On recupere donc la race du joueur "premier" et bien sur on noublie pas les MAJUSCULE if (irace==0) /// Je deplace sa car faut pas le mettre au dessus du while car il identifira que le premier joueur du serveur.... { if ((irace!=0)&&(iRace==0))// Je ne vois pas l'utilite de mettre 2 fois la meme choses...Mais bon j'ai modifier pour que si la race du joueur qui entre ou fait quelque n'est pas la meme que le "premier" joueur, alors si se deteste. (je rapelle || = OU et && = ET. Aussi pourquoi, si les 2 joueurs sont de la meme race, il se mettent hostile ? Bon j'ai mi le contraire on sais jms. Enfin d'ailleur je ne vois meme pas l'utilite de faire sa mais bon... { SetPCDislike(oPC,oPlayer); /// on change le comportement du joueur vis-avis des autres.. } //oPlayer=GetNextPC();/// Sa te ser a rien... faut le mettre a la fin de ta BOUCLE pas a chaque condition! } else if (irace==1) /// meme chose pour les elfes { //while (GetIsObjectValid(oPlayer))// On ne mais pas 2 while, un suffit. //{ //int irace=Getracialtype(oPlayer); // Pas besoin de remettre une couche... Bon je vais m'arrete la avec les expliquation... if ((iRace!=1)||(irace==1)) { SetPCDislike(oPC,oPlayer); } } if ((irace==2)) /// meme chose pour les gnomes { if ((iRace!=2)||(irace==2)) { SetPCDislike(oPC,oPlayer); } } if ((irace==3)) /// meme chose pour les halflin { if ((iRace!=3)||(irace==3)) { SetPCDislike(oPC,oPlayer); } } if ((irace==4)) /// meme chose pour les demi-elf { if ((iRace!=4)||(irace==4)) { SetPCDislike(oPC,oPlayer); } } if ((irace==5)) /// meme chose pour les demiorc { if ((iRace!=5)||(irace==5)) { SetPCDislike(oPC,oPlayer); } } if ((irace==6)) /// meme chose pour les humains { if ((irace==6)||(irace==6)) { SetPCDislike(oPC,oPlayer); } } } } } Bon dsl si j'ai fait des fautes mais c'est casiment imconprehensible ton script... _________________ [http] |
Revenir en haut | |
Yoyo Seigneur Messages: 223 |
A la ligne où tu met :
NWScript :
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème. ça ne vas pas, le iRace n'a rien a faire ici puisque que GetRacialType retourne la race de l'objet oCreature donc il faut un object comme argument NWScript :
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème. NWScript :
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème. NWScript :
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème. Entre ces deux fonctions il y a une différence ?? le 1er (int iRace = GetRacialType(oPC);// Ici on récupère la race) est correct mais pas le second Voila le script que j'ai corrigé NWScript :
/// A placer dans OnClientEnter ////// Chacune des faction tant hostile entre elle.... ////////////////////////////// //////////////////// void main() { object oEnter=GetEnteringObject(); int iRace = GetRacialType(oEnter); string sSub = GetSubRace(oEnter); int iRaceDesAutres; if (!GetIsPC(oEnter)) //si oEnter n'est pas un joueur... return; //...alors ne rien faire object oPlayer=GetFirstPC(); /// on amorce la boucle switch (iRace) { case RACIAL_TYPE_DWARF: /// Cas ou le joueur est nain while (GetIsObjectValid(oPlayer))/// debut de la boucle qui parcours tout les joueurs de la liste.. { iRaceDesAutres = GetRacialType(oPlayer); /// on recupere la race du joueurs if (iRaceDesAutres!=RACIAL_TYPE_DWARF) // si la race de oEnter n'est pas la meme de oPlayer alors... { SetPCDislike(oEnter,oPlayer); /// ...on change le comportement du joueur vis-avis des autres.. } oPlayer=GetNextPC();/// on continue de parcourir la listes des joueur } break; case RACIAL_TYPE_ELF : /// meme chose pour les elfes while (GetIsObjectValid(oPlayer)) { iRaceDesAutres = GetRacialType(oPlayer); if (iRaceDesAutres != RACIAL_TYPE_ELF) { SetPCDislike(oEnter,oPlayer); } oPlayer=GetNextPC(); } break; case RACIAL_TYPE_GNOME: /// meme chose pour les gnomes while (GetIsObjectValid(oPlayer)) { iRaceDesAutres = GetRacialType(oPlayer); if (iRaceDesAutres !=RACIAL_TYPE_GNOME) { SetPCDislike(oEnter,oPlayer); } oPlayer=GetNextPC(); } break; case RACIAL_TYPE_HALFLING: /// meme chose pour les halflin while (GetIsObjectValid(oPlayer)) { iRaceDesAutres=GetRacialType(oPlayer); if (iRaceDesAutres!= RACIAL_TYPE_HALFLING) { SetPCDislike(oEnter,oPlayer); } oPlayer=GetNextPC(); } break; case RACIAL_TYPE_HALFELF: /// meme chose pour les demi-elf while (GetIsObjectValid(oPlayer)) { iRaceDesAutres=GetRacialType(oPlayer); if (iRaceDesAutres!=RACIAL_TYPE_HALFELF) { SetPCDislike(oEnter,oPlayer); } oPlayer=GetNextPC(); } break; case RACIAL_TYPE_HALFORC: /// meme chose pour les demiorc while (GetIsObjectValid(oPlayer)) { iRaceDesAutres=GetRacialType(oPlayer); if (iRaceDesAutres!=RACIAL_TYPE_HALFORC) { SetPCDislike(oEnter,oPlayer); } oPlayer=GetNextPC(); } break; case RACIAL_TYPE_HUMAN: /// meme chose pour les humains while (GetIsObjectValid(oPlayer)) { iRaceDesAutres=GetRacialType(oPlayer); if (iRaceDesAutres!=RACIAL_TYPE_HUMAN) { SetPCDislike(oEnter,oPlayer); } oPlayer=GetNextPC(); } break; } } Le script compile mais je ne l'ai pas testé InGame (comme on dit) P.S : As-tu appuyé sur le bouton "compilé" apres avoir écrit ton script ? _________________ BOUH! (je vous ai fait peur ??) désolé Vive moi Pas vive Securom |
Revenir en haut | |
Sith Vicious Grand Sage du Conseil Messages: 693 |
Hey vous croyez pas qu'une boucle suffit ?
NWScript :
void main() { object oEnter=GetEnteringObject(); int iRace = GetRacialType(oEnter); string sSub = GetSubRace(oEnter); int iRaceDesAutres; if (!GetIsPC(oEnter)) //si oEnter n'est pas un joueur... return; //...alors ne rien faire object oPlayer=GetFirstPC(); while (GetIsObjectValid(oPlayer))/// debut de la boucle qui parcours tout les joueurs de la liste.. { iRaceDesAutres = GetRacialType(oPlayer); /// on recupere la race du joueurs if (iRaceDesAutres!=iRace) // si la race de oEnter n'est pas la meme de oPlayer alors... { SetPCDislike(oEnter,oPlayer); /// ...on change le comportement du joueur vis-avis des autres.. } oPlayer=GetNextPC();/// on continue de parcourir la listes des joueur } } Je dis ça je dis rien. |
Revenir en haut | |
Yoyo Seigneur Messages: 223 |
J'y ait pensé mais si il veut faire des alliances du style Nain-Gnome VS Elfe-Humain il/elle n'aura pas grand chose a modifier
_________________ BOUH! (je vous ai fait peur ??) désolé Vive moi Pas vive Securom |
Revenir en haut | |
Sith Vicious Grand Sage du Conseil Messages: 693 |
Un point pour toi
|
Revenir en haut | |
Ivellios Légende vivante Messages: 447 Localisation: Poitiers |
Oui mais la boucle est quand même plus pratique quitte à passer par une fonction intermédiaire.
_________________ Scripts, systèmes, fonctions,... c'est par ici... Pyjama pour castor, une vocation, un avenir sûr |
Revenir en haut | |
Black Knight Grand Maître Chanteur du Conseil Messages: 1031 Localisation: Fin fond du trou du cul du monde |
Moi je savais qu'on pouvais faire sa, mais il voulais corrigé son script, d'ailleur je sias même pas si il marche tellement que je me suis perdue dedans. Mais bon c'est clair que le script en boucle est largement plus facile que sa...
_________________ [http] |
Revenir en haut | |
samhuin Ecuyer Messages: 43 |
non je veux pas forcement garder mon script merci en tous cas pour me l'avoir coriger ca me permet d'apprendre je vous donne le resultat d'ici peu
|
Revenir en haut | |
samhuin Ecuyer Messages: 43 |
non je veux pas forcement garder mon script merci en tous cas pour me l'avoir coriger ca me permet d'apprendre je vous donne le resultat d'ici peu
oui et ca n'a pas marcher pour al compilation |
Revenir en haut | |
samhuin Ecuyer Messages: 43 |
Bon je reviens vers vous, car j'ai fouillé partout ou il y a des scripts, et je n'ai pas réussi, a trouver, ou bien même a crée un script de faction.
Sur mon serveur RP les joueurs sont groupé par race, en faite j'aurai voulu faire un script qui regrouper ces joueurs en faction, qui serait donc gérer par le système de faction de nwn, ce qui permettrais par exemple un orque croise un nain ces 2 faction se faisant la guerre il se verrait en hostile. Mais le gros souci qu'on ma expliqué c'était si par exemple un joueur attaquer le garde nain de la même faction que lui alors toute la faction se taperai dessus. Aurais vous une idée ou bien même un début de script pouvant m'aider? |
Revenir en haut | |
Yoyo Seigneur Messages: 223 |
A ma connaissance il n'est pas possible d'utiliser le systeme de faction de NWN pour les PJ, ça marche seulement pour les PNJ, les créatures...
_________________ BOUH! (je vous ai fait peur ??) désolé Vive moi Pas vive Securom |
Revenir en haut | |
Black Knight Grand Maître Chanteur du Conseil Messages: 1031 Localisation: Fin fond du trou du cul du monde |
Hmmm j'ai un script pour sa, seulement moi je l'ai fait avec des INT "Team" ce qui est beaucoup plus simple pour moi ::
NWScript :
void JumpToTeam(object oJoiner) { if (!GetIsDM(oJoiner)) { object oOther = GetFirstPC(); int sOther; int sTeam = GetLocalInt(oJoiner, "Team"); if (sTeam == 2) { oOther = GetFirstPC(); while (GetIsObjectValid(oOther) == TRUE) { if ( oJoiner != oOther ) { sOther = GetLocalInt(oOther, "Team"); if ( sTeam == sOther ) { AddToParty( oJoiner, GetFactionLeader(oOther) ); return; } } oOther = GetNextPC(); } } else if (sTeam == 1) { oOther = GetFirstPC(); while (GetIsObjectValid(oOther) == TRUE) { if ( oJoiner != oOther ) { sOther = GetLocalInt(oOther, "Team"); if ( sTeam == sOther ) { AddToParty( oJoiner, GetFactionLeader(oOther) ); return; } } oOther = GetNextPC(); } } } } Ce script donc reunis ce qui on la Local int "Team" 1 au chef de groupe (donc le premier joueur qui entrera dans la team) pareil pour le 2. (attention le script est dans une bibliotheque et donc n'a pas de "void main" normale si sa ce compile pas! Apres voila le script qui met les joueurs hostiles :: NWScript :
Hostilite(object oPC) { object oEnemi = GetFirstPC(); int iTeamPC = GetLocalInt(oPC, "Team"); if(GetIsPC(oPC) && GetIsPC(oEnemi)) { while(GetIsObjectValid(oEnemi)) { int iTeamPC = GetLocalInt(oPC, "Team"); int iTeamEnemi = GetLocalInt(oEnemi, "Team"); if(iTeamPC != iTeamEnemi) { SetPCDislike(oPC, oEnemi); } else if(iTeamPC == iTeamEnemi) { SetPCLike(oPC, oEnemi); } oEnemi = GetNextPC(); } } } Donc ce script met les joueurs hostile si ils ont pas la même Local Int "Team". Donc voila en gros le script :: NWScript :Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.
Normalement sa marche. (attention au oPC, je ne sais pas ou tu veut mettre le script donc n'oublie pas le oPC!) _________________ [http] |
Revenir en haut | |
samhuin Ecuyer Messages: 43 |
oki merci beaucoup je vais regarder ca.
|
Revenir en haut | |
La Bibliothèque de Neverwinter Nights Index du Forum »
La Bibliothèque Binaire du NWScript - Neverwinter Nights
Page 1 sur 1 ¤
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum