Aller au contenu


Sort Et Necromancie


  • Veuillez vous connecter pour répondre
37 réponses à ce sujet

#1 Josse

Josse

    Fournisseur officiel de recette du gateau au chocolat chantilly


Posté 27 mai 2007 - 13:49

Bonjours, j'ai plusieurs question sur les sorts
--> Comment detecter si la cible du sort est un cadavre
--> Comment avoir la reference de ce cadavre
--> Comment savoir si il n'est pas animal (peut etre selon les factions ?)


Merci. La premiere question et la deuxieme sont de loin les plus importantes

#2 Daimyo Tai Shi

Daimyo Tai Shi

Posté 27 mai 2007 - 14:05

Citation

Bonjours, j'ai plusieurs question sur les sorts
Salut !

--> Comment detecter si la cible du sort est un cadavre
Ac un bloc OnDeath. Ou avec une fonction GetIsDead. (== 1 si la cible est morte)

--> Comment avoir la reference de ce cadavre
Ac un GetSelf pour le "selectionner" (enfin ca ne te retourne pas sa reference, mais je pense que vu tes intentions c'est ce qui devrait t'aller pour tes idées.)
Tu fais un

ref var
;déclare la variable ref
(...)
;dans un bloc de ton choix, je ne sais pas ce que tu veux faire exactement non plus...
set var to GetSelf

--> Comment savoir si il n'est pas animal (peut etre selon les factions ?)
Bonne question. Je me suis deja posé la meme question pour autre chose. Je ne sais pas si on ne peux pas plutot envisager la possibilité de tester les races jouables, ou les races tout court les unes apres les autres... A voir donc.


Voila ! N'hésites pas si tu as un probleme... Mais dans ce cas, precises tes intentions ! :green:



EDIT : je te repondrai plus tard par MP a ton message sur le post de mon mod (pas le temps je dois partir) +++

Modifié par Daimyo Tai Shi, 27 mai 2007 - 15:00.

Si, comme moi vous êtes perdu(e) sur le net : www.perdu.com


#3 Josse

Josse

    Fournisseur officiel de recette du gateau au chocolat chantilly


Posté 27 mai 2007 - 14:29

C'est vrai le "jouable" peut aussi se faire.

Merci de tes reponses, je m'en vais faire mon petit script.

#4 Daimyo Tai Shi

Daimyo Tai Shi

Posté 27 mai 2007 - 14:59

De rien, dis-moi si un probleme se présente.
Petit EDIT (trop tard vu que tu as deja lu ma reponse)
c'est GetIsDead et non IsDead (petit oubli dsl je suis allé trop vite...)

Voila ! Ca marchera sans doute mieux comme ca... ^^
:green:

A + tard et bon scriptage !!!

Si, comme moi vous êtes perdu(e) sur le net : www.perdu.com


#5 Josse

Josse

    Fournisseur officiel de recette du gateau au chocolat chantilly


Posté 27 mai 2007 - 15:10

Merci. Juste une autre question

Donc lorsque je fait le script suivant, cela me recupere le cadavre

ref cadavre

begin scripteffectstart; le bloc pour le debut d'un effet, plus sur que ca soit lui
set cadavre to getself; recupere la cible du sort ?
if cadavre.getisdead == 0; si il  n'est pas mort
return; stop le script
endif
if cadavre.getisplayablerace == 0, savoir si le cadavre est n'est pas"humain"
return
endif
; et hop la suite

end

En faite, mon getself recupere bien la cible du sort ?

Modifié par Josse, 27 mai 2007 - 15:14.


#6 Daimyo Tai Shi

Daimyo Tai Shi

Posté 27 mai 2007 - 18:59

