Condition si je la zone est celle que je veux alors on continue sinon etc...

Répondre
Partager Rechercher
SVP Comment je fais pour vérifier qu'un oPC se trouve bien dans une zone de mon choix par l'intermédiaire d'un tag par exemple


Pour ce script qui fonctionne je voudrais ajouter des conditions de ce genre afin de :

(il est appliqué sur le OnEnter de ttes les zones concernées!)



if si je suis dans LES zones que je veux
{
setAreaTemperature(oEntering, -30.0f, 600.0f);
}
else if si je suis dans celles la
{
setAreaTemperature(oEntering, -15.0f, 600.0f);
}
else if et dans celles ci
{
setAreaTemperature(oEntering, -5.0f, 600.0f);
}


ensuite pareil ici pour ne pas redonner de points de vie lorsque oPC arrive dans une zone énuméré ci dessus

Code PHP:

else
{
if 
oPC se trouve dans les zones que je veux
{
// Sinon on regenere les HP perdu de 1d6 HP par fRecheck seconde
        
int nRegen d6();
        
float fRecheckMod fRecheck;
        
fRecheckMod fRecheck 599;
        
// Au cas ou on aurai rendu tous ses HP au joueur, on stop le script
        
if(nRegen GetLocalInt(oPC"nTemperatureDamaged"))
        {
        
nRegen GetLocalInt(oPC"nTemperatureDamaged");
        }
        
SendMessageToPC(oPC"De retour à une température normale, votre corps se réchauffe.");
        
ApplyEffectToObject(DURATION_TYPE_INSTANTEffectHeal(nRegen), oPC);
        
int nNewDamaged GetLocalInt(oPC"nTemperatureDamaged") - nRegen;
        if(
nNewDamaged && GetMaxHitPoints(oPC) > GetCurrentHitPoints(oPC))
        {
            
SetLocalInt(oPC"nTemperatureDamaged"nNewDamaged);
            
DelayCommand(fRecheckModsetAreaTemperature(oPCfTemperaturefRecheckFALSE));
        }
        else
        {
            
SendMessageToPC(oPC"Votre corps a retrouvé une température normale.");
            
// On libere la memoire
            
DeleteLocalInt(oPC"nTemperatureDamaged");
            
DeleteLocalInt(oPC"nTemperatureShooted");
            
DeleteLocalString(oPC"sTemperatureArea");
            
DeleteLocalFloat(oPC"fTemperature");
        }









ici le script en entier tel qu'il fonctionne actuellement




Code PHP:

 void setAreaTemperature(object oPCfloat fTemperaturefloat fRecheck 600.0fint bFirst TRUE) {
    
//if(!GetIsPC(oPC)) return; Modification: Retirer les // pour rendre le script effectif uniquement sur un joueur
    
if(bFirst)
    {
        
// On enregistre dans la variable locale fTemperature la temperature du
        // joueur, au cas ou, pour une utilisation hors de cette fonction.
        
SetLocalFloat(oPC"fTemperature"fTemperature);
        
SetLocalString(oPC"sTemperatureArea"GetName(GetArea(oPC)));
        
// On fait effectuer au joueur le jet de vigueur contre le froid, avec
        // pour DD 15 + nombre de fois que le joueur a fait un jet de vigueur
        // pour des raisons de temperature.
    
}
    
// Si on est toujours dans la meme zone froide
    
if(GetName(GetArea(oPC)) == GetLocalString(oPC"sTemperatureArea"))
    {
 
            
float fRecheckMod fRecheck;
            
int nDamage 0;
            if(
fTemperature <= -30.0f)
            { 
// Si la temperature est inferieure ou egale a -30 degres
                
nDamage d6(1); // 3D6 de dommage
                
fRecheckMod fRecheck 590;
            }
            else if(
fTemperature <= -15.0f)
            { 
// Si la temperature est inferieure ou egale a -15 degres
                
nDamage d6(1); // 2D6 de dommage
                
fRecheckMod fRecheck 500;
            }
            else if(
fTemperature <= 5.0f)
            { 
// Si la temperature est inferieure ou egale a 5 degres
                
nDamage d6();    // 1D6 de dommage
                
fRecheckMod fRecheck;
            }
 
 
        
int nSave FortitudeSave(oPCGetLocalInt(oPC"nTemperatureShooted") + 15SAVING_THROW_TYPE_COLD);
        
// On sauve que le joueur a fait un jet de vigueur pour les prochaines fois
        
SetLocalInt(oPC"nTemperatureShooted"GetLocalInt(oPC"nTemperatureShooted") + 1);
        
// On verifie si le joueur a reussi son jet (ou s'il est immunise aux degats
        // de froid), dans ce cas on ne fait pas de dommages. Sinon...
 
        
if(!(nSave >= 1))
        {
            
SendMessageToPC(oPC"Vous êtes victime du froid, il fait " FloatToString(fTemperature180) + "°C." FloatToString(fRecheckMod180) + FloatToString(fRecheck180));
            
ApplyEffectToObject(DURATION_TYPE_INSTANTEffectDamage(nDamageDAMAGE_TYPE_COLD), oPC);
            
SetLocalInt(oPC"nTemperatureDamaged"nDamage GetLocalInt(oPC"nTemperatureDamaged"));
        }
 
        
DelayCommand(fRecheckModsetAreaTemperature(oPCfTemperaturefRecheckFALSE));
    }
    else
    {
         
// Sinon on regenere les HP perdu de 1d6 HP par fRecheck seconde
        
int nRegen d6();
        
float fRecheckMod fRecheck;
        
fRecheckMod fRecheck 599;
        
// Au cas ou on aurai rendu tous ses HP au joueur, on stop le script
        
if(nRegen GetLocalInt(oPC"nTemperatureDamaged"))
        {
        
nRegen GetLocalInt(oPC"nTemperatureDamaged");
        }
        
SendMessageToPC(oPC"De retour à une température normale, votre corps se réchauffe.");
        
ApplyEffectToObject(DURATION_TYPE_INSTANTEffectHeal(nRegen), oPC);
        
int nNewDamaged GetLocalInt(oPC"nTemperatureDamaged") - nRegen;
        if(
nNewDamaged && GetMaxHitPoints(oPC) > GetCurrentHitPoints(oPC))
        {
            
SetLocalInt(oPC"nTemperatureDamaged"nNewDamaged);
            
DelayCommand(fRecheckModsetAreaTemperature(oPCfTemperaturefRecheckFALSE));
        }
        else
        {
            
SendMessageToPC(oPC"Votre corps a retrouvé une température normale.");
            
// On libere la memoire
            
DeleteLocalInt(oPC"nTemperatureDamaged");
            
DeleteLocalInt(oPC"nTemperatureShooted");
            
DeleteLocalString(oPC"sTemperatureArea");
            
DeleteLocalFloat(oPC"fTemperature");
        }
     }
 
}
void main()
{
    
// On recupere l'objet entrant
    
object oEntering GetEnteringObject();
    
setAreaTemperature(oEntering, -30.0f600.0f);











NB: oui bon c le meme que dans boucle mais le sujet est différent et ouis avec un o peu de chance je vais pouvoir le finir de grrr de script .

apres ca champagne! beurk pas bon apres ca wiskey
Bon je vois pas ou est ton pb...

Enfin ton pj qui entre c'est oPJ

Code PHP:

string sNameArea GetName(GetArea(oPC));

// et donc 
if ((sNameArea == "toto") || (sNameArea == "Titi"))
{
//code
}
else if ((
sNameArea == "tutu") || ...)
{
//code
}
// etc...;=
else
{
//Code 

Répondre

Connectés sur ce fil

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