JeuxOnLineForumsPlusConnectés : 214 (sites) | 540 (forums)Créer un compte
Forum jeux-vidéo>Neverwinter Nights
Maskado
Les forums JOL > Forum jeux-vidéo > Neverwinter Nights > NWN - Maskado > [Barde inside] Quelques questions simples RSS
   
Répondre
Partager Outils Rechercher
Avatar de Simkim
JOL Simkim
Alpha & Oméga
 
Avatar de Simkim
 
Après avoir repris un script du Vault et l'avoir modifié, j'ai ça dans le OnSapwn des créatures.

Code PHP:
#include "NW_O2_CONINCLUDE"
#include "NW_I0_GENERIC"

void main()
{

        {
            
int value d10();
            if (
value <= 6)
            {
                
GenerateTreasure(TREASURE_MEDIUMOBJECT_SELFOBJECT_SELF);
                
GenerateTreasure(TREASURE_MEDIUMOBJECT_SELFOBJECT_SELF);
                
GenerateTreasure(TREASURE_MEDIUMOBJECT_SELFOBJECT_SELF);
            }
            else
            {
                
GenerateTreasure(TREASURE_MEDIUMOBJECT_SELFOBJECT_SELF);
                
GenerateTreasure(TREASURE_MEDIUMOBJECT_SELFOBJECT_SELF);
                
GenerateTreasure(TREASURE_HIGHOBJECT_SELFOBJECT_SELF);
            }

        }

Bon, le bon côté, c'est que les créatures donnent des objets. Le mauvais c'est que ce qu'elles donnent est vraiment nul...
M'enfin, on peut pas tout avoir...

Et pour la question subsidiaire ?
Lien direct vers le message - Vieux
Avatar de Simkim
JOL Simkim
Alpha & Oméga
 
Avatar de Simkim
 
J'ai un peu besoin de la question subsidiaire moi .

Je recommence :
Dans le OnClose de Chest_01 (un coffre)
Si Item_01 est dedans alors :
- détruit Item_01
- applique un effet visuel sur Chest_01 (dissipation de la magie, mais juste le visuel)
- crée Item_02, Item_03 et Item_04 dans Chest_01
Sinon ne fait rien.
Je sais que c'est un script simple, mais pour moi c'est compliqué.
Lien direct vers le message - Vieux
Avatar de eMRaistlin
eMRaistlin
Alpha & Oméga
 
Avatar de eMRaistlin
 
Code PHP:
void main()
{
int nXP_amount             5;
string sMESS_GRATZ      "Felicitation, tu as trouvé la solution de l'enigme du barde fou";
string sRESREF_OBJET_FILS1 "Item_02";
string sRESREF_OBJET_FILS2 "Item_03";
effect eFX                        EffectVisualEffect(VFX_IMP_DISPEL);
object oItem                   GetFirstItemInInventory(OBJECT_SELF);
object oPC                      GetLastClosedBy();

while (
GetIsObjectValid(oItem))
    {
    if (
GetTag(oItem)=="TAG_RAN_MER"//ou GetName ou GetResref
        
{
        
DestroyObject(oItem);
        
GiveXPToCreature(oPCnXP_amount); 
        
SendMessageToPC(oPC,sMESS_GRATZ);
        
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eFX,oPC,1.0);
        
CreateItemOnObject(sRESREF_OBJET_FILS1,OBJECT_SELF,1); //A DUPLIQUER si tu veux plus qu'un objet apres l'operation.
        
}
    }

Lien direct vers le message - Vieux
Avatar de Simkim
JOL Simkim
Alpha & Oméga
 
Avatar de Simkim
 
Merci eM .
Lien direct vers le message - Vieux
Avatar de Simkim
JOL Simkim
Alpha & Oméga
 
Avatar de Simkim
 
Hop, la suite .

PNJ_01 a la faction PNJ_01 (à 50 avec toutes les autres). Cependant, dans son dialogue il y a la possibilité que ça tourne mal. Si le PJ dit la mauvaise phrase, ça doit se finir en combat. Comment je fais pour rendre PNJ_01 hostile envers le PJ ? (comment je met sa faction à 0 envers le PJ).

A la mort de PNJ_01, un sort doit disparaître. Il s'agit simplement de supprimer Statue_01 et de le remplacer par Hechman_01 (le perso était transformé en statue et redevient normal). Je met quoi dans le OnDeath de PNJ_01 ?

Une autre question pour la route. Lorsque PNJ_01 aperçoit le PJ (même si celui-ci essais d'être discret) je veut qu'il lance le dialogue. Je met quoi dans le OnPerceived ?
Et le même script mais avec la condition Si le PNJ se dissimule, est invisible, etc., en bref s'il essais de passer, volontairement ou non, sans être vu ?

Rien de bien compliqué pour le scripteur moyen, mais au-delà de mes compétences de barde.

[Edit] Euh ??? Je crois que j'ai un problème avec ton script eM... Il s'est bien lancé quand j'ai fermé le coffre, mais en boucle... Je l'ai à peine modifié pourtant.

Code PHP:
void main()
{
int nXP_amount  250;
string sItem01 "mcloth012";
string sItem02 "wmgwn008";
string sItem03 "it_mpotion012";
effect eFX EffectVisualEffect(VFX_IMP_DISPEL);
object oItem GetFirstItemInInventory(OBJECT_SELF);
object oPC GetLastClosedBy();

while (
GetIsObjectValid(oItem))
    {
    if (
GetTag(oItem)=="Crypt_Tomb_03")
         {
        
DestroyObject(oItem);
        
GiveXPToCreature(oPCnXP_amount);
        
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eFX,oPC,1.0);
        
CreateItemOnObject(sItem01,OBJECT_SELF,1);
        
CreateItemOnObject(sItem02,OBJECT_SELF,1);
        
CreateItemOnObject(sItem03,OBJECT_SELF,5);
        }
    }

Lien direct vers le message - Vieux
Avatar de Tulkas
Tulkas
Dauphin
 
Avatar de Tulkas
 
dans une action conséquente de conversation :
Code PHP:
void main()
{

object oPC GetPCSpeaker();

object oTarget;
oTarget OBJECT_SELF;

AdjustReputation(oPCoTarget, -50);


Dans le OnDeath de PNJ_01

Code PHP:
void main()
{

object oPC GetLastKiller();

if (!
GetIsPC(oPC)) return;

object oTarget;
oTarget GetObjectByTag("Statue_01");

DestroyObject(oTarget0.0);

object oSpawn;
location lTarget;
oTarget GetWaypointByTag("WP_STATUE_01");

lTarget GetLocation(oTarget);

oSpawn CreateObject(OBJECT_TYPE_CREATURE"resrefdelacreature"lTarget);//attention, RESREF de la créature, pas le tag


J'ai fait spawner la créature sur WP_STATUE_01, donc oublie pas de créer ce point de passage

Dans le OnPerceived de PNJ_01

Code PHP:
void main()
{

object oPC GetLastPerceived();

if (!
GetIsPC(oPC)) return;

if (!
GetLastPerceptionSeen()) return;
object oTarget;
oTarget GetObjectByTag("PNJ_01");

AssignCommand(oTargetActionStartConversation(oPC"à définir"));



Citation:
Et le même script mais avec la condition Si le PNJ se dissimule, est invisible, etc., en bref s'il essais de passer, volontairement ou non, sans être vu ?
Là je vois pas bien ce que tu veux... Tu veux que si le pj est dissimuler le dialogue ne se fasse pas?

bon pour les autres script j'ai rien tester donc pas sûr que ça marche.
Lien direct vers le message - Vieux
Avatar de eMRaistlin
eMRaistlin
Alpha & Oméga
 
Avatar de eMRaistlin
 
Code PHP:
void main()
{
int nXP_amount  250;
string sItem01 "mcloth012";
string sItem02 "wmgwn008";
string sItem03 "it_mpotion012";
effect eFX EffectVisualEffect(VFX_IMP_DISPEL);
object oItem GetFirstItemInInventory(OBJECT_SELF);
object oPC GetLastClosedBy();

while (
GetIsObjectValid(oItem))
    {
    if (
GetTag(oItem)=="Crypt_Tomb_03")
         {
        
DestroyObject(oItem);
        
GiveXPToCreature(oPCnXP_amount);
        
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eFX,oPC,1.0);
        
CreateItemOnObject(sItem01,OBJECT_SELF,1);
        
CreateItemOnObject(sItem02,OBJECT_SELF,1);
        
CreateItemOnObject(sItem03,OBJECT_SELF,5);
        }
    
oItem GetNextItemInInventory(OBJECT_SELF);
    }


c'est ma faute : rassure toi, meme non modifié, ca aurait pas fonctionné ^^
Lien direct vers le message - Vieux
Avatar de Simkim
JOL Simkim
Alpha & Oméga
 
Avatar de Simkim
 
Dès que j'ai tout remit sur mon disque dur (saleté de formatage que j'ai été obligé de faire...) je teste tout ça.

Lien direct vers le message - Vieux
Avatar de Simkim
JOL Simkim
Alpha & Oméga
 
Avatar de Simkim
 
Bon, maintenant le script de la tombe marche... partiellement.
Je met l'objet, je referme la tombe, je gagne 250 xp, il y a un joli effet visuel, j'ouvre la tombe, l'objet n'est plus là (normal), mais aucun des objets n'est créé dedans.

Pourquoi ça marche pas ? Normallement j'ai prit les bon resref. Fallait prendre le tag ?
Lien direct vers le message - Vieux
Avatar de Simkim
JOL Simkim
Alpha & Oméga
 
Avatar de Simkim
 
Est-il possible de mettre une variable à l'ouverture d'un livre ?
Ce que je voudrais, c'est que si le PJ ouvre le livre, il est au courant de ce qui est écrit dessus, et donc il a accès aux options de dialogue relatives au contenu du livre. Par contre, s'il ne le lis pas...

Et pour la question précédente ?
Lien direct vers le message - Vieux
Avatar de eMRaistlin
eMRaistlin
Alpha & Oméga
 
Avatar de eMRaistlin
 
nonon, c'est bien le resref, mais peut etre le CreateItemInInventory fonctionne mal avec des placeables... (quoique ca m'etonnerait).

Juste pour tester, peut tu mettre une creature avec ce script (en remplacant GetLastClosedBy par GetPCSpeaker) dans son OnConv, pour verifier son inventaire apres ?
Lien direct vers le message - Vieux
Avatar de Simkim
JOL Simkim
Alpha & Oméga
 
Avatar de Simkim
 
Va falloir m'expliquer un peu mieux, parce que là j'y arrive pas...

J'ai modifié le script et je l'ai rajouté au script de base du OnConv (parce que sinon il veut pas me parler). J'ai mit un joli dialogue inutile.
J'ai mit l'objet direct dans l'inventaire du PNJ, mais quand on lui parle ça fait rien.
Impossible de lui parler en DM et donc pour lancer le script ça me semble pas gagné (je précise que si je met l'objet dans la tombe en DM, il disparait mais il n'y a aucun effet)... Et je ne sais vérifier un inventaire qu'en DM.

Humph de humph... Tu peux pas me faire une explication détaillée en style télégraphique ?
Je vais revérifier les resref au cas où (reste plus qu'à retrouver les objets...), même si j'avais déjà fait cette vérif...
Lien direct vers le message - Vieux
Avatar de eMRaistlin
eMRaistlin
Alpha & Oméga
 
Avatar de eMRaistlin
 
Tu peux parler en mode GM : a partir du menu contextuel circulaire. (n00b, va ! )


SInon, ce que je te proposait, c'etait juste pour verifier si c'est l'inventaire des placeable qui ne marche pas, ou si c'est un pb dans la fonction crée (mais je vois pas : le script est simple et a l'air bon)

D'ou l'idée de passer d'un place&able avec un OnClose pour une creature avec un OnConv. (et n'oublie pas de lui donner un inventaire, a cette creature ^^)


Une fois qu'on saura si ca marche ou pas avec une creature, on pourra essayer de comprendre pourquoi ca marche pas avec ton coffre...
Lien direct vers le message - Vieux
Avatar de Simkim
JOL Simkim
Alpha & Oméga
 
Avatar de Simkim
 
Humph... Il y a un petit problème.
Je met le script dans le OnConv du PNJ (je met un dialogue inutile au PNJ et Crypt_Tomb_03 dans son inventaire). Mais si je lance la conversation, rien ne se passe (ni xp, ni effets visuels).
J'ai du faire une grosse erreur quelque part mais je sais pas où...

Je sent que je vais simplifier ça et mettre un banal dialogue.
Que veux-tu mettre dans la tombe ?
- Objet 1 (apparait si Objet 1 dans l'inventaire du PJ)
- Objet 2
- ...

Au moins ça devrait marcher. Mais c'est moins bien .

[Edit] C'est bon, j'ai trouvé. Quand je prenais les resref, je faisait éditer et copier dans la palette, et j'enlevais 1 au nombre terminant le resref. J'avais tout simplement pas fait attention que en plus d'augmenter le chiffre de fin de 1 ça enlevait le nw_ du début.
Par contre, ça marche pas complètement . Je vient de tester et de remplir 25 contenant de la tombe . Tout a été dupliqué .

Code PHP:
void main()

{

int nXP_amount  250;
string sItem01 "nw_mcloth012";
string sItem02 "nw_wmgwn008";
string sItem03 "nw_it_mpotion012";
effect eFX EffectVisualEffect(VFX_IMP_DISPEL);
object oItem GetFirstItemInInventory(OBJECT_SELF);
object oPC GetLastClosedBy();

while (
GetIsObjectValid(oItem))
    {
    if (
GetTag(oItem)=="Crypt_Tomb_03")
         {
        
DestroyObject(oItem);
        
GiveXPToCreature(oPCnXP_amount);
        
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eFX,oPC,1.0);
        
CreateItemOnObject(sItem01,OBJECT_SELF,1);
        
CreateItemOnObject(sItem02,OBJECT_SELF,1);
        
CreateItemOnObject(sItem03,OBJECT_SELF,5);
        }
    
oItem GetNextItemInInventory(OBJECT_SELF);
    }

Lien direct vers le message - Vieux
Avatar de eMRaistlin
eMRaistlin
Alpha & Oméga
 
Avatar de eMRaistlin
 
Oui, si tu as plusieurs objets dans le contenant, ca peut être un peu tendu.

Essaye ca pour corriger :

Code PHP:
void FillInventory(object OC,object O1object O2=OBJET_INVALIDobject O3 OBJECT_INVALID)
{
CreateItemOnObject(O1,OC,1);
CreateItemOnObject(O2,OC,1);
CreateItemOnObject(O3,OC,5);
return;
}

void main()

{

int nXP_amount  250;
string sItem01 "nw_mcloth012";
string sItem02 "nw_wmgwn008";
string sItem03 "nw_it_mpotion012";
effect eFX EffectVisualEffect(VFX_IMP_DISPEL);
object oItem GetFirstItemInInventory(OBJECT_SELF);
object oPC GetLastClosedBy();

while (
GetIsObjectValid(oItem))
    {
    if (
GetTag(oItem)=="Crypt_Tomb_03")
         {
        
DestroyObject(oItem);
        
GiveXPToCreature(oPCnXP_amount);
        
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eFX,oPC,1.0);
        
DelayCommand(1.0,FillInventory(OBJECT_SELF,sItem01,sItem02,sItem03);
        }
    
oItem GetNextItemInInventory(OBJECT_SELF);
    }

Lien direct vers le message - Vieux
Répondre
Les forums JOL > Forum jeux-vidéo > Neverwinter Nights > NWN - Maskado > [Barde inside] Quelques questions simples
   

Outils Rechercher
Rechercher:

Recherche avancée

Les vidéos de Neverwinter Nights RSS
  • Aucune vidéo pour le moment...
Thème visuel : Fuseau horaire GMT +1. Il est actuellement 05h14.
   

© JeuxOnLine, le site des MMO, MMORPG et MOBA. Tous droits réservés. - Conditions générales d'utilisation - Conditions d'utilisation des forums - Traitement des données personnelles - ! Signaler un contenu illicite