set cadavre to getself
en fait, GetSelf correspond à "lui-meme", donc dans notre cas (celui d'un sort) c'est en effet "toute cible affectée par le sort". Donc en admettant que tu le lances sur un cadavre, il prendra la "valeur" de la reference touchée (donc le cadavre). Maintenant, en considérant un sort a effet de zone, il touchera toutes les cibles dans la zone (dont les vivantes), et ensuite il faudra utiliser la détection de la mort ou non, et des races jouables ou non...


Pour ce qui est de ton debut de script, oui ce sont les bonnes fonctions et ecriture, mais j'aurais plutot vu ca en imbriquant, pour cumuler les effet. Donc :

__________________________________________________
ScriptName NomduScript

ref cadavre


Begin ScriptEffectStart

set cadavre to GetSelf

if ( cadavre.getisdead == 1 )
  if ( cadavre.getisplayablerace == 1 )
    resurrect
;   rajoute aussi un effet pms, ca fera meilleure impression, par exemple un effet de mysticisme (ou capture d'ame...) sur cadavre. Je ne connais plus son ID par contre...
  else
;   Tu peux rajouter un 'Message' ou 'MessageBox' indiquant l'echec et sa cause (ici ca sera a cause de la race), par ex "Le sort n'a aucun effet car la cible n'est pas une race 'intelligente'"
    return
else
; Tu peux rajouter un 'Message' ou 'MessageBox' indiquant l'echec et sa cause (ici ca sera a cause de l'etat "en vie"), par ex "Le sort n'a aucun effet car la cible est encore vivante"
  return
endif

End
_____________________________________


A noter aussi que si tu utilises cette manière (getisplayablerace) tu n'auras pas les races non jouables (dremoras, saints dorés et vils seducteurs (SI)). Sinon, si tu les veux aussi inclues, utilises un test en imbriquant les races les unes apres les autres (en testant la race de la cible, et non sa jouabilité...)



En esperant t'avoir aidé, et que ca marche (normalement oui...)...
N'hésite pas si tu as des questions !

PS : il existe un sort de "réanimation" in TESCS qui a un effet non scripté correspondant à un effet similaire à ce qu'on vient de faire... :shocked:
Maintenant, si tu veux rajouter d'autres choses, utilises plutot le script en le developpant plus...

+++ :)

Si, comme moi vous êtes perdu(e) sur le net : www.perdu.com


#7 Josse

Josse

    Fournisseur officiel de recette du gateau au chocolat chantilly


Posté 27 mai 2007 - 19:42

Merci de ton aide. Mais je compte pas reanimé le mort.

