?
| Nos forums | NwN2.fr | Lyncya | Notre channel IRC |
La Bibliothéque de Neverwinter Nights
La Bibliothéque de Neverwinter Nights
 
 
 
 
 
Bienvenue, connectez vous ou créez votre compte. Changer d'interface
 
Se connecter:
Login:

Password:


 
Neverwinter Nights 2
  Compendium NWN/NWN2
Classe, Warlock
Classes de Base
Classes de Prestige
Forum Joueur NWN2
Forum Concepteur NWN2
Bestiaire (Créatures)
Races
Tests
 - Collector Chaotique Mauvais (bbnwn, 4 nov 2006)
 - Mask of the Betrayer
 - Storm of Zehir
 - Mysteries of Westgate
Mondes
 - Les Artisans du Mitan
 - Les Légendes de Luiren
 - LanceDragon
 - La Bataille pour Cormanthor
 - Man O'War
 - Sendarie Nouvel Âge
Preview
 - 29 Mars 2006 (BBNWN)
 - 2 mai 2006 (Gamespot)
 - 17 Mai 2006 (WarCry)
 - 19 Mai 2006 (NWVault)
 - Designer Diary #1 (Gamespot, 1er Juin 2006)
Interview
 - Dorian Richard (20/02/2006)
 - Ferret Baudoin (22/02/2006)
 - Feargus Urquhart (2 mai 2006)
 - La Lettre Ouverte de Papermonk
 - Chris Avellone (Total Video Games)
Logs IRC
 - Warcry (27/01/2006)
 - NWVault / NWC (3 Juin 2006)
 - NWN2News.net (30 Juin 2006)
Faciliter la diffusion et l'installation de vos créations

 
Communauté
  Forums
Channel #nwnights-fr
Guide IRC
Liens
CEP

 
Fichier
  Tileset
Module
Hakpak
Objets
Portraits
Créatures
Scripts
Tutoriaux
Autres
Wallpapers

 
Editeur
  Tutorial Editeur
Cinématiques
Musiques
Textures
Tutoriaux NWScripts
Scripts

 
Le jeu
  Solution
Sorts
Classes
Dons (feat)
Aptitudes (skill)
Bestiaire
Règles 3e Edition
Jouer en multiplayer

 
Hordes of the Underdark
  Informations Générales
Solution [forum]

 
Shadows of Undrentide
  Preview
Informations générales
Classes de Prestige
'Lisez Moi.txt' de la Démo
FAQ
Nouveaux tilesets
Solution [forum]

 
Divers
  Traductions Logs Irc
Guides divers

 
Présentation
  Généralités
Configuration minimale
Serveur Dédié
Traduction FAQ
Historique (nwn et bioware)
Contrats de Bioware (vf)

 
Site
  Copyrights
Webmasters

 
     
 
Dîtes non aux inutiles protections contre la copie dans les jeux (SecuROM, StarForce, etc) !!
HADOPI - Le Net en France : black-out

4. Les opérateurs


NWScripts prend en compte divers opérateurs :

a. Opérateurs arithmétiques (et de concaténation) :

+, -, *, /, % : opérateurs d'addition, soustraction, multiplication, division et reste d'une division (Modulo).

Tous ces opérateurs s'appliquent sur les nombres, le '+' (opérateur d'addition) peut s'appliquer sur des chaînes (cet opérateur devient ainsi un opérateur de concaténation).

Par exemple :
int a = 1;
int b = 2;

a = a+b; // 1 + 2 = 3
a = a-b; // 1 - 2 = -1
a = a*b; // Ca marche 1*2 = 2
a = a/b; // Note : ceci devrait être un nombre décimal dans ce cas 1/2 = 0.5
a = a%b; // Le reste de la division entière de a par b est 1.

