Oyez, oyez !

Les résultats du vote sur les meilleurs RPG de tous les temps sont désormais dévoilés dans ce message !

Merci à toutes et à tous pour votre participation !

N'hésitez pas à aller commenter, ajouter des jeux auxquels vous n'auriez pas pensé...

[SCRIPT] Immobilité PC pendant une animation

Répondre
Cocrane
Adepte de Grondemarteau
Ogre mage
Messages : 1328
Enregistré le : dim. 21 mars 2010, 12:03
Localisation : Paris
Contact :
Statut : Hors ligne

[SCRIPT] Immobilité PC pendant une animation

.

Message par Cocrane »

Le groupe se retrouvera téléporté dans une autre carte.

Au départ de la carte, je lance l'animation de téléportation sur chaque créature.
Idem lorsque l'on arrive sur l'autre carte.

Le hic, c'est que les créatures peuvent bouger pendant l'animation qui dure quelques secondes.

Je pensais faire un CUTSCENE pour gérer le changement de carte.

Avez-vous un moyen plus simple?

Une CUTSCENE où les créatures changent de carte, ça fonctionne?

Cocrane
Avatar du membre
Freddy_Gwendo
Adepte de Grondemarteau
Orbe ancien
Messages : 5877
Enregistré le : sam. 23 avr. 2011, 00:26
Localisation : Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
Statut : Hors ligne
.

Message par Freddy_Gwendo »

Yep ! ;)

Exemple tiré de la téléportation de mon groupe dans le Royaume de Diamant Éternel :

Code : Tout sélectionner

IF
	tes conditions
THEN
	RESPONSE #100
		ClearAllActions()
		SetInterrupt(FALSE)
		SmallWait(5)
		StartCutSceneMode()
		CutSceneId(Player1)
		CreateVisualEffectObject("SPPORTAL",Player1)
		CreateVisualEffectObject("SPPORTAL",Player2)
		CreateVisualEffectObject("SPPORTAL",Player3)
		CreateVisualEffectObject("SPPORTAL",Player4)
		CreateVisualEffectObject("SPPORTAL",Player5)
		CreateVisualEffectObject("SPPORTAL",Player6)
		Wait(2)
		FadeToColor([30.0],0)
		Wait(1)
		EndCutSceneMode()
		TextScreen("GWChap01")
		SmallWait(1)
		StartCutSceneMode()
		CutSceneId(Player1)
		LeaveAreaLUAPanicEntry("GW0000","Entry1",[0.0],4)
		LeaveAreaLUAEntry("GW0000","Entry1",[0.0],4)
		ActionOverride(Player2,LeaveAreaLUAEntry("GW0000","Entry1",[0.0],4))
		ActionOverride(Player3,LeaveAreaLUAEntry("GW0000","Entry1",[0.0],4))
		ActionOverride(Player4,LeaveAreaLUAEntry("GW0000","Entry1",[0.0],4))
		ActionOverride(Player5,LeaveAreaLUAEntry("GW0000","Entry1",[0.0],4))
		ActionOverride(Player6,LeaveAreaLUAEntry("GW0000","Entry1",[0.0],4))
		Wait(1)
		MultiPlayerSync()
		SetInterrupt(TRUE)
		FadeFromColor([30.0],0)
		Wait(1)
		EndCutSceneMode()
END
Tu peux changer LeaveAreaLUAEntry("GW0000","Entry1",[0.0],4) par LeaveAreaLUA("GW0000","",[x.y],4)) avec [x.y] comme coordonnées.

Tu peux même zapper le second bloc

Code : Tout sélectionner

		EndCutSceneMode()
		TextScreen("GWChap01")
		SmallWait(1)
		StartCutSceneMode()
		CutSceneId(Player1)
qui ne sert qu'à afficher un textscreen avant la téléportation dans l'autre carte.
CARPE DIEM...Co-modérateur de La Forge et de La Chambre des Scribes
Moddeur qui s'arrache les cheveux...
Cocrane
Adepte de Grondemarteau
Ogre mage
Messages : 1328
Enregistré le : dim. 21 mars 2010, 12:03
Localisation : Paris
Contact :
Statut : Hors ligne
.

Message par Cocrane »

Ok, donc un changement de carte peut se faire dans un CUTSCENE.

Pour le changement de carte, je me contente en général du mot clé LeaveAreaLUA où je signale la coordonnée d'arrivée.

Je vois qu'avec
LeaveAreaLUAPanicEntry("GW0000","Entry1",[0.0],4)
LeaveAreaLUAEntry("GW0000","Entry1",[0.0],4)

On arrive sur l'entrée spécifiée de la carte d'arrivée.

J'ai raté quelque chose?