Juste a partir de celui ci creer un squelette (pour l'instant). Reste la question du comment invoquer une creature par "non-sort" (par script)

Je fait un placeatme (enfin je crois) et disable lorsqu'il faut

Je vais aussi essaiyé que le player puisse controler au moins 5creatures (mais la, sa vas etre plus dure, deja une ^^)

Je metterais sans doute mon script ici. En faite, il reste juste a verifié d'autres condition (getitemcount etc ...) et creer la creature,

#8 Daimyo Tai Shi

Daimyo Tai Shi

Posté 27 mai 2007 - 19:54

Citation

Je fait un placeatme (enfin je crois) et disable lorsqu'il faut
Oui, mais attention, c'est une fonction a bannir si trop utilisée (par ex si c pour placer un squelette, ca doit etre bon, le squelette disparaissant au bout d'un certain temps quand il est mort (mais attention, car disable ne supprime pas l'objet... Il y a un sujet deja créé par Gamall la-dessus, regarde ici pour en savoir plus.)


Citation

Juste a partir de celui ci creer un squelette (pour l'instant). Reste la question du comment invoquer une creature par "non-sort" (par script)
Hmm... Donc pas de resurrect. Il te suffira d'utiliser des variables float prenant les valeurs des positions en X, Y et Z du cadavre, puis de tester les objets nécessaires dans l'inventaire du joueur, et enfin de choisir entre PlaceAtMe (prudence donc...) et MoveTo (vers les X, Y, et Z positions du cadavre) (dans ce cas, meilleur puisque de toutes facons tu limites le nombre de créatures (à cinq), en faisant resurrect/enable sur le squelette "ramené" au cadavre...

Attention, petite mise en garde, tu vas vite de retrouver confronté à un probleme : celui du multi-reanimation. C'est a dire que pour peu que tu aies suffisamment d'objets dans ton inventaire, tu pourras faire cinq squelettes a partir du meme cadavre (sauf si tu le disable, mais attention, problemes de compatibilité si par exemple le PNJ a un objet de quete sur lui...) Bref, c'est ca qu'il va falloir regler et qui sera, a mon avis, le plus chiant a decider...



Okok, je crois que je vois ce que tu veux faire... C'est différent de ce que je fais dans mon mod (menfin si tu veux un coup de main question scripting, n'hésite pas a me demander, je me debrouille ^^)
(du coup j'ai repondu a ton post sur le topic de la Tour de Zhaalfir : ca m'interesse de voir comment tu comptes faire, meme si c'est quelque peu différent de ma facon de faire... Et puis la diversité c'est bien, alors comme dit a l'instant, n'hésite pas a reposter si tu as des questions !)


+++ et bon courage !

Si, comme moi vous êtes perdu(e) sur le net : www.perdu.com


#9 Josse

Josse

    Fournisseur officiel de recette du gateau au chocolat chantilly


Posté 27 mai 2007 - 20:44

J'ai commencé mon script. Bon apres, des test, la question de ce sujet allait bien, et puis lorsque je suis partit pour la suite, le debut a merde. Il ne trouve plus les bons truc (il croit que ma condtion est fausse alors que non ...) en faite je crois que c'est arrivé depuis que j'ai mis une area, parsque sinon, j'avais trop de mal a lancé mon sort sur le npc (par terre, je devais m'acroupir ... et encore)

Voic la partie qui bug
if  cadavre.getdead == 1 && cadavre.getisplayablerace == 1
else
	messagebox "Le cible n'est pas autorisée pour de la necromancie"
	return
endif

Et le debut de script entier qui fait appel au script de quête MUnecroquest. Il gere le niveau des gemmes (et donc le temps de vie du serviteur), si il est commandé (pour l'instant tout le temps non car jai pas encore fait les ordres). J'utilise placeatme, mais avec le temps, le serviteur se fait tuer, sinon il meurt des coups du player car il est hostile. Et si le player le commande et qu'il a du temps infine, il mourra bien un jour.
Spoiler

JE te laisse mon msn si tu veux coser Josselin6@hotmail.fr ... PAs de reponse dans ton topic, bizare

Modifié par Josse, 27 mai 2007 - 20:45.


#10 Le Magicien

Le Magicien

    Maraboutage in Tescs


Posté 27 mai 2007 - 20:53

Voir le messageJosse, le 27.05.2007 à 20:44, dit :

Voic la partie qui bug
if  cadavre.getdead == 1 && cadavre.getisplayablerace == 1
else
	messagebox "Le cible n'est pas autorisée pour de la necromancie"
	return
endif
Salut,

pourquoi ne pas mettre
if !( (cadavre.getdead == 1) && (cadavre.getisplayablerace == 1))
	messagebox "Le cible n'est pas autorisée pour de la necromancie"
	return
endif
ou
if ( (cadavre.getdead == 0) || (cadavre.getisplayablerace == 0))
	messagebox "Le cible n'est pas autorisée pour de la necromancie"
	return
endif
ça evite d'utiliser un else alors que tu n'as rien mis dans le if ...

A plus

#11 Josse

Josse

    Fournisseur officiel de recette du gateau au chocolat chantilly


Posté 27 mai 2007 - 21:04

Cela revient au meme. J'avais mis le || avant mais je croyais que c'était cela qui faisait bugé, mais c'est sans doute la area

#12 Daimyo Tai Shi

Daimyo Tai Shi

Posté 27 mai 2007 - 21:17

Apres ce que le Magicien vient de dire, je rajouterai :


Citation

en faite je crois que c'est arrivé depuis que j'ai mis une area, parsque sinon, j'avais trop de mal a lancé mon sort sur le npc (par terre, je devais m'acroupir ... et encore)
Pourquoi ne pas le mettre à distance plutot qu'utiliser une area ? :shocked:

1- vérifie que tes variables sont bien déclarées dans les quetes et objets correspondants

2-

Citation

set MUnecroquest.invoc to cadavre.placeatme MUsqueletteinvochostile 1 1,1
Je ne comprends pas... cadavre est une variable de référence. Or tu la déclares dans ton script "MUspellnecromanciescript", càd un script gérant le sort de réanimation.
Donc quel rapport avec ton MUsqueletteinvochostile ?
Le probleme vient peut-etre de la... Mais je ne vois pas ce que tu as cherché a faire. A quoi sert cette variable invoc ?


la area...
En théorie elle fonctionne correctemement, meme avec un sort a effet de zone. Mais dans la plupart de mes sorts, mes effets de zone ne sont pas les effets de zone basiques et j'utilise cette methode :
1- exclure le player des effets
2- utiliser un appel d'activateur (dans le script du sort qu'a le PJ) qui lance le sort réel à ta place

Donc si tu veux tu peux toujours essayer, mais je ne pense pas que ca vienne de la.



Pourrais-tu en dire plus sur le probleme ?
A quel moment survient-il ? Compilation ? Lancement du jeu ? Utilisation in game ?
Quel message s'affiche, ou que se passe-t-il ?

Si, comme moi vous êtes perdu(e) sur le net : www.perdu.com


#13 Josse

Josse

    Fournisseur officiel de recette du gateau au chocolat chantilly


Posté 27 mai 2007 - 21:25

Invoc est la ref de la creature creer pour la tuer avec le temps

Et MUsqueletteinvochostile, c'est une creature que j'ai faite (un squelette)

En faite, je sais pas mettre une distance, j'ai donc cru que c'était area

LE probleme, c'est lors de l'utilisation du sort sur mon pnj mort, il me sort le message "Le cible n'est pas autorisée pour de la necromancie" et donc que cela :
if  cadavre.getdead == 1 && cadavre.getisplayablerace == 1
c'est pas bon

#14 Daimyo Tai Shi

Daimyo Tai Shi

Posté 27 mai 2007 - 21:36

et ta cible est de quelle race exactement ?

Essaie de ne pas laisser de vide, pour voir mets un Message "C'est ok" entre le if ( cadavre.getdead == 1 ) && ( cadavre.getisplayablerace == 1 )
et le else.


Pour mettre une distance, pas besoin de toucher au area, mais faire derouler le menu deroulant indiquant "soit, contact, cible" et selectionner "cible".

Modifié par Daimyo Tai Shi, 27 mai 2007 - 21:37.

Si, comme moi vous êtes perdu(e) sur le net : www.perdu.com


#15 Josse

Josse

    Fournisseur officiel de recette du gateau au chocolat chantilly


Posté 27 mai 2007 - 21:45

J'avais deja mis cible avant, mais sa faisait pas de distance (enfin je crois ^^)

SA sert a rien de mettre un message, l'autre (la cible est incorecte) nous indique que les deux conditions sont pas bonne. Sans doute que le getselfe retourne aussi des objets autres que le cadavre qui font bugé le script. Je testerait demain sans area

#16 Daimyo Tai Shi

Daimyo Tai Shi

Posté 27 mai 2007 - 22:01

Citation

SA sert a rien de mettre un message, l'autre (la cible est incorecte)
Oui, mais je sais pas ca me parait plus logique de tester la condition qu'on a mis en place, et pas celle qui est definie par un simple "else"...
Je voulais dire par là, remplacer ton Message actuel par celui que je te dis, qui t'indiquera quand ca marche, et non quand ca marche pas lol !
Simple logique, etant donné que le bloc "if/endif" (en fait else/endif) commence par un else, donc tu ne teste pas les conditions mais leur inverse. Or pour voir si ca marche, autant tester les conditions. lol c'est pas essentiel, mais c'est surtout pour la simplicité du test, apres tu pourras modifier sans probleme...

Citation

J'avais deja mis cible avant, mais sa faisait pas de distance (enfin je crois ^^)
Si... Sauf que tu as du mettre un effet "script effect" et donc tu devrais rajouter un effet visuel quelconque, sinon tu ne verras que l'animation du bras mais aucun projectile...
Mets n'importe quoi pour le visu, ca tu pourras toujours modifier apres...

Citation

Je testerait demain sans area
Oui, encore qu'a mon avis le probleme ne vienne pas de la, mais de ce que je t'ai dit un peu plus haut... Tu devrais essayer de le transformer en commentaire pour voir si c'est ca qui pose probleme ou non...

ok a demain alors... bonne nuit ! :shock:

Si, comme moi vous êtes perdu(e) sur le net : www.perdu.com


#17 Le Magicien

Le Magicien

    Maraboutage in Tescs


Posté 27 mai 2007 - 22:55

Je pense avoir a peu près compris ce que tu compte faire

je te propose d'essayer (sans placer le code pour réanimer dans un premier temps) ce script afin de tester s'il sagit d'un probleme de condition ...
je me suis permis de restructurer ton script afin qu'il soit plus clair (juste un deplacement des conditions que tu utilisais )

pour ce qui est des commandes que tu utilises dans les dernières lignes de ton script  je pense que c'est elles qui te pose problème .

scn MUspellnecromanciescript

ref cadavre


begin ScriptEffectStart
 Set cadavre to GetSelf

 if ( (cadavre.getdead == 1) && (cadavre.getisplayablerace == 1))
  if cadavre.getitemcount BlackSoulGemFilled > 0; gemme noir, temps infinie
   set MUnecroquest.temps to -1 
  elseif cadavre.getitemcount  SoulGem3Common1PettySoul || cadavre.getitemcount SoulGem3Common2LesserSoul > 0 || SoulGem3Common3CommonSoul > 0; temps 30s
   set MUnecroquest.temps to 30
  elseif cadavre.getitemcount SoulGem2Lesser1PettySoul || cadavre.getitemcount SoulGem2Lesser2LesserSoul  > 0; temps 20s
   set MUnecroquest.temps to 20
  elseif cadavre.getitemcount SoulGem1Petty1PettySoul > 0; temps 10s
   set MUnecroquest.temps to 10
  endif
  
  if (cadavre.getitemcount ScrollStandardCommandCreature2Apprentice > 0 )||( cadavre.getitemcount ScrollStandardCommandCreature3Expert > 0)
   messagebox "La cible est ranimée de manière amicale" 
;code pour la réanimation ou/et deplacement ou je sais pas trop ce que tu voulais faire ...
;eventuelement un :
;cadavre.setav aggression 0
;cadavre.evp
  else
   messagebox "La cible est ranimée de manière hostile"
;code pour la réanimation et le deplacement comme au dessus plus les 3 lignes ci-dessous pour rendre le cadavre hostile
;cadavre.setav aggression 100
;cadavre.setrestrained 0 
;cadavre.evp
  endif
 else
  messagebox "La cible n'est pas autorisée pour de la necromancie"
  return
 endif

end

au fait, tu utilises une variable de quete pour gérer le temp d'invocation ? c'est bien ça ?
sinon c'est peut-être la variable MUnecroquest.temps qui te pose problème .

dsl pour le post precedent je n'avais pas lu le script au complet ...

Bon chance .

Modifié par Le Magicien, 27 mai 2007 - 22:59.


#18 Daimyo Tai Shi

Daimyo Tai Shi

Posté 27 mai 2007 - 23:08

En tous cas a la lecture je vois pas de probleme. :wacko:

Citation

pour ce qui est des commandes que tu utilises dans les dernières lignes de ton script je pense que c'est elles qui te pose problème .
On est d'accord... Ton truc bizarre sur la variable cadavre notamment...

Je rajouterai juste que si tu testes les conditions avec un :
if (cadavre.getitemcount ScrollStandardCommandCreature2Apprentice > 0 )||( cadavre.getitemcount ScrollStandardCommandCreature3Expert > 0)
tu devrais faire un removeitem de ces éléments, parce que sinon ca n'a guere d'utilité (enfin bon...)
Bref, commentaire sans doute inutile, en tous cas tres tres secondaire, mais des fois que tu l'aies oublié (ou si c'est fait expres désolé...), et puis en fait fallait bien que je le sorte a un moment, scuse... :shock:

Voila, bah reste plus qu'a tester alors...
Bonne soirée et bon courage !

Modifié par Daimyo Tai Shi, 27 mai 2007 - 23:10.

Si, comme moi vous êtes perdu(e) sur le net : www.perdu.com


#19 Le Magicien

Le Magicien

    Maraboutage in Tescs


Posté 27 mai 2007 - 23:26

Voir le messageDaimyo Tai Shi, le 27.05.2007 à 23:08, dit :

Je rajouterai juste que si tu testes les conditions avec un :
if (cadavre.getitemcount ScrollStandardCommandCreature2Apprentice > 0 )||( cadavre.getitemcount ScrollStandardCommandCreature3Expert > 0)
tu devrais faire un removeitem de ces éléments, parce que sinon ca n'a guere d'utilité (enfin bon...)
Bref, commentaire sans doute inutile, en tous cas tres tres secondaire, mais des fois que tu l'aies oublié (ou si c'est fait expres désolé...), et puis en fait fallait bien que je le sorte a un moment, scuse... :wacko:
Merci

je pense que Josse compte tuer et/ou "disabler" le cadavre une fois qu'il aura été inovqué et arrivé au bout de son temp d'invocation donc au pire seul un voleur pourrait recuperer la/les gemme(s) et le/les parchemin(s) ...
je comptais les enlever moi aussi mais comme j'ai lu je sais plus ou qu'on parlait de menu pour donner des ordres je pense que cette manip etait prevue dans d'autres scripts ...

Sinon pourquoi ne pas cumuler les durée? je veux dire 2 gemmes à 20 secondes donnes 40 secondes etc...

Mais bon on verra ça un fois que le script fonctionnera correctement  .

A Bientot :shock:

Modifié par Le Magicien, 27 mai 2007 - 23:27.


#20 Josse

Josse

    Fournisseur officiel de recette du gateau au chocolat chantilly


Posté 28 mai 2007 - 07:50

Bonne idée le magicien, reste plus qu'a rajouter plein de ligne de code pour faire selon le nombre de gemmes ^^. Mais je pense que sa reste un peut grossbill. Les petites gemmes remplie, c'est facile a trouvé, t'en met 10, ton truc dure 100s ... m'enfin, avec une enorme gemme remplie c'est 160s. on verra selon la difficulté du truc

Pour les cadavres, ils sont envoyé dans une cell poubelle, donc pas de reprise des objets (sinon trop facile ...). Quand aux servviteurs, il sont soit tués avec le temps (qui est bien geré dans une quête, comme la reference invoc) soit par le player (si il est hostile) soit pas du tout (mais bon, le player ne pourra en creer que 5 donc sa ira ...)

Pour la distance, j'ai bien mis un truc d'invoc. vais mettre la boule de feu

Pour les dernieres lignes du script, je vois pas bien le probleme, elles sont juste la pour dire si le serviteur est hostile, si oui on le creer sinon on met commande (variable dans une quête) a 1

A noter qu'a la fin, je pense faire que des variable au debut (du genre commande a 1) et creer le serviteur selon ses variable a part (au lieu de le faire a chaque fois qu'il faut)

