déco/réco et le retour à la vie

Répondre
Partager Rechercher
Bonjour,

Cela fait des mois et des mois que nous buttons sur le sujet. Nous n'arrivons pas à avoir quelque chose qui marche entièrement. Le soucis est le suivant : Quand un PJ déco/reco après avoir été tué, il revient à la vie. Quand un PJ déco/reco (peut importe quand), ses sorts et capacités sont réinitialisées.

On a bien sûr testé la ligne Restore Spell Uses On Login=1 mis sur le nwn2player.ini (testé sur celui dans mes documents et celui dans le dossier d'install du serveur mais en vain.

Est-ce que quelqu'un a déjà eu ce bug ? Est-ce qu'on oublie quelque chose ?

Sur les wiki on trouve :
Citation :
Publié par Nwn1
Determines if the ready/used state of a player character's spell slots are preserved across logins (only possible with server vault and only if the server has not reset), rather than all being made ready upon logging in.
* 0 - all slots are ready upon login
* 1 - slot states are preserved if server vault is used.
Je n'ai rien trouvé sur le wiki de Nwn2. J'avais trouvé cette ligne sur un forum.

Notre scripteur a bien essayé d'ajouter un script mais ça ne règle pas tous les problèmes.

PS : Je n'ai rien trouvé sur le forum à ce sujet mais dans mes souvenirs il y avait quelque chose non ?

Merci pour votre aide en tout cas !
__________________
http://image.noelshack.com/fichiers/2012/46/1353252187-foret-bleue.png
La seconde version est arrivée : http://fanelya.fr !
IP : fanelya.no-ip.org

Liste de tous les serveurs : http://nwnlist.com
Je confirme pour "Restore Spell Uses On Login", ça ne fonctionne pas, mais pas du tout ^^


Par contre à mon avis il y a moyen de recréer ça par script :
A la déconnexion du joueur (OnClientExit), on enregistre ses pv, sa location sur le mod et sa liste des sorts, et à sa connexion (OnClientEnter) on lui remet tout comme avant.

Enregistrement des PV :
Code PHP:

object oPC GetExitingObject();
SetLocalInt(oPC "nHP"GetCurrentHitPoints(oPC)); 
Remise des PV:
Code PHP:

object oPC GetEnteringObject();
ApplyEffectToObject(DURATION_TYPE_INSTANTEffectDamage(GetMaxHitPoints(oPC) - GetLocalInt(oPC"nHP"), DAMAGE_TYPE_DIVINEDAMAGE_POWER_ENERGYTRUE), oPC); 
Enregistrement de la location:
Code PHP:

SetLocalLocation(oPC"lLocation"GetLocation(oPC)); 

Remise de la location :
Code PHP:

AssignCutsceneActionToObject(oPCActionJumpToLocation(GetLocalLocation(oPC"lLocation"))); 

Enregistrement de la liste des sorts (un peu plus compliqué):
Code PHP:

string sSpellList "";//Contient le nb de sorts dispo rangés dans une liste
int i;
for(
i=i<2149 i++)//2149 = dernière ligne du spells.2da (c'est bourrin mais je ne vois pas d'autre solution que de parcourir toute la table)
{
    
int nSpells GetHasSpell(ioPC);
    if(
nSpells>0)
        
sSpellLists += IntToString(i)+"="+IntToString(nSpells)+"|";//Formattage de la liste : SpellID1=SpellUses1|SpellID2=SpellUses2|...
}
SetLocalString(oPC"sSpellList"sSpellLists);//On enregistre la liste des sorts sur le PJ 
Remise de la liste des sorts
Code PHP:

string sSpellList GetLocalString(oPC"sSpellList");//On récup la liste

while(GetStringLength(sSpellList)>0)
{
    
int nPosEq FindSubString(sSpellList"=");//nb de caractères avant le signe =
    
int nSpellID StringToInt(GetStringLeft(sSpellListnPosEq));//On convertit ces caractères en entier
    
    
int nPosSep FindSubString(sSpellList"|");//nb de caractères avant le séparateur |
    
int nUses StringToInt(GetStringRight(GetStringLeft(sSpellListnPosSep), nPosSep-(nPosEq+1)));//On convertit les caractères entre = et | en entier
    
    //On décrémente l'utilisation quotidienne jusqu'à arriver au nb d'avant
    
while(GetHasSpell(nSpellIDoPC)>nUses)
        
DecrementRemainingSpellUses(oPCnSpellID);
        
    
//On découpe la liste pour supprimer la première "case"
    
sSpellList GetStringRight(sSpellListGetStringLength(sSpellList) - (nPosSep+1));

Note : Je n'ai testé aucun de ces scripts, mais dans l'idée ça devrais fonctionner ^^

Ca me fait penser qu'il faudrait mettre ça en place aussi sur la colère d'aurile (on a déjà remarqué des abus là dessus, ex : des déco-reco en zone de repos interdit pour récupérer la liste des sorts et les PV)
__________________
http://img.xooimage.com/files21/b/4/0/bann_lcda-500x100-12abc53.gif
Sur Fanelya 1 on n'avait pas eu le problème en mettant la bonne ligne et ça marchait très bien... mais du coup on avait du faire autre chose.

Pour les PV, on a un script. Cela étant, si tu déco avec une force du taureau sur toi, le sort n'est plus là et il t'enlèves les PV donnés par le sort (mais sur le maximum normal et non le maximum augmenté) ce qui fait qu'on reco blessé. Est-ce que tes scripts prennent ça en compte ?

De même, quelqu'un ici avait fait un script similaire pour les sorts mais avait eu le soucis avec les sorciers (pas moyen de retrouver le sujet... je l'avais hier). Du coup sorcier ou sorcier/mage ça buggait et remettait quand même tous les sorts (parce qu'un sorcier ne peut pas perdre un nombre de sort je crois).

Est-ce que les sorts lancés sur soi peuvent être récupérés (je pense à un plantage en plein pve) ? Est-ce qu'on peut aussi en conserver la durée restante (histoire de ne pas le réinitialiser... pour un PvP par exemple un "faux plantage", et on revient full buff pour toute la durée des sorts alors qu'on allait bientôt les perdre avant ^^) ?

Je donnerai tout cela à lire à notre codeur bien sûr ^^.
__________________
http://image.noelshack.com/fichiers/2012/46/1353252187-foret-bleue.png
La seconde version est arrivée : http://fanelya.fr !
IP : fanelya.no-ip.org

Liste de tous les serveurs : http://nwnlist.com
Citation :
Pour les PV, on a un script. Cela étant, si tu déco avec une force du taureau sur toi, le sort n'est plus là et il t'enlèves les PV donnés par le sort (mais sur le maximum normal et non le maximum augmenté) ce qui fait qu'on reco blessé. Est-ce que tes scripts prennent ça en compte ?
De mémoire quand tu déco-reco, tes sorts lancés sur toi restent. Ainsi si t'as une endurance de l'ours avant de déco, tu l'as toujours après.
Là le script se contente de remettre le même nb de pv que avant, peu importe si tu as lancé tel ou tel sort qui te donne des pv supplémentaires.


Citation :
De même, quelqu'un ici avait fait un script similaire pour les sorts mais avait eu le soucis avec les sorciers (pas moyen de retrouver le sujet... je l'avais hier). Du coup sorcier ou sorcier/mage ça buggait et remettait quand même tous les sorts (parce qu'un sorcier ne peut pas perdre un nombre de sort je crois).
Il faut tester. Logiquement ça devrais fonctionner avec toutes les classes, mais je ne sais pas si la fonction fonctionne correctement.

J'attends ton retour pour le Disable log in heal=1
Ça n'a apparemment pas fonctionné. Je ferai des tests complémentaires. Cela dit le script en place peut peut-être bloquer le fonctionnement de cette ligne. Si tu peux le tester toi sur Colère d'Aurile on serait peut-être mieux fixés non ?
__________________
http://image.noelshack.com/fichiers/2012/46/1353252187-foret-bleue.png
La seconde version est arrivée : http://fanelya.fr !
IP : fanelya.no-ip.org

Liste de tous les serveurs : http://nwnlist.com
D'accord. On a exactement le même problème que toi. Ça marchait (de mémoire sans script) et là ça ne marche plus ^^. Merci en tout cas.

Je vais revoir pour faire des recherches dans la merveilleuse langue de Shakespeare que je ne maîtrise absolument pas :P. On ne sait jamais. Si la ligne ne marche pas, on arrivera peut-être à résoudre le soucis pour deux serveurs (et tous ceux qui iront là :P) !
__________________
http://image.noelshack.com/fichiers/2012/46/1353252187-foret-bleue.png
La seconde version est arrivée : http://fanelya.fr !
IP : fanelya.no-ip.org

Liste de tous les serveurs : http://nwnlist.com
Voici mes tests approfondis :

Module:
Une zone vide avec des créatures
Scripts module supprimés (OnClientEnter, OnClientExit, ...)

Lignes suivantes en doublon dans les deux nwn2layer.ini (celui de documents et de program files) :
Citation :
Disable log in heal=1
Restore Spell Uses On Login=1
Serveur :
Personnages locaux non autorisés

Résultat :
les pv et les sorts sont conservés
Et cela même après reboot du serveur ! (seule la location du joueur est oubliée)
__________________
http://img.xooimage.com/files21/b/4/0/bann_lcda-500x100-12abc53.gif
Donc ça marche mais pas chez nous pour le coup. Tu as su isoler laquelle des lignes fonctionne ou pas du tout ? (oui j'en demande beaucoup)

Suffira peut-être juste de supprimer notre script pour le coup qui doit interférer.

Merci beaucoup en tout cas. Et contente que cette discussion ait déjà servi à un autre que moi :P
__________________
http://image.noelshack.com/fichiers/2012/46/1353252187-foret-bleue.png
La seconde version est arrivée : http://fanelya.fr !
IP : fanelya.no-ip.org

Liste de tous les serveurs : http://nwnlist.com

Dernière modification par Charlouloute ; 20/02/2013 à 21h47.
@Crom: je me disais aussi que ça marchait très bien de mémoire

Perso cette ligne "Restore Spell Uses On Login=1 " je la connaissais pas

Et cette ligne "Disable log in heal=1" a été ajouté dans une des dernières mise à jour de NwN2, je l'avais vu dans un ChangeLog il me semble.

@Charlouloute: Oui il faut enlever les morceaux de scripts qui touchent à l'état du personnage (sorts, repos, HP, etc...) à l'arrivé sur le module. Seul la position doit encore être sauvegardé.

Attention par ailleurs à l'arrivée sur le module, il y a 2 types d'entrée qui chargent des scripts_events différents.

Type 1 : Le serveur a boot/reboot et un perso entre sur le module.

Type 2 : Un perso revient sur le module sans que le serveur ait reboot.

Testez ces configurations d'arrivée sur le module en mettant des SendMessage "nom de l'event" sur tous les scripts d'events du module, vous verrez plus clair sur la façon dont sont chargés les scripts à l'arrivée sur le module
Citation :
Tu as su isoler laquelle des lignes fonctionne ou pas du tout ?
Les deux lignes font des choses différentes et fonctionnent toutes les deux.


Citation :
Attention par ailleurs à l'arrivée sur le module, il y a 2 types d'entrée qui chargent des scripts_events différents.

Type 1 : Le serveur a boot/reboot et un perso entre sur le module.

Type 2 : Un perso revient sur le module sans que le serveur ait reboot.

Testez ces configurations d'arrivée sur le module en mettant des SendMessage "nom de l'event" sur tous les scripts d'events du module, vous verrez plus clair sur la façon dont sont chargés les scripts à l'arrivée sur le module
L'appel se fait comme ça :
Le joueur commence le chargement du module : OnClientEnter
Le joueur a terminé le chargement de la zone en arrivant sue le mod : OnPCLoad
__________________
http://img.xooimage.com/files21/b/4/0/bann_lcda-500x100-12abc53.gif
Ok merci pour les infos

Tu pourrais nous dire ce que fait cette ligne du coup ?

Restore Spell Uses On Login=1

Tu es sur pour les events_scripts ? De mémoire ça passait par plus d'un script mais bon on avait un système d'on_enter spécial aussi donc je me souviens plus trop..
Citation :
Tu pourrais nous dire ce que fait cette ligne du coup ?
Restore Spell Uses On Login=1
Ca me semble assez parlant : ça conserve les compteurs des sorts après un déco - reco

Citation :
Tu es sur pour les events_scripts ? De mémoire ça passait par plus d'un script mais bon on avait un système d'on_enter spécial aussi donc je me souviens plus trop..
Comment ça "ça passait par plus d'un script" ?
Les événements OnClientEnter et OnPCLoad exécutent les scripts associés dans les propriétés du module.
A mon avis tu devais avoir en place un système style tagbased pour exécuter différents scripts
__________________
http://img.xooimage.com/files21/b/4/0/bann_lcda-500x100-12abc53.gif
Bon pour le moment sur Fanelya ça ne semble pas marcher. Je pense qu'il doit rester des résidus de scripts. Je vous tiendrai informé quand même... même si apparemment les lignes marchent très bien ailleurs

Edit : bon ben c'est quand j'écris ça que je crois avoir trouvé la solution (c'est toujours la même chose...) ! Je vous tiens quand même au courant.

Deuxième edit : Tout fonctionne ! Merci à vous tous
__________________
http://image.noelshack.com/fichiers/2012/46/1353252187-foret-bleue.png
La seconde version est arrivée : http://fanelya.fr !
IP : fanelya.no-ip.org

Liste de tous les serveurs : http://nwnlist.com

Dernière modification par Charlouloute ; 01/03/2013 à 19h02.
Répondre

Connectés sur ce fil

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