Cocrane
Avatar du membre
Freddy_Gwendo
Adepte de Grondemarteau
Orbe ancien
Messages : 5877
Enregistré le : sam. 23 avr. 2011, 00:26
Localisation : Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
Statut : Hors ligne
.

Message par Freddy_Gwendo »

Non, c'est la raison pour laquelle je t'ai indiqué les deux solutions. Si tu privilégies la version avec Entry, n'oublie-pas d'inclure ceci dans ton tp2 :

Code : Tout sélectionner

APPEND ~ENTRIES.2DA~ ~GW0000		1720.2676  *           *          *         *         *         *         *        *~ UNLESS ~GW0000~
CARPE DIEM...Co-modérateur de La Forge et de La Chambre des Scribes
Moddeur qui s'arrache les cheveux...
Cocrane
Adepte de Grondemarteau
Ogre mage
Messages : 1328
Enregistré le : dim. 21 mars 2010, 12:03
Localisation : Paris
Contact :
Statut : Hors ligne
.

Message par Cocrane »

Ok pour le APPEND.

La version sans me plait bien.

Le groupe n'est pas obligé d'être rassemblé. Si une personne arrive sur le Trigger, il est téléporté. Si un 2nd arrive, idem.
> Ca fonctionne bien

J'ai essayé de tester la présence des PLAYERS pour télécharger ceux qui sont sur la zone en une seule fois. Du coup, j'ai fragmenté la Cutscène en plusieurs tests successifs pour mais seul le premier test se déclenche.
// Début Cutscene
IF
Range([PC],3)
THEN
RESPONSE #100
Createcreature("MINSC",[-1.-1],10) // temoin

ClearAllActions()

//SetInterrupt(FALSE)
SmallWait(5)

StartCutSceneMode()
CutSceneId(LastTrigger)

FadeToColor([30.0],0)

SetGlobal("COM021_CS","COM021",1)
Continue()
END

// Gestion Player1
IF
Global("COM021_CS","COM021",1)
Global("COM021_P1","COM021",0)
Range(PLAYER1,3)
THEN
RESPONSE #100
SetGlobal("COM021_P1","COM021",1)
CreateVisualEffectObject("SPPORTAL",PLAYER1)

SmallWait(5)
ActionOvErride(LastTrigger,LeaveAreaLUA("COM023","",[1400.700],10))
Continue()
END

// Gestion Player2
IF
Global("COM021_CS","COM021",1)
Global("COM021_P2","COM021",0)
Range(PLAYER2,3)
THEN
RESPONSE #100
SetGlobal("COM021_P2","COM021",1)
CreateVisualEffectObject("SPPORTAL",PLAYER2)

SmallWait(5)
ActionOvErride(LastTrigger,LeaveAreaLUA("COM023","",[1400.700],10))
Continue()
END

// Fin Cutscene
IF
Global("COM021_CS","COM021",1)
THEN
RESPONSE #100
Wait(4)
SetGlobal("COM021_CS","COM021",0)

//SetInterrupt(TRUE)
FadeFromColor([30.0],0)

Wait(1)
EndCutSceneMode()

Createcreature("MINSC",[-1.-1],10) // temoin
END
Résultat: CUTSCENE lancée mais plus rien ne se passe ensuite.

Cocrane
Avatar du membre
deratiseur
Golem de fer
Messages : 3702
Enregistré le : mer. 05 déc. 2007, 18:35
Localisation : Gap, Hautes alpes
Statut : Hors ligne
.

Message par deratiseur »

Et l'effet 165 "pause target" ? je l'utilise pour un objet qui fait arrêt du temps affectant aussi le lanceur, et il est utilisé à la base une seconde lors du lancement de "mains ardentes".

Tu pourrais affecter tes personnage avec un sort qui utilise cet effet pendant que le reste de l'animation est joué autour d'eux.
Cocrane
Adepte de Grondemarteau
Ogre mage
Messages : 1328
Enregistré le : dim. 21 mars 2010, 12:03
Localisation : Paris
Contact :
Statut : Hors ligne
.

Message par Cocrane »

Salut Dérat,
merci pour ton idée.

Je reformule:
- je lance l'effet pause sur un adapté. La créature ciblée ne fait plus rien.
- je lance l'animation téléportation sur la créature.
- la fin de pause arrive et l'animation est terminée.

Peux tu confirmer?


Cocrane
Avatar du membre
Freddy_Gwendo
Adepte de Grondemarteau
Orbe ancien
Messages : 5877
Enregistré le : sam. 23 avr. 2011, 00:26
Localisation : Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
Statut : Hors ligne
.

Message par Freddy_Gwendo »

Coco, tu peux expliquer en détail ce qui se passe. Exemple : player1 passe sur le trigger, est téléporté dans la carte suivante. Quelle carte affiche le jeu ? Que se passe-t-il quand tu sélectionnes un autre perso (tu reviens sur la carte initiale ou pas), etc...

