17/05/2020, 17:16
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