[Epouvantail a grosbills] SAUVEGARDE DES SORTS

Répondre
Partager Rechercher
Bonjour a vous,
Petite question, est ce que cela marche chez vous avec les sorts ayant une compétence de Metamagie applique dessus.
Par exemple, j'ai 3 sorts de Projectile Magique et 2 sorts de Projectile Magique avec Extension d'effet. Je lance 1 sort de Projectile Magique avec Extension d'effet. Je deco/reco et c'est un sort de Projectile Magique qui a "disparu" et non pas un avec extension d'effet. Avez vous le même souci chez vous ?
Merci d'avance.
ALors je dois dire que je suis pas un specialiste des lanceurs de sort moi, donc je savais meme pas qu'il y a une difference...
A priori les scripts non plus

En fait le pb c'est que c'est les meme sorts au final.
On pourrait a la limite savoir lequel est utilise (le simple ou celui avec la metamagie) mais je vois pas comment on pourrait faire disparaitre l'un à la place de l'autre

En gros dans ton exemple pour une raison x ou y c'est vu comme si tu avais 5 sorts de projectiles magiques. Tu en utilises 1 n'importe lequel, a la reco j'en enleve 1 et celui que j'enleve n'est pas forcment le meme que celui aue tu as enleve avant.
J'ai un moyen a la limite de savoir si tu as utilise un des sorts avec metamagie ou pas... par contre j'ai pas moyen de supprimer celui que je veux... en tout cas j'ai rien trouve la dessus...
Même chose que toi Garrath, j'ai eu beau chercher le moyen de contourner cet exploit possible ... Rien trouvé la dessus. J'ai essayé pas mal de système de sauvegarde de sorts, ils ont tous ce même problème

J'ai regardé un peu le Lexicon sur les fonctions GetHasSpell et DecrementRemainingSpellUses, voici les commentaires que j'y ai lu :

- GetHasSpell :
With patch 1.61, metamagic feats applied to spells and domain feats are now considered for this function (previously this was not the case). The following factors determine the value of the return of GetHasSpell:

No metamagic feat applied: 1
Cleric domain spell, no metamagic feat applied: 2
Silent metamagic feat applied: 3
Still metamagic feat applied: 3
Extended metamagic feat applied: 3
Quickened metamagic feat applied: 1
Maximized metamagic feat applied: 1
Empowered metamagic feat applied: 1

- DecrementRemainingSpellUses :
As of patch 1.61, this function now works for all spells with metamagic feats applied to them but not on cleric domain spells

Un véritable bor... en fait
Si quelqu'un avait un système qui évite cet exploit Merci d'avance.
ben on a les meme sources

Si j'ai bien tout suivi on aurait a la limite la possibilte de connaitre le nombe de sort exact qui reste et de quel type mais par contre on aurait jamais la possibilite de detruire celui qu'on veut...

Bon c'est un petit bug, mais comme le but c'est d'eviter la triche des lanceurs de sorts ca me parait deja pas trop mal...

Au pire, si on les voit trop tricher en deco-reco a chaque fois qu'ils utilisent un sort avec metamagie on change le code pour qu'a chaque reco ils reviennent sans aucun sort ... gnark gnark... suis sadique?
He he, je fais cela sur le repos : si leur sommeil est interrompu les pjs ont la possibilite de se reposer de suite mais les casters n'ont plus de sort. Ca limite deja ce genre d'exploit et cela contourne le probleme du repos interrompu suite a un PJ qui rejoint le groupe
hum les malins..;
bon ben il faut juste enlever une ligne dans le code du OnCLientEnter
Code PHP:

 void LoadSpells(object oPC)
{
SendMessageToPC(oPC,"Reconstruction par le serveur de la sauvegarde des sorts de "+GetName(oPC)+".");
int n 0;
for(
<=658 n++)
{
    
int iSpellTimes GetLocalInt(oPC,"SPELL"+IntToString(n));
    
// Attention si on a 0 c que la varaible locale n'existe pas donc rien a faire
    
if (iSpellTimes!=0)
    {
         if(
iSpellTimes==-1)
              
iSpellTimes 0;

         while(
GetHasSpell(n,oPC)>iSpellTimes)
         {
            
DecrementRemainingSpellUses(oPC,n);
         }
         
//DeleteLocalInt(oPC,"SPELL"+IntToString(n));
    
}
}
}

void main()
{
    
object oPC GetEnteringObject();
    if (
GetIsPC(oPC))
    {
        
LoadSpells(oPC);
    }


J'ai mis la ligne en commentaire la c'est le DeleteLocalInt...
Effectivement seul le sommeil doit remettre a 0 les compteurs...

J'edite aussi le post sur lequel il y a tous le code

Merci Camelia
J'avais une question bête, tiens :

Est-ce que ça change quelque chose si on le met comme ça ?
Code PHP:

void main()
{
    
object oPC GetEnteringObject();
    if(
GetIsPC(oPC))
    {
        
SendMessageToPC(oPC,"Reconstruction par le serveur de la sauvegarde des sorts de "+GetName(oPC)+".");

        
int n 0;
        for(
n;n<=658;n++)
        {
            
int iSpellTimes GetLocalInt(oPC,"SPELL"+IntToString(n));

            
// Attention si on a 0 c que la varaible locale n'existe pas donc rien a faire
            
if(iSpellTimes!=0)
            {
                if(
iSpellTimes==-1)
                
iSpellTimes 0;

                while(
GetHasSpell(n,oPC)>iSpellTimes)
                {
                    
DecrementRemainingSpellUses(oPC,n);
                }
                
//DeleteLocalInt(oPC,"SPELL"+IntToString(n));
            
}
        }
    }

Je remonte ce post pour signaler que ce script ne fonctionne pas sur les sorts de niveau 9
Mais qu'est ce qu'ils sont terribles !!!!!

Ce manque vient du fait que le script a été fait avant les extensions ?, avant HoTU ? ou il y a un problème dans le comptage des sorts ?

Merci à vous pour vos réponses éclairantes
donc reste a changer les 658 par 805...
Le mieux c'est quand meme de definir une constante et la mettre a la place... comme ca a chaque fois qu'on ara des nouveaux sorts tu n'aura qu'a changer a un seul endroit!
Répondre

Connectés sur ce fil

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