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

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

Petites questions de Nb

Par Sir Alex / Bonn le 8/1/2003 à 16:55:34 (#2973841)

J'ai fais un petit script pour donner un objet mais il le donne indefiniment quand on le demande au NPC, je ne sais pas ou j'ai fais une betise. Si quelqu'un peut aider le nb que je suis j'en serais reconnaissant


object oPC = GetPCSpeaker();

object oItem = GetItemPossessedBy (oPC, "AMULETTELG");
object oItem2 = GetItemPossessedBy (oPC, "AMULETTEREBEL");
// si l'objet est valide(possede par le joueur)
if (GetIsObjectValid (oItem)) // sort vrai si le PC possede l'objet ? (si je me trompe pas)

{
SpeakString("Desole vous avez deja choisi un camp");
}

else

{

if (GetIsObjectValid (oItem2))
{
SpeakString("Desole vous avez deja choisi un camp");
}
else
{
CreateItemOnObject("AMULETTELG", oPC);
// Gain d'xp
int nXP = GetXP(oPC);
int nNewXP = nXP + 3000;
SetXP(oPC, nNewXP);
}

}



Aussi j'ai pas trouver comment le rendre indroppable(je sais je suis pas fort mais je galere pas mal) et faire qu'il fasse rendre hostile un NPC

GRAND MERCI D'AVANCE

[EDITE pour faire plaisir au donneur de lecon > La science infuse n'est pas de ce monde ....]

Par coolstar le 8/1/2003 à 17:08:22 (#2973952)

Une petite question de canard?? :doute:


Un doute me taraude... Comment cela se fait-il qu'un Marquis puisse mettre un Titre de Topic aussi peu explicite?? (au fait, sinon, tu connais les "Balises PHP" tout fait exprès pour les Scripts?) ;)

Par Mastokk le 8/1/2003 à 17:13:12 (#2973996)

Bon alors j'ai pas bien compris ce que tu voulais mais 1ère chose à faire quand tu post un script: le mettre en PHP. Regarde quand tu rédige ton post, tu as l'option au dessus.

Sinon, pour éviter que ca donne plusieurs fois la même chose, tu crées une variable à vérifier.

Par Sir Alex / Bonn le 8/1/2003 à 17:15:14 (#2974008)


Une petite question de canard??

Un doute me taraude... Comment cela se fait-il qu'un Marquis puisse mettre un Titre de Topic aussi peu explicite?? (au fait, sinon, tu connais les "Balises PHP" tout fait exprès pour les Scripts?)


C'est pas des critiques que je cherche mais de l'aide !

Alors les remarques a 1 euro merci de les garder. :baille:
Pour ce qui est de mon titre cela viens de T4C ! Tu vois bc de programation a faire dans ce jeu ? alors j'ai pas l'habitude

Merci pour un minimun de tolerence ! Si c'est pas trop dur pour toi bien sur :D

Par eMRaistlin le 8/1/2003 à 17:38:34 (#2974229)

Alors les remarques a 1 euro merci de les garder.


Coolstar n'est pas un donneur de lecon, c'est juste qu'il est habitué au forum Maskado, et que comme tous ici, qui essayont d'eviter les redites, apprecie les titres clairs...

Pour les balises PHP, tu pouvais pas savoir, mais c'est vrai que ton titre n'est pas vraiment clair, n'aide pas au classement..

Par Sir Alex / Bonn le 8/1/2003 à 17:42:23 (#2974272)

Pour ce qui est du bout de script plus haut j'ai reussi a trouver une solution donc pas la peine de s'embeter avec.

En Clair:

- Je cherche comment rendre un objet INDROPPABLE (je cherche depuis 1 heure sans trouver ou c'est).

- Et que cet Objet rende hostile certain NPC ( Je ne sais vraiment pas du tout comment faire reagir un NPC de maniere general est en presence d'un PC possedant un objet spécifique)

Voila le resumé. J'espere cette fois être clair dans mes demandes. Je débute et j'ai du mal.

Desolé encore pour mes remarques ...

Par eMRaistlin le 8/1/2003 à 17:47:00 (#2974308)

Pas de pb, tu est comme nous tous : tu apprends...

Script pas la reaction de NPC

Par Sir Alex / Bonn le 8/1/2003 à 18:18:21 (#2974597)

Voila j'ai trouvé une partie de mes problemes apres un bon moment a chercher encore et toujours sur le net !

je le laisse pour ce qui en aurait besoin

Comment faire Reagir un NPC a un objet (pour qu'il attaque):


// Amis ou Ennemis : tm_guard_op //
// Doit être placé dans le « OnPerceive » du garde. //
// Le garde va vérifier si le personnage possède l’anneau « PASSRING » et sinon l’attaque. //

object oSeen = GetLastPerceived();
object oRing = GetItemPossessedBy(oSeen, "PASSRING");
void main()
{
// Si ce que voit le garde n’est pas un personnage, il ne fait rien.
if (GetIsPC(oSeen))
{
if (oRing == OBJECT_INVALID)
{
// Si le personnage n’a pas l’anneau. Attaque !
ActionSpeakString("Meurt donc Etranger!");
ActionAttack(oSeen);
}
else
{
// Si le personnage a l’anneau, on le salue.
ActionPlayAnimation(ANIMATION_FIREFORGET_GREETING);
ActionSpeakString("Bien le bonjour, messire.");
}
}
}



- Par contre j'ai toujours pas trouver comment rendre un objet indroppable.

J'espere que quelqu'un pourra m'aider ....

Par Laya de Malkesh le 8/1/2003 à 20:00:53 (#2975504)

Tu trouveras ton bonheur ici.

Par Sir Alex / Bonn le 8/1/2003 à 21:51:38 (#2976413)

merci bc

Je pensais que mon script premier marchait mais je viens de verifier qu'il ne marche pas

Le but de ce script est dans une conversation, de donner une "amulette Lg" si le PC ne l'a pas un des 2 objets ("Amulette Lg" ou "amulette Rebel")... Or meme, avec ce script, quand le PC a deja un des 2 objets il le recois quand meme, je comprend vraiment pas pourquoi, ca fait des heures que j'y suis et je vois pas ce qui cloche, je desespere :


object oItem = GetItemPossessedBy(oPC, "AMULETTELG");// premiere objet qui fait que le NPC donne rien au PC

object oItem2 = GetItemPossessedBy(oPC, "AMULETTEREBEL"); // deuxieme objet qui fait que le NPC donne rien au PC

if (GetIsObjectValid(oItem)) // si PC a l'objet 1
{
SpeakString("Desole vous avez deja choisi un camp");
}
else
{
if (GetIsObjectValid(oItem2)) // si PC a l'objet 2
{
SpeakString("Desole vous avez deja choisi un camp");
}
else
{
CreateItemOnObject("AMULETTELG", oPC);
// Gain d'xp
int nXP = GetXP(oPC);
int nNewXP = nXP + 3000;
SetXP(oPC, nNewXP);
}

}




Je sais pas koi faire d'autres ... Ca a l'air pourtant simple a faire mais je n'y arrive pas avec ceci ca ne marche pas.

Par Jaha Effect le 8/1/2003 à 23:05:30 (#2976993)

Heu je vois des oPC partout mais a aucun moment je vois la variable déclarée. Si c'est dans une conversation tu dois mettre ça au début de ton script (apres le void main () )

object oPC = GetPCSpeaker ();


Normalement ton script dois même pas compiler sans déclaration de oPC

Jaha Effect :D

Par Elvandir le 9/1/2003 à 2:24:37 (#2978061)

Comment déclenches tu ton script ?
Parce que si tu as mis ton script à la place du OnConversation par défaut :

object oPC = GetPCSpeaker ();

ne te renverra pas le Player, mais OBJECT_INVALID, donc par conséquence si tu fais ça derrière :
oItem = GetItemPossessedBy(oPC, "AMULETTELG");

tu aura oItem = OBJECT_INVALID, et tu connais la suite.

La solution dans ton cas est :
object oPC=GetLastSpeaker();

Si tu veux t'en convaincre, il suffit de mettre en début de ton script un truc du genre :
SpeakString("Nom du Player : " + GetName(oPC);

Si tu vois pas de nom c'est que ton oPC est invalide.

Par Jaha Effect le 9/1/2003 à 6:31:44 (#2978421)

Provient du message de Sir Alex / Bonn
Le but de ce script est dans une conversation, de donner une "amulette Lg" si le PC ne l'a pas un des 2 objets ("Amulette Lg" ou "amulette Rebel")...


Dans une conversation, c'est bien ce que j'ai compris, pas dans le OnConversation.

Jaha Effect :D

Par Sir Alex / Bonn le 9/1/2003 à 10:24:34 (#2978973)

object oPC = GetPCSpeaker ();


C'est bien ca que j'ai mis avant, et j'ai compris que tu viens de me dire, je vais essayer de remplacer > "object oPC = GetPCSpeaker ()" par "object oPC=GetLastSpeaker()" et voir le resultat !

Je pensais que "GetPCSpeaker ()" etait adequate dans une conversation ....

Merci infiniment de m'eviter de passer encore des heures sur des trucs aussi bete

Par Jaha Effect le 9/1/2003 à 12:48:42 (#2979919)

heu relis bien parceque je crois que tu as compris a l'envers...
- Dans une conversation il faut mettre GetPcSpeaker

object oPC = GetPCSpeaker ();

- Dans le cas d'un scripte sur le OnCOnversation c'est
object oPC=GetLastSpeaker();


J'espère avoir été compris cette fois çi ;)

Jaha Effect :D

Par Sir Alex / Bonn le 9/1/2003 à 13:16:47 (#2980154)

C'est ce que j'ai fait et ca resoud pas mon probleme alors.
Je sais pas comment faire ...

Dans le Action taking d'une phrase de ma conversation :


object oPC = GetPCSpeaker ();

object oItem = GetItemPossessedBy(oPC, "AMULETTELG");// premiere objet qui fait que le NPC donne rien au PC

object oItem2 = GetItemPossessedBy(oPC, "AMULETTEREBEL"); // deuxieme objet qui fait que le NPC donne rien au PC

if (GetIsObjectValid(oItem)) // si PC a l'objet 1
{
//rien ne se passe et on sort de la boucle
}
else
{
if (GetIsObjectValid(oItem2)) // si PC a l'objet 2
{
//rien ne se passe et on sort de la boucle
}
else
{
//donne l'objet 1
CreateItemOnObject("AMULETTELG", oPC);
// Gain d'xp
int nXP = GetXP(oPC);
int nNewXP = nXP + 3000;
SetXP(oPC, nNewXP);
}

}



Voila en clair ce que j'ai mis dans mon script.

Le script donne l'objet et l'xp a l'infini .... et c'est ca mon probleme.

Par Jaha Effect le 9/1/2003 à 13:38:17 (#2980344)

Rhaaaaaaaaaaaaaaaaaaaaaaaaaaaa, je vois ou est la paille


CreateItemOnObject("ici_resref_pas_tag", oPC);


CreateItemOnObject utilise le resref et pas le tag du truc que tu veux créer !!

Jaha Effect :D

héhé

Par Sir Alex / Bonn le 9/1/2003 à 13:48:24 (#2980461)

Et si je te dis que le ref et le tag j'ai mis la meme chose :D (justement pour etre tranquile)

Si ca deconnait a ce niveau, ca ne crérait pas du tout l'objet ! Or ici c'est le contraire il s'arete pas de le creer !!! Meme si la personne a l'objet il lui en redonne une 2 eme fois, une 3 eme fois.....
Le script verifit pas qu'il est l'objet en sa possession comme ca devrait etre le cas puis meme en rajoutant un "GetIsPc" devant pour voir si le Joueur est valide ben ca marche pas quand meme ...

Re: héhé

Par Jaha Effect le 9/1/2003 à 13:59:04 (#2980556)

Provient du message de Sir Alex / Bonn
Et si je te dis que le ref et le tag j'ai mis la meme chose :D (justement pour etre tranquile)

Si ca deconnait a ce niveau, ca ne crérait pas du tout l'objet ! Or ici c'est le contraire il s'arete pas de le creer !!! Meme si la personne a l'objet il lui en redonne une 2 eme fois, une 3 eme fois.....
Le script verifit pas qu'il est l'objet en sa possession comme ca devrait etre le cas puis meme en rajoutant un "GetIsPc" devant pour voir si le Joueur est valide ben ca marche pas quand meme ...


Un resref ne comporte jamais de majuscules, si tu met des majuscules a un resref dans un script il ne le reconnais pas !!!

Jaha Effect :D

Par Sir Alex / Bonn le 9/1/2003 à 14:01:23 (#2980582)

aie ca c'est a verifier ...

Mais bon ca empecherait de le creer je pense si je me trompe a ce niveau?

Par Jaha Effect le 9/1/2003 à 14:15:15 (#2980729)

je viens de tester et ça marche très bien comme ça

void main()
{
object oPC = GetPCSpeaker ();
object oItem = GetItemPossessedBy(oPC, "AMULETTELG");// premiere objet qui fait que le NPC donne rien au PC
object oItem2 = GetItemPossessedBy(oPC, "AMULETTEREBEL"); // deuxieme objet qui fait que le NPC donne rien au PC

if (GetIsObjectValid(oItem)) // si PC a l'objet 1
{
//rien ne se passe et on sort de la boucle
}
else
{
if (GetIsObjectValid(oItem2)) // si PC a l'objet 2
{
//rien ne se passe et on sort de la boucle
}
else
{
//donne l'objet 1
CreateItemOnObject("amulettelg", oPC);
// Gain d'xp
int nXP = GetXP(oPC);
int nNewXP = nXP + 3000;
SetXP(oPC, nNewXP);
}
}
}

que j'ai placé sur la première phrase du PC, bien sur si il parle pas ça marche pas ;)

Jaha Effect :D

Par Sir Alex / Bonn le 9/1/2003 à 14:24:25 (#2980804)

que j'ai placé sur la première phrase du PC, bien sur si il parle pas ça marche pas


Comment ca ? Ca marche pas ? Si le PC parle

Par Jaha Effect le 9/1/2003 à 14:28:03 (#2980841)

ben faut que le PC parle si tu veux qu'un GetPCSpeaker (); marche non ? C'est logique?
Même juste sur un fin de dialogue du PC ça marche aussi.

Jaha Effect :D

Par Sir Alex / Bonn le 9/1/2003 à 14:31:56 (#2980881)

ok je l'avais mis sur une fin de dialogue justement alors ca va

Je teste tout ca strictement !

Merci infiniment :)

Par Sir Alex / Bonn le 9/1/2003 à 16:35:58 (#2981873)

SUPERRR

Ca marche !!!!

Il semblerait que ca venez bien des minuscules dans le ref comme tu l'as dis!

T'es un boss merci bc pour toute l'aide je te revaudrais ca :merci:

Par Archamedes_Fr le 9/1/2003 à 16:55:11 (#2982039)

TAG Vs resref.... ROUND 2

J'ai eu affaire au même casse tête que toi il y a quelques temps. J'ai posé la question ici.
Si comme moi TAG ou resref ne te dis pas grand chose, les explications y sont intéressantes.

Je post, au cas où...

JOL Archives 1.0.1
@ JOL / JeuxOnLine