Bienvenue sur JeuxOnLine - MMO, MMORPG et MOBA !
Les sites de JeuxOnLine...
 

Panneau de contrĂ´le

Recherche | Retour aux forums

JOL Archives

[script]genere un item dans un contenant Ă  l'ouverture de celui-ci

Par shadoh le 17/10/2002 Ă  17:23:40 (#2352856)

Bonjour tout le monde:)

Je me permet de vous soliciter afin de maider pour un script qui me permettrait de genere un item que je desire (une clef par exemple) à chaque fois qu' un PJ ouvre le contenant sensé contenir l'item en question.

Dans la pratique, j ai besoin qu'une clef personnalisée que j ai créé apparaisse dans un sarcophage à chaques fois qu une personne ouvrira ce sarcophage. Cette clef est sensé permettre d"ouvrir une grille pour une quete.

J ai trouvé sur le net des scripts qui me permettent de generer la clef dans le contenant des qu une personne passe sur une zone mais le probleme c est qu avec cette methode, si le gar passe 5 fois sur la zone avant d ouvrir le sarcophage, 5 clefs auront ete créé dans celui-ci.

Alors si une bonne âme veut bien m'aider pour faire qu un item soit généré à chaques fois qu un PJ ouvre un contenant précis, je lui en serait extremement reconnaissant :)

Merci d'avance.

Par eMRaistlin le 17/10/2002 Ă  17:41:57 (#2353001)

Ca reviendra au meme : dans ce cas, si qqu'un ouvre le coffre plusieurs fois, il y aura plusieurs clefs, s'il ne les ramasse pas...

A la limite, faut surtout que tu rajoute une ligne de condition de type

if (GetIsValidObject(GetItemPossessedBy(oContainer,"TAG"))
{

.....


}

Par shadoh le 17/10/2002 Ă  18:46:13 (#2353463)

C est vrai mais ca m'eviterait deja d avoir une zone qui declanche le spawn de la clef :). On sait jamais:)

Mais ils est vrai que si ne plus le script pouvait verifier si la personne n a pas deja la clef avant de la generer, cela serait encore mieux :).

Enfin bon, si vous pouvez m'aider pour faire un script de ce type, vous m'enleveriez un echarde du pied :)

Par shadoh le 17/10/2002 Ă  22:28:22 (#2354524)

Désolé de continuer à vous embetter mais malheureusement dans l'etat actuel des choses je ne peux me passer de l'aide de gens qui maitrisent le scriptage de type php :).

Voila, j'ai résolu mon probleme de génération d'une clef dans un coffre défini avec ce script surement tout bete pour 99% des gens pratiquant se forum mais qui m' a demandé plus de 3heures de recherche... :monstre:

void main()
{
object oTarget = OBJECT_SELF;
string sItemTemplate1 = "it_clefcrypte"; // Ma clef de la crypte niveau1
int nStackSize = 1;
CreateItemOnObject(sItemTemplate1, oTarget, nStackSize);
}

Maintenant mon probleme, qui a ete évoqué dans la réponse d'eMRaistlin, c'est qu'il me faudrait un script qui viendrait se greffer sur ce script afin de verifier si le joueur n'a pas deja l'objet en question. Si jamais le joueur a deja l'objet, il faudrait que l'item normalement généré à l'ouverture du contenant ne soit pas généré.

J'espere que vous aurez la patiente de m'aider encore une fois :)

Merci encore Ă  tout ceux qui prennent le temps d'aider les pauvres gens qui n'ont que leurs yeux pour pleurer lorsqu'il s'agit de faire du scriptage :mdr:

