script idée

Répondre
Partager Rechercher
Bonjour
Je suis une débutante en scripte et j'aimerais savoir si mon idée est réalisable:
Pourrait-on faire en sorte qu'un objet donne la capacité (a un PJ) de se transformer en créature quelconque quand ses hp ateigne un certain seuil? SI oui, comment?
Merci beaucoup
A+
Rinoa
le pj se transforme automatiquement lorsque ses pv atteignent le seuil, ou est ce que le pj doit activer l'objet et se sont ses pv qui déterminerons la bestiole dans laquelle il se tranformera ?
__________________
..::Heavenlynet le net paradisiaque ::..
http://gw.heaven-ly.net/images/stories/divers/sigfg042.gif
Bonjour la miss' au login pas bô

L'idée est intéressante, mais difficile à réaliser. Ca demande un script récurrent qui vérifierais toutes les x secondes les pts de vie, et le polymorpherais si jamais ceux-ci passaient au-delà d'une certaine limite.

Le problème, c'est que ce genre de script peut rapidement mettre un serveur sur les rotules s'il est appliqué à pleins de PJs.
D'où l'éternelle question : est-ce pour un module qui accueillera peu de joueurs (module solo par exemple) ou beaucoup (persistant) ?
Salut
Tout d'abord je tient à vous remercier pour m'avoir répondu , les filles sont souvent laisser à part dans ce domaine j'ai remarké. (et oui j'ai un login pourri car je suis une "fonceuse" , ou peut être une "Défonceuse" ,j'aime pas perdre mon temps!!
Sinon....sa serait bien que le script s'actionne tous seul(sans activation d'un kelkonke PJ) et il serait pour un module ou il ya très peu de PJ, 2 ou 3!!
Voilà, encore merci les gars!!!
A+
Rinoa
Voila il verifiera les pvs de tout les joueurs toutes les 10 seconde et si le nombre de pv du joueur est inferieur a 25% dde son total de pv le pj sera polymorpher en panthere mais ca tu peux y modifier

Code PHP:

//Sur le OnModuleLoad des propriete du module
//Attention a eviter d'utiliser sur les monde ou le nombre de joueurs est important

void PVPolymorph();

void main()
{
PVPolymorph();
}

