| Partage de l'xp | |
|
|
|
Auteur | Message |
---|
Ba'elzaden Maitre d'Aelor
Nombre de messages : 909 Date d'inscription : 15/12/2005
| Sujet: Partage de l'xp Mar 20 Déc - 12:46 | |
| Mes recherches m'ont permis de trouver ceci: http://nwvault.ign.com/View.php?view=scripts.Detail&id=43 et http://nwvault.ign.com/View.php?view=scripts.Detail&id=40 Malheuresement ma maitrise de l'anglais est trop limité pour que je sache si c'est bien ce que je veux. | |
|
| |
Gimli Oakenshield L'ignorant en Hardware
Nombre de messages : 783 Localisation : Près de mon ordi ! Date d'inscription : 15/12/2005
| Sujet: Re: Partage de l'xp Mar 20 Déc - 13:04 | |
| Oki, pour le premier, lien en fait, c'est juste une répartition différente des xp en fonction de ton niveau ... Ce script reprend le partage des xp a la maniere Advanced Dungon & Dragon ...
Pour ce qui est du second, je vien de relire attentivement et je me suis apperçut qu'en fait ce système permet de donner de l'xp par exemple quand on déverrouille un cofre ou ce genre de conn*** et donc est incopatible avec ce que tu veux faire ... | |
|
| |
Ba'elzaden Maitre d'Aelor
Nombre de messages : 909 Date d'inscription : 15/12/2005
| Sujet: Re: Partage de l'xp Mar 20 Déc - 13:40 | |
| C'est dur, je vais retourner chercher. | |
|
| |
Gimli Oakenshield L'ignorant en Hardware
Nombre de messages : 783 Localisation : Près de mon ordi ! Date d'inscription : 15/12/2005
| Sujet: Re: Partage de l'xp Mar 20 Déc - 13:53 | |
| Okay, met tes liens ici Au cas ou certain pourraient être interressant ... | |
|
| |
Gimli Oakenshield L'ignorant en Hardware
Nombre de messages : 783 Localisation : Près de mon ordi ! Date d'inscription : 15/12/2005
| Sujet: Re: Partage de l'xp Dim 8 Jan - 14:27 | |
| J'ai trouvé ceci qui pourrait être interrressant si modifé, mais bon, a voir ... | |
|
| |
Gimli Oakenshield L'ignorant en Hardware
Nombre de messages : 783 Localisation : Près de mon ordi ! Date d'inscription : 15/12/2005
| Sujet: Re: Partage de l'xp Dim 8 Jan - 15:09 | |
| Logiquement avec ce que je vient de faire, on gagne 15 % d'xp en plus quand on est deux ... Voila, le probleme, c'est qu'il est a mettre dans le OnDeath des créatures que l'on veut? Pour pallier à ce problème, tu peut remplacer le fichier par défaut par celui-ci ... Mais c'est pas super a mon avis ... je vais voir s'il y a une autre alternative ... - Code:
-
//:://///////////////////////////////////////////// //:: Default: On Death //:: OnDeath Event for Creatures //:: Modified By: Brian J. Kittrell //::////////////////////////////////////////////// #include "NW_I0_GENERIC" #include "x2_inc_compon" #include "x0_i0_spawncond"
//:: MAXHP represents the maximum number of //:: hit points your strongest monster has. //:: Set it high to make sure monsters with //:: a lower hit point value than what is defined //:: here are killed by the script.
int MAXHP = 90000;
//:: End Variable Declaration
void main() { object oKiller = GetLastKiller(); float fModif = 0.3;
//::if killer is PC, henchman, familiar and such or a trap set by a PC if (GetIsPC(oKiller) || GetIsPC(GetMaster(oKiller)) || GetIsPC(GetTrapCreator(oKiller))) { int nClass = GetLevelByClass(CLASS_TYPE_COMMONER); int nAlign = GetAlignmentGoodEvil(OBJECT_SELF); if(nClass > 0 && (nAlign == ALIGNMENT_GOOD || nAlign == ALIGNMENT_NEUTRAL)) { AdjustAlignment(oKiller, ALIGNMENT_EVIL, 5); } SpeakString("NW_I_AM_DEAD", TALKVOLUME_SILENT_TALK); //Shout Attack my target, only works with the On Spawn In setup SpeakString("NW_ATTACK_MY_TARGET", TALKVOLUME_SILENT_TALK);
float BaseMonEXP = 25.0;
//:: The bonus experience based on difference of CR of monster vs. //:: Levels of Party. float BonusEXP = 15.0;
// First get all the members of the party & make sure only party members // in the area of the kill will get experience. int NumOfParty = 0; float PartyLevelSum = 0.0; object oPartyMember = GetFirstFactionMember(oKiller, TRUE); while(GetIsObjectValid(oPartyMember) && GetArea(OBJECT_SELF) == GetArea(oPartyMember)) { NumOfParty++; PartyLevelSum += GetCharacterLevel(oPartyMember); oPartyMember = GetNextFactionMember(oKiller, TRUE); } float PartyAvgLvl = PartyLevelSum / NumOfParty ; //Calculate Adjustment Value float AdjustValue = GetChallengeRating(OBJECT_SELF) / PartyAvgLvl; float FinalMonValue; //Determine Final Experience Value if (AdjustValue == 0.0) { FinalMonValue = GetChallengeRating(OBJECT_SELF) * BaseMonEXP; } else { if (AdjustValue < 1.0) { FinalMonValue = BaseMonEXP * AdjustValue; } else { FinalMonValue = BaseMonEXP + (GetChallengeRating(OBJECT_SELF) - PartyAvgLvl) * BonusEXP; } } //Determine the value of the Split EXP float NbPJ = 0.0; float SplitFinalEXP =0.0; if(NumOfParty == 2) { NbPJ = NbPJ + NumOfParty - fModif ; SplitFinalEXP = SplitFinalEXP + FinalMonValue / NbPJ; } else { SplitFinalEXP = SplitFinalEXP + FinalMonValue / NumOfParty; } int SFEint = FloatToInt(SplitFinalEXP); //Distribute EXP to all PCs in the Party oPartyMember = GetFirstFactionMember(oKiller, TRUE); while (GetIsObjectValid(oPartyMember) && GetArea(OBJECT_SELF) == GetArea(oPartyMember)) { GiveXPToCreature(oPartyMember, SFEint); oPartyMember = GetNextFactionMember(oKiller, TRUE); } //:: to remove the double experience messages ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectResurrection(), OBJECT_SELF); ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDamage(MAXHP), OBJECT_SELF); //:: this causes the death event to fire twice... //:: not anymore... if(!GetLocalInt(OBJECT_SELF, "DoOnce")) { if(GetSpawnInCondition(NW_FLAG_DEATH_EVENT)) { SignalEvent(OBJECT_SELF, EventUserDefined(1007)); SetLocalInt(OBJECT_SELF, "DoOnce", 1); } } craft_drop_items(oKiller); return; } }
| |
|
| |
Gimli Oakenshield L'ignorant en Hardware
Nombre de messages : 783 Localisation : Près de mon ordi ! Date d'inscription : 15/12/2005
| Sujet: Re: Partage de l'xp Dim 8 Jan - 17:00 | |
| Bon, alors, tu copie le script "x2_def_ondeath" et tu le sauve sous un autre nom que tu saura retrouver puis tu met celui ci avec le nom "x2_def_ondeath" : - Code:
-
//:://///////////////////////////////////////////// //:: Default: On Death //:: OnDeath Event for Creatures //:: Modified By: Brian J. Kittrell //::////////////////////////////////////////////// #include "NW_I0_GENERIC" #include "x2_inc_compon" #include "x0_i0_spawncond"
//:: MAXHP represents the maximum number of //:: hit points your strongest monster has. //:: Set it high to make sure monsters with //:: a lower hit point value than what is defined //:: here are killed by the script.
int MAXHP = 90000;
//:: End Variable Declaration
void main() { object oKiller = GetLastKiller(); float fModif = 1.25;
//::if killer is PC, henchman, familiar and such or a trap set by a PC if (GetIsPC(oKiller) || GetIsPC(GetMaster(oKiller)) || GetIsPC(GetTrapCreator(oKiller))) { int nClass = GetLevelByClass(CLASS_TYPE_COMMONER); int nAlign = GetAlignmentGoodEvil(OBJECT_SELF); if(nClass > 0 && (nAlign == ALIGNMENT_GOOD || nAlign == ALIGNMENT_NEUTRAL)) { AdjustAlignment(oKiller, ALIGNMENT_EVIL, 5); } SpeakString("NW_I_AM_DEAD", TALKVOLUME_SILENT_TALK); //Shout Attack my target, only works with the On Spawn In setup SpeakString("NW_ATTACK_MY_TARGET", TALKVOLUME_SILENT_TALK);
float BaseMonEXP = 25.0;
//:: The bonus experience based on difference of CR of monster vs. //:: Levels of Party. float BonusEXP = 15.0;
// First get all the members of the party & make sure only party members // in the area of the kill will get experience. int NumOfParty = 0; float PartyLevelSum = 0.0; object oPartyMember = GetFirstFactionMember(oKiller, TRUE); while(GetIsObjectValid(oPartyMember) && GetArea(OBJECT_SELF) == GetArea(oPartyMember)) { NumOfParty++; PartyLevelSum += GetCharacterLevel(oPartyMember); oPartyMember = GetNextFactionMember(oKiller, TRUE); } float PartyAvgLvl = PartyLevelSum / NumOfParty ; //Calculate Adjustment Value float AdjustValue = GetChallengeRating(OBJECT_SELF) / PartyAvgLvl; float FinalMonValue; //Determine Final Experience Value if (AdjustValue == 0.0) { FinalMonValue = GetChallengeRating(OBJECT_SELF) * BaseMonEXP; } else { if (AdjustValue < 1.0) { FinalMonValue = BaseMonEXP * AdjustValue; } else { FinalMonValue = BaseMonEXP + (GetChallengeRating(OBJECT_SELF) - PartyAvgLvl) * BonusEXP; } } //Determine the value of the Split EXP float NbPJ = 0.0; float SplitFinalEXP =0.0; if(NumOfParty == 2) { NbPJ = NbPJ + NumOfParty - fModif ; SplitFinalEXP = SplitFinalEXP + FinalMonValue / NbPJ; } else { SplitFinalEXP = SplitFinalEXP + FinalMonValue / NumOfParty; } int SFEint = FloatToInt(SplitFinalEXP); //Distribute EXP to all PCs in the Party oPartyMember = GetFirstFactionMember(oKiller, TRUE); while (GetIsObjectValid(oPartyMember) && GetArea(OBJECT_SELF) == GetArea(oPartyMember)) { GiveXPToCreature(oPartyMember, SFEint); oPartyMember = GetNextFactionMember(oKiller, TRUE); } //:: to remove the double experience messages ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectResurrection(), OBJECT_SELF); ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDamage(MAXHP), OBJECT_SELF); //:: this causes the death event to fire twice... //:: not anymore... if(!GetLocalInt(OBJECT_SELF, "DoOnce")) { if(GetSpawnInCondition(NW_FLAG_DEATH_EVENT)) { SignalEvent(OBJECT_SELF, EventUserDefined(1007)); SetLocalInt(OBJECT_SELF, "DoOnce", 1); } } craft_drop_items(oKiller); return; } }
| |
|
| |
Gimli Oakenshield L'ignorant en Hardware
Nombre de messages : 783 Localisation : Près de mon ordi ! Date d'inscription : 15/12/2005
| Sujet: Re: Partage de l'xp Dim 8 Jan - 18:56 | |
| Bon, en fait, laisse tomber ce script pour l'instant ... | |
|
| |
Gimli Oakenshield L'ignorant en Hardware
Nombre de messages : 783 Localisation : Près de mon ordi ! Date d'inscription : 15/12/2005
| Sujet: Re: Partage de l'xp Mer 25 Jan - 16:53 | |
| Je souhaiterais savoir le message d'erreur qui apparaitre lorsque ca plante le script d'xp ... | |
|
| |
Ba'elzaden Maitre d'Aelor
Nombre de messages : 909 Date d'inscription : 15/12/2005
| Sujet: Re: Partage de l'xp Mer 25 Jan - 21:25 | |
| - Citation :
- Script nw_c2_defautl7, OID 80000e38, Tag: NW_GNTMOUNT, ERREUR: DIVIDE BY ZERO
Sahcnat que le script es tle script de ondeath (logique) et le tag celui du monstre que j'ai tué quand c'est apparu: un géant des montagnes. | |
|
| |
Gimli Oakenshield L'ignorant en Hardware
Nombre de messages : 783 Localisation : Près de mon ordi ! Date d'inscription : 15/12/2005
| Sujet: Re: Partage de l'xp Dim 29 Jan - 22:37 | |
| Oki merci ... Voici un script (que je n'ai pas encore testé) Mais qui me semble correct : (Remerciement a milti ) - Code:
-
//:://///////////////////////////////////////////////// //:: NW_C2_DEFAULT7 /* Default OnDeath event handler for NPCs.
Adjusts killer's alignment if appropriate and alerts allies to our death. */ /* Intégration d'un système d'expérience évolué par Anthraxcite et Drakolight */ /* Modifie par Gimli_Oakenshield */ //::///////////////////////////////////////////////////
#include "x2_inc_compon" #include "x0_i0_spawncond" #include "x0_i0_henchman"
//Donne le nombre de joueur du groupe de oPC prsents dans la zone int GetNumberPartyMembersInArea(object oPC) { int nMembers = 0; object oChiefArea = GetArea(oPC); object oPartyMem = GetFirstFactionMember(oPC, TRUE); while (GetIsObjectValid(oPartyMem)) { if(GetArea(oPartyMem)==oChiefArea) { nMembers++; } oPartyMem = GetNextFactionMember(oPC, TRUE); } return nMembers; }
//Donne la moyenne des facteurs de puissance des joueurs //A la creature qui execute ce script float GetLvlAverage(object oPC) { int i = 1; float fTotalLVL = IntToFloat(GetCharacterLevel(oPC)); object oMem = GetFirstFactionMember(oPC, TRUE); while(GetIsObjectValid(oMem)) { fTotalLVL = fTotalLVL + GetCharacterLevel(oMem); i++; oMem = GetNextFactionMember(oPC, TRUE); }
if(i>0) { return fTotalLVL/IntToFloat(i); } else { return -1.0; } }
//Distribue un montant d'xp aux joueurs se trouvant dans la zone void DistribXP(object oKiller, int nXP, float fBonusXPGroupe = 0.15) { object oChiefKiller = GetFactionLeader(oKiller); float PercentBonusXpForGroupKiller = 1.0 - fBonusXPGroupe + GetNumberPartyMembersInArea(oKiller)*fBonusXPGroupe; int nXPFromCreature = nXP; float nXPTotal = nXPFromCreature * PercentBonusXpForGroupKiller; float nXPParJoueur = nXPTotal/GetNumberPartyMembersInArea(oKiller); object oPC = oKiller; GiveXPToCreature(oPC,FloatToInt(nXPParJoueur)); object oMem = GetFirstFactionMember(oPC, TRUE); while(GetIsObjectValid(oMem) && GetArea(oPC) == GetArea(OBJECT_SELF)) { GiveXPToCreature(oPC,FloatToInt(nXPParJoueur)); oMem = GetNextFactionMember(oPC, TRUE); } }
//Calcule le montant d'xp a distribuer suivant la moyenne des lvl //des attaquants calcules basés sur la table des xp int GetXPToDistrib(float fLvlAverage) { int nLvlMob = GetCharacterLevel(OBJECT_SELF); float fDifLvl = nLvlMob-fLvlAverage; int nXp; if(fDifLvl<0.0) { //lvl mob + (xp du lvl/nb mob a tuer/diflvl+1 nXp = FloatToInt(nLvlMob+((nLvlMob*1000)/((nLvlMob-1)*10+250))/(fLvlAverage-nLvlMob+1)); } else { nXp = FloatToInt(nLvlMob+((nLvlMob*1000)/((nLvlMob-1)*10+250))*(fDifLvl+1)); } return nXp; }
void main() { int nClass = GetLevelByClass(CLASS_TYPE_COMMONER); int nAlign = GetAlignmentGoodEvil(OBJECT_SELF); object oKiller = GetLastKiller();
// If we're a good/neutral commoner, // adjust the killer's alignment evil if(nClass > 0 && (nAlign == ALIGNMENT_GOOD || nAlign == ALIGNMENT_NEUTRAL)) { AdjustAlignment(oKiller, ALIGNMENT_EVIL, 5); }
//Systeme d'xp pour syloan par Drakolight et Anthraxcite if(!GetIsPC(oKiller) && !GetIsDM(oKiller) && GetMaster(oKiller)!=OBJECT_INVALID) { oKiller = GetMaster(oKiller); } if(!GetIsPC(oKiller)) return;
float fLvlAverage = GetLvlAverage(oKiller); int nXP; if(fLvlAverage!=-1.0) { nXP = GetXPToDistrib(fLvlAverage); DistribXP(oKiller, nXP); } else { nXP = GetXPToDistrib(IntToFloat(GetCharacterLevel(oKiller))); GiveXPToCreature(oKiller, nXP); } //Fin du systeme d'xp
// Call to allies to let them know we're dead SpeakString("NW_I_AM_DEAD", TALKVOLUME_SILENT_TALK);
//Shout Attack my target, only works with the On Spawn In setup SpeakString("NW_ATTACK_MY_TARGET", TALKVOLUME_SILENT_TALK);
// NOTE: the OnDeath user-defined event does not // trigger reliably and should probably be removed if(GetSpawnInCondition(NW_FLAG_DEATH_EVENT)) { SignalEvent(OBJECT_SELF, EventUserDefined(1007)); } craft_drop_items(oKiller); }
Dernière édition par le Mar 31 Jan - 19:36, édité 1 fois | |
|
| |
Ba'elzaden Maitre d'Aelor
Nombre de messages : 909 Date d'inscription : 15/12/2005
| Sujet: Re: Partage de l'xp Dim 29 Jan - 23:23 | |
| Avant de l'intégrer j'aimerait ce que fait la partie d'xp du aux dommages. | |
|
| |
Gimli Oakenshield L'ignorant en Hardware
Nombre de messages : 783 Localisation : Près de mon ordi ! Date d'inscription : 15/12/2005
| Sujet: Re: Partage de l'xp Mar 31 Jan - 19:33 | |
| - Citation :
- Avant de l'intégrer j'aimerait ce que fait la partie d'xp du aux dommages.
J'a rien compris mais je pense que tu veuxt savoir a prpos de ce que tu a lut sur les commentaires ... C'est une erreur de ma part j'ai tout enlevé en ce qui conserne les dégats infligés ... Ca a pas été facile mais c'est bon [/code] | |
|
| |
Gimli Oakenshield L'ignorant en Hardware
Nombre de messages : 783 Localisation : Près de mon ordi ! Date d'inscription : 15/12/2005
| Sujet: Re: Partage de l'xp Mar 31 Jan - 19:37 | |
| Bug corrigé
(Il donnais des XP a tous les membre du groupe même ceux qui n'étaient pas dans la zone ...) | |
|
| |
Ba'elzaden Maitre d'Aelor
Nombre de messages : 909 Date d'inscription : 15/12/2005
| Sujet: Re: Partage de l'xp Mar 31 Jan - 22:08 | |
| Tu pourrais faire en sorte maintenant que l'xp croit avec le nombre (ce qu'il fait actuellement) mais que à partir d'un certain nombre le chaos ambiant empeche le pj de gagner trop d'xp?
Exemple: 1pj: 100 2pj: 115 3: 130 4: 150 5: 125 6:100 7: 75 8: 50 9: 25 10: ben euh... rien^^ | |
|
| |
Gimli Oakenshield L'ignorant en Hardware
Nombre de messages : 783 Localisation : Près de mon ordi ! Date d'inscription : 15/12/2005
| Sujet: Re: Partage de l'xp Mer 1 Fév - 15:48 | |
| Euh ... Pas exactement avec ces valeurs là mais j'éssaie .. attend ... | |
|
| |
Ethelbert Génération spontanée
Nombre de messages : 647 Localisation : Lyon Date d'inscription : 11/01/2006
| Sujet: Re: Partage de l'xp Mer 1 Fév - 15:53 | |
| - Ba'elzaden a écrit:
- Tu pourrais faire en sorte maintenant que l'xp croit avec le nombre (ce qu'il fait actuellement) mais que à partir d'un certain nombre le chaos ambiant empeche le pj de gagner trop d'xp?
Exemple: 1pj: 100 2pj: 115 3: 130 4: 150 5: 125 6:100 7: 75 8: 50 9: 25 10: ben euh... rien^^ Euh ça veut dire qu'au-delà de 4 personnes dans un groupe, il est moins rentable de pexer ? On va faire des brigades de mousquetaires, alors ? Bon je sais que pexer n'est pas le but premier du module (heureusement d'ailleurs...), mais ne serait-il pas possible de faire stagter le niveau d'xp avant de le faire chuter ? Parce qu'en fait, je ne sais pas si la quête des Adams a été résolue par un grouep, mais j'avais envie à un moment ou à un autre de proposer une battue pour la résoudre. Donc on risquait d'être plus de 4 dans le groupe, à mon sens. Je sais bien que si cette animation peut se faire, la récompense en Xp sera surtout allouée par les DMs; mais le fond de ma pensée, c'est que si le module marche bien, les groupes de plus de quatre personnes risquent de ne pas être rares. Notamment si plus de quatre joueurs aiment bien jouer ensemble... Voilà, ce n'est que mon humble avis... | |
|
| |
Gimli Oakenshield L'ignorant en Hardware
Nombre de messages : 783 Localisation : Près de mon ordi ! Date d'inscription : 15/12/2005
| Sujet: Re: Partage de l'xp Mer 1 Fév - 16:10 | |
| Voila le script selon la vlonté de Ba'el Maintenant que je métrise bien le script je peux faire tout ce que vous voulez ! - Code:
-
//:://///////////////////////////////////////////////// //:: NW_C2_DEFAULT7 /* Default OnDeath event handler for NPCs.
Adjusts killer's alignment if appropriate and alerts allies to our death. */ /* Intégration d'un système d'expérience évolué par Anthraxcite et Drakolight */ /* Modifie par Gimli_Oakenshield */ //::///////////////////////////////////////////////////
#include "x2_inc_compon" #include "x0_i0_spawncond" #include "x0_i0_henchman"
//Donne le nombre de joueur du groupe de oPC prsents dans la zone int GetNumberPartyMembersInArea(object oPC) { int nMembers = 0; object oArea = GetArea(oPC); object oPartyMem = GetFirstFactionMember(oPC, TRUE); while (GetIsObjectValid(oPartyMem)) { if(GetArea(oPartyMem)==oArea) { nMembers++; } oPartyMem = GetNextFactionMember(oPC, TRUE); } return nMembers; }
//Donne la moyenne des facteurs de puissance des joueurs float GetLvlAverage(object oPC) { int i = 1; float fTotalLVL = IntToFloat(GetCharacterLevel(oPC)); object oMem = GetFirstFactionMember(oPC, TRUE); object oArea = GetArea(oPC); while(GetIsObjectValid(oMem)) { if(GetArea(oMem) == oArea) { fTotalLVL = fTotalLVL + GetCharacterLevel(oMem); i++; } oMem = GetNextFactionMember(oPC, TRUE); }
if(i>0) { return fTotalLVL/IntToFloat(i); } else { return -1.0; } }
//Distribue un montant d'xp aux joueurs se trouvant dans la zone void DistribXP(object oKiller, int nXP, float fBonusXPGroupe = 0.15) { object oChiefKiller = GetFactionLeader(oKiller); float PercentBonusXpForGroupKiller; int iNum = GetNumberPartyMembersInArea(oKiller); if(iNum == 0) PercentBonusXpForGroupKiller = 1.0; if(iNum >= 1 && iNum <= 4) PercentBonusXpForGroupKiller = 1.0 - fBonusXPGroupe + GetNumberPartyMembersInArea(oKiller)*fBonusXPGroupe; if(iNum >= 4 && iNum <= 8) PercentBonusXpForGroupKiller = 1.6 - (iNum-4)*0.25; if(iNum >= 8) PercentBonusXpForGroupKiller = 0.5; int nXPFromCreature = nXP; float nXPTotal = nXPFromCreature * PercentBonusXpForGroupKiller; float nXPParJoueur = nXPTotal/GetNumberPartyMembersInArea(oKiller); object oPC = oKiller; GiveXPToCreature(oPC,FloatToInt(nXPParJoueur)); object oMem = GetFirstFactionMember(oPC, TRUE); while(GetIsObjectValid(oMem) && GetArea(oPC) == GetArea(OBJECT_SELF)) { GiveXPToCreature(oPC,FloatToInt(nXPParJoueur)); oMem = GetNextFactionMember(oPC, TRUE); } }
//Calcule le montant d'xp a distribuer suivant la moyenne des lvl //des attaquants calcules basés sur la table des xp int GetXPToDistrib(float fLvlAverage) { int nLvlMob = GetCharacterLevel(OBJECT_SELF); float fDifLvl = nLvlMob-fLvlAverage; int nXp; if(fDifLvl<0.0) { //lvl mob + (xp du lvl/nb mob a tuer/diflvl+1 nXp = FloatToInt(nLvlMob+((nLvlMob*1000)/((nLvlMob-1)*10+250))/(fLvlAverage-nLvlMob+1)); } else { nXp = FloatToInt(nLvlMob+((nLvlMob*1000)/((nLvlMob-1)*10+250))*(fDifLvl+1)); } return nXp; }
void main() { int nClass = GetLevelByClass(CLASS_TYPE_COMMONER); int nAlign = GetAlignmentGoodEvil(OBJECT_SELF); object oKiller = GetLastKiller();
// If we're a good/neutral commoner, // adjust the killer's alignment evil if(nClass > 0 && (nAlign == ALIGNMENT_GOOD || nAlign == ALIGNMENT_NEUTRAL)) { AdjustAlignment(oKiller, ALIGNMENT_EVIL, 5); }
//Systeme d'xp pour syloan par Drakolight et Anthraxcite if(!GetIsPC(oKiller) && !GetIsDM(oKiller) && GetMaster(oKiller)!=OBJECT_INVALID) { oKiller = GetMaster(oKiller); } if(!GetIsPC(oKiller)) return;
float fLvlAverage = GetLvlAverage(oKiller); int nXP; if(fLvlAverage!=-1.0) { nXP = GetXPToDistrib(fLvlAverage); DistribXP(oKiller, nXP); } else { nXP = GetXPToDistrib(IntToFloat(GetCharacterLevel(oKiller))); GiveXPToCreature(oKiller, nXP); } //Fin du systeme d'xp
// Call to allies to let them know we're dead SpeakString("NW_I_AM_DEAD", TALKVOLUME_SILENT_TALK);
//Shout Attack my target, only works with the On Spawn In setup SpeakString("NW_ATTACK_MY_TARGET", TALKVOLUME_SILENT_TALK);
// NOTE: the OnDeath user-defined event does not // trigger reliably and should probably be removed if(GetSpawnInCondition(NW_FLAG_DEATH_EVENT)) { SignalEvent(OBJECT_SELF, EventUserDefined(1007)); } craft_drop_items(oKiller); } | |
|
| |
Ethelbert Génération spontanée
Nombre de messages : 647 Localisation : Lyon Date d'inscription : 11/01/2006
| Sujet: Re: Partage de l'xp Mer 1 Fév - 17:05 | |
| Bon alors il me faut: - un script capable de me donner les prochains numéros du tirage de la loterie nationale (effectué avec 7 jets sur un dé à 49 faces); - un script capable de faire arriver le livreur de pizzas dans les temps; - un script capable d'éviter que mon chat ne saute sur mon clavier quand je suis connecté.
Merci. | |
|
| |
Ba'elzaden Maitre d'Aelor
Nombre de messages : 909 Date d'inscription : 15/12/2005
| Sujet: Re: Partage de l'xp Mer 1 Fév - 17:25 | |
| - Citation :
- Euh ça veut dire qu'au-delà de 4 personnes dans un groupe, il est moins rentable de pexer ? On va faire des brigades de mousquetaires, alors ?
Bon je sais que pexer n'est pas le but premier du module (heureusement d'ailleurs...), mais ne serait-il pas possible de faire stagter le niveau d'xp avant de le faire chuter ? Parce qu'en fait, je ne sais pas si la quête des Adams a été résolue par un grouep, mais j'avais envie à un moment ou à un autre de proposer une battue pour la résoudre. Donc on risquait d'être plus de 4 dans le groupe, à mon sens. Je sais bien que si cette animation peut se faire, la récompense en Xp sera surtout allouée par les DMs; mais le fond de ma pensée, c'est que si le module marche bien, les groupes de plus de quatre personnes risquent de ne pas être rares. Notamment si plus de quatre joueurs aiment bien jouer ensemble...
Voilà, ce n'est que mon humble avis... Il sera toujours temps de changer par la suite. De plus lorsqu'une battue est organisé, le chaos es tel que tu n'a pas le temps de te perfectionner et d'apprednre de nouvelles choses. | |
|
| |
Gimli Oakenshield L'ignorant en Hardware
Nombre de messages : 783 Localisation : Près de mon ordi ! Date d'inscription : 15/12/2005
| Sujet: Re: Partage de l'xp Mer 1 Fév - 17:39 | |
| - Citation :
- - un script capable de me donner les prochains numéros du tirage de la loterie nationale (effectué avec 7 jets sur un dé à 49 faces);
Okay alors ... euh ... Teste ... euh ... Non, j'sais pas faire ! HONTE SUR MOI !!!! ptdr - Citation :
- - un script capable de faire arriver le livreur de pizzas dans les temps;
Ca c'est facile ! Soit c'est toi qui y vas ... la c'est dans les temps soit tu lui donne le double d'argent s'il arrive a l'heure ! - Citation :
- - un script capable d'éviter que mon chat ne saute sur mon clavier quand je suis connecté.
Je comprend monsieur, j'ai le même a la maison ! ^^ (Les inconnus) - Citation :
- Il sera toujours temps de changer par la suite. De plus lorsqu'une battue est organisé, le chaos es tel que tu n'a pas le temps de te perfectionner et d'apprednre de nouvelles choses.
Bon, alors ça c'est fait ... Suivant ! ^^ | |
|
| |
Ethelbert Génération spontanée
Nombre de messages : 647 Localisation : Lyon Date d'inscription : 11/01/2006
| Sujet: Re: Partage de l'xp Jeu 2 Fév - 13:29 | |
| - Ba'elzaden a écrit:
-
- Citation :
- Euh ça veut dire qu'au-delà de 4 personnes dans un groupe, il est moins rentable de pexer ? On va faire des brigades de mousquetaires, alors ?
Bon je sais que pexer n'est pas le but premier du module (heureusement d'ailleurs...), mais ne serait-il pas possible de faire stagter le niveau d'xp avant de le faire chuter ? Parce qu'en fait, je ne sais pas si la quête des Adams a été résolue par un grouep, mais j'avais envie à un moment ou à un autre de proposer une battue pour la résoudre. Donc on risquait d'être plus de 4 dans le groupe, à mon sens. Je sais bien que si cette animation peut se faire, la récompense en Xp sera surtout allouée par les DMs; mais le fond de ma pensée, c'est que si le module marche bien, les groupes de plus de quatre personnes risquent de ne pas être rares. Notamment si plus de quatre joueurs aiment bien jouer ensemble...
Voilà, ce n'est que mon humble avis... Il sera toujours temps de changer par la suite. De plus lorsqu'une battue est organisé, le chaos es tel que tu n'a pas le temps de te perfectionner et d'apprednre de nouvelles choses. J'ai mis la main sur les trois mousquetaires d'Aelor ! Je précise qu'ils ont été formés par Eowaryn, la chorégraphie est une variante de la danse des épées... Vous en voulez encore ? | |
|
| |
krandeuf
Nombre de messages : 273 Age : 50 Localisation : Reims Date d'inscription : 11/01/2006
| Sujet: Re: Partage de l'xp Jeu 2 Fév - 21:33 | |
| Je voudrais juste signaler que le partage de l'exp est pas franchement au point.... On reçoit l'exp de façon bizarre.. ou par grappe ou pas d'exp seulement à celui qui tue le monstre au final .... A revoir.... | |
|
| |
Ba'elzaden Maitre d'Aelor
Nombre de messages : 909 Date d'inscription : 15/12/2005
| Sujet: Re: Partage de l'xp Jeu 2 Fév - 21:45 | |
| IL y a un bug qui fait que celui qui tuait le monstre reçoit en double l'xp (que l'on corrige) | |
|
| |
Ba'elzaden Maitre d'Aelor
Nombre de messages : 909 Date d'inscription : 15/12/2005
| Sujet: Re: Partage de l'xp Ven 3 Fév - 0:47 | |
| J'ai suprimé la ligne 84 et le script semble encore avoir des problèmes:
Soit M, un personnage nommé melia Soit E, un personnage nommé Eowaryn
M et E affrontent des orques.
Si M tue un orque alors E ne gagne pas d'xp. Si E tue un orque alors M ne gagne pas d'xp.
Si M ou E quitte la zone, les gains ne changent pas.
On en déduit que le script bug. | |
|
| |
Contenu sponsorisé
| Sujet: Re: Partage de l'xp | |
| |
|
| |
| Partage de l'xp | |
|