[SPELL] Spell Sequenceur.

Répondre
Partager Rechercher
Grace au fabuleux travail d'Azrael07, le DiaS, j'ai recrée le sort de Baldur's Gate II : le sequenceur magique, qui permet de pre-memoriser 3 sorts de niveau 0 à 2.

L'utilisation est facile : tout est dans le script ro_s0_spellsequ.nss

Donc, il suffit d'importer le .erf, et, au choix :
- Recopier le Script ro_s0_spellsequ dans un autre script de sort (mais bon, c'est pas tres propre)

- Recopier le sort ro_s0_spellsequ et crée un item qui a le don unique d'ExecuteScript(ro_s0_spellsequ, GetLastItemActivator());

- Creer une entrée dans le spell.2da qui lance le script, en rajoutant un icone (tant qu'a faire ^^)

Voici le .erf

Spell Sequencer par Azrael07 et eMRaistlin
oops ^^


bein, comme dans Baldur : tu relance le sort :

Le premier lancement memorise les sorts.
Le second les caste, puis il vide la "memoire" de stockage...

voila.

Desole, j'avais pas trop le temps de faire un readme...
Non non non

Le premier lancement te permet de choisir les 3 sorts ( c super bien fait en passant, mais les majuscules ........ bobo ). Pom Pom Pom, il te dit que c bon et que c memorisé.

Je reclique sur le pouvoir unique et la il me dit que mes sorts ont bien ete stocké, END DIALOGUE

Vi car g fait avec un objet a pouvoir unique Unlimited Use/Day et dans le OnActivedItem, g recopier le petit bout de script qui se trouve dans test_activ et surtout fait coïcidé au niveau du Tag de l objet

Je dois avoir faux quelques part
Arf c'est super... je savais pas qu'on pouvais créer ses propres sorts :-)
En parchemin à la rigueur mais que les joueurs puissent mémoriser... c'est super cool !

*va tout de suite créer ses propres sorts*

*serait très interessé de mettre en place triple-echo et incantation de l'esprit...*

P.S. pour plus d'info mon site est ouvert à tous... il contient d'ailleurs l'intégralité des sorts AD&D - ou du moins pas loin - soit plus de 1200 sorts.

[Edit :]
Ouh là chui perdu dans ce fichier de sort ! Il faut remplir toutes ces colonnes ?

Ah oui sinon... je trouve pas cette histoire de don unique C'est à la création de l'objet ? Dans l'onglet propriété ? Ouiiinnnn !!!!! Arf et tout ces scripts qui se sont ajouté servent pour le lancement du sort ? Mais pourquoi c'est aussi compliqué ?

*sent qu'il va remettre la création de ses sorts persos à... plus tard *
lol, ca c'est du HS ^^
(ps : profites en pour mettre a jour le persistant sur les script, en mettant le lien vers le topic... )


Pour le sort, je suppose que cela doit venir du fait que tu utilise le OnItemActivated, et pas le OnSpell... je l'ai rajoute car il faut effectuer des modif mineures, mais y'a quand meme des modifs


En fait, dans le sort, j'ai mis ca :

Code PHP:


void main
()
{
object oPC OBJECT_SELF;
object oTarget GetSpellTargetObject();

int nB GetLocalInt(oPC,"cont_memo");

if (
nB == TRUE)
    {
    
int nSpell_1 GetLocalInt(oPC,"contingence_1");
    
int nSpell_2 GetLocalInt(oPC,"contingence_2");
    
int nSpell_3 GetLocalInt(oPC,"contingence_3");
    
AssignCommand(oPC,ActionCastSpellAtObject(nSpell_1,oTarget,METAMAGIC_ANY,TRUE,0,PROJECTILE_PATH_TYPE_DEFAULT,TRUE));
    
AssignCommand(oPC,ActionCastSpellAtObject(nSpell_2,oTarget,METAMAGIC_ANY,TRUE,0,PROJECTILE_PATH_TYPE_DEFAULT,TRUE));
    
AssignCommand(oPC,ActionCastSpellAtObject(nSpell_3,oTarget,METAMAGIC_ANY,TRUE,0,PROJECTILE_PATH_TYPE_DEFAULT,TRUE));
    
DeleteLocalInt(oPC,"cont_memo");
    
DeleteLocalInt(oPC,"contingence_1");
    
DeleteLocalInt(oPC,"contingence_2");
    
DeleteLocalInt(oPC,"contingence_3");
    
DeleteLocalInt(oPC,"cont_nb");
    return;
    }
if (
nB == FALSE)
    {
    
AssignCommand(oPC,ActionStartConversation(oPC,"test_spellit"));
    }

et dans le OnItemActivated, j'ai mis ca :
Code:
void main()
{
object oItem = GetItemActivated();
object oPC = GetItemActivator();

if (GetTag(oItem)== "RodofConversation")
    {
    AssignCommand(oPC,SpeakString("oK !"));
    AssignCommand(oPC,ActionStartConversation(oPC,"test_spellit"));
    }
}
qui est evidement incomplet... (vu que j'avais surtout developpé ca pour creer un sort)

voici le onItemActivated a mettre... (non testé, mais ca devrait marcher a priori)

Code PHP:


void main
()
{
object oItem GetItemActivated();
object oPC GetItemActivator();
object oTarget GetItemActivatedTarget();

if (
GetTag(oItem)== "RodofConversation")
    {
int nB GetLocalInt(oPC,"cont_memo");

if (
nB == TRUE)
    {
    
int nSpell_1 GetLocalInt(oPC,"contingence_1");
    
int nSpell_2 GetLocalInt(oPC,"contingence_2");
    
int nSpell_3 GetLocalInt(oPC,"contingence_3");
    
AssignCommand(oPC,ActionCastSpellAtObject(nSpell_1,oTarget,METAMAGIC_ANY,TRUE,0,PROJECTILE_PATH_TYPE_DEFAULT,TRUE));
    
AssignCommand(oPC,ActionCastSpellAtObject(nSpell_2,oTarget,METAMAGIC_ANY,TRUE,0,PROJECTILE_PATH_TYPE_DEFAULT,TRUE));
    
AssignCommand(oPC,ActionCastSpellAtObject(nSpell_3,oTarget,METAMAGIC_ANY,TRUE,0,PROJECTILE_PATH_TYPE_DEFAULT,TRUE));
    
DeleteLocalInt(oPC,"cont_memo");
    
DeleteLocalInt(oPC,"contingence_1");
    
DeleteLocalInt(oPC,"contingence_2");
    
DeleteLocalInt(oPC,"contingence_3");
    
DeleteLocalInt(oPC,"cont_nb");
    return;
    }
if (
nB == FALSE)
    {
    
AssignCommand(oPC,ActionStartConversation(oPC,"test_spellit"));
    }
    }

Vi, c mieux ^^ pas testé mais ..... ca a une bonne tete

Sinon, le labyrinthe est pas mal

EDIT

J ai testé et le script de OnItemActivated marche

mais j ai trouvé des choses qui ne marchent pas

_ Les sorts sont enlevés de la liste de sort correctement pour les 2 premiers mais le 3ieme sort est encor la. Il faut de-memoriser le 3eme sort

_ Quand il y a moins de 3 sorts que l on puisse placer dans le sequenceur, au moment de relacher les sorts memorisé, il fait appel a un script et ca ne marche pas
Le script c : test_spelit_snce4

Quand il n y a pas de 3eme sort, il dit quil celectionne le cantrip d acide

_ Les information de choix (i.e. les custom token ) apparaissent en tant que message de combat. Je sais pas si c volontaire mais c pas trés esthetique
de rien c normal

Sinon, et il possible de marquer le nom des sorts d'une autre facon ? cad pas avec le nom de la constante associé mais un nom que l on tape soit meme ??
Je ne peux pas regarder comme tu retrouve le nom du sort pour l afficher mais ca doit etre possible avec un switch et le numero du sort. L inconvenient, c que ca risque de faire beaucoup pour le CPU ca, si plusieurs personne le font en meme temps

Dsl d etre exigeante mais qui aime bien, chatie bien
en fait, c'est le cas : j'utilise un switch dans la library lib_diase2, donc il est tout a fait possible de les modifier... C'est la fonction string GetSpellName(int nSpell); qu'il faut modifier, a votre convenance...
euh, c'est possible, j'ai juste mis en forme le spell.2da, c'est p'tete bien des sorts persos XD


(a noter que ca change pas grand chode si vous n'avez pas vous meme de sorts customs. Sinon, faudra remplacer les nom de mes custom par les votre.)
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés