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 19:27:57
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 |
xelone Acolyte Messages: 39 |
j'ai trois scripts a mettre dans le OnClientEnter, peut-on m'aider a fusionner tout ca? voici les 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. NWScript :
// Verifie si les joueurs n'ont pas trop d'ecart de lvl dans un groupe(ici 5lvl) void FireAMember(object oAVirer, object oLeader) { string report; if (GetIsPC(oAVirer)) SendMessageToPC(oAVirer,"Votre niveau ne vous permet pas d'appartenir a ce groupe"); SendMessageToPC(oLeader,GetName(oAVirer)+" doit quitter le groupe."); if (GetIsPC(oAVirer)) { report="[PARTY] "+GetName(oAVirer)+ " a ete ejecte du groupe!"; RemoveFromParty(oAVirer); effect eVisualEffect=EffectVisualEffect(VFX_FNF_NATURES_BALANCE); ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eVisualEffect, oAVirer, 4.0); } else { effect eDeath=EffectDeath(TRUE, TRUE); // Mort spectaculaire report="[PARTY] "+GetName(oAVirer)+ " a donc ete desintegre !"; ApplyEffectToObject(DURATION_TYPE_INSTANT, eDeath, oAVirer); } WriteTimestampedLogEntry(report); SendMessageToAllDMs(report); } void PCLoop() { object oPC = OBJECT_SELF; object oLeader = GetFactionLeader(oPC); int iDelay; if (oPC == oLeader) // Desormais, traitement effectue seulement sur les leaders (evite de retraiter souvent les gros groupes) { object oMinFaction = GetFactionWeakestMember(oPC, FALSE); object oMaxFaction = GetFactionStrongestMember(oPC, FALSE); if (oMinFaction!=oMaxFaction && GetIsObjectValid(oMinFaction) && GetIsObjectValid(oMaxFaction)) // PJ seul ou erreur -> aucun traitement { int iLvMin = GetHitDice(oMinFaction); int iLvMax = GetHitDice(oMaxFaction); int iMinPCLevel = iLvMax-5; //lv5: lv 2 mini - lv10: 6 mini - lv15: 10 mini - lv20: 13 mini int iMinNPCLevel = iLvMax-5-iLvMax/3; //lv5: lv 1 mini - lv10: 2 mini - lv15: 5 mini - lv20: 9 mini if (iLvMin < iMinPCLevel) // Il y a peut-etre des membres a exclure (sauf si animaux) { // Il faut exclure le membre le plus faible string report="[PARTY] Groupe illegal: "+GetName(oMinFaction)+ " est lv"+IntToString(iLvMin)+", "+GetName(oMaxFaction)+" est lv"+IntToString(iLvMax); int bFound = FALSE; if (GetHitDice(oLeader)<iMinPCLevel) { WriteTimestampedLogEntry(report); FireAMember(oMaxFaction, oLeader); bFound = TRUE; // DelayCommand(2.0, PCLoop()); // Loop again // return; } else { object oCurrentMember = GetFirstFactionMember(oLeader,FALSE); while (GetIsObjectValid(oCurrentMember) && !bFound) // On en vire un seul a la fois au maximum { int iHD = GetHitDice(oCurrentMember); if (GetIsPC(oCurrentMember) && GetIsPlayableRacialType(oCurrentMember)) // PJ ( distinguer d'un familier, pour lequel GetIsPC est... TRUE ! { if (iHD<iMinPCLevel) { // if (!bFound) // { bFound = TRUE; WriteTimestampedLogEntry(report); // } FireAMember(oCurrentMember, oLeader); } } else // NPC { if (iHD<iMinNPCLevel) { // if (!bFound) // { bFound = TRUE; WriteTimestampedLogEntry(report); // } FireAMember(oCurrentMember, oLeader); } } if (!bFound) oCurrentMember = GetNextFactionMember(oCurrentMember, FALSE); // Inutile si le membre est deja detruit } } if (bFound) iDelay = 4; // Leader groupe en infraction -> on recommence rapidement else iDelay = 12; // Leader groupe avec plus de 4 lv mais OK -> groupe a surveiller } else iDelay = 20; // Leader groupe OK (4 lv au plus) -> surveillance relachee } else // joueur seul ou erreur iDelay = 10; // Pas trop long, car convocation bestioles a surveiller } else // Pas un leader (membre d'un groupe non leader) iDelay = 60; // Surveillance tres relachee DelayCommand(iDelay/2.0+Random(iDelay),PCLoop()); // On boucle entre iDelay/2 et iDelay*3/2 secondes plus tard (limiter le lag + eviter d'etre trop previsible) } void main() { if (GetIsDM(OBJECT_SELF)) { // Rien faire dans le cas d'un DM /* if (GetLocalObject(GetModule(), "No_Sanction")==1) // Sanctions actives if (GetLocalObject(GetModule(), "No_Sanction")!=1) // Sanctions actives { object item = GetObjectByTag("bm_nosanc tion",0); if (GetIsObjectValid(item)) { SetLocalObject(GetModule(), "No_Sanction_Item", item); SetLocalObject(GetModule(), "No_Sanction", 1); } }*/ } else // Player Loop - introduction delai variable - execute seulement la premire fois if (GetIsPC(OBJECT_SELF)) DelayCommand(10.0+Random(300)/10.0,PCLoop()); } NWScript :
void main() { object oPC = GetEnteringObject(); if !GetIsPC(oPC) { return(); } if HasItem(oPC, "anneau1") { AdjustReputation(oPC,GetObjectByTag("tagpnjbon "), 100); //Les PNJ de l'autre camp sont ses ennemis. AdjustReputation(oPC,GetObjectByTag("tagpnjmauvais"),-100); object oPJ = GetFirstPC(); { if HasItem(oPJ, "anneau2") { SetPCDislike(oPC,oPJ); } oPJ = GetNextPC(); } } if HasItem(oPC, "anneau2") { AdjustReputation(oPC,GetObjectByTag("tagpnjmauvais"), 100); //Les PNJ de l'autre camp sont ses ennemis. AdjustReputation(oPC,GetObjectByTag("tagpnjbon"),-100); object oPJ = GetFirstPC(); { if HasItem(oPJ, "anneau1") { SetPCDislike(oPC,oPJ); } oPJ = GetNextPC(); } } /* warning: 1 unclosed block {} */ et meme chose avec le OnAcquireItem : NWScript :
void main() { if !GetIsPC(oAcquirer) { return(); } if GetTag(oItem) = "anneau1" { AdjustReputation(oAcquirer,GetObjectByTag("tagpnjbon "), 100); //Les PNJ de l'autre camp sont ses ennemis. AdjustReputation(oAcquirer,GetObjectByTag("tagpnjmauvais"),-100); object oPJ = GetFirstPC(); { if HasItem(oPJ, "anneau2") { SetPCDislike(oAcquirer,oPJ); SetPCDislike(oPJ,oAcquirer); } oPJ = GetNextPC(); } return(); } if GetTag(oItem) = "anneau2" { AdjustReputation(oAcquirer,GetObjectByTag("tagpnjmauvais "), 100); //Les PNJ de l'autre camp sont ses ennemis. AdjustReputation(oAcquirer,GetObjectByTag("tagpnjbon"),-100); object oPJ = GetFirstPC(); { if HasItem(oPJ, "anneau1") { SetPCDislike(oAcquirer,oPJ); SetPCDislike(oPJ,oAcquirer); } oPJ = GetNextPC(); } return(); } } et NWScript : #include "i_tagtests" void main() { object oItem = GetModuleItemAcquired(); object oAcquirer = GetItemPossessor(oItem); if (GetIsNoDrop(oItem)) ExecuteScript("s_nodrop_pickup", oAcquirer); if (GetIsLore(oItem)) ExecuteScript("s_lore_pickup", oAcquirer); } |
Revenir en haut | |
Gorkk Site Admin Messages: 1768 Localisation: Ici et ailleurs |
Normalement c'est pas bien compliqué :
1/ Renommer les variables utilisées dans plusieurs des scripts pour éviter les conflits 2/ mettre tous les include au début 3/ copier dans le void main du premier script les informations contenues dans le void main des deux autres. A priori ça devrait marcher nickel _________________ Sacred - FR - La Bibliothèque de Neverwinter - Titan Quest - FR Bloqué dans SoU ? La solution n'est pas loin... HotU vous pose des problèmes ? Une seule solution |
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