Quand a ton script le magicien, je le trouve au contraire pas tres claire car tu met emboite les diverses etapes, donc si je veux modifié, je pige plus trop rien, tout est melangé. MAis je regarde si je vois des trucs plus interressant (j'en ai d'ailleur vue ^^)
Sinon, je perciste a dire que c'est la area qui bug car avant que je la mette sa marchait. Je vais tester cela comme sa on verra bien

Modifié par Josse, 28 mai 2007 - 07:52.


#21 Saphaniax'

Saphaniax'

Posté 28 mai 2007 - 12:13

Bonjours à tous

Je suis un peu votre projet depuis un temps mais :

Citation

ils sont envoyé dans une cell poubelle,

N'est il pas un peu risqué de faire ceci ?
Car après tout les cadavres/serviteur ne seront pas suprimer et celà risquerai de faire largement grimper la taille des sauvegardes en flèches, au début celà ne serais peut être pas visible mais un cadavre +cadavre et ce pendant pas mal de temps ....

En tout cas bon courage :) .
L'aventure est inéxistante pour la pluparts des gens, alors qu'il sufit de savoir la prendre .
Membre de la team MorrowindStargate
Vous êtes en mal d'aventure ?
Alors n'attendez plus et partez à la découverte de Morrowind Stargate le futur Tc de la porte des étoiles :

