Aller au contenu


Exécuter Un Script En Arrière-Plan


  • Veuillez vous connecter pour répondre
8 réponses à ce sujet

#1 Lucead

Lucead

Posté 28 septembre 2012 - 13:14

Bon, je tourne un peu en rond et je ne sais pas trop comment m'y prendre.

Je cherche à exécuter un script en arrière-plan qui détecte les différents acteurs morts autour du joueur (plus de détails ici).
Le script est terminé (à quelques ajustements près), mais malheureusement, je ne vois pas sur quoi "attacher" ce script, n'y même d'ailleurs de quoi je dois l'hériter.

J'ai essayé depuis un sort, mais cela ne fonctionne pas. Le sort se terminant aussitôt, l'event OnUpdate() n'est jamais appelé (enfin, c'est ce que j'en ai déduit).

J'ai essayé avec une quête.
Cela fonctionne très bien, mais à la moindre mise à jour ou changement dans le mod, des problème surviennent (modifications non prises en compte la plupart du temps) réduisant à néant l'intérêt du mod.
De plus, impossible de le désinstaller par la suite ! Ceci dit, j'ai peut-être louper un détail.

Donc voilà, j'aimerai avoir l'avis de personnes qui ont plus de connaissances sur Papyrus.

Voici la version actuelle du script (basé sur ActiveMagicEffect) :
Scriptname AutoPicker extends ActiveMagicEffect

Actor Property PlayerRef  Auto
FormList Property Items	Auto
GlobalVariable Property CheckingEnabled Auto
GlobalVariable Property CheckingDelay   Auto
GlobalVariable Property CheckingRadius  Auto
GlobalVariable Property AutoLootEnabled Auto

Event OnEffectStart(Actor akTarget, Actor akCaster)
	If ( CheckingEnabled.GetValue() != 0 )
		Debug.Notification("AutoPicker CheckingEnabled")
		CheckingEnabled.SetValue(1)
		RegisterForSingleUpdate(CheckingDelay.GetValue())
	Else
		Debug.Notification("AutoPicker disabled")
		CheckingEnabled.SetValue(0)
	EndIf
EndEvent

Event OnUpdate()
	 Actor actorRef = GetNearestActor()

	 If ( CanBeLoot(actorRef) && HasLoot(actorRef) )
		 Debug.Notification("Actor has loot")

		 If (AutoLootEnabled.GetValue() != 0)
			TransferItems(Items, actorRef, PlayerRef)
		 EndIf
	EndIf

	If ( CheckingEnabled.GetValue() != 0)
		RegisterForSingleUpdate(CheckingDelay.GetValue())
	EndIf
EndEvent

Actor Function GetNearestActor()
	 Return Game.FindRandomActorFromRef(PlayerRef, CheckingRadius.GetValue())
EndFunction

Bool Function CanBeLoot(Actor akActor)
	 ;If (akActor == None)
	 ; Return False
	 ;Else
	 ; If (akActor.IsDead())
	 ; Return True
	 ; Else
	 ; Return False
	 ; EndIf
	 ;EndIf
	 Return (akActor != None && akActor.IsDead())
EndFunction

Bool Function HasLoot(Actor akActor)
	 Return akActor.GetItemCount(Items) > 0
EndFunction

Function TransferItems(FormList akItems, Actor akOrigin, Actor akDestination)
	 Int itemCount = 0
	 Int i = akItems.GetSize()

	 While i > 0
		  i -= 1
		  Form item = akItems.GetAt(i)
		  itemCount = akOrigin.GetItemCount(item)
		  If ( itemCount > 0)
			   akOrigin.RemoveItem(item, itemCount)
			   akDestination.AddItem(item, itemCount)
		  EndIf
	 EndWhile
EndFunction

Merci d'avance :)

#2 HawkFest

HawkFest

Posté 21 novembre 2012 - 08:39

Cette page pourrait t'intéresser (relativement à l'application du script)...

Sinon, as-tu essayé de l'attacher à la référence du joueur (avec quelques modifs bien entendu)?... Ou un "token"? Je n'ai moi-même encore jamais utilisé la technique du token dans Skyrim, à date l'attachement de scripts aux références (d'alias ou non - tu peux faire un alias sur le joueur et lui attacher ton script modifié) m'ont suffit, mais théoriquement cela devrait fonctionner :
  • prends un objet quelconque vanille, genre charbon de bois que tu duplique ;
  • édite ce nouvel objet et enlève-lui son nom, son nif Model, poids, valeur etc. (tu peux garder le nom visible dans ton inventaire pour la phase de test/développement, histoire de savoir avec assurance que tu l'as) ;
  • tu vois le panneau sur la droite intitulé Papyrus Scipt? Bingo c'est pour attacher un script d'objet!
  • maintenant il faudra amener quelques modifications au script (par exemple, ce ne serait plus un script de sort mais un script de classe objet  - extends ObjectReference) ;
Ce token pourrait même être un morceau de vêtement pourquoi pas, et qui pourrait se porter sur le "Biped Object" ForeArm ou Ears ou autre qui n'est pas un slot utilisé par les vêtements "normaux" du jeux... Cependant, tu pourras constater que cette technique de token est obsolète avec Skyrim. À tout le moins je n'en ai pas encore vu d'utilité (sauf pour le cas mentionné plus loin) : elle fonctionnerait, mais les alias et autres techniques pour attacher des scripts suffisent généralement à cette tâche. L'avantage du token cependant, c'est qu'ainsi le script n'est pas associé au joueur ou un acteur spécifique, mais à un objet qui peut être enlevé ou ajouté à l'inventaire de n'importe quel PNJ, à la guise du moddeur. Pratique pour des effets spéciaux enchaînés sur des cibles PNJ par exemple.

Modifié par HawkFest, 21 novembre 2012 - 08:46.


#3 Gérauld

Gérauld

Posté 21 novembre 2012 - 10:05

Il y a un petit tuto en français en parlant sur Wiwiland et dans la forge du côté de la la Conf' aussi.
http://forum.wiwilan...ucs-et-astuces/
Chapitre II

Modifié par Gérauld, 21 novembre 2012 - 10:10.

L'ours blanc est l'un des plus grands carnivores de Nirn. Les poils du pelage sont translucides et creux. C'est la réfraction de la lumière visible sur la surface interne des poils creux et incolores qui les fait paraître blancs. Cette particularité lui permet de se camoufler dans son environnement de neige et de glace, afin de mieux surprendre ses proies. Ce plantigrade vit exclusivement en Bordeciel et sur l'île de Solstheim.

#4 Lucead

Lucead

Posté 21 novembre 2012 - 18:23

Merci à vous deux pour vos conseils :)