Par ailleurs, est-ce vraiment utile que tu sépares ton groupe pour ton scénario ? Si non, tu te compliques singulièrement la vie. ;)
CARPE DIEM...Co-modérateur de La Forge et de La Chambre des Scribes
Moddeur qui s'arrache les cheveux...
Cocrane
Adepte de Grondemarteau
Ogre mage
Messages : 1328
Enregistré le : dim. 21 mars 2010, 12:03
Localisation : Paris
Contact :
Statut : Hors ligne
.

Message par Cocrane »

Freddy,

seul le 1ier block du trigger se déclenche, soit:

[HTML]IF
Range([PC],3)
THEN
RESPONSE #100
Createcreature("MINSC",[-1.-1],10) // temoin

ClearAllActions()

//SetInterrupt(FALSE)
SmallWait(5)

StartCutSceneMode()
CutSceneId(LastTrigger)

FadeToColor([30.0],0)

SetGlobal("COM021_CS","COM021",1)
Continue()
END[/HTML]


Au bou d'un moment, l'écran n'est plus noir, les PNJ sont tj sur la carte d'origine et on est bloqué en mode Cutscene.
A voir, si c'est différent avec le code dans le script de la carte.

Ce n'est pas indispensable au niveau scénario mais c'est plus sympa. Donc je tente et je m'adapterai si je ne trouve pas.


Cocrane
Avatar du membre
Freddy_Gwendo
Adepte de Grondemarteau
Orbe ancien
Messages : 5877
Enregistré le : sam. 23 avr. 2011, 00:26
Localisation : Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
Statut : Hors ligne
.

Message par Freddy_Gwendo »

Ça me semble normal puisque tu lances un CutScenemode sans le fermer.
Puisque tu crées MINSC comme un test, oublie-le.

Code : Tout sélectionner

IF
  Range([PC],3)
THEN
  RESPONSE #100
    SetGlobal("COM021_CS","COM021",1)
    Continue()
END
Puis lance tes autres blocs avec Global("COM021_CS","COM021",1).

Code : Tout sélectionner

// Gestion Player1
IF
  Global("COM021_CS","COM021",1)
  Global("COM021_P1","COM021",0) // Pas sûr que ce soit très utile à l'usage.
  Range(PLAYER1,3)
THEN
  RESPONSE #100
    SetGlobal("COM021_P1","COM021",1) // id.
    SetInterrupt(FALSE)
    SmallWait(5)
    StartCutSceneMode()
    CutSceneId(Player1)
    CreateVisualEffectObject("SPPORTAL",Player1)
    Wait(2)
    FadeToColor([30.0],0)
    Wait(1)
    LeaveAreaLUAPanicEntry("GW0000","Entry1",[0.0],4)
    LeaveAreaLUAEntry("GW0000","Entry1",[0.0],4)
    Wait(1)
    SetInterrupt(TRUE)
    FadeFromColor([30.0],0)
    Wait(1)
    EndCutSceneMode()
END
CARPE DIEM...Co-modérateur de La Forge et de La Chambre des Scribes
Moddeur qui s'arrache les cheveux...
Cocrane
Adepte de Grondemarteau
Ogre mage
Messages : 1328
Enregistré le : dim. 21 mars 2010, 12:03
Localisation : Paris
Contact :
Statut : Hors ligne
.

Message par Cocrane »

J'ai lu ton code.

Si j'ai plusieurs PC qui arrivent d'un coup sur le TRIGGER, d'après toi, ca va lancer des CUTSCENE en série ou en parallèle? Le parallèle étant mon plan A. ^^

J'avais pris comme à priori que si un CUTSCENE est lancé, on ne peut pas en lancer un autre en même temps.

Cocrane
Avatar du membre
deratiseur
Golem de fer
Messages : 3702
Enregistré le : mer. 05 déc. 2007, 18:35
Localisation : Gap, Hautes alpes
Statut : Hors ligne
.

Message par deratiseur »

Cocrane, l'effet pause à une durée que tu configure comme tu veux. Donc oui, tu peut "pauser" le personnage, le déplacer par script ou tu veux, et si tu peux qu'il recommence à bouger, cale la pause pour qu'elle soit arrêtée pile à ce moment. Si tu veux qu'il ne bouge toujours pas, cale la pause plus longue.
heu, ça fait 2 sujets traités différemment sur le même topic :)

ps : c'est la qu'on voit que je suis toujours aussi nul en coding -> j'utilise des solutions plus simpliste ^^
Cocrane
Adepte de Grondemarteau
Ogre mage
Messages : 1328
Enregistré le : dim. 21 mars 2010, 12:03
Localisation : Paris
Contact :
Statut : Hors ligne
.

Message par Cocrane »

