objets uniques

Répondre
Partager Rechercher
bonjour a tous je cherche a donner a mes objets des propriétés uniques comme remettre 100 hp aléatoirement avec un effet sur le joueur et tout plein de trucs comme sa merci d'avance a tous
Mais encore ?

Sans plus de précision sur l'objet précis que tu veux faire, ce sera dur de te donner des indications.

Pour les pouvoirs uniques des objets, tu dois au départ leur donner un "POuvoir unique" ou "pouvoir unique sur soi uniquement". Tu peux aussi créer un effet quand l'objet est equipé, un autre quand il est déséquipé, un autre (pour armes et armures) quand l'objet touche ou est touché. etc.

Selon le type de pouvoir, tu récupère donc l'objet :
object oItem = GetItemActivated ou GetItemCastSpell etc. et le sujet object oPC = GetItemActivator, etc.

Si la cible n'est pas oPC, tu dois aussi la récupérer : object oTarget = GetSpellEffectTarget, GetItemActivatedTarget.

Ensuite tu définit ton effet : Effect eEff = EffectHeal (par exemple)

Et tu l'applique à la cible : ApplyEffectToObject (DURATION_TYPE*, eEff, oPC) (ou oTarget)

Enfin voila.

Pour l'aléatoire, tu peux te servire des dés (d4, d6, d8, d10, d12, d20) ou de random(n)
et là tu définit l'effet selon le résultat du dé.
pour d4 par ex :
switch(d4)
{
case 1: eEff=... ;
break;
case2: eEff=... ;
break;
case 3: eEff=... ;
break;
case 4: eEff=... ;
break;
}
je te remercie mais peux tu un peu plus développer les effets quand on équipe un objets je vais te donner un exemple d une armure que je voudrais crée

soin sur le pc aléatoire avec un effet visuel de soin
des effets sur les ennemis comme pétrification ou mise a mal aléatoire(sans que l ennemis me touche juste par l hostilité)
des bonus sur le pc et les gens groupe avec moi(avec effets visuel)
et quand je met pour la premières fois l'armure, apparition dans mon inventaire de 2 épées longues


merci ton premier message ma déjà bien aider
Donc en gros tu veux créer un truc de bourrin

De base, je t'invite a utiliser la fonction recherche. Tu trouvera de cette manière comment mettre en place la fonction des TagBasedItems dans ton module. (rassure moi, c'est bien pour un module que tu veux faire ça ?)

Voici le script d'exemple de biobio :
Code PHP:

//::///////////////////////////////////////////////
//:: Example Item Event Script
//:: x2_it_example
//:: Copyright (c) 2003 Bioware Corp.
//:://////////////////////////////////////////////

#include "x2_inc_switches"

void main()
{
    
int nEvent =GetUserDefinedItemEventNumber();
    
object oPC;
    
object oItem;

   
//SendMessageToPC(GetFirstPC(),IntToString(nEvent));

    // * This code runs when the item has the OnHitCastSpell: Unique power property
    // * and it hits a target(weapon) or is being hit (armor)
    // * Note that this event fires for non PC creatures as well.
    
if (nEvent ==X2_ITEM_EVENT_ONHITCAST)
    {
        
oItem  =  GetSpellCastItem();                  // The item casting triggering this spellscript
        
object oSpellOrigin OBJECT_SELF ;
        
object oSpellTarget GetSpellTargetObject();
        
oPC OBJECT_SELF;

    }

    
// * This code runs when the Unique Power property of the item is used
    // * Note that this event fires PCs only
    
else if (nEvent ==  X2_ITEM_EVENT_ACTIVATE)
    {

        
oPC   GetItemActivator();
        
oItem GetItemActivated();

    }

    
// * This code runs when the item is equipped
    // * Note that this event fires PCs only
    
else if (nEvent ==X2_ITEM_EVENT_EQUIP)
    {

        
oPC GetPCItemLastEquippedBy();
        
oItem GetPCItemLastEquipped();

    }

    
// * This code runs when the item is unequipped
    // * Note that this event fires PCs only
    
else if (nEvent ==X2_ITEM_EVENT_UNEQUIP)
    {

        
oPC    GetPCItemLastUnequippedBy();
        
oItem  GetPCItemLastUnequipped();

    }
    
// * This code runs when the item is acquired
    // * Note that this event fires PCs only
    
else if (nEvent == X2_ITEM_EVENT_ACQUIRE)
    {

        
oPC GetModuleItemAcquiredBy();
        
oItem  GetModuleItemAcquired();
    }

    
// * This code runs when the item is unaquire d
    // * Note that this event fires PCs only
    
else if (nEvent == X2_ITEM_EVENT_UNACQUIRE)
    {

        
oPC GetModuleItemLostBy();
        
oItem  GetModuleItemLost();
    }

    
//* This code runs when a PC or DM casts a spell from one of the
    //* standard spellbooks on the item
    
else if (nEvent == X2_ITEM_EVENT_SPELLCAST_AT)
    {

        
oPC GetModuleItemLostBy();
        
oItem  GetModuleItemLost();
    }

En fonction du moment ou tu veux créer ton effet, tu place ton code au bon endroit.

Le soin aléatoire, c'est basiquement un nombre de PV aléatoire récupéré, donc tu peux utiliser : "EffectHeal(d100())" par exemple, ou d20(5), etc. a toi de voir.

Les effet visuels, tu les place avec "EffectVisualEffect" et les constantes VFX_*

Pour un effet juste parce que les gens sont présent, sans que tu n'ai rien a faire, je ne vois pas. Pour un effet activé "pouvoir unique" qui affecte tous les hostiles, tu te servira de "GetIsReactionTypeHostile"
En faisant une boucle sur toutes les créatures d'une zone, par exemple autour du porteur de l'armure.
Puis tu applique les effet "ActionCastSpellAtObject" avec les bon SpellID ou encore directement les effets "EffectParalyse", etc. note que les effets pure ne tienne compte d'aucune résistance. (ni save, ni RM, etc.)
Pour créer les 2 epées, tu les crée dans ta palette, puis tu utilise "CreateItemOnObject"
Répondre

Connectés sur ce fil

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