Aller au contenu


Sort Et Necromancie


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

#26 Josse

Josse

    Fournisseur officiel de recette du gateau au chocolat chantilly


Posté 28 mai 2007 - 17:18

Yieh, merci du script, il devrait servir ^^

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 Daimyo Tai Shi

Daimyo Tai Shi

Posté 29 mai 2007 - 00:30

Citation

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
Mouais... Effectivement, ca peut être utile pour les grands combats. Mais sinon, l'utilité est moindre. Du coup va pour ta cell poubelle. :twisted2:

Citation

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 ...
Lol, c'est exactement ce que je te dis.
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

Non je veux pas d'area, c'était pour mettre une distance.
Lol, ok mais tu parles tout le temps d'area, c'est pour ca. :)
area = zone, pas distance (petite erreur de frappe peut-etre)

Citation

Si le cadavre contient des objets de quêtes, c'est au PJ de faire attention ...
Je comprends bien. On peut voir ca comme ca. Mais dans ce cas, faudrait voir comment sont considérés les PNJ essential quand ils sont a terre (KO ou morts) car c'est bof d'utiliser un essential (ex Martin Septim) lol

Citation

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é ...
Okok. Je parlais pas des ordres, mais du fait de tester les parchemins dans l'inventaire du joueur. Du coup, autant en enlever un exemplaire, sinon il peut recommencer à l'infini avec un seul et unique parchemin. Ou alors j'ai mal compris l'utilité de cette ligne (pour moi c'etait pour la "réanimation non hostile").

Citation

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 ...
D'accord avec toi, mais la raison a des raisons que la raison ignore. Ok c'est pas tout a fait ca mais bon. :jester:

@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... :evil:

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


#28 Le Magicien

Le Magicien

    Maraboutage in Tescs


Posté 29 mai 2007 - 03:29

 Daimyo Tai Shi, le 29.05.2007 à 00:30, dit :

@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... :twisted2:

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 :

Spoiler

pour la ligne

 Josse, le 28.05.2007 à 12:55, dit :

set MUnecroquest.invoc to cadavre.placeatme MUsqueletteinvochostile 1 1,1
est plus logique
C'est reference la creature qui est invoqué
certe si invoc est un objet type ref defini dans la quete c'est ok pour la syntaxe... (bien que l'utilisation de placeatme sur la variable cadavre me gène un peu )
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 Josse

Josse

    Fournisseur officiel de recette du gateau au chocolat chantilly


Posté 29 mai 2007 - 08:58

Rah, vous avez pas compris
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)

Spoiler


#30 Daimyo Tai Shi

Daimyo Tai Shi

Posté 29 mai 2007 - 13:26

Citation

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 ...
Oui, la on est d'accord. Et du coup, merci le magicien, en te lisant je suis pas tout a fait d'accord avec ce que tu proposes pour pallier, mais je viens de caler ce qu'il voulait faire avec le set MUnecroquest.invoc to cadavre.placeatme MUsqueletteinvochostile 1 1,1.
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

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.
Lol, ca ne serait pas arrivé si tu avais précisé direct ce que c'etait que ton 'invoc'... 8)


Citation

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)
okok. En revanche je cale pas trop ce que tu dis la. "le cadavre est de loin le truc le plus rare". Hum... :green:


Citation

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 .
Certes certes... Pas fait gaffe. :hum: Mais c'est vrai.


Citation

Arreter de faire des gros patées en un post :hum: je deconne ^^
^^ Je relève pas. :hum:

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


#31 Le Magicien

Le Magicien

    Maraboutage in Tescs


Posté 29 mai 2007 - 16:34

 Josse, le 29.05.2007 à 08:58, dit :

Rah, vous avez pas compris
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é.
Pour moi, ce qui était clair c'est qu'invoc est une variable de type ref placé dans le script de la quête ... et qui te sert à recupérer la ref de la creature appelée par la commande placeatme .
Donc je maintient ce que je disait precedent (et qui va dans le sens des explications données par Daimyo Tai Shi :good: ) 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 :

c'est d'ailleur expliqué ici a la fin ...

 Josse, le 29.05.2007 à 08:58, dit :

Je vous conseille a tous les deux d'aller faire un tour sur le wiwiki a la fonction placeatme.
:)

Il semble que se soit ce que l'on ai fait car sur le wiwiki on peu lire :
Spoiler
Donc verifie quand même tes reférences. car c'est ce qu'on essai de t'expliquer depuis quelques posts en te donnant des solutions alternatives . :twisted:

 Josse, le 29.05.2007 à 08:58, dit :

Spoiler
8)

Bonne chance pour ton script .

#32 Josse

Josse

    Fournisseur officiel de recette du gateau au chocolat chantilly


Posté 29 mai 2007 - 17:34

Oui je sais qu'il faut pas utilisé placeatme. JE verrais lorsque viendra le temps ^^


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 Le Magicien

Le Magicien

    Maraboutage in Tescs


Posté 29 mai 2007 - 18:04

 Josse, le 29.05.2007 à 17:34, dit :

Vu que vous avez l'air d'etre tous contre moi je vais le faire ^^

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é ... :twisted:

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 Josse

Josse

    Fournisseur officiel de recette du gateau au chocolat chantilly


Posté 29 mai 2007 - 18:23

Ne t'inquiete pas je suis pas froissé ^^

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 Daimyo Tai Shi

Daimyo Tai Shi

Posté 29 mai 2007 - 20:21

Citation

Sinon, mon principale probleme c'est le temps. Je vois pas comment le degeneralisé pour le mettre sur chaque creatures.
Et bien, tu peux tenter d'utiliser une variable timer (float) dans le script du squelette (donc des timer différents pour chaque reference du squelette).
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

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.
Oui. Euh je vois pas ce que tu veux dire là. Primo : de quoi tu parles? Secondo : un compteur pour quoi faire ? Pour compter le nombre de squelettes ou pour compter le nombre de chq type de squelette ? Si c'est pour le nombre total de squelettes, mon script te permet de gérer ca autrement (ca t'evite de devoir les "compter" comme tu dis...)

Citation

Vu que vous avez l'air d'etre tous contre moi je vais le faire ^^
Meuh non, regardez-le le pauvre persecuté... :shocked:
^^


En esperant que ca marche bien tout ca...
+++

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


#36 Josse

Josse

    Fournisseur officiel de recette du gateau au chocolat chantilly


Posté 29 mai 2007 - 21:06

Non, ton script ne vas pas car il ne corresspond qu'a un type de creature. Si je faisait sa pour chaque type de serviteur, on pourrait avoir 5 creatures de CHAQUE type
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 Daimyo Tai Shi

Daimyo Tai Shi

Posté 30 mai 2007 - 00:09

Mais si, mon script va parfaitement. Ensuite tu peux quand meme un peu adapter par toi-meme... Tu sais faire quand meme... Moi je suis pas sur ton mod, je te file un coup de main, je scripte pas pour toi. Donc c'est toi qui connait tes besoins, c'est toi qui demande ce qu'il faut. On te repond, le script est bon (a priori) ensuite a toi d'exploiter autrement, ou de redemander de l'aide si tu ne sais pas faire.

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 Josse

Josse

    Fournisseur officiel de recette du gateau au chocolat chantilly


Posté 30 mai 2007 - 12:41

Voila les scripts
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
Spoiler

Script de creature (les ordres seront fait dedans)
Spoiler

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)