Une petite bibliothèque pour vous!

Répondre
Partager Rechercher
Jedaï! chuis sûr que t'es très bon, t'en fais plus que souvent la preuve même, mais tu crois que c bien utile de faire des comparaisons ?? n'échaude pas les nouveaux aussi dévoués et investis, hein...

Talking
une autre petite bibliothèque pour vous!
Cela permet de faire perdre des xp à un PC suivant un pourcentage, utilisé souvent dans une action par conséquence dans un dialogue, sans lui faire perdre de niveau.
Si le PC, après la perte d'xp devrait perdre normalement un niveau, le script lui mettra les xp minimum requis pour garder son niveau.

voici le code :

Code PHP:


////////////////////////////////////////////////////
//::Fait par RAT
//: nom du script : prendre_px
//////////////////////////////////////////////////////
// Prendre des PX au joueur  suivant un pourcentage
// ex faire perdre au joueur 10% de ses xp

void prendre_xp(object oPC,int iPerte)
{
/*

NIV         XP

1           0
2           1000
3           3000
4           6000
5           10000
6           15000
7           21000
8           28000
9           36000
10          45000
11          55000
12          66000
13          78000
14          91000
15          105000
16          120000
17          136000
18          153000
19          171000
20          190000
*/
int XpPC=0;
int Totalxp=0;
int ixp=1;
int comptxp=0;
int compt=0;
int mem=0;
int bloke=0;
XpPC=GetXP(oPC);
TotalxpXpPC - (XpPC * (iPerte /100));
string test;
while (
ixp<=20)
{
comptxp=comptxp + (mem *1000);

    if ((
Totalxp compt) && ((XpPC >= compt) && (XpPC comptxp))  )
    {
    
SetXP(oPC,Totalxp);
    
test"Vous vous sentez plus affaiblis";
    
SendMessageToPC (oPC,test);
    break;
    }

    if ((
Totalxp <= compt ) && ((XpPC >= compt) && (XpPC <=comptxp)))
    {
    
SetXP(oPC,compt);
    
test"Pour ne pas perdre un niveau , on vous donne le minimum requis";
    
SendMessageToPC (oPC,test);
    break;
    }

compt=comptxp;
mem=ixp;
ixp++;
}

}
////////////////////////////////////////////////////
//       FIN DU SCRIPT
////////////////////////////////////////////////////// 
Merci pour tout ca, les gars ^^





*par contre, si je pouvais vous demander de creer un topic specifique a chaque fois, avec un lien dans le persistants qui traite des scripts, ce serait sympa... ^^;*
No soucy eMRaistlin . Au début, je voulais mettre mes scripts sur le même poste pour éviter justement de créer à chaque fois un nouveau sujet, mais je vais le faire si tu préfères .

En tout cas, je vais aller mettre le lien, en indiquant tout les scripts qui se trouvent sur ce sujet.
Cela évitera de faire des répétitions en ré ouvrant des nouveaux sujets .
Coolstar>Reregarde qui a proposé cette bibliothèque...
C'est pas un nouveau Tyn' , non ?

Tyn'>Dommage, bah je vais essayer de comprendre ce charabia tout seul alors, je vous expliquerai si je comprend.


Sinon, j'insiste, n'utilisez surtout pas cette fonction StrReplace(), elle est vraiment risquée ! De plus je ne pense pas que ce soit dans la philosophie de ce type de fonction qu'elle revienne sur ce qu'elle a déjà modifié...


RAT>Félicitation pour cette importante contribution, je trouve qu'on trouve () trop peu de bibliothèques réalisées par des Français alors qu'il s'agit d'une des grandes forces du NWScript (il l'a hérité du C). Les seules que je connaisse, excepté quelques post de Tyn' sur ce forum, sont sur NWN-Fr (dont la mienne, mais non je fais pas de pub :bouffon: ).
Merci Jedaï , ca me fait plaisir .

Pour tout avouer, j'adore développer, c'est ma grande passion. Et je veux aider les autres shards par des scripts ou des bibliothèques que je peux faire, étant un indépendant.

Pourquoi me lancer sur nwnscript? tout simplement, par la passion du dev, par la passion d'apprendre de nouveau langage (etant développeur de site à la base ), essayer de vaincre les obstacles et les limites de nwn, et surtout pour aider les scripteurs et les créateurs de modules .

Donc voilà en gros, vous en aurez d'autres je peux vous promettre .

A bientôt,

Et merci encore Jedaï
Si vous tenez à utiliser cette bibliothèque (qui a quand même quelques fonctions bien sympas) remplacez la fonction StrReplace() par celle-ci, elle évite toute boucles infinies et est très rapide (enfin assez rapide disons ):

Code PHP:

//Cette fonction recherche toutes les occurences de sOldStr dans
//sStr et les remplace par des sNewStr, puis elle renvoie la chaîne
//de caractère modifiée. Exemples :
//StringReplace("imbécile !", "mon Ami.", "Bonjour imbécile !")
// == "Bonjour mon Ami."
//ou sTagI = "CT_000_GUARD_000_021"; n = 5;
//StringReplace("000", IntToString(n) + "_TYPE", sTagI)
// == "CT_5_TYPE_GUARD_5_TYPE_021"
//Copyright Jedaï ;-)
string StringReplace(string sOldStrstring sNewStrstring sStr);

string StringReplace(string sOldStrstring sNewStrstring sStr)
{
  if (
sOldStr == "")
    return 
"";

  
int nTemp;
  
int nL GetStringLength(sStr);
  
int nLength GetStringLength(sOldStr);
  
string sTemp;
  
string sR "";

  while ((
nTemp FindSubString(sStrsOldStr)) >= 0)
    {
    
sTemp GetStringLeft(sStrnTemp);
    
s3 GetStringRight(sStrnL nLength nTemp);
    
sR sR sTemp sNewStr;
    
nL GetStringLength(sStr);
    }
  
sR+=sStr;

  return 
sR;

Citation :
provient du message de rat :
je trouve qu'on trouve () trop peu de bibliothèques réalisées par des Français alors qu'il s'agit d'une des grandes forces du NWScript
ben écoutez, moi ce qui me manque surtout c'est des idées pour réaliser des bibliothèque, alors si vous en avez moi je m'en occupe volontier, c'est ma passion ossi
heu.... on m'a dirigé ici pour trouver un "cleaner de drops"

j'ai vu le scipt pour "l'eboueur" mais bon, un gars ki vien ramasser les drops chez les orcs ou chez les goblins c pas top....

me faudrai un truc automatik:
dans OnEnter, les objets vivent 1 minutes et hop a pu. ca serait ca qu'il me faudrai. (meme pas un truc ou ca chek la durée de vie de l'item ou je sais pas koi, juste on rentre, l'objet disparai au bout de 1 minute)

je sais pas, ca y est peu etre dans cette discution ce que je chercher, mais je suis perdus dans vos biblioteques et dans vos sous vetements...
ce serait pas mieux, plutot, de vider l'area a la sortie du dernier PC (meme si c'est autrement plus compliqué) ?

Sinon, le mieux, c'est que tu t'inspire du script du balayeur pour prendre la partie ou il repere les items, et au lieux de mettre un ActionMoveToObject, tu met direct un DestroyObject.


Je te parle de la destruction en sortie d'area, car honnetement, le balayeur, ca pompe des ressources^^
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés