Note de ce sujet :
  • Moyenne : 3 (1 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
CORE Action automatique dans une zone spécifique
#1
[Image: i3hdw3yz.jpg]

Action automatique dans une zone spécifique

Il peut être utile de déclencher une action lorsque le joueur est dans une zone spécifique , par exemple interdire le survol d'une capitale a la faction adverse ou autre , laissez parler votre imagination . 

La valeur ce trouvant après les " case xxx: "correspond a la zone retourné par un .gps

Dans l'exemple ci dessous :
  • Je supprime l'autorisation de vol si le joueur n'est pas de la bonne faction et qu'il survole une capitale : SetCanFly(false);  SetDisableGravity(false);
  • Je lui applique une aura parachute pour qu'il ne s’écrase pas comme une crêpe ... oui je sais , certains n'aurait pas pris autant de gants ^^  : CastSpell(this, 77404, true);
  • J'affiche un message pour lui dire pourquoi : GetSession()->SendNotification("Vous survolez une zone interdite");

Dans Player.cpp recherchez void Player::Update(uint32 p_time) et a la fin juste avant le } insérez les lignes suivantes :
Code :
//Stitch Zone & Area - vol interdit , etc
    if (IsFlying() && !IsGameMaster())
    {
        uint32 newzone, newarea;
        GetZoneAndAreaId(newzone, newarea);

        if (GetTeamId() == TEAM_HORDE)
        {
            switch (newzone)
            {
            case 616:  // Vol interdit en Hyjal
            case 4395: // Vol interdit en Dalaran
                SetCanFly(false);
                SetDisableGravity(false);
                CastSpell(this, 77404, true);
                GetSession()->SendNotification("Vous survolez une zone interdite");
                break;
            case 1519: // Vol interdit a Hurlevent
            case 1537: // Vol interdit a Forgefer
            case 1657: // Vol interdit a Darnassus
            case 3557: // Vol interdit a Exodar
                SetCanFly(false);
                SetDisableGravity(false);
                CastSpell(this, 77404, true);
                GetSession()->SendNotification("Vous survolez une zone interdite a la Horde");
                break;
            }
        }
        else
        {
            switch (newzone)
            {
            case 616:  // Vol interdit en Hyjal
            case 4395: // Vol interdit en Dalaran
                SetCanFly(false);
                SetDisableGravity(false);
                CastSpell(this, 77404, true);
                GetSession()->SendNotification("Vous survolez une zone interdite");
                break;
            case 1638: // Vol interdit a Piton du tonnerre
            case 1637: // Vol interdit a Orgrimmar
            case 1497: // Vol interdit a Fossoyeuse
            case 3487: // Vol interdit a Lune-d'Argent
                SetCanFly(false);
                SetDisableGravity(false);
                CastSpell(this, 77404, true);
                GetSession()->SendNotification("Vous survolez une zone interdite a l'Alliance");
                break;
            }
        }


    }



Bon jeu a vous Smile
Répondre
#2
Tres interessant, merci beaucoup
Si tu avances, tu meurs ... si tu recules, tu meurs ... alors dis moi ... pourquoi tu recules?
(Proverbe mongol)
Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)