probleme de script

Répondre
Partager Rechercher
salut

voila mon problème :
j'aimerai faire apparaitre les pj dans des zones différentes suivant la race du pj (en faite l'idéal serai en fonction de la classe du pj mais je n'y arrive pas

voici mon script modifier a partir d'un trouvé sur le forum, mais il ne marche pas

------------------------------------------------------------------------
void main()
{
object oJoueur = GetEnteringObject ();
int iRaceDuJoueur = GetRacialType (oJoueur);
switch (iRaceDuJoueur)
{
case RACIAL_TYPE_ELF :
location ldepart_nain = GetLocation (GetObjectByTag ("NW_rodeur"));

case RACIAL_TYPE_HUMAN :
location ldepart_nain = GetLocation (GetObjectByTag ("NW_guerrier"));

AssignCommand (oJoueur, ActionJumpToLocation (ldepart_nain));
break;
}
}

------------------------------------------------------------------

si quelqu'un peut m'aider a résoudre ce problème
merci
loran
Quelque chose comme ça, peut-être ?
Code PHP:

void main()
{
  
object oJoueur GetEnteringObject ();
  
int iRaceDuJoueur GetRacialType (oJoueur);
  
location lDepart;
  switch (
iRaceDuJoueur)
  {
    case 
RACIAL_TYPE_ELF :
      
lDepart GetLocation (GetObjectByTag ("NW_rodeur")); break;

    case 
RACIAL_TYPE_HUMAN :
      
lDepart GetLocation (GetObjectByTag ("NW_guerrier")); break;

  }
  
AssignCommand (oJoueurActionJumpToLocation (lDepart));

Pense à utiliser les balises [php] et [/php] autour de tes exemples de scripts quand tu postes, en tout cas, pour que ce soit plus clair.
desole d'insister
salut

merci Gadjio

je ne l'ai pas encore teste mais je crois en étudiant ton script que le problème venait de la commander break, mais pas que

la commande location est exécuté 1 fois

alors la je sens que je vais devenir chiant

pourquoi

si tu as le temps de me répondre merci d'avance, me coucherai moins con

@+
loran
genial
salut

ton script marche formidablement

mais imaginons que je veuille utiliser la commande GetLevelByClass

php :
----------------------------------------------------------------------
void main()
{
object oJoueur = GetEnteringObject ();
int iRaceDuJoueur = GetLevelByClass (oJoueur);
loçation lDepart;
switch (iRaceDuJoueur)
{
çase CLASS_TYPE_RANGER :
lDepart = GetLocation (GetObjectByTag ("NW_rodeur")); break;

case CLASS_TYPE_BARBARIAN :
lDepart = GetLocation (GetObjectByTag ("NW_guerrier")); break;

case CLASS_TYPE_FIGHTER :
lDepart = GetLocation (GetObjectByTag ("NW_guerrier")); break;

}
AssignCommand (oJoueur, ActionJumpToLocation (lDepart));
}

-----------------------------------------------------------------------------

ca me paraissait évident

et pourtant ca déconne

une solution peut être

@+
loran
Ben en fait Gadjio a légérement amélioré la syntax du script tout en le débuggant
Si on assigne une valeur à une variable sans déclarer le type de variable, on va avoir un script qui compile pô.

Par exemple le truc à pô faire:
Code PHP:

lDepart GetLocation (GetObjectByTag ("NW_rodeur")); 

Il faut préciser le type de variable (int, float, string, location,etc).
Voilà ce qu'il faut faire:
Code PHP:

location lDepart GetLocation (GetObjectByTag ("NW_rodeur")); 

C'est le b-a-ba quoi, là je ne t'apprend rien

Mais le truc le plus intéressant c'est qu'on est pô obligé de déclarer une variable une seconde fois. Ainsi on peut "préparer" la variable. On la déclare en début de script et ensuite on est plus obligé de le faire.

Du genre:
Code PHP:

location lDepart// on déclare sans assigner de valeur.
blabla bla

switch (bidule_machin)
{
blabla
  lDepart 
GetLocation (GetObjectByTag ("NW_rodeur")); // on applique une valeur car on sait déjà que lDepart est une location.
  
break;

Dans le même genre on peut aussi faire:
Code PHP:

    float fRestDuration GetRestDurationBase();
      
fRestDuration += GetCharacterLevelOBJECT_SELF) * GetRestDurationLevel();
      
fRestDuration -= nLevelBonus GetRestDurationLevel();
      
fRestDuration -= fRestBonus;
//    fRestDuration -= fExtraBonus;
//    fRestDuration += fExtraMalus; 
Ou alors pour mettre bout à bout des morceaux de string
bonjour

non ce n'est pas ca le probleme, car dans mon script location est bien ecrit, par contre quand je sauvegarde, il me met en bas :

25/04/2003 09:57:26 : Erreur. 'depart_select' n’est pas compilé.
depart_select.nss(5): ERREUR : DECLARATION DOES NOT MATCH PARAMETERS

oups !

le script est le suivant :

php
------------------------------------------------------------------------------
void main()
{
object oJoueur = GetEnteringObject ();
int iClassDuJoueur = GetLevelByClass (oJoueur);
location lDepart;
switch (iRaceDuJoueur)
{
case CLASS_TYPE_RANGER :
lDepart = GetLocation (GetObjectByTag ("NW_rodeur")); break;

case CLASS_TYPE_BARBARIAN :
lDepart = GetLocation (GetObjectByTag ("NW_guerrier")); break;

case CLASS_TYPE_FIGHTER :
lDepart = GetLocation (GetObjectByTag ("NW_guerrier")); break;

}
AssignCommand (oJoueur, ActionJumpToLocation (lDepart));
}

-------------------------------------------------------------------------

ca vous parait peut être évident, mais pour moi non

merci
@+
loran
desolé eMRaistlin, mais depuis mon premier post j'ai evolué (enfin il me semble )

en fait je n'avais pas vu la reponse au 1er

je ne recommencerai plus
promis

merci de tout coeur

@+
loran
Si je peux me permettre, essaie aussi de choisir le titre de tes posts en rapport avec le contenu (aussi précis que possible). Je dis pas ça pour être chiant (c'est le job d'eM, ça... oupssss ), mais juste pour qu'on s'y retrouve un peu Pasque des problèmes de scripts, on en a tous, en fin de compte...

Pour ce que je disais sur les "balises php", tu as juste à remplacer le :
php
------------------------------------------------------------------------------

par [php], avec la balise qui va avec à la fin du code (le [/php]. (Ménon j'insiste pas.. )
Répondre

Connectés sur ce fil

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