string s1 = "Une ";
string s2 = "Chaîne";
string s3 = s1 + s2 ; // s3 = "Une Chaîne"
On peut aussi simplifier ces formes par exemple :
a += b ; // ceci revient au même que a = a + b ; (marche aussi pour les chaînes)
a -= b ; // ceci revient au même que a = a - b ;
a *= b ; // ceci revient au même que a = a * b ;
a /= b ; // ceci revient au même que a = a / b ;
a %= b ; // ceci revient au même que a = a % b ;

(Note : vous pouvez appeler =, +=, -=, *=, /= et %= des opérateurs d'affectations puisqu'ils vont affecter à une variable une nouvelle valeur)

b. Opérateurs de comparaisons :

Les opérateurs de comparaisons sont très utiles et sont donc très utilisés dans les structures de contrôles. La plupart des opérateurs de comparaisons ne fonctionnent qu'avec des nombres.

== Egalité
!= N'est pas égal
> Supérieur à
>= Supérieur ou égal à
< Inférieur à
<= inférieur ou égal à

Un autre opérateur est l'opérateur ternaire (« ?: ») : nous le verrons plus en détail dans la section sur les structures de contrôle.

Exemples :
Avec :
- s = "chaine" ;
- a = 1, b = 1 et c = 2 (ce sont tous des entiers).

a == a : ceci est vrai. (TRUE)
a != a : ceci est faux. (FALSE)
a > a, a > b : ceci est faux (FALSE)
c > a : ceci est vrai. (TRUE)
a < c : ceci est vrai (c'est équivalent à l'exemple précédent) (TRUE)
a >= b : ceci est vrai. (TRUE)
a <= b : ceci est vrai. (TRUE)

s == "chaîne" : ceci est vrai. s >= "chaîne" : ceci ne veut rien dire !
c. Opérateurs d'incrémentation :

Ces opérateurs s'appliquent qu'aux entiers même si dans d'autres langages (comme PHP) ils peuvent être utilisés sur des chaînes de caractères. Ils vous permettent d'incrémenter (ajouter 1 à une valeur entière) ou de décrémenter (soustraire 1 à une valeur entière).

--a : Post décrémentation.
a-- : Pré décrémentation
++a : Post incrémentation.
a++ : Pré incrémentation

Vous vous demandez sûrement qu'elle est la différence entre la post et la pré incrémentation : nous vous montrons cette différence par l'exemple :

int a = 1;

a--; // a est renvoyée puis est décrémentée (donc a = 1)
--a; // a est décrémentée puis renvoyée (donc a = 0)
a++; // a est renvoyée puis est incrémentée (donc a = 1)
++a; // a est incrémentée puis renvoyée (donc a = 2)

Ceci ne vous dit peut-être rien ? Soit : voici un exemple plus appréhendable :

void main()
{
int a = 1;

FloatingTextStringOnCreature( "a= " + IntToString( a ) +" --a:" + IntToString( --a ), GetFirstPC() );
FloatingTextStringOnCreature( "a= " + IntToString( a ) +" a--:" + IntToString( a-- ), GetFirstPC() );
FloatingTextStringOnCreature( "a= " + IntToString( a ) +" ++a:" + IntToString( ++a ), GetFirstPC() );
FloatingTextStringOnCreature( "a= " + IntToString( a ) +" a++:" + IntToString( a++ ), GetFirstPC() );
}

Si vous placez cet exemple dans un script, par exemple OnHeartBeat (nous verrons dans la section sur les événements qu'il ne faut pas mettre n'importe quoi comme script dans cet événement), ceci affichera successivement :

a=1 --a : 0
a=1 a-- : 1
a=1 ++a : 2
a=1 a++ : 1

Maintenant, vous vous demandez sûrement quel est l'intérêt ? Dans l'utilisation basique qu'on en fait, il n'y a strictement aucun intérêt vu que le plus souvent vous écrirez :

a++ ;

Et a sera incrémentée puis réutilisée (par exemple dans une boucle).

En fait, cela dépend de ce que vous voulez faire de la valeur de a : par exemple, la passer dans une fonction etc !