http://www.rochmedia...ex.php?act=home

#22 Josse

Josse

    Fournisseur officiel de recette du gateau au chocolat chantilly


Posté 28 mai 2007 - 12:15

Non car les cadavres sont suprimmé tous les 3 jours, donc normalement, ils sont definitivement suprimmés. Idem avec les serviteurs qui mourront.

#23 Daimyo Tai Shi

Daimyo Tai Shi

Posté 28 mai 2007 - 12:19

Citation

je comptais les enlever moi aussi mais comme j'ai lu je sais plus ou qu'on parlait de menu pour donner des ordres je pense que cette manip etait prevue dans d'autres scripts ...
Mieux vaut un bon gros script que plein de petits scripts a activer dans un autre (enfin pas trop gros quand meme, mais bon perso j'en fais de 800 lignes passées parfois, qui marchent très bien...)
Non, mais je pensais qu'il aurait fait ses MessageBox dans ce script en fait...

Citation

je pense que Josse compte tuer et/ou "disabler" le cadavre une fois qu'il aura été inovqué
Moui je pensais bien... Mais probleme si le cadavre contient des objets de quetes donc (enfin pas de probleme si on le fouille avant de lancer  le sort)


Citation

Pour les cadavres, ils sont envoyé dans une cell poubelle, donc pas de reprise des objets (sinon trop facile ...). Quand aux servviteurs, il sont soit tués avec le temps (qui est bien geré dans une quête, comme la reference invoc) soit par le player (si il est hostile) soit pas du tout (mais bon, le player ne pourra en creer que 5 donc sa ira ...)
Pas d'aintéret. Tu peux les disable sans probleme. De toutes facons les cadavres disparaissent au bout de trois jours, meme disablés...
Quant aux serviteurs, si tu comptes mettre 5 maximum, tu devrais créer 5 references, et utiliser une gestion des references, en faisant des resurrect/moveto player avec ordre de priorité 1 à 5 selon les serviteurs. Je sais pas si tu vois ce que je veux dire, mais ayant une limitation ca serait sans doute mieux.

Citation

Pour la distance, j'ai bien mis un truc d'invoc. vais mettre la boule de feu
Attention, il ne faut pas mettre que "Invocation" pour avoir un visu. Choisir l'ecole permet de savoir a quelle ecole appartient l'effet, c'est tout. Il faut aussi mettre un effet visuel (par exemple "ouverture") indépendant de l'ecole choisie. Càd que tu peux mettre "invocation" et avoir un visu de lancement de sort "ouverture"...

Citation

Pour les dernieres lignes du script, je vois pas bien le probleme, elles sont juste la pour dire si le serviteur est hostile, si oui on le creer sinon on met commande (variable dans une quête) a 1
moi je le vois :

Citation

set MUnecroquest.invoc to cadavre.placeatme MUsqueletteinvochostile 1 1,1
Tu mets le variable "invoc" de la quete "MUnecroquest" à la 'valeur' de ton squelette créé par placeatme "MUsqueletteinvochostile" de la variable "cadavre".
Et là, avec un peu de bon sens, tu te rends compte que ca ne veut rien dire.
Je pense que tu as dû inverser "cadavre" et "placeatme MUsqueletteinvochostile 1 1,1", car dans ce cas ca peut etre logique de mettre la variable invoc a la valeur de la variable cadavre (variable appartenant au squelette créé par placeatme). Tu vois le probleme maintenant ?

Citation

A noter qu'a la fin, je pense faire que des variable au debut (du genre commande a 1) et creer le serviteur selon ses variable a part (au lieu de le faire a chaque fois qu'il faut)
Comment ca? Explique un peu je pige pas. Tu comptes mettre les variables sur des scripts claqués sur les serviteurs ? Dans ce cas il te faudrait 5 ID différents (au lieu des 5 Ref différentes que je te proposais juste au dessus) sinon tu ne pourrais pas gérer efficacement ta "création" (ou plutot deplacement par moveto/resurrect) de serviteurs... Si c'est pas ca que tu voulais dire explique, c'est ce que j'ai calé...

