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 21:31:13


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Kris
Ecuyer
Inscrit le: 29 Avr 2005
Messages: 69
Répondre en citant
Posté le : 22/02/2006 13:38:18 Sujet du message : [Recherche scripts]

Voila , j ai commencé un module avec un scripteur mais surchargé de travail je recherche quelques aide pour cela ,j ai parcourue le forum et jai pris ce qui m interressé , certains scripts onbt ete adapté mais vu que c est pas moi qui m en occupe , j aimerais trouver ces scripts afin de soulager ce pauvre scripteur Embarassed.

Vu l esprit de la communauté et son entraide j espere trouver mon bonheur , je ne cherche pas des trucs compliqué , juste les scripts minimum et utilisable.


1 : Dans le respawn du joueur , j ai creer un point donc pas de soucis , le probleme et que je souhaite que le pj ne perde pas d 'xp mais augmenter le pourcentage d or a la place , que dois je trafiquoter? , quels scripts,ligne a enlever ou a ajouter?


2 : J ai creer un objet (sphinx) qui aura pour role quand on lui parle il devra faire choisir un dieu a un joueur en fonction de la classe prise , genre pour un guerrier il uara le choix entre 2 dieux, une fois le dieu sauvé , il recevra un objet qui l identifiera aupres de son dieu. Comment dois je m y prendre?


----- Si je veux que le joeuur ne puisse pas paser la zone sans avoir l objet en question, comment dois je faire?


3 : Les portes ne se referme et reverouille pas une fois qu elles sont utilisées , Que dois je mettre et ou afin qu une porte ouverte se referme automatiquement au bout de 1 minute?

4 : J ai mis un script de sac a cadavre trouvé sur ce module , avec le pretrer ca marche niveau dialogue , le soucis que j ai c est que je n ai pas de sac dans l inventaire et je ne peux ramasser le corps par terre, ou ai je oublier quelque chose pour ramasser le cadavre avec utiliser?


5 : Comment justement mettre des objets choisis genre un sac a cadavre et un livre dan sl inventaire du joueur quand il se connecte pour la premiere fois? pour ne pas qu il l est a chaque fois mais seulement une fois , qu il ne puissse pas les perdre ni les vendre, ni qu on lui vole, ? j ai trouvé un script pour detruire l inventaire a son arrivée mais j ai pas pour mettre des objets ^^.


Voila il ne me manque que ca pour finir mon module alors si vous pouvez m aider ca serait genial .

PS : je suis assez noob donc si les differentes etapes pourraient etre bien detaillé et expliquer ca serait l ideal Confused.


Vous remerciant par avance.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Kris
Ecuyer
Inscrit le: 29 Avr 2005
Messages: 69
Répondre en citant
Posté le : 22/02/2006 13:56:30 Sujet du message :

j ai trouvé pour les portes , un en moins Laughing
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Harmelyo
Chevalier
Inscrit le: 06 Oct 2005
Messages: 84
Répondre en citant
Posté le : 22/02/2006 15:01:45 Sujet du message :

5 : Comment justement mettre des objets choisis genre un sac a cadavre et un livre dan sl inventaire du joueur quand il se connecte pour la premiere fois? pour ne pas qu il l est a chaque fois mais seulement une fois , qu il ne puissse pas les perdre ni les vendre, ni qu on lui vole, ? j ai trouvé un script pour detruire l inventaire a son arrivée mais j ai pas pour mettre des objets ^^.

-> Pour ce qui est de mettre les objets, je suppose que dans le onClientEnter du module tu peux rajouter quelques lignes de ce gout là (je ne connais pas les commandes et je n'ai plus d'installation NWN )

A ajouter dans le OnClientEnter du module:
NWScript :

oPC=GetEnteringObject();
//les deux booleens sont la pour tester la presence du sac ou non
bool Sac =true;
bool Livre=true;

