Archives des forums MMO/MMORPG > Neverwinter Nights > NWN - Maskado > Les potions
Les potions
Par Cazou Tyrhius le 1/8/2002 à 16:20:57 (#1891250)
Voila j'espere que c'était clair...
Par Flint Gorgefeu le 1/8/2002 à 19:52:17 (#1892965)
Ben en fait, pour faire des effets négatifs (comme pour faire n'importe quel effet) suffit que tu définisse l'effet de ta potion. Tu mets quelque chose de négatif si ca te chante bien sur, pas de problème la dessus.
Ensuite pour boire une potion quand on l'achete j'ai aps bien suivi :p
Tu l'achete, elle est dans ton inventaire, ben tu la bois c'est tout.
Sinon si c'est pour faire boire un PJ en fonction d'un dialogue (par exemple : Je veux boire telle potion), ben tu fais semblant :)
Tu fais jouer l'animation de boir au PJ et tu lui donne les effets de la potion, ca donne l'illusion...
Par Caillou PierreSang le 1/8/2002 à 21:16:50 (#1893662)
Le probème de boire une potion quand on l'achète : lorsqu'on achète une bière par exemple, il se peut que "alcohol, beer, single use" dans le menu radial soit grisé et par là même la bière "imbuvable".
Par Cazou Tyrhius le 1/8/2002 à 21:17:11 (#1893664)
Et j'ai pas trouvé les effets négatif dans les effet,y a que des positif...
Par Azharial del'Amrhyn le 1/8/2002 à 21:29:01 (#1893751)
Je crois que pour faire ce genre de potion il me parait nécessaire de passer par l'évenement OnActivateItem du module, tester si le tag de l'item activé correspond à la potion et si oui lancer l'effet à partir de là, mais comme je n'ai pas encore essayé ca, je m'avance peut-etre :p.
* Va essayer par curiosité * :rolleyes:.
Par Caillou PierreSang le 1/8/2002 à 21:32:39 (#1893777)
Si tu trouves, tu auras toute ma gratitude !:merci:
Par Cazou Tyrhius le 1/8/2002 à 21:35:15 (#1893793)
(Caillou est un peut etoudit c'est pour ca qu'il oublie ce genre de details :D )
Par Azharial del'Amrhyn le 1/8/2002 à 21:48:17 (#1893886)
void main()
{
object oItem = GetItemActivated();
object oPC = GetItemActivator();
if (GetTag(oItem) == "potiontest")
{
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectDazed(), oPC, 10.0);
}
}
Mettez ce script dans OnActivateItem du module, créez vous une potion sur mesure avec un effet quelconque ou unique (qui ne fait rien en gros), votre potion une fois bue vous mettra en etat Dazed pour 10 secondes, a ca vous pouvez ajouter des effets visuels si vous voulez. J'ai fais au plus rapide pour tester si ca fonctionne ;).
Il est possible aussi d'utiliser GetItemActivatedTarget ou GetItemActivatedTargetLocation pour specifier une cible ou une zone (lancer de potion par exemple).
Par Caillou PierreSang le 1/8/2002 à 22:05:30 (#1894052)
Je vais essayer ceci dès que j'en ai terminé avec mon area !
Faudra que je regarde les autres effets/effets visuels qu'on peut lui attacher.
Si tu as encore d'autres scripts aussi bien à nous faire partager, ou si tu as trouvé des améliorations, n'hésite pas !
Par Cazou Tyrhius le 1/8/2002 à 22:10:22 (#1894108)
nous allons tout des suite inclure se script dans notre module.
Je vous remercie ,si vous avez un probleme, vous pouvez conter sur nous (même si on n'est pas sur de le resoudre).
Par Azharial del'Amrhyn le 1/8/2002 à 22:17:35 (#1894174)
Provient du message de Caillou PierreSang
Faudra que je regarde les autres effets/effets visuels qu'on peut lui attacher.
Si tu as encore d'autres scripts aussi bien à nous faire partager, ou si tu as trouvé des améliorations, n'hésite pas !
Euh... pas d'autres scripts non, c'est du fait sur mesure là, pour repondre à votre problème, et vu que ca me titillait aussi j'ai regardé ce que je pouvais faire :).
Pour les effets speciaux, utilise le mod que j'ai mis en ligne (cf. thread sur la Tour Effondrée) il te permet de visualiser tous les VFX proposé par NwN :).
Par Cazou Tyrhius le 1/8/2002 à 22:25:12 (#1894246)
Par Caillou PierreSang le 1/8/2002 à 22:28:29 (#1894279)
Au fait, bon travail .:D ;)
Par Flint Gorgefeu le 1/8/2002 à 23:34:45 (#1894885)
Par Caillou PierreSang le 18/9/2002 à 22:32:04 (#2184384)
1) Quand on achète n'importe quelle boisson au marchand la commande dans le menu radial "Alcohol : Beer, Single Use" (par ex.) apparaît en grisé, et il est alors impossible de boire trnaquille sa bière...
Ca arrive à qqun ? Vs savez comment y rémédier ?
2) Le script précédent ne marche pas, pourtant c'est pas faute d'avoir essayé. Auriez-vous d'autres idées de script qui marche pour ma boisson, ce dont je vous serai entièrement reconnaissant ?
:aide: :merci:
Par Elminf le 18/9/2002 à 22:49:46 (#2184488)
Mais je voudrai savoir si on pouvait aussi en faire une avec pour effet de donner un " Knockdown " sans degats ....
une autre avec pour effets de donner 1d4 pt de degats si on est pas un nain et/ou une personne specifique ?
Merci de rêpondre a Messire Caillou et par la meme a moi aussi ...
Par Sempai le 18/9/2002 à 23:25:13 (#2184714)
...
Je vais plutôt mettre en route Aurora, finalement...
Bon... Je pense qu'il y a un moyen de contourner le problème.
En utilisant les objets divers (Misc. Items), dans le lot, il doit bien y avoir un objet qui ressemble à une bouteille.
Dans Propriétés (Properties) --> Available properties, sélectionnez "Cast Spell" puis "Unique Power Self Only"
Dans assignes properties, je suggère de laisser "Single Use" mais vous pouvez faire "1 charge/use" en limitant le nombre de charges pour préciser qu'on boit par gorgée plutôt que cul-sec en une fois. Surtout pas les "X uses/day". Non pas que ça crash quoi que ce soit, mais ça paraît bizarre une bouteille qui se reremplit d'elle-même pendant le repos... ou alors pour simuler un type qui fait un régime et qui n'a trouvé que ce moyen pour s'abstenir.
"Vous avez droit à une chopine par repas, monsieur Ratinier"
Voilà qui peut faire l'idée d'une nouvelle guilde : les A.A. Je m'y attèle à l'instant, d'ailleurs. Sur mon prochain module, il y aura cette redoutable guilde de nains tentant de renier leurs pulsions soiffardes, mais là n'est pas le sujet.
Dans les propriétés du module, Advanced --> emplacement OnActivateItem
S'il y a plusieurs objets de ce type (ou plusieurs boissons créées de la même manière), faire un GetTag().
Le script à placer devrait ressembler à ça :
void main()
{
object oItem = GetItemActivated();
object oIvrogne = GetItemActivator();
string sTag = GetTag(oItem);
if (sTag == "gourde")
{
AssignCommand(oIvrogne, /*action à faire*/);
}
}
NOTE: j'ignore si cela détruit automatiquement l'objet après usage mais je ne le crois pas. Si c'est ce que vous voulez, ajoutez une ligne DestroyObject(oItem, /*délai avec la destruction*/); juste avant la dernière } et pensez bien à configurer l'objet en "Single Use".
Si vous ne voulez qu'il se détruise mais que l'usage est limité, pourquoi ne pas élaborer une script (avec une fontaine ou un tonneau par exemples) où le possesseur pourra remplir sa bouteille ? (notez que cela à l'avantage qu'on peut changer le liquide contenu à chaque remplissage, il suffit d'insérer une variable de n'importe quelle nature (string, int, float) dans les 2 scripts (celui présenté ci-dessus et celui du re-remplissage), variable stocké sur la bouteille.
Petit exemple bonus :
void main()
{
object oItem = GetItemActivated();
object oIvrogne = GetItemActivator();
string sTag = GetTag(oItem);
string sItem = GetLocalString(oItem, "boisson");
if (sTag == "gourde")
{
if (sItem = "eau pure")
AssignCommand(oIvrogne, /*action à faire*/);
if (sItem = "51")
AssignCommand(oIvrogne, /*action à faire*/);
}
}
Dernier point, l' "action à faire" est en général un ApplyEffectOnObject.
Euh... j'ai bon ?
Par Caillou PierreSang le 20/9/2002 à 22:44:18 (#2198560)
Comme vous êtes tous sympa ici, et qu'on peut vous demander pas mal de trucs, j'aporte ma petite pierre à l'édifice, en mettant le script final (enfin, un des scripts) qui marche et que j'utilise.:D void main()
{
object oItem = GetItemActivated();
object oIvrogne = GetItemActivator();
string sTag = GetTag(oItem);
if (sTag == "boisson")
{
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectDazed(), oIvrogne, 10.0);
}
}
:merci: :merci:
PS : j'ai pas continué sur le AssignCommand, vu qu'y avait rien qui m'intéressait vraiment dans cette catégorie, à part le "Cast Spell", mais je suis pas un pro en script, alors je suis allé au plus simple avec le ApplyEffectToObject.
Voilà.
Merci encore.:merci:
Par Darkmore le 20/9/2002 à 23:02:38 (#2198670)
Provient du message de Elminf
Oui.une autre avec pour effets de donner 1d4 pt de degats si on est pas un nain et/ou une personne specifique ? Oui
je voudrai savoir si on pouvait aussi en faire une avec pour effet de donner un " Knockdown " sans degats ....
Merci de rêpondre a Messire Caillou et par la meme a moi aussi De rien :D
Par Caillou PierreSang le 20/9/2002 à 23:10:07 (#2198718)
Tu as fini :
1) De te prendre pour Daynos.
2)De pourrir le thread
3)De faire du HS
(Rayer les mentions inutiles, à savoir... aucune):p
Par Darkmore le 20/9/2002 à 23:15:14 (#2198750)
Elminf dépose tes plaintes aupres de Caillou ... :rolleyes:
Aller hop void main()
{
object oItem = GetItemActivated();
object oUser = GetItemActivator();
string sTag = GetTag(oItem);
if (sTag=="dwarf_only" && GetRacialType(oUser)!=RACIAL_TYPE_DWARF)
{
effect eDamage=EffectDamage(d4(1));
ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oUser);
}
else if(sTag=="knock_down")
{
effect eKnock=EffectKnockdown();
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eKnock, oUser, 3.0);
}
}
Par Caillou PierreSang le 20/9/2002 à 23:34:24 (#2198864)
Au fait, bizarre, pq tu mets "Effect eKnock" ??? Moi, pour une autre boisson j'ai mis Effect KnockDown, et ça marche bien ...:confus:
Par Elminf le 20/9/2002 à 23:48:55 (#2198954)
Par contre Darkmore pas mal le coups des reponse ... lol
Sinon pour le script avec le Knock on peut rajouter le nom d'un personnecomme pour Dwarf only ? si oui ou ?
et euh les question ct pour trois boisson differente.... une que ne peut boire que les nains et une personne speciale et se prendre sinon 1d4 ...
une autre avec pour effet knock... mais bon chais pas si c ce que tu a s fait y connais quequik en script lol :D
:merci: kan meme de l'avoir fait
Par Jedaï le 21/9/2002 à 11:32:50 (#2200712)
Par Jedaï le 21/9/2002 à 11:48:58 (#2200794)
"effect" est un type de variable tout comme "int" ou "float" ou "object" ou "string" ou "location". Donc ce qu'a fait Darkmore c'est créer une variable de type "effect" qu'il a appelé eKnock mais qu'il aurait aussi pu appeler eBiduleTrucChouette ;) (le "e" n'est pas indispensable mais c'est une convention pour montrer qu'on a affaire à une variable de type effet comme le "n" pour les entier "int" et le "o" pour les objets).
Ensuite par le biais du "=" il a affecté une valeur à cette variable eKnock, il aurait pu lui donner n'importe quelle valeur de type effet mais par souci de cohérence il lui a donné comme valeur "EffectKnockdown()" (il aurait aussi bien pu lui affecter un "EffectDamage(d4(1))" mais ça n'aurait pas vraiment correspondu au nom :cool: ).
Par ailleurs "eKnock" est plus court que "Knockdown" mais il faut garder en mémoire que le nom des variables n'as aucune importance pour le programme. :lit:
Par Darkmore le 21/9/2002 à 11:59:52 (#2200842)
J'aurais put le mettre directement dans l'Applyeffect mais ça donne des truc un peu lourd à vérifier en cas de problème.Sinon pour le script avec le Knock on peut rajouter le nom d'un personnecomme pour Dwarf only ? si oui ou ?
Tu peux le rajouter dans la condition IF ... par exemple .../...
Dans le script il y a que deux boisson, celle 1d4 si non-nain et non-Caillou :p
if (sTag=="dwarf_only")
if (GetRacialType(oUser)!=RACIAL_TYPE_DWARF || GetName(oUser)=="Caillou")
{
effect eDamage=EffectDamage(d4(1));
ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oUser);
}
Et celle qui knock le buveur.
C'est quoi la troisième :confus:
A noter que si vous vouler eviter de surcharger votre script OnActivated il peut être intéressant d'utiliser les fonctions... une fonctions par boison c'est encore plus clair en cas d'erreurs.
EDIT Oups a répondu en même temps que Jedai :merci:
EDIT2 : non en fait c'est juse que j'ai mit 10 minutes a répondre :merci:
Par Caillou PierreSang le 21/9/2002 à 15:30:15 (#2202085)
*faudra que je pense à mettre une potion qui tue tous les non-Caillou*:monstre: :monstre:
(bah c'est pour être dans la vague T4C qui débarque en ce moment sur NWN...:rasta: )
Par Elminf le 21/9/2002 à 22:55:24 (#2204778)
et puis arrive pu a m'en souvenir ... tête en l'air ...
JOL Archives 1.0.1
@ JOL / JeuxOnLine