Par eMRaistlin le 18/10/2002 Ă  10:27:26 (#2356265)

void main()
{
object oTarget = OBJECT_SELF;
string sItemTemplate1 = "it_clefcrypte"; // Ma clef de la crypte niveau1
int nStackSize = 1;
CreateItemOnObject(sItemTemplate1, oTarget, nStackSize);
}

+

if (GetIsValidObject(GetItemPossessedBy(oContainer,"TAG"))
{

.....


}


=


void main()
{
object oTarget = OBJECT_SELF;
string sItemTemplate1 = "it_clefcrypte"; // Ma clef de la crypte niveau1
int nStackSize = 1;
if (!GetIsValidObject(GetItemPossessedBy(oContainer,"TAG_DE_TA_CLEF "))
{
CreateItemOnObject(sItemTemplate1, oTarget, nStackSize);
}
}


Ca devrait marcher...

Par shadoh le 18/10/2002 Ă  17:14:58 (#2358281)

Merci beaucoup pour ton aide :)

Par shadoh le 18/10/2002 Ă  19:59:30 (#2359339)

J'ai un petit probleme avec le script que tu m'as donné :)

lorsque que j enregistre ton script :

void main()
{
object oTarget = OBJECT_SELF;
string sItemTemplate1 = "it_clefcrypte"; // Ma clef de la crypte niveau1
int nStackSize = 1;
if (!GetIsValidObject(GetItemPossessedBy(oContainer,"NW_IT_CLEFCRYPTE"))
{
CreateItemOnObject(sItemTemplate1, oTarget, nStackSize);
}
}

Ca me marque cela :

18/10/02 20:00:36 : Erreur. 'clef_cryptefinal' n’est pas compilé.
clef_cryptefinal.nss(6): ERREUR : NO RIGHT BRACKET ON EXPRESSION

Pourriez vous m'expliquer ce qui cloche ?

Par Morethil le 18/10/2002 Ă  20:10:26 (#2359415)

Provient du message de shadoh
J'ai un petit probleme avec le script que tu m'as donné :)

lorsque que j enregistre ton script :

void main()
{
object oTarget = OBJECT_SELF;
string sItemTemplate1 = "it_clefcrypte"; // Ma clef de la crypte niveau1
int nStackSize = 1;
if (!GetIsValidObject(GetItemPossessedBy(oContainer,"NW_IT_CLEFCRYPTE"))
{
CreateItemOnObject(sItemTemplate1, oTarget, nStackSize);
}
}

Ca me marque cela :

18/10/02 20:00:36 : Erreur. 'clef_cryptefinal' nest pas compilé.
clef_cryptefinal.nss(6): ERREUR : NO RIGHT BRACKET ON EXPRESSION

Pourriez vous m'expliquer ce qui cloche ?


Il te le dit
ERREUR : NO RIGHT BRACKET ON EXPRESSION
Il ta manque uen parenthèse de droite quelque part.

je pense que c'est lĂ  : if (!GetIsValidObject(GetItemPossessedBy(oContainer,"NW_IT_CLEFCRYPTE"))[red])[/red]

Vu que tu en a trois a gauche et seulement 2 a droite.

Par shadoh le 18/10/2002 Ă  21:36:04 (#2359942)

J avais deja tésté en rajoutant une parenthese :

if (!GetIsValidObject(GetItemPossessedBy(oContainer,"NW_IT_CLEFCRYPTE")))

mais malheureusement pour moi, il me dit toujours :

18/10/02 21:35:55 : Erreur. 'test' n’est pas compilé.
test.nss(6): ERREUR : NO RIGHT BRACKET ON EXPRESSION

Franchement je ne vois pas quoi faire :(

Par eMRaistlin le 18/10/2002 Ă  21:52:21 (#2360028)

vi, excuse...

attention, jne faite jamais totalement confiance au message d'erreur sans connaitre un peu la logique du compiler...


void main()
{
object oTarget = OBJECT_SELF;
string sItemTemplate1 = "it_clefcrypte";
int nStackSize = 1;

if (!GetIsObjectValid(GetItemPossessedBy(oTarget,"it_clefcrypte ")))
{
CreateItemOnObject(sItemTemplate1, oTarget, nStackSize);
}
}


Ca, ca va marcher...

Attention, j'ai changé au passage ton GetItemPossessedBy, vu que tu as mis oContainer sans l'avoir defini (ou alors, change aussi le oTarget ^^) et j'ai mis le tag de la clef dans le meme Get...

Encore desole.. c'est l'inconvenient de faire ca loin du toolset ...

Par shadoh le 18/10/2002 Ă  22:07:25 (#2360133)

Hé hé :)

Merci beacoup je vai de ce pas tester le script :)

Par shadoh le 18/10/2002 Ă  22:46:55 (#2360475)

Bon ba la bonne nouvelle c'est que le script est sans erreures :)

Mais malheureusement la mauvaise nouvelle c est qu'il n'empeche pas le fait que si j ouvre plusieurs fois le sarcophage qui genere la clef de la crypte, il y aura plein de clef et non pas une seule comme ce que je souhaite :(

Concraitement, si j'ouvre 8 fois le sarcophage sans prendre la clef, il y aura 8 clefs dans le coffre... C est pas top :)

Par eMRaistlin le 18/10/2002 Ă  22:53:51 (#2360525)

arff...



void main()
{
object oTarget = OBJECT_SELF;
string sItemTemplate1 = "it_clefcrypte";
int nStackSize = 1;

if (!GetIsObjectValid(GetItemPossessedBy(oTarget,"it_clefcrypte ")))
{
CreateItemOnObject(sItemTemplate1, oTarget, nStackSize);
}
}


Sans changer la syntaxe ?
en mettant le tag de l'objet precisement a : it_clefcrypte ?

Par shadoh le 18/10/2002 Ă  23:10:21 (#2360637)

oui oui :)

Ma clef de la crypte a pour tag : it_clefcrypte
Et a pour blueprint : NW_IT_CLEFCRYPTE

Le script je l ai placé dans le onOpen du sarcophage.

Malheureusement il ne resoud pas le probleme que j'ai soulevé plus haut.

Par eMRaistlin le 18/10/2002 Ă  23:22:20 (#2360729)

void main()
{
object oTarget = OBJECT_SELF;
string sItemTemplate1 = "NW_IT_CLEFCRYPTE";
int nStackSize = 1;

if (!GetIsObjectValid(GetItemPossessedBy(oTarget,"it_clefcrypte ")))
{
CreateItemOnObject(sItemTemplate1, oTarget, nStackSize);
SendMessageToPC(GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_IS_PC),"Test Ok");
}
else SendMessageToPC(GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_IS_PC),"Test pas Ok");
}


bon, alors deja, change comme au dessus...

puis dis moi ce que ca te dis... (pour la premiere clef, et pour les suivanteS..)

Par shadoh le 18/10/2002 Ă  23:32:17 (#2360803)

Ba je viens de retester le script plus haut en ayant effacé la clef et en ayant créé une nouvelle clef avec in nouveau blueprint et tag et la ça marche...

Franchement, je comprens pas pourquoi ca ne marchait pas avec mon ancienne clef... Les voix du scriptage son impénétrable (ou celles du seigneur je ne sais plus :ange: ).

En tout cas merci infiniment pour votre aide :).

Par eMRaistlin le 19/10/2002 Ă  0:12:48 (#2361127)

a ton service ^^

JOL Archives 1.0.1
@ JOL / JeuxOnLine