Bienvenue sur JeuxOnLine - MMO, MMORPG et MOBA !
Les sites de JeuxOnLine...
 

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

Creation d'un objet un peu particulier...

Par mickmils le 13/7/2002 à 18:26:29 (#1801122)

Bonjour, je commence a me faire la main sur le NWSCRIPT mais la j'avoue flancher un peu, flancher totalement même.

L'Objectif est le suivant :

Créer une sorte de sort qui allume toutes les lampes, braziers, torches (placeable objects) dans le coin. Une fois ces lampes alllumées, une porte s'ouvre ou un autre évenement a lieu.

J'avais pensé a faire cela par l'intermédiaire d'un objet utilisable. Le probleme c'est que les effets ont tous l'air prédéfini.

Réussir a faire ce genre de trucs serait déja fantastique pour moi aussi je me contenterais d'une réponse a ce problême, mais si possible, j'aimerais également réaliser autre chose.

L'objet en question serait un livre de sort, placé dans l'inventaire.
L'Utilisation de ce livre de sort ouvrirait un dialogue demandant quel sort utiliser (ici, le sort qui allumerait les torches) et pour chaque sort déclencherait un script (faisable par ActionTaken). Autre problême, comment initialiser un tel dialogue ?

Voila, enfin la, je suis bloqué totalement :/

Merci d'avance pour le coup de main

-Mickmils

Par Lumina le 13/7/2002 à 19:44:26 (#1801327)

Pour lancer le dialogue, dans OnUse :
BeginConversation("dialogue_du_livre", oObjectToDialog);
mais je ne sais plus si il faut donner comme parametre l'objet livre ou l'objet personnage joueur ...

Pour allumer les lumières, je pense qu'il faut utiliser un script qui ressemble à ça (attention, celui-ci ne compile pas .. je donne une idée sans la tester) :

int i = 1;
object oLight = GetNearestObjectByTag("tag_de_mon_brasier", oPC, i);
while (GetIsObjectValid(oLight))
{
location lLoc = GetLocation(oLight);
SetTileSourceLightColor(lLoc, TILE_MAIN_LIGHT_COLOR_RED, TILE_MAIN_LIGHT_COLOR_RED);
i++;
oLight = GetNearestObjectByTag("tag_de_mon_brasier", oPC, i);
}
RecomputeStaticLighting(GetArea());

Si quelqu'un teste ça, qu'il essaye de corriger pour informer ce qui marche et ce qui ne marche pas. :)

Par mickmils le 13/7/2002 à 21:03:16 (#1801558)

Bah justement il est la le problême : dans "onUse" ? Je le trouve ou ? :o) Y'a absolument rien dans les propriétés de l'objet de ce genre... je suis passé a coté de quelque chose ?

-Mickmils

Par Kray le 13/7/2002 à 21:26:29 (#1801636)

Il faut cocher la case Usable sur l'onglet Basic des propriétés de l'objet. L'évènement OnUse devient alors utilisable dans l'onglet Scripts. :)

Par mickmils le 13/7/2002 à 21:57:43 (#1801780)

Merci !!!

Maintenant je me sens très con :o)

-Mickmils

Par Kray le 13/7/2002 à 22:19:22 (#1801858)

Faut pas, on est toujours la quiche de quelqu'un d'autre.

Par mickmils le 13/7/2002 à 22:40:30 (#1801934)

A la réflexion... oui mais non :/

Je viens de tester, la case "useable" n'existe apparement que sur les objets "placeable" , pas sur les items.... Retour a la case départ :/


-Mickmils

Par mickmils le 13/7/2002 à 23:02:25 (#1802002)

Ah ben non j'ai trouvé :p

http://nwvault.ign.com/Files/scripts/data/Making%20Unique%20ItemsDavid%20Gaider%20(BioWare%20Designer)Inventory%20Item.shtml


-Mickmils

Par Lumina le 14/7/2002 à 1:02:26 (#1802326)

Je corrige le lien :
Making Unique Items David Gaider (BioWare Designer) Inventory Item
Bon, il fallait lire "OnActivateItem" au lieu de "OnUse" évidemment. :)
Ce qui donne le script suivant :
object oItem = GetItemActivated();
if (GetTag(oItem) == "tag_du_livre")
BeginConversation("dialogue_du_livre", GetItemActivator());

Par mickmils le 14/7/2002 à 12:19:07 (#1803422)

Rebonjour, j'ai (je sais oui "Encore !") de nouveaux quelques
problêmes.

Premiere surprise, lorsque j'utilise mon Spell Book, il disparait immédiatement. J'ai pourtant coché "Plot Item" et mis ses charges a 50.

Je lui aie assigné comme Properties :
Cast Spell Unique Power Self (Unlimited Uses/Day)
Son tag est SpellBook

Dans mes Modules Properties j'ai ce script sur OnActivateItem



void main()
{
object oItem = GetItemActivated();
object oPlayer = GetItemActivator();

if (GetTag(oItem) == "SpellBook")
{
ActionStartConversation(oPlayer , "spellbook");
}
}

Je suis conscient d'avoir beaucoup de mal avec mes "if" en général (mauvais placement de parenthèses, crochet ou point-virgule, et autres choses :/), mais là il me semble pourtant que ce script est correct.

Autre problême potentiel, dans l'éditeur de conversations, je ne trouve pas le tag de mon livre, SpellBook. J'ai essayé de créer un objet bidon juste a coté et de faire correspondre les lignes de dialogues avec cet objet , mais rien. Tout ce qu'il se passe c'est que le joueur remue bien les bras,

Par Amaranthe le 14/7/2002 à 12:23:28 (#1803437)

Provient du message de mickmils

void main()
{
object oItem = GetItemActivated();
object oPlayer = GetItemActivator();

if (GetTag(oItem) == "SpellBook")
{
ActionStartConversation(oPlayer , "spellbook");
}
}

Je suis conscient d'avoir beaucoup de mal avec mes "if" en général (mauvais placement de parenthèses, crochet ou point-virgule, et autres choses :/)


Un conseil... INDENTE !


void main()
{
object oItem = GetItemActivated();
object oPlayer = GetItemActivator();

if (GetTag(oItem) == "SpellBook")
{
ActionStartConversation(oPlayer , "spellbook");
}
}


Amaranthe.

PS. Ne faudrait il pas une majuscule a "Spellbook" ? dans le ActionStartConversation ?

Par Lumina le 14/7/2002 à 17:46:09 (#1804450)

Provient du message de Amaranthe
PS. Ne faudrait il pas une majuscule a "Spellbook" ? dans le ActionStartConversation ?
Non Amaranthe. :)
Le premier "SpellBook", c'est le tag du livre.
Le scond "spellbook" c'est le fichier de conversation. :)

Au passage, on peut mettre un parametre supplémentaire pour que la conversation soit invisible aux yeux des autres joueurs :
ActionStartConversation(oPlayer , "spellbook_dialog", TRUE);

Sinon, je ne sais pas d'où vient le problème que le livre disparaisse ... peut-etre un evenement qui apparait dans "action taken" au sein de la conversation, voir au tout début de celle-ci ?

Par Amaranthe le 14/7/2002 à 18:38:07 (#1804659)

Provient du message de Lumina
Non Amaranthe. :)
Le premier "SpellBook", c'est le tag du livre.
Le scond "spellbook" c'est le fichier de conversation. :)


Ca j'avais bien compris ;)
Je me disais que si il avait mis une majuscule au premier Tag il en avait peut être mis une aussi au deuxieme ;)

Amaranthe.
Qui n'a que tres rarement tort... et qui l'avoue encore moins souvent.

JOL Archives 1.0.1
@ JOL / JeuxOnLine