objets inutilisables en combat

Répondre
Partager Rechercher
Bonjour

Je voudrais interdire techniquement l'utilisation d'objets en combat (les potions, en l'occurrence). Je n'ai pas trouvé comment faire sur Aurora, et je me dit que c'est sûrement possible par script, sinon. Ou autrement, sauf que je n'ai pas la moindre idée de comment.

Quelqu'un sait si c'est possible ou pas possible ? Si c'est possible, comment je devrais faire ?
Pas évident ce que tu demandes Encore s'il s'agissait d'un objet équipable il aurait suffit d'attendre HotU mais là...

Quoique les potions sont probablement associées à un script (enfin logiquement ça doit marcher comme ça, mais je ne peux pas te l'assurer) , il faudrait tous les modifier afin qu'ils ne s'exécutent pas si le perso est en combat...

Ou alors tu crées toi-même des blueprints de potions personnalisés, qui auraient des tags différents mais fonctionneraient toutes avec un pouvoir unique qui renverra à un même script. Ce script aura pour tâche de ne rien faire ( ) si l'on est en combat, sinon de rediriger vers le script associé au tag de la potion utilisée.

Donc modifier tous les scripts, où modifier toutes les potions

Mais je m'avance peut-être un peu trop en disant qu'à chaque potion correspond un script modifiable
Citation :
Ou alors tu crées toi-même des blueprints de potions personnalisés, qui auraient des tags différents mais fonctionneraient toutes avec un pouvoir unique qui renverra à un même script. Ce script aura pour tâche de ne rien faire si l'on est en combat, sinon de rediriger vers le script associé au tag de la potion utilisée.
ça c'est envisageable, merci

Mais il va y avoir quoi dans ce script ? Parcequ'un script qui a pour but de ne rien faire, je vois pas bien à quoi ça ressemble

*edite*

Code PHP:

void main() 

object oPC GetItemActivator(); 
object oPotion GetItemActivated(); 
sPotion GetTag(oPotion); 

if(
sPotion == "TAG_DE_LA_POTION" && GetIsFighting(oPC)) 
   { 
   
AssignCommand(oPCClearAllActions()); 
   
FloatingTextStringOnCreature("Vous ne pouvez pas utiliser de potions en combat!"oPC); 
   } 

ça marcherait, ça ?
Non: il manques la partie ou il n'est pas en combat.

Code PHP:

void main() 

object oPC GetItemActivator(); 
object oPotion GetItemActivated(); 
sPotion GetTag(oPotion); 

if(
sPotion == "TAG_DE_LA_POTION")
{    
    if (
GetIsFighting(oPC)) 
    { 
        
AssignCommand(oPCClearAllActions()); 
        
FloatingTextStringOnCreature("Vous ne pouvez pas utiliser de potions en combat!"oPC); 
    }
    else
    {
        
//L'effet de la potion
    
}
     return; 
/* Je rajouterai aussi ça pour que le script 
s'arrete une fois qu'il a trouvé la bonne potion et qu'il ne continues pas à tester 
avec les dizaines d'autres potions qu'il peut y avoir plus bas.
Dans le même ordre d'idée je placerais les potions le plus souvent utilisée avant les autres*/

Il me semble que quand on fait ce genre de chose sur une potion, elle est consommée. Donc il faudrait peut être recréer la potion dans l'inventaire du PJ si il était en combat.

Une autre technique est de créer les tags de tes potions en les faisant contenir toutes un mot identique (comme "POTION") pour tester avant si c'est une potion ou un autre objet, puis si c'est une potion tester une bonne fois pour toute si on est en combat.

Exemple:

Code PHP:

void main() 

object oPC GetItemActivator(); 
object oPotion GetItemActivated(); 
sPotion GetTag(oPotion); 

if (
FindSubString("POTION",sPotion) != FALSE && GetIsFighting(oPC))
{
    
AssignCommand(oPCClearAllActions()); 
    
FloatingTextStringOnCreature("Vous ne pouvez pas utiliser de potions en combat!"oPC); 
    return;
}
if(
sPotion == "TAG_DE_LA_POTION")
{
    
//Effet de la potion
    
return;
}

Cette deuxieme solution n'est pas mieux (ni plus mauvaise) pour le serveur, mais elle permet d'économiser pas mal de lignes de codes (le test de GetIsFighting pour chaque potion)
Pour info, ceci peut etre fait par un systeme de routage de sorts. (en fait, l'idée de départ est la bonne. on ne teste pas les objets mais les sorts auquels ils sont associés). L'embettant c'est qu'il faudrait modifier tout les scripts de sorts pour savoir si quel est le type de l'objet qui l'a activé, est-ce que le lanceur etait en phase de combat etc...

Le nouvel Add-on (HotU) aura un systeme de routage de sort. Mais en attendant, il y a un HaK qui permet de router ces sorts et donc de mettre ce que l'on veut comme conditions d'execution des sorts (dans le hak de base il y a juste un réhaussage de la compétence "utilisation d'objets magique" et une systeme de partage de sorts entre un mage et son familier).

Le probleme c'est qu'il s'agit d'un Hak. J'en ai fait une version modifié (et traduite en français) qui, en plus de ne pas avoir besoin de hak, permet de faire des zones de magies morte (aucun sort ne peut etre lancé dans la zone) et des zones d'entropie (chaque sort lancé generera un effet aleatoire). Enfin, cette version integre un système qui impose un jet de concentration lorsque quelqu'un essaye de boire une potion lorsqu'il est au combat (le DD est de 20 + bonus d'attaque du dernier attaquant, si je me rapelle bien).

routage modifié(je ne sais plus si c'est la dernière version)

hak original (par Demetrious et Oldmanwhistler)
__________________
..::Heavenlynet le net paradisiaque ::..
http://gw.heaven-ly.net/images/stories/divers/sigfg042.gif
Répondre

Connectés sur ce fil

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