|
J'essaye de rendre mon module légèrement plus vivant, j'ai activé dans le "on_spawn" les "setanimation" sur TRUE, mais rien ne ce passe...
J'ai aussi tester plusieurs script proposé sur le vault dont un français, que voici :
//:://///////////////////////////////////////////// //:: EverNever Socialise NPC's //:: http://evernever.keuf.net/ //::////////////////////////////////////////////// /* PRINCIPES :
Nous voulons donner aux NPC (robots), un aspect plus social ils pourront agir de façon un peu plus "vivante", leur donnant un caractère, et une profondeur pour une immersion dans le jeu assurée!
Ce système affecte les NPC de différentes manières :
- Les Nobles - Les Gens de classe moyenne - Les Gens de bas quartier - Les Ivrognes
Quand le NPC aperçoit un PC, il va agir selon le type de classe sociale/animale qu'on lui a assigné. Un anti-spam empêcheras le flood.
Voici les Tags a affecter a vos personnages :(6 premiere lettres)
Pour les humanoides "_NOBLE" + votre tag "_MOYEN" + votre tag "_PAUVR" + votre tag "_GARDE" + votre tag "_AMBIE" + votre tag // = AMBIENT "_IVROG" + votre tag
exemple : "_NOBLE_MONTAG" ou "_PAUVRBLABLA"
*/ //::////////////////////////////////////////////// //:: Created By: //:: Created On: //:://////////////////////////////////////////////
const float _ANTI_SPAM_DELAY = 120.0; // ON AJOUTERA +1d10.0 pour que les NPC ne parlent pas tous ensemble. const float _ANTI_SPAM_DELAY_AMBIANT = 160.0;//AJOUTERA +1d10.0 pour que les NPC ne parlent pas tous ensemble.
#include "nw_i0_generic"
void main() {
/* VARIABLES MAJEURES */ //////////////////////////////////////////////////////////////////////////////// object oPC = GetLastPerceived(); object oBot = OBJECT_SELF;
string sTag = GetStringLeft(GetTag(oBot),6); string sName = GetName(oPC); int nLevel = GetHitDice(oPC); int nPCCharisme = GetAbilityModifier(ABILITY_CHARISMA, oPC);
object oArmor = GetItemInSlot(INVENTORY_SLOT_CHEST, oPC); object oWeapon = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC); object oWeapon2 = GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC); object oCasque = GetItemInSlot(INVENTORY_SLOT_HEAD, oPC);
int nGenderPC = GetGender(oPC); int nGenderNPC = GetGender(oBot);
string sTalk; float fDirPC = GetFacingFromLocation(GetLocation(oPC)); float fDirNPC = GetFacingFromLocation(GetLocation(oBot));
location lOrigin = GetLocation(oBot); //////////////////////////////////////////////////////////////////////////////// /* SCRIPT DE BASE BIOWARE */ //////////////////////////////////////////////////////////////////////////////// if (!IsInConversation(oBot)) { if (GetIsPostOrWalking()) { WalkWayPoints(); } else if (GetIsPC(oPC) && (GetSpawnInCondition(NW_FLAG_AMBIENT_ANIMATIONS) || GetSpawnInCondition(NW_FLAG_AMBIENT_ANIMATIONS_AVIAN) || GetSpawnInCondition(NW_FLAG_IMMOBILE_AMBIENT_ANIMATIONS) || GetIsEncounterCreature())) { SetAnimationCondition(NW_ANIM_FLAG_IS_ACTIVE); } }
/* ON COMMENCE ICI */ //////////////////////////////////////////////////////////////////////////////// if(!GetIsPC(oPC)){return;}// Si le personnage apercu n'est pas un PC on s'arrete //////////////////////////////////////////////////////////////////////////////// if(GetLocalInt(oBot,"_ISPOKEN")==TRUE){return;} // anti-spam ////////////////////////////////////////////////////////////////////////////////
/* AMBIENT */ //////////////////////////////////////////////////////////////////////////////// if(sTag=="_AMBIE") // AMBIANCE { string s1; string s2; string s3;
if(d4(1)==4) // Une chance sur 4 de parler du temps qu'il fait sinon ambiant normal { if(GetIsDusk()) //Crepuscule { switch (d4(1)) { case 1 : s1="Dame Nuit nous salue! "; break; case 2 : s1="Il commence à se faire tard... "; break; case 3 : s1="Voilà la nuit qui tombe. "; break; case 4 : s1="Ah, le soleil s'est couché. "; break; } } else if(GetIsDawn()) //Aube { switch (d4(1)) { case 1 : s1="Une belle journée devant nous! "; break; case 2 : s1="Le Soleil se lève. "; break; case 3 : s1="Voici l'Aube. "; break; case 4 : s1="Quelle belle journée qui s'annonce! "; break; } } else if( GetIsNight()) //Nuit { switch (d4(1)) { case 1 : s1="La nuit... "; break; case 2 : s1="Quelle nuit! "; break; case 3 : s1="Les astres sont si écarlates de Nuit... "; break; case 4 : s1="Quelle nuit paisible! "; break; } } else if( GetIsDay()) //Jour { switch (d4(1)) { case 1 : s1="Belle journée n'est-ce pas? "; break; case 2 : s1="Une bonne journée pour nos activités. "; break; case 3 : s1="Quelle journée! "; break; case 4 : s1="Ahh.. Les rayons du soleil... "; break; } }
if(GetWeather(GetArea(oBot))==WEATHER_CLEAR) // temps clair { switch (d4(1)) { case 1 : s2="Et quel temps clair! "; break; case 2 : s2="Avec un temps si doux... "; break; case 3 : s2="Le temps nous est favorable. "; break; case 4 : s2="J'espère que le temps restera aussi calme demain. "; break; } } else if(GetWeather(GetArea(oBot))==WEATHER_RAIN) // temps pluvieux { switch (d4(1)) { case 1 : s2="Mais quel temps maussade! "; break; case 2 : s2="Quelle pluie! Nous ferions mieux de rentrer... "; break; case 3 : s2="Ah les dieux se déchaînent! Quelle pluie! "; break; case 4 : s2="Si seulement il pleuvait pas autant d'Hallebardes! "; break; } } else if(GetWeather(GetArea(oBot))==WEATHER_RAIN) // temps enneige { switch (d4(1)) { case 1 : s2="La neige tombe en flocons... "; break; case 2 : s2="Cette neige n'est pas si désagréable... "; break; case 3 : s2="Ce sont les enfants d'Aurile qui doivent apprécier le moment... "; break; case 4 : s2="Mais j'espère que cette neige s'en ira vite... On meurt de froid. "; break; } } }
else // DIVERS AMBIENT { switch (Random(75)) { case 1 : s1="Oui, je pense... "; break; case 2 : s1="Ah bon?"; break; case 3 : s1="Et quel âge a t-il aujourd'hui? "; break; case 4 : s1="*Sourit* "; break; case 5 : s1="Exactement! "; break; case 6 : s1="Oui "; break; case 7 : s1="Non je ne pense pas...* "; break; case 8 : s1="Mmmh.. Depuis une semaine je crois..."; break; case 9 : s1="Et comment vat-il? "; break; case 10 : s1="Incroyable, il a vraiment fait ça? "; break; case 11 : s1="En effet."; break; case 12 : s1="Et le travail?"; break; case 13 : s1="Quand je me promenais dans le parc..."; break; case 14 : s1="Mais quel ivrogne!"; break; case 15 : s1="Oui, ensemble..."; break; case 16 : s1="C'est alors qu'il ma dit..."; break; case 17 : s1="Vraiment?"; break; case 18 : s1="C'est un bon père."; break; case 19 : s1="La forêt rescelle toujours de bonnes et de mauvaises choses."; break; case 21 : s1="Et puis..."; break; case 22 : s1="C'est ainsi."; break; case 23 : s1="Et que faire?"; break; case 24 : s1="J'aimerais vraiment."; break; case 25 : s1="Et alors le nain dit..."; break; case 26 : s1="Je m'en doutais."; break; case 27 : s1="Ensemble nous pourrions."; break; case 28 : s1="Combien d'hommes faut t-il pour tuer un troll?"; break; case 29 : s1="Un seul nain."; break; case 30 : s1="Oui une rapière et un grand Bouclier."; break; case 31 : s1="Une plume et un livre. C'est le minimum."; break; case 32 : s1="Donc..."; break; case 33 : s1="Mais je n'ai pas compris ce qu'il a voulu dire par..."; break; case 34 : s1="Je l'attendais. IL n'est pas venu."; break; case 35 : s1="C'est comme cela qu'ils font."; break; case 36 : s1="Oui, c'est une bonne idée."; break; case 37 : s1="Nous devrions..."; break; case 38 : s1="C'est parfois plus dur qu'on ne le crois!"; break; case 39 : s1="Au marché, oui."; break; case 40 : s1="Mais personne ne le croyais."; break; case 41 : s1="C'était un peu comme un dragon, de petite taille. Il était très rapide."; break; case 42 : s1="Quand c'est arrivé, le rôdeur a dû alerter les druides."; break; case 43 : s1="Tout s'est passé si vite. Le feu a pris sa grange, maintenant il ne sait plus quoi faire."; break; case 44 : s1="Sa fille est adorable."; break; case 45 : s1="Puisse notre Seigneur nous aider."; break; case 46 : s1="Combien? Il me proposait justement la même chose pour bien moins cher..."; break; case 47 : s1="Pff! un Petit dragon, et puis quoi encore? Ils ne savent plus quoi inventer pour se faire remarquer."; break; case 48 : s1="Ah mais quel pître celui là. Un jour il se trouvera entre 4 orques. Et... *sourit*"; break; case 49 : s1="Au lieu de balayer devant la porte de ses voisins... Il ferais mieux de nettoyer dans sa propre porte."; break; case 50 : s1="Ainsi soit-il."; break; case 51 : s1="vraiment..."; break; case 52 : s1="Encore deux jours, et ce sera fait."; break; case 53 : s1="Combien en avez-vous tué?"; break; case 54 : s1="Les Kobolds sont vraiment inofensifs seuls... Mais en groupe, me vaut se méfier."; break; case 55 : s1="Elminster? C'est'de Valombre'. Un grand Archimage. Non?"; break; case 56 : s1="Non c'est Tempus le Seigneur des Batailles... Pas Garagos."; break; case 57 : s1="Vous vous trompez."; break; case 58 : s1="Eauprofonde... J'aimerais tant y aller..."; break; case 59 : s1="Pouvez-vous y aller? C'est un très long voyage. La route n'est pas sûre."; break; case 60 : s1="J'espère, il nous faudra 4 semaines en caravane."; break; case 61 : s1="Cette potion? C'est un Gnome, il est alchimiste et j'avais besoin de préparer mon jardin plus rapidement cette année."; break; case 62 : s1="Cette année, le jardin nous a gâté."; break; case 63 : s1="Les Zentharims. Ma fille en a fait un cauchemard."; break; case 64 : s1="Elle est si belle, elle mérite un bon mari."; break; case 65 : s1="Je lui ait déjà proposé vingts pièces. Il dit que cela coûte plus. Mais il a perdu la raison..."; break; case 66 : s1="Encore deux mois."; break; case 67 : s1="Vous allez vraiment y aller? C'est assez dangereux d'après ce que j'ai entendu."; break; case 68 : s1="Ah! Je déteste les rumeurs."; break; case 69 : s1="C'est comme si on lancer du feu sur une écorce sèche. Ca l'attaque très vite."; break; case 70 : s1="J'attends le jour où les derniers seront les premiers. Et les premiers, les derniers! Gloire à notre Seigneur!"; break; case 71 : s1="une dinde, de la ciboulette...Carottes et d'autres choses... Le tout elle le jette dans la casserole et on attends."; break; case 72 : s1="Pouah!"; break; case 73 : s1="Je ne le supporterais pas. C'est ton choix..."; break; case 74 : s1="Le clergé? Oui peut-être."; break; case 75 : s1="Votre Dogme? C'est le Marche-pied du Notre. Si seulement vous saviez..."; break;
default : s1="Exactement."; } }
DelayCommand(IntToFloat(d6(1)),SpeakString(s1+s2+s3,TALKVOLUME_TALK)); // on ne parle pas tous en meme temps, c'est mal poli ;) SetLocalInt(oBot, "_ISPOKEN", TRUE); DelayCommand(_ANTI_SPAM_DELAY_AMBIANT+IntToFloat(d6(1)),DeleteLocalInt(oBot, "_ISPOKEN") ); return; //On quitte le scripte }
////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////// if(GetIsObjectValid(oCasque) && sTag=="_GARDE") // LE JOUEUR PORTE UN CASQUE DEVANT UN GARDE { AssignCommand(oBot, ClearAllActions(TRUE)); SpeakString("Regarde suspicieusement "+sName+" sous son casque.*", TALKVOLUME_TALK); SetFacingPoint(GetPosition(oPC)); // On regarde le Joueur DelayCommand(2.0,SetFacing(fDirNPC)); SetLocalInt(oBot, "_ISPOKEN", TRUE); DelayCommand(_ANTI_SPAM_DELAY+IntToFloat(d6(1)),DeleteLocalInt(oBot, "_ISPOKEN") ); DelayCommand(8.0,WalkWayPoints()); return; // On quitte le scripte } ////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////// if(!GetIsObjectValid(oArmor)) // LE JOUEUR SE BALADE NU ! { if(sTag=="_NOBLE") { if (nGenderPC == GENDER_FEMALE && nGenderNPC == GENDER_MALE ) { sTalk="Oh quelle honte!"; } else if (nGenderNPC == GENDER_FEMALE && nGenderPC == GENDER_MALE) { sTalk="Oh! Le goujeat!"; } else { sTalk="Oh! Encore une personne s'éxhibant!"; } } else if(sTag=="_MOYEN") { if (nGenderPC == GENDER_FEMALE && nGenderNPC == GENDER_MALE) { sTalk="Non mais, elle est toute nue!"; } else if (nGenderNPC == GENDER_FEMALE && nGenderPC == GENDER_MALE) { sTalk="Seigneur! Que fait cet homme nu?!"; } else { sTalk="Apparemment cette personne avait un peu chaud!"; } } else if(sTag=="_PAUVR") { if (nGenderPC == GENDER_FEMALE && nGenderNPC == GENDER_MALE) { sTalk="Et v'la que les donzelles montrent leur derrière en public!"; } else if (nGenderNPC == GENDER_FEMALE && nGenderPC == GENDER_MALE) { sTalk="Didonc c'est pas un bûcheron celui-là."; } else { sTalk="Et v'la qu'on se donne en cirque. Pouah!"; } } else if(sTag=="_GARDE") {
sTalk="Par la Loi! Veuillez vous rhabiller immédiatement!"; DelayCommand(1.9,AssignCommand(oPC, ClearAllActions(TRUE))); DelayCommand(2.0,AssignCommand(oPC, ActionUnequipItem(oWeapon)));// On de-equipe de l'arme portee (par precaution) }
else { sTalk ="Cette personne...Se balade nue?!"; } AssignCommand(oBot, ClearAllActions(TRUE)); PlayVoiceChat(VOICE_CHAT_LOOKHERE, oBot); SpeakString(sTalk+" *En regardant "+sName+" déshabillé.*", TALKVOLUME_TALK); SetFacingPoint(GetPosition(oPC)); // On regarde le Joueur DelayCommand(2.0,SetFacing(fDirNPC)); SetLocalInt(oBot, "_ISPOKEN", TRUE); DelayCommand(_ANTI_SPAM_DELAY+IntToFloat(d10(1)),DeleteLocalInt(oBot, "_ISPOKEN") ); DelayCommand(8.0,WalkWayPoints()); return; // On quitte le scripte }
////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////// if(GetIsObjectValid(oWeapon)&& sTag =="_GARDE")// JOUEUR PORTANT UNE ARME DEVANT UN GARDE ! {
if( GetBaseItemType(oWeapon)==BASE_ITEM_BASTARDSWORD ||GetBaseItemType(oWeapon)==BASE_ITEM_BATTLEAXE ||GetBaseItemType(oWeapon)==BASE_ITEM_CLUB ||GetBaseItemType(oWeapon)==BASE_ITEM_DAGGER ||GetBaseItemType(oWeapon)==BASE_ITEM_DART ||GetBaseItemType(oWeapon)==BASE_ITEM_DIREMACE ||GetBaseItemType(oWeapon)==BASE_ITEM_DOUBLEAXE ||GetBaseItemType(oWeapon)==BASE_ITEM_DWARVENWARAXE ||GetBaseItemType(oWeapon)==BASE_ITEM_GREATAXE ||GetBaseItemType(oWeapon)==BASE_ITEM_GREATSWORD ||GetBaseItemType(oWeapon)==BASE_ITEM_HALBERD ||GetBaseItemType(oWeapon)==BASE_ITEM_HANDAXE ||GetBaseItemType(oWeapon)==BASE_ITEM_HEAVYCROSSBOW ||GetBaseItemType(oWeapon)==BASE_ITEM_HEAVYFLAIL ||GetBaseItemType(oWeapon)==BASE_ITEM_KAMA ||GetBaseItemType(oWeapon)==BASE_ITEM_KATANA ||GetBaseItemType(oWeapon)==BASE_ITEM_KUKRI ||GetBaseItemType(oWeapon)==BASE_ITEM_LIGHTCROSSBOW ||GetBaseItemType(oWeapon)==BASE_ITEM_LIGHTFLAIL ||GetBaseItemType(oWeapon)==BASE_ITEM_LIGHTHAMMER ||GetBaseItemType(oWeapon)==BASE_ITEM_LIGHTMACE ||GetBaseItemType(oWeapon)==BASE_ITEM_LONGBOW ||GetBaseItemType(oWeapon)==BASE_ITEM_LONGSWORD ||GetBaseItemType(oWeapon)==BASE_ITEM_MORNINGSTAR ||GetBaseItemType(oWeapon)==BASE_ITEM_RAPIER ||GetBaseItemType(oWeapon)==BASE_ITEM_SCIMITAR ||GetBaseItemType(oWeapon)==BASE_ITEM_SCYTHE ||GetBaseItemType(oWeapon)==BASE_ITEM_SHORTBOW ||GetBaseItemType(oWeapon)==BASE_ITEM_SHORTSPEAR ||GetBaseItemType(oWeapon)==BASE_ITEM_SHORTSWORD ||GetBaseItemType(oWeapon)==BASE_ITEM_SHURIKEN ||GetBaseItemType(oWeapon)==BASE_ITEM_SICKLE ||GetBaseItemType(oWeapon)==BASE_ITEM_SLING ||GetBaseItemType(oWeapon)==BASE_ITEM_THROWINGAXE ||GetBaseItemType(oWeapon)==BASE_ITEM_TRIDENT ||GetBaseItemType(oWeapon)==BASE_ITEM_WARHAMMER ||GetBaseItemType(oWeapon)==BASE_ITEM_TWOBLADEDSWORD //||GetBaseItemType(oWeapon)==BASE_ITEM_WHIP // ON ne condisere pas le fouet comme arme? Escalavagisme etc... ) { AssignCommand(oBot, ClearAllActions(TRUE)); PlayVoiceChat(VOICE_CHAT_STOP, oBot); SpeakString("*!*",TALKVOLUME_TALK); DelayCommand(2.0,SpeakString("Heh! Vous! Le port d'armes est strictement interdit! Veuillez Retirer vos armes!",TALKVOLUME_TALK)); SetFacingPoint(GetPosition(oPC)); // On regarde le Joueur AssignCommand(oBot,ActionForceFollowObject(oPC, 1.0)); DelayCommand(1.9,AssignCommand(oPC, ClearAllActions(TRUE))); DelayCommand(2.0,AssignCommand(oPC,ActionUnequipItem(oWeapon)));// On de-equipe de l'arme portee DelayCommand(2.0,AssignCommand(oPC,ActionUnequipItem(oWeapon2)));// On de-equipe de l'arme portee 2 SetLocalInt(oBot, "_ISPOKEN", TRUE); DelayCommand(6.0,DeleteLocalInt(oBot, "_ISPOKEN") ); DelayCommand(8.0,WalkWayPoints()); return; // On quitte le scripte } }
////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////// if(GetIsObjectValid(oArmor) && nPCCharisme > 3 && !GetIsObjectValid(oCasque) && (sTag!="_IVROG" )) // LE JOUEUR SE BALADE NORMALEMENT SANS CASQUE et le JOUEUR(SE) ET PARTICULIEREMENT BEAU/BELLE et n'est pas ivre { if(sTag=="_NOBLE" ) { if (nGenderPC == GENDER_FEMALE && nGenderNPC == GENDER_MALE ) { sTalk="*Semble très attiré par "; } else if (nGenderNPC == GENDER_FEMALE && nGenderPC == GENDER_MALE) { sTalk="*Lance un regard très chaleureux à "; } else { sTalk="Lance un sourrire chaleureux et discret à "; } } else if(sTag=="_MOYEN") { if (nGenderPC == GENDER_FEMALE && nGenderNPC == GENDER_MALE ) { sTalk="*Regarde non sans attention la silhouette de "; } else if (nGenderNPC == GENDER_FEMALE && nGenderPC == GENDER_MALE) { sTalk="*Semble marquée par la présence de "; } else { sTalk="*Ne reste pas insensible à la présence de "; } } else if(sTag=="_PAUVR") { if (nGenderPC == GENDER_FEMALE && nGenderNPC == GENDER_MALE) { sTalk="*Aguiché par la shilouette de "; } else if (nGenderNPC == GENDER_FEMALE && nGenderPC == GENDER_MALE) { sTalk="*Semble étonée de la présence de "; } else { sTalk="*Regarde bizarrement "; } } else { sTalk="*Ne reste pas insensible à la présence de "; }
AssignCommand(oBot, ClearAllActions(TRUE)); SetFacingPoint(GetPosition(oPC)); // On regarde le Joueur DelayCommand(2.0,SetFacing(fDirNPC)); // On reprends la position initiale SpeakString(sTalk+sName+" *", TALKVOLUME_TALK); SetLocalInt(oBot, "_ISPOKEN", TRUE); DelayCommand(_ANTI_SPAM_DELAY+IntToFloat(d10(1)),DeleteLocalInt(oBot, "_ISPOKEN") ); DelayCommand(8.0,WalkWayPoints()); return; // On quitte le scripte } ////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////// if(GetIsObjectValid(oArmor) && nPCCharisme < -1 && !GetIsObjectValid(oCasque)&& (sTag!="_IVROG" )) // LE JOUEUR SE BALADE NORMALEMENT SANS CASQUE et le JOUEUR(SE) ET PARTICULIEREMENT REPOUSSANT(E) le pnj n'est pas ivre { if(sTag=="_NOBLE" ) { if (nGenderPC == GENDER_FEMALE && nGenderNPC == GENDER_MALE ) { sTalk="Seigneur quel immonde... *En regardant "; } else if (nGenderNPC == GENDER_FEMALE && nGenderPC == GENDER_MALE) { sTalk="*Met une main devant sa bouche comme par dégoût en voyant "; } else { sTalk="*Semble intrigué de la mochetée de "; } } else if(sTag=="_MOYEN") { if (nGenderPC == GENDER_FEMALE && nGenderNPC == GENDER_MALE ) { sTalk="*Semble dégoûté à la vue de "; } else if (nGenderNPC == GENDER_FEMALE && nGenderPC == GENDER_MALE) { sTalk="*Regarde avec un peu de dégoût le visage de "; } else { sTalk="*Ne reste pas insensible à la laideur de "; } } else if(sTag=="_PAUVR") { if (nGenderPC == GENDER_FEMALE && nGenderNPC == GENDER_MALE) { sTalk="*Amusé que quelqu'un soit aussi laid que "; } else if (nGenderNPC == GENDER_FEMALE && nGenderPC == GENDER_MALE) { sTalk="*Regarde avec un peu de dégoût le visage de "; } else { sTalk="*Regarde bizarrement "; } } else { sTalk="*Ne reste pas insensible à la laideur repoussante de "; }
AssignCommand(oBot, ClearAllActions(TRUE)); SetFacingPoint(GetPosition(oPC)); // On regarde le Joueur DelayCommand(2.0,SetFacing(fDirNPC)); // On reprends la position initiale SpeakString(sTalk+sName+" *", TALKVOLUME_TALK); SetLocalInt(oBot, "_ISPOKEN", TRUE); DelayCommand(_ANTI_SPAM_DELAY+IntToFloat(d10(1)),DeleteLocalInt(oBot, "_ISPOKEN") ); DelayCommand(8.0,WalkWayPoints()); return; // On quitte le scripte } ////////////////////////////////////////////////////////////////////////////////
/* Principe de l'ivrogne : il est saoul et dit n'importe koi il forme des phrases qui n'ont pas forcement de sens, il melange tout et agit n'importe comment. :)
nous formons les phrases ainsi :
1ere partie : un sujet d'action 2eme partie : une action 3eme partie : un lieu d'action */ if(sTag =="_IVROG")// UN IVROGNE! { string sNimportKoi1; string sNimportKoi2; string sNimportKoi3;
effect eVomi = EffectVisualEffect(VFX_COM_BLOOD_CRT_GREEN); effect eVomi2 = EffectVisualEffect(VFX_COM_BLOOD_LRG_GREEN);
if(d4(1)==4) // une chance sur 4 de vomir ^^ { PlayAnimation(ANIMATION_LOOPING_PAUSE_DRUNK, 1.0, 6.0); SpeakString("ooh.. Je ne me sent pas très bien...", TALKVOLUME_TALK); DelayCommand(4.0, SpeakString("ooh.lala.. Je vais.. *beurp*...hmm..", TALKVOLUME_TALK)); DelayCommand(6.0,PlayAnimation(ANIMATION_LOOPING_DEAD_FRONT, 1.0, 2.0)); DelayCommand(6.0,ApplyEffectToObject(DURATION_TYPE_INSTANT, eVomi2, oBot)); DelayCommand(6.0,ApplyEffectToObject(DURATION_TYPE_INSTANT, eVomi, oBot)); DelayCommand(6.0, SpeakString("BWAARgrGRARRWARRFGggggggghhh....", TALKVOLUME_TALK)); return; }
switch (d20(1)) {
case 1 : sNimportKoi1 = "L'autre jour' euh, un chien, "; break; case 2 : sNimportKoi1 = "Mais oui! Un arbre, "; break; case 3 : sNimportKoi1 = "Tu crois quoi? Un oiseau, "; break; case 4 : sNimportKoi1 = "L'ancien ami de mon ami, "; break; case 5 : sNimportKoi1 = "Hihi, il était une fois un ours, qui "; break; case 6 : sNimportKoi1 = "Et l'autre sorcière, "; break; case 7 : sNimportKoi1 = "Pff, la princess, "; break; case 8 : sNimportKoi1 = "Ca fait deux ans que le chef de la garde, "; break; case 9 : sNimportKoi1 = "La montagne, "; break; case 10 : sNimportKoi1 = "He ho! Tu m'écoutes?? La maison de mon frere, "; break; case 11 : sNimportKoi1 = "Le Cheval du roi, "; break; case 12 : sNimportKoi1 = "Ehoo..Le tavernier, "; break; case 13 : sNimportKoi1 = "La truie de ma chèvre, "; break; case 14 : sNimportKoi1 = "Eeeh..M'fils qui a vingt cinq bras et deux dent, "; break; case 15 : sNimportKoi1 = "Moi j'gagne ma vie! Je suis très rich ...Ehhh pas comme' Roger qui, "; break; case 16 : sNimportKoi1 = "Quoi?! Moi aussi j'avais un chat, "; break; case 17 : sNimportKoi1 = "Le serpent de notre armée, hum... Oui c'est ça, le chef-serpent, "; break; case 18 : sNimportKoi1 = "Oui!! Parfaitement!! Il "; break; case 19 : sNimportKoi1 = "Ben non je savais pas qu'il "; break; case 20 : sNimportKoi1 = "Cet homme est fou!! "; break; }
switch (d20(1)) {
case 1 : sNimportKoi2 = "mange des pommes "; break; case 2 : sNimportKoi2 = "tue des enfants "; break; case 3 : sNimportKoi2 = "coupe du bois "; break; case 4 : sNimportKoi2 = "pêche le poisson "; break; case 5 : sNimportKoi2 = "étrangle les chats "; break; case 6 : sNimportKoi2 = "joue aux dés "; break; case 7 : sNimportKoi2 = "bois toujours du vin "; break; case 8 : sNimportKoi2 = "invoque le diable "; break; case 9 : sNimportKoi2 = "écrase les gnomes "; break; case 10 : sNimportKoi2 = "lance des mouches sur des loups qui dansent sur les dragons, ou des dragons sur des mouches qui lance des loups aux poules "; break; case 11 : sNimportKoi2 = "chante comme un Nain "; break; case 12 : sNimportKoi2 = "mange du foin "; break; case 13 : sNimportKoi2 = "danse tous les jours "; break; case 14 : sNimportKoi2 = "a perdu la tête et bois de l'alcool "; break; case 15 : sNimportKoi2 = "se lève toujours le matin sans savoir pourquoi "; break; case 16 : sNimportKoi2 = "Quoi?! Moi aussi j'avais un chat, "; break; case 17 : sNimportKoi2 = "entends des voix qui lui disent d'aller "; break; case 18 : sNimportKoi2 = "crois que les oiseaux existent "; break; case 19 : sNimportKoi2 = "mange des oeufs de poissons-volants "; break; case 20 : sNimportKoi2 = "adore jouer au bilboquet "; break; } switch (d20(1)) {
case 1 : sNimportKoi3 = "dans la forêt."; break; case 2 : sNimportKoi3 = "sous l'eau."; break; case 3 : sNimportKoi3 = "derrière les montagnes."; break; case 4 : sNimportKoi3 = "dans la cave du roi."; break; case 5 : sNimportKoi3 = "sous la taverne."; break; case 6 : sNimportKoi3 = "dans notre temple!"; break; case 7 : sNimportKoi3 = "sur les arbres!"; break; case 8 : sNimportKoi3 = "sur la palce de ville, la nuit!!"; break; case 9 : sNimportKoi3 = "dans une grotte derrière la forêt!!"; break; case 10 : sNimportKoi3 = "dans les champs de blés!"; break; case 11 : sNimportKoi3 = "derrière l'arène."; break; case 12 : sNimportKoi3 = "sur des tonneaux de bières...Non?"; break; case 13 : sNimportKoi3 = "et pis voilà quoi..."; break; case 14 : sNimportKoi3 = "a perdu la tête et bois de l'alcool "; break; case 15 : sNimportKoi3 = "se lève toujours le matin sans savoir pourquoi "; break; case 16 : sNimportKoi3 = "maitenant... Peut être dans les égouts..."; break; case 17 : sNimportKoi3 = "baaah... sur le toît de ta maison... si si.."; break; case 18 : sNimportKoi3 = "tu ne l'aurais pas vu?! hé c'est important!"; break; case 19 : sNimportKoi3 = "sous sa tente... qui est volante."; break; case 20 : sNimportKoi3 = "sous le bistrot. Si si je l'ai vu."; break; } PlayAnimation(ANIMATION_LOOPING_PAUSE_DRUNK, 1.0, 6.0); AssignCommand(oBot, ClearAllActions(TRUE)); SetFacingPoint(GetPosition(oPC)); // On regarde le Joueur DelayCommand(2.0,SetFacing(fDirNPC)); // On reprends la position initiale SpeakString(sNimportKoi1+sNimportKoi2+sNimportKoi3+" *Hic*", TALKVOLUME_TALK); SetLocalInt(oBot, "_ISPOKEN", TRUE); DelayCommand(_ANTI_SPAM_DELAY+IntToFloat(d10(1)),DeleteLocalInt(oBot, "_ISPOKEN") ); DelayCommand(8.0,WalkWayPoints()); AssignCommand(oBot,PlayVoiceChat(VOICE_CHAT_LAUGH, oBot)); return; // On quitte le scripte }
}
Ce scripte est génial, mais ne s'active qu'une fois quand le joueur est aperçu, auriez vous une astuce (je préfère éviter le OHB).
|