Pour le moment, ce mod est en grande pause, vu que je passe la majeure partie de mon temps à améliorer CKPE (qui est né justement parce que je trouvais le scripting sur NP++ immonde). Cela me sera toujours utile dès que je pourrai m'y remettre. En plus, avec le dernier joujou que je prépare pour CKPE, je pourrais faire un mod beaucoup plus simple à utiliser. ;)

#5 HawkFest

HawkFest

Posté 21 novembre 2012 - 20:14

Voir le messageLucead, le 21 novembre 2012 - 18:23, dit :

En plus, avec le dernier joujou que je prépare pour CKPE, je pourrais faire un mod beaucoup plus simple à utiliser. ;)
C'est quoi "CKPE", "Le Club de Kayak le Partage des Eaux" (belle page de photos nature du Québec version kayak)? :grin:... Ou parles-tu de SKSE?

EDIT : note que Gérauld donne de très bons conseils qui m'ont bien aidés : pour les objets vanille existant dans le jeux (donc presque tous), utilise des alias. Sinon tu peux directement attacher sur la référence (sans toucher à l'objet de base que tu as créé. Enfin bref, bon courage et bonne continuation!

Modifié par HawkFest, 21 novembre 2012 - 20:42.


#6 Lucead

Lucead

Posté 21 novembre 2012 - 20:20

Voir le messageHawkFest, le 21 novembre 2012 - 20:14, dit :

C'est quoi "CKPE", le "Le Club de Kayak le Partage des Eaux" (belle page de photos nature du Québec version kayak)? :grin:
Presque :D C'est un logiciel de développement de script Papyrus que je développe : http://forum.wiwilan...papyrus-editor/


*en déduit qu'il n'est pas encore assez connu, part coller des affiches*

Modifié par Lucead, 21 novembre 2012 - 20:20.


#7 Gérauld

Gérauld

Posté 21 novembre 2012 - 20:39

Cet éditeur s'améliore au fil des versions. Plus nous serons nombreux à l'utiliser et à faire des retours, plus il se rapprochera de l'outil ultime d'édition/traduction de scripts.
Pour ma part, je fabrique en série les scripts de mes mods avec CKPE.
Je devrais peut-être le mentionner sur les pages de ceux-ci... A quand un petit logo à mettre sur les pages?
* Part aussi coller quelques affiches *
L'ours blanc est l'un des plus grands carnivores de Nirn. Les poils du pelage sont translucides et creux. C'est la réfraction de la lumière visible sur la surface interne des poils creux et incolores qui les fait paraître blancs. Cette particularité lui permet de se camoufler dans son environnement de neige et de glace, afin de mieux surprendre ses proies. Ce plantigrade vit exclusivement en Bordeciel et sur l'île de Solstheim.

#8 Lucead

Lucead

Posté 21 novembre 2012 - 20:48

Voir le messageGérauld, le 21 novembre 2012 - 20:39, dit :

Pour ma part, je fabrique en série les scripts de mes mods avec CKPE.
Nota Bene : Avec ou sans CKPE, Gerauld pond plus de script qu'une usine de chinois dopés aux enphétamines :peur:

Voir le messageGérauld, le 21 novembre 2012 - 20:39, dit :

Je devrais peut-être le mentionner sur les pages de ceux-ci... A quand un petit logo à mettre sur les pages?
Disons qu'avec mes GRANDS talents artistiques, celui-ci serai tellement beau que tout le monde saignerait des yeux serait baigner dans une lumière divine ! Et c'est pourquoi je me suis mis à la programmation :huhu:
Plus sérieusement, si quelqu'un veut me faire un zoli logo (et le même en petit pour faire l'icône), je dis pas non !

Voir le messageGérauld, le 21 novembre 2012 - 20:39, dit :

* Part aussi coller quelques affiches *
*prépare le chèque hebdomadaire de Gérauld*

Modifié par Lucead, 21 novembre 2012 - 20:48.


#9 HawkFest

HawkFest

Posté 22 novembre 2012 - 00:38

*Consomme la pub et achète pour voir*

Modifié par HawkFest, 22 novembre 2012 - 02:12.





0 utilisateur(s) li(sen)t ce sujet

0 membre(s), 0 invité(s), 0 utilisateur(s) anonyme(s)