Oui le tour est joué, de toute façon.
Merci pour ce training -de codage et d'écriture, au fond c'est un peu pareil, n'est-ce pas?-!
D'abord une généralité : il ne faut pas trop se fier à l'apparence, ce n'est pas le nombre de lignes rédigées dans un script qui compte, c'est le nombre de tests/commandes qu'il exécute par frame.
Nous utilisons bien le même principe exactement (test d'effet casté + add/remove de capacité ; je n'en connais pas d'autre pour ce genre d'effets) mais je n'avais pas pensé à "removespelleffects" (carrément oublié que ça existe), qui permet bien d'utiliser le sort racial de base sans le modifier et qui simplifie la chose de quelques cheveux (ça économise la création de deux sorts, et un changement de sort dans la liste du joueur exécuté une seule fois en une frame à la sortie du bureau des taxes par 2 lignes de script par race). Pour le joueur c'est moins troublant effectivement (sauf que la durée indiquée dans l'effet listé ne correspondra plus à réalité de l'effet illimité). Quoi qu'il en soit bravo et merci de ce rappel
Vous avez donc choisi de ne pas reproduire la durée des sorts, ok (le timer ajoute un poil de complexité et, en principe, de la charge de calcul et de mémoire, en effet -pas sensible sur ma bécanne, cf + bas-).
Vos deux scripts exécutent pratiquement, à eux deux, les mêmes tests/commandes que ceux qui sont exécutés dans mon script unique fractionné en deux par des variables et des "elseif".
Mais vous n'êtes pas loin de la meilleure formule, c'est vrai : un seul script par race c'est mieux, oui, ça économise des tests... si un seul est lancé.
Par contre votre algo malgré les apparences est un peu plus lourd du fait que vos 3 tests "if" empilés sont répétés dans 2 scripts globaux qui tournent en même temps, alors qu'en réalité une seule race étant de base testée une fois pour toute déjà par le jeu, il suffirait de lancer un seul script correspondant à cette race et de ne plus la tester dans ce script.
Bon d'après mes essais sous toutes les coutures des deux algos et scripts non modifiés et modifiés, ma petite usine n'est ni plus ni moins lourde, elle totalise à peu près la même quantité de tests, avec son timer, que vos 2 scripts qui tournent en même temps. Mais au final sur une vieille bécanne je suis sur qu'il vaut mieux que tourne un seul global comme les vôtres, que deux ou qu'un comme le mien sans doute, qui fait donc le même nombre de tests que vos deux ensemble (as-tu testé avec mon esp, si tu vois une différence de FPS?) .
J'ai donc fait plusieurs essais sur install de base sans mod ("seulement" MGE-XE avec les options graphiques à fond +1 ou 2 shaders ajoutés), à la sortie du bureau des taxes avec chaque fois une nouvelle partie sous les 2 races et donc sous plusieurs formes d'algo -le mien, le vôtre, l'un puis l'autre modifiés-. Tout se vaut au final, la bécane a sous toutes les formules tourné dans les 45 fps sous ma config système "moyenne contemporaine" :
► Afficher le texte
Version logiciel Radeon - 18.10.2
Édition logiciel Radeon - Adrenalin
Jeu de puces graphiques - Radeon RX 560 Series
Taille de la mémoire - 4096 MB
Type de mémoire - GDDR5
Horloge du processeur - 1300 MHz
Version Windows - Windows 10 (64 bit)
Mémoire système - 8 GB
Type de CPU - AMD Ryzen 5 1400 Quad-Core Processor
Je n'ai pas testé sous mon install de jeu à proprement parler, un peu chargée en mods, mais je suis sûr qu'en début de partie ce serait pareillement égal, avec ou sans cet esp sous toutes ses formules possibles, ça tournera dans les 35fps au lieu de 45 sans mod.
► Afficher le texte
[Game Files]
GameFile0=abotWaterLife.esm
GameFile1=Better Heads - Complete.esm
GameFile2=Bloodmoon.esm
GameFile3=Morrowind.esm
GameFile4=PNOG.esm
GameFile5=Poorly Placed Object Fix 1.2.esm
GameFile6=Rahj sagas.esm
GameFile7=Texture Fix 2.0.esm
GameFile8=Tribunal.esm
GameFile9=Alchimie de Sri VF.esp
GameFile10=almalexia armor.esp
GameFile11=Amulet of Scrye.esp
GameFile12=Andromeda's_Fast_Travel RealSignposts Compatability.ESP
GameFile13=Animated_Morrowind - merged.esp
GameFile14=AtmosphericSoundEffects-4.0-Bloodmoon.esp
GameFile15=AtmosphericSoundEffects-4.0-Tribunal.esp
GameFile16=Baldurians_Daedric_Armor_Replacer.esp
GameFile17=Better Bodies v2.2.esp
GameFile18=Better Clothes - complete.esp
GameFile19=Better Skulls.esp
GameFile20=Better Weapons and Armors.esp
GameFile21=BlightedAnimalsRetextured.esp
GameFile22=BoundWeaponReplacer.esp
GameFile23=Clean MCFC_1.0.esp
GameFile24=Clean Tr CorrecRahjSagaLanternesJumelles.ESP
GameFile25=Complete Armor Joints.esp
GameFile26=Concordia Magica.esp
GameFile27=Correctif_MOSG.esp
GameFile28=correctUV Ore Replacer 1.0.esp
GameFile29=Effets Sonores Plus v1.0.esp
GameFile30=Female Armor - Complete.esp
GameFile31=Graphic Herbalism.esp
GameFile32=guarskin_drum_replacer.esp
GameFile33=imperial chain fix.esp
GameFile34=Imperialist Nerevarine.ESP
GameFile35=ImprovedFollowers.esp
GameFile36=JEB_muffin_fix.esp
GameFile37=Juniper's Twin Lamps (1.1 Tribunal).esp
GameFile38=Key Replacer Trib & BM.esp
GameFile39=LeftGloves_Addon_v2.esp
GameFile40=Livres dwemers.esp
GameFile41=Long live the Queen.ESP
GameFile42=LongsanglotPlus.esp
GameFile43=Magie spectaculaire.esp
GameFile44=MA_snowprincetomb_v3.esp
GameFile45=Merged_Objects.esp
GameFile46=MQE_MainQuestEnhancers.ESP
GameFile47=multipatch.esp
GameFile48=Méditations&Incantations.esp
GameFile49=Nationalist Nerevarine 1.1.ESP
GameFile50=Neo's Unique Creatures.esp
GameFile51=New Argonian Bodies - Mature.esp
GameFile52=new door sounds.esp
GameFile53=New Khajiit Bodies - Mature.esp
GameFile54=OTR_Coast_Variety.esp
GameFile55=Particle Arrow Replacer.esp
GameFile56=Psy_UniqueDremora_T.esp
GameFile57=Psy_VGR_Armour.esp
GameFile58=RavRacesCapFull.ESP
GameFile59=Reflective Gold.esp
GameFile60=Region Fixes (Solstheim).esp
GameFile61=Region Fixes (Vvardenfell).esp
GameFile62=Ruines_de_Vvardenfell.esp
GameFile63=SirLuthor-Tools.esp
GameFile64=SNR_ThievesStep_Standart.esp
GameFile65=Sorts de téléportation-vf.esp
GameFile66=Statue Replacer - Normal.esp
GameFile67=STA_guides_replacer.esp
GameFile68=Taera boost.ESP
GameFile69=Tel Magus Ingrédients TB-BM VF.esp
GameFile70=Tel Magus-Grandes PâturesVF.esp
GameFile71=Tel MagusVF.esp
GameFile72=The Fires of Orc.ESP
GameFile73=TLM - Light Sources (Clearer Lighting).esp
GameFile74=TLM - Light Sources (Lanterns).esp
GameFile75=TLM - Light Sources (Natural Water).esp
GameFile76=TLM - NPC Light Sources.esp
GameFile77=Tome of Ancient Knowledge_VFUBIv2.esp
GameFile78=UF_HortRobeF001.esp
GameFile79=Unique Banners and Signs.esp
GameFile80=Unique Jewelry and Accessories.esp
GameFile81=UniqueFinery.esp
GameFile82=Vurt's Ashlands Overhaul.esp
GameFile83=Vurt's BC Tree Replacer II.esp
GameFile84=Vurt's Grazelands Unique Trees.esp
GameFile85=Vurt's Leafy West Gash.esp
GameFile86=Windows Glow - Complete.esp
GameFile87=XE Sky Variations.esp
[sur mon install V.O. il y en a une 20aine de plus, et Tamriel Rebuilt en sus, ça tourne en début de partie dans les 20~25 à Seyda Nihin et dans les 10~15 dans les zones TR (avec MGE-XE tout à donf et la limite "distant land" à 18 cells), ça ne changerait pas grand chose non plus je suis sûr sous toutes les formules... quoique dans TR, super-hyper lourd en meshes et textures, faudrait que j'y aille voir]
Par contre je suis à peu près sûr que plus une partie va avancer plus vos 2 scripts globaux simultanés vont finir par mettre des bâtons dans les roues d'une vielle bécane (et peut être ma série de tests en un seul script aussi sur ma propre config, en fait dans les 2 cas ça dépendra surtout de tous les autres mods cumulés qui additionnent des entrées de journal et autres collections d'états de variables).
Donc je te propose quelques optimisations :
D'abord, quelle que soit la solution choisie entre lancer un seul script ou les deux, tester la race dans le ou les script(s) de toggle est totalement inutile (un test de trop à supprimer sans hésitation), puisque seule la race concernée possède l'effet concerné.
► Afficher le texte
(j'ai vérifié pour l' "eye of night", en effet un PJ Hllalu possède le sort, c'est au Manoir Réthan / Maison de Berendas / Unila Berendas, elle a le script "stronghold service" qui génère un greetint particulier quand on a construit sa résidence de haut rang de maison, mais elle n'est pas "trader service", donc elle ne doit pas le vendre -me demande ce qu'un pnj peut bien faire d'une vision nocturne!... augmenter son rayon d'IA de détection pour les cas de fight at first sight? ... explication bidon, l'ordi n'a pas besoin de "voir" des données "dans le noir", ou alors pourquoi tous les autres PNJs de sa classe "agent" ne l'ont-ils pas?- et de toute façon il n'y aurait pas de raison pour que ça fonctionne différemment pour un PJ d'une autre race qui l'achèterait.
Et pour cette même raison (sauf si d'autres mods implémentent des PNJS qui vendent des capacités raciales), c'est vraiment tout à fait inutile de lancer plus d'un seul script correspondant au test d'un seul effet racial. Autrement dit un seul starscript qui lance seulement le script nécessaire puis s'arrête suffit.
Donc voilà ce que je propose :
En starscript :
Code : Tout sélectionner
Begin AA_racetest
short state
if ( CharGenState > -1 ) ; c plus propre et plus sûr
return
endif
if ( state == 0 )
if ( PCRace == 1 )
startscript "AA_ArgonianBreatheToggle
elseif (PCRace == 6 )
AA_VisionNocturneToggle
endif
set state to 1
;==bien gaffe à n' ajouter les 4 lignes qui suivent au script qu'après l'avoir d'abord enregistré sans elles ===
return
else
set state to 0
stopscript "AA_racetest"
;================================================================
endif
end
Votre test de toggle mais sans le test de race -et pas en startscript, puisque démarré par le test racial- (là pour les Khajits, et donc même script autres ID pour les Argo œuf côrse)
Code : Tout sélectionner
begin AA_VisionNocturneToggle
if ( Player->GetSpellEffects, "eye of night" == 1 ) ;
if ( Player->getSpell, "000VisNocCap" == 1 )
Player->RemoveSpell, "000VisNocCap"
else
Player->AddSpell, "000VisNocCap"
endif
Player->RemoveSpellEffects, "eye of night"
endif
end
C'est encore plus simple, et bien plus léger quoi qu'en dise ma bécane.
