[Script] Frapper à la porte

Répondre
Partager Rechercher
Voici un script que j'ai créé pour simuler un "frappage" de porte.

A mettre dans le "OnPhysicalAttack" de la porte sur laquelle on va toquer (vous l'aurez compris: on toque en forçant la porte )

Ce code va en fait avertir tous les PJ se trouvant dans la zone de la cible de la porte qui est toquée (je me fais bien comprendre? ) ainsi que le NPC le plus proche de la cible et se trouvant dans la même zone qu'elle (s'il y en a un) et celui-ci va aller ouvrir la porte... sauf si celle-ci est verrouillée et qu'il n'a pas la bonne clé... alors là, il va râler

Voici le code:
Code:
// Frappe a la porte
void frapper(object porte);

void main()
{
    object oPC = GetLastAttacker();
    AssignCommand(oPC, ClearAllActions());
    frapper(OBJECT_SELF);
}

void frapper(object porte){
    object porte2 = GetTransitionTarget(porte);

    int i;
    for(i=0; i<3; i++){
        AssignCommand(porte2, PlaySound("fs_wood_soft3"));
        ActionWait(0.3);
    }

    object oPC = GetFirstPC();
    object oNPC = GetNearestCreatureToLocation(CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_NOT_PC, GetLocation(porte2));

    while(oPC != OBJECT_INVALID){
        if(GetArea(oPC) == GetArea(porte2)){
            SendMessageToPC(oPC, "On frappe à la porte.");
        }

        oPC = GetNextPC();
    }
    if((oNPC != OBJECT_INVALID) && (GetArea(oNPC) == GetArea(porte2))){
        if(GetLocked(porte2)){
            string tagCle = GetLockKeyTag(porte2);
            object cle = GetItemPossessedBy(oNPC, tagCle);
            if(cle == OBJECT_INVALID){
                AssignCommand(oNPC,ActionSpeakString("Satané porte, je n'ai pas la bonne clé!"));
                AssignCommand(oNPC,ActionPlayAnimation(ANIMATION_LOOPING_TALK_FORCEFUL,1.0,3.0));
            }else{
                AssignCommand(oNPC,ActionUnlockObject(porte2));
                AssignCommand(oNPC,ActionOpenDoor(porte2));
            }
        }else{
            AssignCommand(oNPC,ActionOpenDoor(porte2));
        }
    }
}
Répondre

Connectés sur ce fil

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