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 02:41:19
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 |
darkheaven Acolyte Messages: 35 Localisation: nevers |
Pour faire cours, comme vous le savez sur certain module, la duplication via le systeme d'artisanat de nwn est chose courante, j'aimerai pour ma part l'interdire, pour cela en recherchant sur le forum j'ai trouver ceci
Seth de Sombrelune a écrit : Bon voici ce que je vous propose, je l'ai tester sur mon dodule, ça marche assez bien.
tous va bien sauf que je trouve des erreur de compilation (avec des copier/coller propre)
Cela necessite de revisiter le dialogue de crafting, créer 2 nouveaux scripts et de modifier 2 scripts importants de votre module. 1 :Créer le script d'ouverture du dialogue. Ce script place sur le pj une balise qui signal que dialogue d'artisanat a été ouvert. NWScript :
//:///////////////////////// ///////////////////// //:: Name ac_openartisanat //:: Copyright (c) 2001 Bioware Corp. //:///////////////////////// //////////////////// /* Balise d'ouverture du dialogue Artisanat */ //:///////////////////////// //////////////////// ///:: Created By: Seth de Sombrelune //:: Created On: 08/07/2005 //:///////////////////////// //////////////////// void main() { object oPC=GetLastSpeaker(); // on definit le joueur SetCampaignInt("BDDModule", "menu_artisanat", 1, oPC);// on affecte la valeur 1 dans la BDD } (BDDModule est un nom de base de donnée, choisisez le votre). 2 :Créer le script de fermeture du dialogue NWScript :
//:///////////////////////// ///////////////////// //:: Name ac_closartisanat //:: Copyright (c) 2001 Bioware Corp. //:///////////////////////// //////////////////// /* */ //:///////////////////////// //////////////////// ///:: Created By: Seth de Sombrelune //:: Created On: 08/07/2005 //:///////////////////////// //////////////////// void main() { object oPC=GetLastSpeaker(); // on definit le joueur SetCampaignInt("BDDModule", "menu_artisanat", 0, oPC);// on affecte la valeur 0 dans la BDD } 3 :Modifier le fichier de dialogue d'artisanat : x0_skill_ctrap Mon dialogue signale que l'ouverture du menu artisanat impose qu'il soit refermer en utilisant la branche de dialogue "fermer le menu artisanat" Code : Racine | |__ Prop :Impossible d'utiliser vos compétences Artisanat en ce moment. | ---> Condition d'Execution :x2_im_polymorphd | ---> Action Conséquente : | |__ Prop :Ouverture du Menu Artisanat <StartAction>[Atention, si vous choisissez d'activer le menu Artisana, vous devez absolument quiter ce menu par la fonction "Fermer le menu Artisanat" sinon votre personnage sera bloqué jusqu'a l'intervention d'un MD !]</Start> | --->CE : | --->AC : * Ouvrir le menu Artisanat | | --->CE: | | --->AC:ac_openartisanat | | | |_Prop :Menu compétences Artisanat | | --->CE: | | --->AC: | | | * (ici se place le menu normal : modifier armure, casque, robe, arme et | bouclier) | * Quiter le menu Artisanat [Fin du Dialogue] --->CE: --->AC: ac_closartisanat Atention ! Chaque branche de dialogue qui normalement termine le dialogue doit avoir comme action conséquente le script ac_closartisanat. Vous serez sans doute amener a modifier legerement la structure du dialogue pour que cela soi possible (j'ai personnellement fait en sorte que toute fin d'action reviene à la seconde branche de ma racine). Lors de la modification de votre fichier dialogue, faite tres atention, certaine branche qui existait en tant que "copie en tant que lien" risque de disparaitre. Conservez toujour une copie du dialogue original ! 4 : je modifie le script de l'evenement module OnClientEnter (ce code ne possede pas de fonction void main car ce n'est qu'une partie a ajouter à votre propre code. C'est la premiere condition qu'il regardera, votre script vient ensuite, pensez à refermer avec un } ! ). NWScript :
////////////////////////////// ////////////////////////////// //////// ////////////////////////////// ////////////////////////////// //////// /// Bloquage des tricheurs avec le menu Artisanat /// ////////////////////////////// ////////////////////////////// //////// ////////////////////////////// ////////////////////////////// //////// int iArtisanat = GetCampaignInt("BDDModule", "menu_artisanat", oPC); if(iArtisanat == 1) { DelayCommand(15.0,AssignCommand(oPC, JumpToLocation(GetLocation(GetWaypointByTag("WP_TRICHEUR"))))); DelayCommand(17.0,PlayVoiceChat(VOICE_CHAT_DEATH, oPC)); DelayCommand(17.5,ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_DEATH), oPC)); DelayCommand(17.5,ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDeath(FALSE, FALSE), oPC)); DelayCommand(18.0,SendMessageToPC(oPC,"")); SendMessageToAllDMs(""); } else { ////////////////////////////// ////////////////////////////// ///////// ////////////////////////////// ////////////////////////////// ///////// /* warning: 1 unclosed block {} */ 5 : je modifie le script de l'evenement module OnPlayerRespawn (ce code ne possede pas de fonction void main car ce n'est qu'une partie a ajouter à votre propre code de respawn juste apres la declaration de la fonction void main et du pj ayant cliquer sur respawn. C'est la premiere condition qu'il regardera, votre script vient ensuite, pensez à refermer avec un } ! ). NWScript :
////////////////////////////// ////////////////////////////// //////// ////////////////////////////// ////////////////////////////// //////// /// Bloquage des tricheurs avec le menu Artisanat /// ////////////////////////////// ////////////////////////////// //////// ////////////////////////////// ////////////////////////////// //////// int iArtisanat = GetCampaignInt("BDDModule", "menu_artisanat", oPC); if(iArtisanat == 1) { DelayCommand( 6.0,SendMessageToPC(oPC,"")); SendMessageToAllDMs(""); } else { ////////////////////////////// ////////////////////////////// ///////// ////////////////////////////// ////////////////////////////// ///////// /* warning: 1 unclosed block {} */ J'espère être assez clair dans mes explication. voilà ! Voici les messages d'erreur : OnClientEnter Citation : ////////////////////////////// ////////////////////////////// //////// ////////////////////////////// ////////////////////////////// //////// /// Bloquage des tricheurs avec le menu Artisanat /// ////////////////////////////// ////////////////////////////// //////// ////////////////////////////// ////////////////////////////// //////// // On récupère dans la BDD la valeur de la variable Artisanat int iArtisanat = GetCampaignInt("BDDModule", "menu_artisanat", oPC); if(iArtisanat == 1) // Si la variable = 1, c'est que le menu n'a pas été fermé convenablement (triche ?) { DelayCommand(15.0,AssignCommand(oPC, JumpToLocation(GetLocation(GetWaypointByTag("WP_TRICHEUR"))))); DelayCommand(17.0,PlayVoiceChat(VOICE_CHAT_DEATH, oPC)); DelayCommand(17.5,ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_DEATH), oPC)); DelayCommand(17.5,ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDeath(FALSE, FALSE), oPC)); DelayCommand(18.0,SendMessageToPC(oPC,"Vous etes mort car votre personnage a quiter le jeu avec un menu artisanat ouvert. Seul un MD pourra vous ramener à la vie.")); SendMessageToAllDMs("Un personnage s'est connecté apres avoir deco avec son menu artisanat ouvert !"); } else { ////////////////////////////// ////////////////////////////// ///////// ////////////////////////////// ////////////////////////////// ///////// /* warning: 1 unclosed block {} */ 26/11/2005 01:32:29 : Erreur. 'oncliententer' n'est pas compilé. oncliententer.nss(10): ERREUR : INVALID DECLARATION TYPE Citation : ////////////////////////////// ////////////////////////////// //////// ////////////////////////////// ////////////////////////////// //////// /// Bloquage des tricheurs avec le menu Artisanat /// ////////////////////////////// ////////////////////////////// //////// ////////////////////////////// ////////////////////////////// //////// // On récupère dans la BDD la valeur de la variable Artisanat int iArtisanat = GetCampaignInt("BDDModule", "menu_artisanat", oPC); if(iArtisanat == 1) // Si la variable = 1, c'est que le menu n'a pas été fermé convenablement (triche ?) { DelayCommand( 6.0,SendMessageToPC(oPC,"Vous etes mort car votre personnage a quiter le jeu avec un menu artisanat ouvert. Seul un MD pourra vous ramener à la vie.")); SendMessageToAllDMs("Un personnage s'est connecté apres avoir deco avec son menu artisanat ouvert et souhaite revenir à la vie. "); } else { ////////////////////////////// ////////////////////////////// ///////// ////////////////////////////// ////////////////////////////// ///////// /* warning: 1 unclosed block {} */ 26/11/2005 01:35:23 : Erreur. 'nw_o0_respawn' n'est pas compilé. nw_o0_respawn.nss(51): ERREUR : INVALID DECLARATION TYPE _________________ La vie n'est qu'une plume que le destin balade au grés du vent... Dernière édition par darkheaven le 05/12/2005 11:53:24; édité 1 fois
|
Revenir en haut | |
Sith Vicious Grand Sage du Conseil Messages: 693 |
T'es sur que tu les a bien collée à l'interieur d'un void main() ? C'est une erreur toute bête dans ton copier coller le texte doit être hors des balises { et } je pense.
|
Revenir en haut | |
darkheaven Acolyte Messages: 35 Localisation: nevers |
oui le void main est bien mis, en fait, j'introduis se script dans celui qu'il ya deja.
_________________ La vie n'est qu'une plume que le destin balade au grés du vent... |
Revenir en haut | |
Ecuyer paumé Acolyte Messages: 27 |
Je n'ai pas de solution à proposer, mais plutot une question vis-à-vis de ce script. En fait je me demandais si il etait possible de simplifier la chose en "empechant" le joueur de passer par la deconnection NWN lors de l'utilisation du menu artisanat, et donc de cette façon d'eviter la duplication. Possible ou pas?
|
Revenir en haut | |
Yoyo Seigneur Messages: 223 |
Pas possible et même si c'était possible il suffirait de quitter NWn a "l'arrache" (Crtl+Alt+Supr, reset...)
_________________ BOUH! (je vous ai fait peur ??) désolé Vive moi Pas vive Securom |
Revenir en haut | |
darkheaven Acolyte Messages: 35 Localisation: nevers |
Ji avais penser aussi mais voila, impossible
Donc le script est incontournable, si une solution est trouver il aidera pas mal de concepteur de module je pense vu que le probleme de la duplique est general _________________ La vie n'est qu'une plume que le destin balade au grés du vent... |
Revenir en haut | |
Semcatala Grand Sage du Conseil Messages: 951 |
Les solutions a base de balise fonctionnent. Le seul pb est que si il y a une déco serveur , le pj en plein dial d'artisanat est pénalisé.
_________________ " La ruse doit être employée pour faire croire que l'on est où l'on est pas, que l'on veut ce qu'on ne veut pas. " CdG " La véritable école du Commandement est la culture générale. " CdG " Une société prête à sacrifier un peu de liberté contre un peu de sécurité ne mérite ni l'une ni l'autre et finit par perdre les deux. " B.F " La gloire se donne seulement à ceux qui l'ont toujours rêvée. " CdG " La fin de l'espoir est le commencement de la mort. " CdG |
Revenir en haut | |
Black Knight Grand Maître Chanteur du Conseil Messages: 1031 Localisation: Fin fond du trou du cul du monde |
Bein heu je sais pas mais au debut de ton dialogue tu met toute les variable et tout et tout a 0, puis voila et donc si le joueur deco reco il aura aucune tricheri puisque il devra tout refaire, si il y a un bug de serveur il aura aucun probleme... Bon apres c'est mon avis, enfin je vois pas comment un joueur peut tricher la dedans j'ai jms eu de probleme moi
_________________ [http] |
Revenir en haut | |
Semcatala Grand Sage du Conseil Messages: 951 |
le principe est simple
le dialogue s'ouvre , là on met la balise int " balise_anti_triche " à TRUE de maniére PERMANENTE sur le PJ ! Quand le dialogue se ferme de maniére correcte , on modifie la valeur de la balise à FALSE de maniére PERMANENTE ! Si je joueur se barre en faisant une déco sauvage , sa balise reste a TRUE même aprés un reboot , là a l'entrée du mod tu vérifie les balises sur chaque PJ , et celui qui à une balise à TRUE , il va en tôle , il se fait kiker , les MJ sont avertis , ou ce que tu veux ! Ma solution consiste a l'envoyer en exil sur un autre mod " prison " via une paserelle IP , comme ça , ça libére une place sur le mod et le mec est bien en tôle ! _________________ " La ruse doit être employée pour faire croire que l'on est où l'on est pas, que l'on veut ce qu'on ne veut pas. " CdG " La véritable école du Commandement est la culture générale. " CdG " Une société prête à sacrifier un peu de liberté contre un peu de sécurité ne mérite ni l'une ni l'autre et finit par perdre les deux. " B.F " La gloire se donne seulement à ceux qui l'ont toujours rêvée. " CdG " La fin de l'espoir est le commencement de la mort. " CdG |
Revenir en haut | |
Black Knight Grand Maître Chanteur du Conseil Messages: 1031 Localisation: Fin fond du trou du cul du monde |
Mouai je vois pas l'interet car si on deco sauvegement et q'uon peut faire de la triche, c'est que ton script est assé mal fait... Normalement meme si il y a un deco sauvage tu devrais pas avoir de probleme, il est bizzar ton script oO
_________________ [http] |
Revenir en haut | |
Semcatala Grand Sage du Conseil Messages: 951 |
Il n'y a PAS de problême ! Ca marche je l'ai fait sur mon mod !
L'intêret c'est que ça détecte les tricheurs qui dupliquent et qui veulent se reconecter au mod pour revendre les objets dupliqués. Je t'explique : Dans le dial d'artisanat , sur le texte : " Menu compétences artisanat " , tu met en " actions conséquentes " le script : NWScript :
void main() { object oPC = GetPCSpeaker(); SetCampaignInt("nom_de_ton_mod","balise_anti_triche_artisanat",TRUE,oPC); } Ensuite , dans " fichier actuel " il y a un script dans " normal " , dans ce script tu rajoute la ligne 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. Là ce qu'on a fait est simple , le mec qui entre dans le dial d'artisanat reçoit une balise TRUE , quand il sort cette balise passe à FALSE. Si tu rentre dans le mod avec une balise à FALSE c'est que tu es sorti proprement du dial d'artisanat , si tu as une balise a TRUE , c'est que tu t'es déco comme un sauvage pendant que tu étais dans le dial d'artisanat. Ensuite , on surveille les balises de celui qui entre sur le mod : dans le " oncliententer " tu rajoute les lignes : NWScript :
////////////////////////////// ////////////////////////////// ///////////// ///// Script anti-triche ////////////////////////////// ////////////////////////////// ///////////// int balise_anti_triche = GetCampaignInt("nom_de_ton_mod","balise_anti_triche_artisanat",oPC); if ( balise_anti_triche == TRUE ) if(!GetIsDM(oPC)) { DelayCommand(10.0,AssignCommand(oPC,JumpToLocation(GetLocation(GetWaypointByTag("WP_TRICHEURS"))))); // Pour l'envoyer dans la prison des tricheurs WriteTimestampedLogEntry(" "); WriteTimestampedLogEntry("_______________________________________________"); WriteTimestampedLogEntry(" TRICHEUR"); WriteTimestampedLogEntry("_______________________________________________"); WriteTimestampedLogEntry(sPlayerName+" Vient d'aller en tole pour TRICHE ! "); WriteTimestampedLogEntry("_______________________________________________"); WriteTimestampedLogEntry(" "); WriteTimestampedLogEntry(" TRICHEUR"); WriteTimestampedLogEntry("_______________________________________________"); SendMessageToAllDMs(sPlayerName+""); } qui servent a envoyer en tôle sur le waypoint qui va bien le porteur de la balise qui est a TRUE , et en même temps tous les MD sont avertis , et tant qu'on y est , on marque l'événement dans les fichiers log ! Et ça marche ! Une variante consiste a faire perdre au tricheur tous es objets , tous ses XP et toutes ses PO , lui mettre un poid indropable de 500000 livres dans son inventaire , et lui tomber toutes ses caractéristiques à 3 points de maniére bien sûr permanente ! _________________ " La ruse doit être employée pour faire croire que l'on est où l'on est pas, que l'on veut ce qu'on ne veut pas. " CdG " La véritable école du Commandement est la culture générale. " CdG " Une société prête à sacrifier un peu de liberté contre un peu de sécurité ne mérite ni l'une ni l'autre et finit par perdre les deux. " B.F " La gloire se donne seulement à ceux qui l'ont toujours rêvée. " CdG " La fin de l'espoir est le commencement de la mort. " CdG |
Revenir en haut | |
darkheaven Acolyte Messages: 35 Localisation: nevers |
Ca ma l'air simpa ton systeme semcatala, cependant quand je vais dans fichier actuel, je n'ai pas de script dans normal, que faire?
_________________ La vie n'est qu'une plume que le destin balade au grés du vent... |
Revenir en haut | |
Semcatala Grand Sage du Conseil Messages: 951 |
moi j'avais un script de base que j'ai modifié :
NWScript :
////////////////////////////// //////////////////////////// /* Item Appearance Modification Conversation Finish Conversation Script */ // created/updated 2003-06-24 Georg Zoeller, Bioware Corp ////////////////////////////// //////////////////////////// #include "x2_inc_craft" void main() { object oPC = GetPCSpeaker(); SetCampaignInt("nom_de_ton_mod","balise_anti_triche_artisanat",FALSE,oPC); if (CIGetCurrentModMode(GetPCSpeaker()) != X2_CI_MODMODE_INVALID ) { object oBackup = CIGetCurrentModBackup(oPC); int nCost = GetLocalInt(oPC,"X2_TAILOR_CURRENT_COST"); int nDC = GetLocalInt(oPC,"X2_TAILOR_CURRENT_DC"); if (GetGold(oPC) >= nCost) { TakeGoldFromCreature(nCost,oPC,TRUE); } else { FloatingTextStrRefOnCreature(83447,oPC); ExecuteScript ("x2_im_cancel", OBJECT_SELF); return; } int bSuccess = FALSE; if (CIGetCurrentModMode(oPC) == X2_CI_MODMODE_ARMOR) { if ( GetIsSkillSuccessful(oPC,SKILL_CRAFT_ARMOR,nDC)) { //FloatingTextStrRefOnCreature (83449,oPC); bSuccess = TRUE; } } else { if ( GetIsSkillSuccessful(oPC,SKILL_CRAFT_WEAPON,nDC)) { bSuccess = TRUE; //FloatingTextStrRefOnCreature (83449,oPC); } } if (!bSuccess) { FloatingTextStrRefOnCreature(83448,oPC); // run the cleanup script ExecuteScript ("x2_im_cancel", OBJECT_SELF); return; } object oNew = CIGetCurrentModItem(oPC); AssignCommand(oPC,ClearAllActions(TRUE)); if (CIGetCurrentModMode(oPC) == X2_CI_MODMODE_ARMOR) { AssignCommand(oPC, ActionEquipItem(oNew,INVENTORY_SLOT_CHEST)); } else if (CIGetCurrentModMode(oPC) == X2_CI_MODMODE_WEAPON) { AssignCommand(oPC, ActionEquipItem(oNew,INVENTORY_SLOT_RIGHTHAND)); } //---------------------------- ------------------------------ ------------ // This is to work around a problem with temporary item properties // sometimes staying around when they are on a cloned item. //---------------------------- ------------------------------ ------------ IPRemoveAllItemProperties(oNew,DURATION_TYPE_TEMPORARY); DeleteLocalInt(oPC,"X2_TAILOR_CURRENT_COST"); DeleteLocalInt(oPC,"X2_TAILOR_CURRENT_DC"); CISetCurrentModMode(oPC,X2_CI_MODMODE_INVALID ); // remove backup DestroyObject(oBackup); } else { ClearAllActions(); } // Remove custscene immobilize from player effect eEff = GetFirstEffect(oPC); while (GetIsEffectValid(eEff)) { if (GetEffectType(eEff) == EFFECT_TYPE_CUTSCENEIMMOBILIZE && GetEffectCreator(eEff) == oPC && GetEffectSubType(eEff) == SUBTYPE_EXTRAORDINARY ) { RemoveEffect(oPC,eEff); } eEff = GetNextEffect(oPC); } RestoreCameraFacing() ; } reprends le si tu veux , ça devrais marcher ! Pense juste a adapter le nom de ta balise , ensuite c'est juste du copier coller ! _________________ " La ruse doit être employée pour faire croire que l'on est où l'on est pas, que l'on veut ce qu'on ne veut pas. " CdG " La véritable école du Commandement est la culture générale. " CdG " Une société prête à sacrifier un peu de liberté contre un peu de sécurité ne mérite ni l'une ni l'autre et finit par perdre les deux. " B.F " La gloire se donne seulement à ceux qui l'ont toujours rêvée. " CdG " La fin de l'espoir est le commencement de la mort. " CdG |
Revenir en haut | |
darkheaven Acolyte Messages: 35 Localisation: nevers |
Merci bien ! mais voila j'ai encore un probleme, le dernier scrip ne compile pas
NWScript :
////////////////////////////// ////////////////////////////// ///////////// ///// Script anti-triche ////////////////////////////// ////////////////////////////// ///////////// void main() { int balise_anti_triche = GetCampaignInt("nom_de_ton_mod","balise_anti_triche_artisanat",oPC); //l'erreur se trouve a cette ligne if ( balise_anti_triche == TRUE ) if(!GetIsDM(oPC)) { DelayCommand(10.0,AssignCommand(oPC,JumpToLocation(GetLocation(GetWaypointByTag("WP_TRICHEURS"))))); // Pour l'envoyer dans la prison des tricheurs WriteTimestampedLogEntry(" "); WriteTimestampedLogEntry("_______________________________________________"); WriteTimestampedLogEntry(" TRICHEUR"); WriteTimestampedLogEntry("_______________________________________________"); WriteTimestampedLogEntry(sPlayerName+" Vient d'aller en tole pour TRICHE ! "); WriteTimestampedLogEntry("_______________________________________________"); WriteTimestampedLogEntry(" "); WriteTimestampedLogEntry(" TRICHEUR"); WriteTimestampedLogEntry("_______________________________________________"); SendMessageToAllDMs(sPlayerName+""); } } le message d'erreur: NWScript :
02/12/2005 18:29:50 : Erreur. 'antiduplik3' n'est pas compilé. antiduplik3.nss(7): ERREUR : VARIABLE DEFINED WITHOUT TYPE Une fois regler j'ai hate de voir si ca marche _________________ La vie n'est qu'une plume que le destin balade au grés du vent... |
Revenir en haut | |
Semcatala Grand Sage du Conseil Messages: 951 |
Normal que ça ne compile pas , c'est juste une partie du script , je te file un exemple de script complet :
NWScript :
void main() { object oPC = GetEnteringObject(); string sPlayerName = GetPCPlayerName(oPC); ////////////////////////////// ////////////////////////////// ///////////// ///// Script anti-triche ////////////////////////////// ////////////////////////////// ///////////// int balise_anti_triche = GetCampaignInt("nom_de_ton_mod","balise_anti_triche_artisanat",oPC); if ( balise_anti_triche == TRUE ) if(!GetIsDM(oPC)) { DelayCommand(10.0,AssignCommand(oPC,JumpToLocation(GetLocation(GetWaypointByTag("WP_TRICHEURS"))))); WriteTimestampedLogEntry(" "); WriteTimestampedLogEntry("_______________________________________________"); WriteTimestampedLogEntry(" TRICHEUR"); WriteTimestampedLogEntry("_______________________________________________"); WriteTimestampedLogEntry(sPlayerName+" Vient d'aller en tole pour TRICHE ! "); WriteTimestampedLogEntry("_______________________________________________"); WriteTimestampedLogEntry(" "); WriteTimestampedLogEntry(" TRICHEUR"); WriteTimestampedLogEntry("_______________________________________________"); SendMessageToAllDMs(sPlayerName+""); } ////////////////////////////// ////////////////////////////// ///////////// } En fait tu as juste omis de rajouter les lignes : 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. Je n'ai jamais dit que le script était complet , mais que c'étais " une partie " du script , car mon script dans mon " oncliententer " vérifie beaucoups plus de choses a l'entrée d'un pj sur le mod. Je pensais que tu rajouterais ces 2 lignes seul ! Donc voila , t'as le script complet ! _________________ " La ruse doit être employée pour faire croire que l'on est où l'on est pas, que l'on veut ce qu'on ne veut pas. " CdG " La véritable école du Commandement est la culture générale. " CdG " Une société prête à sacrifier un peu de liberté contre un peu de sécurité ne mérite ni l'une ni l'autre et finit par perdre les deux. " B.F " La gloire se donne seulement à ceux qui l'ont toujours rêvée. " CdG " La fin de l'espoir est le commencement de la mort. " CdG |
Revenir en haut | |
darkheaven Acolyte Messages: 35 Localisation: nevers |
Merci beaucoup, je te dois une fiere chandelle , je test et je post les resultats.
Merci encore _________________ La vie n'est qu'une plume que le destin balade au grés du vent... |
Revenir en haut | |
darkheaven Acolyte Messages: 35 Localisation: nevers |
Donc voila ca marche, merci beaucoup mais je revien a d'autre question, la personne envoyer en prison apres son flagrant delit, perd t-elle sa balise?
Si non, ya t-il un moyen pour qu'un dm puisse lui enlever en jeu? _________________ La vie n'est qu'une plume que le destin balade au grés du vent... |
Revenir en haut | |
Semcatala Grand Sage du Conseil Messages: 951 |
De rien !
Non elle ne la perds pas , sinon ce serais trop facile , elle la perds , puis elle revient dans le mod comme une fleur !!! Ce que j'ai fait , c'est de faire dans la prison des geôles pour enfermes les prisoniers ( une seule en fait ) , puis j'y ai mis une porte verouillée qui donne sur une autre piéce. Dans cette autre piéce , un declencheur recouvre TOUT le sol , ce déclencheur sert a renvoyer le perso dans le mod et a lui réinitialiser sa balise pour qu'il puisse jouer. L'idéal , c'est qu'un mj vienne , discute avec le mec , et une fois les soucis réglés , si le mec est autorisé a revenir sur le mod , le mj lui ouvre la porte , le pj avance , et là il est téléporté a nouveau vers le mod. Dans tous les cas , même si le mod est plein , sa balise repasse a FALSE , et il pourra revenir plus tard. _________________ " La ruse doit être employée pour faire croire que l'on est où l'on est pas, que l'on veut ce qu'on ne veut pas. " CdG " La véritable école du Commandement est la culture générale. " CdG " Une société prête à sacrifier un peu de liberté contre un peu de sécurité ne mérite ni l'une ni l'autre et finit par perdre les deux. " B.F " La gloire se donne seulement à ceux qui l'ont toujours rêvée. " CdG " La fin de l'espoir est le commencement de la mort. " CdG |
Revenir en haut | |
darkheaven Acolyte Messages: 35 Localisation: nevers |
Bien bien
... se serai possible d'avoir le script qui renvoi en enlevant la balise ? *sent qu'il abuse* Par contre j'ai remarquait une chose c'est que le pj bloquer de cette maniere etait compeletement immobilisé, c'ets normal? _________________ La vie n'est qu'une plume que le destin balade au grés du vent... |
Revenir en haut | |
Semcatala Grand Sage du Conseil Messages: 951 |
je crois que j'ai eu le même problême sur le WP d'arrivée , il m'a suffit de le déplacer sur un point de la zone ou j'étais sur qu'il pouvait se déplacer correctement et aprés ça fonctionnait.
Pour le script voila ce qu'il faut mettre dans le " onenter " du déclencheur de la prison : NWScript : void main() { object oPC = GetEnteringObject(); string sPlayerName = GetPCPlayerName(oPC); ////////////////////////////// ////////////////////////////// ///////////// ///// Script anti-triche retour dans le mod ////////////////////////////// ////////////////////////////// ///////////// SetCampaignInt("nom_de_ton_mod","balise_anti_triche_artisanat",FALSE,oPC); DelayCommand(10.0,AssignCommand(oPC,JumpToLocation(GetLocation(GetWaypointByTag("WP_RETOUR_MOD"))))); } _________________ " La ruse doit être employée pour faire croire que l'on est où l'on est pas, que l'on veut ce qu'on ne veut pas. " CdG " La véritable école du Commandement est la culture générale. " CdG " Une société prête à sacrifier un peu de liberté contre un peu de sécurité ne mérite ni l'une ni l'autre et finit par perdre les deux. " B.F " La gloire se donne seulement à ceux qui l'ont toujours rêvée. " CdG " La fin de l'espoir est le commencement de la mort. " CdG |
Revenir en haut | |
darkheaven Acolyte Messages: 35 Localisation: nevers |
Merci pour tous c'est de la baballe, merci encore
_________________ La vie n'est qu'une plume que le destin balade au grés du vent... |
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