Script teleportation

Répondre
Partager Rechercher
bonjour voilà après de nombreuse recherche. J'ai essayé de me mettre à l'apprentissage de script mais malheureusement en vain... Cela fait plusieurs jours que je me creuse la tête à faire un script avec les conditions suivantes :

A mettre dans le OnUsed d'un portail !



voici les conditions :

s'il sagit d'un nouveau joueur :


- Si le joueur est d'alignement EVIL
. Alors le joueur est envoyé au "point A" et obtient "Objet 1"

- Si le joueur est d'alignement NEUTRE OU GOOD
. Alors le joueur est envoyé au "point B" et obtient "Objet 2"

S'il NE sagit PAS d'un nouveau joueur :

- Si le joueur est d'alignement EVIL
. Alors le joueur est envoyé au "point A"

- Si le joueur est d'alignement NEUTRE OU GOOD
. Alors le joueur est envoyé au "point B"
Un joueur est considéré comme nouveau lorsqu'il n'a pas l'objet en question. Mais libre à toi de changer cette condition par autre chose. L'idéal étant d'avoir un identifiant persistant (dans le cas d'un module multi) -pour chaque personnage- que tu récupère lors de la connexion au module.

Code PHP:

void main()
{
    
object player GetLastUsedBy(); // Joueur qui utilise le portail.
    
string tagWP "pointB"// Tag du waypoint pour neutre/bon.
    
string tagObj "Objet2"// Tag de l'objet pour neutre/bon.
    
    // Si le joueur est d'alignement mauvais.
    
if (GetAlignmentGoodEvil(player) == 5)
    {
        
tagWP "pointA";
        
tagObj "Objet1";
    }
    
    
// Récupération de l'objet.
    
object obj GetItemPossessedBy(playertagObj);
    if (
obj == OBJECT_INVALID)
        
CreateItemOnObject(tagObjplayer);

    
// Jump.
    
AssignCommand(playerJumpToObject(GetObjectByTag(tagWP)));

Compilé, non testé, mais ça devrait être bon.
La réponse a été très rapide ! Tout d'abord merci beaucoup, je vais pouvoir avancer dans la création de mon module. Je viens de le tester à l'instant même et il marche parfaitement.

Encore merci beaucoup ! ! ! !

Par conter si je souhaite rajouter d'autres objets j'ai juste à mettre une ligne de plus :

Citation :
tagObj = "Objet3";
Il faudra rajouter en plus une ligne de création de l'item en question (et éventuellement des tests dessus). Il faut aussi déclarer une nouvelle variable (tagObj2 par exemple) qui contient le second tag. Sinon la valeur du premier tag est écrasée.
Donc si j'ai bien tout saisi ça donnerai ceci :

Code PHP:

void main()
{
    
object player GetLastUsedBy(); // Joueur qui utilise le portail.
    
string tagWP "pointB"// Tag du waypoint pour neutre/bon.
    
string tagObj "Objet2"// Tag de l'objet pour neutre/bon.
    
string tagObj "Objet3"// ici rajout ???

    // Si le joueur est d'alignement mauvais.
    
if (GetAlignmentGoodEvil(player) == 5)
    {
        
tagWP "pointA";
        
tagObj "Objet1";
        
tagObj "Objet4"// ici rajout ???
    
}
    
    
// Récupération de l'objet.
    
object obj GetItemPossessedBy(playertagObj);
    if (
obj == OBJECT_INVALID)
        
CreateItemOnObject(tagObjplayer);
        
CreateItemOnObject(tagObj2player); // ici rajout ?

    // Jump.
    
AssignCommand(playerJumpToObject(GetObjectByTag(tagWP)));

C'est ça, si les deux variables portent le même nom tu as une erreur de compilation. Donc il faut que tu changes le nom de ta seconde variable.

Il faut aussi que tu indiques que la création de ton deuxième item se fait dans la condition, sinon ton objet 2 sera créé dans tous les cas.
Code PHP:

    // Récupération de l'objet.
    
object obj GetItemPossessedBy(playertagObj);
    if (
obj == OBJECT_INVALID)
        
CreateItemOnObject(tagObjplayer);
    
CreateItemOnObject(tagObj2player); // Cette ligne n'est pas dans le if. 
Code PHP:

    // Récupération de l'objet.
    
object obj GetItemPossessedBy(playertagObj);
    if (
obj == OBJECT_INVALID)
    {
        
CreateItemOnObject(tagObjplayer);
        
CreateItemOnObject(tagObj2player); // Cette ligne est dans le if.
    

Autre exemple qui n'est pas forcément plus optimisé que celui de Lv4 mais avec lequel tu peux peut être gérer d'autres conditions:

Code PHP:

void main()
{
    
object oPlayer GetLastUsedBy(); // Joueur qui utilise le portail
    
string sTagWP "";
    
string sTagWP1 "pointA"// Tag du waypoint pour pour mauvais
    
string sTagWP2 "pointB"// Tag du waypoint pour neutre/bon
    
string sTagObj "";
    
string sTagObj1 "objet1"// Tag de l'objet pour mauvais
    
string sTagObj2 "objet2"// Tag de l'objet pour neutre/bon
    
string sTagObj3 "objet3"// Tag de l'objet commun à tous

// Définition des variables selon l'alignement et donne l'objet si le joueur ne l'a pas
    
    
if (GetAlignmentGoodEvil(player) == 5// Si le joueur est d'alignement mauvais.
    
{
        
sTagWP sTagWP1 // on remplace la variable sTagWP par celui mauvais
        
object oObjet GetItemPossessedBy(oPlayersTagObj1);
        if (
oObjet == OBJECT_INVALID)
        {
            
CreateItemOnObject(sTagObj1oPlayer);
        }
    }
    else 
// Si le joueur est tout sauf d'alignement mauvais.
    
{
        
sTagWP sTagWP2 // on remplace la variable TagWP par celui neutre/bon
        
object oObjet GetItemPossessedBy(oPlayersTagObj2);
        if (
oObjet == OBJECT_INVALID)
        {
            
CreateItemOnObject(sTagObj2oPlayer);
        }
    }

// Donne l'objet3 à chaque fois pour tout le monde

    
CreateItemOnObject(sTagObj3oPlayer);

// Téleportation

    
AssignCommand(oPlayerJumpToObject(GetObjectByTag(sTagWP)));


Pas compilé, donc pas testé.
Répondre

Connectés sur ce fil

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