Citation

Quand a ton script le magicien, je le trouve au contraire pas tres claire car tu met emboite les diverses etapes, donc si je veux modifié, je pige plus trop rien, tout est melangé. MAis je regarde si je vois des trucs plus interressant (j'en ai d'ailleur vue ^^)
Non le script est bon a priori (a tester mais a vue d'oeil ca a l'air bon), les imbrications aussi, et les variables/conditions egalement. C'est clair, concis, avec des commentaires, bref ca me parait bon pour tester. Maintenant, si tu as mieux, n'hesites pas a poster qu'on voit, si ca se trouve on n'est pas sur le bon chemin... :)

Citation

Sinon, je perciste a dire que c'est la area qui bug car avant que je la mette sa marchait. Je vais tester cela comme sa on verra bien
Si tu veux a tout prix une zone d'effet (area) tu peux utiliser un activateur esclave, et en placer une reference. Puis ton sort permet de l'amener par moveto au player, et l'activateur lance le sort réel sur une zone l'entourant. Si la ca marche pas au moins tu sauras que le bug ne vient pas d'une area. Si tu n'arrives pas a scripter ca demande moi je te posterai un script plus tard dans la journée.
Bon, ca te fera un effet tout autour de toi, mais c'est quand meme une zone... (n'oublie pas de mettre le sort appelant sur 'soit' (en plus ca fera penser a la reanimation dans Diablo II...))



