Zone de transition : Conditions

Répondre
Partager Rechercher
Bonjour

C'est surement tout bête mais je trouve pas dans le rechercher.

J'aimerai qu'un PJ ne puisse pas utiliser une zone de transition s'il n'as pas l'item requis : un corde

Version plus complexe, j'aimerai qu'il ne puisse pas utiliser la zone de transition s'il rate un jet de Dexterité (ou force etc..)

Voilà si vous pouviez m'eclairer et me dire ou faut le placer

ps : avec un pnj et un dialogue c'est simple, mais idem j'arrive pas a placer un dialogue qui fonctionne en utilisant un placable, j'ai essayer de cette facon, qu'un placable demander un item pour teleporter, mais ca fonctionne pas (j'aurai aimer que lorsque l'on pose une pierre sur une pierre ca teleporte par exemple)

Pour démarrer un dialogue avec un passable tu dois utiliser la fonction "ActionStartConversation"

Typiquement :
Code PHP:

void main()
{
object oPC=GetClickingObject();
    if (
GetIsPC(oPC))
    {
    
ActionStartConversation (oPC,"Nom_Du_Dial"TRUEFALSE);
    }

Tu met ça dans le OnClick event de ton objet.

Pour un trigger (une aire) tu remplacera avantageusement "GetClickObjet();" par "GetEnteringObject();" en mettant le script dans le "OnEnter"

Le "TRUE" dit que la conversation est privée (audible seulement par le PC) le "FALSE" dit que le PC ne vas pas dire "hello" au début de la conversation.
Tu peux faire la même chose avec un plaçable. Il faut au préalable mettre le plaçable en "utilisable", sélectionner le fichier de la conversation dans les propriétés avancées du plaçable, et mettre ce script dans le OnUsed du plaçable :
Code PHP:

void main()
{
    
object oUser GetLastUsedBy();

    if(
GetIsPC(oUser))
    {
        
ActionStartConversation(oUser,"",TRUE,FALSE);
    }

Tu peux tout aussi bien rendre la chose automatique, sans dialogue en créant un point de passage à la destination, que je taggerai ici "WP_DESTINATION", puis y envoyer le joueur qui remplit les conditions, le tout dans le OnUsed du plaçable utilisable. Ici je testerai la dextérité :
Code PHP:

void main()
{
    
object oUser GetLastUsedBy();
    
int nDex GetAbilityScore(ABILITY_DEXTERITY,oUser);

    if(
nDex>=14)
    {
        
object oWaypoint GetWaypointByTag("WP_DESTINATION");
        
AssignCommand(oUser,ActionJumpToObject(oWaypoint));
    }
    else
        
SendMessageToPC(oUser,"Vous ne parvenez pas à utiliser cet objet.");

Citation :
Publié par Deyonara

Tu peux tout aussi bien rendre la chose automatique, sans dialogue en créant un point de passage à la destination, que je taggerai ici "WP_DESTINATION", puis y envoyer le joueur qui remplit les conditions, le tout dans le OnUsed du plaçable utilisable. Ici je testerai la dextérité :
Code:
 void main()
{
    object oUser = GetLastUsedBy();
    int nDex = GetAbilityScore(ABILITY_DEXTERITY,oUser);

    if(nDex>=14)
    {
        object oWaypoint = GetWaypointByTag("WP_DESTINATION");
        AssignCommand(oUser,ActionJumpToObject(oWaypoint));
    }
    else
        SendMessageToPC(oUser,"Vous ne parvenez pas à utiliser cet objet.");
}
La ligne : int nDex = GetAbilityScore(ABILITY_DEXTERITY,oUser);, il ne veux pas la compiler, il me dit :
ERREUR : DECLARATION DOES NOT MATCH PARAMETERS
En comme suis une quiche bha je comprend pas

Diiittes?
C'est possible d'avoir un seul script pour des placable different utilisant la meme chose

Exemple la : j'utilise une echelle dans un allée, et j'aimerai une autre echelle dans un retour , le script etant le même, si je pouvais avoir deux conditions pour mon placable echelle01 de teleporter au WP_Echelle01, et si utiliser le placable echelle02, alors teleporter au WP_echelle02 ?
Huhu...c'est tou bête en fait

Bha merci beaucoup, a peine eue le temps d'editer mon message pour une autre question que j'ai eue la reponse, c'est cool et ca marche

Merci !
Tu peux te servir du tag de l'échelle si ton échelle est echelle01 le tag du waypoint sera WP_echelle01, mais DST_ à la place de WP_ montre mieux une destination, OBJECT_SELF est l'objet que l'on se sert et GetTag renvoie le tag de celui ci:

Code PHP:

   string sTag GetTag (OBJECT_SELF);
   
object oWaypoint GetObjectByTag("WP_"+sTag); 
Salut

J'aimerai maintenant savoir, s'il c'est possible de faire la teleportation au WP seulement si un jet de dés est reussi (pas moins de 14 par exemple), dans le cas contraire si le jet de dexterité est inferieur , ne pas teleporter et laisser un message du genre, pas assez abile...

Merci d'avance^^
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés