Euh... un ch'ti peu paumé dans tous les liens

Répondre
Partager Rechercher
Quelqu'un qui connait un peu les tutoriaux et tout ca présent dans les liens qui sont mis en persistant sur les modules, peut-il m'aiguiller parmi eux?

Je cherche plus précisément de bons tutoriaux sur la personnalisation des items via des scripts (par exemple comment on fait un item qui lance un script par l'intermédiaire du menu radial du dit items... comment on déclenche un script quand un item est équipé/déséquipé... ou quand il touche une cible...) et une bon document pour trouver le nom d'une fonction de NwN quand on sait ce qu'elle fait mais qu'on a oublié comment elle s'appelle...

J'ai un peu cherché dans les liens, mais y'en a tellement que je me noie, là...
Personnalisation des objets:
1) Tu crées ton objet
2) Tu lui assignes dans les propriétés Lancer un sort / Pouvoir Unique ( ou Pouvoir Unique sur soi )
3) Tu édites les propriétés du Pouvoirs pour définir la fréquence, Utilisation Unique, X foix, X fois par jours...
4) Tu places le script dans le OnActivateItem
Code PHP:


//Variables objets
    
object oUser GetItemActivator(); // Le personnage qui active l'objet
    
object oItem GetItemActivated(); // L'objet activé
    
string sItemTag GetTag(oItem); // Le TAG de l'objet activé

// Début Détection du MAL
if(sItemTag=="PAL_DETECTMAL" &&
    
GetLevelByClass(CLASS_TYPE_PALADIN,oUser)>0)
{
    
ExecuteScript("5_pal_detevil",oUser);
    return;

Par exemple ou plus simplement

Code PHP:

//Variables objets
    
object oUser GetItemActivator(); // Le personnage qui active l'objet

    
ExecuteScript("7_em_activemote",oUser); 
En fonction de ce que tu veux. Bien entendu, on peut se passer d'un ExecuteScript, je les utilises sur les objets ayant des script un peu longué.

quand il touche une cible, il y a un Thread sur le OnHit, relativement récent.
__________________
Archamedes
Ok, j'ai pas Aurora sous la main mais y'a des events pour quand:

- l'item est créé (genre pour faire une initialisation de SetLocalInt())
- l'item est équipé/déséquiper

Mon but pour le moment est de bricoler un script empechant le sort posé sur un objet d'être activé s'il n'est pas équipé et ensuite de faire qu'on ne puisse plus le déséquiper dans la minute qui suit....

Je pensais faire comme ca:

- à la création, initialiser un local int "STATE" a 0
- à l'equipement passer ce "STATE" à 1 s'il est a 0
- à l'utilisation, si le "STATE" est à 0, ne rien faire, sinon lancer le sort puis faire un ClearAllActions, puis passer le "STATE" 2, puis coller un ActionWait d'une minute et enfin une ActionDoCommand passant le "STATE" a 1
- au déséquipement, si le "STATE" est a 2, annuler le déséquipement, sinon mettre le "STATE" a 0

Il faut juste que je trouve le nom des evenements asssociés:
- création = ?
- equipement = ?
- utilisation = OnActivateItem
- déséquipement = ?

et comment annuler un evenement.

Autre question: y'a pas un moyen de faire un script qui applique ca sur tous les objets du module sans avoir a éditer chaque objet en particulier? (oui,je débute a peine, je rame encore pas mal avec les concept de scripts sur Aurora)
Bon, j'ai un peu cherché, j'ai trouvé ou était le script OnItemActivate.

Petit problème, ce n'est pas vraiment ce que je cherche... Ce script là ne se déclenche que quand on fait appel à un "pouvoir unique" sur un objet, alors que je cherche le moyen d'executer un script quand au contraire une capacité du genre "Lancer un sort - Sort X" est activé sur un objet.

Passer par OnItemActivate m'obligerait à recopier tout le code du dit sort, et ce pour CHAQUE objet concerné... or des objets concernés, il y en a plein (une bonne cinquantaine voir plus et le nombre ne peux qu'augmenter) et cela tranformerait le script en un méga-switch.

Quelqu'un a une idée?
Citation :
"Lancer un sort - Sort X" est activé sur un objet.
pas bien compris, mais en mettant un executescript dans ton sort avec éventuellement un test sur la classe ou une variable qq oncque ... g tt faux c ca ?

sinon pour les

