Bonsoir.
Voici la partie de mon script en question :
if ( onpchitme == 1 )
set onpchitme to 0
set frappe_avec_la_bonne_arme to hitonme A_P_arene_baton01
if ( frappe_avec_la_bonne_arme == 0 )
set frappe_avec_la_bonne_arme to hitonme A_P_arene_hache01
if ( frappe_avec_la_bonne_arme == 0 )
set frappe_avec_la_bonne_arme to hitonme A_P_arene_epee_courte_01
if ( frappe_avec_la_bonne_arme == 0 )
set frappe_avec_la_bonne_arme to hitonme A_P_arene_epee_large01
endif
endif
endif
if ( frappe_avec_la_bonne_arme == 0 )
messagebox "Vous avez frappé Réba avec une arme non autorisée. Le combat est terminé." "Ok"
set A_P_arene_03 to 3; ............... triche
A_P_arene_reba01->stopcombat, player
A_P_arene_reba01->modcurrenthealth 1000
set A_P_arene_01 to 4; .................... fin du combat
return
endif
endif
Le but de ce script est de détecter si le joueur utilise ou non l'une des 4 armes autorisées. Si c'est le cas, le combat doit continuer. Mais dès l'instant où une autre arme frappe le npc, le combat doit être stoppé.
Le problème, c'est que le message apparait si je me laisse frappé par le npc (alors que je n'ai pas du tout frappé moi-même le npc). Et si je frappe le joueur, ça ne marche pas du tout...
Je précise que je suis Morrowind seul requis.
Merci beaucoup.
Modifié par Orann, 21 février 2010 - 14:03.
Palme d'honneur 2010 pour le mod Archipel de Pertevue
Déjà, peut-être par superstition, j'éviterais les deux boucles différentes à la même hauteur dans le même bloc avec la même condition d'entrée, ça a tendance à foirer à la compilation.
Possible :
short x1,x2,x3,x4
(...)
set x1 to ( hitonme "A_P_arene_baton01" )
set x2 to ( hitonme "A_P_arene_hache01" )
set x3 etc.
set x4 etc.
set frappe_avec_la_bonne_arme to ( x1+x2+x3+x4 )
if ( frappe_avec_la_bonne_arme == 0 )
messagebox "Vous avez frappé Réba avec une arme non autorisée. Le combat est terminé." "Ok"
etc.
Autre façon de faire sans locale du tout :
if ( hitonme "A_P_arene_baton01" == 1 )
return
elseif ( hitonme "A_P_arene_hache01" == 1 )
return
etc.
(...)
else
messagebox "Vous avez frappé Réba avec une arme non autorisée. Le combat est terminé." "Ok"
etc.
Merci Nerwal, je vais essayer la première solution. La deuxième ne peux pas m'aller car je ne peux pas faire de return, il y a une suite au script qui s'exécute quand le joueur a la bonne arme.
Voici le nouveau script:
if ( onpchitme == 1 )
set onpchitme to 0
set x1 to ( hitonme "A_P_arene_baton01" )
set x2 to ( hitonme "A_P_arene_hache01" )
set x3 to ( hitonme "A_P_arene_epee_courte_01" )
set x4 to ( hitonme "A_P_arene_epee_large01" )
set frappe_avec_la_bonne_arme to ( x1+x2+x3+x4 )
if ( frappe_avec_la_bonne_arme == 0 )
messagebox "Vous avez frappé Réba avec une arme non autorisée. Le combat est terminé." "Ok"
set A_P_arene_03 to 3; ............... triche
A_P_arene_reba01->stopcombat, player
A_P_arene_reba01->modcurrenthealth 1000
set A_P_arene_01 to 4; .................... fin du combat
return
endif
endif
Et il ne fonctionne pas... Les symptômes sont les mêmes et j'ai poussé les tests un peu plus loin:
- si le npc m'attaque en premier (sans que je tape), le script se déclenche et considère que je n'ai pas frappé le npc avec la bonne arme
- si j'attaque en premier, peu importe l'arme que j'utilise (une bonne ou une pas bonne), le script ne fait plus rien du tout (même si le npc me tape ensuite)
Palme d'honneur 2010 pour le mod Archipel de Pertevue
begin A_P_arene_script_reba01
; script sur Reba
; permet de stopper le combat :
; - si la vie des combattants est en dessous de 5%
; - si le joueur n'est pas equipé d'un bouclier et d'une arme autorisé pendant plus de 8 secondes
; - si le joueur frappe Reba avec une arme non autorisée
; variables globales :
; A_P_arene_01 : 3 = début du combat, 4 = fin du combat
; A_P_arene_03 : 1 = victoire du joueur, 2 = victoire de Réba, 3 = triche
; A_P_arene_05: nombre de victoires
; A_P_arene_06: nombre de défaites
float vie_reba
float vie_joueur
short fait
short frappe_avec_la_bonne_arme
short onpchitme
short x1
short x2
short x3
short x4
if ( A_P_arene_01 == 1 )
set fait to 0
endif
if ( A_P_arene_01 == 4 )
if ( A_P_arene_03 == 3 )
if ( fait == 0 )
A_P_arene_reba01->stopcombat, player
A_P_arene_reba01->modcurrenthealth 1000
set fait to 1
endif
endif
endif
if ( A_P_arene_01 != 3 )
return
endif
if ( onpchitme == 1 )
set onpchitme to 0
set x1 to ( hitonme "A_P_arene_baton01" )
set x2 to ( hitonme "A_P_arene_hache01" )
set x3 to ( hitonme "A_P_arene_epee_courte_01" )
set x4 to ( hitonme "A_P_arene_epee_large01" )
set frappe_avec_la_bonne_arme to ( x1+x2+x3+x4 )
if ( frappe_avec_la_bonne_arme == 0 )
messagebox "Vous avez frappé Réba avec une arme non autorisée. Le combat est terminé." "Ok"
set A_P_arene_03 to 3; ............... triche
A_P_arene_reba01->stopcombat, player
A_P_arene_reba01->modcurrenthealth 1000
set A_P_arene_01 to 4; .................... fin du combat
return
endif
endif
set vie_reba to ( A_P_arene_reba01->GetHealthGetRatio )
set vie_joueur to ( player->GetHealthGetRatio )
if ( vie_reba < 0.05 )
set A_P_arene_03 to 1; ............... victoire
A_P_arene_reba01->stopcombat, player
A_P_arene_reba01->modcurrenthealth 1000
set A_P_arene_01 to 4; .................... fin du combat
set A_P_arene_05 to ( A_P_arene_05 + 1 )
messagebox, "Vous avez gagné. Réba se retire. Le combat est terminé conformément aux règles." "Ok"
return
endif
if ( vie_joueur < 0.05 )
set A_P_arene_03 to 2; ............... défaite
A_P_arene_reba01->stopcombat, player
A_P_arene_reba01->modcurrenthealth 1000
set A_P_arene_01 to 4; .................... fin du combat
set A_P_arene_06 to ( A_P_arene_06 + 1 )
messagebox, "Vous avez perdu. Réba vous épargne conformément aux règles. Le combat est terminé." "Ok"
return
endif
end
Palme d'honneur 2010 pour le mod Archipel de Pertevue
- si le npc m'attaque en premier (sans que je tape), le script se déclenche et considère que je n'ai pas frappé le npc avec la bonne arme
C'est curieux. Essaye juste ça pour voir :
if ( onpchitme == 1 )
messagebox "Maman, le PJ m'a frappé !" "Ok"
endif
Il y a plusieurs choses qui me gênent dans le script :
- Il y a plusieurs fois cette syntaxe : "A_P_arene_reba01->stopcombat, player". Contrairement à "StartCombat", la fonction "StopCombat" peut prendre un appelant mais pas de paramètre appelé ("player" dans ton cas).
- Dans l'instruction "set frappe_avec_la_bonne_arme to ( x1+x2+x3+x4 )", il manque des espaces autour des signes "+".
- Le dernier "return" ne sert à rien puisqu'il n'y a rien au-dessous.
- Au lieu d'utiliser l'avant-dernier "return", tu pourrais réunir les deux derniers blocs avec un "elseif".
EDIT :
Je n'ai jamais utilisé "OnPCHitMe" mais dans le MSfD, je lis ceci :
MSfD8 dit :
Il semble que la présence de cette variable "court-circuite" le comportement normal du PNJ : il n’attaquera plus de lui-même. Si vous ne voulez pas que l’Acteur reste passif, vous devez vous servir de la fonction StartCombat manuellement (voir exemple cidessous).
Une fois que l’Acteur est en mode combat, OnPCHitMe ne signale plus les coups du PJ. Sauf si, selon une information des forums, OnPCHitMe se réinitialise à 0 si un autre Acteur frappe l’Acteur appelant après que le PJ l’ait fait ; elle repasse à 1 si le joueur le frappe à nouveau.
Exemple :
Spoiler
Begin _HB_Adros_GuarDefend;le guar d’Adros se défend
float timer
short en_attaque
short OnPCHitMe
if ( OnPCHitMe == 1 );guar frappé/pris pour cible
set en _attaque to 1
set OnPCHitMe to 0
endif
if (en_attaque == 1)
StartCombat, player; attaque le joueur
set timer to ( timer + GetSecondsPassed)
if ( timer >= 1 )
set timer to 0
if ( GetLOS, HB_adros_darani == 1);si le guar voit son proprio, il l’“appelle“
HB_adros_darani -> StartCombat, Player;attaque du proprio
set en_attaque to 0;réinitialisation
endif
endif
endif
End
Modifié par elendell, 20 février 2010 - 20:25. suppression d'une bêtise
begin A_P_arene_script_reba01
; script sur Reba
; permet de stopper le combat :
; - si la vie des combattants est en dessous de 5%
; - si le joueur n'est pas equipé d'un bouclier et d'une arme autorisé pendant plus de 8 secondes
; - si le joueur frappe Reba avec une arme non autorisée
; variables globales :
; A_P_arene_01 : 3 = début du combat, 4 = fin du combat
; A_P_arene_03 : 1 = victoire du joueur, 2 = victoire de Réba, 3 = triche
; A_P_arene_05: nombre de victoires
; A_P_arene_06: nombre de défaites
float vie_reba
float vie_joueur
short fait
short frappe_avec_la_bonne_arme
short onpchitme
short x1
short x2
short x3
short x4
if ( A_P_arene_01 == 1 )
set fait to 0
endif
if ( A_P_arene_01 == 4 )
if ( A_P_arene_03 == 3 )
if ( fait == 0 )
A_P_arene_reba01->stopcombat, player
A_P_arene_reba01->modcurrenthealth 1000
set fait to 1
endif
endif
endif
if ( A_P_arene_01 != 3 )
return
endif
if ( onpchitme == 1 )
messagebox "Maman, le PJ m'a frappé !" "Ok"
endif
set vie_reba to ( A_P_arene_reba01->GetHealthGetRatio )
set vie_joueur to ( player->GetHealthGetRatio )
if ( vie_reba < 0.05 )
set A_P_arene_03 to 1; ............... victoire
A_P_arene_reba01->stopcombat
A_P_arene_reba01->modcurrenthealth 1000
set A_P_arene_01 to 4; .................... fin du combat
set A_P_arene_05 to ( A_P_arene_05 + 1 )
messagebox, "Vous avez gagné. Réba se retire. Le combat est terminé conformément aux règles." "Ok"
elseif ( vie_joueur < 0.05 )
set A_P_arene_03 to 2; ............... défaite
A_P_arene_reba01->stopcombat
A_P_arene_reba01->modcurrenthealth 1000
set A_P_arene_01 to 4; .................... fin du combat
set A_P_arene_06 to ( A_P_arene_06 + 1 )
messagebox, "Vous avez perdu. Réba vous épargne conformément aux règles. Le combat est terminé." "Ok"
endif
end
Avec ce script (j'espère n'avoir oublié aucun de tes conseils), le message apparait dès que le npc me tape, alors que je n'ai rien fait. Et je reste bloqué sur la messagebox, obligé de faire ctrl+alt+suppr. Mais je pense que ça vient du fait que onpchitme ne revient pas à 0...
Modifié par Orann, 20 février 2010 - 20:25.
Palme d'honneur 2010 pour le mod Archipel de Pertevue
Ça faisait des mois que je n'avais pas fait de script et j'avais oublié comme tout est simple et logique avec le Tescs !
Bon, j'ai fait des tas d'essais avec "OnPCHitMe" pour comprendre. Au bout de plusieurs heures, j'ai quand même fini par avoir l'idée de noter les résultats parce que je me mélangeais les pinceaux. Je te livre donc ci-dessous ceux que j'ai notés. Le point qui m'a fait arracher le plus de cheveux est que j'essayais systématiquement chaque nouveau script dans 2 installations : Une avec Morro seul et une avec les extensions.
Avec extensions, le résultat évoluait à chaque fois mais avec Morro seul, j'avais toujours le même résultat : Le PNJ était pris de convulsions.
Au désespoir d'obtenir autre chose que cette crise d'épilepsie, j'ai fini par ne mettre aucun script et à faire juste "StartCombat" à la console sur plein de PNJs de Seyda Nihyn. Tous convulsaient, sauf les gardes. La cause était simple mais je ne le savais pas : Avec Morro seul (en jeu), un PNJ ne peut pas se battre à mains nues. S'il n'a pas d'arme, il convulse. Et ce, que son combat soit déclenché par un "StartCombat" ou simplement parce que son Fight est réglé pour le faire attaquer dès qu'il voit le PJ. (Avec Tribunal, pas de problème).
Bref, voici mes essais sur "OnPCHitMe" :
Spoiler
begin A_P_arene_script_reba01
short OnPCHitMe
if ( OnPCHitMe == 1 )
messagebox "Maman, le PJ m'a frappé !" "Ok"
set OnPCHitMe to 0
endif
end
- Avec Fight réglé à 30 : La MB fonctionne si le PJ attaque mais le PNJ n'attaque pas et ne se défend pas.
- Avec Fight réglé à 100 : Le PNJ attaque. La MB fonctionne au premier coup du PNJ ou du PJ seulement.
Spoiler
begin A_P_arene_script_reba01
short OnPCHitMe
short attaque
if ( essaivar == 1 ); ...Variable globale
if ( attaque == 0 )
set attaque to 1
StartCombat, player
elseif ( onpchitme == 1 )
set onpchitme to 0
messagebox "Maman, le PJ m'a frappé !" "Ok"
endif
endif
end
- Avec Fight réglé à 30 :
* Si "essaivar" est mise à 1 pendant que le PNJ peut détecter le PJ, le PNJ attaque mais la MB ne se déclenche qu'au premier coup porté, du PNJ ou du PJ.
* Si "essaivar" est mise à 1 pendant que le PNJ ne détecte pas le PJ, la MB se déclenche à chaque coup du PJ mais le PNJ ne se défend pas.
- Avec Fight réglé à 100 : la MB ne se déclenche qu'au premier coup porté, du PNJ ou du PJ, après que "essaivar" soit mise à 1 ; qu'elle soit mise à 1 pendant que le le PJ est détecté ou non.
Cet essai m'a fait voir un autre problème que je ne connaissais pas : "StartCombat, player" ne fonctionne pas si elle est lancée au moment où le PJ arrive d'une autre cellule. Quand le PJ arrive dans la cellule, le script est immédiatement actif mais "StartCombat" passe avant la détection du PJ par le PNJ car cette dernière ne se fait pas à la première frame. Donc, comme à ce moment là il n'a pas encore détecté le PJ, il ignore l'instruction.
Note : Les essais suivants ont été faits avec le Fight du PNJ réglé à 30.
Spoiler
begin A_P_arene_script_reba01
short OnPCHitMe
short attaque
if ( essaivar == 1 )
if ( attaque == 0 )
if ( GetLOS, Player == 1 )
set attaque to 1
StartCombat, player
endif
elseif ( onpchitme == 1 )
set onpchitme to 0
messagebox "Maman, le PJ m'a frappé !" "Ok"
endif
endif
end
- Le PNJ attaque dans tous les cas puisque "GetLOS" règle le problème précédent mais la MB ne se déclenche qu'au premier coup porté, du PNJ ou du PJ.
Spoiler
begin A_P_arene_script_reba01
short onpchitme
short attaque
if ( attaque == 0 )
if ( GetLOS, Player == 1 )
set attaque to 1
StartCombat, player
endif
elseif ( onpchitme == 1 )
StopCombat
set onpchitme to 0
set attaque to 0
messagebox "Maman, le PJ m'a frappé !" "Ok"
endif
end
- le PNJ attaque dans tous les cas et la MB se déclenche à chaque coup porté (on progresse ). Malheureusement, elle se déclenche à chaque coup mais ceci, qu'il soit du PNJ ou du PJ.
Spoiler
begin A_P_arene_script_reba01
short onpchitme
short attaque
short x1
short frappe_avec_la_bonne_arme
if ( attaque == 0 )
if ( GetLOS, Player == 1 )
set attaque to 1
StartCombat, player
endif
elseif ( onpchitme == 1 )
set x1 to ( hitonme "chitin club" )
if ( x1 == 1 )
messagebox "Le PJ m'a frappé avec la bonne arme !" "Ok"
endif
StopCombat
set onpchitme to 0
set attaque to 0
endif
- le PNJ attaque dans tous les cas et la MB se déclenche uniquement quand le PJ frappe avec la bonne arme. C'est le mieux que j'ai pu obtenir avec "onpchitme". Malheureusement, ça permet bien de savoir quand le PJ frappe avec la bonne arme mais pas quand il frappe avec la mauvaise. Et comme le "mod" est Morro seul, on ne peut pas utiliser "HasItemEquipped"
Conclusion des essais de "OnPCHitMe" :
Il y a une erreur dans ce qu'indique le MSfD8. C'est juste en partie mais très incomplet :
MSfD8 dit :
"OnPCHitMe" passe à 1 lorsque le joueur frappe l’Acteur appelant.
Il faudrait dire : Quand un PNJ est en combat avec le PJ, "OnPCHitMe" passe à 1 lorsqu'un coup est porté, par le PJ ou par le PNJ. Si le PNJ n'est pas en combat quand le PJ frappe, cela le met automatiquement en combat avec lui, avant de valider le "OnPCHitMe".
Note : Je n'ai pas essayé des situations avec des intervenants supplémentaires, telles que par exemple, frappe du PJ pendant que le PNJ combat un autre PNJ...
Pour ton script, il y a quand même une solution !
Au lieu de chercher à savoir "quand le PNJ est frappé par le PJ", on peut chercher à savoir "quand le PNJ est blessé". Quand c'est le cas, on vérifie comme tu l'as fait avec "hitonme" quelle est l'arme qui l'a blessé. L'avantage est que ça fonctionne également si c'est un compagnon qui le blesse. Ça interdit donc de fait au PJ de se faire aider par un compagnon, sauf s'il a lui aussi une arme autorisée.
J'ai donc testé ce script avec succès, que ce soit avec Morro seul ou avec les extensions :
Spoiler
begin A_P_arene_script_reba01
float oldvie
float newvie
short x1
short x2
short x3
short x4
short frappe_avec_la_bonne_arme
set newvie to GetHealth
;-------------------------------------------------------------------------------------------------
; Ce bloc ne sert que si le fight du PNJ est réglé pour qu'il ne soit pas agressif
;if ( essaivar == 1 )
; if ( GetLOS, Player == 1 )
; StartCombat, Player
; set essaivar to 2
; endif
;endif
;-------------------------------------------------------------------------------------------------
if ( newvie < oldvie )
set x1 to ( hitonme "chitin club" )
set x2 to ( hitonme "chitin club" )
set x3 to ( hitonme "chitin club" )
set x4 to ( hitonme "chitin club" )
set frappe_avec_la_bonne_arme to ( x1 + x2 + x3 + x4 )
if ( frappe_avec_la_bonne_arme != 0 )
messagebox "Le PJ m'a blessé avec la bonne arme." "Ok"
else
messagebox "Ha non, c'est pas du jeu avec cette arme !" "Ok"
endif
endif
set oldvie to GetHealth
end
Ça marche !
J'ai refais ton script à ma manière en utilisant ce principe mais sans le tester (la flemme de faire les "ID" ). Je te laisse l'essayer toi-même (tel quel) et me dire si ça fonctionne :
Spoiler
begin A_P_arene_script_reba01
; script sur Reba
; permet de stopper le combat :
; - si la vie des combattants est en dessous de 5%
; - si le joueur frappe Reba avec une arme non autorisée
; variables globales :
; A_P_arene_01 : 3 = début du combat, 4 = fin du combat
; A_P_arene_03 : 1 = victoire du joueur, 2 = victoire de Réba, 3 = triche
; A_P_arene_05: nombre de victoires
; A_P_arene_06: nombre de défaites
float oldvie
float newvie
float vie_reba
float vie_joueur
short fait; .........Voir ci-dessous si cette variable est utile
short x1
short x2
short x3
short x4
short frappe_avec_la_bonne_arme
;----------------------------------------------------------
; Je ne comprends pas à quoi sert ce bloc car on trouve les mêmes instructions
; plus bas en cas de triche, et la locale "fait" est forcement à 0 par défaut.
; Mais peut-être est-ce parce que je ne connais pas le reste de la situation.
;
;if ( A_P_arene_01 == 1 )
; set fait to 0
;elseif ( A_P_arene_01 == 4 )
; if ( A_P_arene_03 == 3 )
; if ( fait == 0 )
; StopCombat
; ModCurrentHealth 1000
; set fait to 1
; endif
; endif
;endif
;----------------------------------------------------------
if ( A_P_arene_01 != 3 )
return
endif
set newvie to GetHealth
if ( newvie < oldvie )
set x1 to ( HitOnMe "A_P_arene_baton01" )
set x2 to ( HitOnMe "A_P_arene_hache01" )
set x3 to ( HitOnMe "A_P_arene_epee_courte_01" )
set x4 to ( HitOnMe "A_P_arene_epee_large01" )
set frappe_avec_la_bonne_arme to ( x1 + x2 + x3 + x4 )
if ( frappe_avec_la_bonne_arme == 0 )
MessageBox "Vous avez frappé Réba avec une arme non autorisée. Le combat est terminé." "Ok"
set A_P_arene_03 to 3; ............... triche
StopCombat
ModCurrentHealth 1000
set A_P_arene_01 to 4; .................... fin du combat
return
endif
endif
set oldvie to GetHealth
set vie_reba to GetHealthGetRatio
set vie_joueur to ( Player->GetHealthGetRatio )
if ( vie_reba < 0.05 )
set A_P_arene_03 to 1; ............... victoire
set A_P_arene_05 to ( A_P_arene_05 + 1 )
MessageBox "Vous avez gagné. Réba se retire. Le combat est terminé conformément aux règles." "Ok"
elseif ( vie_joueur < 0.05 )
set A_P_arene_03 to 2; ............... défaite
set A_P_arene_06 to ( A_P_arene_06 + 1 )
MessageBox "Vous avez perdu. Réba vous épargne conformément aux règles. Le combat est terminé." "Ok"
else
return
endif
StopCombat
ModCurrentHealth 1000
set A_P_arene_01 to 4; .................... fin du combat
end
Notes :
- Il ne faut pas mettre l'ID du PNJ si l'instruction qui est dans son script lui est destinée. Ça peut engendrer un bug et c'est inutile puisqu'il est ciblé par défaut.
- Dans tes commentaires, tu avais marqué ceci : "si le joueur n'est pas équipé d'un bouclier et d'une arme autorisé pendant plus de 8 secondes" mais je ne vois pas ce qui peut faire ça dans ton script. (Un reste d'essai, je suppose ?)
- Tout ça me fait penser que tu dois systématiquement vérifier que tes scripts fonctionnent avec les extensions (en jeu, pas dans le Tescs) car les fonctions pour Morrowind seul ne fonctionnent pas forcement de la même façon quand les extensions sont installées. (Exemple : "StartCombat, Player" quand le PNJ n'a pas d'arme.)
PS : Heu... Une pensée me vient en me relisant : Et si le PJ utilisait la magie ? (Essaye ça aussi...)
PS : Heu... Une pensée me vient en me relisant : Et si le PJ utilisait la magie ? (Essaye ça aussi...)
Sans avoir lu le détail des scripts, ne peut-on pas détecter lorsque le PJ lance un sort en faisant un test sur GetSpellReadied ?
Evidemment, utiliser cette condition pour mettre un terme au combat l'empêcherait d'utiliser des sorts pour booster ses caractéristiques ou se soigner, mais ce n'est peut-être pas plus mal.
« I was a soldier! I killed people!
- You were a doctor!
- I had bad days! »
John Watson, en train d'étrangler Sherlock Holmes, Sherlock - A Scandal in Belgravia (2012)
---------------
Vous aussi rejoignez les Fervents Partisans de l'Immuabilité Avatarienne!
---------------
VGM impénitent (était-il besoin de le préciser?)
---------------
Paterfamilias niv.IV
Que ferais-je sans toi Elendell ? Merci beaucoup pour le temps que tu y as passé ! Et pour les résultats.
Avant de tester tout ça, je précise qu'il y a d'autres scripts qui tournent dans la cell, dont un qui permet de savoir si le joueur est bien équipé d'un bouclier et d'une arme autorisée.
Si le joueur équipe autre chose pendant le combat (c'est surtout pour le bouclier), un message apparait, et s'il ne change pas au bout de quelques secondes, le combat est annulé. La variable globale A_P_arene_01 passe à 4 et A_P_arene_03 passe à 3, d'où le premier bloc d'instructions dont tu ne voyais pas l'utilité.
En ce qui concerne la magie, elle est impossible pendant le combat (disableplayermagic). Pour le RP, un npc dit qu'il lance un enchantement dans la pièce. Donc ça évite d'autres soucis.
Quant au bug des npcs pour le combat à mains nues, je le connais bien. Au départ, cette arène devait être un lieu de combat à mains nues... Mais j'ai dû vite changer d'idée. De même, tous les npcs de Pertevue (sauf rares exceptions) portent une arme pour pouvoir se défendre efficacement au cas où.
Quant aux tests avec d'autres versions de Morro et les add-ons, c'est prévu. Inari, A3jv et d'autres qui ont l'Archipel jouent avec les extensions et pourront me faire leur compte rendu pour les passages scriptés qui pourraient poser problème...
Merci encore !
[edit]
C'est bon, ça fonctionne impeccablement ! Merci beaucoup !!!!
Modifié par Orann, 21 février 2010 - 14:02.
Palme d'honneur 2010 pour le mod Archipel de Pertevue