if(GetIsPC(oPC))//pour ne pas scanner les DMs
{
//ici faire une boucle qui parcourt l'inventaire des joueurs et change les booleens pour true s'il rencontre l'objet
}

if(Sac==true)
{CreateItemOnObject("TAG_Sac", oPC)}
if(Livre==true)
{CreateItemOnObject("TAG_Livre", oPC)}

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.

J'ai écrit sa à la va vite sans tester mais hormis la syntaxe qui pourrait être problèmatique, cela devrait fonctionner

-> Pour les objets invendable et involable, il suffit de les changer en objet de quête (dans l'éditeur d'objet, c'est une petite case à cocher sur la première page de mémoire, objet intrigué ou quelquechose d'approchant)
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Kris
Ecuyer
Inscrit le: 29 Avr 2005
Messages: 69
Répondre en citant
Posté le : 22/02/2006 15:50:30 Sujet du message :

Merci beaucoup Cool bon ca marche pas et vu que j y connais rien ^^ ben pas cool Smile
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
mork
Seigneur
Inscrit le: 12 Aoû 2005
Messages: 205
Localisation: A landeda, pres de brest
Répondre en citant
Posté le : 22/02/2006 17:51:28 Sujet du message :

5 : Voici un nouveau script fraichement créer ^^ (j'ai pas testé)

Le voici :

NWScript :


void main()
{
object oPC = GetEnteringObject ();//Le pj
object oLivre = GetObjectByTag ("Tag_Livre");//Le livre
object oSac = GetObjectByTag ("Tag_Sac");//Le sac
int nStackSize = 1;// Le nombre d'objet qu'il y aura a creer

if (GetIsPC(oPC))//Si le personnage n'est pas un MD ou un pnj etc ..
if (GetHitDice(oPC)==1)//Si le pj est niveau 1
if (oSac == OBJECT_INVALID)//Si le pj n'a pas encore le sac
if (oLivre == OBJECT_INVALID)//Si le pj n'a pas encore le livre
{
CreateItemOnObject("Tag_Livre", oPC, nStackSize);//Cree le livre dans l'inventaire du joueur
CreateItemOnObject("Tag_Sac", oPC, nStackSize);//Cree le sac dans l'inventaire du joueur
}
}
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.

_________________
Aléthéia | Ceux qui cherchent la vie trouveront la mort, ceux qui cherchent la mort trouveront la mort
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Ignorer l'utilisateur
 
L'Erudit
Seigneur
Inscrit le: 26 Oct 2005
Messages: 167
Répondre en citant
Posté le : 22/02/2006 18:37:53 Sujet du message :

Quelques réponses:

1) Je ne suis pas familiarisé avec les scripts de Respawns, je laisse aux autres le soin de répondre correctement.

2) Voilà le genre de script que cela pourrait donner. Ajouter de la même manière les différentes classes, et créer différents objets pour chaque. Un objet symbolise donc une dévotion à un dieu.

NWScript :
void main()
{
object oPJ = GetPCSpeaker();
int nClasse = GetClassByPosition(1, oPJ);
string sAmulette = "BlueprintAmulette";

    if (nClasse == CLASS_TYPE_FIGHTER) CreateItemOnObject(sAmulette, oPJ);
}
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.

4) Je pense que cela devrait marcher. A placecr dans le OnUsed du Cadavre.

NWScript :
void main()
{
object oPJ = GetLastUsedBy();
    if (!GetIsPC(oPJ)) return;

string sItemCorps = "BlueprintItemCorps";
object oCorps = GetNearestObjectByTag("TagCorpsATerre");

DestroyObject(oCorps);
CreateItemOnObject(sItemCorps, oPJ);
}
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.

5) Peut être que ce script peut être amélioré. Si tu souhaites tester plusieurs objets, répétes les lignes de code, en ajoutant simplement un "ItemChoisi3", que tu peux remplaçer par les nominations des Items correspondants, selon ton choix. A plaçer dans le OnEntering du module. Pour le reste, tu dois régler les propriétés de l'objet dans l'éditeur.