d. Opérateurs logiques

Les opérateurs logiques sont utilisées dans tout ce qui concerne les conditions.

&& : ET logique.
|| : OU logique.
! : NON logique. (Négation)

Le ET vous permet de lier deux conditions qui devront être VRAIES. (TRUE)

a && b : renvoie VRAI si a = VRAI et b = VRAI.

Le OU vous permet de lier deux conditions, cependant une des deux conditions peut faire défaut :

a || b : renvoie VRAI
- si a = b = VRAI
- si a = VRAI, b = FAUX
- si a = FAUX, b = VRAI

Le NON correspond à la négation d'une condition :

!a : si a est VRAI alors !a renvoie FAUX ; si a est FAUX alors !a renvoie VRAI.

Vous remarquerez que par défaut le OU n'est pas exclusif. Si vous connaissez déjà la programmation, vous connaissez sûrement l'opérateur XOR qui n'est pas présent dans les NWScripts. Voici comment faire pour « simuler » le XOR (OU EXCLUSIF)

Normalement :

a xor b : renvoie VRAI
- si a = VRAI, b = FAUX
- si a = FAUX, b = VRAI

De manière textuelle, qu'est ce que le OU exclusif ?

( ( a OU b ) ET NON ( a ET b ) )

Si vous voulez simuler le OU EXLUSIF vous devrez employer la forme suivante :

( ( a || b ) && !( a && b) )

Note : dans tous nos exemples a et b sont des conditions. Une condition renvoie automatiquement un booléen dépendant du résultat de la condition : si elle est vraie, ou si elle est fausse. Dans beaucoup de langages il existe un type booléen où dans ce cas une condition renverra TRUE (selon le langage, ça sera True, true, etc) si elle est vérifiée ou FALSE si ce n'est pas le cas.

Assurez vous d'avoir bien compris le fonctionnement (et l'utilité) des opérateurs logiques car ils sont quasiment à la base de la programmation.

Afin de finir cette section, nous vous donnons juste un bon avertissement : n'oubliez jamais le type de vos variables, et n'essayez jamais de faire des opérations entre des variables d'un type « a » et des variables d'un type « b ».

Si vous désirez vraiment faire des opérations entre des variables de types différents, vous pouvez utiliser des fonctions de transtypage présentes :

Conversion d'entiers :
IntToFloat (conversion vers un nombre décimal), IntToHexString (représentation en hexadécimal de l'entier sous la forme chaîne de caractères), IntToString (conversion vers une chaîne de caractères).

Conversion de nombres décimaux :
FloatToInt (conversion d'un nombre décimal vers un entier), FloatToString (conversion d'un nombre décimal vers une chaîne de caractères).

Conversion de chaînes de caractères :
StringToInt (conversion vers un entier), StringToFloat (conversion vers un flottant).

Aussi, si nous n'en parlons pas beaucoup : n'oubliez pas de vous servir des parenthèses surtout si vous utilisez des multiplications / divisions:

int i , j = 2;

j = i + j * 2 ; // j = 2 + 2*2 = 6
j = ( i + j ) * 2 ; // j = ( 2 + 2) * 2 = 8

Ces mêmes parenthèses vous sont encore plus utiles avec les opérateurs logiques. En définitive : n'hésitez pas à abuser des parenthèses.









Navigation rapide:
 
 
Revenir à la page d'accueil du site Ajouter la Bibliothéque de Neverwinter dans vos favoris Afficher une version imprimable de la page
  NeverList - Liste ...
Lyncya 3 - La Gue ...
Sarmates!
Le dernier des fi ...
Bonne année
Joyeux Noël 2010
The Witcher 2 en ...

Archives
Rechercher
 
 
Le Site



NwN 2 - Support des Modules Solos


Groupes
Archives
 

:: design by ghaxir :: coding by baldurien :: la bibliothèque de neverwinter :: tous droits réservés ::