Citation :
Il faut juste que je trouve le nom des evenements asssociés:
- création = ?
- equipement = ?
- utilisation = OnActivateItem
- déséquipement = ?
je m'etais fais la même remarque, donc si tu trouve
euh... l'autre solution est pas mieux :

Un item qui possede le pouvoir de lancer timeStop, en fait, lance effectivement le nw_s0_timestop.nss...

La seule alternative a ton Pb, c'est de modifier les sorts concernés, pour verifier a l'execution si c'est un sort qui est lance, ou une activation d'objet, puis d'agir en consequence.

L'autre solution : presque tout les sorts lancent des Event a l'exection. Voit si tu peux jouer avec ca...

Quoiqu'il en soit, pour avoir moi-même modifie tout les sorts de NwN, je peut te garantir que c'est un peu chi***, des que tu touche a ca...
(mais c'est comme tout : quand le resultat suit, tu oublie les galeres ^^)
Citation :
Provient du message de eMRaistlin
euh... l'autre solution est pas mieux :

Un item qui possede le pouvoir de lancer timeStop, en fait, lance effectivement le nw_s0_timestop.nss...

La seule alternative a ton Pb, c'est de modifier les sorts concernés, pour verifier a l'execution si c'est un sort qui est lance, ou une activation d'objet, puis d'agir en consequence.
Sauf que j'ai pas le droit au hackpak, et je crois que pour que mes modifs de sorts soient pris en compte par les clients, il en faut un, non?

Citation :
L'autre solution : presque tout les sorts lancent des Event a l'exection. Voit si tu peux jouer avec ca...
Meme problème que précédement.

Citation :
Quoiqu'il en soit, pour avoir moi-même modifie tout les sorts de NwN, je peut te garantir que c'est un peu chi***, des que tu touche a ca...
(mais c'est comme tout : quand le resultat suit, tu oublie les galeres ^^)
Disons qu'actuellement je joue sur un serveur qui a un vrai problème sur ce genre d'objets. Au départ il y en avait peu, c'était donc jouable... Des persos ont même été crées dans l'optique d'utiliser tel ou tel objet.

Mais malheureusement, ca a viré au cauchemard... les objets magiques sont maintenant TRES nombreux et comme on peux les utiliser sans les equiper, ca fait qu'un objet comme une "orbe de mort" qui lancer plainte 1fois/jour se retrouve acheté a 12 exemplaire par des guerriers qui finissent par balancer le sort à tout va (et c'est pas le seul)

Bref, je cherche une solution pour que sans retirer les items (ce qui dégouterait les joueurs qui ont axé leur perso sur un d'entre eux), ces dits items ne puissent plus etre utilisés sans etre équipés (ce qui limiterait leur prolifération dans les inventaires)

Helas, il me semble qu'il manque des evenement vitaux pour cela:
- Un evenement qui se déclenche quand on utilise le pouvoir d'un sort a partir d'un item
- Un evenement qui se déclenche quand on equipe un item
- Un evenement quand on déséquipe un item

Bref, je trouve NWN un peu léger sur les évenements au sujet de ces items (en fait, je trouve qu'il manque carément un onglet "scripts" comme sur les PNJ, pour etre franc)
Citation :
Provient du message de Reyan
je m'etais fais la même remarque, donc si tu trouve
Pour l'equip/desequip, y'a pas l'air d'avoir. Pour la création, y'a "OnItemAcquiered" dans les scripts du module, que tu peux utiliser.
non, pas besoin de hakpak pour modifier les scripts des sorts : tu ouvre le .nss que tu veux modifier (via les script editor), et tu modifie en sauvegardant avec le même nom.

Ne t'inquiete pas, ca ne modifie le sort que Sur le module courant, pas sur tout ton NwN
Citation :
Provient du message de eMRaistlin
non, pas besoin de hakpak pour modifier les scripts des sorts : tu ouvre le .nss que tu veux modifier (via les script editor), et tu modifie en sauvegardant avec le même nom.

Ne t'inquiete pas, ca ne modifie le sort que Sur le module courant, pas sur tout ton NwN
Bon, ca aide deja un bout... Je peux donc ajouter un morceau de code qui vérifie que le sort a été lancé autrement que par un objet ou non et si c'est le cas faire que l'objet lui explose a la figure s'il n'était pas porté.

Petit problème: ca n'empeche pas les gens de "switcher" entre les items... Ok, ca limite un peu parce qu'il faut deux fois plus de raccourcis pour le même résultat, mais c'est encore loin de l'obligation de se limiter aux sorts des items auquel on alloue un slot définitivement comme je le désirais vu que ca n'empeche pas les joueurs de faire:

- hop! j'équipe
- hop! je lance le sort
- hop! je remet mon amulette habituelle
et tu peu pas maudire un peu ces objets ?
zavait l'air de dire qu'il y avait une fonction pour bloquer l'inventaire dans un topic voisin ...
fin maudire, ouais, imposer des contraintes d'utilisation quoi ...
Citation :
Provient du message de Reyan
et tu peu pas maudire un peu ces objets ?
Meme problème... y'a entre 50 et 100 objets concernés, alors repasser sur chacun individuellement, ca serait l'enfer.

Citation :
zavait l'air de dire qu'il y avait une fonction pour bloquer l'inventaire dans un topic voisin ...
Ca ca m'interesse... T'as le lien, stp?
ba, demande sur le forum, parce que il avait vraiment donné aucune précision, et je vois pas ce que c'est
et c'est un procédé pour maudire, mais a travers le script, donc pdt le test dans le sort en fait, que je pensais (oui, c pas français .. c compréhensible ? )

au pire tu peux essayer de tester ce qu'ils sur eux tes joueurs, dans un onheartbeat qq part ... mais c achement lourd j'en ai peur :/
arf, dsl, chuis fatigué ^_^
en fait je disais, mais ca n'est qu'une idée basée sur pas grd chose, qu'il y avait peut être moyen de "maudire" les objets afin qu'il reste sur le perso, non pas ds les options de la palette, mais dans le script du sorts, si la fonction existe ainsi, pas de pb, quand ton sort est appelé, tu fais un test quelconque et tu maudit si faut ... ainsi tu GB de service , si lance orbe de truc avec sa chaine, ba il est obligé de la garder
autre idée : tu peux peut être, toujours dans le script, limiter le nombre de lancer par jour, non plus en fonction de l'objet, mais en fonction du PJ avec une variable quelconque réinitialisé, par exemple toute les 600 heartbeat genre on ne peut lancer qu'une fois orbe de truc, même si on a 46000 amulettes
mais bon, ss pas très rp tt ca ... :/ c t juste une idée
Autrement t'as peut être aussi la solution du OnAcquireItem. Quand le PJ récupère un des items, tu regarde dans son inventaire et s'il a plus d'un objet du style, ben tu détruit le superflus

Bon, j'ai un peu peur qu'il y ai pas mal de boulot pour mettre çà en place si y'a beaucoup d'objets magiques

Menfin ça peut peut être donner une voie de recherche a des meilleurs scripteurs que moi
he, pas mal, en deux temps :
on marque les objets avec une variable quelquonque dans le sorts
on test cette variable dans les onacquireitem
en peu de tps tt les objets GB du module sont marqués, donc reconnaissables facilement fin ca dépend de comment vous gerez vos riboot et autre svg de serveur ...
mouais, p-e pas si terrible que ca :-/
et puis ca depend de l'effet desirer, si tu ne veux pas detruire les objets pour pas vexer les joueurs ... ba c pas ca non plus :/
d'où l'interêt de tout bien planifier la création du module, chaque aspects etc. (ok, je sors )
Citation :
Provient du message de grenwald
Autrement t'as peut être aussi la solution du OnAcquireItem. Quand le PJ récupère un des items, tu regarde dans son inventaire et s'il a plus d'un objet du style, ben tu détruit le superflus
Ohohohohoh Pas con ca!!!!
Merci ! Merci!

Citation :
Bon, j'ai un peu peur qu'il y ai pas mal de boulot pour mettre çà en place si y'a beaucoup d'objets magiques
Pas forcément, il suffit de préfixer le tag avec... disons "unique_"

Genre tu renomme "orbedelamortquitue" en "unique_orbedelamortquitue"

Ensuite tu colles dans OnAcquireItem un code du genre:
Code PHP:

object oItem GetItemAcquiered()
string sTag GetTag(oItem)
object oOwner GetLastAcquierer()

if ((
GetStringLeft(sTag,7)=="unique_") && (GetNumberItemsPossessedBy(oOwnersTag)>1))
DestroyItem(oItem); } 
Et y'a plus qu'a préfixer tous les items que tu veux pas que les gens possèdent deux fois

(PS: mes noms de fonctions sont certainement pas exacts mais je les ai fait suffisament clairs pour que vous deviniez de quelle fonctions je parles )
Répondre

Connectés sur ce fil

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