NWScript :
void main()
{
object oPJ = GetEnteringObject();
    if (!GetIsPC(oPJ)) return;

int bItemChoisi1, bItemChoisi2;
object oItem = GetFirstItemInInventory(oPJ);

object oItemChoisi1 = GetObjectByTag("TagItem");
object oItemChoisi2 = GetObjectByTag("TagItem");
string sItemChoisi1 = GetResRef(oItemChoisi1);
string sItemChoisi2 = GetResRef(oItemChoisi2);

    while (oItem != OBJECT_INVALID)
  {
            if (oItem == oItemChoisi1) bItemChoisi1 = TRUE;
            else if (oItem == oItemChoisi2) bItemChoisi2 = TRUE;

        if (bItemChoisi1 == TRUE
        && bItemChoisi2 == TRUE) break;

    oItem = GetNextItemInInventory(oPJ);
  }
        if (bItemChoisi1 != TRUE) CreateItemOnObject(sItemChoisi1, oPJ);
        if (bItemChoisi2 != TRUE) CreateItemOnObject(sItemChoisi2, oPJ);
}
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
 
mork
Seigneur
Inscrit le: 12 Aoû 2005
Messages: 205
Localisation: A landeda, pres de brest
Répondre en citant
Posté le : 22/02/2006 19:07:54 Sujet du message :

POur la mort (sais plus le n° Embarassed) :

Tu a le ApplyPenalty :

NWScript :
void ApplyPenalty(object oDead)
{
    int nXP = GetXP(oDead);
    int nPenalty = 50 * GetHitDice(oDead);
    int nHD = GetHitDice(oDead);
    // * You can not lose a level with this respawning
    int nMin = ((nHD * (nHD - 1)) / 2) * 1000;

    int nNewXP = nXP - nPenalty;
    if (nNewXP < nMin)
      nNewXP = nMin;
    SetXP(oDead, nNewXP);
    int nGoldToTake = FloatToInt(0.10 * GetGold(oDead));
    // * a cap of 10 000gp taken from you
    if (nGoldToTake > 10000)
    {
        nGoldToTake = 10000;
    }
    AssignCommand(oDead, TakeGoldFromCreature(nGoldToTake, oDead, TRUE));
    DelayCommand(4.0, FloatingTextStrRefOnCreature(58299, oDead, FALSE));
    DelayCommand(4.8, FloatingTextStrRefOnCreature(58300, oDead, FALSE));

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


Il faut le changer comme ca :

NWScript :
void ApplyPenalty(object oDead)
{
    int nHD = GetHitDice(oDead);
    // * You can not lose a level with this respawning
    int nMin = ((nHD * (nHD - 1)) / 2) * 1000;

    int nGoldToTake = FloatToInt(2.50 * GetGold(oDead));
    // * a cap of 10 000gp taken from you
    if (nGoldToTake > 10000)
    {
        nGoldToTake = 10000;
    }
    AssignCommand(oDead, TakeGoldFromCreature(nGoldToTake, oDead, TRUE));
    DelayCommand(4.0, FloatingTextStrRefOnCreature(58299, oDead, FALSE));
    DelayCommand(4.8, FloatingTextStrRefOnCreature(58300, oDead, FALSE));

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


Apres pour changer le pourcentage j'ai mit 2.50, mais ca pour faire moins tu mets moins et plus tu mets plus.

Voila, j'espere que c'est bien cela que tu veux ^^.
_________________
Aléthéia | Ceux qui cherchent la vie trouveront la mort, ceux qui cherchent la mort trouveront la mort
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Ignorer l'utilisateur
 
Kris
Ecuyer
Inscrit le: 29 Avr 2005
Messages: 69
Répondre en citant
Posté le : 22/02/2006 23:06:49 Sujet du message :

Merci a tous j ai pas mal avancé Very Happy
 
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 70.607ms