La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 18/05/2024 19:31:05


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
zogzog59
Grand Chevalier
Inscrit le: 16 Jan 2005
Messages: 123
Répondre en citant
Posté le : 02/11/2006 13:19:29 Sujet du message : bloquage d'xp

zog zog à tous !

Je sais pas si c'est faisable mais je voudrai un script bloque les xp du joueurs si celui-ci detient dans son inventaire un objet precit ??? Ceci servirait a bloquer le pexage du jouer par exemple lol.

si quelqu'un connais ce genre de script je suis preneur merci bcq !!! Smile
_________________
Les vaux module rp
 
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 : 02/11/2006 16:42:24 Sujet du message :

Bloquer je pense pas, car le seul moyen de bloquer l'xp c'est grâce au LevelUp des propriétés du mod, mais que quand on levelup.

En revanche enlevez l'exp en trop c'est possible (toutes les 6secondes).

NWScript :
void main()
{
object oPC = GetFirstPC();
int iMaxXP = 5000;
while(GetIsPC(oPC))
{
int iXP = GetXP(oPC);
if(iXP > iMaxXP)
{
GiveXPToCreature((iMaxXP-iXP), oPC);
}
oPC = GetNextPC();
}
}
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.


Tu le mets dans le HB d'un placeable, ça devrait fonctionner... enfin je me rappel plus si il y a une fonction précise pour ENLEVER l'exp, car moi j'utilise un chiffre négatif, donc ça devrait fonction, dit moi si ça marche, sinon je te règle ça avec l'edit Smile
_________________
[http]
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
zogzog59
Grand Chevalier
Inscrit le: 16 Jan 2005
Messages: 123
Répondre en citant
Posté le : 02/11/2006 22:32:56 Sujet du message :

merci black Knight ton script ma me serir quand même même si c'est pas ce que je cherche !!!

mais le problème c'est que tu dis de mettre cela sur un placeable ?? le pj l'aura pas dans son inventaire comment faire pour que sa touche un pj precit ?? car un placeable se met sur la carte et non dans l'inventaire du pj ??

de plus ton script à une erreur Embarassed voici la bonne version.
NWScript :
void main()
{
object oPC = GetFirstPC();
int iMaxXP = 5000;
while(GetIsPC(oPC))
{
int iXP = GetXP(oPC);
if(iXP > iMaxXP)
{
GiveXPToCreature(oPC,(iMaxXP-iXP));
}
oPC = GetNextPC();
}
}
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.

_________________
Les vaux module rp
 
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 : 02/11/2006 22:47:48 Sujet du message :

Ha oui l'erreur, c'est habituelle chez moi, si je fais pas ça sur l'éditeur j'me gourre... Razz

Heu oui effectivement, j'ai oublier de mettre l'item en condition xD

NWScript :
void main()
{
object oPC = GetFirstPC();
int iMaxXP = 5000;
while(GetIsPC(oPC))
{
int iXP = GetXP(oPC);
object oItem = GetFirstItemInInventory(oPC);
while(GetIsObjectValid(oItem))
{
if(GetTag(oItem) == "TonTag")
{
if(iXP > iMaxXP)
{
GiveXPToCreature(oPC,(iMaxXP-iXP));
}
}
oItem = GetNextItemInInventory(oPC);
}
oPC = GetNextPC();
}
}
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.


Faut remplacer TonTag par le tag de l'item en question...


Citation :
mais le problème c'est que tu dis de mettre cela sur un placeable ?? le pj l'aura pas dans son inventaire comment faire pour que sa touche un pj precit ?? car un placeable se met sur la carte et non dans l'inventaire du pj ??
Se script analyse le joueur toutes les 6 secondes. Ils les analysent tous un par un, ici enfaite, on demande Si les joueurs on l'objet "TonTag" (en tag), alors on regarde si ils ont plus d'experience que iMaxXP. Si ils ont plus, on fait la soustraction pour enlever (donc plus petit chiffre devant, et grand chiffre derrière (donc XP-iMaxXP)), sinon on passe a l'autre joueur, et ainsi dessuite Smile

Si tu veux envoyer d'autre chose, ou appliquer d'autre truc au joueur, tu mets tes fonctions ici :

NWScript :
if(iXP > iMaxXP)
{
GiveXPToCreature(oPC,(iMaxXP-iXP));
//...
}
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, BK
_________________
[http]
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
zogzog59
Grand Chevalier
Inscrit le: 16 Jan 2005
Messages: 123
Répondre en citant
Posté le : 02/11/2006 22:58:11 Sujet du message :

merci beaucoup a toi je comprends mieux !!!

au pasage cela va prendre beaucoup de ressources a scanner tous les jouerus tous les 6 secondes ?
_________________
Les vaux module rp
 
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 : 02/11/2006 23:27:03 Sujet du message :

normalement non, le script et petit, j'ai pire que toi t'inquiete po Very Happy

Au pire tu mets une variable qui fait en sorte de lancer le script que quand elle est à zero :

NWScript :
void main()
{
object oPC = GetFirstPC();
int iMaxXP = 5000;
int iTime = GetLocalInt(OBJECT_SELF, "Times");
if(iTime == 10)
{
SetLocalInt(OBJECT_SELF, "Times", 0);
while(GetIsPC(oPC))
{
int iXP = GetXP(oPC);
object oItem = GetFirstItemInInventory(oPC);
while(GetIsObjectValid(oItem))
{
if(GetTag(oItem) == "TonTag")
{
if(iXP > iMaxXP)
{
GiveXPToCreature(oPC,(iMaxXP-iXP));
}
}
oItem = GetNextItemInInventory(oPC);
}
oPC = GetNextPC();
}
}
else
{
SetLocalInt(OBJECT_SELF, "Times", iTime+1);
}
}
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.


Ici on demande à ce que iTime soit à 10, donc en gros on demande que toutes les 1 minutes on verifie (bein oui, le heartbeat se relance toutes les 6 secondes, donc on fait 6 * 10 = 60 secondes = 1 minute Smile)

Voilou Smile
_________________
[http]
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
AZAZEL11
Seigneur
Inscrit le: 08 Fév 2006
Messages: 156
Répondre en citant
Posté le : 03/11/2006 01:10:01 Sujet du message :

BK ce ne serait pas mieux de mettre un script qui s'appele lui meme a tous les 120 secondes (un exemple) ?

tu vérifie si le joueur a son item dans le OnClientEnter, si oui tu fait exécuter le script en question qui s'éxécute lui meme par la suite.

NWScript :
DelayCommand (120.0(ExecuteScript,"tag du script"));
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.



parait que c'est le meilleur pseudo/HeartBeat ^^

enfin c'est toi le pro après tout lol
_________________
L'imagination est plus importante que le savoir. (Albert Einstein)
 
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 : 03/11/2006 10:29:38 Sujet du message :

J'utilise rarement cette fonction et je vais te dire pourquoi :

Si tu oublie que tu as un script ou tu désigne oPC comme GetEnteringObject, ou GetLastUsedBy tu l'as dans le caca si je puis dire... Razz

Donc je pense plus trop à cette option Smile Mais c'est vrai qu'elle aurait été mieux sur ce coup la, mais bon deux script contre un script + 3 lignes hein Razz
_________________
[http]
 
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 31.706ms