void PVPolymorph()
{
object oPJ GetFirstPC();
effect eEffet EffectPolymorph(POLYMORPH_TYPE_PANTHER);//modifier le polymorph par ce que lon veux ^^

while(GetIsObjectValid(oPJ))
    {
    
int nPVs GetMaxHitPoints(oPJ);
    
int iDeclenche nPVs /4//A 25% des pvs du joueurs
    
int nCurrent GetCurrentHitPoints(oPJ);

    if(
nCurrent <= iDeclenche)
        
ApplyEffectToObject(DURATION_TYPE_PERMANENT,eEffet,oPJ);

    
oPJ GetNextPC();
    }
DelayCommand(10.0,PVPolymorph());

suis je le seul à l'esprit mesquin qui se demande si un compte frais "decrivant une jeune fille fonçeuse cherchant de l'aide pour scripter" ressemble gros à un "je suis un mec, je vais jouer sur la fibre dragueuse de tous les males de maskado pour avoir la reponse à mon script car j'ai pas envie de me casser la tete et encore moins envie d'attendre..." ...surtout quand on voit l'ortographe qui "rulez" (je parle pas de faute.. je suis mal placé pour en parler, mais de reduction de "djeunes façon texto" )

mais il est vrai que je suis mesquin et que je vois le mal partout...

"Cherche scripteuse pour introduire des données en duo et fusion de scriptes et plus si affinités"
Citation :
Provient du message de Taern
Bonjour la miss' au login pas bô

L'idée est intéressante, mais difficile à réaliser. Ca demande un script récurrent qui vérifierais toutes les x secondes les pts de vie, et le polymorpherais si jamais ceux-ci passaient au-delà d'une certaine limite.

Le problème, c'est que ce genre de script peut rapidement mettre un serveur sur les rotules s'il est appliqué à pleins de PJs.
D'où l'éternelle question : est-ce pour un module qui accueillera peu de joueurs (module solo par exemple) ou beaucoup (persistant) ?
Petite question: le script serait il aussi réalisable en testant à chaque perte (ou gain ou les deux) de PV, et si oui, quelle version serait la plus usante pour le serveur (vous allez me dire: ça dépends du nombre de combats )?
Effectivement, ce serait bien plus efficace de cette manière.
Mais NWN ne possède tout simplement pas d'évènement déclenché lors de la perte ou du gain de PV. Alors on bidouille

Le script de Tyrion m'a l'air correct. Enfin, y'a un truc qui me gêne avec le fait de faire une fonction récurrente, quand même. D'après moi, un ExecuteScript serait plus sûr, puisque lorsqu'une fonction s'appelle elle-même en boucle, les "instances" de cette fonction ne sont pas détruites, enfin je crois.
En tout cas, dans un vrai language de programmation, faire ça est une horreur
salut
Merci à tous!!
Sinon , pour répondre au monsieur qui devrait sortir de son PC plus souvent pour mieux connaître les filles avant de faire des remarkes et qui aurait des doutes quand à ma vrai personnalité , il à ka penser ce qu'il veut (mais sache ke toutes les meuf sont pas des" pinçées"du cul, moi j'suis pas une bourj et j'aime me lâcher surtout sur le net, alors tes réflexions de mec douteux et tes insultes me faisant passer pour un mec , tu te les mets.......)

Pour en revenir au vrai problème , j'ai juste à entrer ce script dans mon module pour k'il transforme mon perso? ou doi-je l'associer a un objet?
Sinon, Taern comment tu aurais fait toi?
Encore merci à tous (les matchos et les grognons qui se prênnent pas pour de la merde :"dieu suprême" , non compris!)A+
Rinoa
Tyrion l'a précisé dans l'entête du script, il se place dans l'évenement OnModuleLoad du module (cf. "propriétés du module").

Voilà ce que j'aurais fait, à partir du script précédent :
(en considérant que le script s'appelle "on_mod_load")
Code PHP:

void main()
{
object oPJ GetFirstPC();
effect eEffet EffectPolymorph(POLYMORPH_TYPE_PANTHER);

while(
GetIsObjectValid(oPJ))
{
    
int nPVs GetMaxHitPoints(oPJ);
    
int iDeclenche nPVs /4//A 25% des pvs du joueurs
    
int nCurrent GetCurrentHitPoints(oPJ);

    if(
nCurrent <= iDeclenche)
        
ApplyEffectToObject(DURATION_TYPE_PERMANENT,eEffet,oPJ);

    
oPJ GetNextPC();
}

DelayCommand(10.0,ExecuteScript("on_mod_load"));

Voilà Et te laisse pas faire par le grognon
je ne repondrais que par une petite citation en j'en resterais là :

Il vaut mieux laisser penser les gens que l'on a peu d'esprit que de l'ouvrir et ne laisser aucun doute à ce sujet

Comment fonctionne le script ? Ben je croyais que c'était clair. Le script regarde toutes les 6 secondes les points de vie du joueur, et si jamais ceux-ci sont en deçà de 25% du total, le joueur est transformé en panthère.

Pour le faire marcher, va dans Editer->Propriétés du module-> Evénements et sélectionne le script dans la case "OnHeartBeat". C'est tout

Par contre, il faudrait que tu nous dise plus précisément ce que tu veux (type de polymorph, ce qui arrive si la vie remonte, etc.). En fait, en l'état actuel, ce script risque d'avoir des résultats plus ou moins satisfaisants
Salut taern
Ok j'ai compris
Est ce qu'il serait possible de redevenir normale en repassant le cap des 25%?
et pour ce qui est du type, c'est sûr que la panthère c'est bof...non je voyais plutôt un monstre comme un boss qui a 2 transformations koi!
Merci
A+
Rinoa
Smile
En fait, même si tu es débutante, tu devrais reussir a modifier le script pour qu'il fasse ce que tu veux. Reflechis à ce que tu veux exactement, regardes des exemples pour la syntaxe et modifies comme tu veux.

En te donnant ce script, Taern t'a fait un moule, à toi de ciseler les détails.
C'est pas faux ça Fanley, en plus ça m'évite du boulot

Pour te mettre sur la voie : il faut d'abord que tu fasse en sorte que la transformation ne s'applique qu'une fois (ce qui n'est pas le cas actuellement), et éventuellement que tu gère un retour à la vie normale si la vie remonte. Pour ça je crois qu'il faut utiliser EffectPolymorph(POLYMORPH_SELF).

Bonne chance
Salut taern
Ben........j'essaye et j'arrive à des choses qui doivent pô être juste car sa fé planter le jeu et mon ordi(j'suis vrément nulle)
J'arrive pas à refaire passer mon perso en normale quand ma vie repasse au dessus des 25%.
Please......help
A+
Rinoa
Il faudrait au moins que tu me dise en détail ce qui marche et ce qui ne marche pas.

Et si tu ne me montre pas ton script en l'état actuel des choses (oublie pas les balises [ PHP] steuplait ), je ne peux pas vraiment t'aider.
salut
Le problème c'est ke vu toutes les merdes que sa a fait dans le jeu, j'ai préférer le suprimé, je ne me retrouve donc plus qu'avec ton script de départ.
Peut on réellement revenir dans l'ancienne apparence quand les pv remonte au dessus des 25%
A+
Rinoa
Bonjour à Toi,

Oui tu peux totalement le faire. Et c'est très simple à réaliser.
C'est juste à retirer l'effet de polymorphie au moment ou tu récupères tes points de vie, dans une fonction récurrente ou dans un Execute Script. Je ne pourrai pas te le dire sur place, car comme cela fait un bout de temps que je n'ai pas eu un moment à moi pour me remettre sur les scripts. Mais je laisse l'honneur aux scripteur de le faire.
Je vais voir si dans la journée, j'ai le temps de le faire ou pas


Et je voudrai quand même préciser, que c'est loin d'être une horreur des fois de faire une fonction récursive en programmation quand on veut faire une boucle infinie contrôlée sans avoir le risque avec un while par exemple de faire sauter la machine.

Personnellement, j'utilise des fonctions récursives, dans mes scripts et je n'ai jamais eu de problème de lag et de ressource. Cela prend de la ressource, mais si on le gère bien , on peut très bien contrôler la fonction.

Maintenant un ExecuteScript possède aussi ses propres défauts comme pour la fonction récursives.
Et je précisue que tu génère aussi une certaine récursivité comme tu fais appelle un DelayCommand tout les 10 secondes, c'est ça qui fait aussi ramer la machine.

Donc, en conclusion, à ne pas dénigrer aussi rapidement la récursivité mais plutôt à savoir exploiter tous ce que nous offre la programmation

@ bientôt,


Voilà, mon avis.
Voilà, je m'excuse d'avance à Tyrion d'avoir repris son code, pour faire le removeEffect.

Donc voila le but, c'est que le nvalue est à 2 là, qui fait qu'a plus de 50 % de ses points de vie, il va retrouver sa forme.
Dans la boucle, il test si ses PV sont inférieurs sinon, il test si les pv sont supérieurs à 50% (comme la valeur est de 2).
Si oui, il y a un RemoveEffect sur l'effet pour faire disparaître la polymorphie. Je me souviens plus si la fonction RemoveEffect se nomme ainsi, et si j'ai mis tous les paramètres mais normalement cela devrait être bon.

@ bientôt,

RAT

Code PHP:

void PVPolymorph();

void main()
{
PVPolymorph();
}

void PVPolymorph()
{
object oPJ GetFirstPC();
effect eEffet EffectPolymorph(POLYMORPH_TYPE_PANTHER);//modifier le polymorph par ce que lon veux ^^
int nValue=2;

while(
GetIsObjectValid(oPJ))
    {
    
int nPVs GetMaxHitPoints(oPJ);
    
int iDeclenche nPVs /4//A 25% des pvs du joueurs
    
int nEffaceNPVs/nValue
    
int nCurrent GetCurrentHitPoints(oPJ);

    if(
nCurrent <= iDeclenche)
        
ApplyEffectToObject(DURATION_TYPE_PERMANENT,eEffet,oPJ);
    else
      if (
nCurrent >= nEfface)
          
RemoveEffect(oPJ,eEffet);
          

    
oPJ GetNextPC();
    }
DelayCommand(10.0,PVPolymorph());

RAT, j'adore ton nouvel avatar

Sinon pour ton script, CPU powaaaa... Tu comptes le placer dans un events déclenché à la fin du polymorph ? Ou en OnHeartBeat ?

Ange Musicien, qui passe à pleines ailes.

PS: pour aaaaa (bonne manière d'être toujours au début de l'alphabet ), pas besoin de s'énerver, il ne fallait pas prendre tonton de travers... Caresse lui la barbichette, tu vas voir, ça va l'énerver
Merci Ange Musicien pour mon avatar


Et oui tu le mets comme Tyrion l'a dis. Dans le OnModuleLoad si je me trompe pas

Et ce que dis Ange musicien, aaaa, il a tout a fait raison, Tonton
est une personne super sympa sous sa carapace de brute sanguinaire lol *Joke*
Répondre

Connectés sur ce fil

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