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:54:05
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 |
Black Knight Grand Maître Chanteur du Conseil Messages: 1031 Localisation: Fin fond du trou du cul du monde |
Voila voila, j'ai fait un script dans mon "OnDeath" du module pour que :
-Si un joueur tue un joueur de même niveau, qu'il recoive 0.7 points -Si un joueur plus haut niveau tue un joueur plus bas niveau il gagne 0.5-0.(diff level, exemple : Joueur A niv 30 tue joueur B niv 29 : recoit 0.5-0.1 = 0.4) -Si un joueur plus bas level tue un joueur plus haut niveau il gagne 0.5+0.(diff level, exemple : Joueur A niv 29 tue joueur B niv 30 : recoit 0.5+0.1 = 0.6) Mais mon mongol de script ne fait pas sa, il fait comme si c'etait un joueur bas level qui tué un joueur haut level, donc par exemple : Joueur A niv 35 tue joueur B niv 30 : recoit 0.5+0.5 = 1.0 alors que sa doit etre 0.5-0.5 = 0.0. Alors voila le script, je ne comprend pas d'ou vient ce bug. NWScript :
int iHDPC = GetHitDice(oPC); int iHDDeath = GetHitDice(oDeath); float iAddScore; int iScore = abs(iHDDeath-iHDPC); int iCalculePoint; float iCalculePoint1; if(iScore == 0) { iAddScore = 0.7; } else if(GetHitDice(oPC) == 40) { iAddScore = 1.5; } else { iCalculePoint = abs(iScore+5); iCalculePoint1 = IntToFloat(iCalculePoint)/10; iAddScore = fabs(iCalculePoint1); } Donc pour information j'ai voulu partir d'un point non decimale et ensuite de le divisé par 10 en le mettant en "Float" : donc 5 + (diff level) / 10. Mais il doit ignoré les -1, -2, -3, -4, et -5. Je sais pas pourquoi. Voila merci d'avance. _________________ [http] |
Revenir en haut | |
Sith Vicious Grand Sage du Conseil Messages: 693 |
Ben si tu prends la valeur absolue pour iScore, c'est un peu normal qu'il fasse pas la différence entre une difference positive et une négative non ?
Dejà corrige ça. Ensuite j'ai pas bien regardé mais il me semble qu'il y a d'autres erreurs, (à un moment tu devrais verifier si la difference est de + de 5 niveau qu'il ne gagne aucun point (et pas -0.1 ou -0.9). Je sais pas pourquoi t'as mis des valeurs absolues parout, mais je crois que ça serait mieux sans (je répète j'ai regardé vite fait donc peut-être, mais la première je suis sur qu'elle va pas) |
Revenir en haut | |
Black Knight Grand Maître Chanteur du Conseil Messages: 1031 Localisation: Fin fond du trou du cul du monde |
Absolue = abs ?
Bein moi j'ai cru que c'etait pour mieu calcule, il y en a plein plein plein partout dans mon serveur lol! Et aussi pour les nombres negatifs, j'ai pas de soucis car j'ai mi un "if" avant le script que j'ai donné, si il y a une difference de 5 level, il dit soit que c'est un impossible soit un negligeable. Voici normalement ce que sa doit faire Diff +5 = 1.0 Diff +4 = 0.9 Diff +3 = 0.8 Diff +2 = 0.7 Diff +1 = 0.6 Diff 0 = 0.7 (c'est pour que les joueurs utilisent la strategie, donc pour gagné un maximum de points) Diff -1 = 0.4 Diff -2 = 0.3 Diff -3 = 0.2 Diff -4 = 0.1 Diff -5 = 0.0 Diff -6 = Negligeable (je ne veut pas que les impossible fasse des kills simple en gagnant des points) Diff +6 = Impossible (je ne veut pas que les negligeable kill les impossibles, surtout si cela n'on pas le droit de les tués) Voila. Maintenant je vais testé ce que tu ma dit. Je te repondré se soir. (PLZ : sa sert a quoi alors le "ABS" ?) _________________ [http] |
Revenir en haut | |
Sith Vicious Grand Sage du Conseil Messages: 693 |
Valeur absolue (||): |x| = |-x| = x
(EDIT : avec x>=0 bien sur...) C'est la valeur d'un nombre et c'est toujours positif. Ca sert surtout à comparer 2 nombres ( |x-y| = |y-x| ) donc tu l'utilises si tu veux avoir la différence absolue entre 2 nombres sans avoir besoin de savoir lequel est le plus grand. Sous Aurora c'est abs( int) et fabs(float) |
Revenir en haut | |
Black Knight Grand Maître Chanteur du Conseil Messages: 1031 Localisation: Fin fond du trou du cul du monde |
Re, enfin bonjour, voila donc j'ai testé le script et sa marche extrêment bien! Donc j'ai utilisé la même méthode pour mon Script que j'ai nommé "Anti-Triche" :
NWScript :
void main() { object oTarget = GetEnteringObject(); SetLocalInt(oTarget, "TeleportationDebbug", 0); int iXPw = GetXP(oTarget); int iGPw = GetGold(oTarget); int DebbugScript; object oItemcheck = GetFirstItemInInventory(oTarget); while (GetIsObjectValid(oItemcheck)) { if(GetBaseItemType(oItemcheck) == BASE_ITEM_HEALERSKIT || GetBaseItemType(oItemcheck) == BASE_ITEM_ARROW || GetBaseItemType(oItemcheck) == BASE_ITEM_BULLET || GetBaseItemType(oItemcheck) == BASE_ITEM_TRAPKIT || GetBaseItemType(oItemcheck) == BASE_ITEM_BOLT) { DebbugScript = 1+1; } else { iGPw = iGPw + GetGoldPieceValue(oItemcheck); } oItemcheck = GetNextItemInInventory(oTarget); } int i; for(i=0;i<=13;i++) { if(GetIsObjectValid(GetItemInSlot(i, oTarget))) { iGPw = iGPw + GetGoldPieceValue(GetItemInSlot(i, oTarget)); } } int ibalance = iGPw-iXPw; int iGive = abs(ibalance); int iTake = ibalance*(-1); SendMessageToPC(oTarget, "Mise a jour de votre XP/OR"); if ( ibalance >0 ) { TakeGoldFromCreature(iTake, oTarget); } else if ( ibalance <0 ) { GiveGoldToCreature(oTarget, iGive); } } Voila alors je l'ai testé en solo et apparament sa marche bien. Donc normalement si j'ai par exemple +953 or, sa me retire 953 piece d'or, MAIS sur le net, ca ne m'enleve qu'une partie et encore... Donc je voudrais savoir si il y a une erreur. Merci _________________ [http] |
Revenir en haut | |
Sith Vicious Grand Sage du Conseil Messages: 693 |
Pour le TakeGold... je crois qu'il vaut mieux l'utiliser comme une action (d'après le lexicon ça ne marche pas appelé du module ou d'une zone).
Essaye : 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. |
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