Salut Dérat,
que dire de quelqu'un qui est nul et dont l'idée est visiblement la meilleure. ;)

L'avantage de ton idée est qu'il n'y a pas de Cutscène et que les autres personnages peuvent du coup vivre leurs vies. Ainsi les créatures sont déplacées selon leur présence à proximité du trigger déclenché.

J'ai commencé à tester l'idée hier et je viens de trouver un paramétrage qui me convient. Le sort lance:
- la pause
- l'animation
- le changement de carte (via un script déclenché avec l'effet changement de l'IA Script)

J'ai eu des difficultés avec la gestion de la zone pour faire téléporter l'ensemble des présents. (d'où le passage du script déplacement dans le sort lui même)

Je suis parti sur l'exemple du sort Boule de feu pour le paramétrage de la zone d'effet. Si je retire l'animation de la boule, une seule créature subit l'effet. Si je mets une animation comme celle de la dissipation de magie, l'effet de groupe "remarche".

Je ne capte pas la nécessité d'avoir une animation de zone. :-) Mais ce n'est pas bloquant.

En gros, ta solution me plait et ça marche.

Cocrane
Avatar du membre
Freddy_Gwendo
Adepte de Grondemarteau
Orbe ancien
Messages : 5877
Enregistré le : sam. 23 avr. 2011, 00:26
Localisation : Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
Statut : Hors ligne
.

Message par Freddy_Gwendo »

Fais attention à la gestion des persos sur plusieurs cartes.

Tu peux vite te retrouver avec du lag, le moteur tentant de gérer les actions de plusieurs persos et les ressources de plusieurs cartes. Le fichier MASTAREA.2da qui gère l'ordre de priorité des scripts de cartes les uns sur les autres peut très vite bloquer certaines actions.

Sinon, pour ton projectile, rien ne t'empêche d'utiliser un projectile "one target" sans zone et sans fichier bam associé : bref un projectile invisible. ;)
CARPE DIEM...Co-modérateur de La Forge et de La Chambre des Scribes
Moddeur qui s'arrache les cheveux...
Cocrane
Adepte de Grondemarteau
Ogre mage
Messages : 1328
Enregistré le : dim. 21 mars 2010, 12:03
Localisation : Paris
Contact :
Statut : Hors ligne
.

Message par Cocrane »

Je ne maîtrise pas la gestion multicarte mais c'est noté pour le conseil sachant que l'on est sur un mod avec de nouvelles cartes. Du coup tout est à paramétrer.

Pour ton projectile invisible, il est dans la liste des animations?

Cocrane
Avatar du membre
deratiseur
Golem de fer
Messages : 3702
Enregistré le : mer. 05 déc. 2007, 18:35
Localisation : Gap, Hautes alpes
Statut : Hors ligne
.

Message par deratiseur »

Tous les projectiles INAREA sont des projectiles de zone invisibles :
INAREA, invisible sur 10 mètres
INAREANS, invisible sur 10 mètres, ignore le centre (par exemple pour un sort qui génère des effets autour du lanceur, ça permet de lancer le sort sur le lanceur, mais lui même n'est pas affecté par le sort)
INAREANP, invisible sur 10 mètres, ne cible que les ennemis, ignore les cibles amicales
INAREAPA, invisible sur 10 mètres, ne cible que les cibles amicales, ignore les ennemis
INAREASM, invisible sur 3 mètres

Pratique : pour avoir un sort de zone invisible qui cible toutes les cibles amicales sur 60 mètres, simplement patcher le projectile INAREAPA en changeant la rayon de la zone : WRITE_LONG 0x204 512 WRITE_LONG 0x206 512

Un sort qui repousse tout ceux sur trois mètres autour du lanceur ? (en invisible, donc, même s'il est plus cool de jouer une anim) : soit :
patcher INAREANS en WRITE_LONG 0x204 80 WRITE_LONG 0x206 80 (rayon = 3m)
patcher INAREASM avec WRITE_BYTE 0xc (THIS | 16) (cad cocher l'option "ignore center")
Cocrane
Adepte de Grondemarteau
Ogre mage
Messages : 1328
Enregistré le : dim. 21 mars 2010, 12:03
Localisation : Paris
Contact :
Statut : Hors ligne
.

Message par Cocrane »

Freddy, Dérat,
je note dans vos retours la possibilité d'utiliser un projectile de zone invisible.

Par contre, je ne maîtrise pas ce domaine même avec vos commentaires.

Moi, je vais sur DLTCEP \ Spell et je sélectionne l'animation projectile que je veux associer au sort.

Est qu'il y a un projectile qui correspond à mon besoin dans la liste?
ou faut il que j'en modifie / créé un comme le suggère Dérat.

Cocrane
Répondre

Retourner vers « Scripts »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 2 invités