Portée des fonctions GetNearest??? !

Répondre
Partager Rechercher
Y-a-t-il un endroit où il est précisé la porté d'un GetNearestCreature par exemple... est-il limité à la zone ? Au module ? ... ( non cela paraît stupide, les distance étant inconnues )
Est-il possible de limiter cette portée dans le cas d'une zone ? Ou au pire de récupérer la distance qui sépare l'objet repère du point d'origine ?
Hum.... Oui çà doit exister çà !
En fait je crois que j'ai la solution... Si çà intéresse quelqu'un qu'il le précise je mettrais le script si j'ai trouvé...
sinon... je repasserais si ma science est insuffisante
il doit exister une fonction GetDistanceFromObject je pense ! tu as juste a faire :

Code PHP:

oCreature GetNearestCreature(OBJECT_SELF); // chui pas sur pour la fonction mai l algorithme sera bon ^^
nDistance GetDistanceFromObject(oCreature); // la encore, il y a des parametres que je ne connai pas

// si tu veux limiter, tu rajoute ca 
if ( nDistance<=50 )
{
//
// blabla script blabla

voila
A mon avis la porté est la zone ... TEST ... Tu fais une zone 32*32, tu poses dans un angle un mob, dans l'angle opposé un levier par exemple ou un trigger avec une téléportation du getnearestcreature du tag de la bestiole de l'autre coté et tu verras bien.
Merci Jedaï ma version fait le test de la distance en plus...
Mais à mon avis GetFirstObjectInShape doit suivre le même principe que mon code !
Loin de moi l'idée que mon script est plus rapide

Mon truc fait çà :

Code PHP:

    object oKiller GetLastKiller();

   
// Blablabla

    
int iNth 1;

    while ( ( ( 
oKiller GetNearestCreatureCREATURE_TYPE_PLAYER_CHARPLAYER_CHAR_IS_PCOBJECT_SELFiNth ) ) != OBJECT_INVALID ) && ( GetDistanceBetweenOBJECT_SELFoKiller ) < 30.0 ) ) {
        if( 
CheckPartyForItemoKiller"Instructionsidoines" ) ) {
            
// Le PC a le parchemin qui permet de recuperer le sang du geant
            
object oParchemin GetObjectByTag"Instructionsidoines" );
            
ActionTakeItemoParcheminoKiller );
            
DestroyObjectoParchemin );
            
CreateItemOnObject"SangduGeant" );
        }
        
iNth iNth 1;
    } 
Ce code est sur le onDeath d'une créature... il cree une fiole de sang sur le monstre si un PC dans la zone a le parchemin necessaire a l'extraction de celui-ci ! ( le parchemin etant detruit au passage )

Zut y a un bug dans mon truc ! Si le GetNearestCreature prend vraiment par ordre du plus proche au plus éloigné... et que le PC qui a le parchemin est plus proche du monstre que celui qui l'a tué... chui marron !
Ve voir ce que je peut faire avec la fonction de Jedaï
Le problème devrait être résolu avec un do while !

Code PHP:

    int iNth 1;
    
oKiller GetNearestCreatureCREATURE_TYPE_PLAYER_CHARPLAYER_CHAR_IS_PCOBJECT_SELFiNth );

    do {
        if( 
CheckPartyForItemoKiller"Instructionsidoines" ) ) {
            
// Le PC a le parchemin qui permet de recuperer le sang du geant
            
object oParchemin GetObjectByTag"Instructionsidoines" );
            
ActionTakeItemoParcheminoKiller );
            
DestroyObjectoParchemin );
            
CreateItemOnObject"SangduGeant" );
        }
        
iNth iNth 1;
    }
    while ( ( ( 
oKiller GetNearestCreatureCREATURE_TYPE_PLAYER_CHARPLAYER_CHAR_IS_PCOBJECT_SELFiNth ) ) != OBJECT_INVALID ) && ( GetDistanceBetweenOBJECT_SELFoKiller ) < 30.0 ) ); 
Voilou... mon prob c'est que pour bien tester çà, je devrais avoir plusieurs persos sur la zone... quelqu'un sait comment faire çà en étant tout seul devant son PC ?
Répondre

Connectés sur ce fil

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