La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 23/11/2024 14:37:14


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Black Knight
Grand Maître Chanteur du Conseil
Inscrit le: 27 Oct 2005
Messages: 1031
Localisation: Fin fond du trou du cul du monde
Répondre en citant
Posté le : 04/12/2005 19:24:26 Sujet du message : Script de points mal additionné

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);
}
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.


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 Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Sith Vicious
Grand Sage du Conseil
Inscrit le: 19 Oct 2005
Messages: 693
Répondre en citant
Posté le : 04/12/2005 21:25:13 Sujet du message :

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 Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Black Knight
Grand Maître Chanteur du Conseil
Inscrit le: 27 Oct 2005
Messages: 1031
Localisation: Fin fond du trou du cul du monde
Répondre en citant
Posté le : 05/12/2005 08:10:58 Sujet du message :

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 Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Sith Vicious
Grand Sage du Conseil
Inscrit le: 19 Oct 2005
Messages: 693
Répondre en citant
Posté le : 05/12/2005 11:00:31 Sujet du message :

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 Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Black Knight
Grand Maître Chanteur du Conseil
Inscrit le: 27 Oct 2005
Messages: 1031
Localisation: Fin fond du trou du cul du monde
Répondre en citant
Posté le : 07/12/2005 13:47:54 Sujet du message :

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);
}
}
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.


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 Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Sith Vicious
Grand Sage du Conseil
Inscrit le: 19 Oct 2005
Messages: 693
Répondre en citant
Posté le : 08/12/2005 21:28:56 Sujet du message :

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 :

AssignCommand(oTarget,TakeGoldFromCreature(iTake,oTarget,TRUE));
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 Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Montrer les messages depuis :
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


Sauter vers:
FAQ | Rechercher | Liste des Membres | Groupes d'utilisateurs | S'enregistrer | Profil | Se connecter pour vérifier ses messages privés | Connexion
Powered by phpBB 2.* [m] © 2001, 2002 phpBB Group
Theme rewritten in beautiful XHTML code by Baldurien.
Thème "La Bibliothèque de Neverwinter" crée par Kruger
Traduction par : phpBB-fr.com
Page generated in 69.54ms