Comment ne téléporter que les PJ présents dans une map d'intérieur ?

Répondre
Avatar du membre
Luren
Adepte de Grondemarteau
Ver charognard
Messages : 660
Enregistré le : dim. 20 juin 2010, 08:51
Localisation : Sûrement quelque part mais je n'arrive pas à bien voir où.
Statut : Hors ligne

Comment ne téléporter que les PJ présents dans une map d'intérieur ?

.

Message par Luren »

Je suis en train de bosser sur une map "parallèle" à une version existante d'une map originale d'IWD2 (Targos, AR1100). Il s'agira d'une version avec des bâtiments restaurés : nouvelles portes, nouvelles anims... plutôt que de tout "coller" via des DOORS ou des anims sur une map déjà passablement chargée, j'ai préféré en faire une seconde. Selon l'avancement dans le jeu on sera donc balancé vers l'une où l'autre de ces maps d'extérieur. Le truc c'est que je voulais conserver les maps d'intérieurs (bâtiments) existantes. Du coup, lorsqu'on sort des bâtiments, il a été nécessaire de faire un script, attaché à la Travel zone, pour renvoyer les PJ dans la bonne map de Targos.
J'ai dans un premier temps voulu utiliser

Code : Tout sélectionner

IF
  Clicked([PC])
  Global("AR1150_active","GLOBAL",1)
THEN
  RESPONSE #100
    MoveGlobal("AR1150",Player1,[430.1080])
    MoveGlobal("AR1150",Player2,[430.1080])
    ...
mais sous outre que ce n'est pas sélectif (comment savoir quels PJs sont entrés dans le bâtiment et quels PJ sont restés dehors ?), je n'arrive pas redonner le focus aux PJs.

Je suis donc passé par une cutscene découpée en deux temps :
Le script attaché à la Travel Zone de la map d'intérieur :

Code : Tout sélectionner

IF
  Clicked([PC])
  Global("AR1150_active","GLOBAL",1)    
THEN
  RESPONSE #100
    CutSceneId(Myself)
    StartCutSceneMode()
    ClearActions(Player1)
    ClearActions(Player2)
    ClearActions(Player3)
    ClearActions(Player4)
    ClearActions(Player5)
    ClearActions(Player6)
    MultiPlayerSync()
    EndCutSceneMode()
    StartCutScene("LUA1150a")
END
Et la CutScene (LUA1150a.bcs) :

Code : Tout sélectionner

IF
  True()
THEN
  RESPONSE #100
    CutSceneId(Player1)
    LeaveAreaLUA("AR1150","",[430.1080],12)
 END

IF
  True()
THEN
  RESPONSE #100
    CutSceneId(Player2)
    LeaveAreaLUA("AR1150","",[430.1080],12)
END

...
Ça marche nickel... sauf qu'évidemment les 6 PJ sont transportés. Je n'arrive pas à faire en sorte que seuls les PJs présents dans la map d'intérieur (AR1107 dans mon test) soit sélectionnés et téléportés.
J'ai essayé avec les trigger CurrentAreaIs(player1,1107), Range, NearLocation... mais aveupas...

Si vous avez une idée... :dash3:
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 »

Tu te compliques grandement la vie : jette un œil ici. En gérant les cartes extérieures auxquelles tu as accès avec une variable globale (Entree = 1, 2, 3...) et en appliquant la méthode indiquée non pas à la carte extérieure, mais à la carte intérieure, le tour est joué !

Seuls les persos présents dans la carte intérieure passeront dans la carte extérieure, quelle qu'elle soit.
CARPE DIEM...Co-modérateur de La Forge et de La Chambre des Scribes
Moddeur qui s'arrache les cheveux...
Avatar du membre
Luren
Adepte de Grondemarteau
Ver charognard
Messages : 660
Enregistré le : dim. 20 juin 2010, 08:51
Localisation : Sûrement quelque part mais je n'arrive pas à bien voir où.
Statut : Hors ligne
.

Message par Luren »

Bon sang mais c'est bien sûr ! Il suffisait de créer une seconde sortie dans la map d'intérieur, puis d'utiliser l'action TriggerActivation et de basculer sur une sortie ou l'autre en fonction d'une variable :

Code : Tout sélectionner

// activation de la sortie vers la nouvelle map
IF
    Global("AR1150_exit","GLOBAL",1)
THEN
    RESPONSE #100
        TriggerActivation("To1100",FALSE)
        TriggerActivation("To1150",TRUE)
END

// activation de la sortie vers la map d'origine
IF
    Global("AR1150_exit","GLOBAL",0)
THEN
    RESPONSE #100
        TriggerActivation("To1100",TRUE)
        TriggerActivation("To1150",FALSE)
END
Merci !
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 »

Il manquerait plus que tonton Freddy se décarcasse à écrire des tutos longs comme le bras pour des prunes ! :p
CARPE DIEM...Co-modérateur de La Forge et de La Chambre des Scribes
Moddeur qui s'arrache les cheveux...
Répondre

Retourner vers « Scripts »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 0 invité