+++ !

Si, comme moi vous êtes perdu(e) sur le net : www.perdu.com


#24 Josse

Josse

    Fournisseur officiel de recette du gateau au chocolat chantilly


Posté 28 mai 2007 - 12:55

Non je veux pas d'area, c'était pour mettre une distance.

Au contraire
set MUnecroquest.invoc to cadavre.placeatme MUsqueletteinvochostile 1 1,1
est plus logique
C'est reference la creature qui est invoqué
au lieu de dire c'est creature la reference qui est invoqué ?
D'ailleur, on ne peut placer une reference, et encore pire si elle n'a aucune valeur ...
c'est d'ailleur expliqué ici a la fin ...


Si le cadavre contient des objets de quêtes, c'est au PJ de faire attention ...

Pour les ordres, je peux pas mettre dans le meme script vu que c'est dans un bloc onactivate et que c'est le squelette qui doit etre activé ...

POur les cadavres, je les disable pas car ils prennent tout de meme de la place dans la cell alors que dans la cell poubelle il ne prenne rien, c'est de l'optimisation. SI un gros combat, le cadavre en plus peut faire ramer, sans il le fera moins. Je procede comme cela lorsque mon pnj n'est plus utile

Pour les variables, c'est des variables d'etats (entre guillemet). Au lieu d'ecrire dix fois la meme ligne dans le script, on creer des variables, et a la fin du script selon celles ci, on creer la bonne creatures. C'est pour bien demarquer les etapes ...

EDIT : c'est bien area qui plantait, sa remarche. Bon jme lance dans des test de temps et puis apres les types de creatures

Modifié par Josse, 28 mai 2007 - 14:25.


#25 Le Magicien

Le Magicien

    Maraboutage in Tescs


Posté 28 mai 2007 - 16:20

Voir le messageJosse, le 28.05.2007 à 07:50, dit :

Bonne idée le magicien, reste plus qu'a rajouter plein de ligne de code pour faire selon le nombre de gemmes ^^. Mais je pense que sa reste un peut grossbill. Les petites gemmes remplie, c'est facile a trouvé, t'en met 10, ton truc dure 100s ... m'enfin, avec une enorme gemme remplie c'est 160s. on verra selon la difficulté du truc
...

...
Quand a ton script le magicien, je le trouve au contraire pas tres claire car tu met emboite les diverses etapes, donc si je veux modifié, je pige plus trop rien, tout est melangé. MAis je regarde si je vois des trucs plus interressant (j'en ai d'ailleur vue ^^)
Sinon, je perciste a dire que c'est la area qui bug car avant que je la mette sa marchait. Je vais tester cela comme sa on verra bien

