Hello there.
S'il reste des scripteurs ici, j'aurai besoin d'un coup de main pour fignoler un script.
Je m'explique...
La Tour des Arcanes de mon serveur possède un ascenseur, avec un panneau de commande. Une fois les pj à l'intérieur (attention ils ne sont pas forcément groupés), l'un d'eux utilise le panneau de commande, qui tp tout ce beau monde à l'étage demandé.
Mon soucis est que, au moment de la tp... tous les personnages du serveur sont tp, y compris ceux qui ne se trouvent PAS dans l'ascenseur.
J'ai du manquer quelque chose dans mon script, je sens que je suis très proche de la solution, mais si quelqu'un peut m'aider à y voir clair, cela m'aiderait.
[php]
void main()
{
/*
sFloor est à définir dans les variables des options de dialogue.
oTarget identifie les Waypoints de destination: le tag de ces waypoint doit être "TM_" + le nombre correspondant à la variable sFloor dans le dialogue.
exemple: "TN_6"
La variable Actual_floor est à définir sur le panneau de commande, en INT. Elle permet de définir l'étage actuel.
La variable "ETAGE_TM" est définie par le script du trigger de l'élévateur. Elle se place via le script sur le pj et permet de vérifier qu'il est au mêmne étage
que le panneau de commande en cours d'utilisation.
*/
object oUser = GetPCSpeaker();
string sFloor = GetScriptParam("ETG");
object oTarget = GetWaypointByTag("TM_" + sFloor);
object oNextPc = GetFirstPC();
int nFloor = StringToInt(sFloor);
int nActual_Floor = GetLocalInt(OBJECT_SELF,"Actual_Floor");
int nNextPc_Etage = GetLocalInt(oNextPc, "ETAGE_TM");
object oTrigger = GetObjectByTag("TM_Elevateur"+IntToString(nActual_Floor));
object oTag = GetTag(OBJECT_SELF);
/*
La boucle sélectionne oNextPC, défini d'abord comme le premier membre de la liste des joueurs.
Elle vérifie que la variable ETAGE_TM correspond à la variable Actual_Floor
Si oui, le personnage est téléporté à l'étage sélectionné et la boucle vérifie le personnage suivant.
SendCreature est utilisé pour envoyer les henchmen, familiers et autres invocations au waypoint de destination, au cas
ou un élévateur serait utilisé pour simuler des étages sur une même map.
*/
while (GetIsObjectValid(oNextPc) == TRUE)
{
if (nNextPc_Etage == nActual_Floor)
{
AssignCommand(oNextPc, JumpToObject(oTarget,FALSE));
object oAnimal = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oNextPc);
object oDominated = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oNextPc);
object oFamiliar = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oNextPc);
object oHenchman = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oNextPc);
object oSummoned = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oNextPc);
SendCreature(oAnimal, oTarget);
SendCreature(oDominated, oTarget);
SendCreature(oFamiliar, oTarget);
SendCreature(oHenchman, oTarget);
SendCreature(oSummoned, oTarget);
}
oNextPc = GetNextPC();
}
}