JeuxOnLineForumsPlusConnectés : 438 (sites) | 778 (forums)Créer un compte
Neverwinter Nights 2
La Tour des Arcanes
Répondre
Partager Rechercher
Avatar de Crom29
Crom29
Grand duc
 
Avatar de Crom29
 

OnHit

Salut !

Quelqu'un sait il comment récupérer l'évènement OnHit d'une arme?
Quel script est appelé en 1er?
Quelles propriétés mettre sur l'arme?

merci
Avatar de Claudius33
Claudius33
Grand duc
 
Avatar de Claudius33
 
Une possibilité est d'avoir un script dans le OnDamage des cibles potentielles. On peut tester le type de dommage et en reconnaître un particulier. Dans cet exemple tiré de Sarmates!, si un dommage énergie négative est reconnu, la cible est assommée.

Code PHP:

// Knock down the adversary if hit by the right ammunition. 

void main()
{
    
object oSoldier OBJECT_SELF;
    
effect eKnock EffectKnockdown();
    
    if (
GetDamageDealtByType(DAMAGE_TYPE_NEGATIVE)>0)
    {
        
ApplyEffectToObject(DURATION_TYPE_TEMPORARYeKnockoSoldier14400.0f);
        
ChangeFaction(oSoldierGetObjectByTag("sirwan"));    // set to neutral (puzzled for a long ... time)
        
return;
    }      

Avatar de Crom29
Crom29
Grand duc
 
Avatar de Crom29
 
Bonne idée comme alternative

Cela dit je préfèrerais récupérer l'evènement OnHitCast d'un item, vu que il devra s'executer sur pas mal d'objects différents (Creatures, plaçables, portes, ...)

L'idée finale est de réaliser des armes intelligentes, un peu comme Lilarcor pour ceux qui connaissent Baldur's Gate

Par exemple si tu tapes contre un plaçable/porte, l'arme va dire "Si tu veux te débarasser de moi, c'est pas en me tapant contre un bout de bois que tu y arriveras !"
Ou contre une créature "J'aime sentir le sang couler le long de ma lame !"
Avatar de Claudius33
Claudius33
Grand duc
 
Avatar de Claudius33
 
L'exemple est certes sur des créatures mais le OnDamage est disponible aussi pour les portes et les plaçables.

Pour un évènement de type sort GetSpellId() et/ou GetSpellCastItem() me semble intéressants pour répondre à ton souci.
Avatar de Crom29
Crom29
Grand duc
 
Avatar de Crom29
 
Le truc c'est que sur le module, il y a déja plusieurs miliers de plaçables & portes utilisables, éparpillés sur une bonne centaine de maps.
Du coup je vais pas m'amuser à mettre mon script pour générer des OnHitCast sur chaque elements du module.

J'avais déja essayé de récupérer le OnHitCast via un spellhook, et celui ci n'était jamais éxécuté...
Cependant ça fait quelques mois, alors je recommencerais ce soir ou demain, mais je suis assez pessimiste là dessus :/
C.DuK
Grand duc / Grande duchesse
 
Il ne reste pas la moindre trace d'Ensenric (HotU) dans Nwn2 ?

Ils ont repris pas mal de trucs du premier Nwn, alors il y a peut être encore quelques petits scripts qu'ils avaient pu faire pour Ensenric quelque part dans le 2. Ou, au pire, aller fouiller dans les scripts du 1 pour les reprendre et les adapter au 2.

Ça me paraît une bonne solution plutôt que de tout refaire de zéro, surtout que tu sembles tourner en rond.
Avatar de BlaireauAgile
BlaireauAgile
Grand duc / Grande duchesse
 
Avatar de BlaireauAgile
 
Tu peux essayer d'utiliser un script "tagbased" de la forme i_tagarme_hc.
Il faut que les scripts "tagbased" soient autorisés dans le script de chargement du module :


Code:
SetModuleSwitch (MODULE_SWITCH_ENABLE_TAGBASED_SCRIPTS, TRUE);
     
SetModuleSwitch (MODULE_SWITCH_ENABLE_SEPERATE_ITEM_SCRIPTS, TRUE);
 
if (GetModuleSwitchValue (MODULE_SWITCH_ENABLE_TAGBASED_SCRIPTS) == TRUE)
    {         
         SetUserDefinedItemEventPrefix("i_");
    }
Il suffit de donner la propriété à l'arme "sort déclenché au touché : pouvoir unique (onhit)", le niveau n'a pas d'importance.
Et de faire un script avec pour nom : i_tagarme_hc


Par exemple :


Code:
void main()
 {
     object oItem = GetSpellCastItem();  
     object oSpellOrigin = OBJECT_SELF ;
     object oSpellTarget = GetSpellTargetObject();
      
     SendMessageToPC(GetFirstPC(),"Marre des cadences infernales moi, je me barre.");
     DestroyObject(oItem);
 }
Répondre

Connectés sur ce fil

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

Rechercher
Rechercher:

Recherche avancée

© JeuxOnLine / JOL. Tous droits réservés. - Conditions générales d'utilisation - Conditions d'utilisation des forums - Politique de confidentialité - Utilisation de mes données personnelles - ! Signaler un contenu illicite