salut

pour mon script je le trouve plus clair car justement imbriquer et structurer, :) enfin bref j'avais justement placé des commentaires afin que tu saches ou placer ton code donc ...

pour ce qui est des durées cumulées ca donnerai un truc du genre  :

scn MUspellnecromanciescript

ref cadavre
short NbGemme

begin ScriptEffectStart
  Set cadavre to GetSelf

  if ( (cadavre.getdead == 1) && (cadavre.getisplayablerace == 1))
	;init de la variable de temps
	 set MUnecroquest.temps to 0



   ;Incrementation de la variable de temps en fonction du nombre de gemmes
	set NbGemme to cadavre.getitemcount SoulGem1Petty1PettySoul
	 set MUnecroquest.temps to MUnecroquest.temps+10*NbGemme
	 cadavre.removeitem SoulGem1Petty1PettySoul,NbGemme

	set NbGemme to cadavre.getitemcount SoulGem2Lesser1PettySoul
	 set MUnecroquest.temps to MUnecroquest.temps+20*NbGemme
	 cadavre.removeitem SoulGem2Lesser1PettySoul,NbGemme

	set NbGemme to cadavre.getitemcount SoulGem2Lesser2LesserSoul  
	 set MUnecroquest.temps to MUnecroquest.temps+20*NbGemme
	 cadavre.removeitem SoulGem2Lesser2LesserSoul,NbGemme

	set NbGemme to cadavre.getitemcount SoulGem3Common1PettySoul 
	 set MUnecroquest.temps to MUnecroquest.temps+30*NbGemme
	 cadavre.removeitem SoulGem3Common1PettySoul ,NbGemme

	set NbGemme to cadavre.getitemcount SoulGem3Common1PettySoul 
	 set MUnecroquest.temps to MUnecroquest.temps+30*NbGemme
	 cadavre.removeitem SoulGem3Common1PettySoul ,NbGemme

	set NbGemme to cadavre.getitemcount SoulGem3Common2LesserSoul 
	 set MUnecroquest.temps to MUnecroquest.temps+30*NbGemme
	 cadavre.removeitem SoulGem3Common2LesserSoul ,NbGemme

	set NbGemme to cadavre.getitemcount SoulGem3Common3CommonSoul 
	 set MUnecroquest.temps to MUnecroquest.temps+30*NbGemme
	 cadavre.removeitem SoulGem3Common3CommonSoul ,NbGemme

   ;si gemme noir alors -1 pour le temps dans tous les cas
	set NbGemme to cadavre.getitemcount BlackSoulGemFilled
	if (NbGemme > 0)
	  set MUnecroquest.temps to -1 
	  cadavre.removeitem BlackSoulGemFilled ,NbGemme
	endif

  
	if (cadavre.getitemcount ScrollStandardCommandCreature2Apprentice > 0 )||( cadavre.getitemcount ScrollStandardCommandCreature3Expert > 0)

	  messagebox "La cible est ranimée de manière amicale" 
	 ;Le code pour le deplacement de ton serviteur commandable est à placer ici 
	 ;exemple :

	 ;serviteurref.ResurrectActor 
	 ;serviteurref.ResetHealth 
	 ;serviteurref.moveto cadavre
	 ;cadavre.disable
	 ;Serviteurref.setav aggression 0
	 ;Serviteurref.evp

	else

	  messagebox "La cible est ranimée de manière hostile"
	 ;Le code pour le deplacement de ton serviteur hostile est à placer ici 
	 ;exemple :

	 ;serviteurref.ResurrectActor	 
	 ;serviteurref.ResetHealth 
	 ;serviteurref.moveto cadavre
	 ;cadavre.disable
	 ;Serviteurref.setav aggression 100
	 ;Serviteurref.setrestrained 0 
	 ;Serviteurref.evp

	endif
  else
	messagebox "La cible n'est pas autorisée pour de la necromancie"
	return
  endif

end
j'espère que tu trouves ce script plus clair ...

Et enfin, je suis de l'avis de Daimyo Tai Shi sur les dernières lignes de ton script et j'ai mis en commentaire une façon d'appeler ton serviteur et de l'initialiser ... reste juste a prevoir ses packages et le moyen de lui donner des ordres
une fois disabler si tu veux deplacer le cadavre ... pourquoi pas ...

A plus .

Modifié par Le Magicien, 28 mai 2007 - 20:44.





0 utilisateur(s) li(sen)t ce sujet

0 membre(s), 0 invité(s), 0 utilisateur(s) anonyme(s)