Sort Et Necromancie
#26
Posté 28 mai 2007 - 17:18
Pour les ordres, je suis obligé de faire un script a part attaché a la creature. Mais j'ai toujours du mal avec les message box pour recuperer les valeurs, alors je ne fait pas encore cela
Pour l'instant, j'ai resolu les problemes de temps, et la je commence les differenttes creations, mais je trouve pas d'idée sur les objets a mettre pour faire les creations (aide ^^)
Sinon, je pense que cela vas etre tres trop dure de faire 5 creatures, m'enfin, j'essayerait
#27
Posté 29 mai 2007 - 00:30
Citation
Citation
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 ...
On met normalement :
set GLOB.Var to GLOB.Var
ac ce que j'appelle GLOB soit une reference, soit un objectID, soit une quete, soit un dialogue (doute là dessus), soit un script (doute aussi là-dessus).
Or toi tu mets :
set GLOB(quest).Var to Var.GLOB(reference)
D'où le probleme. Tu vois ou pas? Mais si tu as changé de script, il n'apparait plus, donc ce n'est plus un probleme... Ne nous attardons pas non plus trop la-dessus...
Citation
area = zone, pas distance (petite erreur de frappe peut-etre)
Citation
Citation
Citation
@Le Magicien : Concernant ton script, a la lecture je plussoie il est bon a priori, et bien organisé. Juste une remarque/question :
set NbGemme to cadavre.getitemcount SoulGem1Petty1PettySoul
set MUnecroquest.temps to MUnecroquest.temps+10*NbGemme
cadavre.removeitem SoulGem1Petty1PettySoul,NbGemme
Tu testes le nombre de gemmes sur le cadavre là. Ca veut dire qu'il faut les lui placer "dedans" avant de lancer le sort. C'etait bien ce que voulait Josse ? J'avais pas calé qu'il le voulait sur le cadavre. Pour ce que ca change dans le script tu me diras...
Si, comme moi vous êtes perdu(e) sur le net : www.perdu.com
#28
Posté 29 mai 2007 - 03:29
Daimyo Tai Shi, le 29.05.2007 à 00:30, dit :
set NbGemme to cadavre.getitemcount SoulGem1Petty1PettySoul
set MUnecroquest.temps to MUnecroquest.temps+10*NbGemme
cadavre.removeitem SoulGem1Petty1PettySoul,NbGemme
Tu testes le nombre de gemmes sur le cadavre là. Ca veut dire qu'il faut les lui placer "dedans" avant de lancer le sort. C'etait bien ce que voulait Josse ? J'avais pas calé qu'il le voulait sur le cadavre. Pour ce que ca change dans le script tu me diras...
il se peut que je me trompe, mais c'est ce qui m'avait semblé .
de plus dans le script d'origine il effectuait ses tests sur le cadavre donc je suis parti sur le principe qu'avant de lancer le sort il fallait placer les gemmes et les parchemins sur le cadavre .
Josse, le 27.05.2007 à 20:44, dit :
pour la ligne
Josse, le 28.05.2007 à 12:55, dit :
est plus logique
C'est reference la creature qui est invoqué
mais si tu utilise des references persistantes (Serviteurref pour l'exemple de mon script )
il aurait été plus simple et moins lourd d'utiliser la ref directement dans ta quete, et dans ce cas d'utiliser :
cadavre.placeatme MUsqueletteinvochostile 1 1,1
voir
MUsqueletteinvochostile.moveto cadavre
dans ton script .
Perso j'aime pas trop utiliser la commande placeatme d'ou l'exemple dans mon script avec un petit serviteurref.enable à rajouter avant le resurectactor dans le cas ou il aurait été disablé ...
A plus
Modifié par Le Magicien, 29 mai 2007 - 04:35.
#29
Posté 29 mai 2007 - 08:58
Faire nuance entre invoc et cadavre
Le cadavre c'est la cadavre. (d'ailleur jviens de me rendre compte d'une grossiere erreur d'argument avant ^^ donc personne n'a raison ni tord)
Invoc c'est la creature invoqué.
La ligne
cadavre.placeatme MUsqueletteinvochostile 1 1,1
veut dire de placer un MUsqueletteinvochostile (une ID) a l'endroit ou se trouve le cadavre. Et non pas d'invoquer un cadavre ...
set MUnecroquest.invoc to cadavre.placeatme MUsqueletteinvochostile 1 1,1
Et le rajout, c'est pour donner une referance a cette creature creer
Je vous conseille a tous les deux d'aller faire un tour sur le wiwiki a la fonction placeatme.
Non non, vu que les parchemins/ gemmes etc ... sont sur cadavre, avec un moveto dans ma poubelle, le player ne pourra rien recuperé ... (ni meme le cadavre qui est de loin le truc le plus rare)
#30
Posté 29 mai 2007 - 13:26
Citation
cadavre.placeatme MUsqueletteinvochostile 1 1,1
veut dire de placer un MUsqueletteinvochostile (une ID) a l'endroit ou se trouve le cadavre. Et non pas d'invoquer un cadavre ...
Je pensais que invoc etait une variable (type numerique). Forcément j'avais un probleme de compréhension de ce qui était souhaité.
Vu comme ca, ok ta ligne est bonne. Mais si tu veux placer un squelette a l'endroit du cadavre, le mieux c'est :
1- cadavre.PlaceAtMe squeletteID 1, 1, 1 (ou valeurs de ton choix)
2- SqueletteRef1,2,3,4,ou5.MoveTo cadavre 0, 0, 90 (ou valeurs de ton choix)
L'une ou l'autre fonctionnant pareil, sauf que vu ta limitation du nombre de squelettes, il te faudrait de préférence utiliser MoveTo avec 5 références de squelettes que tu appelles au fur et a mesure, et les faisant resurrect et en les selectionnant sur un critère simple : "mort ou encore en vie" ? Si "mort" => on choisit de bouger/rescussiter celui-ci, si "encore en vie", on passe au suivant. Si "tous les squelettes en vie", on tue le premier squelette et on le resurrect en le bougeant (ou on interdit la reproductibilité de la reanimation, selon ton choix).
Ca nous donnerait un truc du style :
(...)
If ( squeletteref1.GetDead == 1 )
squeletteref1.resurrect
squeletteref1.moveto cadavre 0, 0, 90
squeletteref1.enable
;des fois que tu l'aies disable a sa mort, sinon pas besoin de cette ligne
return
else
If ( squeletteref2.GetDead == 1 )
squeletteref2.resurrect
squeletteref2.moveto cadavre 0, 0, 90
squeletteref2.enable
;des fois que tu l'aies disable a sa mort, sinon pas besoin de cette ligne
return
else
If ( squeletteref3.GetDead == 1 )
squeletteref3.resurrect
squeletteref3.moveto cadavre 0, 0, 90
squeletteref3.enable
;des fois que tu l'aies disable a sa mort, sinon pas besoin de cette ligne
return
else
If ( squeletteref4.GetDead == 1 )
squeletteref4.resurrect
squeletteref4.moveto cadavre 0, 0, 90
squeletteref4.enable
;des fois que tu l'aies disable a sa mort, sinon pas besoin de cette ligne
return
else
If ( squeletteref5.GetDead == 1 )
squeletteref5.resurrect
squeletteref5.moveto cadavre 0, 0, 90
squeletteref5.enable
;des fois que tu l'aies disable a sa mort, sinon pas besoin de cette ligne
return
else
kill squeletteref1
;je ne sais plus comment fonctionne cette fonction, donc si ca marche pas comme ca, tu as l'autre solution :
; squeletteref1.kill
;si ca marche toujours pas, tu as la solution alternative :
; squeletteref1.cast spellmort squeletteref1
squeletteref1.disable
;des fois que tu ne geres pas le disable dans le script de mort du squelette
squeletteref1.resurrect
squeletteref1.moveto cadavre 0, 0, 90
squeletteref1.enable
endif
endif
endif
endif
endif
(...)
A implanter dans le script, pour gérer les squelettes selon leur "disponibilité".
Libre a toi de voir ce que tu veux en faire, mais avec un systeme du genre, tu evites la surcharge pondérale ne serait-ce que temporaire, due au PlaceAtMe (trop vite arrivée avec ton systeme de semi-incantation a mon avis...).
Bien sur, squeletteref1, squeletteref2, squeletteref3, squeletteref4, squeletteref5 sont des references de ton ID de squelette placé in TESCS (dans ta cell poubelle par exemple) en persistent references. et spellmort est un sort à distance de réduction de santé de 1000 par exemple (ou suffisamment pour tuer ton squelette en tous cas) pour la solution alternative.
Citation
Et le rajout, c'est pour donner une referance a cette creature creer
Je vous conseille a tous les deux d'aller faire un tour sur le wiwiki a la fonction placeatme.
Citation
Citation
de plus dans le script d'origine il effectuait ses tests sur le cadavre donc je suis parti sur le principe qu'avant de lancer le sort il fallait placer les gemmes et les parchemins sur le cadavre .
Citation
Si, comme moi vous êtes perdu(e) sur le net : www.perdu.com
#31
Posté 29 mai 2007 - 16:34
Josse, le 29.05.2007 à 08:58, dit :
Faire nuance entre invoc et cadavre
Le cadavre c'est la cadavre. (d'ailleur jviens de me rendre compte d'une grossiere erreur d'argument avant ^^ donc personne n'a raison ni tord)
Invoc c'est la creature invoqué.
Donc je maintient ce que je disait precedent (et qui va dans le sens des explications données par Daimyo Tai Shi ) concerant l'utilisation de ref persistante pour les créature à invoquer .
pour te citer je dirai juste que :
Josse, le 28.05.2007 à 12:55, dit :
Josse, le 29.05.2007 à 08:58, dit :
Il semble que se soit ce que l'on ai fait car sur le wiwiki on peu lire :
Josse, le 29.05.2007 à 08:58, dit :
Bonne chance pour ton script .
#32
Posté 29 mai 2007 - 17:34
Vu que vous avez l'air d'etre tous contre moi je vais le faire ^^
Par contre, pour les 5 creatures, le script ne sert qu'a l'invoc. LE script d'ordre sera dans la creatures, donc toutes les variables ne concerneront que la creature. Donc pas de probleme, et tres facile
Reste a limité le nombre a 5 creatures
Mais qui dit 5 dit 5 exemplaires de chaque types (pour un moveto) Et puis comment savoir le quel prendre lors de la ressurection, le quel est dans la poubelle, sont ils tous present etc ...
JE pense que c'est la ou je vais le plus en baver
EDIt ; avez pas lu ton script plus haut sur les 5 squelette ^^ M'en vais m'en inspiré ^^
Modifié par Josse, 29 mai 2007 - 17:35.
#33
Posté 29 mai 2007 - 18:04
Josse, le 29.05.2007 à 17:34, dit :
Je ne suis pas contre toi, je voulais juste te filer un coup de main .
sinon je ne t'aurai pas proposé de scripts.
Si tu tiens absolument à utiliser placeatme okok c'est ton droit ...
et dsl de t'avoir froissé ...
pour savoir lequel est actuellemnt utilisé mort ou autre, pourquoi ne pas utiliser une variable d'état dans ta quete comme MUnecroquest.Squelet0xEtat (de type short) qui prendrai pour valeur
0 si pas utilisé et dans la cell poubelle...
1 si en cours d'utilisation mode hostile
2 si squelette a été invoqué et a l'ordre de suivre le joueur
3 si squelette a été invoqué et a l'ordre de rester sur place
etc...
ainsi tu pourrai en testant la var MUnecroquest.Squelet0xEtat savoir dans quel etat se trouve ton squelette 0x. ça pourrait également t'aider pour tes scripts d'ordres ...
A plus
#34
Posté 29 mai 2007 - 18:23
Bon, j'ai ressuit a faire sans variables d'etat. Grace au script de Daimyo Tai Shi. En faite je regarde si le serviteur est mort, si oui, je le ressurect sinon je continu ma verification. Si aucun n'est mort (et donc que le player ne les as pas fait) alors sa fait rien.
Le probleme, c'est de contabilisé le nombres de creatures (pour chaque types). Je pense faire une sorte de compteur qui s'ajoute a chaque moveto et a chaque mort diminue de 1. Suffit de faire un script sur els creatures.
Sinon, mon principale probleme c'est le temps. Je vois pas comment le degeneralisé pour le mettre sur chaque creatures.
Je passerais le script lorsque j'aurait resolut se probleme de temps
Modifié par Josse, 29 mai 2007 - 18:24.
#35
Posté 29 mai 2007 - 20:21
Citation
Puis, par un test des gemmes présentes, tu donnes une valeur différente au timer.
Le tout activé par un rajout d'un set squeletteref1,2,3,4,ou5.variable to 1 (variable etant une var short dans le script claqué au squeletteID) dans chaque bloc if/else du script que j'ai posté a peine plus haut. Puis, dans le script du squelette, tu la remets à 0 une fois le test des gemmes (et donc la "valorisation" du timer) terminé. En gros, tu fais un ping-pong entre tes deux scripts, qui se renvoient la balle pour les calculs, et qui fonctionnent en simultanés. Tu pourras ainsi gérer ton probleme de temps.
Citation
Citation
^^
En esperant que ca marche bien tout ca...
+++
Si, comme moi vous êtes perdu(e) sur le net : www.perdu.com
#36
Posté 29 mai 2007 - 21:06
Moi je compte chaque serviteur, au dessus de 5, sa annule
Par contre, pour les float et gamesecondepassed j'ai un peut trop de mal, et je n'y arrive pas du tout, help pliz
Mais c'est vrai, sinon je garde ma valeur Temps, et je la met dans une float timer dans le script de la creature qui calcule, et la tue si == 0 ou le laisse infinie si infini == 1
Mais, comme je viens de le dire, moi et le timer a part dans les script de quête (le script se fait tout les 5s donc avec un gamemode, c'est tres facile de compter le temps dans un script de quête, mais avec un script d'objet c'est a chaque frame je crois.) sa fait deux
#37
Posté 30 mai 2007 - 00:09
Pour le temps :
float timer
puis :
set timer to timer + GetSecondsPassed
ou
set timer to timer - GetSecondsPassed
plutot la deuxieme d'ailleurs dans ton cas.
ensuite, tu testes les temps qu'il te faut.
Et tu mets ton timer aux valeurs correspondant aux gemmes lors de la reanimation, càd :
set timer to timer + X
X dépendant de la gemme.
Et tu retires un gemme, et tu boucle le tout.
Voila. Bonne nuit ! +++
Si, comme moi vous êtes perdu(e) sur le net : www.perdu.com
#38
Posté 30 mai 2007 - 12:41
a Noter que j'ai pas mis trop de commentaire, et que les variables de quêtes pourrais etre transposé sur mon script de sort directement mais la flemme
Script du sort
Script de creature (les ordres seront fait dedans)
Note : pas encore mis l'accumumation des gemmes, que deux types de creatures.
EDIT : je viens de faire les liches et me suis attaqué aux ordres, mais yia un bug. depuis quelques temps. Les creatures creer ne veulent plus bouger, elles sont static et ne font rien. D'ailleur, elle meurt (c'était une liche 0_0) en un coups contre un simple squelette. Je pense que c'est du au changement en moveto et qu'elle soit morte des le debut de la partie (jai mis healt a 0 pour que le script marche des le debut). MAis bizarre et tres lourd
Modifié par Josse, 30 mai 2007 - 17:01.
0 utilisateur(s) li(sen)t ce sujet
0 membre(s), 0 invité(s), 0 utilisateur(s) anonyme(s)